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

Discord.js机器人能否向添加它的服务器用户发私信?求代码实现

当然可以实现!

完全没问题,Discord.js 支持机器人向邀请它进入服务器的用户发送私信,下面我就带你一步步实现这个功能:

实现原理

当机器人被添加到服务器时,Discord.js 会触发 guildCreate 事件。我们可以通过读取服务器的审核日志,找到执行添加机器人操作的用户,然后调用用户对象的 send() 方法发送私信。

注意事项

  • 你的机器人需要拥有 ViewAuditLog(查看审核日志)权限,不然无法获取添加记录。
  • 部分用户可能关闭了来自服务器成员的私信功能,这时候发送会失败,一定要做好错误处理。
  • 确保机器人的 intents(意图)中开启了 Guilds,否则无法监听 guildCreate 事件。

完整代码示例

const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds, // 必须开启,才能监听服务器相关事件
    GatewayIntentBits.GuildMessages, // 可选,若后续需要处理服务器消息可保留
    GatewayIntentBits.MessageContent // 可选,若需要读取消息内容可保留
  ]
});

client.on('guildCreate', async (guild) => {
  try {
    // 获取最近的一条添加机器人的审核日志记录
    const auditLogs = await guild.fetchAuditLogs({
      type: 28, // 28 对应 "添加机器人" 的事件类型
      limit: 1
    });

    const botAddRecord = auditLogs.entries.first();
    if (!botAddRecord) {
      console.log(`无法获取服务器 ${guild.name} 的添加记录`);
      return;
    }

    const inviter = botAddRecord.executor;
    if (!inviter) {
      console.log(`无法找到服务器 ${guild.name} 的邀请用户`);
      return;
    }

    // 发送欢迎私信
    await inviter.send('您好,感谢您将我添加到服务器!如果有任何使用问题,随时告诉我哦~');
    console.log(`已向用户 ${inviter.tag} 发送欢迎私信`);
  } catch (error) {
    console.error('发送私信失败:', error);
    // 常见错误原因:用户关闭了私信、机器人权限不足等
  }
});

// 登录机器人
client.login('你的机器人TOKEN');

把代码里的你的机器人TOKEN替换成你自己的机器人令牌就可以运行啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:29:10