Pular para o conteúdo principal

Comandos

Comandos são a principal forma de interação com o bot.


🚀 Como funciona

  • ⚡ O Nexo carrega automaticamente os comandos ao iniciar o bot.
  • 📄 O diretório de comandos é definido por você em paths.commands no Bootstrap.init.
  • 📦 Cada arquivo deve exportar um default.
  • 🗂️ O primeiro nível de subpastas é tratado como categoria.

🧪 Exemplo curto

const { createCommand, CommandType } = require('nexocord');

module.exports = createCommand({
name: 'ping',
description: 'Responde com pong!',
type: CommandType.ChatInput,
async run(interaction) {
await interaction.reply({ content: 'Pong! 🏓' });
},
});

📋 Campos do comando

CampoTipoObrigatórioDescrição
namestringSimNome único do comando
descriptionstringSimTexto mostrado no Discord
typeCommandTypeSimTipo de comando
runfunctionSimFunção executada
optionsarrayNãoParâmetros do comando
cooldownnumberNãoTempo entre usos
autocompletefunctionNãoSugestões em tempo real
defaultMemberPermissionPermissionResolvableNãoPermissão exigida do usuário
botpermissionPermissionFlagsBits keyNãoPermissão exigida do bot
allowIdsstring[]NãoIDs permitidos
dmPermissionbooleanNãoPermite uso em DM
nsfwbooleanNãoRestringe a canal NSFW

🎯 Tipos de comandos

O Nexo suporta diferentes formas de interação:

type: CommandType.ChatInput

Comandos tradicionais com /.

Na prática

O tipo mais usado é ChatInput.

🔐 Permissões e controle

Use esses campos para restringir uso:

  • defaultMemberPermission: permissão do usuário
  • botpermission: permissão do bot
  • allowIds: libera só para IDs de usuários específicos
  • dmPermission: bloqueia/libera em DM
  • nsfw: exige canal NSFW
Importante

Sempre valide permissões em comandos administrativos.

🤖 Parâmetros (options) e Autocomplete

Options

Define parâmetros do comando.

options: [
{
type: ApplicationCommandOptionType.String,
name: 'message',
description: 'Mensagem',
required: true,
}
]

Autocomplete

Responde sugestões em tempo real:

autocomplete: async (interaction, focused) => {
const choices = ['Opção 1', 'Opção 2'];

await interaction.respond(
choices.map(c => ({ name: c, value: c }))
);
}

🔄 Subcomandos

Subcomandos são automáticos quando você cria uma pasta dentro da categoria.

📁 Estrutura

src/
commands/
admin/
user/
ban.ts
kick.ts
mute.ts

🎯 Resultado

/user ban
/user kick
/user mute
dica

Cada arquivo dentro da pasta vira um subcomando.