我正在尝试建立Discord僵尸程序,但对于discord.py(实际上是Python 3)而言还比较陌生。我想添加命令“ greet”,它将提示用户说“ hello”。它只响应“ hello”,但是,当我希望它同时响应“ hello”和“ Hello”时。
我想解决的唯一事情就是将它们放在status='inactive'
语句中,从理论上讲,这应该使Python 3和bot在两个响应之间进行选择(如下所示)。
or
我拥有的原始代码很简单,并且只允许@client.event
async def on_message(message):
if message.content.startswith('~greet'):
await client.send_message(message.channel, 'Say hello')
msg = await client.wait_for_message(author=message.author, content=('hello' or 'Hello'))
await client.send_message(message.channel, 'Hello.')
的一个响应。
hello
出于某种原因,我无法缠住脑袋,它仍然无法识别@client.event
async def on_message(message):
if message.content.startswith('~greet'):
await client.send_message(message.channel, 'Say hello')
msg = await client.wait_for_message(author=message.author, content=('hello' or 'Hello'))
await client.send_message(message.channel, 'Hello.')
,并且只允许我说出'Hello'
作为回应。
答案 0 :(得分:1)
or
并不像您认为的那样表现。 'hello' or 'Hello'
在传递给wait_for_message
之前先经过评估,等于'hello'
。
相反,您可以向check
提供wait_for_message
函数:
def is_hello(message):
return message.content.lower() == 'hello'
msg = await client.wait_for_message(author=message.author, check=is_hello)
答案 1 :(得分:0)
您应该使用command
表示法,而不要使用on_message
检查每条消息,因为这样会使您的代码更具可读性。如果您有10条命令会怎样?您会在on_message
中检查10个字符串吗?
如果是重写分支,则commands.Bot
接受不区分大小写的参数:
bot = commands.Bot(command_prefix='!', case_insensitive=True)
或者,如果您想对同一命令使用多个单词,则可以使用别名,例如:
@bot.command(aliases=['info', 'stats', 'status'])
async def about(self):
# your code here