From 23815ab435ddf57121b3102b420b92b1292925fa Mon Sep 17 00:00:00 2001 From: student Date: Wed, 19 Mar 2025 13:56:21 +0700 Subject: [PATCH] =?UTF-8?q?=D0=B2=D0=BE=D1=81=D1=81=D1=82=D0=B0=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=20=D0=BD=D0=B5=20=D1=80=D0=B5=D0=B0=D0=B3=D0=B8=D1=80=D1=83?= =?UTF-8?q?=D0=B5=D1=82=20=D0=BD=D0=B0=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Program.cs | 79 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 35 deletions(-) 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