使用discord.js实现新成员加入服务器发送欢迎消息功能异常求助
discord.js 新成员欢迎消息不触发修复方案
1. 开启必要的网关意图
discord.js v12及更高版本要求必须开启特权网关意图才能接收成员加入相关事件:
- 进入Discord开发者平台对应应用的「Bot」设置页
- 开启
Privileged Gateway Intents分类下的Server Members Intent开关 - 初始化客户端时必须声明对应的意图参数,示例代码:
const { Client, GatewayIntentBits } = require('discord.js'); const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers // *必须添加该意图才能接收guildMemberAdd事件 ] });
2. 适配新版discord.js的API写法
你当前使用的channels.get()是v11版本的废弃写法,v12及以后版本需要通过cache层获取频道,同时建议增加非空判断避免报错,修正后的事件代码如下:
client.on('guildMemberAdd', member => { // 替换为你的实际欢迎频道ID,ID为字符串格式 const welcomeChannel = member.guild.channels.cache.get('your_channel_id'); if (welcomeChannel) { welcomeChannel.send("Welcome"); } });
3. 检查机器人权限
确认你的机器人在目标服务器满足权限要求:
- 拥有「查看频道」、「发送消息」的全局权限
- 欢迎频道没有单独设置屏蔽机器人发送消息的权限规则
- 机器人账号处于正常可用状态,没有被服务器封禁或限制
内容的提问来源于stack exchange,提问作者Blue Green
相关产品推荐
相关产品推荐

