Улучшение обработки сообщений в классе Program
Внесены значительные изменения в код класса `Program` в файле `Program.cs`. Удалены класс `ReportData` и перечисление `ReportStep`. Добавлены новые методы для обработки обновлений от Telegram: `DeletePreviousMessage`, `HandleUpdateAsync` и `SendMainMenu`. Улучшена логика обработки сообщений с новыми проверками для администраторов и возможностью просмотра отчетов. Добавлены новые сообщения для пользователей для улучшения взаимодействия и информирования о статусе заявок.
This commit is contained in:
parent
87b9df5fd1
commit
52dd321f1d
73
Program.cs
73
Program.cs
@ -86,22 +86,7 @@ class Program
|
||||
// Ожидаем отмены через token
|
||||
cts.Token.WaitHandle.WaitOne();
|
||||
}
|
||||
private class ReportData
|
||||
{
|
||||
public ReportStep Step { get; set; }
|
||||
public string Priority { get; set; } = string.Empty;
|
||||
public string Room { get; set; } = string.Empty;
|
||||
public string Description { get; set; } = string.Empty;
|
||||
public string FullName { get; set; } = string.Empty;
|
||||
}
|
||||
private enum ReportStep
|
||||
{
|
||||
Priority,
|
||||
Room,
|
||||
Description,
|
||||
FullName,
|
||||
Completed
|
||||
}
|
||||
|
||||
private static async Task DeletePreviousMessage(ITelegramBotClient botClient, long chatId, int messageId)
|
||||
{
|
||||
try
|
||||
@ -114,7 +99,7 @@ class Program
|
||||
Log.Error($"Ошибка при удалении сообщения {messageId} в чате {chatId}: {ex.Message}");
|
||||
}
|
||||
}
|
||||
private static Dictionary<long, ReportData> reportCreation = new Dictionary<long, ReportData>();
|
||||
|
||||
|
||||
private static async Task HandleUpdateAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken)
|
||||
{
|
||||
@ -141,51 +126,9 @@ class Program
|
||||
|
||||
if (data == "report")
|
||||
{
|
||||
// Начинаем процесс создания заявки с запроса приоритета
|
||||
reportCreation[chatId] = new ReportData { Step = ReportStep.Priority };
|
||||
|
||||
var priorityKeyboard = new InlineKeyboardMarkup(new[]
|
||||
{
|
||||
new[] {
|
||||
InlineKeyboardButton.WithCallbackData("Низкий", "priority_low")
|
||||
},
|
||||
new[] {
|
||||
InlineKeyboardButton.WithCallbackData("Средний", "priority_medium")
|
||||
},
|
||||
new[] {
|
||||
InlineKeyboardButton.WithCallbackData("Высокий", "priority_high")
|
||||
},
|
||||
new[] {
|
||||
InlineKeyboardButton.WithCallbackData("Отмена", "cancel_report")
|
||||
}
|
||||
});
|
||||
|
||||
await botClient.SendMessage(chatId, "Выберите приоритет заявки:", replyMarkup: priorityKeyboard);
|
||||
Log.Information($"Пользователь {chatId} начал создание заявки - выбор приоритета");
|
||||
}
|
||||
else if (data != null && data.StartsWith("priority_"))
|
||||
{
|
||||
// Обрабатываем выбор приоритета
|
||||
if (reportCreation.TryGetValue(chatId, out var reportData))
|
||||
{
|
||||
string priority = data.Substring(9) switch
|
||||
{
|
||||
"low" => "Низкий",
|
||||
"medium" => "Средний",
|
||||
"high" => "Высокий",
|
||||
_ => "Не указан"
|
||||
};
|
||||
|
||||
reportData.Priority = priority;
|
||||
reportData.Step = ReportStep.Room;
|
||||
|
||||
var cancelKeyboard = new InlineKeyboardMarkup(new[]
|
||||
{
|
||||
new[] { InlineKeyboardButton.WithCallbackData("Отмена", "cancel_report") }
|
||||
});
|
||||
|
||||
await botClient.SendMessage(chatId, "Введите номер кабинета:", replyMarkup: cancelKeyboard);
|
||||
Log.Information($"Пользователь {chatId} выбрал приоритет {priority}");
|
||||
usersWaitingForReport[chatId] = true;
|
||||
await botClient.SendMessage(chatId, "Пожалуйста, отправьте описание проблемы.");
|
||||
Log.Information($"Пользователь {chatId} начал создание заявки");
|
||||
}
|
||||
else if (data == "admin_panel")
|
||||
{
|
||||
@ -369,7 +312,6 @@ class Program
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error($"Ошибка при обработке обновлений: {ex.Message}");
|
||||
@ -410,6 +352,11 @@ class Program
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private static async Task SendMainMenu(ITelegramBotClient botClient, long chatId)
|
||||
{
|
||||
var keyboard = new InlineKeyboardMarkup(new[]
|
||||
|
Loading…
x
Reference in New Issue
Block a user