Skip to main content

A responsive package for Buttons, DropMenus, Combinations and Paginator

Project description

Package Name: discord-btns-menus

A responsive package for Buttons, DropMenus, Combinations and Paginator

• This module makes the process a lot easier !

forthebadge made-with-python

Generic badge GitHub license Windows Linux


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

REQUIRED DEPENDENCIES

You can use ANY ONE of the below Package

Note: Don't install more than one DEPENDENCY !


Upgrading Package/ Module

# Linux/macOS
  python3 -m pip install discord-btns-menus --upgrade

# Windows
  # Method-1:
    py -3 -m pip install -U discord-btns-menus
    # or
    python -m pip -U install discord-btns-menus
  # Method-2:
    pip install -U discord-btns-menus

How to import module ?

# For buttons:
from btns_menus.Buttons import SButton, SingleButton

# For DropMenus:
from btns_menus.DropMenus import SDropMenu, DuoDropMenu

# For Combinations:
from btns_menus.Combinations import MultiBtnAndDropMenu

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()

client = commands.Bot(command_prefix="&", intents=intents)


@client.event
async def on_ready():
    await client.change_presence(status=discord.Status.online, activity=discord.Game("&help - phoenix"))
    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_)
View Preview

Examples for DropMenus:

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

@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_)
View Preview

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

Example 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_)
View Preview

Example for MultiButton

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_)

View Preview


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
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_)

View Preview


Project Links

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


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

discord-btns-menus-0.2.2b0.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

discord_btns_menus-0.2.2b0-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file discord-btns-menus-0.2.2b0.tar.gz.

File metadata

  • Download URL: discord-btns-menus-0.2.2b0.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1

File hashes

Hashes for discord-btns-menus-0.2.2b0.tar.gz
Algorithm Hash digest
SHA256 9f84039a4d352d5e7d6bcdac0dbe55d6d320c1c8192458473e9ec94a94dd3156
MD5 5003cddb8dd2ec3b5710b46806882df7
BLAKE2b-256 51853452ac40fab12190f4bac10cb90845ba7f0498b296f9bb0489530213164e

See more details on using hashes here.

Provenance

File details

Details for the file discord_btns_menus-0.2.2b0-py3-none-any.whl.

File metadata

  • Download URL: discord_btns_menus-0.2.2b0-py3-none-any.whl
  • Upload date:
  • Size: 17.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1

File hashes

Hashes for discord_btns_menus-0.2.2b0-py3-none-any.whl
Algorithm Hash digest
SHA256 ed85968e3928928c024b2abf1f73e30e9d06e002b64f4fb09eeb273d5ff39aa4
MD5 e84d8e8e76ce7f5fad4aac97f2337323
BLAKE2b-256 8b313528386e3758a37d09d2eba77fcfc19688694b1d904c67a34a72a57961d7

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page