Skip to content

Creating Buttons

Button files contain a button handler. They aren’t responsible for adding buttons to messages but are a way of running code when the buttons you made are pressed.

import { button } from 'jellycommands';
export default button({
id: 'test',
run: () => {
// Do something with button click
},
});

You can view a list of all the button options here

:::tip TIP If you are unsure how to add buttons to messages, checkout the Discord.js Guide :::

Button id

The id field on the button is important, it can be a string, regexp, or a function. The id field corresponds to the customId feild you set when you create a button.

Simple ids

The simplest form is a plain string, for example you could have an id of hello. This might be a button that does the same thing each time.

import { button } from 'jellycommands';
export default button({
id: 'hello',
run: async ({ interaction }) => {
await interaction.reply({
content: 'Hello there!',
});
},
});

Regex & Function ids

If the id is not the same each time. As an example, say you have a button that should respond with a fruit name. Your id might look like fruit_[FRUIT NAME], we can impliment this with regex or a function. The function should always return true or false

import { button } from 'jellycommands';
export default button({
// a regex id
id: /fruit_([\w])+/,
// a function id
id: (id) => {
return id.startsWith('fruit_');
},
run: async ({ interaction }) => {
const fruit = interaction.customId.replace('fruit_', '');
await interaction.reply({
content: `Your fruit is ${fruit}`,
});
},
});

Button run handler

When an event is invoked, the event’s run function is called. This is where your custom event logic lives.

When a button is clicked, the run function is called. This is where your custom logic for the button lives.

You are provided with context, which allows you to get things such as the interaction.

Context

The context object has the following properties:

interaction ButtonInteraction

The button interaction from discord.js

client JellyCommands

The client used by the command.

props Props

Your project’s props.