EchoReminder - бот для запоминания информации

Добавлено 29 июл 2024 в 22:46
Концепция Этот бот помогает запоминать информацию, присылая карточки с вопросами через определенные промежутки времени. В основе этой концепции лежит кривая забывания.

Функционал У бота есть следующие основные команды:

  • /start - запускает бота и выводит приветственное сообщение с кратким описанием возможностей
  • /help - просмотр доступных команд с кратким описанием
  • /new_reminder - создает новую запись. Запускает диалог, в котором запрашивается вопрос, затем ответ, а также цель запоминания (запомнить надолго или запомнить за 2 дня, от этого зависит с какой периодичностью будут присылаться карточки с вопросами). После ввода ответа сообщение автоматически удаляется.
  • /update_reminder - изменяет запись. Запускается диалог, в котором показываются все действующие записи и их id. Нужно прислать этот id, а затем будет предложено изменить поля или оставить неизменными.
  • /delete_reminder - удаляет запись. Сначала будут выведены активные записи, а затем нужно будет ввести id записи, которую нужно удалить.
  • /cancel - отменяет диалоги.
Сборщик мусора Бот имеет систему сборки неактивных записей. Когда присылается последнее уведомление, запись становится неактивной, она будет удалена через 2 дня.

Анти-спам система Также реализована анти-спам система, которая позволяет защитить бота от DOS атак. Этот функционал реализован с помощью мидлвари, которая при первом вводе команды записывает в словарь id пользователя в качестве ключа, а также кортеж в виде названия команды и времени ее ввода. Если команда будет введена повторно, то будет выполнена проверка, прошло ли 10 секунд с прошлого ввода, если да то запрос передается хэндлеру, а если не прошло 10 секунд, то команда обрабатываться не будет.

Код хранится в моем репозитории github https://github.com/s0meone-s0mewhere/EchoReminder_...