Новый api отправки сообщений

This commit is contained in:
FrigaT
2025-12-24 08:43:46 +03:00
parent 833d8c80d9
commit 37cb6599ba
19 changed files with 478 additions and 338 deletions

View File

@@ -1,6 +1,6 @@
# BotPages
BotPages — кроссплатформенный фреймворк для создания диалоговых ботов с системой страниц (pagebased conversational framework).
BotPages — кроссплатформенный фреймворк для создания диалоговых ботов с моделью страниц (pagebased conversational framework).
Цели проекта:
- Простая модель страниц и навигации.
@@ -11,7 +11,7 @@ BotPages — кроссплатформенный фреймворк для со
Структура репозитория
- `BotPages.Core` — ядро фреймворка: навигация, страницы, маршрутизация, реестр команд, middleware, абстракции адаптеров и хранилища состояния.
- `BotPages.Telegram` — адаптер для Telegram Bot API (реализация `IMessangerAdapterSetup`/`IMessengerAdapter`).
- `BotPages.Telegram` — адаптер для Telegram Bot API (реализация `IMessengerAdapter`).
- `Demo` — пример приложения с несколькими страницами и конфигурацией адаптера.
- `BotPages` — мета‑проект для упаковки библиотек.
- `docs/` — внутренняя документация проекта (Quickstart, API reference и т.д.).
@@ -51,14 +51,24 @@ export TELEGRAM_TOKEN="<token>" # Linux/macOS
dotnet run --project Demo
```
Основные концепции
Простой пример конфигурации
- `BotPagesApp` — точка конфигурации приложения: регистрация адаптеров, middleware, маршрутов и команд, запуск.
```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` — управление переходами между страницами и определение текущей страницы по сессии.
- `CommandsRegistry` — шаблоны команд вида `/cmd {arg} {opt?}` с поддержкой именованных и опциональных аргументов.
- `NavigationService` — управление переходами между страницами.
- `IPageMiddleware` — middleware-конвейер, выполняющийся для каждого апдейта.
- `IMessangerAdapterSetup` / `IMessengerAdapter` — интерфейсы, позволяющие подключать новые мессенджеры.
Документация
@@ -67,30 +77,6 @@ dotnet run --project Demo
- `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
Проект распространяется под лицензией MIT. Смотрите файл `LICENSE`.