开发Discord机器人ban命令出现Uncaught TypeError报错如何解决?
报错根因
- 你代码中判断提及成员是否存在的逻辑存在语法错误:判断时使用了赋值运算符
=而非全等比较运算符===,if (mention = undefined)这行代码会直接将mention变量强制赋值为undefined,导致后续else分支访问mention.bannable属性时触发空值读取报错。 - 附加潜在问题:当消息内没有@任何服务器成员时,
message.mentions.members.first()本身会返回undefined,错误的判断逻辑会跳过空值提示分支,直接进入需要读取mention属性的分支。
修复方案
将空值判断行替换为正确的存在性判断即可,修复后的完整代码如下:
if (message.content.startsWith(prefix + "ban")){ let mention = message.mentions.members.first(); // 改为正确的空值判断,也可写作 mention === undefined if (!mention){ message.reply("Member not mentionned"); } else { if(mention.bannable){ mention.ban(); message.channel.send(mention + " was banned"); } else { message.reply("Impossible to ban this member"); } } }
内容的提问来源于stack exchange,提问作者Cryopt
相关产品推荐
相关产品推荐

