From 8978283ed11ec00766b5d6e9880eb8667e433abb Mon Sep 17 00:00:00 2001 From: student Date: Wed, 19 Mar 2025 13:24:38 +0700 Subject: [PATCH] =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Program.cs | 97 ++++++++++++++---------------------------------------- 1 file changed, 25 insertions(+), 72 deletions(-) diff --git a/Program.cs b/Program.cs index 2f97bf5..2a8c76e 100644 --- a/Program.cs +++ b/Program.cs @@ -9,6 +9,7 @@ using Serilog; using Telegram.Bot; using Telegram.Bot.Types; using Telegram.Bot.Types.Enums; +using Telegram.Bot.Types.ReplyMarkups; class Program { @@ -50,7 +51,7 @@ class Program { // Инициализация клиента бота _botClient = new TelegramBotClient(_botToken); - var me = await _botClient.GetMeAsync(); + var me = await _botClient.GetMe(); // Добавили await для получения объекта User Log.Information($"Бот {me.FirstName} запущен! ID: {me.Id}"); } catch (Exception ex) @@ -97,52 +98,32 @@ class Program if (message.Text == "/start") { - await botClient.SendMessage(chatId: message.Chat.Id, text: "Привет! Я бот для сбора заявок на ремонт оборудования. Отправь /report для подачи заявки."); - Log.Information($"Ответ на команду /start отправлен."); + // Отправляем главное меню с кнопками + var keyboard = new InlineKeyboardMarkup(new[] + { + new InlineKeyboardButton[] // Кнопки для навигации + { + InlineKeyboardButton.WithCallbackData("Подать заявку", "report"), + InlineKeyboardButton.WithCallbackData("Просмотр заявок", "view_reports") + } + }); + + await botClient.SendMessage( + chatId: message.Chat.Id, + text: "Привет! Я бот для сбора заявок на ремонт оборудования.", + replyMarkup: keyboard + ); + Log.Information($"Ответ на команду /start с кнопками отправлен."); } - else if (message.Text == "/report") + else if (message.Text == "report") { usersWaitingForReport[message.Chat.Id] = true; // Отметить, что пользователь должен отправить описание await botClient.SendMessage(chatId: message.Chat.Id, text: "Пожалуйста, отправьте описание проблемы."); - Log.Information("Ответ на команду /report отправлен."); + Log.Information("Ответ на кнопку 'Подать заявку' отправлен."); } - else if (message.Text.StartsWith("/admin")) + else if (admins.Contains(message.Chat.Id) && message.Text == "view_reports") { - string passwordAttempt = message.Text.Substring(7); // Получаем пароль, который ввел пользователь - - if (passwordAttempt == adminPassword) - { - admins.Add(message.Chat.Id); // Назначаем пользователя администратором - await botClient.SendMessage(chatId: message.Chat.Id, text: "Вы стали администратором."); - Log.Information($"Пользователь {message.Chat.Id} стал администратором."); - } - else - { - await botClient.SendMessage(chatId: message.Chat.Id, text: "Неверный пароль."); - Log.Information($"Неудачная попытка входа для пользователя {message.Chat.Id}."); - } - } - else if (admins.Contains(message.Chat.Id)) // Команды доступны только для администраторов - { - if (message.Text == "/view_reports") - { - await ViewReports(botClient, message.Chat.Id); - } - else if (message.Text.StartsWith("/change_status ")) - { - string[] parts = message.Text.Split(' ', 3); - if (parts.Length >= 3) - { - long reportId = long.Parse(parts[1]); - string newStatus = parts[2]; - await ChangeReportStatus(reportId, newStatus); - await botClient.SendMessage(chatId: message.Chat.Id, text: "Статус заявки изменен."); - } - else - { - await botClient.SendMessage(chatId: message.Chat.Id, text: "Неверный формат команды. Используйте /change_status <новый статус>."); - } - } + await ViewReports(botClient, message.Chat.Id); } else if (usersWaitingForReport.ContainsKey(message.Chat.Id) && usersWaitingForReport[message.Chat.Id]) { @@ -154,8 +135,9 @@ class Program } else { - await botClient.SendMessage(chatId: message.Chat.Id, text: "Неизвестная команда. Используйте /start."); - Log.Information("Ответ на неизвестную команду отправлен."); + // Ответ на нераспознанные сообщения + await botClient.SendMessage(chatId: message.Chat.Id, text: "Неизвестная команда. Используйте кнопки для навигации."); + Log.Information("Ответ на неизвестную команду с кнопками отправлен."); } } catch (Exception ex) @@ -261,35 +243,6 @@ class Program } } - private static async Task ChangeReportStatus(long reportId, string newStatus) - { - string connectionString = "Data Source=bot.db"; - - try - { - using (var connection = new SqliteConnection(connectionString)) - { - await connection.OpenAsync(); - var command = connection.CreateCommand(); - command.CommandText = - @" - UPDATE Reports - SET Status = @Status - WHERE Id = @Id; - "; - command.Parameters.AddWithValue("@Status", newStatus); - command.Parameters.AddWithValue("@Id", reportId); - - await command.ExecuteNonQueryAsync(); - Log.Information($"Статус заявки с ID {reportId} изменен на {newStatus}."); - } - } - catch (Exception ex) - { - Log.Error($"Ошибка при изменении статуса заявки: {ex.Message}"); - } - } - private static Task HandleErrorAsync(ITelegramBotClient botClient, Exception exception, CancellationToken cancellationToken) { Log.Error($"Ошибка в процессе работы с ботом: {exception.Message}");