如何不回复斜杠命令(slash-command)即可发送公开消息?
解决方案
核心逻辑:Discord 斜杠命令交互默认会在interaction.reply()返回的消息上方展示命令调用提示,要隐藏该提示同时发送非临时公开消息,只需先完成交互响应避免超时报错,再通过频道对象独立发送公开消息即可,无需把目标内容作为斜杠命令的回复返回。
具体实现步骤(以discord.js v14为例,其他SDK逻辑一致)
- 第一步:先完成交互响应,避免3秒超时报错,二选一即可:
- 无耗时逻辑直接响应空临时回复
await interaction.reply({ content: '\u200B', ephemeral: true }); - 有耗时逻辑先延迟响应临时回复
await interaction.deferReply({ ephemeral: true }); // 此处放置你的业务处理逻辑
- 无耗时逻辑直接响应空临时回复
- 第二步:通过交互绑定的频道对象发送目标公开消息,该消息完全独立于斜杠命令交互,不会附带任何命令调用提示
await interaction.channel.send('你需要发送的公开消息内容');
验证说明
- 该方案完全符合Discord交互规则,不会触发任何超时或格式报错
- 最终发送的公开消息归属于机器人账号,所有频道成员可见,无斜杠命令调用痕迹
- 可正常读取
interaction对象内的用户入参、调用者信息等内容用于消息组装
内容的提问来源于stack exchange,提问作者BlockNoir
相关产品推荐
相关产品推荐

