discord.js开发中机器人统计自身添加的表情反应问题如何解决
问题原因
你代码中的机器人过滤逻辑完全没有生效,问题出在if (user.bot);这一行末尾多余的分号:JavaScript中分号代表单条语句结束,这就导致你写的判断逻辑变成了空语句,不管触发反应的是不是机器人账号,后续代码都会正常执行,最终出现统计自身反应的问题。
你之前的旧项目中应该没有这个多余分号,复制代码过程中误加了格式字符,才会出现旧功能正常、新项目报错的情况。
修复方案
- 删掉
if (user.bot)后的分号,补充return逻辑,修改为:
if (user.bot) return;
- 调整后的完整事件开头参考:
client.on('messageReactionAdd', async (reaction, user) => { //bot is counting its own reaction if (reaction.message.partial) await reaction.message.fetch(); if (reaction.partial) await reaction.fetch(); // 正确过滤所有机器人触发的反应 if (user.bot) return; if(!reaction.message.guild) return; if (reaction.message.channel.id === channel) { if (reaction.emoji.name === reactone) { // 后续业务逻辑
注意事项
JavaScript中if、for等流程控制语句后如果直接跟分号,会被判定为语句体为空,后续所有代码都会脱离控制逻辑执行,写代码时要注意规避这类语法陷阱。
内容的提问来源于stack exchange,提问作者Dandy
相关产品推荐
相关产品推荐

