fix: implement LogView compatibility

This commit is contained in:
Codex 2025-06-05 17:57:25 +00:00 committed by Slipstream
parent 934b4f9ca1
commit 1e6b1ce91d
Signed by: slipstream
GPG Key ID: 13E498CE010AC6FD

View File

@ -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)
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))
header.add_item(ui.TextDisplay(f"**{title}**"))
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."""