Добавьте файлы проекта.
This commit is contained in:
65
Demo/Program.cs
Normal file
65
Demo/Program.cs
Normal file
@@ -0,0 +1,65 @@
|
||||
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();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user