如何让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
相关产品推荐
相关产品推荐

