Telegram бот для управления подписками Hiddify VPN с автоматизацией платежей, учётом трафика и уведомлением пользователей.
- Автоматическая регистрация — создание пользователей в Hiddify при оплате
- Управление подписками — продление, сброс трафика, проверка статуса
- Платежи через админа — пользователь отправляет чек, админ подтверждает
- Мониторинг трафика — отображение использованного и доступного лимита
- Уведомления — напоминание об истечении подписки (за 1 и 4 дня)
- Рассылки — массовая рассылка сообщений всем пользователям
- Кэширование — быстрый отклик бота благодаря кэшированию данных (30 сек)
hiddify/
├── main.py # Точка входа, запуск бота
├── config.py # Конфигурация (токены, настройки API)
├── database.py # Работа с SQLite базой данных
├── hiddify_api.py # Клиент для Hiddify API
├── requirements.txt # Зависимости Python
│
├── handlers/ # Обработчики сообщений и команд
│ ├── __init__.py
│ ├── commands.py # Команды /start, /msg_all
│ ├── callbacks.py # Callback query (кнопки)
│ ├── messages.py # Текстовые сообщения, медиа
│ └── admin.py # Админские обработчики
│
├── services/ # Бизнес-логика
│ ├── __init__.py
│ ├── hiddify_service.py # Обёртка над Hiddify API + кэш
│ ├── user_service.py # Управление пользователями
│ ├── payment_service.py # Платежи и баланс
│ ├── subscription_service.py # Подписки и сброс трафика
│ └── notification_service.py # Уведомления и рассылки
│
└── keyboards/ # Inline-клавиатуры
├── __init__.py
├── main_menu.py # Главное меню
├── subscription.py # Выбор тарифа
├── payment.py # Платежи
├── profile.py # Профиль пользователя
└── admin.py # Админские кнопки
git clone https://github.com/prasx/hiddify-tg-bot
cd hiddify# Windows
python -m venv .venv
.venv\Scripts\activate
# Linux/Mac
python3 -m venv .venv
source .venv/bin/activatepip install -r requirements.txtОткройте файл config.py и заполните настройки:
class BotConfig:
"""Конфигурация Telegram бота"""
ADMIN_PAYMENTS = 31869384 # Telegram ID администратора
TOKEN = "YOUR_BOT_TOKEN" # Токен бота от @BotFather
class HiddifyConfig:
"""Конфигурация Hiddify API и сервера"""
BASE_URL = "https://your-hiddify-domain.com"
ADMIN_PATH = "/your-admin-path"
USER_PATH = "/your-user-path"
API_KEY = "your-api-key" # Ключ API из панели HiddifyВ config.py измените тарифы под себя:
class TariffConfig:
"""Тарифные планы"""
TARIFFS = {
"30day": {"package_days": 30, "usage_limit_GB": 130, "price": 400, "emoji": "🤏"},
"60day": {"package_days": 60, "usage_limit_GB": 370, "price": 800, "emoji": "👍"},
"90day": {"package_days": 90, "usage_limit_GB": 690, "price": 1200, "emoji": "🤘"},
}python main.pyПосле запуска бот:
- Инициализирует базу данных
users.db - Подключится к Hiddify API
- Запустит фоновую задачу уведомлений
- Начнёт обрабатывать сообщения
/start— Запустить бота, показать главную меню- Кнопки меню:
- 🔗 Получить профиль — ссылка на подписку (Hiddify/V2Ray)
- 💵 Пополнить баланс — выбор тарифа и оплата
- 🔄 Обновить подписку — продление при достаточном балансе
- 📱 Установить App — ссылки на приложения
/msg_all <сообщение>— Рассылка сообщения всем пользователям
Только для ADMIN_PAYMENTS:
- Просмотр списка пользователей
- Подтверждение платежей
- Ручное пополнение баланса
Бот использует SQLite (users.db) с двумя таблицами:
| Поле | Тип | Описание |
|---|---|---|
| id | INTEGER | Первичный ключ |
| user_id | INTEGER | Telegram ID пользователя |
| uuid | TEXT | UUID в Hiddify |
| profile | TEXT | JSON с данными (баланс, тариф, etc.) |
| pos | TEXT | Текущая позиция в меню |
| Поле | Тип | Описание |
|---|---|---|
| admin_id | INTEGER | Первичный ключ |
| tg_id | INTEGER | Telegram ID администратора |
- Откройте панель администратора Hiddify
- Перейдите в настройки API
- Создайте новый API ключ
- Скопируйте ключ в
config.py
- ADMIN_PATH — путь к админ-панели (например,
/admin-link) - USER_PATH — путь для пользовательских ссылок (например,
/user-link)
Бот использует логирование с уровнем INFO:
2026-02-26 14:30:00,123 - root - INFO - Бот запускается...
2026-02-26 14:30:01,456 - services.hiddify_service - INFO - HiddifyService инициализирован (кэш TTL: 30с)
2026-02-26 14:30:02,789 - root - INFO - Пользователь username (ID: 123456789) зарегистрирован.
Для отладки измените в main.py:
logging.basicConfig(level=logging.DEBUG, ...)- TTL кэша: 30 секунд (настраивается в
HiddifyService) - Механизм: In-memory кэш в экземпляре сервиса
- Эффект: Повторные запросы выполняются за ~1-5ms вместо ~500-1000ms
- Все обработчики используют один экземпляр
HiddifyService - Кэш общий для всех запросов
- Автоматическая очистка устаревших записей
- Не коммитьте токены в Git! Используйте
.envили удалитеconfig.pyиз репозитория - Ограничьте доступ к админ-панели Hiddify по IP
- Регулярно обновляйте зависимости (
pip install --upgrade -r requirements.txt)
# Добавьте config.py в .gitignore
echo "config.py" >> .gitignore
# Или используйте переменные окружения
# TELEGRAM_BOT_TOKEN=your_token
# HIDDIFY_API_KEY=your_key| Пакет | Версия | Назначение |
|---|---|---|
| aiogram | 3.15.0 | Асинхронный Telegram Bot API |
| requests | 2.32.3 | HTTP-запросы к Hiddify API |
- Проверьте токен бота в
config.py - Убедитесь, что зависимости установлены:
pip install -r requirements.txt - Проверьте логи на наличие ошибок
- Проверьте
BASE_URL,ADMIN_PATH,API_KEY - Убедитесь, что сервер Hiddify доступен
- Проверьте права доступа API ключа
- Проверьте баланс пользователя
- Убедитесь, что тариф выбран (
ticket_tariffв профиле) - Проверьте логи создания пользователя в Hiddify
- Добавить
.envдля секретов - Интеграция с платёжными системами (ЮKassa, CryptoBot)
- Веб-интерфейс для администратора
- Статистика использования (графики, метрики)
- Реферальная система
- Промокоды и скидки
MIT License — свободное использование ссылки проекта автора.
Статус: ✅ Готово к использованию в продакшене
Последнее обновление: Февраль 2026