Telegram-бот для Remnawave v3
Исходники aiogram 3 + MariaDB с адаптацией к числовым ID Remnawave v3. Ручная оплата с проверкой администратором, поддержка, рефералы и кэш подписок.
Перед запуском
Это архив исходников, а не готовая настроенная установка. Токены, реальные пользователи, рабочая карта ID, реквизиты и серверные настройки исключены. Нейтральные цены и тексты — примеры; задайте свои.
Зависимости: Python 3.12+ (Dockerfile использует 3.13), MariaDB, доступ к API Remnawave, собственный Telegram-бот и его токен. Полный список библиотек находится в pyproject.toml. Для нового окружения версии зависимостей разрешаются из указанных диапазонов; серверный образ и lock-файл не приложены.
- Создайте отдельную БД MariaDB и пользователя с правами на неё. Укажите собственные DB_*.
- Скопируйте .env.example в .env и заполните токены, адрес панели, Telegram ID администратора и настройки чатов/оплаты/сквадов. Не отправляйте заполненный .env другим людям.
- Подготовьте карту ID, описанную ниже. Без неё режим v3 не запустится.
- В терминале из каталога проекта:
python -m venv .venv
.venv\Scripts\python.exe -m pip install .
.venv\Scripts\python.exe main.py
Для Linux используйте .venv/bin/python. БД должна быть создана заранее: в примере CREATE_DATABASE_ON_START=false, CREATE_TABLES_ON_START=true.
Для разработки: python -m pip install ".[dev]" и python -m pytest. Исходные тесты включены; при изменении примерных настроек сверяйте ожидаемые значения тестов.
Обязательная карта ID для v3
app/legacy_user_ids.json специально НЕ включён: он содержал реальные данные пользователей. В текущем коде v3 требует непустой JSON-массив соответствий полей id (числовой ID пользователя панели) и uuid (прежний локальный UUID того же пользователя). Карта должна принадлежать вашей панели и точно совпадать с существующим кэшем бота. Код проверяет соответствия и исторические записи перед началом polling. Не копируйте чужую карту, не подставляйте случайные UUID и не удаляйте защиту ради запуска.
При миграции собственной установки v2→v3 сохраните свои точные соответствия UUID→числовой ID ДО миграции и установите карту на место указанного файла; храните её вместе с резервной копией БД.
Для полностью новой v3-установки этот миграционный вариант кода тоже требует непустую карту. Готового безопасного начального seed в архиве нет. Перед первым запуском понадобится отдельно согласованная инициализация идентификаторов для вашей панели/пустой БД либо доработка режима чистой установки. Пустой массив не принимается. Архив не следует считать готовым к запуску на чистой v3-панели.
Что отсутствует
Рабочий .env, карта пользователей, БД/дампы, логи, резервные копии и серверные токены исключены. Серверный docker-compose.yml, настройки mihomo/subconverter, изображения и другие внешние assets локально не выгружались и в архиве отсутствуют. Стартовая картинка в примере выключена; при необходимости добавьте свою и настройте путь. Dockerfile приложен, но сам по себе не создаёт БД и не заменяет серверный compose.
Исходные файлы сохранены; в экспортной копии заменены личная ссылка Telegram в настройках, бренд/префикс по умолчанию и примерные цены. Бизнес-логика и обязательная проверка карты не менялись.