Discord.js v14中guildMemberAdd事件失效问题求助
Discord黑名单机器人修复方案
你的代码存在两个核心问题:没有针对特定ID用户做判断,且缺少权限检查与错误处理,以下是修正后的实现:
修正代码
// 替换为你需要封禁的特定用户ID列表 const blacklistedUserIds = ["目标用户ID1", "目标用户ID2"]; client.on("guildMemberAdd", async (member) => { // 仅处理黑名单内的用户 if (blacklistedUserIds.includes(member.id)) { try { // 检查机器人是否拥有封禁权限 if (!member.guild.members.me.permissions.has("BanMembers")) { console.log(`服务器【${member.guild.name}】中机器人缺少封禁成员权限`); return; } // 执行封禁操作 await member.ban({ reason: "Blacklisted" }); console.log(`已封禁黑名单用户:${member.user.tag}(ID:${member.id})`); } catch (err) { console.error(`封禁用户 ${member.user.tag} 失败:`, err); } } });
关键说明
- 特定ID匹配:通过
blacklistedUserIds数组存储需要拦截的用户ID,只有加入的用户ID在列表内才会触发封禁。 - 权限校验:提前检查机器人是否具备
BanMembers权限,避免因权限不足导致操作失败。 - 异步处理与错误捕获:用
async/await处理ban异步操作,同时捕获异常并打印日志,方便排查问题。
内容的提问来源于stack exchange,提问作者João Sousa
相关产品推荐
相关产品推荐

