ts6-botflow/README.md

4.2 KiB

TS6 Botflow

Painel local XanaX para gerir bots TeamSpeak, com login Discord e editor visual de flows. Mant?m os log?tipos originais e o tema flat roxo. As pastas dos projetos de origem permanecem intactas.

Funcionalidades

  • Dashboard com bots, flows e execu??es guardados na base de dados.
  • Editor com blocos arrast?veis, liga??es, condi??es, propriedades, zoom e grava??o.
  • Blocos: temporizador, in?cio manual, informa??es do servidor, clientes, ordena??o, limite, prepara??o de texto, edi??o da descri??o de canal, mensagem, espera e registo.
  • Simula??o identificada com dados de exemplo, sem enviar pedidos ao TeamSpeak.
  • Execu??o manual ou por temporizador, com hist?rico e resultado de cada passo. Um bot n?o executa duas vezes em simult?neo.
  • Liga??es WebQuery, teste de liga??o e API keys cifradas em repouso.
  • Vari?veis por bot, acess?veis como {{variables.nome}}. Outros valores: {{server.virtualserver_clientsonline}}, {{count}}, {{top}}, {{text}} e {{time}}.

O primeiro arranque cria um rascunho Estat?sticas, desativado, para atualizar a descri??o do canal 21 a cada 30 segundos. O top inicial ordena as pessoas atualmente online pela data de entrada; n?o ? um ranking hist?rico de tempo acumulado.

Esta vers?o n?o inclui reprodu??o de m?sica, eventos SSH, webhooks, edi??o de permiss?es nem gest?o de perfis pelo painel. Cada bot tem um flow. O editor disponibiliza os blocos implementados acima.

Docker / Portainer

Para Web editor com imagem constru?da no Gitea, consultar deploy/README.md e usar deploy/bot-stack.yaml. Cada push em main executa os testes e publica a imagem. Depois do workflow verde, atualizar a stack no Portainer com download da imagem e recria??o do container. Restart sozinho n?o descarrega a nova imagem.

Para construir localmente com Docker Compose, usar compose.yaml. A aplica??o escuta na porta 3080 e preserva os dados num volume montado em /app/data.

Vari?veis de ambiente:

  • APP_URL: endere?o do navegador, por exemplo http://192.168.88.99:3080.
  • DISCORD_CLIENT_ID: ID da aplica??o Discord.
  • DISCORD_CLIENT_SECRET: segredo OAuth da aplica??o.
  • OWNER_DISCORD_ID: ID num?rico da conta do dono.
  • ALLOWED_DISCORD_IDS: IDs de leitores separados por v?rgulas. Por defeito, 723613831196311603; valor vazio remove todos os leitores.

No Discord Developer Portal, adicionar o redirect exato http://192.168.88.99:3080/auth/discord/callback, ajustando ao APP_URL. O navegador e o container precisam de Internet para o OAuth; o site pode continuar apenas na rede local.

O Dono pode configurar, guardar, simular e executar. O Leitor pode consultar. Outras contas s?o recusadas; as permiss?es s?o tamb?m verificadas no servidor.

Ligar ao TeamSpeak

Entrar com a conta do dono. Em Liga??es, configurar o endere?o WebQuery HTTP/HTTPS, o ID do servidor virtual e a API key TeamSpeak. Por exemplo, http://teamspeak6:10080 funciona quando ambos os containers partilham uma rede Docker com esse nome resolv?vel. Testar a liga??o, escolher esse servidor na configura??o do bot, simular e s? depois ativar.

O temporizador aceita intervalos a partir de um segundo. A execu??o seguinte aguarda a conclus?o da anterior; pedidos de rede e blocos de espera podem prolongar o intervalo efetivo. A configura??o de permiss?es e prote??o contra flood do TeamSpeak deve permitir os pedidos do bot.

Sess?es e flows usam SQLite no volume. A chave de cifra das API keys fica em /app/data/credentials.key; preservar o volume completo nas c?pias de seguran?a. O hist?rico ret?m as ?ltimas 500 execu??es. N?o adicionar .env nem dados ao Git.

Desenvolvimento e valida??o

Node 22.15+, mesmas vari?veis de ambiente e npm start. Executar npm test para verificar autentica??o, restri??es de acesso, persist?ncia, simula??o e execu??o WebQuery com transporte de teste. O build Docker executa os testes antes da publica??o.

O editor foi verificado em navegador desktop e m?vel. A execu??o no TeamSpeak real depende da liga??o e API key configuradas na instala??o; os testes locais n?o alteram o servidor real.

A fonte Public Sans ? distribu?da em public/fonts com a licen?a OFL. Os log?tipos foram copiados sem altera??es do projeto existente.