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(); } } }