using BotPages.Core; using BotPages.Core.Abstractions; using BotPages.Core.Messaging; namespace Demo.Pages; /// /// Страница загрузки файлов. /// Обычная страница с полученим и сохранением состояния. /// public sealed class FilesPage : SingletonPage { public override Task OnEnter(PageContext ctx, CancellationToken ct) => new MessageBuilder(ctx) .Text("Пришлите файлы для заявки 📎", MessageFormat.Markdown) .Reply("Пропустить") .SendAsync(ct); public override async Task OnFile(PageContext ctx, List files, CancellationToken ct) { foreach (var file in files) { await ctx.SendFileAsync(file, $"Файл '{file.Name}' получен и отправлен обратно.", ct); } //Обращение через Storage var request = await ctx.StateStorage.GetAsync(ctx.SessionKey, "Request", ct); request.FilesCount = files.Count; //Обращение через Context await ctx.SetStorageAsync("Request", request, ct); await new MessageBuilder(ctx) .Text($"По заявке '{request.Title}' Получено файлов: {files.Count}", MessageFormat.Plain) .Inline("Далее", "next") .SendAsync(ct); } public override Task OnButton(PageContext ctx, string payload, CancellationToken ct) => ctx.Navigation.GoToAsync(ctx, ct); public override Task OnText(PageContext ctx, string text, CancellationToken ct) => ctx.Navigation.GoToAsync(ctx, ct); }