63 lines
1.7 KiB
C#
63 lines
1.7 KiB
C#
using BotPages.Core;
|
||
using BotPages.Core.Abstractions;
|
||
using BotPages.Core.Messaging;
|
||
using BotPages.Core.Routing;
|
||
|
||
namespace Demo.Pages;
|
||
|
||
/// <summary>
|
||
/// Стартовая страница демо‑бота.
|
||
/// Обычная страница с кнопками
|
||
/// </summary>
|
||
[Route("Welcome")]
|
||
public sealed class WelcomePage : SingletonPage
|
||
{
|
||
public override async Task OnEnter(PageContext ctx, CancellationToken ct)
|
||
{
|
||
await ctx.ClearStorageAsync(ct);
|
||
|
||
await new MessageBuilder(ctx)
|
||
.Text("Добро пожаловать! 🚀")
|
||
.Reply(WelcomePageButtons.CreateRequest)
|
||
.Reply(WelcomePageButtons.Help)
|
||
.Reply(WelcomePageButtons.SendFile)
|
||
.SendAsync(ct);
|
||
}
|
||
|
||
public override Task OnText(PageContext ctx, string text, CancellationToken ct)
|
||
{
|
||
var button = ButtonExtensions.FromButtonLabel<WelcomePageButtons>(text);
|
||
|
||
switch (button)
|
||
{
|
||
case WelcomePageButtons.CreateRequest:
|
||
{
|
||
return ctx.Navigation.GoToAsync<TitlePage>(ctx, ct);
|
||
}
|
||
|
||
case WelcomePageButtons.Help:
|
||
{
|
||
return new MessageBuilder(ctx).Text("Здесь будет справка.", MessageFormat.Plain).SendAsync(ct);
|
||
}
|
||
|
||
case WelcomePageButtons.SendFile:
|
||
{
|
||
return ctx.Navigation.GoToAsync<FileSendPage>(ctx, ct);
|
||
}
|
||
}
|
||
|
||
return base.OnText(ctx, text, ct);
|
||
}
|
||
}
|
||
|
||
public enum WelcomePageButtons
|
||
{
|
||
[Button("Создать заявку")]
|
||
CreateRequest,
|
||
|
||
[Button("Помощь")]
|
||
Help,
|
||
|
||
[Button("Отправка файла")]
|
||
SendFile,
|
||
} |