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

Commit 5369aaa

Browse files
AnonymeMeowCrackTC
andauthored
[Core][Onebot] Add Summary field to ImageEntity class. (#307)
* [Onebot][Core] Add member 'summary' to ImageEntity. * WIP * [Onebot][Core] Add member 'summary' to CustomFace. * Update Lagrange.Core/Message/Entity/ImageEntity.cs Co-authored-by: CrackTC <[email protected]> * Update Lagrange.OneBot/Core/Operation/Message/GetEssenceMessageListOperation.cs Co-authored-by: CrackTC <[email protected]> * Update Lagrange.OneBot/Message/Entity/ImageSegment.cs Co-authored-by: CrackTC <[email protected]> * Update `ToPreviewString()` --------- Co-authored-by: CrackTC <[email protected]>
1 parent 61ee20a commit 5369aaa

File tree

4 files changed

+95
-11
lines changed

4 files changed

+95
-11
lines changed

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

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,39 @@ internal class CustomFace
7575

7676
[ProtoMember(33)] public int X400Height { get; set; }
7777

78-
[ProtoMember(34)] public byte[]? PbReserve { get; set; }
78+
[ProtoMember(34)] public PbReserve1? PbReserve { get; set; }
79+
80+
[ProtoContract]
81+
public class PbReserve1
82+
{
83+
[ProtoMember(1)] public int Field1 { get; set; }
84+
85+
[ProtoMember(3)] public int Field3 { get; set; }
86+
87+
[ProtoMember(4)] public int Field4 { get; set; }
88+
89+
[ProtoMember(9)] public string Summary { get; set; }
90+
91+
[ProtoMember(10)] public int Field10 { get; set; }
92+
93+
[ProtoMember(21)] public PbReserve2 Field21 { get; set; }
94+
95+
[ProtoMember(31)] public string Field31 { get; set; }
96+
}
97+
98+
[ProtoContract]
99+
public class PbReserve2
100+
{
101+
[ProtoMember(1)] public int Field1 { get; set; }
102+
103+
[ProtoMember(2)] public string Field2 { get; set; }
104+
105+
[ProtoMember(3)] public int Field3 { get; set; }
106+
107+
[ProtoMember(4)] public int Field4 { get; set; }
108+
109+
[ProtoMember(5)] public int Field5 { get; set; }
110+
111+
[ProtoMember(7)] public string Md5Str { get; set; }
112+
}
79113
}

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

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,48 @@ internal partial class NotOnlineImage
5757
[ProtoMember(24)] public uint ShowLen { get; set; }
5858

5959
[ProtoMember(25)] public uint DownloadLen { get; set; }
60+
61+
[ProtoMember(26)] public string? X400Url { get; set; }
62+
63+
[ProtoMember(27)] public uint X400Width { get; set; }
64+
65+
[ProtoMember(28)] public uint X400Height { get; set; }
6066

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

Lagrange.Core/Message/Entity/ImageEntity.cs

Lines changed: 12 additions & 6 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.Summary
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.Summary
106110
};
107111
}
108112

@@ -115,7 +119,8 @@ IEnumerable<Elem> IMessageEntity.PackElement()
115119
PictureSize = new Vector2(face.Width, face.Height),
116120
FilePath = face.FilePath,
117121
ImageSize = face.Size,
118-
ImageUrl = $"{BaseUrl}{face.OrigUrl}"
122+
ImageUrl = $"{BaseUrl}{face.OrigUrl}",
123+
Summary = face.PbReserve?.Summary
119124
};
120125

121126
}
@@ -125,14 +130,15 @@ IEnumerable<Elem> IMessageEntity.PackElement()
125130
PictureSize = new Vector2(face.Width, face.Height),
126131
FilePath = face.FilePath,
127132
ImageSize = face.Size,
128-
ImageUrl = $"{LegacyBaseUrl}{face.OrigUrl}"
133+
ImageUrl = $"{LegacyBaseUrl}{face.OrigUrl}",
134+
Summary = face.PbReserve?.Summary
129135
};
130136
}
131137

132138
return null;
133139
}
134140

135-
public string ToPreviewString() => $"[Image: {PictureSize.X}x{PictureSize.Y}] {FilePath} {ImageSize} {ImageUrl}";
141+
public string ToPreviewString() => $"[Image: {PictureSize.X}x{PictureSize.Y}] {ToPreviewText()} {FilePath} {ImageSize} {ImageUrl}";
136142

137-
public string ToPreviewText() => "[图片]";
143+
public string ToPreviewText() => string.IsNullOrEmpty(Summary) ? "[图片]" : Summary;
138144
}

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")] 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)