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

Discord.js按用户名含指定标签自动分配角色功能代码失效求助

故障原因&修复方案

核心问题

你当前的代码失效主要是 Discord.js API 版本不兼容导致的,你使用的get()、addRole()、removeRole()都是 v11 版本的废弃语法,目前绝大多数运行环境使用的都是 v12 及以上版本,集合查询、角色操作的语法都有调整。
除此之外还有几个常见的配置问题会导致功能失效:

  • 机器人没有在目标服务器开启「管理角色」权限
  • 机器人的自身角色在服务器角色列表中的层级,低于你要分配的目标角色
  • 仅监听了全局用户名修改事件,用户修改服务器专属昵称时不会触发判断逻辑
  • 缺少容错判断,获取服务器、成员对象失败时会静默中断执行

修复后代码(适用 Discord.js v12/v13/v14 版本)

// 监听全局用户名修改
client.on("userUpdate", async (oldUser, newUser) => {
  if (oldUser.username === newUser.username) return;
  const tag = "⚡"; 
  const serverId = "793143091350470708";  
  const roleId = "888436049620119562";

  try {
    // 获取服务器对象
    const guild = client.guilds.cache.get(serverId);
    if (!guild) return;
    // 获取服务器成员对象
    const member = guild.members.cache.get(newUser.id);
    if (!member) return;
    // 检查是否有对应角色
    const hasRole = member.roles.cache.has(roleId);
    const hasTag = newUser.username.includes(tag);

    if (hasTag && !hasRole) {
      await member.roles.add(roleId);
    } else if (!hasTag && hasRole) {
      await member.roles.remove(roleId);
    }
  } catch (err) {
    // 可自行打印错误排查问题
    console.error("角色操作失败:", err);
  }
})

// 可选:监听服务器昵称修改事件,实现昵称包含标签也分配角色
client.on("guildMemberUpdate", async (oldMember, newMember) => {
  const tag = "⚡"; 
  const roleId = "888436049620119562";
  // 只处理目标服务器的事件
  if (newMember.guild.id !== "793143091350470708") return;
  // 昵称未修改直接跳过
  if (oldMember.nickname === newMember.nickname) return;

  try {
    const hasRole = newMember.roles.cache.has(roleId);
    // 同时检测用户名和昵称
    const hasTag = newMember.user.username.includes(tag) || (newMember.nickname && newMember.nickname.includes(tag));

    if (hasTag && !hasRole) {
      await newMember.roles.add(roleId);
    } else if (!hasTag && hasRole) {
      await newMember.roles.remove(roleId);
    }
  } catch (err) {
    console.error("昵称变更角色操作失败:", err);
  }
})

生效验证

修改代码后重启机器人,修改用户名/昵称包含对应标签,观察控制台是否有报错,如果有权限相关报错,回到服务器角色设置调整机器人角色层级和权限即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:18:02