Skip to content

SwedishSquid/tgReminderBot

Repository files navigation

TgReminderBot

https://t.me/theFishestFish_bot - адрес бота

Для старта введите /start

  • /help - помощь по командам

  • /time - установка часового пояса

  • <дата> <время> <текс> - запланировать напоминание (для подробного объяснения вызвать /help reminder)

Пример использования:

"tomorrow 2:30 feed the dogg"

"/time setUtcOffset utc+9"

"20.01.2024 21:22 wahahah"

User guide

Для старта запустить Application project

Для остановки бота ввести Enter в консоли

Место сохранения информации на диск задается в Application.Program (по умолчанию задан относительный путь до папки в проекте)

Зависимости

Application и Domain требуют следующих библиотек

  • Telegram.Bot (для работы с Api Телегама)
  • Ninject (DI контейнер)
  • ninject.extensions.conventions

Выбранные критерии

Разделение кода на слои

Разделено на 3 слоя:

  • Инфраструктура - отвечает в основном за сохранение данных на диск

  • Предметная область - содержит предметные объекты (в основном это ChatData - инфрмация о пользователе; и ReminderData - информация о запланированном напоминании, Record и Reminder это legacy(часть методов работает на них)); Также там находится код для обработки строк, задающих напоминания Еще есть логика работы с данными (подбор сообщений для отправки)

  • Приложение - взаимодействие с TelegramApi (IBot и MainBot); Обработка сообщений пользователей (IMessageHandler и ему подобные); Точка сборки тут же

Сложные абстракции

  • +- IStorageHandler - управляет данными в приложении

  • легко добавить новые команды, реализовав IMessageHandler

  • аналогично с форматами сообщений для задания напоминаний (IReminderMessageParser)

  • для заполнения подсказок команды help используется рефлексия - для добавления описания к команде нужно только добавить атрибут на класс этой команды

Явное управление зависимостями

  • присутвует точка сборки - в Application.Program (в каждом проекте есть модуль сборки, например Application.AppModule)

  • используется Ninject

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages