From 56f2f3af8dd91c48f0adffa9fc8df304919604e4 Mon Sep 17 00:00:00 2001 From: Slavasil Date: Sat, 19 Apr 2025 19:53:26 +0300 Subject: [PATCH] remove some comments --- SimpleTGBot/Program.cs | 9 ++++++-- SimpleTGBot/TelegramBot.cs | 42 ++++++-------------------------------- 2 files changed, 13 insertions(+), 38 deletions(-) diff --git a/SimpleTGBot/Program.cs b/SimpleTGBot/Program.cs index d7cf41c..407ebdd 100644 --- a/SimpleTGBot/Program.cs +++ b/SimpleTGBot/Program.cs @@ -1,11 +1,16 @@ -namespace SimpleTGBot; +using System.Text; + +namespace SimpleTGBot; public static class Program { // Метод main немного видоизменился для асинхронной работы public static async Task Main(string[] args) { + // Православная кодировка + Console.OutputEncoding = Encoding.UTF8; + TelegramBot telegramBot = new TelegramBot(); await telegramBot.Run(); } -} \ No newline at end of file +} diff --git a/SimpleTGBot/TelegramBot.cs b/SimpleTGBot/TelegramBot.cs index fc5c525..68eca38 100644 --- a/SimpleTGBot/TelegramBot.cs +++ b/SimpleTGBot/TelegramBot.cs @@ -1,15 +1,13 @@ -using System.Reflection.Metadata.Ecma335; - -namespace SimpleTGBot; -using Telegram.Bot; +using Telegram.Bot; using Telegram.Bot.Exceptions; using Telegram.Bot.Polling; using Telegram.Bot.Types; using Telegram.Bot.Types.Enums; +namespace SimpleTGBot; + public class TelegramBot { - // Токен TG-бота. Можно получить у @BotFather private const string BotToken = "ВАШ_ТОКЕН_ИДЕНТИФИКАЦИИ_БОТА"; /// @@ -17,24 +15,13 @@ public class TelegramBot /// public async Task Run() { - // Если вам нужно хранить какие-то данные во время работы бота (массив информации, логи бота, - // историю сообщений для каждого пользователя), то это всё надо инициализировать в этом методе. - // TODO: Инициализация необходимых полей - - // Инициализируем наш клиент, передавая ему токен. var botClient = new TelegramBotClient(BotToken); - - // Служебные вещи для организации правильной работы с потоками + using CancellationTokenSource cts = new CancellationTokenSource(); - - // Разрешённые события, которые будет получать и обрабатывать наш бот. - // Будем получать только сообщения. При желании можно поработать с другими событиями. ReceiverOptions receiverOptions = new ReceiverOptions() { AllowedUpdates = new [] { UpdateType.Message } }; - - // Привязываем все обработчики и начинаем принимать сообщения для бота botClient.StartReceiving( updateHandler: OnMessageReceived, pollingErrorHandler: OnErrorOccured, @@ -42,14 +29,11 @@ public class TelegramBot cancellationToken: cts.Token ); - // Проверяем что токен верный и получаем информацию о боте var me = await botClient.GetMeAsync(cancellationToken: cts.Token); Console.WriteLine($"Бот @{me.Username} запущен.\nДля остановки нажмите клавишу Esc..."); - // Ждём, пока будет нажата клавиша Esc, тогда завершаем работу бота while (Console.ReadKey().Key != ConsoleKey.Escape){} - // Отправляем запрос для остановки работы клиента. cts.Cancel(); } @@ -61,31 +45,19 @@ public class TelegramBot /// Служебный токен для работы с многопоточностью async Task OnMessageReceived(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken) { - // Работаем только с сообщениями. Остальные события игнорируем var message = update.Message; if (message is null) { return; } - // Будем обрабатывать только текстовые сообщения. - // При желании можно обрабатывать стикеры, фото, голосовые и т. д. - // - // Обратите внимание на использованную конструкцию. Она эквивалентна проверке на null, приведённой выше. - // Подробнее об этом синтаксисе: https://medium.com/@mattkenefick/snippets-in-c-more-ways-to-check-for-null-4eb735594c09 if (message.Text is not { } messageText) { return; } - - // Получаем ID чата, в которое пришло сообщение. Полезно, чтобы отличать пользователей друг от друга. var chatId = message.Chat.Id; - - // Печатаем на консоль факт получения сообщения + Console.WriteLine($"Получено сообщение в чате {chatId}: '{messageText}'"); - // TODO: Обработка пришедших сообщений - - // Отправляем обратно то же сообщение, что и получили Message sentMessage = await botClient.SendTextMessageAsync( chatId: chatId, text: "Ты написал:\n" + messageText, @@ -101,7 +73,6 @@ public class TelegramBot /// Task OnErrorOccured(ITelegramBotClient botClient, Exception exception, CancellationToken cancellationToken) { - // В зависимости от типа исключения печатаем различные сообщения об ошибке var errorMessage = exception switch { ApiRequestException apiRequestException @@ -112,7 +83,6 @@ public class TelegramBot Console.WriteLine(errorMessage); - // Завершаем работу return Task.CompletedTask; } -} \ No newline at end of file +}