← Все проекты
05 · AUTOPOST-BOT

AUTOPOST-BOT — Telegram RSS + платная подписка

Production Telegram-бот с собственной платёжной системой и RSS-автопостингом. Один из 15+ ботов, что я собрал в тот период.

Период
Авг 2023 — март 2024 · 8 месяцев
Роль
Node.js Developer · Архи-Про
Стек
Node.js 20MongoDBTelegrafTelegram Bot APITelegram PaymentsPM2XLSX / JSON / CSV parsers
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 подхватывает изменения без перезапуска.