0

我在 Python 中为 XChat 制作了一个脚本。当有人键入 !pop 时,它会给出一条随机消息。当我的昵称不是 Pop 时,它可以正常工作。如果我将昵称更改为 Pop 它不起作用。只有当我输入 !pop 时它才有效。

这是代码:

__module_name__ = 'Pop Script'
__module_version__ = '0.1'
__module_description__ = 'Epic popping script.'

import xchat
from random import randint

msgs = ['pops a balloon', 
        'pops a roller pop',
        'eats up a poppy pie',
        'pops a cracker',
        'pops a lollipop']

command = '!pop'

def choose_msg():
    x = randint(0,len(msgs)-1)
    message = msgs[x]
    return message

def a(word, world_eol, userdata):
    msg = choose_msg()
    cmnd = 'me %s' % msg
    if word[1] == command:
        xchat.command(cmnd)
    else:
        xchat.EAT_NONE

xchat.hook_print("Channel Message", a)
xchat.hook_print("Your Message", a)
4

1 回答 1

0

从未与 XCHAT 合作过;但是,我会对此进行尝试。您似乎正在将命令文本与!pop进行比较,而不是查看它是否包含pop

有两种方法可以解决这个问题:

  1. 从word[1]中存在的命令中去掉! 字符并以不区分大小写的方式 将命令的其余部分与pop进行比较
  2. 或者检查word[1]是否包含 pop。如下所示:

    def a(word, world_eol, userdata):
        msg = choose_msg()
        cmnd = 'me %s' % msg
        # here we normalize the input command to lower case and check if **command** is a substring of **word[1]**
        if command in word[1].lower() 
            xchat.command(cmnd)
        else:
            xchat.EAT_NONE
    

让我知道这个是否奏效。

于 2013-07-27T12:56:40.040 回答