Skip to main content

Discord

A integração com o Discord permite que o agente responda a Slash Commands e Message Components em servidores Discord, através do Interactions Endpoint.

Acesse pelo ícone Configurações → aba Integrações → card Discord.


Habilitar a integração

Ative o toggle no card do Discord. Os campos de configuração ficam visíveis após a ativação.


Como funciona

  1. Um usuário executa um comando (slash command ou botão) em um servidor onde o bot está instalado.
  2. O Discord envia a interação para o endpoint público do Roberty.
  3. O Roberty valida a assinatura Ed25519 com a public key do aplicativo.
  4. O agente é executado e a resposta é devolvida diretamente na mesma requisição.
info

Esta integração não usa o gateway de WebSocket; ela funciona apenas com o modelo HTTP de Interactions. Isso simplifica a operação (sem manter conexão viva), mas limita a resposta a comandos/componentes — mensagens em canais normais não são processadas.


Campos de configuração

CampoObrigatórioDescrição
Bot TokenSimToken da aba Bot no Discord Developer Portal
Public KeySimChave pública da aba General Information do aplicativo
Guild IDNãoRestringe o bot a um único servidor (ID do servidor Discord)
Channel IDNãoRestringe o bot a um único canal dentro do servidor

Criando o bot no Discord Developer Portal

1. Criar o aplicativo

  1. Acesse o Discord Developer Portal e crie um novo aplicativo.
  2. Na aba Bot, clique em Reset Token e anote o valor (é exibido apenas uma vez) — este é o Bot Token.
  3. Na aba General Information, copie a Public Key e o Application ID.

2. Configurar o Interactions Endpoint

Na aba General Information do aplicativo, preencha Interactions Endpoint URL com:

https://agent-backend.roberty.app/integrations/discord/<AGENT_ID>

Substitua <AGENT_ID> pelo ID do agente Roberty que receberá as interações — use o botão Copiar ID no topo da aba Integrações.

Ao salvar, o Discord envia um PING e exige resposta válida; o endpoint do Roberty já responde corretamente desde que a Public Key esteja configurada no agente.

3. Configurar o agente no Roberty

Preencha Bot Token, Public Key e, opcionalmente, Guild ID e Channel ID para restringir o bot.

4. Adicionar o bot ao servidor

  1. No portal do Discord, vá em OAuth2 → URL Generator.
  2. Marque o escopo bot applications.commands e as permissões desejadas.
  3. Abra a URL gerada e escolha o servidor.

5. Registrar Slash Commands

Registre os comandos via API do Discord (exemplo com curl):

curl -X POST \
-H "Authorization: Bot SEU_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"ask","description":"Perguntar ao agente","options":[{"type":3,"name":"mensagem","description":"Sua pergunta","required":true}]}' \
"https://discord.com/api/v10/applications/APPLICATION_ID/commands"

O Roberty extrai o valor do primeiro parâmetro de texto (type 3) como entrada do agente.


Validação de segurança

Todo request precisa conter:

  • X-Signature-Ed25519
  • X-Signature-Timestamp

O Roberty verifica a assinatura com a publicKey do agente e responde 401 Invalid signature se falhar.


Tipos de interação suportados

TypeTratamento
1 PINGResponde { type: 1 } automaticamente.
2 APPLICATION_COMMANDExecuta o agente com o primeiro parâmetro de texto.
3 MESSAGE_COMPONENTExecuta o agente usando o custom_id como entrada.

A resposta do agente é truncada em 2000 caracteres (limite do Discord para uma única mensagem).


Referências