Ir para o guia

Documentação 9.6.24

Integração Discord

Use as integrações disponíveis no painel instalado.

Webhook#

Crie o webhook no canal correto e salve nas configurações. URL e token são secretos. Envie um teste controlado antes de ativar notificações.

Permissões#

Conceda somente as permissões necessárias. Confira canal, token e resposta em caso de erro. Troque tokens expostos e oculte-os nos registros.

Distinga as três integrações#

Definições → Integrações separa URL webhook, token do bot e credenciais OAuth. Correspondem a notificações, identidade do bot e início de sessão. Webhook funcional não confirma comandos ou OAuth.

Mantenha webhook, token e segredo privados. O convite público da comunidade é diferente: não use um webhook secreto no campo de convite do site.

Verifique notificações de forma controlada#

Escolha um canal apropriado para a equipa e reveja acessos antes de enviar dados de jogadores.

  1. Crie o seu webhook pelo guia oficial e guarde o endereço completo.
  2. Verifique URL cortado, espaços e valor antigo de outro canal.
  3. Use um teste disponível ou evento normal seguro; não puna jogadores nem inicie pagamentos para testar.
  4. Confirme canal, hora e conteúdo; investigue o fluxo sem repetir constantemente o evento.

Bot, OAuth e segredos expostos#

Dê ao bot só permissões necessárias. Guardar o token não configura execução nem todos os comandos. Para OAuth, separe ID e segredo e alinhe a redireção com a integração instalada.

Teste o início de sessão separadamente, mantendo uma sessão administrativa disponível. Para suporte, indique fluxo, hora e erro sem segredos.

Substitua valores publicados no fornecedor, atualize o painel e examine outras instalações com o valor antigo. Volte a verificar o fluxo normal e esconda segredos nas capturas.

Siga uma notificação ausente do evento ao canal#

Se faltar uma mensagem Discord, confirme primeiro que o evento esperado ocorreu e que a sua integração está configurada. Um webhook guardado não prova que todos os eventos geram notificações. Registe servidor ou website e hora do evento antes de mudar credenciais.

Se o evento normal aparece no painel mas não no Discord, verifique canal de destino e webhook guardado. Um webhook eliminado, canal alterado ou endereço incompleto exige correção na etapa adequada. Preserve o contexto anterior sem segredos para tornar a mudança verificável.

Se a mensagem chega ao canal errado, restrinja o acesso e corrija o destino antes de novos testes. Não gere sanções repetidas para diagnosticar entrega. Dê ao suporte categoria do evento, hora e erro ocultando segredos, sem webhook completo nem dados privados de jogadores.

Entenda o que uma gravação da integração preserva#

O token do bot e o client secret OAuth são campos confidenciais de palavra-passe. Na implementação atual, deixar um deles vazio ao guardar conserva o valor armazenado. Um campo mostrado vazio não significa, sozinho, ausência de segredo configurado; leia a explicação antes de substituir.

Ao renovar uma credencial, cole a nova no respetivo campo e guarde com uma conta autorizada. Webhook URL e client ID têm campos e comportamentos próprios. Não suponha que guardar vazio revoga um token ou segredo OAuth; revogue credenciais expostas através do Discord.

Anote qual credencial mudou e quando, excluindo o valor. Depois verifique o processo específico: entrega ao canal para webhook, função disponível para bot ou resultado real de entrada para OAuth. O sucesso de um processo não valida os outros dois.

Diagnostique com segurança o retorno da entrada Discord#

Comece uma nova tentativa na website correta e mantenha o processo na mesma sessão do navegador. OAuth usa state para ligar pedido e retorno. Abrir um callback antigo ou misturar várias tentativas pode deixar o retorno sem relação com a sessão atual.

Se surgir state inválido ou mensagem semelhante, anote o erro e recomece pela entrada normal em vez de atualizar o callback repetidamente. Verifique se definições ou extensões bloqueiam cookies ou navegação necessários. Mantenha uma sessão existente de administrador disponível durante a investigação.

Distinga a entrada Discord da plataforma das credenciais personalizadas de uma website alugada. Confirme qual processo falha antes de mudar client ID ou redirecionamento. Não publique callbacks com códigos de autorização, state, dados de sessão ou segredos em canais abertos de suporte.

Examine conteúdo conforme necessidades da equipa#

Chegada confirma entrega; contexto claro às pessoas certas é outra verificação. Examine mensagem normal da integração: servidor ou site, hora e tipo identificáveis. Leia formato existente sem presumir editor de modelos ou filtro que o painel não oferece.

