81 lines
2.8 KiB
C#
81 lines
2.8 KiB
C#
![]() |
using System;
|
|||
|
using System.IO;
|
|||
|
using System.Threading;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using Microsoft.Extensions.Configuration;
|
|||
|
using Microsoft.Data.Sqlite;
|
|||
|
using Serilog;
|
|||
|
using Telegram.Bot;
|
|||
|
using Telegram.Bot.Types;
|
|||
|
using Telegram.Bot.Types.Enums;
|
|||
|
|
|||
|
class Program
|
|||
|
{
|
|||
|
private static string _botToken = string.Empty;
|
|||
|
private static TelegramBotClient _botClient = null!;
|
|||
|
|
|||
|
static async Task Main()
|
|||
|
{
|
|||
|
// Загружаем конфигурацию из appsettings.json
|
|||
|
var config = new ConfigurationBuilder()
|
|||
|
.SetBasePath(Directory.GetCurrentDirectory())
|
|||
|
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
|
|||
|
.Build();
|
|||
|
|
|||
|
_botToken = config["BotToken"] ?? throw new Exception("BotToken не найден в конфигурации!");
|
|||
|
|
|||
|
// Настраиваем логирование
|
|||
|
Log.Logger = new LoggerConfiguration()
|
|||
|
.WriteTo.Console()
|
|||
|
.WriteTo.File("logs/log.txt", rollingInterval: RollingInterval.Day)
|
|||
|
.CreateLogger();
|
|||
|
|
|||
|
Log.Information("Запуск Telegram-бота...");
|
|||
|
|
|||
|
_botClient = new TelegramBotClient(_botToken);
|
|||
|
var me = await _botClient.GetMe();
|
|||
|
Log.Information($"Бот {me.FirstName} запущен!");
|
|||
|
|
|||
|
_botClient.StartReceiving(HandleUpdateAsync, HandleErrorAsync);
|
|||
|
|
|||
|
Console.ReadLine();
|
|||
|
}
|
|||
|
|
|||
|
private static async Task HandleUpdateAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken)
|
|||
|
{
|
|||
|
if (update.Type != UpdateType.Message || update.Message?.Text == null)
|
|||
|
return;
|
|||
|
|
|||
|
var message = update.Message;
|
|||
|
Log.Information($"Сообщение от {message.Chat.Id}: {message.Text}");
|
|||
|
|
|||
|
if (message.Text == "/start")
|
|||
|
{
|
|||
|
await botClient.SendMessage(
|
|||
|
chatId: message.Chat.Id,
|
|||
|
text: "Привет! Я бот для сбора заявок на ремонт оборудования. Отправь /report для подачи заявки."
|
|||
|
);
|
|||
|
}
|
|||
|
else if (message.Text == "/report")
|
|||
|
{
|
|||
|
await botClient.SendMessage(
|
|||
|
chatId: message.Chat.Id,
|
|||
|
text: "Пожалуйста, отправьте описание проблемы."
|
|||
|
);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
await botClient.SendMessage(
|
|||
|
chatId: message.Chat.Id,
|
|||
|
text: "Неизвестная команда. Используйте /start."
|
|||
|
);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private static Task HandleErrorAsync(ITelegramBotClient botClient, Exception exception, CancellationToken cancellationToken)
|
|||
|
{
|
|||
|
Log.Error($"Ошибка: {exception.Message}");
|
|||
|
return Task.CompletedTask;
|
|||
|
}
|
|||
|
}
|