【发布时间】:2021-12-12 08:11:55
【问题描述】:
我目前正在为我主持的服务器开发 Discord 机器人(并希望最终加入我们运行的项目的开发团队)。当我的代码看起来像这样时,它工作得很好:
import discord
import os
client = discord.Client()
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('!hello'):
await message.channel.send('Hello!')
但是我遇到了一个问题,那就是该命令区分大小写并允许任何内容跟随该命令。我尝试按照我在另一篇文章中找到的内容进行操作,并提出了以下建议:
import discord
import os
client = discord.Client()
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.lower == "!hello":
await message.channel.send("Hello!")
现在我这样做了,该命令不起作用。问题是字符串中的感叹号吗?这是我最好的猜测,但我知道什么?如果有一种方法可以更轻松地实现更多命令,我愿意重新开始代码,因为我还没有实现很多命令,但我需要在未来添加更多。如果这是一种相对简单的方法,同时做我想做的事情(响应开头有感叹号的命令,字母顺序正确,没有多余的字母,不注意大小写,用一条简单的消息)然后简单地解决此方法不起作用的问题是可以接受的。
【问题讨论】:
-
lower是一种方法。你想用lower()调用它。 (在调试此类问题时,请尝试打印有问题的变量以查看它们的值是否符合您的预期。)此外,请查看commands 模块,以更轻松地实现前缀命令。请参阅this question 关于不区分大小写的信息。
标签: python discord discord.py bots