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

discord.js开发:如何实现点击按钮时机器人发送DM消息?

按钮触发机器人发送DM消息实现修正方案

现有代码问题

  • 你使用的button.clicker.send()属于discord.js早于v12版本的过时API,现在已被移除
  • 按钮交互的唯一标识属性是customId而非id
  • 未做异步操作处理与异常捕获,极易出现交互超时、程序崩溃问题

修正后可运行代码

client.on('interactionCreate', async interaction => {
    // 过滤非按钮交互事件
    if (!interaction.isButton()) return;

    if(interaction.customId === "onBtn"){
        // 先延迟更新按钮状态,避免3秒交互超时报错
        await interaction.deferUpdate();
        try {
            // 给触发按钮的用户发送私信
            await interaction.user.send('ok');
        } catch (error) {
            // 处理用户关闭私信权限的异常,仅触发用户可见提示
            await interaction.followUp({ 
                content: '无法向您发送私信,请开启服务器成员私信权限后重试', 
                ephemeral: true 
            });
        }
    }
});

注意事项

  • 所有涉及接口请求的异步操作都需要加await关键词,避免逻辑时序错乱
  • ephemeral: true参数可以让提示消息仅对触发交互的用户可见,不会公开刷出消息
  • 如果使用其他机器人开发框架,获取触发用户的API对应调整即可,核心逻辑通用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:54:00