diff --git a/Program.cs b/Program.cs index bc81087..7ba61ac 100644 --- a/Program.cs +++ b/Program.cs @@ -17,12 +17,22 @@ class Program static async Task Main() { // Загружаем конфигурацию из appsettings.json - var config = new ConfigurationBuilder() - .SetBasePath(AppContext.BaseDirectory) // <-- Используем правильный путь - .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) - .Build(); + try + { + Log.Information("Загрузка конфигурации из appsettings.json..."); + var config = new ConfigurationBuilder() + .SetBasePath(AppContext.BaseDirectory) // <-- Используем правильный путь + .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) + .Build(); - _botToken = config["BotToken"] ?? throw new Exception("BotToken не найден в конфигурации!"); + _botToken = config["BotToken"] ?? throw new Exception("BotToken не найден в конфигурации!"); + Log.Information("Конфигурация успешно загружена."); + } + catch (Exception ex) + { + Log.Error($"Ошибка при загрузке конфигурации: {ex.Message}"); + throw; + } // Настраиваем логирование Log.Logger = new LoggerConfiguration() @@ -32,14 +42,33 @@ class Program Log.Information("Запуск Telegram-бота..."); - _botClient = new TelegramBotClient(_botToken); - var me = await _botClient.GetMe(); - Log.Information($"Бот {me.FirstName} запущен!"); + try + { + // Инициализация клиента бота + _botClient = new TelegramBotClient(_botToken); + var me = await _botClient.GetMe(); + Log.Information($"Бот {me.FirstName} запущен! ID: {me.Id}"); + } + catch (Exception ex) + { + Log.Error($"Ошибка при подключении к Telegram API: {ex.Message}"); + throw; + } var cts = new CancellationTokenSource(); + Log.Information("Начало получения обновлений..."); - // Применение StartReceiving для работы с задачами - _botClient.StartReceiving(HandleUpdateAsync, HandleErrorAsync, cancellationToken: cts.Token); + try + { + // Применение StartReceiving для работы с задачами + _botClient.StartReceiving(HandleUpdateAsync, HandleErrorAsync, cancellationToken: cts.Token); + Log.Information("Получение обновлений успешно началось."); + } + catch (Exception ex) + { + Log.Error($"Ошибка при запуске получения обновлений: {ex.Message}"); + throw; + } // Создание TaskCompletionSource для удержания процесса бота var tcs = new TaskCompletionSource(); @@ -51,38 +80,49 @@ class Program private static async Task HandleUpdateAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken) { - if (update.Type != UpdateType.Message || update.Message?.Text == null) - return; + try + { + if (update.Type != UpdateType.Message || update.Message?.Text == null) + return; - var message = update.Message; - Log.Information($"Сообщение от {message.Chat.Id}: {message.Text}"); + var message = update.Message; + Log.Information($"Получено сообщение от {message.Chat.Id}: {message.Text}"); - if (message.Text == "/start") - { - await botClient.SendMessage( - chatId: message.Chat.Id, - text: "Йоу! Я бот для сбора заявок на ремонт оборудования. Отправь /report для подачи заявки." - ); + if (message.Text == "/start") + { + await botClient.SendMessage( + chatId: message.Chat.Id, + text: "Йоу! Я бот для сбора заявок на ремонт оборудования. Отправь /report для подачи заявки." + ); + Log.Information("Ответ на команду /start отправлен."); + } + else if (message.Text == "/report") + { + await botClient.SendMessage( + chatId: message.Chat.Id, + text: "Пожалуйста, отправьте описание проблемы." + ); + Log.Information("Ответ на команду /report отправлен."); + } + else + { + await botClient.SendMessage( + chatId: message.Chat.Id, + text: "Неизвестная команда. Используйте /start." + ); + Log.Information("Ответ на неизвестную команду отправлен."); + } } - else if (message.Text == "/report") + catch (Exception ex) { - await botClient.SendMessage( - chatId: message.Chat.Id, - text: "Пожалуйста, отправьте описание проблемы." - ); - } - else - { - await botClient.SendMessage( - chatId: message.Chat.Id, - text: "Неизвестная команда. Используйте /start." - ); + Log.Error($"Ошибка при обработке обновлений: {ex.Message}"); + Log.Error($"StackTrace: {ex.StackTrace}"); } } private static Task HandleErrorAsync(ITelegramBotClient botClient, Exception exception, CancellationToken cancellationToken) { - Log.Error($"Ошибка: {exception.Message}"); + Log.Error($"Ошибка в процессе работы с ботом: {exception.Message}"); Log.Error($"StackTrace: {exception.StackTrace}"); return Task.CompletedTask; }