首页 > 解决方案 > 无法添加角色和更改昵称,但机器人在公会中是管理员

问题描述

我在尝试着:

isp = "new role1"
lis = [0, 'ingame_name', 'Real_first_name']
await message.author.add_roles(discord.utils.get(message.author.guild.roles, name=isp))
await message.author.edit(nick=f"{lis[1]} ({lis[2]})")

我得到了missing permissions错误。

我什至在公会中没有管理员的情况下尝试了我的 alt。

标签: pythondiscord.py

解决方案


有很多原因可以给你这个错误。请检查列出的每个案例,看看您是否处于这种情况:

公会一方

  • 您的机器人没有所需的权限。请检查您的公会设置,然后检查角色,然后检查以您的机器人命名的角色。请注意,拥有管理员权限会绕过所有其他权限,因此显然这不是您的问题。
  • 您的机器人低于您尝试编辑的成员。验证您的机器人的最高角色是否高于您尝试编辑的成员的最高角色(在您的情况下为作者)。角色层次由公会设置中的角色顺序决定,从上到下。

不和谐的一面

  • 您的机器人没有在该部分中Server Members Intent激活。Privileged Gateway Intents意图用于限制对某些信息的访问以防止滥用,因此您必须激活它们以获得链接权限。进入开发者门户,然后是 bot,搜索Server Members Intent并激活它。

程序端

  • 您的机器人没有member激活意图。就像开发者门户中的意图一样,您必须精确地确定要使用的意图。有多种方法可以做到这一点,但这里有一个:
import discord
from discord.ext import commands
intents = discord.Intents.default()
intents.members = True
bot = commands.Bot(command_prefix='!', intents=intents)

我认为最后两个应该对你有用。


推荐阅读