Files
gotelegram_pro/gotelegram-bot
anten-ka 7b53566dad fix(bot): promo auto-delete + neutralize fake install/change stubs
Two user-reported bugs:

1. Promo spam: daily promo message from /start and the Promo menu
   button stayed in chat forever. Now they auto-delete after 30s.
   - new helper _delete_message_after()
   - cmd_start schedules deletion of the daily promo
   - cb_menu_promo sends promo as a SEPARATE ephemeral message
     (instead of editing the main menu in place), so the menu stays
     intact and only the promo self-destructs in 30s.

2. CRITICAL: 'install/change template from bot' was a stub that
   silently corrupted /opt/gotelegram/config.json. cb_lite_domain
   and cb_pro_confirm wrote a fake minimal config ({mode,template,
   port,installed_at}) without secret/domain/mask_host, and showed
   '[OK] installed!' — while never invoking install.sh, never
   downloading the template, never touching nginx. Proxy link
   generation then broke because secret was gone.
   User symptom: 'устанавливал другой шаблон через бота и всё
   повисло'.

   Fix: both callbacks now refuse cleanly and route the user to the
   CLI ('gotelegram' command → menu 1 → 1 or 7). Configuration is
   NOT touched. Full non-interactive install/change from the bot is
   left as future work.

Tested live on VPS:
- bot.py syntax OK (ast.parse on VPS)
- gotelegram-bot restarted, active
- corrupted config.json on VPS rebuilt from telemt TOML ground
  truth (mode=lite, secret, port, mask_host=google.com)
2026-04-10 13:00:04 +03:00
..

GoTelegram v2.2 Bot

Production-quality Telegram bot for managing MTProxy (telemt engine) on Linux servers.

Features

  • Complete CLI Feature Parity - All menu items from CLI version

    • Install (Quick/Stealth modes)
    • Status monitoring
    • Proxy link generation
    • Share with QR codes
    • Service restart
    • Logs viewing
    • Mode/template changes
    • Backup/restore
    • telemt updates
    • Website/SSL management
    • Remove installation
    • Promotional links
  • Template Browsing - Browse categories → templates → preview → install

  • V1 Migration - Detects old mtg Docker container and offers migration

  • Access Control - ALLOWED_IDS from .env

  • Async/Await - Full async support via python-telegram-bot v21+

  • Inline Keyboards - Modern UI with callback-based navigation

  • Shell Integration - Executes system commands via asyncio subprocess

  • Error Handling - Production-ready error handling

Installation

Prerequisites

  • Python 3.8+
  • Linux system with systemd
  • telemt installed and running
  • Telegram Bot Token from @BotFather

Setup

  1. Install dependencies:
pip install -r requirements.txt
  1. Create .env file:
cp config.example.env .env
# Edit .env and set your BOT_TOKEN
nano .env
  1. (Optional) Restrict access to specific users:
# Edit .env and uncomment ALLOWED_IDS
# ALLOWED_IDS=123456789,987654321

Running the Bot

python3 bot.py

For systemd service:

[Unit]
Description=GoTelegram Bot
After=network.target

[Service]
Type=simple
User=gotelegram
WorkingDirectory=/opt/gotelegram/bot
ExecStart=/usr/bin/python3 /opt/gotelegram/bot/bot.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Configuration

.env Variables

  • BOT_TOKEN - Telegram bot token (required)
  • ALLOWED_IDS - Comma-separated user IDs (optional, all users allowed if empty)

System Paths

  • GOTELEGRAM_CONFIG - /opt/gotelegram/config.json
  • TELEMT_CONFIG - /etc/telemt/config.toml
  • TELEMT_SERVICE - telemt (systemd service name)
  • WEBSITE_ROOT - /var/www/gotelegram-site
  • BACKUP_DIR - /opt/gotelegram/backups
  • TEMPLATES_CATALOG - /opt/gotelegram/templates_catalog.json

Architecture

Single File Design

All functionality in one bot.py for simplicity and ease of deployment.

Command Handlers

  • /start - Main menu
  • /help - Help text
  • /status - Quick status
  • /logs - Recent logs

Callback Handlers

Organized by feature:

  • Installation (quick/stealth modes)
  • Status monitoring
  • Backup/restore
  • SSL management
  • Updates
  • Removal

Shell Integration

Async subprocess wrapper:

code, stdout, stderr = await sh("command", "arg1", "arg2")

Callback Data Convention

  • menu_* - Menu items
  • install_mode_* - Install options
  • quick_dom_* - Domain selection
  • stealth_cat_* - Template categories
  • stealth_tpl_* - Template selection
  • stealth_confirm_* - Confirm installation
  • backup_* - Backup operations
  • ssl_* - SSL operations
  • restore_backup_* - Restore operations

Credits

  • telemt - MTProxy engine foundation
  • HTML5UP - Beautiful web templates
  • Learning Zone - Educational resources
  • Start Bootstrap - Bootstrap framework
  • Community - Your feedback and support

License

GoTelegram v2.2 - Open source community project