dobavlenie bd
This commit is contained in:
parent
ed1e200703
commit
fe0d560079
64
Program.cs
64
Program.cs
@ -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}");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user