diff --git a/Program.cs b/Program.cs index 5da135b..e087ca2 100644 --- a/Program.cs +++ b/Program.cs @@ -90,45 +90,54 @@ class Program { try { - if (update.Type == UpdateType.Message && update.Message?.Text != null) + if (update.Type != UpdateType.Message || update.Message?.Text == null) + return; + + var message = update.Message; + Log.Information($"Получено сообщение от {message.Chat.Id}: {message.Text}"); + + if (message.Text == "/start") { - var message = update.Message; - Log.Information($"Получено сообщение от {message.Chat.Id}: {message.Text}"); - - if (message.Text == "/start") + // Отправляем главное меню с кнопками + var keyboard = new InlineKeyboardMarkup(new[] { - var keyboard = new InlineKeyboardMarkup(new[] { - new InlineKeyboardButton[] - { - InlineKeyboardButton.WithCallbackData("Подать заявку", "report"), - InlineKeyboardButton.WithCallbackData("Просмотр заявок", "view_reports") - } - }); + new InlineKeyboardButton[] // Кнопки для навигации + { + InlineKeyboardButton.WithCallbackData("Подать заявку", "report"), + InlineKeyboardButton.WithCallbackData("Просмотр заявок", "view_reports") + } + }); - await botClient.SendMessage( - chatId: message.Chat.Id, - text: "Привет! Я бот для сбора заявок на ремонт оборудования.", - replyMarkup: keyboard - ); - Log.Information($"Ответ на команду /start с кнопками отправлен."); - } + await botClient.SendMessage( + chatId: message.Chat.Id, + text: "Привет! Я бот для сбора заявок на ремонт оборудования.", + replyMarkup: keyboard + ); + Log.Information($"Ответ на команду /start с кнопками отправлен."); } - else if (update.Type == UpdateType.CallbackQuery) // Обработка callback + else if (message.Text == "report") { - var callbackQuery = update.CallbackQuery; - if (callbackQuery.Data == "report") - { - usersWaitingForReport[callbackQuery.Message.Chat.Id] = true; - await botClient.SendMessage(chatId: callbackQuery.Message.Chat.Id, text: "Пожалуйста, отправьте описание проблемы."); - Log.Information("Ответ на кнопку 'Подать заявку' отправлен."); - } - else if (callbackQuery.Data == "view_reports" && admins.Contains(callbackQuery.Message.Chat.Id)) - { - await ViewReports(botClient, callbackQuery.Message.Chat.Id); - } - - // Не забывайте отправить ответ на callback, чтобы Telegram не просил повторно нажать кнопку - await botClient.AnswerCallbackQueryAsync(callbackQuery.Id); + usersWaitingForReport[message.Chat.Id] = true; // Отметить, что пользователь должен отправить описание + await botClient.SendMessage(chatId: message.Chat.Id, text: "Пожалуйста, отправьте описание проблемы."); + Log.Information("Ответ на кнопку 'Подать заявку' отправлен."); + } + else if (admins.Contains(message.Chat.Id) && message.Text == "view_reports") + { + await ViewReports(botClient, message.Chat.Id); + } + else if (usersWaitingForReport.ContainsKey(message.Chat.Id) && usersWaitingForReport[message.Chat.Id]) + { + string problemDescription = message.Text; + await SaveReportToDatabase(message.Chat.Id, problemDescription); + await botClient.SendMessage(chatId: message.Chat.Id, text: "Спасибо за заявку! Мы обработаем её в ближайшее время."); + usersWaitingForReport[message.Chat.Id] = false; + Log.Information($"Заявка пользователя {message.Chat.Id} сохранена в базе данных."); + } + else + { + // Ответ на нераспознанные сообщения + await botClient.SendMessage(chatId: message.Chat.Id, text: "Неизвестная команда. Используйте кнопки для навигации."); + Log.Information("Ответ на неизвестную команду с кнопками отправлен."); } } catch (Exception ex) @@ -240,4 +249,4 @@ class Program Log.Error($"StackTrace: {exception.StackTrace}"); return Task.CompletedTask; } -} +} \ No newline at end of file