еще откат

This commit is contained in:
Professional 2025-03-19 22:48:53 +07:00
parent 483e8bb622
commit 9738200d35

View File

@ -250,154 +250,156 @@ class Program
} }
return; return;
} }
}
else if (data == "admin_panel")
{ else if (data == "admin_panel")
if (admins.Contains(chatId)) {
{ if (admins.Contains(chatId))
await SendAdminPanel(botClient, chatId);
}
else
{
var authMessage = await botClient.SendMessage(chatId, "⛔ Вы не являетесь администратором!");
Log.Information($"Неавторизованный доступ к админ-панели от {chatId}");
await Task.Delay(2000);
await botClient.DeleteMessage(chatId, authMessage.MessageId);
await SendMainMenu(botClient, chatId);
}
}
else if (data == "view_reports")
{
if (admins.Contains(chatId))
{
await ViewReports(botClient, chatId);
}
else
{
var authMessage = await botClient.SendMessage(chatId, "⛔ Вы не являетесь администратором!");
Log.Information($"Неавторизованный доступ к заявкам от {chatId}");
await Task.Delay(2000);
await botClient.DeleteMessage(chatId, authMessage.MessageId);
await SendMainMenu(botClient, chatId);
}
}
else if (data == "view_archived_reports")
{
if (admins.Contains(chatId))
{
await ViewArchivedReports(botClient, chatId);
}
else
{
var authMessage = await botClient.SendMessage(chatId, "⛔ Вы не являетесь администратором!");
Log.Information($"Неавторизованный доступ к архиву заявок от {chatId}");
await Task.Delay(2000);
await botClient.DeleteMessage(chatId, authMessage.MessageId);
await SendMainMenu(botClient, chatId);
}
}
else if (data != null && data.StartsWith("report_"))
{
long reportId = long.Parse(data.Substring(7));
if (callbackQuery?.Message?.MessageId != null)
{
int messageId = callbackQuery.Message.MessageId;
await ShowReportDetails(botClient, chatId, reportId, messageId);
}
}
else if (data != null && data.StartsWith("status_"))
{
string[] parts = data.Split('_');
long reportId = long.Parse(parts[1]);
string newStatus = parts[2];
if (callbackQuery?.Message?.MessageId != null)
{
int messageId = callbackQuery.Message.MessageId;
await UpdateReportStatus(reportId, newStatus, chatId);
await ShowReportDetails(botClient, chatId, reportId, messageId);
}
}
else if (data != null && data.StartsWith("delete_"))
{
long reportId = long.Parse(data.Substring(7));
await DeleteReport(botClient, chatId, reportId);
}
else if (data == "back_to_list")
{
await ViewReports(botClient, chatId);
}
else if (data == "back_to_admin_panel")
{ {
await SendAdminPanel(botClient, chatId); await SendAdminPanel(botClient, chatId);
} }
else if (data == "main_menu") else
{ {
var authMessage = await botClient.SendMessage(chatId, "⛔ Вы не являетесь администратором!");
Log.Information($"Неавторизованный доступ к админ-панели от {chatId}");
await Task.Delay(2000);
await botClient.DeleteMessage(chatId, authMessage.MessageId);
await SendMainMenu(botClient, chatId); await SendMainMenu(botClient, chatId);
} }
else if (data != null && data.StartsWith("priority_")) }
else if (data == "view_reports")
{
if (admins.Contains(chatId))
{ {
string priority = data.Substring(9); await ViewReports(botClient, chatId);
userReports[chatId].Priority = priority;
userReportSteps[chatId] = 2;
await botClient.SendMessage(chatId, "Пожалуйста, укажите кабинет.");
} }
else
{
var authMessage = await botClient.SendMessage(chatId, "⛔ Вы не являетесь администратором!");
Log.Information($"Неавторизованный доступ к заявкам от {chatId}");
await Task.Delay(2000);
await botClient.DeleteMessage(chatId, authMessage.MessageId);
await SendMainMenu(botClient, chatId);
}
}
else if (data == "view_archived_reports")
{
if (admins.Contains(chatId))
{
await ViewArchivedReports(botClient, chatId);
}
else
{
var authMessage = await botClient.SendMessage(chatId, "⛔ Вы не являетесь администратором!");
Log.Information($"Неавторизованный доступ к архиву заявок от {chatId}");
await Task.Delay(2000);
await botClient.DeleteMessage(chatId, authMessage.MessageId);
await SendMainMenu(botClient, chatId);
}
}
else if (data != null && data.StartsWith("report_"))
{
long reportId = long.Parse(data.Substring(7));
if (callbackQuery?.Message?.MessageId != null)
{
int messageId = callbackQuery.Message.MessageId;
await ShowReportDetails(botClient, chatId, reportId, messageId);
}
}
else if (data != null && data.StartsWith("status_"))
{
string[] parts = data.Split('_');
long reportId = long.Parse(parts[1]);
string newStatus = parts[2];
if (callbackQuery?.Message?.MessageId != null)
{
int messageId = callbackQuery.Message.MessageId;
await UpdateReportStatus(reportId, newStatus, chatId);
await ShowReportDetails(botClient, chatId, reportId, messageId);
}
}
else if (data != null && data.StartsWith("delete_"))
{
long reportId = long.Parse(data.Substring(7));
await DeleteReport(botClient, chatId, reportId);
}
else if (data == "back_to_list")
{
await ViewReports(botClient, chatId);
}
else if (data == "back_to_admin_panel")
{
await SendAdminPanel(botClient, chatId);
}
else if (data == "main_menu")
{
await SendMainMenu(botClient, chatId);
}
else if (data != null && data.StartsWith("priority_"))
{
string priority = data.Substring(9);
userReports[chatId].Priority = priority;
userReportSteps[chatId] = 2;
await botClient.SendMessage(chatId, "Пожалуйста, укажите кабинет.");
}
}
}
// Обработка текстовых сообщений
if (update.Type == UpdateType.Message && update.Message?.Text != null)
{
var message = update.Message;
Log.Information($"Получено сообщение от {message.Chat.Id}: {message.Text}");
if (message.Text.StartsWith("/admin"))
{
string[] parts = message.Text.Split(' ');
if (parts.Length == 2 && parts[1] == adminPassword)
{
admins.Add(message.Chat.Id);
// Сохраняем администратора в базу данных
await SaveAdminToDatabase(message.Chat.Id);
var authMessage = await botClient.SendMessage(message.Chat.Id, "✅ Вы авторизованы как администратор!");
Log.Information($"Новый администратор: {message.Chat.Id}");
await Task.Delay(2000);
await botClient.DeleteMessage(message.Chat.Id, authMessage.MessageId);
await SendMainMenu(botClient, message.Chat.Id);
}
else
{
var authMessage = await botClient.SendMessage(message.Chat.Id, "❌ Неверный пароль!");
await Task.Delay(2000);
await botClient.DeleteMessage(message.Chat.Id, authMessage.MessageId);
await SendMainMenu(botClient, message.Chat.Id);
}
return;
}
// В блоке для обработки текстовых сообщений
else if (message.Text == "/admins")
{
if (admins.Contains(message.Chat.Id))
{
await ShowAdminsList(botClient, message.Chat.Id);
}
else
{
var authMessage = await botClient.SendMessage(
chatId: message.Chat.Id,
text: "⛔ У вас нет прав для просмотра списка администраторов!"
);
await Task.Delay(2000);
await botClient.DeleteMessage(message.Chat.Id, authMessage.MessageId);
await SendMainMenu(botClient, message.Chat.Id);
} }
} }
// Обработка текстовых сообщений if (message.Text == "/start")
if (update.Type == UpdateType.Message && update.Message?.Text != null)
{ {
var message = update.Message; var keyboard = new InlineKeyboardMarkup(new[]
Log.Information($"Получено сообщение от {message.Chat.Id}: {message.Text}");
if (message.Text.StartsWith("/admin"))
{ {
string[] parts = message.Text.Split(' ');
if (parts.Length == 2 && parts[1] == adminPassword)
{
admins.Add(message.Chat.Id);
// Сохраняем администратора в базу данных
await SaveAdminToDatabase(message.Chat.Id);
var authMessage = await botClient.SendMessage(message.Chat.Id, "✅ Вы авторизованы как администратор!");
Log.Information($"Новый администратор: {message.Chat.Id}");
await Task.Delay(2000);
await botClient.DeleteMessage(message.Chat.Id, authMessage.MessageId);
await SendMainMenu(botClient, message.Chat.Id);
}
else
{
var authMessage = await botClient.SendMessage(message.Chat.Id, "❌ Неверный пароль!");
await Task.Delay(2000);
await botClient.DeleteMessage(message.Chat.Id, authMessage.MessageId);
await SendMainMenu(botClient, message.Chat.Id);
}
return;
}
// В блоке для обработки текстовых сообщений
else if (message.Text == "/admins")
{
if (admins.Contains(message.Chat.Id))
{
await ShowAdminsList(botClient, message.Chat.Id);
}
else
{
var authMessage = await botClient.SendMessage(
chatId: message.Chat.Id,
text: "⛔ У вас нет прав для просмотра списка администраторов!"
);
await Task.Delay(2000);
await botClient.DeleteMessage(message.Chat.Id, authMessage.MessageId);
await SendMainMenu(botClient, message.Chat.Id);
}
}
if (message.Text == "/start")
{
var keyboard = new InlineKeyboardMarkup(new[]
{
new[] new[]
{ {
InlineKeyboardButton.WithCallbackData("Подать заявку", "report"), InlineKeyboardButton.WithCallbackData("Подать заявку", "report"),
@ -405,56 +407,55 @@ class Program
} }
}); });
await botClient.SendMessage( await botClient.SendMessage(
chatId: message.Chat.Id, chatId: message.Chat.Id,
text: "Привет! Я бот для сбора заявок на ремонт оборудования.", text: "Привет! Я бот для сбора заявок на ремонт оборудования.",
replyMarkup: keyboard replyMarkup: keyboard
); );
Log.Information($"Ответ на команду /start с кнопками отправлен."); Log.Information($"Ответ на команду /start с кнопками отправлен.");
} }
else if (usersWaitingForReport.TryGetValue(message.Chat.Id, out bool isWaiting) && isWaiting) else if (usersWaitingForReport.TryGetValue(message.Chat.Id, out bool isWaiting) && isWaiting)
{
if (userReportSteps.TryGetValue(message.Chat.Id, out int step))
{ {
if (userReportSteps.TryGetValue(message.Chat.Id, out int step)) switch (step)
{ {
switch (step) case 2:
{ userReports[message.Chat.Id].Room = message.Text;
case 2: userReportSteps[message.Chat.Id] = 3;
userReports[message.Chat.Id].Room = message.Text; await botClient.SendMessage(message.Chat.Id, "Пожалуйста, опишите проблему.");
userReportSteps[message.Chat.Id] = 3; break;
await botClient.SendMessage(message.Chat.Id, "Пожалуйста, опишите проблему."); case 3:
break; userReports[message.Chat.Id].Description = message.Text;
case 3: userReportSteps[message.Chat.Id] = 4;
userReports[message.Chat.Id].Description = message.Text; await botClient.SendMessage(message.Chat.Id, "Пожалуйста, укажите ваше ФИО.");
userReportSteps[message.Chat.Id] = 4; break;
await botClient.SendMessage(message.Chat.Id, "Пожалуйста, укажите ваше ФИО."); case 4:
break; userReports[message.Chat.Id].ReporterName = message.Text;
case 4: await SaveReportToDatabase(message.Chat.Id, userReports[message.Chat.Id]);
userReports[message.Chat.Id].ReporterName = message.Text; var mainMenuKeyboard = new InlineKeyboardMarkup(new[]
await SaveReportToDatabase(message.Chat.Id, userReports[message.Chat.Id]); {
var mainMenuKeyboard = new InlineKeyboardMarkup(new[]
{
new[] new[]
{ {
InlineKeyboardButton.WithCallbackData("Главное меню", "main_menu") InlineKeyboardButton.WithCallbackData("Главное меню", "main_menu")
} }
}); });
await botClient.SendMessage( await botClient.SendMessage(
message.Chat.Id, message.Chat.Id,
"✅ Спасибо за заявку! Мы обработаем её в ближайшее время.", "✅ Спасибо за заявку! Мы обработаем её в ближайшее время.",
replyMarkup: mainMenuKeyboard replyMarkup: mainMenuKeyboard
); );
usersWaitingForReport[message.Chat.Id] = false; usersWaitingForReport[message.Chat.Id] = false;
userReportSteps.Remove(message.Chat.Id); userReportSteps.Remove(message.Chat.Id);
userReports.Remove(message.Chat.Id); userReports.Remove(message.Chat.Id);
Log.Information($"Заявка пользователя {message.Chat.Id} сохранена в базе данных."); Log.Information($"Заявка пользователя {message.Chat.Id} сохранена в базе данных.");
break; break;
}
} }
} }
else }
{ else
await botClient.SendMessage(message.Chat.Id, " Используйте команду /start для начала работы с ботом."); {
} await botClient.SendMessage(message.Chat.Id, " Используйте команду /start для начала работы с ботом.");
} }
} }
} }