From 85486c8315e3ad46d61f25f0cac4451352079acc Mon Sep 17 00:00:00 2001 From: 107 <107@DESKTOP-UP8U7M2> Date: Fri, 21 Mar 2025 10:27:06 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B4=D1=82=D0=B2=D0=B5=D1=80=D0=B6=D0=B4=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B8=20=D0=BE=D1=82=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=BE=D1=82=D1=87=D0=B5=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В код были добавлены методы `ConfirmReport` и `CancelReport` для обработки команд "confirm_report" и "cancel_report". Эти методы сохраняют отчет в базе данных или отменяют его, соответственно. Также обновлена логика обработки шагов отчета и добавлены новые кнопки для подтверждения и отмены в интерфейсе. --- Program.cs | 78 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 63 insertions(+), 15 deletions(-) diff --git a/Program.cs b/Program.cs index ab4daf8..0772264 100644 --- a/Program.cs +++ b/Program.cs @@ -708,6 +708,14 @@ class Program userReportSteps[chatId] = 2; await botClient.SendMessage(chatId, "Пожалуйста, укажите кабинет."); } + else if (data == "confirm_report") + { + await ConfirmReport(botClient, chatId); + } + else if (data == "cancel_report") + { + await CancelReport(botClient, chatId); + } } } @@ -808,7 +816,7 @@ class Program } else if (usersWaitingForReport.TryGetValue(message.Chat.Id, out bool isWaiting) && isWaiting) - { + { if (userReportSteps.TryGetValue(message.Chat.Id, out int step)) { switch (step) @@ -825,25 +833,22 @@ class Program break; case 4: userReports[message.Chat.Id].ReporterName = message.Text; - await SaveReportToDatabase(message.Chat.Id, userReports[message.Chat.Id]); - var mainMenuKeyboard = new InlineKeyboardMarkup(new[] + userReportSteps[message.Chat.Id] = 5; + var confirmKeyboard = new InlineKeyboardMarkup(new[] { - new[] - { - InlineKeyboardButton.WithCallbackData("Главное меню", "main_menu") - } - }); + new[] + { + InlineKeyboardButton.WithCallbackData("✅ Подтвердить", "confirm_report"), + InlineKeyboardButton.WithCallbackData("❌ Отменить", "cancel_report") + } + }); await botClient.SendMessage( message.Chat.Id, - "✅ Спасибо за заявку! Мы обработаем её в ближайшее время.", - replyMarkup: mainMenuKeyboard + "Пожалуйста, подтвердите отправку заявки:", + replyMarkup: confirmKeyboard ); - usersWaitingForReport[message.Chat.Id] = false; - userReportSteps.Remove(message.Chat.Id); - userReports.Remove(message.Chat.Id); - Log.Information($"Заявка пользователя {message.Chat.Id} сохранена в базе данных."); break; - } + } } } } @@ -860,6 +865,49 @@ class Program } } + private static async Task ConfirmReport(ITelegramBotClient botClient, long chatId) + { + if (userReports.TryGetValue(chatId, out var report)) + { + await SaveReportToDatabase(chatId, report); + var mainMenuKeyboard = new InlineKeyboardMarkup(new[] + { + new[] + { + InlineKeyboardButton.WithCallbackData("Главное меню", "main_menu") + } + }); + await botClient.SendMessage( + chatId: chatId, + text: "✅ Спасибо за заявку! Мы обработаем её в ближайшее время.", + replyMarkup: mainMenuKeyboard + ); + usersWaitingForReport[chatId] = false; + userReportSteps.Remove(chatId); + userReports.Remove(chatId); + Log.Information($"Заявка пользователя {chatId} сохранена в базе данных."); + } + } + + private static async Task CancelReport(ITelegramBotClient botClient, long chatId) + { + usersWaitingForReport[chatId] = false; + userReportSteps.Remove(chatId); + userReports.Remove(chatId); + await botClient.SendMessage( + chatId: chatId, + text: "❌ Заявка отменена.", + replyMarkup: new InlineKeyboardMarkup(new[] + { + new[] + { + InlineKeyboardButton.WithCallbackData("Главное меню", "main_menu") + } + }) + ); + Log.Information($"Заявка пользователя {chatId} отменена."); + } + private static async Task DeleteAllReports(ITelegramBotClient botClient, long chatId) { try