Skip to content

Commit

Permalink
get_group_msg_history_seq
Browse files Browse the repository at this point in the history
  • Loading branch information
sisi0318 committed Jan 11, 2025
1 parent c379c6d commit 62647ad
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 10 deletions.
18 changes: 11 additions & 7 deletions Lagrange.OneBot/Core/Entity/Message/OneBotGroupMsg.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
namespace Lagrange.OneBot.Core.Entity.Message;

[Serializable]
public class OneBotGroupMsg(uint selfId, uint groupUin, List<OneBotSegment> message, string rawMessage, BotGroupMember member, int messageId , uint appid) : OneBotEntityBase(selfId, "message")
public class OneBotGroupMsg(uint selfId, uint groupUin, List<OneBotSegment> message, string rawMessage, BotGroupMember member, int messageId, uint appid, int seq) : OneBotEntityBase(selfId, "message")
{
[JsonPropertyName("message_type")] public string MessageType { get; set; } = "group";

Expand All @@ -14,10 +14,12 @@ public class OneBotGroupMsg(uint selfId, uint groupUin, List<OneBotSegment> mess

[JsonPropertyName("message_id")] public int MessageId { get; set; } = messageId;

[JsonPropertyName("message_seq")] public int MessageSeq { get; set; } = seq;

[JsonPropertyName("group_id")] public uint GroupId { get; set; } = groupUin;

[JsonPropertyName("user_id")] public uint UserId { get; set; } = member.Uin;

[JsonPropertyName("anonymous")] public object? Anonymous { get; set; } = null;

[JsonPropertyName("message")] public List<OneBotSegment> Message { get; set; } = message;
Expand All @@ -30,7 +32,7 @@ public class OneBotGroupMsg(uint selfId, uint groupUin, List<OneBotSegment> mess
}

[Serializable]
public class OneBotGroupStringMsg(uint selfId, uint groupUin, string message, BotGroupMember member, int messageId, uint appid) : OneBotEntityBase(selfId, "message")
public class OneBotGroupStringMsg(uint selfId, uint groupUin, string message, BotGroupMember member, int messageId, uint appid, int seq) : OneBotEntityBase(selfId, "message")
{
[JsonPropertyName("message_type")] public string MessageType { get; set; } = "group";

Expand All @@ -40,12 +42,14 @@ public class OneBotGroupStringMsg(uint selfId, uint groupUin, string message, Bo

[JsonPropertyName("message_id")] public int MessageId { get; set; } = messageId;

[JsonPropertyName("message_seq")] public int MessageSeq { get; set; } = seq;

[JsonPropertyName("group_id")] public uint GroupId { get; set; } = groupUin;

[JsonPropertyName("user_id")] public uint UserId { get; set; } = member.Uin;

[JsonPropertyName("anonymous")] public object? Anonymous { get; set; } = null;

[JsonPropertyName("message")] public string Message { get; set; } = message;

[JsonPropertyName("raw_message")] public string RawMessage { get; set; } = message;
Expand Down
14 changes: 14 additions & 0 deletions Lagrange.OneBot/Core/Entity/Message/OneBotGroupMsgHistorySeq.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using System.Text.Json.Serialization;

namespace Lagrange.OneBot.Core.Entity.Message;

[Serializable]
public class OneBotGroupMsgHistorySeq
{
[JsonPropertyName("group_id")] public uint GroupId { get; set; }

[JsonPropertyName("start")] public int Start { get; set; }

[JsonPropertyName("end")] public int End { get; set; }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using System.Text.Json;
using System.Text.Json.Nodes;
using Lagrange.Core;
using Lagrange.Core.Common.Interface.Api;
using Lagrange.Core.Message;
using Lagrange.OneBot.Core.Entity.Action;
using Lagrange.OneBot.Core.Entity.Message;
using Lagrange.OneBot.Core.Operation.Converters;
using Lagrange.OneBot.Database;
using Lagrange.OneBot.Message;
using LiteDB;

namespace Lagrange.OneBot.Core.Operation.Message;

[Operation("get_group_msg_history_seq")]
public class GetGroupMessageHistorySeqOperation(MessageService message) : IOperation
{
public async Task<OneBotResult> HandleOperation(BotContext context, JsonNode? payload)
{
if (payload.Deserialize<OneBotGroupMsgHistorySeq>(SerializerOptions.DefaultOptions) is { } history)
{
if (await context.GetGroupMessage(history.GroupId, (uint)history.Start, (uint)(history.End == 0 ? history.Start : history.End)) is { } results)
{
var messages = results
.Select(x => message.ConvertToGroupMsg(context.BotUin, x))
.ToList();
return new OneBotResult(new OneBotGroupMsgHistoryResponse(messages), 0, "ok");
}
}

throw new Exception();
}
}
6 changes: 3 additions & 3 deletions Lagrange.OneBot/Message/MessageService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ private void OnGroupMessageReceived(BotContext bot, GroupMessageEvent e)

_ = _service.SendJsonAsync(request);
}

private void OnGroupProMessageReceived(BotContext bot, GroupProMessageEvent e)
{
var request = ConvertToGroupMsg(bot.BotUin, e.Chain);
Expand All @@ -121,8 +121,8 @@ public object ConvertToGroupMsg(uint uin, MessageChain chain)
var segments = Convert(chain);
int hash = MessageRecord.CalcMessageHash(chain.MessageId, chain.Sequence);
object request = _stringPost
? new OneBotGroupStringMsg(uin, chain.GroupUin ?? 0, ToRawMessage(segments), chain.GroupMemberInfo ?? throw new Exception("Group member not found"), hash, chain.Appid)
: new OneBotGroupMsg(uin, chain.GroupUin ?? 0, segments, ToRawMessage(segments), chain.GroupMemberInfo ?? throw new Exception("Group member not found"), hash, chain.Appid);
? new OneBotGroupStringMsg(uin, chain.GroupUin ?? 0, ToRawMessage(segments), chain.GroupMemberInfo ?? throw new Exception("Group member not found"), hash, chain.Appid, (int)chain.Sequence)
: new OneBotGroupMsg(uin, chain.GroupUin ?? 0, segments, ToRawMessage(segments), chain.GroupMemberInfo ?? throw new Exception("Group member not found"), hash, chain.Appid, (int)chain.Sequence);
return request;
}

Expand Down

0 comments on commit 62647ad

Please sign in to comment.