Unofficial discord-interactions multi page embed handler
Project description
dinteractions-Paginator
Unofficial discord-interactions multi-page embed handler
Table of Contents
Join our Discord server!
- Try out all the possible combinations of the paginator with
/example1
and/example2
, - Ask some questions,
- And give us feedback and suggestions!
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
Installation
pip install -U dinteractions-Paginator
Dependencies
- discord.py (version 1.7.3)
- discord-interactions (version 3.0.1 - 3.0.2)
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:
Slash command:
import discord
from discord.ext import commands
from discord_slash import SlashCommand, SlashContext
from dinteractions_Paginator import Paginator
bot = commands.Bot(command_prefix="/")
slash = SlashCommand(bot, sync_commands=True)
@bot.event
async def on_ready():
print(f"Logged in as {bot.user}!")
@slash.slash(name="embeds")
async def embeds(ctx: SlashContext):
one = discord.Embed(title="1st Embed", description="General Kenobi!", color=discord.Color.red())
two = discord.Embed(title="2nd Embed", description="General Kenobi!", color=discord.Color.orange())
three = discord.Embed(title="3rd Embed", description="General Kenobi!", color=discord.Color.gold())
four = discord.Embed(title="4th Embed", description="General Kenobi!", color=discord.Color.green())
five = discord.Embed(title="5th Embed", description="General Kenobi!", color=discord.Color.blue())
pages = [one, two, three, four, five]
await Paginator(bot=bot, ctx=ctx, pages=pages, content=["1", "2", "3", "4", "5"], timeout=60).run()
bot.run("token")
Normal command:
import discord
from discord.ext import commands
from discord_slash import SlashCommand
from dinteractions_Paginator import Paginator
bot = commands.Bot(command_prefix="/")
slash = SlashCommand(bot)
@bot.event
async def on_ready():
print(f"Logged in as {bot.user}!")
@bot.command()
async def embeds(ctx):
one = discord.Embed(title="1st Embed", description="General Kenobi!", color=discord.Color.red())
two = discord.Embed(title="2nd Embed", description="General Kenobi!", color=discord.Color.orange())
three = discord.Embed(title="3rd Embed", description="General Kenobi!", color=discord.Color.gold())
four = discord.Embed(title="4th Embed", description="General Kenobi!", color=discord.Color.green())
five = discord.Embed(title="5th Embed", description="General Kenobi!", color=discord.Color.blue())
pages = [one, two, three, four, five]
await Paginator(bot=bot, ctx=ctx, pages=pages, content=["1", "2", "3", "4", "5"], timeout=60).run()
bot.run("token")
NOTE: slash = SlashCommand(bot)
required to override bot
class Paginator
Arguments
Required:
bot
-commands.Bot
: The bot variable,commands.Bot
is requiredctx
-Union[SlashContext, commands.Context, ComponentContext, MenuContext, discord.TextChannel, discord.User, discord.Member]
: The context of a command.
NOTE: if one of the latter 3 are used, there will always be aThis interaction failed
even though it was a success, due to no context to respond topages
-List[discord.Embed]
: A list of embeds to be paginated
Optional:
content
-Optional[Union[str, List[str]]]
: the content of the message to send, defaults toNone
hidden
-Optional[bool]
: if you want the paginator to be hidden, defaultFalse
authorOnly
-Optional[bool]
: if you want the paginator to work for the author only, default isFalse
onlyFor
-Optional[Union[discord.User, discord.Role, List[Union[discord.User, discord.Role]]]]
: components only for specified user(s) or role(s)dm
-Optional[bool]
: if you want the paginator to be DM'ed, defaultFalse
Time:
timeout
-Optional[int]
: deactivates paginator after inactivity if enabled, defaults toNone
(meaning no timeout)disableAfterTimeout
-Optional[bool]
: disable components aftertimeout
, defaultTrue
deleteAfterTimeout
-Opti onal[bool]
: delete components aftertimeout
, defaultFalse
What to use:
useButtons
-Optional[bool]
: uses buttons, default isTrue
useSelect
-Optional[bool]
: uses a select, default isTrue
useIndexButton
-Optional[bool]
: uses the index button, default isFalse
and staysFalse
ifuseButtons
is alsoFalse
useLinkButton
-Optional[bool]
: uses the link buttonuseFirstLast
-Optional[bool]
: uses the first and last buttons, defaultTrue
Labels:
firstLabel
-Optional[str]
: The label of the button used to go to the first page, defaults to""
prevLabel
-Optional[str]
: The label of the button used to go to the previous page, defaults to""
indexLabel
-Optional[str]
: The label of the index button, defaults to"Page"
nextLabel
-Optional[str]
: The label of the button used to go to the next page, defaults to""
lastLabel
-Optional[str]
: The label of the button used to go to the last page, defaults to""
linkLabel
-Optional[Union[str, List[str]]]
: The label for the link buttonlinkURL
-Optional[Union[str, List[str]]]
: The URL(s) for the link buttoncustomButtonLabel
=Optional[str]
: The label of a custom disabled button, defaultNone
Emojis:
firstEmoji
-Optional[Union[discord.emoji.Emoji, discord.partial_emoji.PartialEmoji, dict, bytes]
: emoji of the button used to go to the first page, defaults to"⏮️"
prevEmoji
-Optional[Union[discord.emoji.Emoji, discord.partial_emoji.PartialEmoji, dict, bytes]
: emoji of the button used to go to the previous page, defaults to"◀"
nextEmoji
-Optional[Union[discord.emoji.Emoji, discord.partial_emoji.PartialEmoji, dict, bytes]
: emoji of the button used to go to the next page, defaults to"▶"
lastEmoji
-Optional[Union[discord.emoji.Emoji, discord.partial_emoji.PartialEmoji, dict, bytes]
: emoji of the button used to go to the last page, defaults to"⏭️"
customButtonEmoji
-Optional[Union[discord.emoji.Emoji, discord.partial_emoji.PartialEmoji, dict, bytes]
: emoji of the custom disabled button, defaults toNone
Styles (the colo[u]r of the buttons):
firstStyle
-Optional[Union[ButtonStyle, int]]
: the style of button (ButtonStyle
orint
) for the first button, defaults to1
(ButtonStyle.blue
)prevStyle
-Optional[Union[ButtonStyle, int]]
: the style of button (ButtonStyle
orint
) for the previous button, defaults to1
(ButtonStyle.blue
)indexStyle
-Optional[Union[ButtonStyle, int]]
: the style of button (ButtonStyle
orint
) for the index button, defaults to3
(ButtonStyle.green
)nextStyle
-Optional[Union[ButtonStyle, int]]
: the style of button (ButtonStyle
orint
) for the next button, defaults to1
(ButtonStyle.blue
)lastStyle
-Optional[Union[ButtonStyle, int]]
: the style of button (ButtonStyle
orint
) for the last button, defaults to1
(ButtonStyle.blue
)customButtonStyle
-Optional[Union[ButtonStyle, int]]
: the style of button (ButtonStyle
orint
) for the last button, defaults to2
(ButtonStyle.gray
)
Returns
class TimedOut
Attributes
ctx
-Union[commands.Context, SlashContext]
: The original contextbuttonContext
-ComponentContext
: The context for the paginator's componentstimeTaken
-int
: How long in seconds that user(s) used the paginator before the timeoutlastContent
-str
: The last content that the paginator stopped at after timeoutlastEmbed
-discord.Embed
: The last embed that the paginator stopped at after timeoutsuccessfulUsers
-List[discord.User]
: Users that successfully used the paginator, the first user is the invokerfailedUsers
-List[discord.User]
: Users that failed to use the paginator
Credits
- Contributors of discord-interactions
- dpy-slash-button-paginator
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-1.3.0.tar.gz
.
File metadata
- Download URL: dinteractions_Paginator-1.3.0.tar.gz
- Upload date:
- Size: 23.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | adc335270f895ce5271ea47ff2c0ce91edd82b788ab02cca06f580a1fdee2c7e |
|
MD5 | bb50f468de17f4a032f1f5e65177803b |
|
BLAKE2b-256 | 722142058956a997c456e5f510d26a3d29854a924b88f28c2e290d60b9a4720a |
File details
Details for the file dinteractions_Paginator-1.3.0-py3-none-any.whl
.
File metadata
- Download URL: dinteractions_Paginator-1.3.0-py3-none-any.whl
- Upload date:
- Size: 20.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4bba1661821e13c32dbf3ad2e41cee3bb69c396a02997c9ea0adcb7948e2fa01 |
|
MD5 | 9a49738d286d2974c52d7d6a3ed15a54 |
|
BLAKE2b-256 | 7c4e274eea299a2f228c252a89b64b6ed88c423e394fc4e8d0fd42834cfa2b9f |