From 9b39ea444026f40701d4dc8632dbb855580e1cf8 Mon Sep 17 00:00:00 2001 From: student Date: Wed, 19 Mar 2025 14:14:02 +0700 Subject: [PATCH] tetsssss --- Program.cs | 85 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 60 insertions(+), 25 deletions(-) diff --git a/Program.cs b/Program.cs index e087ca2..b5b8f7c 100644 --- a/Program.cs +++ b/Program.cs @@ -90,54 +90,89 @@ class Program { try { + // Обработка нажатий на кнопки + if (update.Type == UpdateType.CallbackQuery) + { + var callbackQuery = update.CallbackQuery; + long chatId = callbackQuery.From.Id; + string data = callbackQuery.Data; + + await botClient.AnswerCallbackQueryAsync(callbackQuery.Id); // Убираем "часики" у кнопки + + if (data == "report") + { + usersWaitingForReport[chatId] = true; + await botClient.SendMessage(chatId, "Пожалуйста, отправьте описание проблемы."); + Log.Information($"Пользователь {chatId} начал создание заявки"); + } + else if (data == "view_reports") + { + if (admins.Contains(chatId)) + { + await ViewReports(botClient, chatId); + } + else + { + await botClient.SendMessage(chatId, "⛔ Вы не являетесь администратором!"); + Log.Information($"Неавторизованный доступ к заявкам от {chatId}"); + } + } + return; + } + + // Обработка текстовых сообщений if (update.Type != UpdateType.Message || update.Message?.Text == null) return; var message = update.Message; Log.Information($"Получено сообщение от {message.Chat.Id}: {message.Text}"); + // Обработка команды /admin для авторизации + if (message.Text.StartsWith("/admin")) + { + string[] parts = message.Text.Split(' '); + if (parts.Length == 2 && parts[1] == adminPassword) + { + admins.Add(message.Chat.Id); + await botClient.SendMessage(message.Chat.Id, "✅ Вы авторизованы как администратор!"); + Log.Information($"Новый администратор: {message.Chat.Id}"); + } + else + { + await botClient.SendMessage(message.Chat.Id, "❌ Неверный пароль!"); + } + return; + } + if (message.Text == "/start") { - // Отправляем главное меню с кнопками var keyboard = new InlineKeyboardMarkup(new[] { - new InlineKeyboardButton[] // Кнопки для навигации - { - InlineKeyboardButton.WithCallbackData("Подать заявку", "report"), - InlineKeyboardButton.WithCallbackData("Просмотр заявок", "view_reports") - } - }); + new[] + { + InlineKeyboardButton.WithCallbackData("Подать заявку", "report"), + InlineKeyboardButton.WithCallbackData("Просмотр заявок", "view_reports") + } + }); await botClient.SendMessage( - chatId: message.Chat.Id, - text: "Привет! Я бот для сбора заявок на ремонт оборудования.", - replyMarkup: keyboard + chatId: message.Chat.Id, + text: "Привет! Я бот для сбора заявок на ремонт оборудования.", + replyMarkup: keyboard ); Log.Information($"Ответ на команду /start с кнопками отправлен."); } - else if (message.Text == "report") - { - 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]) + else if (usersWaitingForReport.TryGetValue(message.Chat.Id, out bool isWaiting) && isWaiting) { string problemDescription = message.Text; await SaveReportToDatabase(message.Chat.Id, problemDescription); - await botClient.SendMessage(chatId: message.Chat.Id, text: "Спасибо за заявку! Мы обработаем её в ближайшее время."); + 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("Ответ на неизвестную команду с кнопками отправлен."); + await botClient.SendMessage(chatId: message.Chat.Id, text: "ℹ️ Используйте кнопки для навигации."); } } catch (Exception ex)