Instalação (OAuth2)
Link de consentimento, teto de permissões e o fluxo de instalação de bots.
Instalar um bot é um fluxo de consentimento: você monta um link com as permissões que o bot pede, e uma pessoa com GERENCIAR_SERVIDOR (ou dona do servidor) abre o link logada e escolhe onde instalar. Nunca há instalação silenciosa.
code por token, escopos nem login de usuários de terceiros — o redirecionamento devolve só o seu state.Montando o link
Cadastre as URLs de redirecionamento
Na aba Instalação (ou
PUT /api/applications/:id/oauth/redirect-uris). Oredirect_urido link precisa ser idêntico a uma delas.Escolha as permissões
Some os valores em Permissões. O portal monta o número para você.
Compartilhe o link
Link de instalaçãohttps://nexapp.online/oauth2/authorize ?client_id=SEU_CLIENT_ID &redirect_uri=https://seusite.com/callback &permissions=3072 &state=opcional
Teto de permissão
O bot recebe a interseção de três coisas:
- o que o link pediu (
permissions); - as permissões efetivas de quem instala naquele servidor;
- o que a pessoa deixou marcado na tela de consentimento (ela pode desmarcar, nunca adicionar).
Isso é aplicado no servidor, não só na interface.
O que a instalação faz
- O bot vira membro do servidor com um cargo gerenciado
Bot: NomeDaAplicaçãocontendo as permissões concedidas. - Reinstalar é idempotente: só atualiza as permissões desse cargo.
- Bots com o intent
members.readrecebemGUILD_MEMBER_ADDda instalação. - Quem instalou é redirecionado para
redirect_uri?state=….
Desinstalação
- Você, dono da aplicação:
DELETE /api/applications/:id/installs/:serverId. - Admin do servidor:
DELETE /api/servers/:serverId/applications/:applicationId(requerGERENCIAR_SERVIDOR), ou expulsar o bot. - O bot recebe
GUILD_MEMBER_REMOVEcomreason: "app_uninstalled"ou"kicked". - Qualquer membro pode listar os apps instalados:
GET /api/servers/:serverId/applications.
API do fluxo (avançado)
Só necessária se você implementar a sua própria tela de consentimento. Ambas exigem a sessão de quem está instalando.
/api/oauth2/authorize/startQuery
| Campo | Tipo | Descrição |
|---|---|---|
client_id* | string | clientId da aplicação. |
redirect_uri* | string | Precisa estar na lista da aplicação. |
permissions | integer | Bitfield pedido. Padrão 0. |
state | string | Até 500 caracteres, devolvido no redirecionamento. |
{
"authorizeSessionId": "…",
"expiresAt": "…", // 10 minutos
"requestedPermissions": 3072,
"application": { "id": "…", "name": "…", "iconUrl": null },
"servers": [{ "id": "…", "name": "…", "iconUrl": null }]
}Erros: 404 aplicação não encontrada; 403 aplicação suspensa ou privada (para quem não é o dono); 400 sem bot ou redirect_uri fora da lista.
/api/oauth2/authorize/:authorizeSessionId/completeCorpo da requisição
| Campo | Tipo | Descrição |
|---|---|---|
serverId* | string | Servidor escolhido. |
permissions | integer | O que ficou marcado na tela. |
{
"redirectUrl": "https://seusite.com/callback?state=…",
"install": { "serverId": "…", "grantedPermissions": 3072 }
}Erros: 404 sessão inválida, expirada ou já usada; 403 sem GERENCIAR_SERVIDOR no servidor.