@Andronron

Как реализовать архитектуру для регуляр отправки сообщенийя в Telegram?

Здравствуйте, Пишу телеграмм бота на .NET у него есть 2 задачи :
1. сохранять то что ввел пользователь в БД
2. регулярно отправлять информацию пользователю.

как реализовать 2 задачу вместе с 1-й ? что почитать ? какой паттерн реализовать ? Просто сделать асинхронную задачу? Сейчас приходит на ум просто еще одну прогу сделать которая будет регулярно отправлять информацию пользователю
  • Вопрос задан
  • 157 просмотров
Решения вопроса 1

1. сохранять то что ввел пользователь в БД

Заводишь БД и сохраняешь туда. В реляционке это будет три колонки (минимум): Id, user id, text
Без конкретики сложно подсказать.


2. регулярно отправлять информацию пользователю.

Если регулярность определяет пользователь, то проще это будет реализовать на уровне кода при помощи Quartz или Hangfire - они позволяют описывать регулярные задачи и создавать их из кода.

Если регулярность одинаковая для всех пользователей - можно в отдельном процессе через сторонний планировщик (например cron)

Для реализации бота можешь использовать библиотеку Telegram.Bot. Давно ей не пользовался, и вроде там из коробки только поллинг есть, но я бы советовал использовать вебхуки с asp net core.

В принципе никто не запрещает использовать от Telegram.Bot только dto-шки и возможность отправлять запросы в telegram bot API


как реализовать 2 задачу вместе с 1-й ?

При такой постановке - это две независимые задачи.


какой паттерн реализовать ?

Да тут вообще никаким особым паттерном и не пахнет.


Просто сделать асинхронную задачу?

Что это вообще значит?


Сейчас приходит на ум просто еще одну прогу сделать которая будет регулярно отправлять информацию пользователю

Звучит как вполне рабочий вариант
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Для реализации проекта можно сделать API ASP NET Core решение.
Потребуется изучить документацию Telegream API по ботам (в части отправки и приёма сообщений).
Для приёма будет два варианта: longpolling и webhook. Далее - принимаете собщение, пишете его в БД.
Для регулярной отправки нужно будет периодически вызывать метод, реализующий отправку. Тут всё сложнее. Т.к. для IIS нет CRON, придётся делать задачу для планировщика, а если это недоступно - дёргать API внешними сервисами. IIS имеет свойство "прибивать" долго выполняющиеся задачи, поэтому простые таймеры здесь не помогут. Есть дополнения позволяющие периодически выполнять определённое действие, но у меня был негативный опыт их использования.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы