Переработанная версия ядра
All checks were successful
CI / build-test (push) Successful in 42s

This commit is contained in:
2025-12-05 12:57:05 +03:00
parent ee175a35a0
commit d817417a69
81 changed files with 2335 additions and 1453 deletions

View File

@@ -1,32 +1,28 @@
namespace BotPages.Core
using BotPages.Core.Abstractions;
using BotPages.Core.Context;
namespace BotPages.Core;
/// <summary>
/// Базовый класс страницы.
/// </summary>
public abstract class Page
{
/// <summary>
/// Базовая реализация страницы без обязательных переопределений.
/// </summary>
public abstract class Page : IPage
{
/// <summary>
/// Идентификатор страницы.
/// </summary>
public virtual string Id => GetType().Name;
/// <summary>
/// Виртуальный метод входа; по умолчанию ничего не делает.
/// </summary>
public virtual Task<PageResult> EnterAsync(UpdateContext ctx, CancellationToken ct) =>
Task.FromResult(new PageResult());
/// <summary>
/// Абстрактная обработка событий; обязателен к реализации.
/// </summary>
public abstract Task<PageResult> HandleAsync(UpdateContext ctx, CancellationToken ct);
/// <summary>
/// Виртуальный метод выхода; по умолчанию ничего не делает.
/// </summary>
public virtual Task ExitAsync(UpdateContext ctx, CancellationToken ct) =>
Task.CompletedTask;
}
/// <summary>Вход на страницу.</summary>
public virtual Task OnEnter(PageContext ctx, CancellationToken ct) => Task.CompletedTask;
/// <summary>Общий обработчик обновлений.</summary>
public virtual Task OnUpdate(PageContext ctx, UpdateContext update, CancellationToken ct) => Task.CompletedTask;
/// <summary>Обработка текста.</summary>
public virtual Task OnText(PageContext ctx, string text, CancellationToken ct) => Task.CompletedTask;
/// <summary>Обработка файлов.</summary>
public virtual Task OnFile(PageContext ctx, List<FileDescriptor> files, CancellationToken ct) => Task.CompletedTask;
/// <summary>Обработка кнопки.</summary>
public virtual Task OnButton(PageContext ctx, string payload, CancellationToken ct) => Task.CompletedTask;
/// <summary>Выход со страницы.</summary>
public virtual Task OnLeave(PageContext ctx, CancellationToken ct) => Task.CompletedTask;
/// <summary>Таймаут бездействия.</summary>
public virtual Task OnTimeout(PageContext ctx, TimeSpan timeout, CancellationToken ct) => Task.CompletedTask;
/// <summary>Обработка ошибок.</summary>
public virtual Task OnError(PageContext ctx, Exception ex, CancellationToken ct) => Task.CompletedTask;
}