Вывод ошибок в discord

У меня есть код:

@client.event
async def on_command_error(event, *args, **kwargs):    
    channel = client.get_channel(727801516626542634)
    embed = discord.Embed(title=':x: Event Error', colour=0xe74c3c) #Red
    embed.add_field(name='Event', value=event)
    embed.description = f'```py\n%s\n```' % traceback.format_exc()
    embed.timestamp = datetime.datetime.utcnow()
    await channel.send(embed=embed)

Он должен выводить ошибки из консоли в чат, но он делает это очень странно: спойлер


Ответы (1 шт):

Автор решения: Fixator10

Событие on_command_error не имеет аргумента event. Так же, оно срабатывает при ошибке команды, а не при ошибке события. Для событий и остальных ошибок используйте событие on_error

@client.event
async def on_command_error(ctx, exception): # для команд
    channel = client.get_channel(727801516626542634)
    embed = discord.Embed(title=':x: Command Error', colour=0xe74c3c) #Red
    embed.add_field(name='Command', value=ctx.command)
    embed.description = f"```py\n{traceback.format_exception(type(exception), exception, exception.__traceback__)}\n```"
    embed.timestamp = datetime.datetime.utcnow()
    await channel.send(embed=embed)

@client.event
async def on_error(event, *args, **kwargs): # для остальных ошибок   
    channel = client.get_channel(727801516626542634)
    embed = discord.Embed(title=':x: Event Error', colour=0xe74c3c) #Red
    embed.add_field(name='Event', value=event)
    embed.description = f"```py\n{traceback.format_exc()}\n```"
    embed.timestamp = datetime.datetime.utcnow()
    await channel.send(embed=embed)

Нет никакого смысла использовать %-форматирование при использовании f-строк.

→ Ссылка