using BotPages.Core; using BotPages.Core.Logging; using BotPages.Core.Middleware; using BotPages.Core.Routing; 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(); using var cts = new CancellationTokenSource(); // Можно использовать команды для открытия страниц с роутингом // /open Welcome // /open FileSend CommandHandler openHandler = async (ctx, args, ct) => { if (args is null || !args.TryGetValue("page", out var pageName)) { await ctx.SendTextAsync("Не указана страница для открытия.", ct: ct); return; } // Навигация на страницу по имени await ctx.Navigation.GoToAsync(pageName, ctx, ct); }; var app = new BotPagesApp(state, logger) .AddDefaultPage() .MapCommand("/start", true, "Главная") .MapCommand("/open {page}", openHandler, true, "открыть станицу /open {page}") .MapCommand(DetailsPage.Command, DetailsPage.CommandHandler, true, DetailsPage.CommandDescription) .AutoMapRoute() .AddMiddleware(new ErrorHandlingMiddleware(logger)) .AddMiddleware(new LoggingMiddleware(logger)) .AddTelegramAdapter(token, "Telegram") .Build(cts.Token); Console.ReadKey(); cts.Cancel(); } } }