Размещение Tribute Assistant на клауд-хостинге Railway для автоматизации платежей в Telegram
В предыдущем посте я описывал принцип работы Tribute-ассистента, который автоматизирует платежи в Телеграм, без необходимости ручной обработки через бота. Главная проблема решения была в том, что скрипт запускался с ноутбука. Это делало сервис нестабильным и приводило к задержкам в обработке платежей. Клиенты были недовольны, что в результате негативно влияло на продажи.
Нестабильный Wi-Fi, спящий режим, случайные перезагрузки приводили к задержкам, стрессу и лишней ручной работе, а также к извинениям перед клиентами.
Поиск площадок для хостинга Python ассистента дал два результата:
Вариант 1. PythonAnywhere
Первым претендентом был PythonAnywhere. Настройка проста, платформа дружелюбна к начинающим, в интернете полно инструкций. Однако, для простого Telegram-проекта условия не самые выгодные:
- Бесплатный тариф не поддерживает постоянные фоновые процессы
- Коммерческие тарифы начинаются от $10 в месяц
Вариант 2. Railway
Railway оказался более подходящим:
- Непрерывные сервисы с автоматическим перезапуском при сбое
- Тариф $5 в месяц, включающий все необходимое для работы ассистента (первый месяц бесплатно)
Оптимизация кода под Railway
При переносе проекта потребовалось небольшое упрощение кода. Дело в том, что Railway сам делает перезапуск процессов, поэтому мы убрали все лишнее: циклы для переподключения, авто-рестарты и обработку ошибок связи.
Работа с ключами без SSH
Railway не предоставляет SSH-доступ: все ключи и параметры задаются в панели управления через переменные окружения. На практике это даже удобнее – не нужно настраивать ручной доступ, и никакого хардкодинга.
Проект, готовый к запуску на Railway, доступен на GitHub:
После запуска необходимо задать в системе следующие переменные:
- BACKEND_URL – URL вашего сайта, который активирует платную услугу
- BACKEND_KEY – необязательный ключ для защиты передачи данных
- TRIBUTE_ID – Ваш API ID в Трибьют
- TRIBUTE_HASH – Ваш API hash в Трибьют
- TG_HASH – сессия Telethon (о ней - ниже)
- CHAT_TRIBUTE – tribute
- CHAT_ADMIN – ID чата администратора для уведомлений об ошибках
Генерация Telegram-сессии
Для авторизации ассистента необходимо сначала создать сессию Telethon локально. Запустите local_auth.py на своём компьютере. После успешной авторизации скрипт выведет на экран строку сессии. Эту строку нужно добавить в Railway как переменную TG_HASH.
Результат и дальнейшие шаги
На Railway ассистент работает непрерывно и значительно стабильнее, чем на десктопе. При этом, многое можно улучшить:
- Расширить локализацию (сейчас доступны английский и русский языки)
- Автоматическая генерация ответов службы поддержки, если детали заказа не были указаны при оплате
Буду рад вашим предложениям и участию в проекте на GitHub. В случае проблем с настройкой – пишите комментарии, постараюсь помочь!