Restrinja canal à equipa pertinente. Oculte identificadores e detalhes pessoais desnecessários em exports e capturas. Uma deteção pode não conter contexto completo; associe hora ao registo do painel. Vários servidores no canal precisam de rótulos suficientemente distintos.

Para mensagem confusa, anote tipo, hora e texto limpo. Esclareça saída real com suporte, sem inventar funções ou sancionar jogador para testar. Espera-se identificar o mesmo recurso e evento sem divulgar segredos desnecessários.

Verifique conta e entrada Discord cancelada#

Em OAuth, examine conta errada e cancelamento de permissões além de sucesso. O navegador pode ter outro Discord aberto. Leia identidade na autorização e confirme conta pretendida. É um processo de identidade; mudar canal webhook não o corrige.

Após cancelamento ou recusa, registe resultado e reinicie na entrada normal. Não distribua callback antigo com valores de acesso. Depois de sucesso, confira conta e website. Pare antes de administrar conta inesperada. Nova conta ou compra de plano não valida associação.

Anote processo, conta esperada, resultado e hora sem token, client secret, state ou código de autorização. Entrada de plataforma difere de integração própria do site. Nomear fluxo ajuda suporte sem mudar credenciais alheias.

Verifique o bot como serviço separado#

Site, webhook e bot são componentes distintos. Client ID, Guild ID e credenciais privadas devem corresponder ao mesmo site e servidor Discord.

Use uma versão LTS suportada do Node.js; o bot exige no mínimo Node 22 LTS. O serviço privado instalado usa Node 24.21.0 LTS: /opt/tosun-discord-node/v24.21.0/bin/node. O exemplo usa o mesmo executável para doctor em ExecStartPre e para ExecStart. Execute também npm ci e doctor com esse runtime no PATH. Uma falha no doctor impede o login. Não ative o serviço até completar as credenciais necessárias.

  1. Confira IDs numéricos dos cargos e canais; não dê Administrator a toda a equipa.
  2. O operador instala chaves próprias do site e migra o registo. npm ci usa o lockfile; npm run doctor verifica sem entrar no Discord.
  3. Campo secreto vazio preserva o valor; novos segredos exigem a chave do site. Reinicie após mudar token/API.

Confira resultados incertos antes de repetir#

Timeout não prova falha. A mesma interação concluída não repete a alteração, mas um novo comando cria outro ID.

  1. Processing e unknown não são liberados pelo tempo. Confira resultado e ID antes de repetir dinheiro, itens, bans ou comandos do servidor.
  2. Screenshot, live-watch, sync e diag exigem sessão autorizada do painel. Não envie tokens, chaves ou senhas ao suporte.

Separar segredos Discord e AC#

Token do bot, webhook, segredo OAuth e licença Tosun são credenciais distintas. Segredos do bot ficam na configuração privada ou nos campos Discord autorizados, nunca em Lua compartilhado, NUI ou no arquivo AC do servidor.

Chaves AC pertencem a server.cfg ou configs/anticheat_server.lua. Tokens curtos de captura/vídeo só permitem o envio previsto. Renove cada segredo no respectivo provedor e reinicie o serviço controladamente. Teste estado e canal de teste; não repita operações de dinheiro ou ban com resultado incerto sem verificar.

Instalar o bot Discord como serviço separado#

discord-bot roda com Node.js e não com ensure. Crie sua aplicação no Discord Developer Portal; use Application ID, Guild ID e IDs de canais e funções do seu Discord. Guarde o token em arquivo de ambiente privado.

A conta da base do site é limitada por padrão ao localhost do provedor. Um bot em outra máquina FiveM não ganha acesso automático. Use serviço gerenciado no host do site ou conexão privada aprovada apenas para sua conta. Nunca use root do provedor nem exponha MySQL publicamente. Verifique separadamente comandos antigos que consultam tabelas do jogo.

Como proprietário, salve token, Client ID e Guild ID em Gestão do site → Bot Discord. Baixe o arquivo privado em Download private bot setup e salve como .env na sua pasta do bot. Ele contém apenas as chaves do site escolhido, diferente do exemplo vazio do ZIP. Não compartilhe nem inclua no controle de versões.

  1. Instale uma versão LTS suportada do Node.js 22 ou superior e prepare os exemplos com o instalador.
  2. Convide com os escopos bot e applications.commands e conceda apenas permissões necessárias.
  3. Configure a base do site e API HTTPS. A chave privada de comandos é exclusiva deste bot/site; não é licença Tosun nem chave principal SaaS.
  4. Execute npm run doctor antes de iniciar. Depois confira online e funções; doctor não entra no Discord.
cd discord-bot
sh setup.sh
# Configure the private .env and site bot settings first.
npm run doctor
npm start