using BotPages.Core; using BotPages.Core.Abstractions; using BotPages.Core.Logging; using BotPages.Core.Middleware; using BotPages.Core.Storage; using BotPages.Telegram; using Demo.Pages; namespace Demo { internal class Program { public static async Task Main(string[] args) { var token = Environment.GetEnvironmentVariable("TELEGRAM_TOKEN") ?? throw new InvalidOperationException("TELEGRAM_TOKEN not set"); var logger = new ConsoleLogger(); var state = new InMemoryStateStorage(); var telegram = new TelegramAdapter(logger); var factory = new MultiAdapterFactory() .Register("Telegram", telegram); var app = new BotPagesApp(factory, state, logger) .AddDefaultPage() .MapCommand("/start") .AddMiddleware(new ErrorHandlingMiddleware(logger)) .AddMiddleware(new LoggingMiddleware(logger)); using var cts = new CancellationTokenSource(); await telegram.StartPollingAsync(token, update => app.HandleUpdateAsync(update, CancellationToken.None), cts.Token); Console.ReadKey(); cts.Cancel(); } } }