You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于discord.js的Discord Bot如何仅向发起者私密回复?

如何让Discord Bot仅向指令发起者发送私信回复

嘿,很高兴看到你在学习discord.js开发Bot!针对你的问题,当然可以实现只给指令发起者发送私密回复,而不是在公开频道里回复。

你之前用的message.channel.send()message.reply()都是在消息所在的公开频道发送内容,要实现私信回复,只需要使用message.author.send()方法——这个方法会直接给消息的发送者(也就是指令发起者)发送私信。

这里给你修改后的示例代码:

const discord = require('discord.js');
const client = new discord.Client();
const prefix = '!';

client.once('ready', () => {
    console.log('Ready!');
});

client.on('message', message => {
    // 跳过其他Bot的消息,避免无效响应
    if (message.author.bot) return;
    
    if (message.content === 'ping') {
        // 给指令发起者发送私信
        message.author.send('Pong!')
            .catch(err => {
                // 处理发送失败的情况,比如用户关闭了私信权限
                console.error('无法发送私信:', err);
                // 可选:在公开频道提示用户调整设置
                message.reply('我没法给你发私信哦,请检查你的隐私设置是否允许接收Bot的私信!');
            });
    }
});

// 记得替换成你的Bot Token
client.login('你的Bot Token');

额外补充几个实用细节:

  • message.author.send()支持和channel.send()完全一样的参数,比如嵌入消息、附件等复杂内容都能发送。
  • 加上if (message.author.bot) return;是个好习惯,能避免Bot陷入循环响应其他Bot消息的情况。
  • 错误捕获很重要,毕竟不是所有用户都开启了接收陌生人私信的权限,提前处理能让你的Bot更健壮。

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

火山引擎 最新活动