Skip to content

Commit

Permalink
feat: Add RegexFunctionBase
Browse files Browse the repository at this point in the history
  • Loading branch information
Yushu2606 committed Jul 21, 2024
1 parent 225cc22 commit 18df2b4
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 17 deletions.
2 changes: 1 addition & 1 deletion src/Bot/Lagrange/QQBot.cs
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ public async Task SendMessageAsync(uint? id, MessagePair messages)

if (messages.Text is not null)
{
messageBuilder.Text(messages.Text.Text);
messageBuilder.Text(messages.Text);
}

await _bot.SendMessage(messageBuilder.Build());
Expand Down
5 changes: 5 additions & 0 deletions src/Bot/Message/MediaMessage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,9 @@ public class MediaMessage(MediaType type, MemoryStream stream)
public MediaType Type { get; } = type;

public MemoryStream Data { get; } = stream;

public static implicit operator MessagePair(MediaMessage message)
{
return new(message);
}
}
10 changes: 10 additions & 0 deletions src/Bot/Message/TextMessage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,14 @@ public static implicit operator TextMessage(string text)
Text = text
};
}

public static implicit operator string(TextMessage message)
{
return message.Text;
}

public static implicit operator MessagePair(TextMessage message)
{
return new(message);
}
}
21 changes: 5 additions & 16 deletions src/Functions/LoveYou.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,17 @@

namespace DXKumaBot.Functions;

public static partial class LoveYou
public sealed partial class LoveYou : RegexFunctionBase
{
public static void Register()
protected override async Task Main(object? sender, MessageReceivedEventArgs args)
{
BotInstance.MessageReceived += Main;
}

private static async Task Main(object? sender, MessageReceivedEventArgs args)
{
if (MessageRegex().IsMatch(args.Text))
{
return;
}

TextMessage textMessage = new()
TextMessage message = new()
{
Text = "迪拉熊也喜欢你❤️"
};
MessagePair messages = new(textMessage);
await args.Reply(messages);
await args.Reply(message);
}

[GeneratedRegex("^(迪拉熊|dlx)我喜欢你$", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)]
private static partial Regex MessageRegex();
protected override partial Regex MessageRegex();
}
24 changes: 24 additions & 0 deletions src/Functions/RegexFunctionBase.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using DXKumaBot.Bot;
using System.Text.RegularExpressions;

namespace DXKumaBot.Functions;

public abstract class RegexFunctionBase
{
public void Register()
{
BotInstance.MessageReceived += async (sender, args) =>
{
if (!MessageRegex().IsMatch(args.Text))
{
return;
}
await Main(sender, args);
};
}

protected abstract Task Main(object? sender, MessageReceivedEventArgs args);

protected abstract Regex MessageRegex();
}

0 comments on commit 18df2b4

Please sign in to comment.