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 库中的指南。
下面是如何实现这一点的示例代码。
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
时,该命令仍将被执行。
但是你应该注意删除空格,因为你将来可能创建的一些命令可以将参数作为输入,在这种情况下,你在调用命令时需要空格来分隔参数。
我现在正在制作一个 discord 机器人,如果我使用 capitals/don 不使用大写字母,它不会响应。有没有一种方法可以让机器人检测消息,即使它们是 capital/lowercase?是否还有一种方法可以让机器人对 spaces 做同样的事情(如果我不小心忘记放置 space,或者不小心将两个词合并在一起......)?
或者我是否必须无休止地跟踪 if 语句?
假设您在 msg
变量中收到消息,那么如果您使用 msg.lower()
,您将获得小写版本的响应,您可以检查它以查看命令是什么.
另外,运行 msg.replace(' ', '')
会创建一个去掉所有空格的值,你可以检查这个变量对应的值而不是原来的值。
例如:
msg = 'HeLlO wOrLd'
print(msg.lower().replace(' ', ''))
>> helloworld
假设这是一个命令行界面,我真的建议您遵循内置 argparse 库中的指南。
下面是如何实现这一点的示例代码。
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
时,该命令仍将被执行。
但是你应该注意删除空格,因为你将来可能创建的一些命令可以将参数作为输入,在这种情况下,你在调用命令时需要空格来分隔参数。