Commandos de barra
Como criar comandos de barra do discord
Criando comandos de barra
É possível definir algumas opções para os comandos na função setupCreators
!
Antes de tudo, importe a função createCommand
da base e ApplicationCommandType
do discord.js
import { createCommand } from "#base"
import { ApplicationCommandType } from "discord.js";
Veja convenções para criar seus comandos
Para criar um comando de barra, você tem que definir o nome
, a descrição
e o tipo
createCommand({
name: "ping",
description: "Responde com pong",
type: ApplicationCommandType.ChatInput,
async run(interaction) {
await interaction.reply({
flags: ["Ephemeral"],
content: "Pong"
});
},
});
Nomes de comandos de barra (/
) e de opções de comandos não podem ser strings vazias, não podem conter caractéres especiais, letras maiúsculas ou espaços
Definindo opções de comando
Você pode definir opções
, sub comandos
e grupos
também.
import { createCommand } from "#base";
import { ApplicationCommandOptionType, ApplicationCommandType } from "discord.js";
createCommand({
name: "gerenciar",
description: "Comando de gerenciar",
type: ApplicationCommandType.ChatInput,
options: [
{
name: "usuários",
description: "Gerenciar usuários",
type: ApplicationCommandOptionType.Subcommand
options: [
{
name: "usuário",
description: "Selecione o usuário",
type: ApplicationCommandOptionType.User
required
}
],
}
],
async run(interaction) {
const { options } = interaction;
switch(options.getSubcommand(true)){
case "usuários":{
const user = options.getUser("usuário", true);
await interaction.reply({
flags: ["Ephemeral"],
content: `${user} managed`
})
return;
}
}
},
});
Global
A opção global
nos comandos é útil quando você quer que o comando seja registrado na aplicação ao invés da guilda. Só é necessário quando IDs de guildas são definidos na função setupCreators
O código abaixo faz com que os comandos sejam registrados apenas nas guildas válidas listadas no array:
import { setupCreators } from "#base";
import { env } from "#env";
export const { createCommand, createEvent, createResponder } = setupCreators({
commands: {
guilds: [
env.MAIN_GUILD_ID,
env.DEV_GUILD_ID,
env.TEST_GUILD_ID,
]
}
});
Agora veja este código onde alguns comandos são criados:
createCommand({
name: "configurações",
description: "Comando de configurações do servidor",
async run(interaction){
// ...
}
});
createCommand({
name: "gerenciar",
description: "Comando para gerenciar membros, canais e cargos",
async run(interaction){
// ...
}
});
createCommand({
name: "informações",
description: "Exibe informações do bot",
global: true,
async run(interaction){
// ...
}
});
Os comandos configurações
e gerenciar
serão registrados nas guildas definidas na função setupCreators
, mas o comando informações
será registrado globalmente na aplicação, assim estando disponível em qualquer guilda.