Files
BotPages/README.md
2025-12-24 05:55:26 +03:00

96 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BotPages
BotPages — кроссплатформенный фреймворк для создания диалоговых ботов с системой страниц (pagebased conversational framework).
Цели проекта:
- Простая модель страниц и навигации.
- Портируемость между мессенджерами через адаптеры.
- Поддержка middleware и декларативной системы команд.
- Минимум boilerplate и удобный developer experience.
Структура репозитория
- `BotPages.Core` — ядро фреймворка: навигация, страницы, маршрутизация, реестр команд, middleware, абстракции адаптеров и хранилища состояния.
- `BotPages.Telegram` — адаптер для Telegram Bot API (реализация `IMessangerAdapterSetup`/`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 "<token>" # Windows
export TELEGRAM_TOKEN="<token>" # Linux/macOS
```
- Запустите demo:
```bash
dotnet run --project Demo
```
Основные концепции
- `BotPagesApp` — точка конфигурации приложения: регистрация адаптеров, middleware, маршрутов и команд, запуск.
- `Page`, `StatefulPage`, `SingletonPage` — модели страниц с жизненным циклом (`OnEnter`, `OnUpdate`, `OnText`, `OnButton`, `OnFile`, `OnError`).
- `NavigationService` — управление переходами между страницами и определение текущей страницы по сессии.
- `CommandsRegistry` — шаблоны команд вида `/cmd {arg} {opt?}` с поддержкой именованных и опциональных аргументов.
- `IPageMiddleware` — middleware-конвейер, выполняющийся для каждого апдейта.
- `IMessangerAdapterSetup` / `IMessengerAdapter` — интерфейсы, позволяющие подключать новые мессенджеры.
Документация
Полная внутренняя документация находится в `docs/`:
- `docs/GETTING_STARTED.md` — быстрый старт и примеры конфигурации.
- `docs/API_REFERENCE.md` — краткий reference публичных API.
- `docs/PROJECT_DOCUMENTATION.md` — обзор архитектуры и компонентов.
XMLдокументация генерируется при сборке (опция `GenerateDocumentationFile` в `.csproj`), её можно использовать для генерации HTMLреференса (docfx, MkDocs и т.п.).
Примеры использования
```csharp
var app = new BotPagesApp(stateStorage, logger)
.AddAdapter("telegram", new TelegramAdapterSetup(token))
.AddDefaultPage<WelcomePage>()
.MapCommand<WelcomePage>("/start")
.AddMiddleware(new LoggingMiddleware(logger));
await app.Build(CancellationToken.None);
```
Вклад и тестирование
- Принимам пулл‑реквесты. Описание PR должно содержать цель и краткое описание изменения.
- Следуйте единому стилю кода и включённым nullable-аннотациям.
Лицензия
Проект распространяется под лицензией MIT. Смотрите файл `LICENSE`.
Контакты
Автор: FrigaT
Репозиторий: https://git.frigat.duckdns.org/FrigaT/BotPages