Getting started
Let use this library!
Before getting started...
We suggest you be familiar with discord.py
and python
. This is a discord-components
guide so it couldn't contain a lot of python explanations.
Install
First, we need to install the library
If you meet an error No matching distribution found for discord-components
when installing, try updating the python version! (It must be upper than 3.6
)
Send buttons
Assuming you have invited your bot to some server, let's code. Create any python file and copy & paste the code below. (with replacing your token
with your bot's token and your prefix
with your bot's prefix)
You created a button! well done. Let's add a little clarification to the code.
ComponentsBot(...)
initializes the client. It changes the bot's methods. So you could create components by justawait ctx.send(..., components = [...])
.
Button(label = "WOW button!", custom_id = "button1")
this piece of code creates a button with the label "WOW button!" and sets the custom_id to "button1".
This code makes the bot send a message containing the button.
Responding to the interaction
But when you click that button, you will meet the error This interaction failed
. That's because you haven't responded to the interaction (button click)
. Let's edit the code.
We just added two lines and poof! An ephemeral message (a message which only can be seen by you).
This method is the same as <discord.ext.commands.Bot>.wait_for
. Except for the fact it returns Interaction
. This code waits until a user clicks the button with "button1" as a custom id. WOW!
This response to the interaction. It sends an ephemeral message with the content "Button clicked!". You could just send a normal message by setting the ephemeral parameter False
.
Send selects
Let's import some things and add a command!
If you run this and type !select
, you'll see a message with select! And if you select something, the bot will send an ephemeral message!
The code is easy to understand. You send a select with two options - one with label A and value a (the value that is passed when selected, it is like custom id on buttons) and one with label B and value b. And the select's place holder is set to Select something!
.
And you wait for the user to select an option. the wait_for
returns an Interaction
object. But the component
property is the list of options the user selected (If you didn't set the max_values
parameter when creating a select object, it contains 1 option).
You send an ephemeral message to the user telling the option the user selected.
Now code!
You learned how to create a button and responding to an interaction..! Have an error or a question? Look at the Frequently Asked questions or go to the discord server and ask a question!
Last updated