Discord.py. Бот не выводит сообщение в чат при использовании команды пользователем без нужных для этой команды прав
Подскажите пожалуйста, почему бот не выводит сообщение в чат при написании команды от лица пользователя без нужных прав. При этом ошибки не возникает.
Пробовал писать MissingPermissions вместо PermissionsError, как итог получал ошибку.
@bot.command()
@commands.has_permissions(manage_messages=True)
async def delete(ctx, amount:int):
await ctx.channel.purge(limit=amount + 1)
await ctx.send(f'*Успешная аннигиляция {amount} сообщений!*', delete_after=3)
@delete.error
async def delete_error(ctx, error):
if isinstance(error, PermissionError):
await ctx.send('у вас нет доступа к этой команде!')
Ошибка появляется в результате написания команды в чат юзером без необходимых для команды прав. Сама ошибка ниже:
Traceback (most recent call last):
File "C:\Users\Katerina\Desktop\proj\venv\lib\site-packages\discord\ext\commands\core.py", line 71, in wrapped
ret = await coro(*args, **kwargs)
File "C:\Users\Katerina\Desktop\proj\bot\botrun.py", line 77, in delete_error
if isinstance(error, MissingPermissions):
NameError: name 'MissingPermissions' is not defined
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\Katerina\Desktop\proj\venv\lib\site-packages\discord\client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "C:\Users\Katerina\Desktop\proj\bot\botrun.py", line 27, in on_message
await bot.process_commands(message)
File "C:\Users\Katerina\Desktop\proj\venv\lib\site-packages\discord\ext\commands\bot.py", line 976, in process_commands
await self.invoke(ctx)
File "C:\Users\Katerina\Desktop\proj\venv\lib\site-packages\discord\ext\commands\bot.py", line 943, in invoke
await ctx.command.dispatch_error(ctx, exc)
File "C:\Users\Katerina\Desktop\proj\venv\lib\site-packages\discord\ext\commands\core.py", line 424, in dispatch_error
await injected(ctx, error)
File "C:\Users\Katerina\Desktop\proj\venv\lib\site-packages\discord\ext\commands\core.py", line 77, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: NameError: name 'MissingPermissions' is not defined
Ответы (1 шт):
Автор решения: Black Fxx
→ Ссылка
Не долго покопавшись в коде днем, была найдена причина проблемы.
import discord
from discord.ext import commands
from discord.ext.commands import has_permissions, MissingPermissions #забыл добавить MissingPermissions
#Декоратор события
@bot.event
async def on_message(message):
if message.author == bot.user:
return
await bot.process_commands(message)
#сама команда
@bot.command()
@commands.has_permissions(manage_messages=True)
async def delete(ctx, amount:int):
await ctx.channel.purge(limit=amount + 1)
await ctx.send(f'*Успешная аннигиляция {amount} сообщений!*', delete_after=3)
#ошибка в случае если у пользователя нет прав на определенную команду
@delete.error
async def delete_error(ctx, error):
if isinstance(error, MissingPermissions):
await ctx.send('у вас нет доступа к этой команде!')