import re import discord class BotMessage(discord.Embed): def __init__(self, **kwargs): title = kwargs.pop('title', None)[:256] if title is not None: # Max embed title length is 256 title = title[:256] super().__init__( **kwargs, title=title ) image_url = kwargs.pop('image_url', None) if image_url: super().set_image(url=image_url) # Message content before embed self.content = kwargs.pop('content', None) class ErrorMessage(BotMessage): def __init__(self, message, *, command_name: str = None): title = message if command_name: title = f'Error during command "{command_name}"' description = None if match := re.search(r'(?P\w+Error): ?(ERROR: ?)?(?P.*)(: ?Traceback)?', message): description = f"{match.group('error')}: {match.group('message')}" super().__init__( title=title, description=description, color=discord.Color.red() ) class NowPlayingMessage(BotMessage): def __init__(self, title, url, image_url): super().__init__( content='Now playing:', title=title, url=url, image_url=image_url, color=discord.Color.green() ) class QueuedMessage(BotMessage): def __init__(self, title, url, image_url): super().__init__( content='Queued:', title=title, url=url, image_url=image_url, color=discord.Color.blue() )