Untitled

 avatar
unknown
plain_text
2 years ago
4.7 kB
4
Indexable
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))