This commit is contained in:
student 2025-03-19 14:14:02 +07:00
parent 23815ab435
commit 9b39ea4440

View File

@ -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)