тест кнопки

This commit is contained in:
student 2025-03-19 13:42:02 +07:00
parent 8978283ed1
commit 3af560386d

View File

@ -90,18 +90,15 @@ class Program
{ {
try try
{ {
if (update.Type != UpdateType.Message || update.Message?.Text == null) if (update.Type == UpdateType.Message && update.Message?.Text != null)
return; {
var message = update.Message; var message = update.Message;
Log.Information($"Получено сообщение от {message.Chat.Id}: {message.Text}"); Log.Information($"Получено сообщение от {message.Chat.Id}: {message.Text}");
if (message.Text == "/start") if (message.Text == "/start")
{ {
// Отправляем главное меню с кнопками var keyboard = new InlineKeyboardMarkup(new[] {
var keyboard = new InlineKeyboardMarkup(new[] new InlineKeyboardButton[]
{
new InlineKeyboardButton[] // Кнопки для навигации
{ {
InlineKeyboardButton.WithCallbackData("Подать заявку", "report"), InlineKeyboardButton.WithCallbackData("Подать заявку", "report"),
InlineKeyboardButton.WithCallbackData("Просмотр заявок", "view_reports") InlineKeyboardButton.WithCallbackData("Просмотр заявок", "view_reports")
@ -115,29 +112,23 @@ class Program
); );
Log.Information($"Ответ на команду /start с кнопками отправлен."); Log.Information($"Ответ на команду /start с кнопками отправлен.");
} }
else if (message.Text == "report") }
else if (update.Type == UpdateType.CallbackQuery) // Обработка callback
{ {
usersWaitingForReport[message.Chat.Id] = true; // Отметить, что пользователь должен отправить описание var callbackQuery = update.CallbackQuery;
await botClient.SendMessage(chatId: message.Chat.Id, text: "Пожалуйста, отправьте описание проблемы."); if (callbackQuery.Data == "report")
{
usersWaitingForReport[callbackQuery.Message.Chat.Id] = true;
await botClient.SendMessage(chatId: callbackQuery.Message.Chat.Id, text: "Пожалуйста, отправьте описание проблемы.");
Log.Information("Ответ на кнопку 'Подать заявку' отправлен."); Log.Information("Ответ на кнопку 'Подать заявку' отправлен.");
} }
else if (admins.Contains(message.Chat.Id) && message.Text == "view_reports") else if (callbackQuery.Data == "view_reports" && admins.Contains(callbackQuery.Message.Chat.Id))
{ {
await ViewReports(botClient, message.Chat.Id); await ViewReports(botClient, callbackQuery.Message.Chat.Id);
} }
else if (usersWaitingForReport.ContainsKey(message.Chat.Id) && usersWaitingForReport[message.Chat.Id])
{ // Не забывайте отправить ответ на callback, чтобы Telegram не просил повторно нажать кнопку
string problemDescription = message.Text; await botClient.AnswerCallbackQueryAsync(callbackQuery.Id);
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("Ответ на неизвестную команду с кнопками отправлен.");
} }
} }
catch (Exception ex) catch (Exception ex)