Skip to content

NikPeg/telegram-gpt-template

Repository files navigation

🤖 Telegram GPT Bot Template

Шаблон для создания Telegram-ботов на основе GPT с поддержкой групповых чатов, буферизации сообщений, обработки медиа и системы подписок.

📋 Основные возможности

Пользовательский опыт

  • ⌨️ Typing indicator — индикатор "печатает..." пока бот обрабатывает запрос
  • 📦 Буферизация сообщений — если пользователь отправляет несколько сообщений подряд быстрее, чем бот успевает ответить, они накапливаются и обрабатываются одним запросом к LLM. Бот проверяет наличие новых сообщений каждые 100мс во время ожидания ответа от LLM, и если они появились — прерывает ожидание и обрабатывает все накопленные сообщения вместе
  • 🖼 Обработка медиа — поддержка фото и видео
  • 💬 Групповые чаты — работа в группах и супергруппах (упоминания, ответы на сообщения)
  • 🔄 Исправление Markdown — корректное отображение форматирования в Telegram

Монетизация

  • ✅ Система подписок — проверка обязательной подписки на каналы-спонсоры
  • 📊 Реферальная система — отслеживание источников привлечения пользователей

Работа с контекстом

  • Долговременная память — сохранение истории до MAX_STORAGE сообщений
  • Рабочий контекст — передача последних MAX_CONTEXT сообщений в модель
  • Команда /forget — сброс истории диалога

Администрирование

  • Личные сообщения/dispatch для отправки сообщения конкретному пользователю
  • Массовая рассылка/dispatch_all для всех пользователей
  • Статистика — графики активности по часам и дням недели
  • Отладочный режим — пересылка сообщений с USER ID

Инфраструктура

  • Docker Compose — готовые конфигурации для dev и production
  • CI/CD — автоматический деплой через GitHub Actions
  • Миграции БД — система версионирования схемы базы данных
  • Логирование — структурированные логи с ротацией файлов
  • Тесты — покрытие критичных компонентов

📖 Документация


🏗 Архитектура

Проект построен по принципам Clean Architecture с четким разделением ответственности:

┌─────────────────────────────────────────────────────────┐
│                    PRESENTATION LAYER                    │
│                       (handlers/)                        │
│  ┌───────────────┐  ┌───────────────┐  ┌─────────────┐ │
│  │     User      │  │     Admin     │  │   Message   │ │
│  │   Handlers    │  │   Handlers    │  │  Handlers   │ │
│  └───────────────┘  └───────────────┘  └─────────────┘ │
└────────────────────────┬────────────────────────────────┘
                         │
                         ▼
┌─────────────────────────────────────────────────────────┐
│                   BUSINESS LOGIC LAYER                   │
│                      (services/)                         │
│  ┌───────────────┐  ┌───────────────┐  ┌─────────────┐ │
│  │  LLM Service  │  │     Message   │  │    Stats    │ │
│  │               │  │     Buffer    │  │   Service   │ │
│  └───────────────┘  └───────────────┘  └─────────────┘ │
└────────────────────────┬────────────────────────────────┘
                         │
                         ▼
┌─────────────────────────────────────────────────────────┐
│                      DATA LAYER                          │
│                  (core/database.py)                      │
│                     SQLite + aiosqlite                   │
└─────────────────────────────────────────────────────────┘

📂 Структура проекта

telegram-gpt-template/
│
├── 🚀 main.py                    # Точка входа
├── 🤖 core/                      # Ядро приложения
│   ├── bot_instance.py           # Инициализация бота
│   ├── config.py                 # Конфигурация
│   ├── database.py               # ORM модели и БД
│   ├── filters.py                # Кастомные фильтры
│   ├── states.py                 # FSM состояния
│   ├── utils.py                  # Утилиты (typing, debug)
│   └── middlewares.py            # Middleware
│
├── 🎯 handlers/                  # Обработчики событий
│   ├── user_handlers.py          # /start, /help, /forget
│   ├── admin_handlers.py         # /dispatch, /stats
│   ├── message_handlers.py       # Обработка текста/медиа
│   └── subscription_handlers.py  # Проверка подписок
│
├── ⚙️ services/                  # Бизнес-логика
│   ├── llm_client.py             # OpenRouter API клиент
│   ├── llm_service.py            # Логика работы с LLM
│   ├── message_buffer.py         # Буферизация сообщений
│   ├── subscription_service.py   # Проверка подписок
│   └── stats_service.py          # Статистика и графики
│
├── 🗄 migrations/                # Миграции БД
│   ├── migration_manager.py      # Менеджер миграций
│   └── migration_*.py            # Файлы миграций
│
├── 🧪 tests/                     # Тесты
├── 📚 docs/                      # Документация
├── 🐳 deployment/                # Docker конфиги
├── 📦 requirements/              # Зависимости
└── 🔧 config/                    # Конфиги (messages.json)

Ключевые принципы:

Разделение ответственности — каждый модуль решает свою задачу
Dependency Injection — легко тестировать и заменять компоненты
Service Layer — вся бизнес-логика изолирована
Async/Await — максимальная производительность
Type Hints — для лучшей читаемости и поддержки IDE


🛠 Технологический стек

  • Python 3.14+ — основной язык
  • aiogram 3.20 — асинхронный фреймворк для Telegram Bot API
  • aiosqlite — асинхронная работа с SQLite
  • aiohttp — HTTP-клиент для запросов к LLM API
  • OpenRouter API — доступ к различным LLM моделям
  • telegramify-markdown — конвертация Markdown для Telegram
  • matplotlib — генерация графиков статистики
  • Docker — контейнеризация

📝 Команды

Пользовательские:

  • /start — приветствие и информация
  • /help — список команд
  • /forget — сброс истории диалога

Администраторские:

  • /dispatch — отправка сообщения пользователю
  • /dispatch_all — массовая рассылка
  • /stats — статистика активности

🤝 Вклад в проект

Во вкладке Issues находится список потенциальных улучшений проекта. Мы будем рады вашей помощи!

Контакт автора: t.me/nikpeg


📄 Лицензия

MIT License — свободно используйте в своих проектах.

About

Minimal Telegram bot template with GPT integration. Ready to clone and customize.

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors