53 lines
2.0 KiB
C#
53 lines
2.0 KiB
C#
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<WelcomePage>()
|
||
.MapCommand<WelcomePage>("/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();
|
||
}
|
||
}
|
||
}
|