откат
This commit is contained in:
parent
34b201d3e0
commit
ed8bd53aef
365
Program.cs
365
Program.cs
@ -135,17 +135,137 @@ class Program
|
||||
userReports[chatId] = new Report();
|
||||
var priorityKeyboard = new InlineKeyboardMarkup(new[]
|
||||
{
|
||||
new[]
|
||||
{
|
||||
InlineKeyboardButton.WithCallbackData("Низкий", "priority_low"),
|
||||
InlineKeyboardButton.WithCallbackData("Средний", "priority_medium"),
|
||||
InlineKeyboardButton.WithCallbackData("Высокий", "priority_high")
|
||||
}
|
||||
});
|
||||
new[]
|
||||
{
|
||||
InlineKeyboardButton.WithCallbackData("Низкий", "priority_low"),
|
||||
InlineKeyboardButton.WithCallbackData("Средний", "priority_medium"),
|
||||
InlineKeyboardButton.WithCallbackData("Высокий", "priority_high")
|
||||
}
|
||||
});
|
||||
await botClient.SendMessage(chatId, "Пожалуйста, выберите приоритет:", replyMarkup: priorityKeyboard);
|
||||
Log.Information($"Пользователь {chatId} начал создание заявки");
|
||||
}
|
||||
else if (data == "admin_panel")
|
||||
else if (data == "admin_settings")
|
||||
{
|
||||
if (admins.Contains(chatId))
|
||||
{
|
||||
await ShowAdminSettings(botClient, chatId);
|
||||
}
|
||||
else
|
||||
{
|
||||
await botClient.SendMessage(chatId, "⛔ У вас нет прав для доступа к настройкам администраторов!");
|
||||
await Task.Delay(2000);
|
||||
await SendMainMenu(botClient, chatId);
|
||||
}
|
||||
}
|
||||
else if (data == "view_admins")
|
||||
{
|
||||
if (admins.Contains(chatId))
|
||||
{
|
||||
await ShowAdminsList(botClient, chatId);
|
||||
}
|
||||
else
|
||||
{
|
||||
await botClient.SendMessage(chatId, "⛔ У вас нет прав для просмотра администраторов!");
|
||||
await Task.Delay(2000);
|
||||
await SendMainMenu(botClient, chatId);
|
||||
}
|
||||
}
|
||||
else if (data != null && data.StartsWith("removeadmin_"))
|
||||
{
|
||||
long adminIdToRemove = long.Parse(data.Substring(11));
|
||||
|
||||
// Проверяем, что пользователь является администратором
|
||||
if (admins.Contains(chatId))
|
||||
{
|
||||
// Проверяем, не пытается ли пользователь удалить себя
|
||||
if (adminIdToRemove == chatId)
|
||||
{
|
||||
await botClient.SendMessage(
|
||||
chatId: chatId,
|
||||
text: "⚠️ Вы не можете удалить себя из администраторов!"
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
await RemoveAdminFromDatabase(adminIdToRemove);
|
||||
|
||||
string username = "администратор";
|
||||
try
|
||||
{
|
||||
var user = await botClient.GetChat(adminIdToRemove);
|
||||
username = user.Username ?? user.FirstName ?? "администратор";
|
||||
}
|
||||
catch { }
|
||||
|
||||
await botClient.SendMessage(
|
||||
chatId: chatId,
|
||||
text: $"✅ Пользователь {username} (ID: {adminIdToRemove}) удален из администраторов."
|
||||
);
|
||||
|
||||
await Task.Delay(2000);
|
||||
await ShowAdminsList(botClient, chatId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
await botClient.SendMessage(chatId, "⛔ У вас нет прав для удаления администраторов!");
|
||||
await Task.Delay(2000);
|
||||
await SendMainMenu(botClient, chatId);
|
||||
}
|
||||
}
|
||||
|
||||
// Также добавим обработку команды /removeadmin в секцию обработки текстовых сообщений:
|
||||
|
||||
// В блоке для обработки текстовых сообщений (после if (message.Text.StartsWith("/admin")))
|
||||
else 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
|
||||
{
|
||||
await botClient.SendMessage(
|
||||
chatId: message.Chat.Id,
|
||||
text: "⛔ У вас нет прав для просмотра списка администраторов!"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if (data == "admin_panel")
|
||||
{
|
||||
if (admins.Contains(chatId))
|
||||
{
|
||||
@ -235,143 +355,116 @@ class Program
|
||||
userReportSteps[chatId] = 2;
|
||||
await botClient.SendMessage(chatId, "Пожалуйста, укажите кабинет.");
|
||||
}
|
||||
else if (data != null && data.StartsWith("removeadmin_"))
|
||||
{
|
||||
long adminIdToRemove = long.Parse(data.Substring(11));
|
||||
|
||||
// Проверяем, что пользователь является администратором
|
||||
if (admins.Contains(chatId))
|
||||
{
|
||||
// Проверяем, не пытается ли пользователь удалить себя
|
||||
if (adminIdToRemove == chatId)
|
||||
{
|
||||
await botClient.SendMessage(
|
||||
chatId: chatId,
|
||||
text: "⚠️ Вы не можете удалить себя из администраторов!"
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
await RemoveAdminFromDatabase(adminIdToRemove);
|
||||
|
||||
string username = "администратор";
|
||||
try
|
||||
{
|
||||
var user = await botClient.GetChat(adminIdToRemove);
|
||||
username = user.Username ?? user.FirstName ?? "администратор";
|
||||
}
|
||||
catch { }
|
||||
|
||||
await botClient.SendMessage(
|
||||
chatId: chatId,
|
||||
text: $"✅ Пользователь {username} (ID: {adminIdToRemove}) удален из администраторов."
|
||||
);
|
||||
|
||||
await Task.Delay(2000);
|
||||
await ShowAdminsList(botClient, chatId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
await botClient.SendMessage(chatId, "⛔ У вас нет прав для удаления администраторов!");
|
||||
await Task.Delay(2000);
|
||||
await SendMainMenu(botClient, chatId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Обработка текстовых сообщений
|
||||
if (update.Type == UpdateType.Message && update.Message?.Text != null)
|
||||
// Обработка текстовых сообщений
|
||||
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"))
|
||||
{
|
||||
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)
|
||||
{
|
||||
string[] parts = message.Text.Split(' ');
|
||||
if (parts.Length == 2 && parts[1] == adminPassword)
|
||||
{
|
||||
admins.Add(message.Chat.Id);
|
||||
// Сохраняем администратора в базу данных
|
||||
await SaveAdminToDatabase(message.Chat.Id);
|
||||
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;
|
||||
}
|
||||
|
||||
if (message.Text == "/start")
|
||||
{
|
||||
var keyboard = new InlineKeyboardMarkup(new[]
|
||||
{
|
||||
new[]
|
||||
{
|
||||
InlineKeyboardButton.WithCallbackData("Подать заявку", "report"),
|
||||
InlineKeyboardButton.WithCallbackData("Панель администратора", "admin_panel")
|
||||
}
|
||||
});
|
||||
|
||||
await botClient.SendMessage(
|
||||
chatId: message.Chat.Id,
|
||||
text: "Привет! Я бот для сбора заявок на ремонт оборудования.",
|
||||
replyMarkup: keyboard
|
||||
);
|
||||
Log.Information($"Ответ на команду /start с кнопками отправлен.");
|
||||
}
|
||||
else if (usersWaitingForReport.TryGetValue(message.Chat.Id, out bool isWaiting) && isWaiting)
|
||||
{
|
||||
if (userReportSteps.TryGetValue(message.Chat.Id, out int step))
|
||||
{
|
||||
switch (step)
|
||||
{
|
||||
case 2:
|
||||
userReports[message.Chat.Id].Room = message.Text;
|
||||
userReportSteps[message.Chat.Id] = 3;
|
||||
await botClient.SendMessage(message.Chat.Id, "Пожалуйста, опишите проблему.");
|
||||
break;
|
||||
case 3:
|
||||
userReports[message.Chat.Id].Description = message.Text;
|
||||
userReportSteps[message.Chat.Id] = 4;
|
||||
await botClient.SendMessage(message.Chat.Id, "Пожалуйста, укажите ваше ФИО.");
|
||||
break;
|
||||
case 4:
|
||||
userReports[message.Chat.Id].ReporterName = message.Text;
|
||||
await SaveReportToDatabase(message.Chat.Id, userReports[message.Chat.Id]);
|
||||
var mainMenuKeyboard = new InlineKeyboardMarkup(new[]
|
||||
{
|
||||
new[]
|
||||
{
|
||||
InlineKeyboardButton.WithCallbackData("Главное меню", "main_menu")
|
||||
}
|
||||
});
|
||||
await botClient.SendMessage(
|
||||
message.Chat.Id,
|
||||
"✅ Спасибо за заявку! Мы обработаем её в ближайшее время.",
|
||||
replyMarkup: mainMenuKeyboard
|
||||
);
|
||||
usersWaitingForReport[message.Chat.Id] = false;
|
||||
userReportSteps.Remove(message.Chat.Id);
|
||||
userReports.Remove(message.Chat.Id);
|
||||
Log.Information($"Заявка пользователя {message.Chat.Id} сохранена в базе данных.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
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
|
||||
{
|
||||
await botClient.SendMessage(message.Chat.Id, "ℹ️ Используйте команду /start для начала работы с ботом.");
|
||||
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
|
||||
{
|
||||
await botClient.SendMessage(
|
||||
chatId: message.Chat.Id,
|
||||
text: "⛔ У вас нет прав для просмотра списка администраторов!"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (message.Text == "/start")
|
||||
{
|
||||
var keyboard = new InlineKeyboardMarkup(new[]
|
||||
{
|
||||
new[]
|
||||
{
|
||||
InlineKeyboardButton.WithCallbackData("Подать заявку", "report"),
|
||||
InlineKeyboardButton.WithCallbackData("Панель администратора", "admin_panel")
|
||||
}
|
||||
});
|
||||
|
||||
await botClient.SendMessage(
|
||||
chatId: message.Chat.Id,
|
||||
text: "Привет! Я бот для сбора заявок на ремонт оборудования.",
|
||||
replyMarkup: keyboard
|
||||
);
|
||||
Log.Information($"Ответ на команду /start с кнопками отправлен.");
|
||||
}
|
||||
else if (usersWaitingForReport.TryGetValue(message.Chat.Id, out bool isWaiting) && isWaiting)
|
||||
{
|
||||
if (userReportSteps.TryGetValue(message.Chat.Id, out int step))
|
||||
{
|
||||
switch (step)
|
||||
{
|
||||
case 2:
|
||||
userReports[message.Chat.Id].Room = message.Text;
|
||||
userReportSteps[message.Chat.Id] = 3;
|
||||
await botClient.SendMessage(message.Chat.Id, "Пожалуйста, опишите проблему.");
|
||||
break;
|
||||
case 3:
|
||||
userReports[message.Chat.Id].Description = message.Text;
|
||||
userReportSteps[message.Chat.Id] = 4;
|
||||
await botClient.SendMessage(message.Chat.Id, "Пожалуйста, укажите ваше ФИО.");
|
||||
break;
|
||||
case 4:
|
||||
userReports[message.Chat.Id].ReporterName = message.Text;
|
||||
await SaveReportToDatabase(message.Chat.Id, userReports[message.Chat.Id]);
|
||||
var mainMenuKeyboard = new InlineKeyboardMarkup(new[]
|
||||
{
|
||||
new[]
|
||||
{
|
||||
InlineKeyboardButton.WithCallbackData("Главное меню", "main_menu")
|
||||
}
|
||||
});
|
||||
await botClient.SendMessage(
|
||||
message.Chat.Id,
|
||||
"✅ Спасибо за заявку! Мы обработаем её в ближайшее время.",
|
||||
replyMarkup: mainMenuKeyboard
|
||||
);
|
||||
usersWaitingForReport[message.Chat.Id] = false;
|
||||
userReportSteps.Remove(message.Chat.Id);
|
||||
userReports.Remove(message.Chat.Id);
|
||||
Log.Information($"Заявка пользователя {message.Chat.Id} сохранена в базе данных.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
await botClient.SendMessage(message.Chat.Id, "ℹ️ Используйте команду /start для начала работы с ботом.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user