Fix LoggingCog LogView nested container
This commit is contained in:
parent
3dbf347ca6
commit
c71537c8bf
@ -109,13 +109,13 @@ class LoggingCog(commands.Cog):
|
||||
|
||||
self.container = ui.Container(accent_colour=color)
|
||||
self.add_item(self.container)
|
||||
self.title = title
|
||||
|
||||
self.description_display: Optional[ui.TextDisplay] = (
|
||||
ui.TextDisplay(description) if description else None
|
||||
)
|
||||
|
||||
# Header section is only used when an author is provided so we don't
|
||||
# need a placeholder accessory.
|
||||
# Header section is only used when an author is provided.
|
||||
if author is not None:
|
||||
self.header: Optional[ui.Section] = ui.Section(
|
||||
accessory=ui.Thumbnail(media=author.display_avatar.url)
|
||||
@ -131,9 +131,9 @@ class LoggingCog(commands.Cog):
|
||||
if self.description_display:
|
||||
self.container.add_item(self.description_display)
|
||||
|
||||
# Container used for fields so they're inserted before the footer.
|
||||
self.fields_container = ui.Container()
|
||||
self.container.add_item(self.fields_container)
|
||||
# Field displays are added directly to the main container before the
|
||||
# footer separator.
|
||||
self.fields: list[ui.TextDisplay] = []
|
||||
|
||||
self.separator = ui.Separator(spacing=discord.SeparatorSpacing.small)
|
||||
footer_text = footer or f"Bot ID: {bot.user.id}" + (
|
||||
@ -146,14 +146,20 @@ class LoggingCog(commands.Cog):
|
||||
# --- Compatibility helpers ---
|
||||
def add_field(self, name: str, value: str, inline: bool = False):
|
||||
"""Append a bolded name/value line to the log view."""
|
||||
self.fields_container.add_item(ui.TextDisplay(f"**{name}:** {value}"))
|
||||
field = ui.TextDisplay(f"**{name}:** {value}")
|
||||
self.fields.append(field)
|
||||
self.container.remove_item(self.separator)
|
||||
self.container.remove_item(self.footer_display)
|
||||
self.container.add_item(field)
|
||||
self.container.add_item(self.separator)
|
||||
self.container.add_item(self.footer_display)
|
||||
|
||||
def set_footer(self, text: str):
|
||||
"""Replace the footer text display."""
|
||||
self.footer_display.content = text
|
||||
|
||||
def set_author(self, name: str, icon_url: Optional[str] = None):
|
||||
"""Add or update the author information."""
|
||||
"""Add or update the author information while keeping the title."""
|
||||
if self.header is None:
|
||||
# Remove plain title/description displays and replace with a section.
|
||||
self.container.remove_item(self.title_display)
|
||||
@ -162,18 +168,21 @@ class LoggingCog(commands.Cog):
|
||||
self.header = ui.Section(
|
||||
accessory=ui.Thumbnail(media=icon_url or "")
|
||||
)
|
||||
self.header.add_item(ui.TextDisplay(f"**{self.title}**"))
|
||||
self.header.add_item(ui.TextDisplay(name))
|
||||
if self.description_display:
|
||||
self.header.add_item(self.description_display)
|
||||
self.container.add_item(self.header)
|
||||
# Move to the beginning to mimic embed header placement
|
||||
self.container._children.remove(self.header)
|
||||
self.container._children.insert(0, self.header)
|
||||
else:
|
||||
self.header.clear_items()
|
||||
if icon_url:
|
||||
self.header.accessory = ui.Thumbnail(media=icon_url)
|
||||
self.header.add_item(ui.TextDisplay(f"**{self.title}**"))
|
||||
self.header.add_item(ui.TextDisplay(name))
|
||||
if self.description_display:
|
||||
self.header.add_item(self.description_display)
|
||||
def _user_display(self, user: Union[discord.Member, discord.User]) -> str:
|
||||
"""Return display name, username and ID string for a user."""
|
||||
display = user.display_name if isinstance(user, discord.Member) else user.name
|
||||
|
Loading…
x
Reference in New Issue
Block a user