Задача проекта

Создание Telegram-бота, позволяющего менежеру создавать множество топиков, имеющих подробное описание. Администратор должен иметь возможность управлять рассылкой посредством телеграм-бота, генерировать пригласительные ссылки (ведущие непосредственно на тему) для рядовых пользователей, получать единым потоком все сообщения от пользователей в рамках одной темы, а также ознакамливаться с сообщениями за прошедшие периоды в рамках произвольных тем.

Роли пользователей

  • Суперпользователь - имеет возможность выдавать и отбирать права администратора, суперпользователя, сам обладает этими правами
  • Администратор - получает сообщения от всех пользователей, отправленные в рамках одного проекта/топика, ознакамливается с сообщениями за прошедшие периоды, управляет рассылкой через бота
  • Пользователь - может отправлять сообщение ТГ боту в рамках топика/проекта, все эти сообщения будут отправлены администраторам системы

Функционал

MVP

Суперпользователь

  • инициализирует сессию в качестве суперпользователя
  • получает уведомления о заявке на роль администратора (или другого суперпользователя), подтверждает/отклоняет заявки
  • получает список администраторов системы
  • отбирает у пользователей права администратора
  • логирование действий других суперпользователей

Администратор

  • инициализирует сессию как пользователь
  • отправляет заявку на получение прав администратора
  • создает темы/топики/проекты
  • закрывает (удаляет) темы/топики/проекта
  • получает список тем/топиков/проектов
  • указывает описание для тем/топиков/проектов
  • генерирует пригласительную ссылку
  • изменяет область видимости тем/топиков/объявлений (приватные/публичные)
  • отправка сообщений в доступные боту группы/каналы
  • отправка сообщений пользователям, подписанных на данную тему
  • отвечает конкретному пользователю на сообщение
  • инициализирует анонимный чат с пользователем в рамках тематики
  • настраивает фильтр для получения сообщений только по выбранным темам/топикам/проектам
  • получает сообщения в реальном времени от всех пользователей в соответствии с установленными фильтрами
  • ознакамливается с сообщениями на заданную тематику (с фильтрацией по пользователям) за прошедший период
  • логирование действий других администраторов

Пользователь

  • инициализирует сессию как пользователь
  • получает список публичных (открытых) тем/топиков/проектов
  • устанавливает тему для отправляемых сообщений (аналог фильтра)
  • пишет в чат боту (сообщения переправляются в соответствии с темой)
  • начальные фильтры устанавливаются в соответствии с пригласительным url'ом

Группа

  • добавление бота в группу с правами администратора
  • рассылка сообщений в группу через бота

Каналы

  • добавление бота в канал с правами администратора
  • рассылка сообщений в канал через бота

Используемый стек:

  • aiogram
  • ormar
  • PostgreSQL
  • Redis

Развертывание

  1. Создать виртуальное окружение python -m venv venv и активировать его
  2. Установить зависимости python -m pip install -r requirements.txt
  3. Изменить файл app/config/example.yml на app/cofig/config.yml со своими данными
  4. Запуск python serve.py