diff --git a/Program.cs b/Program.cs index 2a8c76e..5da135b 100644 --- a/Program.cs +++ b/Program.cs @@ -90,54 +90,45 @@ class Program { try { - 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") + if (update.Type == UpdateType.Message && update.Message?.Text != null) { - // Отправляем главное меню с кнопками - var keyboard = new InlineKeyboardMarkup(new[] + var message = update.Message; + Log.Information($"Получено сообщение от {message.Chat.Id}: {message.Text}"); + + if (message.Text == "/start") { - new InlineKeyboardButton[] // Кнопки для навигации - { - InlineKeyboardButton.WithCallbackData("Подать заявку", "report"), - InlineKeyboardButton.WithCallbackData("Просмотр заявок", "view_reports") - } - }); + 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 с кнопками отправлен."); + await botClient.SendMessage( + chatId: message.Chat.Id, + text: "Привет! Я бот для сбора заявок на ремонт оборудования.", + replyMarkup: keyboard + ); + Log.Information($"Ответ на команду /start с кнопками отправлен."); + } } - else if (message.Text == "report") + else if (update.Type == UpdateType.CallbackQuery) // Обработка callback { - 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("Ответ на неизвестную команду с кнопками отправлен."); + 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); } } catch (Exception ex)