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