如何阻止Discord机器人响应自身/其他机器人?解决刷屏问题
解决Discord机器人无限刷屏"k"的问题
这个问题的根源很明显——你的机器人陷入了无限循环:当它发送"k"这条消息后,这条消息会被它自己的on_message事件监听器捕捉到,因为内容匹配"k",所以它又会发送一次"k",如此反复直到你关闭它。
要解决这个问题,只需要在处理消息前先排除机器人自身发送的消息就行,具体步骤如下:
- 在
on_message函数的最开头,添加判断:如果消息的发送者是机器人自己,直接返回,不执行后续逻辑。这样机器人发送的"k"就不会触发自己的事件了。 - 另外注意:如果你的Discord.py版本是v1.0及以上,
client.send_message已经被弃用,推荐使用message.channel.send()来发送消息。
修改后的完整代码如下:
@client.event async def on_message(message): # 排除机器人自身的消息,避免循环 if message.author == client.user: return if message.content == "k": # 新版本用message.channel.send替代client.send_message await message.channel.send("k") await client.process_commands(message)
这样修改后,机器人只会响应其他用户发送的"k",而不会被自己发送的消息触发循环,也就不会刷屏了。
内容的提问来源于stack exchange,提问作者Lukim
相关产品推荐
相关产品推荐

