async def log_error(self, *, ctx=None, extra=None):
    e = discord.Embed(title='Error', colour=14507859)
    e.description = f'''```py
{traceback.format_exc()}
```'''
    e.add_field(name='Extra', value=extra, inline=False)
    e.timestamp = datetime.datetime.utcnow()
    if (ctx is not None):
        fmt = '{0} (ID: {0.id})'
        author = fmt.format(ctx.author)
        channel = fmt.format(ctx.channel)
        guild = ('None' if (ctx.guild is None) else fmt.format(ctx.guild))
        e.add_field(name='Author', value=author)
        e.add_field(name='Channel', value=channel)
        e.add_field(name='Guild', value=guild)
    (await self.webhook.send(embed=e))
async def log_error(self, *, ctx=None, extra=None):
    e = discord.Embed(title='Error', colour=14507859)
    e.description = f'```py
{traceback.format_exc()}
```'
    e.add_field(name='Extra', value=extra, inline=False)
    e.timestamp = datetime.datetime.utcnow()
    if (ctx is not None):
        fmt = '{0} (ID: {0.id})'
        author = fmt.format(ctx.author)
        channel = fmt.format(ctx.channel)
        guild = ('None' if (ctx.guild is None) else fmt.format(ctx.guild))
        e.add_field(name='Author', value=author)
        e.add_field(name='Channel', value=channel)
        e.add_field(name='Guild', value=guild)
    (await self.webhook.send(embed=e))