исправлен парсер команд
All checks were successful
CI / build-test (push) Successful in 32s
Release / pack-and-publish (release) Successful in 35s

This commit is contained in:
2025-12-07 10:50:58 +03:00
parent edc718b1f9
commit 67de9e197a
4 changed files with 32 additions and 21 deletions

View File

@@ -1,5 +1,6 @@
using BotPages.Core;
using BotPages.Core.Messaging;
using BotPages.Core.Routing;
namespace Demo.Pages;
@@ -7,20 +8,20 @@ namespace Demo.Pages;
/// Страница ввода деталей заявки.
/// Страница с параметрами и получением состояния.
/// </summary>
public sealed class DetailsPage : StatefullPage<DetailsArgs>
public sealed class DetailsPage : StatefullPage<string>
{
[Statefull("Request")]
private Models.Request Request;
public override Task OnEnter(PageContext ctx, DetailsArgs args, CancellationToken ct)
public override Task OnEnter(PageContext ctx, string args, CancellationToken ct)
{
Request = new()
{
Title = args.Title,
Title = args,
};
return new MessageBuilder(ctx)
.Text($"Заголовок: {args.Title}\nДобавьте детали или нажмите Далее.")
.Text($"Заголовок: {args}\nДобавьте детали или нажмите Далее.")
.Inline(new InlineButton("Далее", "next"), new InlineButton("Назад", "back"))
.Reply("Отмена")
.SendAsync(ct);
@@ -52,12 +53,15 @@ public sealed class DetailsPage : StatefullPage<DetailsArgs>
await SaveState(ctx, ct);
await ctx.Navigation.GoToAsync<FilesPage>(ctx, ct);
}
}
/// <summary>
/// Аргументы для страницы DetailsPage.
/// </summary>
public sealed class DetailsArgs
{
public string Title { get; set; } = "";
internal static string Command => "/create_request {title}";
internal static string CommandDescription => "создание заявки /create_request {title";
internal static CommandHandler CommandHandler = async (ctx, args, ct) =>
{
string? title = "";
args?.TryGetValue("title", out title);
// Навигация на страницу по имени
await ctx.Navigation.GoToAsync<DetailsPage, string>(ctx, title ?? "", ct);
};
}

View File

@@ -1,6 +1,7 @@
using BotPages.Core;
using BotPages.Core.Abstractions;
using BotPages.Core.Messaging;
using BotPages.Core.Routing;
namespace Demo.Pages;
/// <summary>
@@ -23,7 +24,7 @@ public sealed class TitlePage : SingletonPage
}
else
{
return ctx.Navigation.GoToAsync<DetailsPage, DetailsArgs>(ctx, new DetailsArgs { Title = text }, ct);
return ctx.Navigation.GoToAsync<DetailsPage, string>(ctx, text, ct);
}
}
}