dobavlenie bd

This commit is contained in:
student 2025-03-17 14:53:01 +07:00
parent ed1e200703
commit fe0d560079

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -13,6 +14,7 @@ class Program
{ {
private static string _botToken = string.Empty; private static string _botToken = string.Empty;
private static TelegramBotClient _botClient = null!; private static TelegramBotClient _botClient = null!;
private static Dictionary<long, bool> usersWaitingForReport = new Dictionary<long, bool>(); // Отслеживаем состояние пользователей
static async Task Main() static async Task Main()
{ {
@ -34,7 +36,7 @@ class Program
throw; throw;
} }
// Настраиваем логирование // Настроим логирование
Log.Logger = new LoggerConfiguration() Log.Logger = new LoggerConfiguration()
.WriteTo.Console() .WriteTo.Console()
.WriteTo.File("logs/log.txt", rollingInterval: RollingInterval.Day) .WriteTo.File("logs/log.txt", rollingInterval: RollingInterval.Day)
@ -46,7 +48,7 @@ class Program
{ {
// Инициализация клиента бота // Инициализация клиента бота
_botClient = new TelegramBotClient(_botToken); _botClient = new TelegramBotClient(_botToken);
var me = await _botClient.GetMe(); var me = await _botClient.GetMeAsync();
Log.Information($"Бот {me.FirstName} запущен! ID: {me.Id}"); Log.Information($"Бот {me.FirstName} запущен! ID: {me.Id}");
} }
catch (Exception ex) catch (Exception ex)
@ -90,23 +92,42 @@ class Program
if (message.Text == "/start") if (message.Text == "/start")
{ {
await botClient.SendMessage( await botClient.SendTextMessageAsync(
chatId: message.Chat.Id, chatId: message.Chat.Id,
text: "Приветик! Я бот для сбора заявок на ремонт оборудования. Отправь /report для подачи заявки." text: "Привет! Я бот для сбора заявок на ремонт оборудования. Отправь /report для подачи заявки."
); );
Log.Information($"Ответ на команду /start отправлен. ТЕКСТ ОТВЕТА: {message.Text}"); Log.Information($"Ответ на команду /start отправлен. ТЕКСТ ОТВЕТА: Привет! Я бот для сбора заявок на ремонт оборудования. Отправь /report для подачи заявки.");
} }
else if (message.Text == "/report") else if (message.Text == "/report")
{ {
await botClient.SendMessage( usersWaitingForReport[message.Chat.Id] = true; // Отметить, что пользователь должен отправить описание
await botClient.SendTextMessageAsync(
chatId: message.Chat.Id, chatId: message.Chat.Id,
text: "Пожалуйста, отправьте описание проблемы." text: "Пожалуйста, отправьте описание проблемы."
); );
Log.Information("Ответ на команду /report отправлен."); Log.Information("Ответ на команду /report отправлен.");
} }
else if (usersWaitingForReport.ContainsKey(message.Chat.Id) && usersWaitingForReport[message.Chat.Id])
{
// Пользователь отправил описание проблемы
string problemDescription = message.Text;
// Сохраняем описание проблемы в базу данных (SQLite)
await SaveReportToDatabase(message.Chat.Id, problemDescription);
// Ответ пользователю, что заявка принята
await botClient.SendTextMessageAsync(
chatId: message.Chat.Id,
text: "Спасибо за заявку! Мы обработаем её в ближайшее время."
);
// Сброс состояния
usersWaitingForReport[message.Chat.Id] = false;
Log.Information($"Заявка пользователя {message.Chat.Id} сохранена в базе данных. Описание: {problemDescription}");
}
else else
{ {
await botClient.SendMessage( await botClient.SendTextMessageAsync(
chatId: message.Chat.Id, chatId: message.Chat.Id,
text: "Неизвестная команда. Используйте /start." text: "Неизвестная команда. Используйте /start."
); );
@ -120,6 +141,35 @@ class Program
} }
} }
private static async Task SaveReportToDatabase(long chatId, string description)
{
string connectionString = "Data Source=bot.db"; // Используем SQLite
try
{
using (var connection = new SqliteConnection(connectionString))
{
await connection.OpenAsync();
var insertCommand = connection.CreateCommand();
insertCommand.CommandText =
@"
INSERT INTO Reports (ChatId, Description)
VALUES (@ChatId, @Description);
";
insertCommand.Parameters.AddWithValue("@ChatId", chatId);
insertCommand.Parameters.AddWithValue("@Description", description);
await insertCommand.ExecuteNonQueryAsync();
Log.Information($"Заявка от пользователя {chatId} успешно сохранена.");
}
}
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}");