← Все проекты 05 · AUTOPOST-BOT
AUTOPOST-BOT — Telegram RSS + платная подписка
Production Telegram-бот с собственной платёжной системой и RSS-автопостингом. Один из 15+ ботов, что я собрал в тот период.
github.com/dragekorn/AUTOPOST-BOTПлатформа для монетизации Telegram-каналов: пользователь платит прямо в боте (100 рублей за 30 дней / 100 токенов), получает доступ к комментариям в группах, где живёт бот. Параллельно — автопостинг из RSS-источников с настраиваемыми фильтрами и форматированием.
Контекст
Клиенту нужна была система, в которой владельцы Telegram-каналов получают комментарии от компаний, а сами компании платят за право комментировать — без внешних сервисов и аккаунт-менеджера. Все платежи, выдача токенов, контроль подписки и модерация — внутри бота.
Что сделал
- Спроектировал и реализовал собственную платёжную систему поверх Telegram Payments: 100 токенов на 30 дней за 100 рублей, автоматическое списание токенов на комментарий, блокировка после истечения.
- Сделал RSS-парсер с очередью и расписанием: импорт лент по URL, дедупликация, автоматическое форматирование постов под канал/группу.
- Собрал систему контроля комментариев: бот моментально удаляет пост, если у автора нет активной подписки, шлёт напоминание с ссылкой на инструкцию, а после 5 игнорирований — бан на 24 часа.
- Реализовал фоновый процессор файлов — приём XLSX, JSON, CSV со справочниками организаций и превращение их в рассылки/посты.
- Настроил админ-интерфейс через команды бота: просмотр пользователей, ручная выдача токенов, unban, смена шаблона сообщений «на лету» через pm2 --watch.
- Поднял всё в MongoDB + pm2, вынес секреты в .env, описал процесс клонирования бота для заказчика.
Технические детали
- Хранение подписок и токенов: hasPaid, tokens, paymentDate, subscriptionEndDate в MongoDB — честные финансовые данные, а не просто булев флаг.
- Долгоживущие воркеры и очередь обработки файлов вынесены в отдельный процесс, чтобы не блокировать polling бота.
- Шаблоны сообщений меняются через редактирование const messageTemplate в index.js — pm2 --watch подхватывает изменения без перезапуска.