如何让Discord机器人发送新成员自动欢迎消息?异常代码如何修复?
问题排查与修复
代码错误原因
- 存在冗余调用:
guildMemberAdd事件返回的member对象本身已内置用户私信方法,不需要从member.guild.users中二次查询对应用户 - 版本兼容问题:discord.js v12 及以上版本已废弃
.get()同步获取用户的方法,改用异步的.fetch()方法,同时未开启对应权限意图也会导致事件无法触发 - 缺少异常处理:如果用户开启了「禁止来自服务器成员的私信」设置,直接调用发送方法会抛出异常,导致程序崩溃
修复步骤
开启权限意图
进入Discord开发者平台,找到你的机器人对应应用,进入「Bot」设置页面,开启 Server Members Intent 权限,否则服务端不会推送成员入群事件。调整代码逻辑
// 适用于discord.js v13/v14版本 bot.on('guildMemberAdd', async member => { try { // 直接调用member对象的send方法发送欢迎私信 await member.send("Heyo!"); } catch (err) { // 可选:捕获用户关闭私信权限的异常,避免程序崩溃 console.log(`向用户 ${member.user.tag} 发送欢迎消息失败:${err.message}`); } });
内容的提问来源于stack exchange,提问作者Dnai
相关产品推荐
相关产品推荐

