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

如何让Discord机器人向新加入服务器的用户发送私信?

给新成员发送私信欢迎的实现方法

嘿,看起来你已经搞定了服务器频道的欢迎消息,很棒!要给新加入的用户发私信其实只需要稍微调整一下你的代码就行,我给你一步步说明:

首先,你之前的guildMemberAdd事件参数其实有点小问题——这个事件触发时传入的第一个参数是成员对象(member),而不是message。咱们修正这个之后,直接调用成员对象的send()方法就能发私信啦。

这里给你一个完整的示例代码,还加了失败处理(毕竟有些用户会关闭陌生人私信权限):

bot.on("guildMemberAdd", (member) => {
  // 尝试给新成员发送私信
  member.send("🎉 欢迎加入我们的服务器!很高兴你能来,有任何问题都可以随时问哦~")
    .catch(error => {
      // 如果私信发送失败(比如用户关闭了私信),回退到频道发送
      const chatChannel = bot.channels.cache.find(channel => channel.name === "chat");
      if (chatChannel) {
        chatChannel.send(`欢迎 ${member.user.tag} 加入服务器!😉 可惜没法给你发私信,记得检查一下你的私信权限设置哦`);
      }
    });
});

几个关键点要注意:

  • 使用member.send()直接发送私信,参数就是你想发送的文本内容,支持Discord的Markdown格式哦(比如加粗、表情)。
  • 一定要加上catch块处理错误,因为不是所有用户都允许接收服务器成员的私信,不加的话机器人可能会抛出错误导致崩溃。
  • 如果你用的是Discord.js v12及以上版本,channels.find()已经被弃用了,要改用channels.cache.find()来查找频道,这是新版本的规范。

这样调整之后,机器人就会优先给新成员发私信,失败的话就 fallback 到你原来的频道欢迎消息啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:59:18