当昵称与命令相同时,脚本不起作用 - XChat

时间:2013-07-27 11:50:46

标签: python irc

我在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)

1 个答案:

答案 0 :(得分: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
    
  3. 让我知道这是否有效。