User, Role, Mentionable y Channel Select
type: 5 · 6 · 7 · 8
Mensajes
Modales
Vista previa payload.json
Role Select con un rol ya elegido
Estos menús no necesitan opciones: Discord rellena la lista automáticamente con los datos del servidor.
| Tipo | Nombre | Muestra |
|---|---|---|
5 |
User Select | Usuarios |
6 |
Role Select | Roles |
7 |
Mentionable Select | Usuarios y roles |
8 |
Channel Select | Canales (puedes filtrar por tipo) |
{ "flags": 32768, "components": [ { "type": 17, "components": [ { "type": 10, "content": "### ⚙️ Configuración del servidor" }, { "type": 10, "content": "**Canal de bienvenida**" }, { "type": 1, "components": [ { "type": 8, "custom_id": "canal_bienvenida", "placeholder": "Elige un canal de texto", "channel_types": [ 0 ] } ] }, { "type": 10, "content": "**Roles de moderador**" }, { "type": 1, "components": [ { "type": 6, "custom_id": "roles_mod", "placeholder": "Elige roles", "max_values": 5 } ] }, { "type": 10, "content": "**Usuarios VIP**" }, { "type": 1, "components": [ { "type": 5, "custom_id": "vips", "max_values": 10 } ] } ] } ]}| Campo | Tipo | Descripción |
|---|---|---|
type |
entero | obligatorio 5, 6, 7 u 8. |
id |
entero | opcional Identificador único. |
custom_id |
string | obligatorio 1-100 caracteres. |
placeholder |
string | opcional Máx. 150 caracteres. |
default_values |
array de valores por defecto | opcional Elementos ya elegidos al principio. Su número debe estar entre min_values y max_values. |
min_values |
entero | opcional 0-25. Por defecto 1. |
max_values |
entero | opcional Máx. 25. Por defecto 1. |
channel_types |
array de enteros | opcional Solo Channel Select. Tipos de canal permitidos. |
required |
booleano | opcional Solo modales. Por defecto true. |
disabled |
booleano | opcional Solo mensajes. Por defecto false. |
Valores por defecto
Sección titulada «Valores por defecto»| Campo | Tipo | Descripción |
|---|---|---|
id |
snowflake | ID del usuario, rol o canal. |
type |
string | "user", "role" o "channel". |
{ "type": 6, "custom_id": "rol_notificaciones", "default_values": [{ "id": "123456789012345678", "type": "role" }]}Tipos de canal más usados
Sección titulada «Tipos de canal más usados»| Valor | Tipo |
|---|---|
0 |
Canal de texto |
2 |
Canal de voz |
4 |
Categoría |
5 |
Canal de anuncios |
13 |
Escenario |
15 |
Foro |
Qué recibe tu bot
Sección titulada «Qué recibe tu bot»En data.values llegan los IDs elegidos, y en data.resolved los datos completos:
{ "custom_id": "roles_mod", "component_type": 6, "values": ["123456789012345678"], "resolved": { "roles": { "123456789012345678": { "id": "123456789012345678", "name": "Moderador", "color": 5793266 } } }}Usa el JSON de arriba como cuerpo del mensaje.
import { ActionRowBuilder, ChannelSelectMenuBuilder, RoleSelectMenuBuilder, UserSelectMenuBuilder, ChannelType,} from 'discord.js';
const channelRow = new ActionRowBuilder().addComponents( new ChannelSelectMenuBuilder() .setCustomId('canal_bienvenida') .setPlaceholder('Elige un canal de texto') .setChannelTypes(ChannelType.GuildText),);
const roleRow = new ActionRowBuilder().addComponents( new RoleSelectMenuBuilder().setCustomId('roles_mod').setPlaceholder('Elige roles').setMaxValues(5),);
const userRow = new ActionRowBuilder().addComponents( new UserSelectMenuBuilder().setCustomId('vips').setMaxValues(10),);
// Leer la elecciónclient.on('interactionCreate', async (interaction) => { if (interaction.isRoleSelectMenu() && interaction.customId === 'roles_mod') { const roles = interaction.roles; // Collection de roles elegidos }});channel_select = discord.ui.ChannelSelect( custom_id="canal_bienvenida", placeholder="Elige un canal de texto", channel_types=[discord.ChannelType.text],)role_select = discord.ui.RoleSelect(custom_id="roles_mod", placeholder="Elige roles", max_values=5)user_select = discord.ui.UserSelect(custom_id="vips", max_values=10)
async def on_roles(interaction: discord.Interaction): nombres = ", ".join(role.name for role in role_select.values) await interaction.response.send_message(f"Roles: {nombres}", ephemeral=True)
role_select.callback = on_rolesmaxRoles := 5channelRow := discordgo.ActionsRow{Components: []discordgo.MessageComponent{ discordgo.SelectMenu{ MenuType: discordgo.ChannelSelectMenu, CustomID: "canal_bienvenida", Placeholder: "Elige un canal de texto", ChannelTypes: []discordgo.ChannelType{discordgo.ChannelTypeGuildText}, },}}
roleRow := discordgo.ActionsRow{Components: []discordgo.MessageComponent{ discordgo.SelectMenu{ MenuType: discordgo.RoleSelectMenu, CustomID: "roles_mod", Placeholder: "Elige roles", MaxValues: maxRoles, DefaultValues: []discordgo.SelectMenuDefaultValue{ {ID: "123456789012345678", Type: discordgo.SelectMenuDefaultValueRole}, }, },}}