Button
type: 2
Mensajes
Vista previa payload.json
El Button es un botón que el usuario puede pulsar. Va dentro de una Action Row o como accessory de una Section.
Los 6 estilos
Sección titulada «Los 6 estilos»{ "flags": 32768, "components": [ { "type": 1, "components": [ { "type": 2, "style": 1, "label": "Primary", "custom_id": "b1" }, { "type": 2, "style": 2, "label": "Secondary", "custom_id": "b2" }, { "type": 2, "style": 3, "label": "Success", "custom_id": "b3" }, { "type": 2, "style": 4, "label": "Danger", "custom_id": "b4" }, { "type": 2, "style": 5, "label": "Link", "url": "https://discord.com" } ] }, { "type": 1, "components": [ { "type": 2, "style": 6, "sku_id": "1234567890123456789" }, { "type": 2, "style": 2, "label": "Desactivado", "custom_id": "b6", "disabled": true }, { "type": 2, "style": 2, "label": "Con emoji", "custom_id": "b7", "emoji": { "name": "🎉" } } ] } ]}| Estilo | Valor | Necesita | Uso recomendado |
|---|---|---|---|
| Primary | 1 |
custom_id |
La acción principal. Solo una por grupo. |
| Secondary | 2 |
custom_id |
Acciones secundarias o del mismo peso. |
| Success | 3 |
custom_id |
Acciones positivas (confirmar, aceptar). |
| Danger | 4 |
custom_id |
Acciones peligrosas o irreversibles (borrar, expulsar). |
| Link | 5 |
url |
Abre una web. No envía interacción a tu bot. |
| Premium | 6 |
sku_id |
Compra de un producto de tu app. No envía interacción. |
| Campo | Tipo | Descripción |
|---|---|---|
type |
entero | obligatorio Siempre 2. |
id |
entero | opcional Identificador único. |
style |
entero | obligatorio Estilo del botón (tabla de arriba). |
label |
string | opcional Texto del botón. Máx. 80 caracteres. |
emoji |
emoji parcial | opcional { "name": "🎉" } o { "name": "nombre", "id": "123" }. |
custom_id |
string | Lo que recibe tu bot al pulsarlo. 1-100 caracteres. obligatorio en estilos 1-4, prohibido en 5 y 6. |
url |
string | URL a abrir. Máx. 512 caracteres. obligatorio en Link (5). |
sku_id |
snowflake | ID del producto. obligatorio en Premium (6). |
disabled |
booleano | opcional Desactivar el botón. Por defecto false. |
{ "type": 1, "components": [ { "type": 2, "style": 1, "label": "Confirmar", "custom_id": "confirmar", "emoji": { "name": "✅" } }, { "type": 2, "style": 5, "label": "Web", "url": "https://discord.com" }, { "type": 2, "style": 6, "sku_id": "1234567890123456789" } ]}import { ActionRowBuilder, ButtonBuilder, ButtonStyle } from 'discord.js';
const row = new ActionRowBuilder().addComponents( new ButtonBuilder().setCustomId('confirmar').setLabel('Confirmar').setEmoji('✅').setStyle(ButtonStyle.Primary), new ButtonBuilder().setLabel('Web').setURL('https://discord.com').setStyle(ButtonStyle.Link), new ButtonBuilder().setSKUId('1234567890123456789').setStyle(ButtonStyle.Premium),);confirm = discord.ui.Button(label="Confirmar", emoji="✅", style=discord.ButtonStyle.primary, custom_id="confirmar")web = discord.ui.Button(label="Web", url="https://discord.com") # el estilo Link se pone solopremium = discord.ui.Button(sku_id=1234567890123456789) # el estilo Premium se pone solo
async def on_confirm(interaction: discord.Interaction): await interaction.response.send_message("¡Confirmado!", ephemeral=True)
confirm.callback = on_confirm
row = discord.ui.ActionRow(confirm, web, premium)row := discordgo.ActionsRow{Components: []discordgo.MessageComponent{ discordgo.Button{Label: "Confirmar", Style: discordgo.PrimaryButton, CustomID: "confirmar", Emoji: &discordgo.ComponentEmoji{Name: "✅"}}, discordgo.Button{Label: "Web", Style: discordgo.LinkButton, URL: "https://discord.com"}, discordgo.Button{Style: discordgo.PremiumButton, SKUID: "1234567890123456789"},}}Cuando alguien lo pulsa
Sección titulada «Cuando alguien lo pulsa»Tu bot recibe una interacción con data.custom_id y data.component_type = 2. Aprende a responder en Interacciones.
Consejos
Sección titulada «Consejos»- El
custom_iddebe ser único dentro del mensaje. - Usa
disabled: truepara mostrar un botón que todavía no se puede usar (por ejemplo, “Siguiente” en la última página). - Los emojis personalizados necesitan
idyname:{ "name": "pepe", "id": "123456789012345678" }.