SlashService
Esse serviço cuida de tudo relacionado a Slash Commands (/) — utilitários e funções pra gerenciar comandos de barra.
Com ele, você extrai arquivos de módulo que exportam comandos no padrão do Discord.js, e também consegue extrair e converter módulos usando o modelo Disfox.

Importação
import { SlashService } from 'disfox';
Estrutura básica de um comando
Exemplo usando o padrão padrão do Discord.js em arquivo único:
import { SlashCommandBuilder } from 'discord.js';
export default {
data: new SlashCommandBuilder()
.setName("ping")
.setDescription("Responde com pong"),
async execute(interaction) {
await interaction.reply("Pong!");
}
};
Extração de comandos
Você pode extrair comandos de duas formas:
- Arquivo único
- Diretório
Extraindo um arquivo único
import { SlashService } from 'disfox';
const command = SlashService.extractFile("./command.js");
Retorna um array nesse formato:
[
{
data: SlashCommandBuilder {
options: [],
name: 'ping',
name_localizations: undefined,
description: 'Responde com pong',
description_localizations: undefined,
contexts: undefined,
default_permission: undefined,
default_member_permissions: undefined,
dm_permission: undefined,
integration_types: undefined,
nsfw: undefined
},
execute: [AsyncFunction: execute]
}
]
Obs.: Essa função funciona com os dois modelos.
Extraindo um diretório
import { SlashService } from 'disfox';
const commands = SlashService.extractDir("./commands");
Retorna:
{
valid: [
{
data: SlashCommandBuilder {
options: [],
name: 'ping',
name_localizations: undefined,
description: 'Responde com pong',
description_localizations: undefined,
contexts: undefined,
default_permission: undefined,
default_member_permissions: undefined,
dm_permission: undefined,
integration_types: undefined,
nsfw: undefined
},
execute: [AsyncFunction: execute]
}
],
invalid: []
}
- Módulos com estrutura inválida vão pro array
invalid. - Módulos válidos vão pro array
valid.
Regras de validação
Cada módulo precisa ter:
dataexecute
import { SlashCommandBuilder } from "discord.js";
export default {
data: new SlashCommandBuilder()
.setName('ping')
.setDescription("Responde com Pong!"),
async execute(interaction) {
await interaction.reply("Pong!");
}
};
Modelo Disfox (DFX)
A partir da versão v0.0.7, o Disfox traz uma forma própria de criar comandos de barra.
Criando um comando com o modelo DFX
import { SlashService } from "disfox";
const command = new SlashService.Command("ping1")
.description("responde")
.action(interaction => {
interaction.reply("Pong!");
});
export default command;
- O nome do comando (passado no construtor) não pode ter espaços, letras maiúsculas ou caracteres especiais, exceto
-e_.
Usando tags
As tags definem certos comportamentos no uso ou na visibilidade do comando, dentro do Discord.
import { SlashOptions, SlashService, SlashTag } from "disfox";
const command = new SlashService.Command("ping1")
.description("responde")
.mark(SlashTag.AdminOnly)
.action(interaction => {
interaction.reply("Pong!");
});
export default command;
@[ "AdminOnly": Enum: `SlashTag.AdminOnly`, "NSFW": Enum: `SlashTag.NSFW` ]
Registrando e ouvindo comandos
Os dois modelos passam pelo conversor interno dfx2djs, então o processo é o mesmo nos dois casos.
Registro global
import { SlashService } from 'disfox';
import { Events } from 'discord.js';
app.client.on(Events.ClientReady, async () => {
const commands = (await SlashService.extractDir("./commands")).valid;
await app.slash.deployGlobal(commands);
});
- Recebe um array de comandos extraídos.
- Registra os comandos globalmente.
Registro por servidor (guild)
import { SlashService } from 'disfox';
import { Events } from 'discord.js';
app.client.on(Events.ClientReady, async () => {
const commands = (await SlashService.extractDir("./commands")).valid;
await app.slash.deployGuilds(commands, ['1234', '12345']);
});
- O segundo parâmetro é um array de IDs de servidor.
- Os comandos são registrados apenas nesses servidores.
Ouvindo comandos
Uso simples
import { SlashService } from 'disfox';
import { Events } from 'discord.js';
app.client.on(Events.ClientReady, async () => {
const commands = (await SlashService.extractDir("./commands")).valid;
await app.slash.deployGlobal(commands);
app.slash.listen();
});
Com mensagem de erro personalizada
app.slash.listen({
onError: {
message: "Ocorreu um erro, tente novamente!",
flags: 64
}
});
Com callback customizado
app.slash.listen({
onError: {
callback: (interaction, error) => {
console.error("Erro ao executar o comando:", error);
interaction.reply("Ocorreu um erro, tente novamente!");
}
}
});
Adicionando Tabelas
import { SlashOptions, SlashService, SlashTag, BehaviorTable } from "disfox";
const table = new BehaviorTable({})
const command = new SlashService.Command("ping1")
.description("responde")
.dock(table)
.action(interaction => {
interaction.reply("Pong!");
});
export default command;
Com isso, sua aplicação já está pronta pra registrar, ouvir e executar slash commands sem dor de cabeça.
Last updated: June 18, 2026