Skip to content

[Feature request] Добавить функцию продажи подписки на канал #2

Description

@MrStilex

1. Функционал для пользователя (покупателя)

1.1. Стартовое меню и навигация

  • Команда /start: Приветственное сообщение с описанием канала, его пользы и кнопкой с вызовом меню тарифов.
  • Команда /help: Информация о том, как работает бот, частые вопросы (например, "Как получить доступ?", "Куда писать при проблемах?").
  • Главное меню: Инлайн-кнопки под сообщением, например: Тарифы, Помощь, Мой доступ.

1.2. Выбор и оплата подписки

  • Кнопка Тарифы: Выводит сообщение с доступными вариантами подписок (например, "1 месяц - 199₽", "3 месяца - 499₽", "Навсегда - 1499₽"). Каждый тариф — это отдельная кнопка.
    Выбор тарифа: При нажатии на кнопку тарифа бот:
  • Создает счет в ЮKasse через API.
  • Отправляет пользователю инвойс (квитанцию) с данными для оплаты (сумма, описание) и кнопкой "Оплатить".
  • Процесс оплаты: Пользователь нажимает "Оплатить", происходит переход в Telegram-приложение для подтверждения платежа (если настроено) или открывается интерфейс ЮKassы.
  • Уведомление об успешной оплате: После успешного платежа ЮKassa отправляет уведомление на сервер бота (callback). Бот:
  • Проверяет, что уведомление валидно и платеж подтвержден.
  • Добавляет пользователя в закрытый канал/чат. Это ключевое действие.
  • Отправляет пользователю поздравительное сообщение: "Оплата прошла успешно! Вы добавлены в канал. Доступ открыт до [Дата]".
  • Записывает информацию о покупке в свою БД (UserID, тариф, сумма, дата оплаты, дата окончания доступа).

1.3. Проверка статуса подписки
Кнопка Мой доступ: Пользователь получает сообщение вида:
Ваша подписка активна до: 25 октября 2025 г.
или
У вас нет активной подписки. Приобрести можно тут -> /tariffs

2. Функционал для администратора

  • Администраторы управляют через специальные команды в личном чате с ботом или в выделенной группе/чате.
  • Команда /admin: Выводит панель управления с клавиатурой или списком команд.

Статистика:

  • /stats — Показывает общее количество пользователей бота, количество активных подписок, выручку за день/месяц/все время.

Управление пользователями:

  • Найти пользователя [UserID/Username] — Показывает информацию о пользователе: его подписки, истори платежей.
  • Добавить доступ [UserID] [тариф] — Вручную добавляет пользователю подписку (например, для акций или тестирования).
  • Забрать доступ [UserID] — Немедленно исключает пользователя из канала и снимает подписку.

Рассылка:

  • /broadcast [сообщение] — Отправляет сообщение всем пользователям бота или только пользователям с активной подпиской.

3. Функционал проверки и удаления просроченных подписок:

  • Автоматическая ежедневная проверка: Система раз в сутки сканирует базу данных на наличие подписок, у которых истек срок действия.
  • Массовое удаление из канала: Для всех найденных просроченных пользователей выполняется автоматическое удаление из закрытого канала/чата.
  • Обновление статуса в БД: Статус подписки пользователя в базе данных изменяется с "активно" на "просрочено".
  • Уведомление пользователя (опционально): Пользователь может получить автоматическое сообщение от бота о том, что доступ закрыт по причине окончания подписки, с предложением продлить её.
  • Логирование: Все действия системы (кого проверили, кого удалили) записываются в лог для возможного разбора проблем администратором.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions