Задача

Модернизировать текущего Telegram-бота - обновить несколько ключевых модулей согласно требованиям ниже. Ожидается, что все функции будут корректно интегрированы с существующей кодовой базой.

1. Дизайн

  • Переработать интерфейс бота - привести к единой, современной стилистике (цветовая схема, шрифты, форматирование сообщений).
  • Учесть, что бот работает в формате меню / команд, возможно применить inline‑кнопки и структурированное оформление ответов.

2. Логирование по топикам

  • Реализовать отправку отдельных логов в различные топики одного чата.
  • Пример: логи по заказам → топик #1, по ошибкам → топик #2, по платежам → топик #3.

3. Система отзывов

  • Восстановить или доделать функционал, чтобы отзывы корректно собирались, сохранялись и отображались.
  • Механика: пользователь отправляет текст/рейтинг → бот принимает, пересылает админу утверждает и/или индексирует в базе.

4. Партнёрские промокоды (50% доход)

  • Выдать выбранному пользователю (по конкретному telegram‑id) эксклюзивный промокод.
  • Если любой другой человек активирует этот промокод, владелец промокода автоматически получает 50% от суммы чистой прибыли, принесённой новым пользователем (настроить алгоритм расчёта).

5. Кнопка вывода: разграничение ролей

  • Обычные пользователи - кнопка вывода удаляется из сообщений/clavier, интерфейс скрывается.
  • Админы - отображается эксклюзивная кнопка вывода с логикой шагов:
  1. Админ вводит желаемую сумму (например, 5000).
  2. Бот ищет активные пополнения (обработка карт): создаётся логическая цепочка транзакций. Каждое новое пополнение, поступающее «на баланс», фиксируется по карте (реквизитам, которые бот автоматически меняет для конкретного админ-запроса).
  3. Пополнения прибывают по сумме и сразу вычитаются из заказанной суммы (например, задал 5000 → пришло 200 → долг снизился до 4800). Процесс продолжается до полного покрытия (сумма <=0) и подтверждения / закрытия заявки.

6. Корректировка базы данных

  • Оптимизировать таблицы: добавить связь партнёр-промокод, статусы выводов, бухгалтерские метки для транзакций.
  • Обеспечить поддержку прироста данных и откатов при ошибках.