# BotPages BotPages — кроссплатформенный фреймворк для создания диалоговых ботов с моделью страниц (page‑based conversational framework). Цели проекта: - Простая модель страниц и навигации. - Портируемость между мессенджерами через адаптеры. - Поддержка middleware и декларативной системы команд. - Минимум boilerplate и удобный developer experience. Структура репозитория - `BotPages.Core` — ядро фреймворка: навигация, страницы, маршрутизация, реестр команд, middleware, абстракции адаптеров и хранилища состояния. - `BotPages.Telegram` — адаптер для Telegram Bot API (реализация `IMessengerAdapter`). - `Demo` — пример приложения с несколькими страницами и конфигурацией адаптера. - `BotPages` — мета‑проект для упаковки библиотек. - `docs/` — внутренняя документация проекта (Quickstart, API reference и т.д.). Требования - .NET 8 SDK - C# 12 Быстрый старт (локально) 1. Клонируйте репозиторий: ```bash git clone https://git.frigat.duckdns.org/FrigaT/BotPages.git cd BotPages ``` 2. Соберите решения: ```bash dotnet build ``` 3. Запуск демо (Telegram): - Установите переменную окружения `TELEGRAM_TOKEN` с токеном бота. ```bash setx TELEGRAM_TOKEN "" # Windows export TELEGRAM_TOKEN="" # Linux/macOS ``` - Запустите demo: ```bash dotnet run --project Demo ``` Простой пример конфигурации ```csharp var app = new BotPagesApp(stateStorage, logger) .AddTelegramAdapter(token) .AddDefaultPage() .MapCommand('/start') .AddMiddleware(new LoggingMiddleware(logger)); await app.Build(CancellationToken.None); ``` Ключевые концепции - `SendRequest` — единый формат запроса на отправку (текст, файлы, кнопки, опции). Адаптеры реализуют `IMessengerAdapter.SendAsync(SendRequest)`. - `Page`, `StatefulPage`, `SingletonPage` — модели страниц с жизненным циклом (`OnEnter`, `OnUpdate`, `OnText`, `OnButton`, `OnFile`, `OnError`). - `NavigationService` — управление переходами между страницами. - `IPageMiddleware` — middleware-конвейер, выполняющийся для каждого апдейта. Документация Полная внутренняя документация находится в `docs/`: - `docs/GETTING_STARTED.md` — быстрый старт и примеры конфигурации. - `docs/API_REFERENCE.md` — краткий reference публичных API. - `docs/PROJECT_DOCUMENTATION.md` — обзор архитектуры и компонентов. Лицензия Проект распространяется под лицензией MIT. Смотрите файл `LICENSE`.