diff options
author | 2024-04-01 15:05:27 +0200 | |
---|---|---|
committer | 2024-05-28 20:52:20 +0200 | |
commit | 5285b30d4d9ad8eb70ed94b283fa255511f34e31 (patch) | |
tree | 645e71b9cff46c45cf7c2bd643d1a05b700ad545 /arthur/pagination.py | |
parent | Bump dependencies to latest (diff) |
paginate pod logs instead of truncating them
Diffstat (limited to 'arthur/pagination.py')
-rw-r--r-- | arthur/pagination.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/arthur/pagination.py b/arthur/pagination.py new file mode 100644 index 0000000..8db0ade --- /dev/null +++ b/arthur/pagination.py @@ -0,0 +1,63 @@ +from collections.abc import Sequence + +import discord +from discord.ext.commands import Context +from pydis_core.utils.pagination import LinePaginator as _LinePaginator, PaginationEmojis + +from arthur.config import CONFIG + + +class LinePaginator(_LinePaginator): + """ + A class that aids in paginating code blocks for Discord messages. + + See the super class's docs for more info. + """ + + @classmethod + async def paginate( + cls, + lines: list[str], + ctx: Context | discord.Interaction, + embed: discord.Embed, + prefix: str = "", + suffix: str = "", + max_lines: int | None = None, + max_size: int = 500, + scale_to_size: int = 4000, + restrict_to_user: discord.User | None = None, + timeout: int = 300, + footer_text: str | None = None, + url: str | None = None, + allowed_roles: Sequence[int] | None = None, + *, + reply: bool = False, + empty: bool = True, + exception_on_empty_embed: bool = False, + ) -> discord.Message | None: + """ + Use a paginator and set of reactions to provide pagination over a set of lines. + + Acts as a wrapper for the super class' `paginate` method to provide the pagination emojis by default. + + Consult the super class's `paginate` method for detailed information. + """ + return await super().paginate( + pagination_emojis=PaginationEmojis(delete=CONFIG.trashcan), + lines=lines, + ctx=ctx, + embed=embed, + prefix=prefix, + suffix=suffix, + max_lines=max_lines, + max_size=max_size, + scale_to_size=scale_to_size, + empty=empty, + restrict_to_user=restrict_to_user, + timeout=timeout, + footer_text=footer_text, + url=url, + exception_on_empty_embed=exception_on_empty_embed, + reply=reply, + allowed_roles=allowed_roles, + ) |