A responsive package for Buttons, DropMenus, Combinations and Paginator
Project description
Package Name: pycord-btns-menus
A responsive package for Buttons, DropMenus, Combinations and Paginator
• This module makes the process a lot easier !
Key Features
• Buttons
• DropMenus
• Combinations (Usage of both Buttons & DropMenus)
• Paginator
Installation
Python 3.8 or higher is required !
# Linux/macOS
python3 -m pip install pycord-btns-menus
# Windows
# Method-1:
py -3 -m pip install pycord-btns-menus
# or
python -m pip install pycord-btns-menus
# Method-2:
pip install pycord-btns-menus
Note: Make sure to install py-cord package
Upgrading Package/ Module
# Linux/macOS
python3 -m pip install pycord-btns-menus --upgrade
# Windows
# Method-1:
py -3 -m pip install -U pycord-btns-menus
# or
python -m pip -U install pycord-btns-menus
# Method-2:
pip install -U pycord-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
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pycord_btns_menus-0.2.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 688e1de03e30857003570da253781e7ba5b2176704e262465e66686eb2f0114a |
|
MD5 | 2a197680c58593fdc4bcfd91fbc29d83 |
|
BLAKE2b-256 | 5d1a1760c2c4312332e09a640989eedc487ac7c7a1d11b928b5cc6acc13f005a |