Bot Dashboard — Documentação Técnica

Referência exhaustiva do sistema PinkBot Dashboard v1.0.0 (PHP + MySQL). Destinada a desenvolvedores e sistemas de IA que implementam o runtime do bot Telegram em Go. Última atualização: junho 2026.

1. Arquitetura do Sistema

O Bot Dashboard é uma plataforma SaaS multi-tenant onde cada usuário (conta dashboard) possui um ou mais bots Telegram. A dashboard PHP permite configurar fluxos de conversa, produtos digitais, gateways de pagamento, estratégias de vendas, clientes, campanhas em massa e analytics. O runtime Go (externo a este repositório) executa as interações Telegram em tempo real lendo/escrevendo o mesmo banco MySQL.

Fluxo de dados
  1. Operador configura bot na dashboard → grava em MySQL
  2. Bot Go inicia com bots.bot_token onde status=active
  3. Usuário Telegram interage → Go upsert clients, executa conversation_flows.flow_data
  4. Pagamento → gateway externo → webhook Go → payments
  5. Entrega digital → arquivo/link/VIP/subscription via Telegram API
  6. Analytics → INSERT bot_analytics_events
  7. Workers Go → mass_messages, strategies, client_messages

Nossos numeros:

Atualizado em Agosto de 2026
  1. Mais de 34 Mil Bots Ativos
  2. Mais de 8 Milhões de Clientes Usuários Finais
  3. Mais de 20 Mil Criadores de Conteúdo
  4. Mais de R$ 12 Milhões em Pagamentos Processados
  5. Estamos em cerca de 120 Países com Suporte a 17 idiomas e mais de 15 Moedas.
  6. Liderando o Mercado desde 2021

Identificadores

EntidadeChave TelegramColuna DB
Dono da contaLogin dashboardusers.id
BotToken BotFatherbots.id, bots.bot_token
Cliente finalchat_id / user_id Telegramclients.platform_user_id

2. Stack Tecnológica

