Skip to content
This repository was archived by the owner on Oct 12, 2025. It is now read-only.

Commit 8f96f7b

Browse files
committed
[Onebot][Core] Add member 'summary' to ImageEntity.
1 parent 0ba64fc commit 8f96f7b

File tree

5 files changed

+56
-11
lines changed

5 files changed

+56
-11
lines changed

Lagrange.Core.sln

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lagrange.Core.Test", "Lagra
99
EndProject
1010
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lagrange.OneBot", "Lagrange.OneBot\Lagrange.OneBot.csproj", "{37AEDD3B-9B9F-4782-ADD5-BA2436FB2507}"
1111
EndProject
12-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "SolutionItem", "{ACE96E15-65D1-471B-913A-A1014F0D003E}"
12+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{ACE96E15-65D1-471B-913A-A1014F0D003E}"
1313
ProjectSection(SolutionItems) = preProject
14-
README.md = README.md
15-
README_zh.md = README_zh.md
1614
Docker.md = Docker.md
1715
Docker_zh.md = Docker_zh.md
1816
LICENSE = LICENSE
17+
README.md = README.md
18+
README_zh.md = README_zh.md
1919
EndProjectSection
2020
EndProject
2121
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lagrange.Audio", "Lagrange.Audio\Lagrange.Audio.csproj", "{2D462D26-0FD5-40A9-A0C8-F7449117EE0E}"
@@ -52,4 +52,7 @@ Global
5252
GlobalSection(SolutionProperties) = preSolution
5353
HideSolutionNode = FALSE
5454
EndGlobalSection
55+
GlobalSection(ExtensibilityGlobals) = postSolution
56+
SolutionGuid = {9E8EA8EE-0A8E-479D-96F4-737A205C1176}
57+
EndGlobalSection
5558
EndGlobal

Lagrange.Core/Internal/Packets/Message/Element/Implementation/NotOnlineImage.cs

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,41 @@ internal partial class NotOnlineImage
5858

5959
[ProtoMember(25)] public uint DownloadLen { get; set; }
6060

61-
[ProtoMember(29)] public byte[] PbRes { get; set; }
61+
[ProtoMember(29)] public PbReserve PbRes { get; set; }
62+
63+
[ProtoContract]
64+
public class PbReserve
65+
{
66+
[ProtoMember(1)] public int Field1 { get; set; }
67+
68+
[ProtoMember(3)] public int Field3 { get; set; }
69+
70+
[ProtoMember(4)] public int Field4 { get; set; }
71+
72+
[ProtoMember(8)] public string Field8 { get; set; }
73+
74+
[ProtoMember(10)] public int Field10 { get; set; }
75+
76+
[ProtoMember(20)] public PbReserve2 Field20 { get; set; }
77+
78+
[ProtoMember(30)] public string Url { get; set; }
79+
80+
[ProtoMember(31)] public string Md5Str { get; set; }
81+
}
82+
83+
[ProtoContract]
84+
public class PbReserve2
85+
{
86+
[ProtoMember(1)] public int Field1 { get; set; }
87+
88+
[ProtoMember(2)] public string Field2 { get; set; }
89+
90+
[ProtoMember(3)] public int Field3 { get; set; }
91+
92+
[ProtoMember(4)] public int Field4 { get; set; }
93+
94+
[ProtoMember(5)] public int Field5 { get; set; }
95+
96+
[ProtoMember(7)] public string Field7 { get; set; }
97+
}
6298
}

Lagrange.Core/Message/Entity/ImageEntity.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ public class ImageEntity : IMessageEntity
3737

3838
internal CustomFace? CompatFace { get; set; }
3939

40+
internal string? Summary { get; set; }
41+
4042
public ImageEntity() { }
4143

4244
public ImageEntity(string filePath)
@@ -92,7 +94,8 @@ IEnumerable<Elem> IMessageEntity.PackElement()
9294
PictureSize = new Vector2(image.PicWidth, image.PicHeight),
9395
FilePath = image.FilePath,
9496
ImageSize = image.FileLen,
95-
ImageUrl = $"{BaseUrl}{image.OrigUrl}"
97+
ImageUrl = $"{BaseUrl}{image.OrigUrl}",
98+
Summary = image.PbRes.Field8
9699
};
97100

98101
}
@@ -102,7 +105,8 @@ IEnumerable<Elem> IMessageEntity.PackElement()
102105
PictureSize = new Vector2(image.PicWidth, image.PicHeight),
103106
FilePath = image.FilePath,
104107
ImageSize = image.FileLen,
105-
ImageUrl = $"{LegacyBaseUrl}{image.OrigUrl}"
108+
ImageUrl = $"{LegacyBaseUrl}{image.OrigUrl}",
109+
Summary = image.PbRes.Field8
106110
};
107111
}
108112

@@ -134,5 +138,5 @@ IEnumerable<Elem> IMessageEntity.PackElement()
134138

135139
public string ToPreviewString() => $"[Image: {PictureSize.X}x{PictureSize.Y}] {FilePath} {ImageSize} {ImageUrl}";
136140

137-
public string ToPreviewText() => "[图片]";
141+
public string ToPreviewText() => Summary == null ? "[图片]" : Summary;
138142
}

Lagrange.OneBot/Core/Operation/Message/GetEssenceMessageListOperation.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ private static List<OneBotSegment> ConvertToSegment(IEnumerable<JsonObject> elem
6767
{
6868
1 => new OneBotSegment("text", new TextSegment(msg["text"]?.GetValue<string>() ?? "")),
6969
2 => new OneBotSegment("face", new FaceSegment(msg["face_index"]?.GetValue<int?>() ?? 0)),
70-
3 => new OneBotSegment("image", new ImageSegment(msg["image_url"]?.GetValue<string>() ?? "")),
70+
3 => new OneBotSegment("image", new ImageSegment(msg["image_url"]?.GetValue<string>() ?? "", "[图片]")),
7171
4 => new OneBotSegment("video", new VideoSegment(msg["file_thumbnail_url"]?.GetValue<string>() ?? "")),
7272
_ => throw new InvalidDataException("Unknown type found in essence msg")
7373
};

Lagrange.OneBot/Message/Entity/ImageSegment.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55
namespace Lagrange.OneBot.Message.Entity;
66

77
[Serializable]
8-
public partial class ImageSegment(string url)
8+
public partial class ImageSegment(string url, string summary)
99
{
10-
public ImageSegment() : this("") { }
10+
public ImageSegment() : this("", "") { }
1111

1212
[JsonPropertyName("file")] [CQProperty] public string File { get; set; } = url;
1313

1414
[JsonPropertyName("url")] public string Url { get; set; } = url;
15+
16+
[JsonPropertyName("summary")] [CQProperty] public string Summary { get; set; } = summary;
1517
}
1618

1719
[SegmentSubscriber(typeof(ImageEntity), "image")]
@@ -33,6 +35,6 @@ public override SegmentBase FromEntity(MessageChain chain, IMessageEntity entity
3335
{
3436
if (entity is not ImageEntity imageEntity) throw new ArgumentException("Invalid entity type.");
3537

36-
return new ImageSegment(imageEntity.ImageUrl);
38+
return new ImageSegment(imageEntity.ImageUrl, imageEntity.ToPreviewText());
3739
}
3840
}

0 commit comments

Comments
 (0)