Добавлена поддержка цветов кнопок телеграмма
Some checks failed
CI / build-test (push) Successful in 29s
Release / pack-and-publish (release) Failing after 1m58s

This commit is contained in:
2026-02-11 00:39:58 +03:00
parent 47921b1621
commit 4fa140d91f
6 changed files with 52 additions and 6 deletions

View File

@@ -22,6 +22,11 @@ public class InlineButton
this.Value = value; this.Value = value;
} }
/// <summary>
/// Стиль кнопки.
/// </summary>
public ButtonStyle Style { get; set; } = ButtonStyle.Default;
/// <inheritdoc/> /// <inheritdoc/>
public InlineButton(Enum value) public InlineButton(Enum value)
{ {

View File

@@ -22,6 +22,11 @@ public class ReplyButton
this.Label = value.GetButtonLabel(); this.Label = value.GetButtonLabel();
} }
/// <summary>
/// Стиль кнопки.
/// </summary>
public ButtonStyle Style { get; set; } = ButtonStyle.Default;
/// <summary> /// <summary>
/// Преобразование строки к кнопке. /// Преобразование строки к кнопке.
/// </summary> /// </summary>
@@ -34,3 +39,19 @@ public class ReplyButton
/// <param name="en"></param> /// <param name="en"></param>
public static implicit operator ReplyButton(Enum en) => new ReplyButton(en); public static implicit operator ReplyButton(Enum en) => new ReplyButton(en);
} }
/// <summary>
/// Стиль оформления сообщения.
/// </summary>
public enum ButtonStyle
{
/// <summary>Обычный стиль.</summary>
Default,
/// <summary>Стиль информационого сообщения.</summary>
Info,
/// <summary>Стиль успеха.</summary>
Success,
/// <summary>Стиль ошибки.</summary>
Error,
}

View File

@@ -14,7 +14,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Telegram.Bot" Version="22.7.5" /> <PackageReference Include="Telegram.Bot" Version="22.9.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -375,7 +375,17 @@ public sealed class TelegramAdapter : IMessengerAdapterSetup
{ {
if (inline is null || !inline.Any()) return null; if (inline is null || !inline.Any()) return null;
return new InlineKeyboardMarkup( return new InlineKeyboardMarkup(
inline.Select(row => row.Select(b => new InlineKeyboardButton(b.Label, b.Value)).ToArray()).ToArray() inline.Select(row => row.Select(b => new InlineKeyboardButton(b.Label, b.Value)
{
Style = b.Style switch
{
ButtonStyle.Default => null,
ButtonStyle.Info => KeyboardButtonStyle.Primary,
ButtonStyle.Error => KeyboardButtonStyle.Danger,
ButtonStyle.Success => KeyboardButtonStyle.Success,
_ => null,
}
}).ToArray()).ToArray()
); );
} }
@@ -385,7 +395,17 @@ public sealed class TelegramAdapter : IMessengerAdapterSetup
if (reply.Any()) if (reply.Any())
{ {
return new ReplyKeyboardMarkup(reply.Select(row => row.Select(b => new KeyboardButton(b.Label)).ToArray()).ToArray()) return new ReplyKeyboardMarkup(reply.Select(row => row.Select(b => new KeyboardButton(b.Label)
{
Style = b.Style switch
{
ButtonStyle.Default => null,
ButtonStyle.Info => KeyboardButtonStyle.Primary,
ButtonStyle.Error => KeyboardButtonStyle.Danger,
ButtonStyle.Success => KeyboardButtonStyle.Success,
_ => null,
}
}).ToArray()).ToArray())
{ {
ResizeKeyboard = true ResizeKeyboard = true
}; };

View File

@@ -33,7 +33,7 @@ public sealed class WelcomePage : SingletonPage
return ctx.Navigation.GoToAsync<TitlePage>(ctx, ct); return ctx.Navigation.GoToAsync<TitlePage>(ctx, ct);
case WelcomePageButtons.Help: case WelcomePageButtons.Help:
return new MessageBuilder(ctx).Text("Здесь будет справка.", MessageFormat.Plain).SendAsync(ct); return new MessageBuilder(ctx).Text("Здесь будет справка.", MessageFormat.Plain).Style(MessageStyle.Success).SendAsync(ct);
case WelcomePageButtons.SendFile: case WelcomePageButtons.SendFile:
return ctx.Navigation.GoToAsync<FileSendPage>(ctx, ct); return ctx.Navigation.GoToAsync<FileSendPage>(ctx, ct);

View File

@@ -45,9 +45,9 @@ namespace Demo
.MapCommand("/open {page}", openHandler, true, "открыть страницу /open {page}") .MapCommand("/open {page}", openHandler, true, "открыть страницу /open {page}")
.MapCommand(DetailsPage.Command, DetailsPage.CommandHandler, true, DetailsPage.CommandDescription) .MapCommand(DetailsPage.Command, DetailsPage.CommandHandler, true, DetailsPage.CommandDescription)
.AutoMapRoute() .AutoMapRoute()
.AddTelegramAdapter(token, "Telegram")
.AddMiddleware(new ErrorHandlingMiddleware(logger)) .AddMiddleware(new ErrorHandlingMiddleware(logger))
.AddMiddleware(new LoggingMiddleware(logger)) .AddMiddleware(new LoggingMiddleware(logger));
.AddTelegramAdapter(token, "Telegram");
await app.RunAsync(); await app.RunAsync();