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.
- Operador configura bot na dashboard → grava em MySQL
- Bot Go inicia com
bots.bot_tokenondestatus=active - Usuário Telegram interage → Go upsert
clients, executaconversation_flows.flow_data - Pagamento → gateway externo → webhook Go →
payments - Entrega digital → arquivo/link/VIP/subscription via Telegram API
- Analytics → INSERT
bot_analytics_events - Workers Go →
mass_messages,strategies,client_messages
Nossos numeros:
- Mais de 34 Mil Bots Ativos
- Mais de 8 Milhões de Clientes Usuários Finais
- Mais de 20 Mil Criadores de Conteúdo
- Mais de R$ 12 Milhões em Pagamentos Processados
- Estamos em cerca de 120 Países com Suporte a 17 idiomas e mais de 15 Moedas.
- Liderando o Mercado desde 2021
Identificadores
| Entidade | Chave Telegram | Coluna DB |
|---|---|---|
| Dono da conta | Login dashboard | users.id |
| Bot | Token BotFather | bots.id, bots.bot_token |
| Cliente final | chat_id / user_id Telegram | clients.platform_user_id |
2. Stack Tecnológica
| Camada | Tecnologia | Arquivos principais |
|---|---|---|
| Backend web | PHP 8+ | dashboard/index.php, includes/*.php |
| Banco de dados | MySQL 8 / MariaDB, InnoDB, utf8mb4 | database/schema.sql |
| Frontend dashboard | HTML, CSS, JavaScript vanilla | assets/css/main.css, assets/js/*.js |
| Admin panel | PHP separado | admin/index.php, admin/pages/*.php |
| APIs JSON | PHP endpoints | api/*.php |
| i18n | 17 arquivos lang + sync | lang/*.php, tools/sync_lang.php |
| Runtime bot | Go (planejado) | Consumir CONTEXTO.md e este documento |
| Plataforma alvo | Telegram Bot API | bots.platform = telegram |
3. Configuração (config/config.php)
| Constante | Valor padrão | Descrição |
|---|---|---|
| APP_NAME | Bot Dashboard | Nome da aplicação |
| APP_VERSION | 1.0.0 | Versão |
| APP_URL | http://localhost/bot-dashboard | URL base pública |
| DB_HOST | localhost | Host MySQL |
| DB_NAME | bot_dashboard | Nome do banco |
| DB_CHARSET | utf8mb4 | Charset |
| SESSION_LIFETIME | 604800 (7 dias) | Sessão login |
| UPLOAD_PATH | {APP_ROOT}/uploads/ | Armazenamento mídia |
| MAX_UPLOAD_SIZE | 5 MB | Upload geral |
| MAX_PRESENTATION_VIDEO_SIZE | 50 MB | Vídeo apresentação |
| MAX_PRESENTATION_VIDEO_DURATION | 30 segundos | Duração max vídeo apresentação |
| MAX_FLOW_MEDIA_PER_BOT | 10 | Mídias biblioteca fluxo |
| MAX_FLOW_VIDEO_DURATION | 30 segundos | Vídeo fluxo |
| MAX_COUPON_DISCOUNT_PERCENT | 91 | Desconto 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.
(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ódigo | Idioma | Arquivo | Observações |
|---|---|---|---|
| pt | Português | lang/pt.php | Idioma padrão dashboard |
| en | English | lang/en.php | Base de fallback para sync |
| es | Español | lang/es.php | |
| ru | Русский | lang/ru.php | |
| zh | 中文 | lang/zh.php | |
| de | Deutsch | lang/de.php | |
| ja | 日本語 | lang/ja.php | |
| fr | Français | lang/fr.php | |
| ar | العربية | lang/ar.php | RTL — isRTL() retorna true |
| it | Italiano | lang/it.php | |
| tr | Türkçe | lang/tr.php | |
| id | Bahasa Indonesia | lang/id.php | |
| ko | 한국어 | lang/ko.php | |
| nl | Nederlands | lang/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ódigo | Nome | Símbolo |
|---|---|---|
| BRL | Real Brasileiro | R$ |
| USD | US Dollar | $ |
| EUR | Euro | € |
| GBP | British Pound | £ |
| ARS | Peso Argentino | $ |
| MXN | Peso Mexicano | $ |
| COP | Peso Colombiano | $ |
| CLP | Peso Chileno | $ |
| PEN | Sol Peruano | S/ |
| JPY | Japanese Yen | ¥ |
| CNY | Chinese Yuan | ¥ |
| INR | Indian Rupee | ₹ |
| KRW | South Korean Won | ₩ |
| TRY | Turkish Lira | ₺ |
| RUB | Russian Ruble | ₽ |
| UAH | Ukrainian Hryvnia | ₴ |
| THB | Thai Baht | ฿ |
| IDR | Indonesian Rupiah | Rp |
Hierarquia: products.currency → bots.currency → users.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 ID | Nome UI | Credencial | Config JSON extra |
|---|---|---|---|
| mercado_pago | Mercado Pago 💙 | api_key | fallback_provider |
| stripe | Stripe 💜 | api_key | fallback_provider |
| paypal | PayPal 🔵 | api_key | fallback_provider |
| pix_manual_br | Pix Manual BR 💚 | pix_key (em api_key) | pix_key_type: email|phone|cpf|cnpj|random |
| pushinpay | Pushinpay ⚡ | api_key | fallback_provider |
| misticpay | Misticpay 🌙 | api_key | fallback_provider |
| syncpay | Syncpay 🔄 | api_key | fallback_provider |
| lumopay | Lumopay ✨ | api_key | fallback_provider |
| promisse | Promisse 🤝 | api_key | fallback_provider |
| arkama | Arkama 🏛️ | api_key | fallback_provider |
| cripto | Cripto ₿ | 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
activecom credencial preenchida aparecem no nópaymentdo 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 | Ícone | Label i18n | Abas (tabs) |
|---|---|---|---|
| home | 🏠 | menu_home | — (sem abas) |
| personalizar | 🎨 | menu_personalizar | apresentacao |
| fluxo | 💬 | menu_fluxo | editor_visual, midias, adicionar_midia |
| produtos | 📦 | menu_produtos | todos, criar |
| gateways | 💳 | menu_gateways | pagamento |
| estrategias | 🎯 | menu_estrategias | upsell, remarketing, downsell |
| clientes | 👥 | menu_clientes | lista |
| massa | 📢 | menu_massa | mensagens, enviar |
| estatisticas | 📊 | menu_estatisticas | vendas, redes_sociais, conversao, desistencia, recuperacao |
| botoes | 🔘 | menu_botoes | lista, criar |
| cupom | 🎟️ | menu_cupom | lista, criar |
| afiliados | 🤝 | menu_afiliados | sistema, configuracoes |
| coprodutor | 👨💼 | menu_coprodutor | lista, add_coproducer |
| configuracao | ⚙️ | menu_configuracao | meus_bots, criar_bot, geral |
| idioma_bot | 🌐 | menu_idioma_bot | idioma |
| pagamentos | 💰 | menu_pagamentos | geral |
| notificacoes | 🔔 | menu_notificacoes | lista |
| avancado | 🚀 | menu_avancado | geral |
| tutoriais | 📚 | menu_tutoriais | lista |
| suporte | 💬 | menu_suporte | meus_tickets, novo_ticket |
9. Ações POST (dashboard/index.php)
| action | page | Função PHP | Descrição |
|---|---|---|---|
| save_dashboard_currency | configuracao | updateUserDashboardCurrency | Salva moeda dashboard geral |
| create_bot | configuracao | createUserBot | Cria novo bot |
| toggle_bot_status | configuracao | setBotStatus | Ativa/desativa bot |
| update_bot | configuracao | updateUserBot | Edita bot (nome, token, idioma, moeda) |
| save_presentation | personalizar | saveBotPresentation | Welcome message + mídia apresentação |
| upload_flow_media | fluxo | uploadBotFlowMedia | Upload mídia biblioteca fluxo |
| delete_flow_media | fluxo | deleteBotFlowMedia | Remove mídia fluxo |
| save_flow | fluxo | saveBotConversationFlow | Salva flow_data JSON |
| save_product | produtos | saveUserProduct | Cria/edita produto |
| toggle_product_status | produtos | setProductStatus | Ativa/pausa produto |
| delete_product | produtos | deleteUserProduct | Exclui produto |
| save_strategy | estrategias | saveUserStrategy | Salva upsell/remarketing/downsell |
| update_client | clientes | updateUserClient | Edita cliente |
| ban_client | clientes | banUserClient | Bane cliente (blocked) |
| send_client_message | clientes | sendClientMessage | Fila mensagem pending |
| create_mass_message | massa | createUserMassMessage | Agenda campanha massa |
| save_button | botoes | saveUserBotButton | Cria/edita botão global |
| toggle_button_status | botoes | setBotButtonStatus | Ativa/pausa botão |
| delete_button | botoes | deleteUserBotButton | Exclui botão |
| save_coupon | cupom | saveUserCoupon | Cria/edita cupom |
| toggle_coupon_status | cupom | setCouponStatus | Ativa/pausa cupom |
| delete_coupon | cupom | deleteUserCoupon | Exclui cupom |
| save_affiliate_settings | afiliados | saveUserAffiliateSettings | Config sistema afiliados |
| update_affiliate_commission | afiliados | updateAffiliateCommissionRate | Altera comissão afiliado |
| save_coproducer | coprodutor | saveUserCoProducer | Cria/edita co-produtor |
| toggle_coproducer_status | coprodutor | setCoProducerStatus | Ativa/inativa co-produtor |
| delete_coproducer | coprodutor | deleteUserCoProducer | Exclui co-produtor |
| save_bot_language | idioma_bot | saveBotLanguage | Define bots.language |
| create_payment | pagamentos | createUserPayment | Cria pagamento manual |
| update_payment | pagamentos | updateUserPayment | Edita pagamento |
| delete_payment | pagamentos | deleteUserPayment | Exclui pagamento |
| export_bot | avancado | exportBotData + streamBotExport | Download JSON backup |
| delete_bot_data | avancado | deleteBotData | Exclusão total dados bot |
| create_support_ticket | suporte | createUserSupportTicket | Novo ticket suporte |
| delete_support_ticket | suporte | deleteUserSupportTicket | Exclui ticket |
10. APIs REST/JSON
| Endpoint | Método | Função |
|---|---|---|
| api/webhook.php | GET | Stub — retorna status ok. Substituir por webhook Go Telegram/gateways |
| api/gateways.php | GET/POST | Lista e salva config gateways (JSON) |
| api/fluxo.php | GET/POST | Payload fluxo + save flow_data |
| api/personalizar.php | GET/POST | Payload apresentação + save + upload mídia |
| api/preferences.php | POST | language, theme, color_scheme cookies + users.language |
| api/save.php | POST | Preferê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
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
- Parse deep link payload (affiliate ref, social source)
- UPSERT clients (platform_user_id = Telegram chat ID)
- INSERT bot_analytics_events event_type=start
- Enviar welcome_message + presentation media
- Carregar conversation_flows.flow_data e iniciar máquina de estados
- Anexar bot_buttons ativos (first/last)
37.3 Checkout e entrega
- Nó payment → selecionar gateway → criar cobrança
- INSERT payments status=pending
- Webhook gateway → status=completed
- Validar cupom se aplicável (max 91% desconto)
- Calcular splits afiliado + co-produtor → metadata JSON
- Entregar produto conforme delivery_mode
- Assinatura → clients.access_expires_at
- 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
| Tipo | Path relativo | Limites |
|---|---|---|
| Apresentação | uploads/presentation/{user_id}/{bot_id}/ | img 5MB, vid 50MB/30s |
| Fluxo mídia | uploads/flow/{user_id}/{bot_id}/ | max 10/bot, vid 30s |
| Produto conteúdo | uploads/products/{user_id}/{product_id}/ | conforme content_type |
| Massa | uploads/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.