Files
BotPages/README.md

82 lines
3.3 KiB
Markdown
Raw Permalink 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 (реализация `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
```
Простой пример конфигурации
```csharp
var app = new BotPagesApp(stateStorage, logger)
.AddTelegramAdapter(token)
.AddDefaultPage<WelcomePage>()
.MapCommand<WelcomePage>('/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`.