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

Discord.js v13中机器人给用户添加角色的方法及报错解决方案

问题原因

message.author 返回的是全局User对象,不关联特定服务器的身份数据,本身就没有roles属性,这不是v13版本的变更,属于API基础概念混用。
你需要使用代表用户在当前服务器内身份的GuildMember对象,也就是message.member来操作角色。

前置检查

在修正代码前先确认两项配置:

  • 机器人启动时已经开启 Guilds、GuildMembers 两个意图(Intent),否则无法获取服务器成员数据
  • 机器人在当前服务器拥有Manage Roles权限,且机器人自身的角色层级高于你要分配的目标角色,否则会触发权限报错
修正后代码
// 获取目标角色
const role = message.guild.roles.cache.get("[替换为实际角色ID]");
if (!role) return console.log("未匹配到对应角色");
// 给消息发送者分配角色
message.member.roles.add(role)
  .then(() => console.log("角色分配成功"))
  .catch(err => console.error("分配失败:", err));
补充说明

如果是在斜杠命令等交互场景下操作,对应成员对象为interaction.member,操作逻辑完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:06:03