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

Can a discord.py bot not be case sensitive?

我现在正在制作一个 discord 机器人,如果我使用 capitals/don 不使用大写字母,它不会响应。有没有一种方法可以让机器人检测消息,即使它们是 capital/lowercase?是否还有一种方法可以让机器人对 spaces 做同样的事情(如果我不小心忘记放置 space,或者不小心将两个词合并在一起......)?

或者我是否必须无休止地跟踪 if 语句?

假设您在 msg 变量中收到消息,那么如果您使用 msg.lower(),您将获得小写版本的响应,您可以检查它以查看命令是什么.

另外,运行 msg.replace(' ', '')会创建一个去掉所有空格的值,你可以检查这个变量对应的值而不是原来的值。

例如:

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

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

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

下面是如何实现这一点的示例代码。

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 时,该命令仍将被执行。

但是你应该注意删除空格,因为你将来可能创建的一些命令可以将参数作为输入,在这种情况下,你在调用命令时需要空格来分隔参数。