Skip to content

Modern-Realm/discord_btns_menus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Package Name: discord-btns-menus

A responsive package for Buttons, DropMenus, Combinations and Paginator

• This module makes the process a lot easier !

python badge

CodeQL Generic badge Github License Windows Linux

GitHub stars GitHub forks GitHub issues

Join Official Discord Server for more guidance !


Key Features

  • Buttons
  • DropMenus
  • Combinations (Usage of both Buttons & DropMenus)
  • Paginator Generic badge

  • Installation

    Python 3.8 or higher is required !

    # Linux/macOS
      python3 -m pip install discord-btns-menus
    
    # Windows
      # Method-1:
        py -3 -m pip install discord-btns-menus
        # or
        python -m pip install discord-btns-menus
      # Method-2:
        pip install discord-btns-menus
    
    # Using GIT for ALPHA or BETA Versions
      # Method-1:
        pip install git+https://github.com/Modern-Realm/discord_btns_menus.git
      # Method-2:
        pip install -U git+https://github.com/Modern-Realm/discord_btns_menus

    REQUIRED DEPENDENCIES

    You can use ANY ONE of the below Package

    Note: Don't install more than one DEPENDENCY !


    Sample Usage

    Create a file with '.py ' extension, Like: main.py

    from btns_menus.Buttons import SButton, SingleButton
    from btns_menus.DropMenus import SDropMenu, DuoDropMenu
    from btns_menus.Combinations import BtnAndDropMenu, MultiBtnAndMenu
    
    import discord
    from discord.ext import commands
    
    intents = discord.Intents.all()
    activity = discord.Game("&help - phoenix")
    
    client = commands.Bot(command_prefix="&", intents=intents, activity=activity)
    
    
    @client.event
    async def on_ready():
        await client.change_presence(status=discord.Status.online)
        print("Bot is Ready !")
    
    
    @client.command()
    async def test(ctx):
        user = ctx.author
    
        btn1 = SButton(label="Hello", response="Hello have a nice day !")
    
        view_ = SingleButton(user, btn1).view()
        await ctx.send("click here !", view=view_)
    
    
    if __name__ == "__main__":
        client.run('token')

    Example for Buttons:

    Button type DuoButton, for more samples go to Examples/Buttons

    @client.command()
    async def test(ctx):
        user: discord.Member = ctx.author
        btn1 = SButton(label="Wave 👋", response=f"Hello {user.mention} have a nice day !")
        btn2 = SButton(label="Bye", response=f"Bye {user.mention} see you later !", style=ButtonStyle.secondary)
        view_ = DuoButton(user, btn1, btn2).view()
    
        await ctx.send(f"Sample buttons ...", view=view_)

    Preview:

    Button-Samples.gif


    Examples for DropMenus:

    DropMenu type DuoDropMenu, for more samples go to Examples/DropMenuss

    @client.command()
    async def test(ctx):
        user: discord.Member = ctx.author
    
        menu1 = SDropMenu(placeholder="select one", options=[
            SelectOption(label="username"),
            SelectOption(label="None of the above")
        ])
        menu1.add_query(("username", f"username: {user.name}"))
    
        menu2 = SDropMenu(placeholder="choose one", options=[
            SelectOption(label="discriminator"),
            SelectOption(label="None of the above")
        ])
        menu2.add_query(("discriminator", f"discriminator: {user.discriminator}"))
    
        view_ = DuoDropMenu(user, menu1, menu2).view()
    
        await ctx.send(f"Sample buttons ...", view=view_)

    Preview:

    DropMenu-Samples.gif


    Buttons & DropMenus combination

    • In this feature you can make & send Buttons and DropMenus together
    • For more examples for mixture of btns & menus go to Examples/combinations

    Examples for combinations

    Usage of both Buttons and DropMenus at once ...

    @client.command()
    async def test(ctx):
        user: discord.Member = ctx.author
    
        btn1 = SButton(label="Delete Menu", style=ButtonStyle.danger, delete_msg=True)
        menu1 = SDropMenu(placeholder="Select one", options=[
            SelectOption(label="About Python", value="python")
        ])
        menu1.add_query(("python", "Python is a widely-used, interpreted, object-oriented and"
                                   " high-level programming language with dynamic semantics, used for general-purpose programming.\n"
                                   "It was created by Guido van Rossum, and first released on February 20, 1991."))
    
        view_ = BtnAndDropMenu(user, btn1, menu1).view()
    
        await ctx.send(f"Sample buttons & Menus combinations ...", view=view_)

    Preview:

    Sample-Combinations.gif


    Example for MultiButtons

    Button type MultiButton, for more samples go to Examples/Buttons

    The Process for MultiDropMenu will be the same ...

    @client.command()
    async def test(ctx):
        user: discord.Member = ctx.author
        user_avatar = user.display_avatar or user.default_avatar
    
        btn1 = SButton(label="username", style=ButtonStyle.primary, response=user.name)
        btn2 = SButton(label="discriminator", style=ButtonStyle.secondary, response=user.discriminator)
        btn4 = SButton(label="Avatar", style=ButtonStyle.secondary, response=str(user_avatar), ephemeral=True)
        btn3 = SButton(label="Server Name", style=ButtonStyle.secondary, response=user.guild.name)
        btn5 = SButton(label="Display Name", style=ButtonStyle.secondary, response=user.display_name)
        btn6 = SButton(label="Delete Menu", style=ButtonStyle.danger, delete_msg=True)
    
        buttons = [btn1, btn2, btn3, btn4, btn5, btn6]
    
        view_ = MultiButton(user, buttons).view()
    
        await ctx.send(f"Sample Usage of Multi Buttons ...", view=view_)

    Preview:

    Sample-Combinations.gif


    Example for Paginator

    Generic badge

    It is used for help commands which sends the embeds like page-wise using buttons & Drop Menus

    from btns_menus.Paginator import *
    from datetime import datetime
    import discord
    
    
    # This function is for sample purposes, use discord.Embed instead [RECOMMENDED]
    def embed(context: str, color=0xffff00, timestamp: bool = False) -> discord.Embed:
        present_time = datetime.utcnow() if timestamp else None
        em = discord.Embed(description=context, color=discord.Color(color), timestamp=present_time)
        return em
    
    
    @client.command()
    async def help(ctx):
        user = ctx.author
    
        embeds = [embed("embed-1"), embed("embed-2"), embed("embed-3"),
                  embed("embed-4"), embed("embed-5"), embed("embed-6")]
        cmd_list = [
            SOption(name="moderation", embed_=embeds[1]),
            SOption(name="giveaways", embed_=embeds[2]),
            SOption(name="links", embed_=embeds[3])
        ]
    
        view_ = Paginator(user, embeds, commands_list=cmd_list).view()
        await ctx.send(embed=embeds[0], view=view_)

    Sample-Combinations.gif


    Project Links

    You can get support/help/guidance from below social-media links