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

Discord.js无法向频道发消息,报TypeError错误求助

Discord.js 报错求助:Cannot read properties of undefined (reading 'send')

我用Discord.js开发机器人时反复遇到以下错误:

TypeError: Cannot read properties of undefined (reading 'send') at Object.execute (C:\Users\FieryTech\Desktop\SilverBot\commands\utility\apply.js:48:79)        at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async Object.execute (C:\Users\FieryTech\Desktop\SilverBot\events\interactionCreate.js:16:4)

相关代码逻辑:通过交互事件获取用户ID,尝试给该用户发送DM消息,执行到send方法时触发报错。


问题分析与解决办法

  • 这个错误的本质是你要调用send的对象为undefined——说白了就是你没拿到能发消息的有效DM通道或用户对象
  • 常见问题及对应解决方式:
    1. 用户关闭了DM权限:如果Discord用户设置了不接收陌生人DM,调用send会直接失败,甚至返回undefined。解决时加异常捕获,给用户明确提示:
      try {
        await interaction.user.send("你的申请已提交,请留意后续通知");
      } catch (err) {
        await interaction.reply({ content: "无法向你发送DM,请检查隐私设置中的DM权限", ephemeral: true });
      }
      
    2. 用户对象获取错误:确认代码中获取的是有效的User实例,比如直接用interaction.user,或者通过await client.users.fetch(userId)获取,避免使用未初始化的变量
    3. 异步操作未等待结果:如果用fetch获取用户,必须加await等待异步操作完成,否则拿到的是Promise对象,而非可调用send的用户实例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:40:02