States
Estados representam diferentes etapas do seu flow
O que é um State?
Um State é uma etapa dentro de um Flow. Cada estado pode ter handlers para diferentes tipos de interação (comandos, botões, modais, selects).
Definindo Estados
typescript
1flow.state('nome-do-estado')2 .on.command({ name: 'cmd' }, handler)3 .on.button('btn-id', handler)4 .on.modal('modal-id', handler)5 .on.select('select-id', handler);Estado Inicial
Todo flow precisa de um estado inicial definido com flow.start():
typescript
1registry.define('meu-flow', (flow) => {2 flow.start('idle'); // Define 'idle' como estado inicial3 4 flow.state('idle')5 .on.command({ name: 'iniciar' }, () => ({6 response: { content: 'Iniciando...' },7 transition: 'step-1'8 }));9 10 flow.state('step-1')11 .on.button('next', () => ({12 response: { content: 'Próximo passo!' },13 transition: 'step-2'14 }));15});Transições
Para mudar de estado, retorne transition no handler:
typescript
1// Transição para outro estado2.on.button('confirm', () => ({3 response: { content: 'Confirmado!' },4 transition: 'completed' // Muda para estado 'completed'5}));6 7// Sem transição(mantém estado atual)8.on.button('info', () => ({9 response: { content: 'Informação...' }10 // Sem transition = mantém no estado atual11}));Contexto do Estado
Handlers recebem um contexto com informações da interação:
typescript
1interface HandlerContext {2 interaction: DiscordInteraction;3 user: { id: string; username: string };4 guild?: { id: string };5 channel: { id: string };6 data?: unknown; // Dados persistidos7}8 9.on.command({ name: 'info' }, (ctx) => {10 const userId = ctx.user.id;11 const guildId = ctx.guild?.id;12 13 return {14 response: { content: `User: ${userId}` }15 };16});