/
d.alekseev
/
SmartMenuBot
Обзор
Документация
Войти
/
d.alekseev
/
SmartMenuBot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ConsoleBot/BackgroundTasks/NotificationBackgroundTask.cs
38 строк
1 KB
d.alekseev
feat: нотификации и фоновые задачи доставки уведомлений
26 фев 2026, 10:55
26 фев 2026, 10:55
4338916
Код
Авторство
О чём код?
using Telegram.Bot; using SmartMenuBot.Core.Services.Interfaces; namespace SmartMenuBot.BackgroundTasks { public class NotificationBackgroundTask( INotificationService notificationService, ITelegramBotClient bot) : BackgroundTask(TimeSpan.FromMinutes(1), nameof(NotificationBackgroundTask)) { protected override async Task Execute(CancellationToken ct) { var notifications = await notificationService.GetScheduledNotification(DateTime.UtcNow, ct); foreach (var notification in notifications) { try { await bot.SendMessage( notification.User.TelegramUserId, notification.Text, cancellationToken: ct); await notificationService.MarkNotified(notification.Id, ct); } catch (OperationCanceledException) when (ct.IsCancellationRequested) { throw; } catch (Exception ex) { Console.Error.WriteLine( $"{nameof(NotificationBackgroundTask)}. Error while processing notification {notification.Id}: {ex}"); } } } } }