diff --git a/cogs/logging_cog.py b/cogs/logging_cog.py index 3ece6e4..18ce177 100644 --- a/cogs/logging_cog.py +++ b/cogs/logging_cog.py @@ -56,28 +56,50 @@ class LoggingCog(commands.Cog): asyncio.create_task(self.start_audit_log_poller_when_ready()) # Keep this for initial start class LogView(ui.LayoutView): - """Simple view for log messages.""" + """Simple view for log messages with helper methods.""" def __init__(self, bot: commands.Bot, title: str, description: str, color: discord.Color, author: Optional[discord.abc.User], footer: Optional[str]): super().__init__(timeout=None) - container = ui.Container(accent_colour=color) - self.add_item(container) - header = ui.Section(accessory=(ui.Thumbnail(media=author.display_avatar.url) - if author else None)) - header.add_item(ui.TextDisplay(f"**{title}**")) + self.container = ui.Container(accent_colour=color) + self.add_item(self.container) + + self.header = ui.Section(accessory=(ui.Thumbnail(media=author.display_avatar.url) + if author else None)) + self.header.add_item(ui.TextDisplay(f"**{title}**")) if description: - header.add_item(ui.TextDisplay(description)) - container.add_item(header) + self.header.add_item(ui.TextDisplay(description)) + self.container.add_item(self.header) - container.add_item(ui.Separator(spacing=discord.SeparatorSpacing.small)) + self.fields_section = ui.Section() + self.container.add_item(self.fields_section) + + self.container.add_item(ui.Separator(spacing=discord.SeparatorSpacing.small)) footer_text = footer or f"Bot ID: {bot.user.id}" + ( f" | User ID: {author.id}" if author else "") self.footer_display = ui.TextDisplay(footer_text) - container.add_item(self.footer_display) + self.container.add_item(self.footer_display) + + # --- Compatibility helpers --- + def add_field(self, name: str, value: str, inline: bool = False): + """Mimic Embed.add_field by appending a bolded name/value line.""" + self.fields_section.add_item(ui.TextDisplay(f"**{name}:** {value}")) + + def set_footer(self, text: str): + """Mimic Embed.set_footer by replacing the footer text display.""" + self.footer_display.content = text + + def set_author(self, name: str, icon_url: Optional[str] = None): + """Mimic Embed.set_author by adjusting the header section.""" + self.header.clear_items() + if icon_url: + self.header.accessory = ui.Thumbnail(media=icon_url) + else: + self.header.accessory = None + self.header.add_item(ui.TextDisplay(name)) def _user_display(self, user: Union[discord.Member, discord.User]) -> str: """Return display name, username and ID string for a user."""