Skip to main content

Official interactions.py paginator

Project description

dinteractions-Paginator

Official interactions.py paginator

Discord PyPI - Downloads

Table of Contents

Features

  • Message per embed or persistent message
  • Index select that can be turned on/off
  • Select labels are generated based on embed's title
  • Index button that can be turned on/off
  • Ability to set the buttons to any emote, color or label
  • Custom buttons

Join our Discord server

  • Try out example commands,
  • Ask some questions,
  • And give us feedback and suggestions!

Wanna contribute?

  • Make an issue to:
    • say what feature you want to be added
    • file a bug report
  • Make a pull request and:
    • describe what you added/removed
    • why you added/removed it
  • Make sure you use the issue/PR template!

Installation

pip install -U dinteractions-Paginator

Dependencies

Examples

These simple examples show how to easily create interactive, multiple page embeds that anyone can interact with that automatically deactivate after 60 seconds of inactivity:

Example GIF

Paginator with select:

Example

from interactions import Client, CommandContext, Embed
from interactions.ext.paginator import Page, Paginator

client = Client("token")

@client.command(name="paginator", description="Paginator example")
async def paginator_example(ctx: CommandContext):
    await Paginator(
        client=client,
        ctx=ctx,
        pages=[
            Page("Content 1", Embed(title="One")),
            Page("Content 2", Embed(title="Two")),
            Page("Content 3"),
            Page(embeds=[Embed(title="Four"), Embed(title="Five")]),
        ],
    ).run()

client.start()

API Reference

Page

This is an individual page to be added to the paginator.

Arguments

  • ?content: str: The content of the page.
  • ?embeds: Embed | list[Embed]: The embed(s) to be displayed on the page.

Example

from interactions import Embed
from interactions.ext.paginator import Page, Paginator

pages = [
    Page("Content 1", Embed(title="One")),
    Page("Content 2", Embed(title="Two")),
    Page("Content 3"),
    Page(embeds=[Embed(title="Four"), Embed(title="Five")]),
]
...
p = Paginator(..., pages=pages)
await p.run()

class Paginator

Arguments

Required

  • client: Client: The client instance
  • ctx: CommandContext | ComponentContext: The context
  • pages: list[Page]: The pages to paginate.
    • Use a list of Page objects.

Optional

  • ?timeout: int: The amount of time in seconds before the paginator automatically deactivates.
    • Defaults to 60 seconds.
    • When timed out, the paginator will automatically deactivate, and by default, the components will be disabled.
      • To modify this behavior, modify disable_after_timeout or remove_after_timeout.
  • ?author_only: bool = False: Whether the paginator should only be used by the author.
  • ?use_buttons: bool = True: Whether the paginator should use buttons.
  • ?use_select: bool = True: Whether the paginator should use the select menu.
  • ?use_index: bool = False: Whether the paginator should use the index button.
  • ?extended_buttons: bool = True: Whether the paginator should use extended buttons.
    • They are 2 buttons that skip to the beginning or the end.
  • ?buttons: dict[str, Button]: Custom buttons to use.
    • The keys need to be one of the following: first, prev, index, next, last.
    • You can use the ButtonKind enum for this purpose.
  • ?placeholder: str = "Page": The placeholder to use for the select menu.
  • ?disable_after_timeout: bool = True: Whether the components should be disabled after the timeout.
  • ?remove_after_timeout: bool = True: Whether the components should be removed after the timeout.
  • ?func_before_edit: Callable | Coroutine: A function or coroutine that will be called before the embed is edited.
    • The function will be passed the Paginator and ComponentContext objects.
    • Raise StopPaginator to stop the paginator.
    • Return False to skip editing the paginator.
  • ?func_after_edit: Callable | Coroutine: A function or coroutine that will be called after the embed is edited.
    • The function will be passed the Paginator and ComponentContext objects.
    • Raise StopPaginator to stop the paginator.

Attributes

All the parameters listed above are stored as attributes in the Paginator object.

Additional attributes:

  • id: int: The paginator's ID.

    • A number between 0 and 999,999,999 to ensure that the paginator is unique.
  • ?component_ctx: ComponentContext: The context of the paginator's components.

    • This is only available if or when a component is interacted with.
  • index: int: The current index of the paginator.

    • This is the index of the current page.
  • top: int: The index of the top page.

  • ?message: Message: The message that the paginator is using.

  • _msg: dict[str, ?Snowflake | int]: A dict with the message_id and channel_id of the message.

  • _json: dict[str, Any]: The JSON representation of the paginator.

    • You can utilize this to create a paginator dynamically by doing this:
    p = Paginator(client, ctx, pages, ...)
    another = Paginator(**p._json)
    

Returns

class Data


class Data

Attributes

  • paginator: Paginator: The Paginator object.
  • original_ctx: CommandContext | ComponentContext: The original context supplied to the paginator.
  • component_ctx: ComponentContext: The component context.
  • message: Message: The message that was sent.

class ButtonKind

  • FIRST: "first": The first button.
  • PREVIOUS: "prev": The previous button.
  • INDEX: "index": The index button.
  • NEXT: "next": The next button.
  • LAST: "last": The last button.

error StopPaginator

Raise this error in your function or coroutine to stop the paginator.


Credits

Back to top

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dinteractions_Paginator-2.0.1.tar.gz (20.6 kB view details)

Uploaded Source

Built Distribution

dinteractions_Paginator-2.0.1-py3-none-any.whl (21.5 kB view details)

Uploaded Python 3

File details

Details for the file dinteractions_Paginator-2.0.1.tar.gz.

File metadata

File hashes

Hashes for dinteractions_Paginator-2.0.1.tar.gz
Algorithm Hash digest
SHA256 5a7deb5259f3123d24db0f8ed1d26ba814b871671d77a8d06c35ff70d0308dc7
MD5 b63d450639a338adcfff7516360d5775
BLAKE2b-256 01c113177925dda318283e3c46f72093e84d48ee1071a4d0ec532e095447dd2a

See more details on using hashes here.

File details

Details for the file dinteractions_Paginator-2.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for dinteractions_Paginator-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 243f806015209f5d0e15f03f5a90afd12ce0655f1a73907e65e7dce0fc0cf8b6
MD5 cec0850cff86135ade0d0b0cbe414bdb
BLAKE2b-256 1cce582f3a07ef13ba6639b1d4325426b8e0ab4759cd9ae687f342d0c1004054

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page