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

Discord机器人开发:如何向点击非本人触发按钮的用户发送ephemeral消息

功能实现方案

该功能完全可实现,你之前的写法只差对点击交互的正确响应逻辑:按钮触发的交互实例本身支持直接回复仅点击用户可见的ephemeral消息,不需要走私信通道。

修正后可运行代码

const collector = message.createMessageComponentCollector({ componentType: "BUTTON", time: 15000});

collector.on("collect", collected => {
    // 校验点击用户是否为原始请求者
    if(collected.user.id !== interaction.user.id){
        // 直接回复仅点击用户可见的提示,和Dank Memer效果一致
        collected.reply({
            content: "此菜单不属于你",
            ephemeral: true
        });
        return;
    }
    // 原始请求者的正常交互逻辑
    if(collected.customId === "confirm"){
        collected.deferUpdate(); // 消耗本次交互,避免按钮显示交互失败
        interaction.followUp("Success");
    }else{
        collected.deferUpdate();
        interaction.followUp("Ignore");
    }
});

关键逻辑说明

  • 每一次按钮点击都会生成独立的ButtonInteraction实例(即代码中的collected对象)
  • 调用该实例的reply方法时,将ephemeral参数设为true,返回的消息就只有点击按钮的用户本人可见
  • 所有收集到的交互必须给出响应,否则用户端会弹出「交互失败」的报错:非目标用户直接返回ephemeral提示即可,目标用户如果不需要额外操作提示,可以用collected.deferUpdate()静默消耗本次交互

效果示例

Dank Memer实现效果示例


内容的提问来源于stack exchange,提问作者OOPS Studio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:24:02