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

Discord.js工单系统button.reply.send带true参数运行异常问题问询

问题原因分析
  • 你遇到的Discord.js: [object Object]报错核心是交互回复的参数格式不符合当前Discord.js版本要求,具体有两处错误:
    1. 配置项键名不规范:Discord.js v13及以上版本中,发送带嵌入消息和交互组件的消息时,参数键名为embeds(数组格式,存放所有Embed实例)和components(数组格式,存放所有动作行/组件实例),你代码中写的embed、component属于无效键名,API无法正常识别。
    2. 静默消息传参方式错误:旧版本Discord.js的交互回复支持传入第二个布尔参数,标记回复是否为仅触发用户可见的ephemeral(静默)消息,但该写法早已废弃。新版本要求将ephemeral: true配置项整合到第一个参数对象中,你额外传入的第二个参数true属于无效参数,触发API报错,报错对象未被正确序列化就输出为[object Object]。
  • 你修改为button.channel.send({ component: bu1tton, embed: embed })后正常运行的原因是:channel.send方法本身不接受第二个布尔参数,你去掉了无效的第二个参数后,虽然键名仍不规范,但部分低版本Discord.js做了向下兼容所以能正常运行,而channel.send是往当前频道发送公开消息,自然所有人可见。
正确实现方案

如果要实现仅点击按钮的用户可见确认消息,又不触发报错,使用如下写法即可:

// 注意:按钮需要放在动作行实例中才能正常渲染
const actionRow = new Discord.MessageActionRow().addComponents(bu1tton)
await button.reply.send({
  embeds: [embed],
  components: [actionRow],
  ephemeral: true
})

补充说明:Discord.js v13及以上版本中,按钮自定义ID的设置方法为setCustomId("sure"),原setID方法已废弃,如后续触发按钮交互识别失败可以修改此处。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:54:01