Discord.py on_message() 重复执行

Discord.py on_message() repeating execution

老用户,第一次发布。 :-)

我正在使用 discord.py==1.7.2。我有一个可能很复杂的机器人,我一直在通过反复试验破解它(据我所知超级粗略的文档,也许我并不真正理解 Discord 的概念),但我在 on_message() 事件。在一切都按我想要的方式工作后,我注意到一个问题,只是想在执行 on_message() 事件时检查一个值。我把它打印到聊天室。然后我注意到它被反复打印,不停地聊天,直到我杀死了机器人。我在这里错过了什么吗?我的期望是事件 on_message() 在用户输入内容并按下回车键然后停止时运行。这是错误的吗?代码:

@bot.event
async def on_message(message):

    if len(message.content) < 5:
        return

    await message.channel.send('wtf')

如果我键入少于 5 个字符的任何内容,则什么也不会发生。如果我输入“12345”,混乱就开始了……它会吐出 5 行“wtf”,然后每隔几秒吐出 4 个“wtf”,直到我杀死机器人。每个人都会发生这种情况吗?还是我在别的地方弄坏了它?超级糊涂。

感谢您的帮助!!!

干杯

这是因为你的事件是on_message,你是在这个事件里面发消息,然后又触发事件,然后又发消息,如此循环往复。

你应该检查邮件的发件人,如果是机器人,那么 return。 像这样,

#... other code
@bot.event
async def on_message(message: Message):
    if message.author.bot: #if message's author is a bot, then ignore it.
        return
    #... rest of your on_message()