Discord: ошибка остановки исключения из печати в консоли Python - PullRequest
0 голосов
/ 05 ноября 2019

Я уверен, что мне не хватает чего-то очень простого, но я просто не могу его найти. Я сделал дескриптор ошибки для команды, которую я сделал, и она отвечает пользователю. Проблема в том, что я хотел бы, чтобы консоль моего скрипта бота Python была чистой, поэтому я ищу способ устранить большие ошибки, которые выводятся на консоль. Несмотря на то, что я обработал его, он все равно выводит на консоль исключение, которое я прошу заблокировать. Любая предоставленная помощь очень ценится.

Код:

    @bal.error
    async def bal_error(self, ctx, error):
        if isinstance(error, discord.ext.commands.BadArgument):
            await ctx.send('Balance: Please specify a user. Syntax (!bal {mention})')
        raise error #I am pretty sure there is no need for this.

Ошибка, которую я пытаюсь избежать вывода на консоль:

Ignoring exception in on_command_error
Traceback (most recent call last):
  File "C:\Users\gunzb\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\client.py", line 270, in _run
_event
    await coro(*args, **kwargs)
  File "C:\Users\gunzb\Desktop\AfterClap Bot\bot.py", line 37, in on_command_error
    raise error
  File "C:\Users\gunzb\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\bot.py", line 86
3, in invoke
    await ctx.command.invoke(ctx)
  File "C:\Users\gunzb\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 7
21, in invoke
    await self.prepare(ctx)
  File "C:\Users\gunzb\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 6
85, in prepare
    await self._parse_arguments(ctx)
  File "C:\Users\gunzb\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 6
08, in _parse_arguments
    kwargs[name] = await self.transform(ctx, param)
  File "C:\Users\gunzb\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 4
55, in transform
    return await self.do_conversion(ctx, converter, argument, param)
  File "C:\Users\gunzb\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 4
08, in do_conversion
    return await self._actual_conversion(ctx, converter, argument, param)
  File "C:\Users\gunzb\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 3
54, in _actual_conversion
    ret = await instance.convert(ctx, argument)
  File "C:\Users\gunzb\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\converter.py", l
ine 132, in convert
    raise BadArgument('Member "{}" not found'.format(argument))
discord.ext.commands.errors.BadArgument: Member "n" not found

1 Ответ

1 голос
/ 05 ноября 2019

Да, эта строка распространяет ошибку из обработчика, где она обрабатывается логикой вызова команды. Для большинства ошибок эта логика будет просто выводить ошибку на sys.stderr, а затем игнорировать ее.

Я рекомендую только повторно вызывать ошибки, если они не обрабатываются вашим кодом:

@bal.error
async def bal_error(self, ctx, error):
    if isinstance(error, discord.ext.commands.BadArgument):
        await ctx.send('Balance: Please specify a user. Syntax (!bal {mention})')
    else:
        raise error # Only called for other errors
...