Official interactions.py paginator
Project description
dinteractions-Paginator
Official interactions.py paginator
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
- discord-py-interactions (version >=4.2.0)
- interactions-wait-for (version >=1.0.4)
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.?title: str
: The title of the page displayed in the select menu.- Defaults to content or the title of the embed with an available title.
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 instancectx: CommandContext | ComponentContext
: The contextpages: list[Page]
: The pages to paginate.- Use a list of
Page
objects.
- Use a list of
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
orremove_after_timeout
.
- To modify this behavior, modify
?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
andComponentContext
objects. - Raise
StopPaginator
to stop the paginator. - Return
False
to skip editing the paginator.
- The function will be passed the
?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
andComponentContext
objects. - Raise
StopPaginator
to stop the paginator.
- The function will be passed the
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
and999,999,999
to ensure that the paginator is unique.
- A number between
-
?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 themessage_id
andchannel_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
Attributes
paginator: Paginator
: ThePaginator
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
- Contributors of interactions.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for dinteractions_Paginator-2.0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | bb26f4eeab557dc53b147cd832ce904aed86a9ae58ae4bb32c9642b56083d447 |
|
MD5 | 7c1c3cca82db2d5f92dd51cb119d1a1e |
|
BLAKE2b-256 | 34a8f9048609e8a5a57f141a8f1df40d9bbd61b199f3cf372102df1ded160e41 |
Hashes for dinteractions_Paginator-2.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f27eb88f652faf324fd9d8888604ff66dff3580af0777b81942199a39291f5f |
|
MD5 | bbd71ad2e135580499c42968d78886eb |
|
BLAKE2b-256 | 6adb14fbcc29bd696deea49a1e98914cd1a0b7bb0a1a0b7006e88d7f324da34b |