为什么discord.py一直在发送消息?
我创建了一个事件,如果用户发送特定消息,它会将消息发送回例如,如果用户说“你好”,机器人会说“你好”。我发现在下面的代码中,第一个elif有一个or。因此,如果用户说ddos或hack,它将进入无限循环并继续发送,你不能这么说。如果用户输入hello,机器人会在那里发送一次hello,然后进入无限循环并发送,你不能这么说。你知道为什么吗为什么discord.py一直在发送消息?,discord.py,Discord.py,我创建了一个事件,如果用户发送特定消息,它会将消息发送回例如,如果用户说“你好”,机器人会说“你好”。我发现在下面的代码中,第一个elif有一个or。因此,如果用户说ddos或hack,它将进入无限循环并继续发送,你不能这么说。如果用户输入hello,机器人会在那里发送一次hello,然后进入无限循环并发送,你不能这么说。你知道为什么吗 @client.event async def on_message(message): msg = message.content.lower()
@client.event
async def on_message(message):
msg = message.content.lower()
if str(msg) == "hello":
await message.channel.send('hello there')
elif str(msg) == "hack" or "ddos":
await message.channel.send("you can't say that!")
else:
return
您的代码有一些错误。首先,您必须检查消息作者是否是bot,这样,消息上的
事件将不会检查bot的消息。您可以通过discord.Member.bot
进行检查。如果成员是bot,则返回True
@client.event
异步def on_消息(消息):
如果message.author.bot:
返回
第二个是,elif-str(msg)=“hack”或“ddos”:
不等于elif-str(msg)=“hack”或str(msg)=“ddos”:
elif str(msg)=“黑客”或“ddos”:
表示如果msg
等于hack或ddos存在。此外,您不必执行str(msg)
message.content
返回str
type对象
@client.event
异步def on_消息(消息):
如果message.author.bot:
返回
msg=message.content.lower()
如果msg==“你好”:
等待message.channel.send('hello here')
elif msg==“黑客”或msg==“ddos”:
等待消息。频道。发送(“你不能这么说!”)
编辑:
您可以使用if msg in list:
检查消息内容是否在单词列表中。下面是一个例子:
如果在['hack','ddos'中出现msg:
等待消息。频道。发送(“你不能这么说!”)
这将执行与以下相同的操作:
如果消息=='hack'或消息=='ddos':
等待消息。频道。发送(“你不能这么说!”)
非常感谢您!!我不知道你必须再写一次msg==了。另外,您知道如何检查用户是否从列表中键入了内容吗?比如,我可以列一个单词列表,然后看看这个单词是否在列表中?如果是,它会向他们发送一条消息,如果不是,它会返回。我们会使用for循环吗?我编辑了答案。你可以查一下。非常感谢!!!!