discord.py - | Ошибка в clear после проверки прав |
Написал команду clear для бота в дискорде. Для работы требует наличие прав manage_messages, если пользователь имеет это право, то команда соответственно выполняется (проверено), но если пользователь этого права не имеет, вместо того, чтобы написать об этом, выдает ошибку в консоль и все
@client.command( pass_context = True )
@commands.has_permissions( manage_messages = True )
async def clear( ctx, amount = 1 ):
await ctx.channel.purge( limit = 1 )
await ctx.channel.purge( limit = amount )
@clear.error
async def clear_error( ctx ):
author = ctx.message.author
await ctx.message.purge( limit = 1 )
await ctx.send( f'{ author.mention }, у Вас недостаточно прав для использования этой команды!' '\n' 'Недостающее право: Управлять сообщениями' )
Пробовал как-то использовать это все через if/elif/else, но не смог понять, как все равно записывать проверку наличия прав
Ответы (2 шт):
Автор решения: Нuкuma
→ Ссылка
Вы не указали "error" в аргументах функции clear_error и пропустили условие, при котором выполняется код ошибки. Вот исправленный код ошибки:
@clear.error
async def clear_error(ctx, error):
if isinstance(error, commands.MissingRequiredArgument):
await ctx.send(f'{ctx.author.name}, вы не указали пользователя')
await ctx.message.purge(limit = 1)
await ctx.send( f'{author.mention}, у Вас недостаточно прав для использования этой команды!\nНедостающее право: Управлять сообщениями')
Автор решения: PolyTex18
→ Ссылка
@clear.error
async def clear_error(ctx, error):
if isinstance(error, commands.MissingRequiredArgument):
await ctx.send(f'{ctx.author.name}, вы не указали пользователя')
elif isinstance(error, MissingPermissions):
await ctx.send(f'{author.mention}, у Вас недостаточно прав для использования этой команды!\nНедостающее право: Управлять сообщениями')