Handlers
Handlers processam interações e retornam respostas
Tipos de Handlers
discord-flow suporta 4 tipos de handlers:
command
Slash commands do Discord
button
Cliques em botões
modal
Submissões de modais
select
Seleções em dropdowns
Command Handler
typescript
1.on.command({ 2 name: 'ping', 3 description: 'Responde com pong' 4}, (ctx) => ({5 response: { content: 'Pong!' }6}));7 8// Com opções9.on.command({10 name: 'say',11 description: 'Repete uma mensagem',12 options: [13 { name: 'text', description: 'Texto para repetir', type: 3, required: true }14 ]15}, (ctx) => {16 const text = ctx.interaction.data?.options?.[0]?.value;17 return { response: { content: text } };18});Button Handler
typescript
1.on.button('btn-confirm', (ctx) => ({2 response: { content: 'Confirmado!' }3}));4 5// Com prefixo dinâmico6.on.button('delete-*', (ctx) => {7 const id = ctx.interaction.data?.custom_id?.split('-')[1];8 return { response: { content: `Deletando ${id}` } };9});Modal Handler
typescript
1.on.modal('feedback-modal', (ctx) => {2 const components = ctx.interaction.data?.components || [];3 const feedback = components[0]?.components?.[0]?.value;4 5 return {6 response: { content: `Feedback recebido: ${feedback}` }7 };8});Select Handler
typescript
1.on.select('role-select', (ctx) => {2 const values = ctx.interaction.data?.values || [];3 const selectedRole = values[0];4 5 return {6 response: { content: `Selecionou: ${selectedRole}` }7 };8});Retorno do Handler
typescript
1interface HandlerReturn {2 response?: {3 content?: string;4 embeds?: Embed[];5 components?: Component[];6 flags?: number;7 };8 transition?: string; // Próximo estado9 data?: unknown; // Dados para persistir10}