Unofficial discord-interactions multi page embed handler
Project description
dinteractions-Paginator
Unofficial discord-interactions multi-page embed handler
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.
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
File details
Details for the file dinteractions_Paginator-2.0.0.tar.gz
.
File metadata
- Download URL: dinteractions_Paginator-2.0.0.tar.gz
- Upload date:
- Size: 20.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 76d766d27678f2943ea9e75b4910b53053ab61120b70317d8338ea9bc34ca22c |
|
MD5 | ce2c6581bc78629434f31d8e57c4e8a9 |
|
BLAKE2b-256 | f6a48b16c3e336db22565405e9bafc92bd1de0fa40faf59dd0f133eca99fd33a |
File details
Details for the file dinteractions_Paginator-2.0.0-py3-none-any.whl
.
File metadata
- Download URL: dinteractions_Paginator-2.0.0-py3-none-any.whl
- Upload date:
- Size: 21.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b887372b5f2df77a532de5921f34e6a9ac185c06ebb173ebf6bd168efdd3d1b6 |
|
MD5 | 9711974cc5888005c858ca9b3a039f02 |
|
BLAKE2b-256 | 8c4c563dedb12813789acbcbda660840f1de6c3bc7e3c6eaa5eea5ff68216800 |