Files
BotPages/Demo/Program.cs

66 lines
2.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using BotPages.Core;
using BotPages.Telegram;
using Demo.Pages;
using Telegram.Bot;
namespace Demo
{
internal class Program
{
public static async Task Main(string[] args)
{
// Токен Telegram бота
var token = Environment.GetEnvironmentVariable("TELEGRAM_TOKEN") ?? throw new InvalidOperationException("TELEGRAM_TOKEN not set");
// Инициализация Telegram клиента
var botClient = new TelegramBotClient(token);
var chatClient = new TelegramClientAdapter(botClient);
// Регистрируем страницы
var pages = new IPage[]
{
new MainPage(),
new InlinePage(),
new ReplyPage(),
new FilesPage()
};
var registry = new PageRegistry(pages, pages[0]);
// Навигация и состояние
IStateStore store = new InMemoryStateStore();
INavigationService nav = new NavigationService(registry, store);
var router = new Router(registry);
var middleware = new IUpdateMiddleware[]
{
new LoggingMiddleware(), //логирование вызова в консоль
new ErrorHandlingMiddleware(), //обработчик ошибок
//new ThrottleMiddleware(TimeSpan.FromMilliseconds(150)), //задержка в 150мс перед ответом
};
var pipeline = new Pipeline(middleware, router);
botClient.StartReceiving(
async (bot, update, ct) =>
{
var ctx = TelegramUpdateMapper.Map(bot, nav, store, update);
await pipeline.ExecuteAsync(ctx, ct);
},
(bot, error, ct) =>
{
Console.WriteLine($"⚠️ Ошибка Telegram: {error}");
return Task.CompletedTask;
}
);
var me = await botClient.GetMe();
Console.WriteLine($"BotPages Demo (@{me.Username}) запущен. Нажмите Enter для выхода.");
Console.ReadLine();
}
}
}