CamadaTecnologiaArquivos principais
Backend webPHP 8+dashboard/index.php, includes/*.php
Banco de dadosMySQL 8 / MariaDB, InnoDB, utf8mb4database/schema.sql
Frontend dashboardHTML, CSS, JavaScript vanillaassets/css/main.css, assets/js/*.js
Admin panelPHP separadoadmin/index.php, admin/pages/*.php
APIs JSONPHP endpointsapi/*.php
i18n17 arquivos lang + synclang/*.php, tools/sync_lang.php
Runtime botGo (planejado)Consumir CONTEXTO.md e este documento
Plataforma alvoTelegram Bot APIbots.platform = telegram

3. Configuração (config/config.php)

ConstanteValor padrãoDescrição
APP_NAMEBot DashboardNome da aplicação
APP_VERSION1.0.0Versão
APP_URLhttp://localhost/bot-dashboardURL base pública
DB_HOSTlocalhostHost MySQL
DB_NAMEbot_dashboardNome do banco
DB_CHARSETutf8mb4Charset
SESSION_LIFETIME604800 (7 dias)Sessão login
UPLOAD_PATH{APP_ROOT}/uploads/Armazenamento mídia
MAX_UPLOAD_SIZE5 MBUpload geral
MAX_PRESENTATION_VIDEO_SIZE50 MBVídeo apresentação
MAX_PRESENTATION_VIDEO_DURATION30 segundosDuração max vídeo apresentação
MAX_FLOW_MEDIA_PER_BOT10Mídias biblioteca fluxo
MAX_FLOW_VIDEO_DURATION30 segundosVídeo fluxo
MAX_COUPON_DISCOUNT_PERCENT91Desconto máximo cupom

Timezone: America/Sao_Paulo

Esquemas de cor UI: purple, blue, green, rose, orange, teal (COLOR_SCHEMES)

4. Sistema de Idiomas — 17 Idiomas

Definidos em SUPPORTED_LANGUAGES (config/config.php). Cada idioma possui arquivo lang/{codigo}.php com ~796 chaves de tradução sincronizadas via tools/sync_lang.php.

Dois contextos de idioma:
(1) Dashboard UI — cookie idioma + campo users.language — função __($key)
(2) Bot Telegram — campo bots.language — o runtime Go deve implementar pacote i18n próprio com os mesmos 17 códigos
CódigoIdiomaArquivoObservações
ptPortuguêslang/pt.phpIdioma padrão dashboard
enEnglishlang/en.phpBase de fallback para sync
esEspañollang/es.php
ruРусскийlang/ru.php
zh中文lang/zh.php
deDeutschlang/de.php
ja日本語lang/ja.php
frFrançaislang/fr.php
arالعربيةlang/ar.phpRTL — isRTL() retorna true
itItalianolang/it.php
trTürkçelang/tr.php
idBahasa Indonesialang/id.php
ko한국어lang/ko.php
nlNederlandslang/nl.php
hiहिन्दीlang/hi.php
thไทยlang/th.php
ukУкраїнськаlang/uk.php

Arquivos extras de tradução (patches por módulo)

lang/extras.php, currency_extras.php, presentation_extras.php, bot_select_extras.php, config_tab_extras.php, config_create_bot_extras.php, flow_extras.php, product_extras.php, gateway_extras.php, strategy_extras.php, client_extras.php, mass_extras.php, stats_extras.php, button_extras.php, coupon_extras.php, affiliate_extras.php, coproducer_extras.php, bot_language_extras.php, config_bot_edit_extras.php, payment_extras.php, notification_extras.php, advanced_extras.php, support_extras.php

Função de tradução

function __(string $key, array $replacements = []): string
// Carrega lang/en.php + lang/{getCurrentLanguage()}.php
// Placeholders: __('clients_total_count', ['count' => 42]) → ":count clientes"

5. Moedas Suportadas — 18 Moedas

Constante SUPPORTED_CURRENCIES. Cada moeda inclui: name, symbol, decimal separator, thousands separator, position (before/after).

CódigoNomeSímbolo
BRLReal BrasileiroR$
USDUS Dollar$
EUREuro
GBPBritish Pound£
ARSPeso Argentino$
MXNPeso Mexicano$
COPPeso Colombiano$
CLPPeso Chileno$
PENSol PeruanoS/
JPYJapanese Yen¥
CNYChinese Yuan¥
INRIndian Rupee
KRWSouth Korean Won
TRYTurkish Lira
RUBRussian Ruble
UAHUkrainian Hryvnia
THBThai Baht฿
IDRIndonesian RupiahRp

Hierarquia: products.currencybots.currencyusers.bot_currency / users.dashboard_currency

6. Gateways de Pagamento — 11 Providers

Tabela: payment_gateways. Um registro por provider por usuário. Status: active | inactive.

Provider IDNome UICredencialConfig JSON extra
mercado_pagoMercado Pago 💙api_keyfallback_provider
stripeStripe 💜api_keyfallback_provider
paypalPayPal 🔵api_keyfallback_provider
pix_manual_brPix Manual BR 💚pix_key (em api_key)pix_key_type: email|phone|cpf|cnpj|random
pushinpayPushinpay ⚡api_keyfallback_provider
misticpayMisticpay 🌙api_keyfallback_provider
syncpaySyncpay 🔄api_keyfallback_provider
lumopayLumopay ✨api_keyfallback_provider
promissePromisse 🤝api_keyfallback_provider
arkamaArkama 🏛️api_keyfallback_provider
criptoCripto ₿wallet (em api_key)crypto_network: btc|eth|bsc|usdt

Redes crypto (getCryptoNetworks())

btc, eth, bsc, usdt

Tipos chave Pix (getPixKeyTypes())

email, phone, cpf, cnpj, random

Regras de negócio gateways

  • Fallback: se gateway primário falhar, usar config.fallback_provider (deve estar configurado e ≠ self)
  • Pix manual e Cripto usam credencial customizada (não api_key tradicional)
  • Chave API mascarada na UI via maskGatewayApiKey()
  • Só gateways active com credencial preenchida aparecem no nó payment do fluxo
  • API JSON: api/gateways.php — GET lista, POST salva configuração

Métodos de pagamento (filtro menu Pagamentos)

pix, credit_card, debit_card, boleto, crypto, paypal, stripe, mercado_pago, pushinpay, manual, other

7. Schema MySQL — Todas as Tabelas

Banco: bot_dashboard. Schema base: database/schema.sql. Migrations runtime em includes/*.php via ensure*Schema().

7.1 users

Contas dashboard. Campos: id, name, email (unique), password (bcrypt), role (user|admin), avatar, theme (light|dark), color_scheme, language, bot_currency, dashboard_currency, status (active|inactive|banned), email_verified_at, last_login_at, timestamps.

7.2 dashboard_settings

Config global admin: site_name, logos, cores, support_email, etc. Chave-valor com setting_type (text|image|color|json|boolean).

7.3 bots ⭐

Entidade central do runtime. Campos: user_id, name, description, platform (telegram default), bot_token, status (active|inactive|paused), language (17 códigos), currency, welcome_message, presentation_media_type (text|image|video), presentation_media (path), avatar, total_clients, total_revenue, timestamps.

7.4 products

Campos base + migrations: access_type (lifetime|subscription), subscription_days, content_type (image|video|audio|document), content_path/size/mime, delivery_mode (file|link|vip_group), delivery_link, vip_group_id (formato -100...), vip_link_type (unique|custom), vip_custom_link, bot_id (NULL=todos bots), status (active|inactive|draft), sales_count.

7.5 clients

platform_user_id (Telegram ID), platform, status (active|inactive|blocked|expired), total_spent, access_expires_at (assinaturas), last_interaction_at, bot_id, user_id.

7.6 client_messages

Fila mensagens manuais dashboard→cliente. status: pending|sent|failed.

7.7 payments

amount, currency, status (pending|completed|expired), payment_method, gateway, transaction_id, metadata (JSON), paid_at. FK: client_id, product_id, bot_id, user_id.

7.8 payment_gateways

provider, api_key, api_secret, webhook_url, status, config JSON.

7.9 strategies

UNIQUE (user_id, type). type: upsell|remarketing|downsell. bot_id, product_id, message, delay_minutes, status, trigger_event, config JSON.

7.10 conversation_flows

bot_id (CASCADE), name, flow_data JSON, status (draft|active|inactive).

7.11 bot_flow_media

bot_id, name, media_type (image|video|document|audio), file_path, file_size, mime_type. Max 10/bot.

7.12 mass_messages

title, message, bot_id, media_type (text|photo|video), media_path, target_filter JSON, scheduled_at, repeat_daily, repeat_time, status (draft|scheduled|sending|sent|failed), total_recipients, total_sent.

7.13 bot_buttons

label, action_type (telegram|url), action_value, position_slot (first|last), position, status, bot_id.

7.14 coupons

code (UNIQUE user+code), discount_type (percentage|fixed), discount_value (max 91%), max_uses, used_count, valid_from/until, status (active|inactive|expired).

7.15 affiliates + affiliate_settings

affiliates: referral_code (UNIQUE global), commission_rate, total_earnings, total_referrals, status. affiliate_settings: enabled, default_commission_rate, payout_gateway (stripe|pushinpay).

7.16 co_producers

bot_id (NULL=todos), product_id, name, email, commission_rate, payout_gateway, gateway_data, status.

7.17 notifications

title, message, type (info|success|warning|error|payment|client), is_read, link. Paginação 25/página.

7.18 support_tickets

subject, message, status (open|in_progress|resolved|closed), priority (low|medium|high|urgent), admin_reply, replied_at.

7.19 bot_analytics_events

event_type (start|abandon|recovery|purchase), flow_step, flow_step_label, product_id, social_source, client_id, bot_id, user_id.

7.20 daily_stats

Cache diário: stat_date, bots_count, clients_count, revenue, sales_count, new_clients, social_reach. UNIQUE (user_id, stat_date).

7.21 user_sessions

session_token, ip_address, user_agent, expires_at — autenticação dashboard.

8. Rotas da Dashboard

Padrão URL: {APP_URL}/dashboard/index.php?page={page}&tab={tab}

Parâmetros query comuns: bot_id, period, edit, saved, error, reason, msg, p, per_page, name, status, product_id, payment_method, date_from, date_to

pageÍconeLabel i18nAbas (tabs)
home🏠menu_home— (sem abas)
personalizar🎨menu_personalizarapresentacao
fluxo💬menu_fluxoeditor_visual, midias, adicionar_midia
produtos📦menu_produtostodos, criar
gateways💳menu_gatewayspagamento
estrategias🎯menu_estrategiasupsell, remarketing, downsell
clientes👥menu_clienteslista
massa📢menu_massamensagens, enviar
estatisticas📊menu_estatisticasvendas, redes_sociais, conversao, desistencia, recuperacao
botoes🔘menu_botoeslista, criar
cupom🎟️menu_cupomlista, criar
afiliados🤝menu_afiliadossistema, configuracoes
coprodutor👨‍💼menu_coprodutorlista, add_coproducer
configuracao⚙️menu_configuracaomeus_bots, criar_bot, geral
idioma_bot🌐menu_idioma_botidioma
pagamentos💰menu_pagamentosgeral
notificacoes🔔menu_notificacoeslista
avancado🚀menu_avancadogeral
tutoriais📚menu_tutoriaislista
suporte💬menu_suportemeus_tickets, novo_ticket

9. Ações POST (dashboard/index.php)

actionpageFunção PHPDescrição
save_dashboard_currencyconfiguracaoupdateUserDashboardCurrencySalva moeda dashboard geral
create_botconfiguracaocreateUserBotCria novo bot
toggle_bot_statusconfiguracaosetBotStatusAtiva/desativa bot
update_botconfiguracaoupdateUserBotEdita bot (nome, token, idioma, moeda)
save_presentationpersonalizarsaveBotPresentationWelcome message + mídia apresentação
upload_flow_mediafluxouploadBotFlowMediaUpload mídia biblioteca fluxo
delete_flow_mediafluxodeleteBotFlowMediaRemove mídia fluxo
save_flowfluxosaveBotConversationFlowSalva flow_data JSON
save_productprodutossaveUserProductCria/edita produto
toggle_product_statusprodutossetProductStatusAtiva/pausa produto
delete_productprodutosdeleteUserProductExclui produto
save_strategyestrategiassaveUserStrategySalva upsell/remarketing/downsell
update_clientclientesupdateUserClientEdita cliente
ban_clientclientesbanUserClientBane cliente (blocked)
send_client_messageclientessendClientMessageFila mensagem pending
create_mass_messagemassacreateUserMassMessageAgenda campanha massa
save_buttonbotoessaveUserBotButtonCria/edita botão global
toggle_button_statusbotoessetBotButtonStatusAtiva/pausa botão
delete_buttonbotoesdeleteUserBotButtonExclui botão
save_couponcupomsaveUserCouponCria/edita cupom
toggle_coupon_statuscupomsetCouponStatusAtiva/pausa cupom
delete_couponcupomdeleteUserCouponExclui cupom
save_affiliate_settingsafiliadossaveUserAffiliateSettingsConfig sistema afiliados
update_affiliate_commissionafiliadosupdateAffiliateCommissionRateAltera comissão afiliado
save_coproducercoprodutorsaveUserCoProducerCria/edita co-produtor
toggle_coproducer_statuscoprodutorsetCoProducerStatusAtiva/inativa co-produtor
delete_coproducercoprodutordeleteUserCoProducerExclui co-produtor
save_bot_languageidioma_botsaveBotLanguageDefine bots.language
create_paymentpagamentoscreateUserPaymentCria pagamento manual
update_paymentpagamentosupdateUserPaymentEdita pagamento
delete_paymentpagamentosdeleteUserPaymentExclui pagamento
export_botavancadoexportBotData + streamBotExportDownload JSON backup
delete_bot_dataavancadodeleteBotDataExclusão total dados bot
create_support_ticketsuportecreateUserSupportTicketNovo ticket suporte
delete_support_ticketsuportedeleteUserSupportTicketExclui ticket

10. APIs REST/JSON

EndpointMétodoFunção
api/webhook.phpGETStub — retorna status ok. Substituir por webhook Go Telegram/gateways
api/gateways.phpGET/POSTLista e salva config gateways (JSON)
api/fluxo.phpGET/POSTPayload fluxo + save flow_data
api/personalizar.phpGET/POSTPayload apresentação + save + upload mídia
api/preferences.phpPOSTlanguage, theme, color_scheme cookies + users.language
api/save.phpPOSTPreferências genéricas usuário

31. Funções PHP — Core e Auth

includes/functions.php

  • __() — Tradução i18n com placeholders
  • getCurrentLanguage() — Cookie idioma, default pt
  • setLanguageCookie()
  • getCurrentTheme() / setThemeCookie() — light|dark
  • getCurrentColorScheme() / setColorCookie()
  • isRTL() — true se ar
  • formatCurrency() — Formata valor com moeda
  • getUserBotCurrency() / getUserDashboardCurrency()
  • formatDate() — dd/mm/yyyy HH:mm
  • sanitize() — htmlspecialchars
  • redirect() / jsonResponse()
  • getMenuItems() / getTabLabel()

includes/auth.php

  • isLoggedIn() / requireLogin() / isAdmin() / requireAdmin()
  • getCurrentUser() / loginUser() / logout()
  • registerUser() / authenticateUser()
  • updateUserPreferences() / updateUserDashboardCurrency()
  • getDashboardStats() — bots, clients, revenue, products, users
  • getUserNotificationsPaginated() — 25/página
  • createNotification() / markAllNotificationsAsRead()

32. Funções PHP — Bot (includes/bot.php)

  • getUserBots() / getUserBot() / getUserPrimaryBot()
  • createUserBot() — name, token, language, currency, status
  • updateUserBot() — edição modal meus bots
  • setBotStatus() — active/inactive
  • saveBotLanguage() — bots.language
  • saveBotPresentation() — welcome + media
  • uploadPresentationMedia() / getPresentationMediaUrl()
  • maskBotToken() — mascaramento token na UI

33. Funções PHP — Fluxo (includes/flow.php)

  • getDefaultFlowData() / normalizeFlowData()
  • getBotConversationFlow() / saveBotConversationFlow()
  • getBotFlowPayload() — payload completo editor JS
  • uploadBotFlowMedia() / deleteBotFlowMedia()
  • getBotFlowMediaList() / countBotFlowMedia()
  • getUserProductsForFlow() / getUserGatewaysForFlow()
  • normalizeBranchingNodeData() — question/condition branches

34. Funções PHP — Produto (includes/product.php)

  • saveUserProduct() / deleteUserProduct() / setProductStatus()
  • validateProductInput() — access, delivery, VIP rules
  • uploadProductContent() — uploads/products/
  • isProductUsedInAnyFlow() / getProductFlowUsage()
  • getProductAccessLabel() / getProductDeliveryLabel()

35. Funções PHP — Gateway (includes/gateway.php)

  • getAvailableGatewayProviders() — lista 11 providers
  • saveUserGatewayConfig() — salva credenciais + config JSON
  • getUserGatewayConfigs() / getUserActiveGatewaysForFlow()
  • formatGatewayConfig() / maskGatewayApiKey()
  • getGatewaysPagePayload() — payload API/JS

36. Funções PHP — Demais Módulos

includes/strategy.php

getUserStrategyByType, saveUserStrategy, getUserProductsForStrategy

includes/client.php

getUserClientsPaginated, updateUserClient, banUserClient, sendClientMessage

includes/mass_message.php

createUserMassMessage, canCreateMassMessage, uploadMassMessageMedia

includes/statistics.php

getSalesByProductStats, getSocialSourceStats, getConversionStats, getAbandonmentStats, getRecoveryStats

includes/bot_button.php

saveUserBotButton, getUserBotButtons, setBotButtonStatus, deleteUserBotButton

includes/coupon.php

saveUserCoupon, normalizeCouponCode, setCouponStatus, deleteUserCoupon

includes/affiliate.php

saveUserAffiliateSettings, getUserAffiliatesPaginated, updateAffiliateCommissionRate

includes/coproducer.php

saveUserCoProducer, setCoProducerStatus, deleteUserCoProducer

includes/payment.php

createUserPayment, updateUserPayment, deleteUserPayment, getUserPaymentsPaginated, getUserPaymentStats

includes/support.php

createUserSupportTicket, deleteUserSupportTicket, getSupportChannels

includes/advanced.php

checkDatabaseConnection, exportBotData, deleteBotData, streamBotExport

37. Runtime Bot Telegram (Go) — Especificação

Este repositório contém apenas a dashboard PHP. O bot Go deve implementar todas as funcionalidades descritas consumindo o MySQL compartilhado. Ver também CONTEXTO.md na raiz do projeto.

37.1 Bootstrap

  • Conectar MySQL bot_dashboard utf8mb4
  • Carregar bots WHERE status=active AND bot_token IS NOT NULL
  • Webhook ou long polling Telegram Bot API
  • Pacote i18n para 17 idiomas keyed por bots.language

37.2 Ciclo /start

  1. Parse deep link payload (affiliate ref, social source)
  2. UPSERT clients (platform_user_id = Telegram chat ID)
  3. INSERT bot_analytics_events event_type=start
  4. Enviar welcome_message + presentation media
  5. Carregar conversation_flows.flow_data e iniciar máquina de estados
  6. Anexar bot_buttons ativos (first/last)

37.3 Checkout e entrega

  1. Nó payment → selecionar gateway → criar cobrança
  2. INSERT payments status=pending
  3. Webhook gateway → status=completed
  4. Validar cupom se aplicável (max 91% desconto)
  5. Calcular splits afiliado + co-produtor → metadata JSON
  6. Entregar produto conforme delivery_mode
  7. Assinatura → clients.access_expires_at
  8. Trigger estratégia upsell após delay_minutes

37.4 Workers background

  • Estratégias remarketing/downsell/upsell (delay_minutes)
  • Mass messages (scheduled_at, repeat_daily)
  • Client messages pending → sent
  • Expiração assinaturas → clients.status=expired
  • Pagamentos pending → expired (timeout configurável)

37.5 Estrutura Go sugerida

cmd/bot/main.go
internal/config/       # env, DSN
internal/db/           # repositories MySQL
internal/telegram/     # Bot API client
internal/flow/         # interpreter flow_data
internal/payment/      # 11 gateway adapters
internal/delivery/     # file, link, vip, subscription
internal/analytics/    # bot_analytics_events
internal/i18n/         # 17 languages
internal/worker/       # strategies, mass, messages

38. Estrutura JSON flow_data (Referência Completa)

{
  "nodes": [
    {
      "id": "start_a1b2c3d4",
      "type": "start",
      "sort_order": 0,
      "data": {}
    },
    {
      "id": "message_welcome",
      "type": "message",
      "sort_order": 1,
      "data": {
        "text": "Bem-vindo! Como posso ajudar?",
        "media_id": 5,
        "media_name": "banner.jpg",
        "media_type": "image",
        "media_url": "http://localhost/bot-dashboard/uploads/flow/1/2/banner.jpg"
      }
    },
    {
      "id": "question_buy",
      "type": "question",
      "sort_order": 2,
      "data": {
        "text": "Deseja ver nossos produtos?",
        "buttons": { "yes": "Sim", "no": "Não" },
        "branches": {
          "yes": [
            { "id": "product_1", "type": "product", "sort_order": 0,
              "data": { "product_id": 12, "product_name": "Curso VIP" } }
          ],
          "no": [
            { "id": "msg_bye", "type": "message", "sort_order": 0,
              "data": { "text": "Ok! Volte quando quiser." } }
          ]
        }
      }
    },
    {
      "id": "payment_checkout",
      "type": "payment",
      "sort_order": 3,
      "data": { "gateway_id": 3, "gateway_name": "Stripe" }
    }
  ]
}

39. Uploads — Paths Completos

TipoPath relativoLimites
Apresentaçãouploads/presentation/{user_id}/{bot_id}/img 5MB, vid 50MB/30s
Fluxo mídiauploads/flow/{user_id}/{bot_id}/max 10/bot, vid 30s
Produto conteúdouploads/products/{user_id}/{product_id}/conforme content_type
Massauploads/mass_messages/{user_id}/{bot_id}/photo/video

URL pública: {APP_URL}/uploads/{file_path}

40. Admin Panel (admin/)

Painel separado para role=admin. Páginas: dashboard, users, bots, products, payments, settings.

URL: {APP_URL}/admin/index.php?page={page}

Gerencia todos usuários e dados globais. Não afeta runtime bot diretamente.