/
anton.bessolitsyn
/
easyMessageHandlerBot
Обзор
Документация
Войти
/
anton.bessolitsyn
/
easyMessageHandlerBot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
TelegramBotWorker.cs
98 строк
4 KB
Anton Bessolitsyn
refactoring
04 апр 2026, 09:37
04 апр 2026, 09:37
1ea1956
Код
Авторство
О чём код?
using easyMessageHandlerBot; using easyMessageHandlerBot.Core; using easyMessageHandlerBot.Interfaces; using Microsoft.Extensions.Logging; using System.IO; using System.IO.Pipes; using Telegram.Bot; using Telegram.Bot.Types; using Telegram.Bot.Types.Enums; using Telegram.Bot.Types.ReplyMarkups; using static Telegram.Bot.TelegramBotClient; namespace easyMessageHandlerBot { /// <summary> /// Worker service для Telegram бота /// </summary> public class TelegramBotWorker { private readonly TelegramBotClient _bot; private readonly TgMessageHandler _messageHandler; //private readonly IMessageRecipientService _inputMessageService; private readonly CancellationTokenSource _cts; /// <summary> /// Создает экземпляр TelegramBotWorker с указанным токеном бота /// </summary> /// <param name="botToken">Токен Telegram бота</param> public TelegramBotWorker(IMessageRecipientService<ITgMessageDto> inputMessageService, ILogger<TelegramBotWorker> logger) { // _bot = new TelegramBotClient(botToken); _bot = new TelegramBotClient("7873742239:AAEF_rD3FF5MzrEkj6WKQcIV1ZQfSRsyxJI"); //_messageHandler = messageHandler; _messageHandler = new TgMessageHandler(_bot, inputMessageService, logger); _cts = new CancellationTokenSource(); } /// <summary> /// Запускает Telegram бота /// </summary> public void Start() { // StartReceiving does not block the caller thread. Receiving is done on the ThreadPool, so we use cancellation token _bot.StartReceiving( updateHandler: HandleUpdate, errorHandler: HandleError, cancellationToken: _cts.Token ); Console.WriteLine("Telegram Bot Worker started."); } // <summary> /// Запускает Telegram бота /// </summary> //TODO проверить будет ли так работать public void Start(CancellationToken stoppingToken) { // StartReceiving does not block the caller thread. Receiving is done on the ThreadPool, so we use cancellation token _bot.StartReceiving( updateHandler: HandleUpdate, errorHandler: HandleError, cancellationToken: stoppingToken ); Console.WriteLine("Telegram Bot Worker started."); } /// <summary> /// Останавливает Telegram бота /// </summary> public void Stop() { _cts.Cancel(); Console.WriteLine("Telegram Bot Worker stopped."); } // Each time a user interacts with the bot, this method is called private async Task HandleUpdate(ITelegramBotClient _, Update update, CancellationToken cancellationToken) { switch (update.Type) { // A message was received case UpdateType.Message: await _messageHandler.HandleInputMessageAsync(update, cancellationToken); break; } } private async Task HandleError(ITelegramBotClient _, Exception exception, CancellationToken cancellationToken) { await _messageHandler.HandleErrorAsync(exception, cancellationToken); } } }