Pular para o conteúdo principal

Programar para o Concord

O Concord é voz, câmera e tela para um grupo de amigos. Esta é a documentação de quem vai construir em cima dele: bots, integrações, ferramentas.

Tudo aqui vale para qualquer linguagem. Se você usa TypeScript, a documentação do nescord embrulha o que está escrito aqui numa biblioteca com decorators — mas nada impede escrever um bot em Python, Go ou Rust falando direto com o gateway.

Os três jeitos de entrar​

O que éQuando usar
Aplicação com botUma conta própria que entra nos servidores por convite e fala pelo gatewayÉ o caminho normal. Bot de música, de moderação, de jogo.
Webhook de canalUm endereço que publica num canal de texto, sem loginAvisar algo. Deploy, alerta, changelog do GitHub.
OAuth2 em nome de alguémSua aplicação age como uma pessoa, nos escopos que ela autorizou"Entrar com Concord", ler a lista de servidores de alguém.

Se você só precisa avisar alguma coisa num canal, pare no webhook: são cinco minutos e nenhum processo para manter de pé.

Bot aqui é usuário​

A decisão que mais muda as coisas: um bot é uma conta de usuário, não uma entidade à parte.

Criar uma aplicação cria junto um usuário com a marca de bot, e o id da aplicação é o id desse usuário — como no Discord, onde application_id == bot user id. A partir daí o bot:

  • aparece na lista de membros com a etiqueta BOT;
  • recebe cargo e tem permissões que saem do mesmo lugar que as de todo mundo;
  • entra na sala de voz e publica áudio pelo mesmo caminho de mídia;
  • manda e recebe mensagem pelo mesmo gateway que o aplicativo usa.

Não existe uma segunda via de permissão nem um segundo protocolo. O que você aprende aqui descreve o aplicativo também.

O mínimo para sair do zero​

  1. No portal de desenvolvedores, crie uma aplicação e copie o token (ele aparece uma vez só).
  2. Monte o link de convite marcando as permissões, abra e autorize num servidor seu.
  3. Abra um WebSocket em /ws com Authorization: Bot <token>, mande {"token":"Bot <token>"} como primeiro frame e espere o welcome.

Os três passos estão detalhados em Aplicações e bots e Gateway.

O que ainda não existe​

Dito na cara, para você não procurar:

  • Não há evento de interação no gateway. Comando de barra é despachado lendo o texto das mensagens, por prefixo. Não existe uma caixa de interações no WebSocket.
  • Não há <@id> para menção. Menção é texto puro: @usuario, @everyone, @todos, @aqui, @here. Isso tem consequência de segurança — veja Boas práticas.
  • Mensagem direta só entre amigos. Um bot não manda DM para quem não o adicionou.
  • O servidor não confirma envio com um id. Ele reemite a mensagem para todo mundo, inclusive para quem mandou. Quem precisa do id casa o eco.