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

Discord机器人spam命令触发TypeError错误的排查求助

修复Discord机器人Spam命令的TypeError问题

嘿,这个问题很常见!咱们来一步步解决它:

错误原因分析

你遇到的TypeError: Cannot read property 'id' of undefined,本质是因为当用户输入错误格式(没有正确@某个存在的服务器成员)时,msg.mentions.members.first()会返回undefined——这时候你直接去访问它的.id属性,自然就会报错啦。你的代码里先尝试取.id,再检查是否存在,顺序搞反了!

修复后的代码

把代码调整成先检查提到的成员是否存在,再获取它的ID:

client.on("message", msg => { 
  if(msg.content.startsWith(prefix+'spam ')){ 
    // 先获取提到的成员对象,不要直接取id
    let mentionedMember = msg.mentions.members.first();
    
    // 先判断是否有有效提及,没有就直接返回提示
    if(!mentionedMember) {
      return msg.reply("I'm sorry! That user does not exist.");
    }
    
    // 确认成员存在后,再获取ID
    let mentions = mentionedMember.id;
    for(var i=1;i<=5;i++) { 
      msg.channel.send('<@'+mentions+'>') 
    } 
  } 
})

额外优化小技巧

其实你还可以更简洁一点,直接用获取到的mentionedMember对象发送消息,不用拼接ID:

// 把循环里的发送语句改成这个
msg.channel.send(mentionedMember);

这样既避免了错误,代码也更易读~

内容的提问来源于stack exchange,提问作者Omega

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 07:22:41