У меня есть функция, которая удаляет роль у пользователя на определенное время. Он отлично работает с предопределенными именами ролей, такими как:
role_to_remove = discord.utils.get(ctx.guild.roles, name="placeholder")
Но он не работает, когда я устанавливаю роли с помощью команд, которые сохраняют пользовательский ввод в строковую переменную. Вот функция, которая удаляет роли:
role1_name = ''
role2_name = ''
roleDefault_name = ''
@client.command()
@commands.has_role('VIP')
async def deleterole(ctx, member: discord.Member, *, reason=None):
role_to_remove = roleDefault_name
for role in member.roles:
if role == role2_name:
role_to_remove = discord.utils.get(ctx.guild.roles, name=role2_name)
elif role == role1_name:
role_to_remove = discord.utils.get(ctx.guild.roles, name=role1_name)
else:
await ctx.send(f"None of the roles specified in config are assigned to {member}")
role_to_remove = discord.utils.get(ctx.guild.roles, name=roleDefault_name)
await member.remove_roles(role_to_remove)
await asyncio.sleep(60.0)
await member.add_roles(role_to_remove)
Это функции, которые используются для установки имен ролей пользователем:
@client.command()
@commands.has_permissions(administrator=True)
async def set_role1_name(ctx, role1):
global role1_name
role1_name = role1
@client.command()
@commands.has_permissions(administrator=True)
async def set_role2_name(ctx, role2):
global role2_name
role2_name = role2
@client.command()
@commands.has_permissions(administrator=True)
async def set_role_default(ctx, roledefault):
global roleDefault_name
roleDefault_name = roledefault
Когда я использую команду deleteterole, я получаю следующее ошибка (несмотря на то, что бот имеет права администратора):
discord.errors. Запрещено: 403 Запрещено (код ошибки: 50013): Отсутствуют разрешения