From c234a05b346f87483f183877908c9ba671b5578f Mon Sep 17 00:00:00 2001 From: Mef Date: Wed, 19 Mar 2025 20:57:16 +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=B4=D0=BB=D1=8F=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=20=D0=B0?= =?UTF-8?q?=D0=B4=D0=BC=D0=B8=D0=BD=D0=B8=D1=81=D1=82=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В коде реализованы новые команды для администраторов, включая добавление администраторов, просмотр списка администраторов, доступ к админ-панели, а также управление отчетами (просмотр, изменение статуса и удаление). Добавлена обработка неверного пароля при авторизации. Удалена лишняя проверка на команду "/admins" для улучшения читаемости кода. --- Program.cs | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 142 insertions(+), 1 deletion(-) diff --git a/Program.cs b/Program.cs index fcaf2fb..a17c9d3 100644 --- a/Program.cs +++ b/Program.cs @@ -214,6 +214,147 @@ class Program await SendMainMenu(botClient, chatId); } } + + // Также добавим обработку команды /removeadmin в секцию обработки текстовых сообщений: + + // В блоке для обработки текстовых сообщений (после if (message.Text.StartsWith("/admin"))) + else if (update.Type == UpdateType.Message && update.Message?.Text != null) + { + var message = update.Message; + Log.Information($"Получено сообщение от {message.Chat.Id}: {message.Text}"); + + if (message.Text.StartsWith("/admin")) + { + string[] parts = message.Text.Split(' '); + if (parts.Length == 2 && parts[1] == adminPassword) + { + admins.Add(message.Chat.Id); + // Сохраняем администратора в базу данных + await SaveAdminToDatabase(message.Chat.Id); + + var authMessage = await botClient.SendMessage(message.Chat.Id, "✅ Вы авторизованы как администратор!"); + Log.Information($"Новый администратор: {message.Chat.Id}"); + await Task.Delay(2000); + await botClient.DeleteMessage(message.Chat.Id, authMessage.MessageId); + await SendMainMenu(botClient, message.Chat.Id); + } + else + { + var authMessage = await botClient.SendMessage(message.Chat.Id, "❌ Неверный пароль!"); + await Task.Delay(2000); + await botClient.DeleteMessage(message.Chat.Id, authMessage.MessageId); + await SendMainMenu(botClient, message.Chat.Id); + } + return; + } + + // В блоке для обработки текстовых сообщений + else if (message.Text == "/admins") + { + if (admins.Contains(message.Chat.Id)) + { + await ShowAdminsList(botClient, message.Chat.Id); + } + else + { + await botClient.SendMessage( + chatId: message.Chat.Id, + text: "⛔ У вас нет прав для просмотра списка администраторов!" + ); + } + } + } + + else if (data == "admin_panel") + { + if (admins.Contains(chatId)) + { + await SendAdminPanel(botClient, chatId); + } + else + { + var authMessage = await botClient.SendMessage(chatId, "⛔ Вы не являетесь администратором!"); + Log.Information($"Неавторизованный доступ к админ-панели от {chatId}"); + await Task.Delay(2000); + await botClient.DeleteMessage(chatId, authMessage.MessageId); + await SendMainMenu(botClient, chatId); + } + } + else if (data == "view_reports") + { + if (admins.Contains(chatId)) + { + await ViewReports(botClient, chatId); + } + else + { + var authMessage = await botClient.SendMessage(chatId, "⛔ Вы не являетесь администратором!"); + Log.Information($"Неавторизованный доступ к заявкам от {chatId}"); + await Task.Delay(2000); + await botClient.DeleteMessage(chatId, authMessage.MessageId); + await SendMainMenu(botClient, chatId); + } + } + else if (data == "view_archived_reports") + { + if (admins.Contains(chatId)) + { + await ViewArchivedReports(botClient, chatId); + } + else + { + var authMessage = await botClient.SendMessage(chatId, "⛔ Вы не являетесь администратором!"); + Log.Information($"Неавторизованный доступ к архиву заявок от {chatId}"); + await Task.Delay(2000); + await botClient.DeleteMessage(chatId, authMessage.MessageId); + await SendMainMenu(botClient, chatId); + } + } + else if (data != null && data.StartsWith("report_")) + { + long reportId = long.Parse(data.Substring(7)); + if (callbackQuery?.Message?.MessageId != null) + { + int messageId = callbackQuery.Message.MessageId; + await ShowReportDetails(botClient, chatId, reportId, messageId); + } + } + else if (data != null && data.StartsWith("status_")) + { + string[] parts = data.Split('_'); + long reportId = long.Parse(parts[1]); + string newStatus = parts[2]; + if (callbackQuery?.Message?.MessageId != null) + { + int messageId = callbackQuery.Message.MessageId; + await UpdateReportStatus(reportId, newStatus, chatId); + await ShowReportDetails(botClient, chatId, reportId, messageId); + } + } + else if (data != null && data.StartsWith("delete_")) + { + long reportId = long.Parse(data.Substring(7)); + await DeleteReport(botClient, chatId, reportId); + } + else if (data == "back_to_list") + { + await ViewReports(botClient, chatId); + } + else if (data == "back_to_admin_panel") + { + await SendAdminPanel(botClient, chatId); + } + else if (data == "main_menu") + { + await SendMainMenu(botClient, chatId); + } + else if (data != null && data.StartsWith("priority_")) + { + string priority = data.Substring(9); + userReports[chatId].Priority = priority; + userReportSteps[chatId] = 2; + await botClient.SendMessage(chatId, "Пожалуйста, укажите кабинет."); + } } } @@ -249,7 +390,7 @@ class Program } // В блоке для обработки текстовых сообщений - if (message.Text == "/admins") + else if (message.Text == "/admins") { if (admins.Contains(message.Chat.Id)) {