Better components for discord-py-interactions
Project description
better-interactions
Better interactions for discord-py-interactions
Installation:
pip install -U better-interactions
What is this library?
This is better-interactions
, a library for discord-py-interactions
which modifies component callbacks, and adds useful helper functions.
What does this have?
Listed below are all the features this library currently has:
- Component callbacks are modified so you can enable checking if the
custom_id
of the component starts with the one provided in the decorator ActionRow
function which enables usage ofActionRow(...)
spread_to_rows
function which allows components to be spread to multipleActionRow
s
New component callback
The new component callbacks are modified so you can enable checking if the custom_id
of the component starts with the one provided in the decorator.
How to use:
In your bot, you must use this line:
from interactions.ext.better_interactions import setup
...
bot = interactions.Client(...)
setup(bot)
Then, you can use the decorator!
If you want to use interactions-wait-for
with this extension, you must add its respective keyword arguments into the setup function as well.
Below is an example of a component callback.
@bot.component("test", startswith=True)
async def startswith_custom_id(ctx):
await ctx.send(ctx.data.custom_id)
The startswith=True
keyword argument is optional, and if it is not provided, it will default to False
and will be used like the normal component callbacks.
If you want to check if the custom_id
of the component starts with the one provided in the decorator, you can use the startswith=True
keyword argument.
By setting startswith=True
, the component callback now fires when the custom_id
of the component starts with the one provided in the decorator.
For example, if you have a component with a custom_id
of "test"
, and you set startswith=True
, the component callback will fire when the custom_id
of the component starts with "test"
.
Let's say a button with custom_id
of "test1"
is clicked. Since it starts with "test"
, the component callback will fire.
However, if something like "tes"
is clicked, the component callback will not fire.
To sum it up, the component callback will fire when the custom_id
of the component starts with the one provided in the decorator.
Why should I use this?
This is useful if you want to check if the custom_id
of the component starts with the one provided in the decorator. In discord-py-interactions
, the component callbacks are only fired when they are the exact same custom_id
as the one provided in the decorator. This is not that useful, since you waste a lot of data you could have stored in the component custom IDs. The callbacks provided from interactions-better-components
fix the aforementioned issue.
ActionRow function
The ActionRow
function enables usage of ActionRow(...)
instead of ActionRow(components=[...])
.
How to use:
Below is an example of ActionRow
usage:
@bot.command(
name="test", description="Test command",
)
async def test(ctx):
await ctx.send("test", components=[
ActionRow(select1),
ActionRow(button1, button2, button3),
]
)
Why should I use this?
This is only for aesthetics, making the code look cleaner. Using ActionRow(...)
is the same as using ActionRow(components=[...])
, however, it is more readable.
spread_to_rows function
The spread_to_rows
function allows components to be spread to multiple ActionRow
s with an optional max_in_row
argument.
How to use:
You use the function like this: spread_to_rows(*components, max_in_row=3)
.
max_in_row=5
by default.
Separate components by None
to explicitly start a new row.
Below is an example of spread_to_rows
usage that spreads components to 2 ActionRow
s with 5 components each:
@bot.command(
name="test", description="Test command",
)
async def test(ctx):
await ctx.send("test", components=spread_to_rows(
button1, button2, button3, button4, button5, button6, button7, button8, button9, button10,
)
)
subcommand
The subcommand
function is a decorator that allows you to create a subcommand easily.
How to use:
Here's 3 examples of subcommand usage:
from interactions.ext.better_interactions import setup
...
setup(bot)
...
# subcommand with 3 terms: `/base subcommand_group subcommand`
@bot.subcommand(
base="base",
subcommand_group="subcommand_group",
name="subcommand",
description="subcommand description",
)
async def subcommand_with_group(ctx, subcommand_group, subcommand): # last 2 arguments are required to avoid any errors, must have same name as the ones in the decorator
await ctx.send("subcommand with group")
# subcommand with 2 terms: `/base subcommand`
@bot.subcommand(
base="base",
name="subcommand",
description="subcommand description",
)
async def just_subcommand(ctx, subcommand): # last argument is required to avoid any errors, must have same name as the one in the decorator
await ctx.send("just subcommand")
# subcommand with options:
@bot.subcommand(
base="base",
subcommand_group="subcommand_group",
name="subcommand",
description="subcommand description",
options=[
Option(
name="option",
description="option description",
),
]
)
async def subcommand_with_options(ctx, option, *, subcommand_group, subcommand): # last 2 arguments are required to avoid any errors, must have same name as the ones in the decorator, '*' also required
await ctx.send("subcommand with options")
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 better-interactions-1.3.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ac153652919c71bb9ae3f673a294e72224cc41ce2ac82a2c65210b881808d04 |
|
MD5 | 8e74f2c65d29f734cb6e50c8f25fb5cd |
|
BLAKE2b-256 | 801852f884bd061d1fe40434f73b39e399b07c08c63683ba5ea1c6aa55129021 |
Hashes for better_interactions-1.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 45ebdcc13d0137dba727c8cc0c8b0186d84073ec0c5ada41831ecee6c847c2b4 |
|
MD5 | 9802ff64b5b33b519b98551a0f0c1022 |
|
BLAKE2b-256 | eca61c1c0178b592f1ab7f8d4ac71632b68d46f9565512db6525d420216efffe |