@NeZuSS

Понять понять из-за чего не работает команда мут?

Вот код

#временный мут
@bot.command(pass_context = True)
@commands.has_any_role('mute' , 908382396112592926 ) #Вводите название вашей роли и её ID
async def mute(ctx, member: discord.Member = None, time: int = None, reason = None ):
    muted_role = discord.utils.get( ctx.message.guild.roles, name = mute )
    if member is None:
        await ctx.send(embed = discord.Embed(description = f'{ ctx.author.name }, **обязательно укажите (@Rall пример) пользователя!**', color = 5574e0 ))
        await ctx.message.add_reaction( '❌' )
    else:
        if time is None:
            await ctx.send(embed = discord.Embed(description = f'{ ctx.author.name }, **обязательно укажите время (минуты)!**', color = 5574e0 ))
            await ctx.message.add_reaction( '❌' )
        else:
            if muted_role is None:
                await ctx.send(embed = discord.Embed(description = f'{ ctx.author.name }, **обязательно создайте роль mute!**', color = 5574e0 ))
                await ctx.message.add_reaction( '❌' )
            else:
                await member.add_roles(muted_role, reason = reason, atomic = True)
                await ctx.message.add_reaction( '✅' )
                await asyncio.sleep(time * 60)
                await member.remove_roles(muted_role)


Хотя роль - mute создана

Вот ошибка:
discord.ext.commands.errors.MissingAnyRole: You are missing at least one of the required roles: 'mute'
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
Vindicar
@Vindicar
Как понять? Голову включить и документацию прочитать.
@commands.has_any_role('mute' , 908382396112592926 )

Читаем доки:
A check() that is added that checks if the member invoking the command has any of the roles specified. This means that if they have one out of the three roles specified, then this check will return True.

"Если участник, вызвавший команду, имеет любую из указанных ролей". Т.е. этой командой может пользоваться только участник, у которого есть либо роль с названием 'mute', либо роль с id 908382396112592926.

Далее, смотрим на нижележащую глупость.
muted_role = discord.utils.get( ctx.message.guild.roles, name = mute )

Ты в качестве name передал функцию mute. Это по-твоему вообще имеет смысл? Может, всё же имел ввиду name = 'mute'? Но тогда означает, что команду может вызвать только замьюченный пользователь. Я сомневаюсь, что ты этого хотел.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 250 000 ₽
AGIMA Москва
от 250 000 ₽