aboutsummaryrefslogtreecommitdiffstats
path: root/arthur/pagination.py
diff options
context:
space:
mode:
authorGravatar shtlrs <[email protected]>2024-04-01 15:05:27 +0200
committerGravatar shtlrs <[email protected]>2024-05-28 20:52:20 +0200
commit5285b30d4d9ad8eb70ed94b283fa255511f34e31 (patch)
tree645e71b9cff46c45cf7c2bd643d1a05b700ad545 /arthur/pagination.py
parentBump dependencies to latest (diff)
paginate pod logs instead of truncating them
Diffstat (limited to 'arthur/pagination.py')
-rw-r--r--arthur/pagination.py63
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,
+ )