Discord bot触发用户消息关键词后意外重复发送回复问题求助
问题原因
你的Bot陷入了无限触发循环:你设定的匹配关键词oranges同时出现在Bot的回复内容Yum! I love eating oranges!中,Bot自身发送的消息也会被message事件捕获,匹配到关键词后会再次发送回复,反复重复就形成了 spam。
解决方案
在消息处理逻辑的最开头增加判断条件,只要消息发送方是Bot账号就直接终止当前处理流程,不需要执行后续的关键词匹配。
修改后的核心代码如下:
s4d.client.on('message', (s4dmessage) => { // 过滤Bot自身发送的消息 if (s4dmessage.author.bot) return; if (s4dmessage.content.includes('oranges')) { s4dmessage.channel.send('Yum! I love eating oranges!'); } });
额外说明
- 如果你使用的是discord.js v13及以上版本,
message事件已经被官方废弃,需要替换为messageCreate事件,避免后续出现兼容问题 - 如果你需要保留响应其他Bot消息的能力,也可以把判断条件改为
if (s4dmessage.author.id === s4d.client.user.id) return,仅过滤当前Bot自己发送的消息即可
内容的提问来源于stack exchange,提问作者clkhlum02
相关产品推荐
相关产品推荐

