Pular para o conteúdo principal

Discord

A integração com o Discord conecta seu servidor do Discord ao Almirant para executar comandos de agentes, receber notificações de eventos do projeto e controlar sessões de trabalho diretamente pelo chat.

Como funciona

O Almirant se integra ao Discord por meio de um bot que usa OAuth2 para se conectar ao seu servidor. O bot pode:

  • Executar slash commands -- Comandos como /implement e /plan para iniciar trabalhos de agente pelo Discord.
  • Enviar notificações -- O Almirant notifica pelo Discord sobre eventos relevantes (work items, sprints, PRs, CI/CD).
  • Controlar sessões -- Botões interativos para interromper, pausar ou responder a perguntas dos agentes.
  • Criar threads automáticas -- Cada trabalho de agente cria uma thread dedicada para acompanhar o progresso.

Configurar a integração com o Discord

1. Conectar via OAuth

Ao contrário de outros bots, o Discord usa OAuth2 para uma conexão segura:

  1. Acesse Configurações > Integrações > Discord.
  2. Clique em Conectar Discord.
  3. O Discord solicitará que você selecione um servidor no qual tenha permissões de administrador.
  4. Autorize as permissões solicitadas (enviar mensagens, criar threads, usar slash commands).
  5. O Almirant registrará automaticamente os slash commands no seu servidor.

2. Configurar o canal padrão

Após conectar:

  1. Acesse Configurações > Integrações > Discord.
  2. Selecione o canal padrão para o qual o bot enviará notificações.
  3. Salve as configurações.

3. Verificar a conexão

  1. Nas configurações do Discord, clique em Enviar mensagem de teste.
  2. Verifique se a mensagem aparece no canal selecionado.

Slash commands

O bot do Discord oferece slash commands para interagir com o Almirant:

ComandoDescrição
/implement [work_item_id]Inicia um trabalho de implementação para o work item especificado
/plan [work_item_id]Inicia um trabalho de planejamento para o work item especificado
/statusMostra os trabalhos ativos (queued, running, waiting_for_input)
/status [job_id]Mostra o status detalhado de um trabalho específico

Opções dos comandos

Os comandos /implement e /plan aceitam opções adicionais:

OpçãoDescrição
work_item_id(Obrigatório) O ID do work item (ex.: A-123)
provider(Opcional) O provedor de agente: claude-code, codex ou zipu

Exemplo de uso

/implement work_item_id:A-1189
/implement work_item_id:A-1189 provider:claude-code
/plan work_item_id:A-1190
/status job_id:abc123-def456

Threads automáticas

Quando você executa um slash command, o bot cria automaticamente uma thread privada para esse trabalho:

  • O nome da thread indica o tipo de trabalho e o ID da tarefa.
  • Todas as mensagens de progresso do agente vão para a thread.
  • Os botões de controle (Stop, Shutdown) aparecem na thread.
  • A thread é arquivada automaticamente após 24 horas de inatividade.

Botões interativos

Durante a execução de um trabalho, o bot mostra botões para controlar a sessão:

BotãoAção
StopInterrompe o trabalho atual, mas mantém o estado
ShutdownInterrompe completamente e encerra a sessão

Quando o agente tem uma pergunta, as opções aparecem como botões ou em um menu de seleção. Selecione a opção desejada para responder.

Notificações

Configure quais eventos do projeto você deseja receber como notificações no Discord:

EventoDescrição
Work item criadoUm novo work item é criado
Work item movidoUm work item muda de coluna no board
Work item atribuídoUm work item é atribuído a alguém
Work item concluídoUm work item é marcado como done
Sprint iniciado/encerradoUm sprint começa ou termina
Milestone concluídoUm milestone é concluído
PR aberto/mergedUm pull request é aberto ou recebe merge
CI com falhaUma build de CI falha
Trabalho de agente concluído/com falhaUm trabalho de agente termina

Para configurar as notificações:

  1. Acesse Configurações > Integrações > Discord.
  2. Clique em Configurar notificações.
  3. Ative ou desative os eventos desejados.
  4. Salve as alterações.

Vincular projetos a canais

Você pode configurar canais específicos para projetos diferentes:

  1. Acesse as configurações do projeto.
  2. Na seção Discord, selecione o canal de destino.
  3. As notificações e threads desse projeto irão para o canal configurado.

Se não houver um canal específico, será usado o canal padrão da organização.

Desconectar o Discord

Para desconectar o bot:

  1. Acesse Configurações > Integrações > Discord.
  2. Clique em Desconectar.
  3. Confirme a desconexão.
aviso

Desconectar o bot interromperá os slash commands e as notificações pelo Discord. Os trabalhos em andamento não serão cancelados automaticamente.

Para desenvolvedores

Arquitetura da integração

A integração com o Discord é composta por duas rotas principais:

  • OAuth routes (/api/integrations/discord): Gerencia o fluxo OAuth2, conexões, canais e preferências de notificação.
  • Interactions webhook (/webhooks/discord/interactions): Recebe e processa slash commands, botões e menus de seleção.

Fluxo de OAuth

Usuario --> GET /authorize --> Discord OAuth --> GET /callback
|
+------------ Token exchange
|
Create connection + Register slash commands

Fluxo de interações

Discord --> POST /webhooks/discord/interactions --> Verify signature
|
+--------------------------+
| | |
PING Command Component
| | |
PONG Queue job Process action

Slash commands registrados

Os comandos são registrados automaticamente na guild durante o OAuth:

  • implement: Inicia um trabalho de implementação
  • plan: Inicia um trabalho de planejamento
  • status: Consulta o status dos trabalhos

Verificação de assinatura

Todas as interações são verificadas com Ed25519 e a chave pública do Discord (DISCORD_PUBLIC_KEY). Isso garante que os requests vêm do Discord.

Variáveis de ambiente

VariávelDescrição
DISCORD_CLIENT_IDID da aplicação do Discord
DISCORD_CLIENT_SECRETSecret da aplicação
DISCORD_PUBLIC_KEYChave pública para verificar assinaturas
DISCORD_BOT_TOKENToken do bot para enviar mensagens
DISCORD_APPLICATION_IDID da aplicação (para slash commands)
DISCORD_OAUTH_REDIRECT_URIURI de callback do OAuth