discord.py机器人不能区分大小写吗?

时间:2018-05-15 21:46:32

标签: python discord.py

我现在正在制作一个不和谐机器人,如果我使用首都/不使用首都,它就不会做出回应。有没有办法让机器人检测到消息,即使它们是大写/小写?还有一种方法可以让机器人能够用空格做同样的事情(如果我不小心忘记放空间,或者意外地将两个单词合并在一起......)?

或者我是否必须对if语句进行无休止的追踪?

2 个答案:

答案 0 :(得分:2)

以下是如何实现此目的的示例代码。

from discord.ext import commands

client = commands.Bot(command_prefix='!')

@client.event
async def on_ready():
    print('client ready')

@client.command()
async def ping():
    await client.say('Pong')

@client.event
async def on_message(message):
    message.content = message.content.lower().replace(' ', '')
    await client.process_commands(message)

client.run('TOKEN')

请注意message.content如何替换为message.content.lower().replace(' ', '')。由于ping命令是小写的,这意味着当用户键入例如!PinG时,该命令仍将被执行。

您应该小心删除空格,因为将来可能创建的某些命令可以将参数作为输入,在这种情况下,在调用命令分隔参数时需要空格。

答案 1 :(得分:1)

假设您在msg变量中收到了消息,那么如果您使用msg.lower(),您将获得响应的小写版本,您可以检查该命令以查看该命令的内容。< / p>

另外,运行msg.replace(' ', '')会创建一个删除所有空格的值,并且可以检查此变量的相应值而不是原始变量。

例如:

msg = 'HeLlO wOrLd'
print(msg.lower().replace(' ', ''))
>> helloworld

假设这是一个命令行界面,我真的建议你遵循内置argparse库中的指南。

见这里:https://docs.python.org/3.3/library/argparse.html