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通道或用户对象 - 常见问题及对应解决方式:
- 用户关闭了DM权限:如果Discord用户设置了不接收陌生人DM,调用
send会直接失败,甚至返回undefined。解决时加异常捕获,给用户明确提示:try { await interaction.user.send("你的申请已提交,请留意后续通知"); } catch (err) { await interaction.reply({ content: "无法向你发送DM,请检查隐私设置中的DM权限", ephemeral: true }); } - 用户对象获取错误:确认代码中获取的是有效的
User实例,比如直接用interaction.user,或者通过await client.users.fetch(userId)获取,避免使用未初始化的变量 - 异步操作未等待结果:如果用
fetch获取用户,必须加await等待异步操作完成,否则拿到的是Promise对象,而非可调用send的用户实例
- 用户关闭了DM权限:如果Discord用户设置了不接收陌生人DM,调用
内容的提问来源于stack exchange,提问作者Fiery Tech
相关产品推荐
相关产品推荐

