为什么discord.py一直在发送消息?

为什么discord.py一直在发送消息?,discord.py,Discord.py,我创建了一个事件,如果用户发送特定消息,它会将消息发送回例如,如果用户说“你好”,机器人会说“你好”。我发现在下面的代码中,第一个elif有一个or。因此,如果用户说ddos或hack,它将进入无限循环并继续发送,你不能这么说。如果用户输入hello,机器人会在那里发送一次hello,然后进入无限循环并发送,你不能这么说。你知道为什么吗 @client.event async def on_message(message): msg = message.content.lower()

我创建了一个事件,如果用户发送特定消息,它会将消息发送回例如,如果用户说“你好”,机器人会说“你好”。我发现在下面的代码中,第一个elif有一个or。因此,如果用户说ddos或hack,它将进入无限循环并继续发送,你不能这么说。如果用户输入hello,机器人会在那里发送一次hello,然后进入无限循环并发送,你不能这么说。你知道为什么吗

@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
等于hackddos存在。此外,您不必执行
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循环吗?我编辑了答案。你可以查一下。非常感谢!!!!