我正在尝试用Python创建自己的irc bot(用于抽搐).我的命令有一本字典:
commands = {
'!ping': {
'cooldown': 30,
'return': '!pong'
},
'!random': {
'cooldown': 30,
'return': 'command',
'argc': 2,
'arg_username': True,
'usage': '!random <min> <max>'
}
} # End of commands
Run Code Online (Sandbox Code Playgroud)
然后我有一个函数来检查发送的消息是否确实是一个命令:
import string
def is_valid_command(command):
return True if command in commands.keys() else False
Run Code Online (Sandbox Code Playgroud)
所以,当我测试这个功能时,它似乎不起作用,我不知道我做错了什么:
message = "!ping"
print(str(is_valid_command(message)))
>>> False
Run Code Online (Sandbox Code Playgroud)
我试图将字典中的'!ping'更改为"!ping",然后将该消息更改为"!",甚至删除了'!' 它总是说它是假的.
谢谢,劳伦斯
编辑:
def is_valid_command(command):
for key in commands.keys():
print(key)
print("input " + str(command))
print(command in commands.keys())
return command in commands.keys()
Run Code Online (Sandbox Code Playgroud)
结果如下:
!ping
!random
input !ping
False
Run Code Online (Sandbox Code Playgroud)
编辑2:@ e4c5希望我使用try/except,因为我快速尝试它(在那个方法内),它仍然返回False
try:
cmd = commands[command]
print ('Try True')
return True
except KeyError:
print('Try False')
return False
Run Code Online (Sandbox Code Playgroud)
EDIT3:你'ping'之前修复了这个(message = u'!ping'),但是当我从其他地方读取一个字符串时,是否有一个函数执行这个unicoding?
您的is_valid_command功能可以简化为:
def is_valid_command(command):
return command in commands
Run Code Online (Sandbox Code Playgroud)