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 bot | Uma 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 canal | Um endereço que publica num canal de texto, sem login | Avisar algo. Deploy, alerta, changelog do GitHub. |
| OAuth2 em nome de alguém | Sua 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
- No portal de desenvolvedores, crie uma aplicação e copie o token (ele aparece uma vez só).
- Monte o link de convite marcando as permissões, abra e autorize num servidor seu.
- Abra um WebSocket em
/wscomAuthorization: Bot <token>, mande{"token":"Bot <token>"}como primeiro frame e espere owelcome.
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.