aboutsummaryrefslogtreecommitdiffstats
path: root/arthur/pagination.py
blob: e8e69e1534df50827de604cd50ef9624550041bf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from collections.abc import Sequence

import discord
from discord.ext.commands import Context
from pydis_core.utils.pagination import LinePaginator as _LinePaginator, PaginationEmojis


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,  # noqa: ASYNC109
        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="\N{WASTEBASKET}"),
            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,
        )