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

如何使用discord-button发送ephemeral类型的Discord临时交互回复

实现方案

你现有代码的问题如下:

  • ephemeral 是交互专属属性,仅针对按钮点击的交互回复生效。你调用 button.message.channel.send() 是向当前频道发送公共消息,无法支持该属性,自然不会生成仅点击者可见的临时回复
  • 如果你预先调用了 button.reply.defer() 延迟回复,需要在defer阶段就指定ephemeral属性,后续再编辑回复内容即可

方案1:无需延迟回复的最简实现

如果你的逻辑没有耗时操作,不需要先显示加载状态,直接调用交互回复方法即可:

client.on('clickButton', async (button) => {
  if (button.id === 'openTicket') {
    await button.reply.send('Done', {
      ephemeral: true
    });
  }
});

方案2:需要延迟回复的实现

如果你的逻辑需要先处理耗时操作(比如写入数据库、调用第三方接口等),可以先defer再编辑回复:

client.on('clickButton', async (button) => {
  if (button.id === 'openTicket') {
    // 延迟回复时就指定为临时消息
    await button.reply.defer({
      ephemeral: true
    });
    // 此处可插入你的耗时业务逻辑
    // 逻辑处理完成后编辑回复内容
    await button.reply.edit('Done');
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:18:03