
Security News
Node.js Moves Toward Stable TypeScript Support with Amaro 1.0
Amaro 1.0 lays the groundwork for stable TypeScript support in Node.js, bringing official .ts loading closer to reality.
A responsive package for Buttons, DropMenus, Combinations and Paginator
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
You can use ANY ONE of the below Package
For disnake you should Refactor all discord terms to disnake terms to make Package work
Note: Don't install more than one DEPENDENCY !
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')
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_)
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_)
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_)
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_)
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_)
You can get support/help/guidance from below social-media links
FAQs
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Amaro 1.0 lays the groundwork for stable TypeScript support in Node.js, bringing official .ts loading closer to reality.
Research
A deceptive PyPI package posing as an Instagram growth tool collects user credentials and sends them to third-party bot services.
Product
Socket now supports pylock.toml, enabling secure, reproducible Python builds with advanced scanning and full alignment with PEP 751's new standard.