You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 00:36:03