FrigaT 0089926fb0
All checks were successful
CI / build-test (push) Successful in 52s
Release / pack-and-publish (release) Successful in 42s
Чистка кода
2025-12-24 17:09:15 +03:00
ci
2025-12-02 17:50:32 +03:00
2025-12-24 17:09:15 +03:00
2025-12-24 17:09:15 +03:00
2025-12-24 16:30:43 +03:00
ci
2025-12-02 16:03:27 +03:00
ci
2025-12-02 16:03:27 +03:00

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. Клонируйте репозиторий:
git clone https://git.frigat.duckdns.org/FrigaT/BotPages.git
cd BotPages
  1. Соберите решения:
dotnet build
  1. Запуск демо (Telegram):
  • Установите переменную окружения TELEGRAM_TOKEN с токеном бота.
setx TELEGRAM_TOKEN "<token>"   # Windows
export TELEGRAM_TOKEN="<token>" # Linux/macOS
  • Запустите demo:
dotnet run --project Demo

Простой пример конфигурации

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.

Description
No description provided
Readme MIT 402 KiB
2026-04-12 16:57:32 +03:00
Languages
C# 99.3%
PowerShell 0.4%
Shell 0.3%