Stack Overflow на русском Asked by 1nterFekT on November 15, 2021
Написал команду 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, но не смог понять, как все равно записывать проверку наличия прав
@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Недостающее право: Управлять сообщениями')
Answered by PolyTex18 on November 15, 2021
Вы не указали "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Недостающее право: Управлять сообщениями')
Answered by Нuкuma on November 15, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP