Содержание
Настройка и развёртывание
Как развернуть бота с нуля на новом сервере.
Требования
- Сервер с Ubuntu 22.04+
- Python 3.10+
- Доступ к Telegram API (сервер за пределами РФ или VPN/SOCKS5 прокси)
- Аккаунт Prodamus PayForm
Быстрый старт
1. Скопировать код на сервер:
rsync -avz --exclude ".git" --exclude "data" ./shitcoders_club/ root@SERVER_IP:/root/shitcoders_club/
2. Установить зависимости:
cd /root/shitcoders_club && pip install -r requirements.txt
3. Настроить .env (файл в корне проекта):
- BOT_TOKEN — токен от @BotFather
- ADMIN_ID — твой Telegram ID
- PRODAMUS_SECRET_KEY — из админки Prodamus
- PRODAMUS_WEBHOOK_URL — http://SERVER_IP:8002/webhook/prodamus
4. Разрешить порт 8002 в firewall (если есть):
ufw allow 8002
5. Запустить:
systemctl restart shitcoders-club
Systemd сервис
Файл: /etc/systemd/system/shitcoders-club.service
[Unit] Description=ShitCoders Club Bot After=network.target
[Service] Type=simple User=root WorkingDirectory=/root/shitcoders_club ExecStart=/usr/bin/python3 /root/shitcoders_club/bot.py Restart=always RestartSec=5 Environment=PYTHONUNBUFFERED=1
[Install] WantedBy=multi-user.target
Вебхук Prodamus
Бот запускает вебхук-сервер на порту 8002 (FastAPI) в отдельном потоке. В админке Prodamus нужно указать URL уведомлений (адрес сервера + порт 8002 + /webhook/prodamus).
Вебхук обрабатывает:
- auto_payment — успешное списание (+ реферальный бонус)
- deactivation — платёж не прошёл
- finish — подписка завершена
- auto_payment_reminder — напоминание о списании (логируется)
Обновление кода
1. Изменить код локально 2. Скопировать на сервер: rsync -avz ./shitcoders_club/ root@SERVER_IP:/root/shitcoders_club/ 3. Перезапустить: systemctl restart shitcoders-club 4. Проверить логи: journalctl -u shitcoders-club -n 20 –no-pager
Структура проекта
- bot.py — точка входа, dispatcher
- config.py — конфигурация
- database.py — SQLite, модель данных
- handlers/ — обработчики команд и кнопок
- services/prodamus.py — интеграция с Prodamus
- webhook_server.py — FastAPI-сервер для вебхуков
- .env — токены и ключи (не в git)
- requirements.txt — зависимости
