Discord.py机器人角色置顶且含管理员权限仍报Missing Permissions错误
Discord机器人权限错误排查与解决
问题详情
执行test命令时触发权限错误:
raise CommandInvokeError(self, e) from e discord.app_commands.errors.CommandInvokeError: Command 'test' raised an exception: Forbidden: 403 Forbidden (error code: 50013): Missing Permissions
机器人已配置管理员权限,角色位于服务器角色列表顶端;个人角色在机器人角色下方且同样拥有管理员权限,但仍持续出现上述错误。
涉及命令代码:
@tree.command(name='test', description='testing the bot', guild=guild) async def self(interaction: discord.Interaction, user:discord.User, *, nickname:str): await interaction.user.edit(nick=nickname) await interaction.response.send_message(user.mention, ephemeral=True)
问题原因及解决办法
核心问题:服务器所有者的昵称无法被机器人修改
Discord有内置限制:任何机器人,哪怕拥有管理员权限,都不能修改服务器所有者的昵称。如果你用服务器所有者账号调用这个命令,必然会触发403权限错误。
代码逻辑修正
另外你的命令定义了user参数,但实际操作的是interaction.user(即调用命令的用户)。如果你的需求是修改指定用户的昵称,需要把代码中的interaction.user替换为user:
await user.edit(nick=nickname)
额外注意事项
- 机器人无法修改角色层级高于自身的用户昵称,不过你的角色在机器人下方,此情况可排除;
- 确认服务器未开启针对所有者的特殊权限锁定(默认无此设置)。
换用非服务器所有者的普通账号测试命令,即可验证问题是否解决。
内容的提问来源于stack exchange,提问作者doare
相关产品推荐
相关产品推荐

