Новый api отправки сообщений
This commit is contained in:
@@ -6,7 +6,6 @@ namespace Demo.Pages;
|
||||
|
||||
/// <summary>
|
||||
/// Страница ввода деталей заявки.
|
||||
/// Страница с параметрами и получением состояния.
|
||||
/// </summary>
|
||||
public sealed class DetailsPage : StatefullPage<string>
|
||||
{
|
||||
@@ -32,19 +31,14 @@ public sealed class DetailsPage : StatefullPage<string>
|
||||
switch (payload)
|
||||
{
|
||||
case "next":
|
||||
{
|
||||
await SaveState(ctx, ct);
|
||||
await ctx.Navigation.GoToAsync<FilesPage>(ctx, ct);
|
||||
break;
|
||||
}
|
||||
await SaveState(ctx, ct);
|
||||
await ctx.Navigation.GoToAsync<FilesPage>(ctx, ct);
|
||||
break;
|
||||
|
||||
case "back":
|
||||
{
|
||||
await ctx.Navigation.GoToAsync<TitlePage>(ctx, ct);
|
||||
break;
|
||||
}
|
||||
await ctx.Navigation.GoToAsync<TitlePage>(ctx, ct);
|
||||
break;
|
||||
}
|
||||
;
|
||||
}
|
||||
|
||||
public override async Task OnText(PageContext ctx, string text, CancellationToken ct)
|
||||
@@ -61,7 +55,6 @@ public sealed class DetailsPage : StatefullPage<string>
|
||||
string? title = "";
|
||||
args?.TryGetValue("title", out title);
|
||||
|
||||
// Навигация на страницу по имени
|
||||
await ctx.Navigation.GoToAsync<DetailsPage, string>(ctx, title ?? "", ct);
|
||||
};
|
||||
}
|
||||
@@ -15,7 +15,7 @@ public sealed class FileSendPage : SingletonPage
|
||||
|
||||
var demoFile = new FileDescriptor
|
||||
{
|
||||
Id = "", // не используется при отправке нового файла
|
||||
Id = "",
|
||||
Name = "demo.txt",
|
||||
Extension = "txt",
|
||||
Size = stream.Length,
|
||||
|
||||
@@ -6,7 +6,7 @@ namespace Demo.Pages;
|
||||
|
||||
/// <summary>
|
||||
/// Страница загрузки файлов.
|
||||
/// Обычная страница с полученим и сохранением состояния.
|
||||
/// Обычная страница с получением и сохранением состояния.
|
||||
/// </summary>
|
||||
public sealed class FilesPage : SingletonPage
|
||||
{
|
||||
@@ -18,15 +18,17 @@ public sealed class FilesPage : SingletonPage
|
||||
|
||||
public override async Task OnFile(PageContext ctx, List<FileDescriptor> files, CancellationToken ct)
|
||||
{
|
||||
// Пересылаем каждый файл обратно с подтверждением
|
||||
foreach (var file in files)
|
||||
{
|
||||
await ctx.SendFileAsync(file, $"Файл '{file.Name}' получен и отправлен обратно.", ct: ct);
|
||||
await new MessageBuilder(ctx)
|
||||
.File(file, $"Файл '{file.Name}' получен и отправлен обратно.")
|
||||
.SendAsync(ct);
|
||||
}
|
||||
|
||||
//Обращение через Storage
|
||||
// Сохраняем данные в хранилище состояния
|
||||
var request = await ctx.StateStorage.GetAsync<Models.Request>(ctx.SessionKey, "Request", ct);
|
||||
request.FilesCount = files.Count;
|
||||
//Обращение через Context
|
||||
await ctx.SetStorageAsync("Request", request, ct);
|
||||
|
||||
await new MessageBuilder(ctx)
|
||||
|
||||
@@ -10,9 +10,7 @@ public sealed class SubmitPage : SingletonPage
|
||||
{
|
||||
public override async Task OnEnter(PageContext ctx, CancellationToken ct)
|
||||
{
|
||||
var progress = new MessageBuilder(ctx);
|
||||
|
||||
var messageId = await progress
|
||||
var messageId = await new MessageBuilder(ctx)
|
||||
.Text("Отправка заявки\n7%")
|
||||
.SendAsync(ct);
|
||||
|
||||
@@ -21,7 +19,7 @@ public sealed class SubmitPage : SingletonPage
|
||||
{
|
||||
i += 25;
|
||||
Thread.Sleep(TimeSpan.FromMilliseconds(200));
|
||||
await progress
|
||||
await new MessageBuilder(ctx)
|
||||
.Text($"Отправка заявки\n{i}%")
|
||||
.EditMessage(messageId!)
|
||||
.SendAsync(ct);
|
||||
|
||||
@@ -5,7 +5,6 @@ using BotPages.Core.Messaging;
|
||||
namespace Demo.Pages;
|
||||
/// <summary>
|
||||
/// Страница ввода заголовка заявки.
|
||||
/// Обычная страница вводом текста.
|
||||
/// </summary>
|
||||
public sealed class TitlePage : SingletonPage
|
||||
{
|
||||
|
||||
@@ -7,7 +7,6 @@ namespace Demo.Pages;
|
||||
|
||||
/// <summary>
|
||||
/// Стартовая страница демо‑бота.
|
||||
/// Обычная страница с кнопками
|
||||
/// </summary>
|
||||
[Route("Welcome")]
|
||||
public sealed class WelcomePage : SingletonPage
|
||||
@@ -31,19 +30,13 @@ public sealed class WelcomePage : SingletonPage
|
||||
switch (button)
|
||||
{
|
||||
case WelcomePageButtons.CreateRequest:
|
||||
{
|
||||
return ctx.Navigation.GoToAsync<TitlePage>(ctx, ct);
|
||||
}
|
||||
return ctx.Navigation.GoToAsync<TitlePage>(ctx, ct);
|
||||
|
||||
case WelcomePageButtons.Help:
|
||||
{
|
||||
return new MessageBuilder(ctx).Text("Здесь будет справка.", MessageFormat.Plain).SendAsync(ct);
|
||||
}
|
||||
return new MessageBuilder(ctx).Text("Здесь будет справка.", MessageFormat.Plain).SendAsync(ct);
|
||||
|
||||
case WelcomePageButtons.SendFile:
|
||||
{
|
||||
return ctx.Navigation.GoToAsync<FileSendPage>(ctx, ct);
|
||||
}
|
||||
return ctx.Navigation.GoToAsync<FileSendPage>(ctx, ct);
|
||||
}
|
||||
|
||||
return base.OnText(ctx, text, ct);
|
||||
|
||||
Reference in New Issue
Block a user