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

Pycord添加角色报错:404未知角色,但角色实际存在

解决Pycord机器人添加角色时的"Unknown Role"错误

问题描述

使用Pycord开发Discord机器人时,点击按钮执行添加角色的代码抛出discord.errors.NotFound: 404 Not Found (error code: 10011): Unknown Role错误,但目标角色实际存在。相关代码如下:

初始化代码:

import discord
from discord.ext import commands  # 补充原代码缺失的导入

intents = discord.Intents.all()
bot = commands.Bot(intents=intents, help_command=None)

class GiveRole(discord.ui.View):
    def __init__(self, member: discord.Member):
        super().__init__(timeout=None)
        self.server_roles = bot.get_guild(1114203090950836284).roles
        print(self.server_roles)
        self.member = member

    @discord.ui.button(label="G1", style=discord.ButtonStyle.green, emoji="1️⃣", row=0)
    async def grade1(self, button: discord.ui.Button, interaction: discord.Interaction):
        await self.member.add_roles(discord.utils.get(self.server_roles, id=1114212978707923167))

触发错误的代码行:

await self.member.add_roles(discord.utils.get(self.server_roles, id=1114212978707923167))

错误信息:

discord.errors.NotFound: 404 Not Found (error code: 10011): Unknown Role

解决方法

1. 改用交互对象获取服务器和角色

提前缓存的角色列表可能失效,或者服务器对象未完全加载。在按钮回调中通过interaction.guild获取当前交互所在的服务器,再直接用角色ID获取角色,这是最可靠的方式:

修改后的grade1方法:

async def grade1(self, button: discord.ui.Button, interaction: discord.Interaction):
    # 通过交互对象获取实时服务器,再用ID定位角色
    target_role = interaction.guild.get_role(1114212978707923167)
    if target_role:
        await self.member.add_roles(target_role)
        # 可选:给用户发送操作反馈
        await interaction.response.send_message("已添加G1角色", ephemeral=True)
    else:
        await interaction.response.send_message("找不到目标角色,请检查角色ID", ephemeral=True)

同时可删除__init__里的self.server_roles相关代码,避免无效缓存。

2. 检查机器人权限

  • 确保机器人拥有管理角色权限(在服务器设置→角色→机器人角色中开启)。
  • 机器人的角色位置必须高于目标角色的位置,否则无法给用户添加权限等级更高的角色。

3. 验证角色ID正确性

右键目标角色→选择「复制ID」(需先开启Discord开发者模式:设置→高级→开发者模式),对比代码中的ID是否完全一致,避免输入错误。

4. 避免提前加载服务器对象

不要在View初始化时用bot.get_guild()获取服务器,机器人启动初期可能还未完成服务器缓存,而interaction.guild是交互触发时的实时服务器对象,不会有缓存失效问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 07:55:21