Easy-to-use pagination library for discord.py
pip3 install EZPaginator
| Parameter | Type | Description |
|---|---|---|
| context | Context | Interaction | Context or Interaction object. |
| embeds | list[Embed] | List of embed contents, by default []. |
| contents | list[str] | List of message contents, by default []. If both embeds and contents are given, Paginator will paginate only embeds. |
| timeout | int | Timeout of the paginator, by default 30 |
| start_index | int | Start index of embeds/contents, by default 0. |
| auto_clear_emoji | bool | Whether to clear the emoji when the pagination is stopped by function stop() or timeout. by default True. This might need 'manage message' permission. |
| auto_delete_message | bool | Whether to delete the message when the pagination is stopped by function stop() or by timeout. by default False. |
| use_extend | bool | Whether to use the extended emoji set(First, Previous, Next, Last). by default False. |
| emojis | list[str | Emoji] | List of emojis to use for pagination. by default ["⬅️", "➡️"] |
| extended_emojis | list[str | Emoji] | List of extended emojis to use for pagination. by default ["⏪", "⬅️", "➡️", "⏩"] only : User | None, optional |
| only | discord.abc.User | None | Restrict only the user to use the pagination. by default None. |
| auto_fill_index | bool | Enable auto-fill index mode, by default False. |
Click to expand example
## Commands
@bot.command()
async def test(ctx: commands.Context) -> None:
embeds = [
discord.Embed(title="TEST 1", description="Page 1", color=discord.Color.red()),
discord.Embed(title="TEST 2", description="Page 2", color=discord.Color.blue()),
discord.Embed(title="TEST 3", description="Page 3", color=discord.Color.gold()),
]
page = Paginator(ctx, embeds=embeds)
await page.start()
## Slash Commands
@bot.tree.command()
async def slash_embed(interaction: discord.Interaction):
embeds = [
discord.Embed(title="TEST 1", description="Page 1", color=discord.Color.red()),
discord.Embed(title="TEST 2", description="Page 2", color=discord.Color.blue()),
discord.Embed(title="TEST 3", description="Page 3", color=discord.Color.gold()),
]
page = Paginator(interaction, embeds=embeds)
await page.start()
| Commands | Slash Command |
|---|---|
## Commands
@bot.command()
async def test(ctx: commands.Context) -> None:
contents = ["This is Page 1", "This is Page 2", "This is Page 3"]
page = Paginator(ctx, contents=contents, use_extend=True)
await page.start()
## Slash Commands
@bot.tree.command()
async def slash_content(interaction: discord.Interaction) -> None:
contents = ["This is Page 1", "This is Page 2", "This is Page 3"]
page = Paginator(interaction, contents=contents, use_extend=True)
await page.start()| Commands | Slash Command |
|---|---|
## Commands
@bot.command()
async def test(ctx: commands.Context) -> None:
embeds = [
discord.Embed(title="TEST 1", description="Page 1", color=discord.Color.red()),
discord.Embed(title="TEST 2", description="Page 2", color=discord.Color.blue()),
discord.Embed(title="TEST 3", description="Page 3", color=discord.Color.gold()),
]
page = Paginator(ctx, embeds=embeds, emojis=["⬇️", "⬆️"])
await page.start()
## Slash Commands
@bot.tree.command()
async def slash_content(interaction: discord.Interaction) -> None:
contents = ["This is Page 1", "This is Page 2", "This is Page 3"]
page = Paginator(
interaction,
contents=contents,
use_extend=True,
extended_emojis=["⏬", "⬇️", "⬆️", "⏫"],
)
await page.start()| Commands w/ custom emojis | Slash Command w/ extended custom emojis |
|---|---|
If auto_fill_index is True, {current_page} and {total_pages} will be automatically filled with the current page and total pages.
@bot.command()
async def test(ctx: commands.Context) -> None:
embeds = [
discord.Embed(
title="Hello ({current_page} / {total_pages})",
description="World",
),
discord.Embed(
title="Wow ({current_page} / {total_pages})",
description="Current page is {current_page}",
),
]
for i in embeds:
i.set_footer(text="Page {current_page} of {total_pages}")
page = Paginator(
ctx,
embeds=embeds,
auto_fill_index=True,
)
await page.start()BGM#0970