реализация кнопок
This commit is contained in:
parent
0946c2dcb9
commit
8978283ed1
95
Program.cs
95
Program.cs
@ -9,6 +9,7 @@ using Serilog;
|
|||||||
using Telegram.Bot;
|
using Telegram.Bot;
|
||||||
using Telegram.Bot.Types;
|
using Telegram.Bot.Types;
|
||||||
using Telegram.Bot.Types.Enums;
|
using Telegram.Bot.Types.Enums;
|
||||||
|
using Telegram.Bot.Types.ReplyMarkups;
|
||||||
|
|
||||||
class Program
|
class Program
|
||||||
{
|
{
|
||||||
@ -50,7 +51,7 @@ class Program
|
|||||||
{
|
{
|
||||||
// Инициализация клиента бота
|
// Инициализация клиента бота
|
||||||
_botClient = new TelegramBotClient(_botToken);
|
_botClient = new TelegramBotClient(_botToken);
|
||||||
var me = await _botClient.GetMeAsync();
|
var me = await _botClient.GetMe(); // Добавили await для получения объекта User
|
||||||
Log.Information($"Бот {me.FirstName} запущен! ID: {me.Id}");
|
Log.Information($"Бот {me.FirstName} запущен! ID: {me.Id}");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@ -97,53 +98,33 @@ class Program
|
|||||||
|
|
||||||
if (message.Text == "/start")
|
if (message.Text == "/start")
|
||||||
{
|
{
|
||||||
await botClient.SendMessage(chatId: message.Chat.Id, text: "Привет! Я бот для сбора заявок на ремонт оборудования. Отправь /report для подачи заявки.");
|
// Отправляем главное меню с кнопками
|
||||||
Log.Information($"Ответ на команду /start отправлен.");
|
var keyboard = new InlineKeyboardMarkup(new[]
|
||||||
|
{
|
||||||
|
new InlineKeyboardButton[] // Кнопки для навигации
|
||||||
|
{
|
||||||
|
InlineKeyboardButton.WithCallbackData("Подать заявку", "report"),
|
||||||
|
InlineKeyboardButton.WithCallbackData("Просмотр заявок", "view_reports")
|
||||||
}
|
}
|
||||||
else if (message.Text == "/report")
|
});
|
||||||
|
|
||||||
|
await botClient.SendMessage(
|
||||||
|
chatId: message.Chat.Id,
|
||||||
|
text: "Привет! Я бот для сбора заявок на ремонт оборудования.",
|
||||||
|
replyMarkup: keyboard
|
||||||
|
);
|
||||||
|
Log.Information($"Ответ на команду /start с кнопками отправлен.");
|
||||||
|
}
|
||||||
|
else if (message.Text == "report")
|
||||||
{
|
{
|
||||||
usersWaitingForReport[message.Chat.Id] = true; // Отметить, что пользователь должен отправить описание
|
usersWaitingForReport[message.Chat.Id] = true; // Отметить, что пользователь должен отправить описание
|
||||||
await botClient.SendMessage(chatId: message.Chat.Id, text: "Пожалуйста, отправьте описание проблемы.");
|
await botClient.SendMessage(chatId: message.Chat.Id, text: "Пожалуйста, отправьте описание проблемы.");
|
||||||
Log.Information("Ответ на команду /report отправлен.");
|
Log.Information("Ответ на кнопку 'Подать заявку' отправлен.");
|
||||||
}
|
}
|
||||||
else if (message.Text.StartsWith("/admin"))
|
else if (admins.Contains(message.Chat.Id) && message.Text == "view_reports")
|
||||||
{
|
|
||||||
string passwordAttempt = message.Text.Substring(7); // Получаем пароль, который ввел пользователь
|
|
||||||
|
|
||||||
if (passwordAttempt == adminPassword)
|
|
||||||
{
|
|
||||||
admins.Add(message.Chat.Id); // Назначаем пользователя администратором
|
|
||||||
await botClient.SendMessage(chatId: message.Chat.Id, text: "Вы стали администратором.");
|
|
||||||
Log.Information($"Пользователь {message.Chat.Id} стал администратором.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
await botClient.SendMessage(chatId: message.Chat.Id, text: "Неверный пароль.");
|
|
||||||
Log.Information($"Неудачная попытка входа для пользователя {message.Chat.Id}.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (admins.Contains(message.Chat.Id)) // Команды доступны только для администраторов
|
|
||||||
{
|
|
||||||
if (message.Text == "/view_reports")
|
|
||||||
{
|
{
|
||||||
await ViewReports(botClient, message.Chat.Id);
|
await ViewReports(botClient, message.Chat.Id);
|
||||||
}
|
}
|
||||||
else if (message.Text.StartsWith("/change_status "))
|
|
||||||
{
|
|
||||||
string[] parts = message.Text.Split(' ', 3);
|
|
||||||
if (parts.Length >= 3)
|
|
||||||
{
|
|
||||||
long reportId = long.Parse(parts[1]);
|
|
||||||
string newStatus = parts[2];
|
|
||||||
await ChangeReportStatus(reportId, newStatus);
|
|
||||||
await botClient.SendMessage(chatId: message.Chat.Id, text: "Статус заявки изменен.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
await botClient.SendMessage(chatId: message.Chat.Id, text: "Неверный формат команды. Используйте /change_status <Id> <новый статус>.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (usersWaitingForReport.ContainsKey(message.Chat.Id) && usersWaitingForReport[message.Chat.Id])
|
else if (usersWaitingForReport.ContainsKey(message.Chat.Id) && usersWaitingForReport[message.Chat.Id])
|
||||||
{
|
{
|
||||||
string problemDescription = message.Text;
|
string problemDescription = message.Text;
|
||||||
@ -154,8 +135,9 @@ class Program
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await botClient.SendMessage(chatId: message.Chat.Id, text: "Неизвестная команда. Используйте /start.");
|
// Ответ на нераспознанные сообщения
|
||||||
Log.Information("Ответ на неизвестную команду отправлен.");
|
await botClient.SendMessage(chatId: message.Chat.Id, text: "Неизвестная команда. Используйте кнопки для навигации.");
|
||||||
|
Log.Information("Ответ на неизвестную команду с кнопками отправлен.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@ -261,35 +243,6 @@ class Program
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async Task ChangeReportStatus(long reportId, string newStatus)
|
|
||||||
{
|
|
||||||
string connectionString = "Data Source=bot.db";
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
using (var connection = new SqliteConnection(connectionString))
|
|
||||||
{
|
|
||||||
await connection.OpenAsync();
|
|
||||||
var command = connection.CreateCommand();
|
|
||||||
command.CommandText =
|
|
||||||
@"
|
|
||||||
UPDATE Reports
|
|
||||||
SET Status = @Status
|
|
||||||
WHERE Id = @Id;
|
|
||||||
";
|
|
||||||
command.Parameters.AddWithValue("@Status", newStatus);
|
|
||||||
command.Parameters.AddWithValue("@Id", reportId);
|
|
||||||
|
|
||||||
await command.ExecuteNonQueryAsync();
|
|
||||||
Log.Information($"Статус заявки с ID {reportId} изменен на {newStatus}.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Log.Error($"Ошибка при изменении статуса заявки: {ex.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Task HandleErrorAsync(ITelegramBotClient botClient, Exception exception, CancellationToken cancellationToken)
|
private static Task HandleErrorAsync(ITelegramBotClient botClient, Exception exception, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
Log.Error($"Ошибка в процессе работы с ботом: {exception.Message}");
|
Log.Error($"Ошибка в процессе работы с ботом: {exception.Message}");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user