Skip to content

Commit af38192

Browse files
author
GitHub Copilot
committed
feat: add handler extensions
1 parent 3e406d3 commit af38192

11 files changed

Lines changed: 98 additions & 59 deletions

File tree

Src/TeleFrame/ApplicationBuilder/TelegramBotApplicationBuilder.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using Microsoft.Extensions.Diagnostics.Metrics;
44
using Microsoft.Extensions.Hosting;
55
using Microsoft.Extensions.Options;
6-
using TeleFrame.Application;
76
using TeleFrame.Services;
87
using TeleFrame.Services.StateManager;
98
using Telegram.Bot.Polling;

Src/TeleFrame/GlobalUsings.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
global using System.Threading.Tasks;
77
global using Microsoft.Extensions.Logging;
88
global using Microsoft.Extensions.DependencyInjection;
9+
global using TeleFrame.Application;
910
global using TeleFrame.Options;
1011
global using TeleFrame.UpdateHandlers;
1112
global using TeleFrame.Services;

Src/TeleFrame/Middlewares/UpdateLoggingMiddleware.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using Microsoft.Extensions.DependencyInjection;
2-
using TeleFrame.Application;
32
using TeleFrame.Middlewares.Abstractions;
43
using TeleFrame.Services;
54

Src/TeleFrame/TeleFrame.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<PackageId>TeleFrame</PackageId>
99
<Description> </Description>
1010
<RepositoryUrl>https://github.com/M0BIN-V/TeleFrame</RepositoryUrl>
11-
<Version>1.1.3</Version>
11+
<Version>1.1.4</Version>
1212
<PackageIcon>TeleFrame.png</PackageIcon>
1313
<PackageReadmeFile>README.md</PackageReadmeFile>
1414
<PackageLicenseFile>LICENCE</PackageLicenseFile>

Src/TeleFrame/UpdateHandlers/CommandHandlers/CommandHandlerExtensions.cs

Lines changed: 0 additions & 38 deletions
This file was deleted.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using Telegram.Bot.Types.Enums;
2+
3+
namespace TeleFrame.UpdateHandlers.MessageHandlers.CommandHandlers;
4+
5+
public static class CommandHandlerExtensions
6+
{
7+
extension(TelegramBotApplication app)
8+
{
9+
public MessageHandlerBuilder MapCommand(Func<string, bool> predicate, UpdateHandlerDelegate handler)
10+
{
11+
return app.MapMessage(m => m.Type is MessageType.Text && predicate(m.Text!), handler);
12+
}
13+
14+
public MessageHandlerBuilder MapCommand(Func<string, bool> predicate, Delegate handler)
15+
{
16+
return app.MapMessage(m => m.Type is MessageType.Text && predicate(m.Text!), handler);
17+
}
18+
19+
public MessageHandlerBuilder MapCommand(string command, Delegate handler)
20+
{
21+
return app.MapCommand(c => c.Equals(command, StringComparison.InvariantCultureIgnoreCase), handler);
22+
}
23+
}
24+
}

Src/TeleFrame/UpdateHandlers/CommandHandlers/CommandHandlerBuilder.cs renamed to Src/TeleFrame/UpdateHandlers/MessageHandlers/MessageHandlerBuilder.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
namespace TeleFrame.UpdateHandlers.CommandHandlers;
1+
namespace TeleFrame.UpdateHandlers.MessageHandlers;
22

3-
public class CommandHandlerBuilder : UpdateHandlerBuilder
3+
public class MessageHandlerBuilder : UpdateHandlerBuilder
44
{
5-
public CommandHandlerBuilder(UpdateHandlerDelegate handler) : base(handler) { }
5+
public MessageHandlerBuilder(UpdateHandlerDelegate handler) : base(handler) { }
66

77
public string RequireStateText { get; private set; } = "";
88

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using TeleFrame.Services.StateManager;
2+
using Telegram.Bot.Types.Enums;
3+
4+
namespace TeleFrame.UpdateHandlers.MessageHandlers;
5+
6+
public static class MessageHandlerExtensions
7+
{
8+
extension(TelegramBotApplication app)
9+
{
10+
public MessageHandlerBuilder MapMessage(Func<Message, bool> predicate, UpdateHandlerDelegate handler)
11+
{
12+
var builder = new MessageHandlerBuilder(handler);
13+
14+
app.MapUpdate(u =>
15+
u.Update.Type == UpdateType.Message &&
16+
u.Update.Message!.Text != null &&
17+
u.Services.GetRequiredService<IStateManager>().StateIs(builder.RequireStateText) &&
18+
predicate(u.Update.Message),
19+
(context, ct) => builder.Build().Invoke(context, ct));
20+
21+
return builder;
22+
}
23+
24+
public MessageHandlerBuilder MapMessage(Func<Message, bool> predicate, Delegate handler)
25+
{
26+
var convertedHandler = UpdateHandlerFactory.Create(handler);
27+
return app.MapMessage(predicate, convertedHandler);
28+
}
29+
30+
public MessageHandlerBuilder MapMessage(MessageType type, Delegate handler)
31+
{
32+
return app.MapMessage(m => m.Type == type, handler);
33+
}
34+
}
35+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using Telegram.Bot.Types.Enums;
2+
3+
namespace TeleFrame.UpdateHandlers.MessageHandlers.VoiceHandlers;
4+
5+
public static class VoiceHandlerExtensions
6+
{
7+
extension(TelegramBotApplication app)
8+
{
9+
public UpdateHandlerBuilder MapVoice(Func<Voice, bool> predicate, UpdateHandlerDelegate handler)
10+
{
11+
return app.MapMessage(m => m.Type is MessageType.Voice && predicate(m.Voice!), handler);
12+
}
13+
14+
public UpdateHandlerBuilder MapVoice(Func<Voice, bool> predicate, Delegate handler)
15+
{
16+
return app.MapMessage(m => m.Type is MessageType.Voice && predicate(m.Voice!), handler);
17+
}
18+
}
19+
}

Src/TeleFrame/UpdateHandlers/UpdateHandlerBuilder.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
using Microsoft.Extensions.DependencyInjection;
2-
using TeleFrame.Services;
3-
41
namespace TeleFrame.UpdateHandlers;
52

63
public delegate Task UpdateHandlerFilterDelegate(UpdateContext context, CancellationToken ct);

0 commit comments

Comments
 (0)