This lib adds components support for discord.py.
Please note this is beta yet.
Try adding:
@bot.event
async def on_socket_raw_receive(event):
bot.dispatch("socket_response", json.loads(event))
import os
from discord.ext import commands, components
bot = commands.Bot("c ")
bot.load_extension("discord.ext.components")
@bot.event
async def on_ready():
print('We have logged in as {0.user}'.format(bot))
@bot.command()
async def test(ctx, button_label, hidden: bool):
await components.send(ctx, "Click this", components=[components.Button(button_label, name="button1")])
cmp = await bot.wait_for("button_click", check=lambda c: c.name == "button1")
await cmp.send(f"You clicked {button_label}.", hidden=hidden)
bot.run(os.getenv("token"))
Represents button type.
Represents 1
.
Represents 2
.
Represents 3
.
Represents 4
.
Represents 5
.
This function is a coroutine. Send message with components.
components.send(channel: discord.abc.Messageable, content=None, *, tts=False, embed=None, file=None,
files=None, delete_after=None, nonce=None,
allowed_mentions=None, reference=None,
mention_author=None, components=[])
channnel
: Channel to send the message.
content
..mention_author
: Same as discord.abc.Messageable.send
.
components
: Components to attach to the message.
If you want to use multi row components, please specify 2D list.
This function is a coroutine.
An utility function for replying message.
Same as:
await send(target.channel, *args, reference=target.to_reference(), **kwargs)
Represents a button in component.
label
: Label for the button.
custom_id
|name
: Custom id for the button.
url
: URL for the button.
style
: Style for the button.
Pass values of Button Styles, or ButtonType
.
emoji
: Emoji for the button.
enabled
: Whether the button is enabled.
.disabled
: Same as not self.enabled
.
Fires when user clicked button.
Represents a button response.
Do not initialize this class directly.
id
: ID of the interaction.
application_id
: Application ID of the interaction.
guild
: Guild of the interaction.
channel
: Channel of the interaction.
message
: Message of the interaction.
member
: Member who pressed the button.
token
: Token of the interaction.
custom_id
|name
: Custom ID of the button.
This function is a coroutine.
Responds interaction.
ButtonResponse.send(
content=None, *,
embed=None,
embeds=[],
allowed_mentions=None,
tts=False,
hidden=False
)
content
...tts
: Same as discord.abc.Messageable.send
.
hidden
: Hide the message or not.
This function is a coroutine.
ACK an interaction with DeferredChannelMessageWithSource(5).
The user sees a loading state.
This function is a coroutine.
ACK an interaction with DeferredUpdateMessage(6).
The user doesn't see a loading state.