Skip to content
This repository was archived by the owner on May 27, 2026. It is now read-only.

Commit 2bb8090

Browse files
committed
[Milky] Add event log
1 parent b613f39 commit 2bb8090

3 files changed

Lines changed: 65 additions & 0 deletions

File tree

Lagrange.Milky/Event/EventService.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
using Lagrange.Core;
2+
using Lagrange.Core.Common.Entity;
3+
using Lagrange.Core.Message;
24
using Lagrange.Milky.Configuration;
5+
using Lagrange.Milky.Entity;
36
using Lagrange.Milky.Extension;
47
using Lagrange.Milky.Utility;
58
using Microsoft.Extensions.Hosting;
69
using Microsoft.Extensions.Logging;
710
using Microsoft.Extensions.Options;
11+
using static Lagrange.Core.Events.EventArgs.BotOfflineEvent;
812
using LgrEvents = Lagrange.Core.Events.EventArgs;
913

1014
namespace Lagrange.Milky.Event;
@@ -33,6 +37,8 @@ private void HandleOfflineEvent(BotContext bot, LgrEvents.BotOfflineEvent @event
3337
{
3438
try
3539
{
40+
_logger.LogOffline(@event.Reason, @event.Tips?.Tag, @event.Tips?.Message);
41+
3642
var result = _convert.BotOfflineEvent(@event);
3743
byte[] bytes = JsonUtility.SerializeToUtf8Bytes(result.GetType(), result);
3844
using (_lock.UsingReadLock())
@@ -53,6 +59,26 @@ private void HandleMessageEvent(BotContext bot, LgrEvents.BotMessageEvent @event
5359
{
5460
try
5561
{
62+
switch (@event.Message.Type)
63+
{
64+
case MessageType.Group:
65+
_logger.LogGroupMessage(
66+
@event.Message.Type,
67+
((BotGroupMember)@event.Message.Contact).Group.Uin,
68+
@event.Message.Contact.Uin,
69+
@event.Message.Entities.ToDebugString()
70+
);
71+
break;
72+
case MessageType.Private:
73+
case MessageType.Temp:
74+
_logger.LogPrivateMessage(
75+
@event.Message.Type,
76+
@event.Message.Contact.Uin,
77+
@event.Message.Entities.ToDebugString()
78+
);
79+
break;
80+
}
81+
5682
if (_ignoreBotMessage && @event.Message.Contact.Uin == bot.BotUin) return;
5783

5884
var result = _convert.MessageReceiveEvent(@event);
@@ -98,6 +124,15 @@ public void Unregister(Action<Memory<byte>> handler)
98124

99125
public static partial class EventServiceLoggerExtension
100126
{
127+
[LoggerMessage(EventId = 0, Level = LogLevel.Debug, Message = "BotOfflineEvent {{ {reason} {tag} {message} }}")]
128+
public static partial void LogOffline(this ILogger<EventService> logger, Reasons reason, string? tag, string? message);
129+
130+
[LoggerMessage(EventId = 1, Level = LogLevel.Debug, Message = "BotMessageEvent {{ {type} {group} {sender} {entities} }}")]
131+
public static partial void LogGroupMessage(this ILogger<EventService> logger, MessageType type, long group, long sender, string entities);
132+
133+
[LoggerMessage(EventId = 2, Level = LogLevel.Debug, Message = "BotMessageEvent {{ {type} {sender} {entities} }}")]
134+
public static partial void LogPrivateMessage(this ILogger<EventService> logger, MessageType type, long sender, string entities);
135+
101136
[LoggerMessage(EventId = 999, Level = LogLevel.Error, Message = "Handle {event} exception")]
102137
public static partial void LogHandleEventException(this ILogger<EventService> logger, string @event, Exception e);
103138
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using System.Text;
2+
using Lagrange.Core.Message;
3+
4+
namespace Lagrange.Milky.Extension;
5+
6+
public static class MessageChainExtension
7+
{
8+
public static string ToDebugString(this MessageChain messages)
9+
{
10+
return new StringBuilder().AppendJoin(' ', messages.Select(MessageEntityExtension.ToDebugString)).ToString();
11+
}
12+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using Lagrange.Core.Message.Entities;
2+
3+
namespace Lagrange.Milky.Extension;
4+
5+
public static class MessageEntityExtension
6+
{
7+
public static string ToDebugString(this IMessageEntity entity) => entity switch
8+
{
9+
ImageEntity image => $"Image {{ Url: {image.FileUrl} }}",
10+
MentionEntity mention => $"Mention {{ Uin: {mention.Uin} }}",
11+
MultiMsgEntity multi => $"MultiMsg {{ Id: {multi.ResId} }}",
12+
RecordEntity record => $"Record {{ Url: {record.FileUrl} }}",
13+
ReplyEntity reply => $"Reply {{ Sequence: {reply.SrcSequence} }}",
14+
TextEntity text => $"Text {{ Text: {text.Text} }}",
15+
VideoEntity video => $"Video {{ Url: {video.FileUrl} }}",
16+
_ => entity.GetType().Name,
17+
};
18+
}

0 commit comments

Comments
 (0)