class Menu(discord.ui.View):
def __init__(self, ctx: commands.Context, embeds: List[discord.Embed]):
super().__init__(timeout=5)
self.embeds = embeds
self.embed_count = 0
self.first_page.disabled = True
self.prev_page.disabled = True
@discord.ui.button(emoji="<:ffleft:1015484881272320142>", style=discord.ButtonStyle.secondary)
async def first_page(self, interaction: discord.MessageInteraction,
button: discord.ui.Button):
self.embed_count = 0
embed = self.embeds[self.embed_count]
embed.set_footer(text=f"Page 1 of {len(self.embeds)}")
self.first_page.disabled = True
self.prev_page.disabled = True
self.next_page.disabled = False
self.last_page.disabled = False
await interaction.response.edit_message(embed=embed, view=self)
@discord.ui.button(emoji="<:back:1015484972854939669>", style=discord.ButtonStyle.secondary)
async def prev_page(self, interaction: discord.MessageInteraction,
button: discord.ui.Button):
self.embed_count -= 1
embed = self.embeds[self.embed_count]
self.next_page.disabled = False
self.last_page.disabled = False
if self.embed_count == 0:
self.first_page.disabled = True
self.prev_page.disabled = True
await interaction.response.edit_message(embed=embed, view=self)
@discord.ui.button(emoji="<:next:1015484958845960313>", style=discord.ButtonStyle.secondary)
async def next_page(self, interaction: discord.MessageInteraction,
button: discord.ui.Button):
self.embed_count += 1
embed = self.embeds[self.embed_count]
self.first_page.disabled = False
self.prev_page.disabled = False
if self.embed_count == len(self.embeds) - 1:
self.next_page.disabled = True
self.last_page.disabled = True
await interaction.response.edit_message(embed=embed, view=self)
@discord.ui.button(emoji="<:ffright:1015484223941001269>", style=discord.ButtonStyle.secondary)
async def last_page(self, interaction: discord.MessageInteraction,
button: discord.ui.Button):
self.embed_count = len(self.embeds) - 1
embed = self.embeds[self.embed_count]
self.first_page.disabled = False
self.prev_page.disabled = False
self.next_page.disabled = True
self.last_page.disabled = True
await interaction.response.edit_message(embed=embed, view=self)
async def on_timeout(self):
self.first_page.disabled = True
self.prev_page.disabled = True
self.next_page.disabled = True
self.last_page.disabled = True
await ctx.response.edit_message(embed=embed, view=self)
@bot.hybrid_command(description="shows the bot's help menu")
async def help(ctx: commands.Context):
embeds = [
discord.Embed(colour=col).add_field(name=f"{red} Description", value=f"> For more help with the bot join the discord support server and/or contact the bot owner, also to invite seraph to you server go down below for the links.", inline=False).add_field(name=f"{red} Links", value=f"> [Support](https://discord.gg/stylus) - [Bot Owner](https://discord.com/users/945116352283308052/) - [Invite Link](https://discord.com/api/oauth2/authorize?client_id=1012165822900355142&permissions=8&scope=applications.commands%20bot)", inline=False).set_footer(text=f"Home Menu: Entries - 1/3", icon_url=ctx.bot.user.avatar).set_thumbnail(url=ctx.bot.user.avatar),
discord.Embed(colour=col).add_field(name=f"<:config:1015482892618575872>﹒Configuration Commands", value="> `antinuke*, antiraid*, antilink*, autorole*, welcome*, prefix*, filter*, goodbye*`", inline=False).add_field(name=f"<:info:1015481511065178143>﹒Information Commands", value="> `serverinfo, userinfo, inrole, ping, uptime, support, invite, botinfo, bots, membercount`", inline=False).set_thumbnail(url=ctx.bot.user.avatar).set_footer(text=f"Configuration & Information: Entries - 2/3", icon_url=ctx.bot.user.avatar),
discord.Embed(colour=col).add_field(name=f"<:utility:1015481561463914686>﹒Utility Commands", value="> `afk, avatar, servericon, serverbanner, urban, poll, spotify, firstmessage, emoji^, snipe, editsnipe, invites`", inline=False).add_field(name=f"<:moderation:1015483640685277215>﹒Moderation Commands", value="> `no commands right now`", inline=False).set_footer(text=f"Utility & Moderation: Entries - 3/3", icon_url=ctx.bot.user.avatar).set_thumbnail(url=ctx.bot.user.avatar),
]
await ctx.send(embed=embeds[0], view=Menu(embeds))