Skip to content

Commit 949ea78

Browse files
committed
feat(event): add GroupAlbumUpdate
1 parent 91848d4 commit 949ea78

File tree

3 files changed

+36
-2
lines changed

3 files changed

+36
-2
lines changed

lagrange/client/events/group.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,3 +130,11 @@ def is_increase(self) -> bool:
130130
@property
131131
def is_emoji(self) -> bool:
132132
return self.emoji_type == 2
133+
134+
135+
@dataclass
136+
class GroupAlbumUpdate(GroupEvent):
137+
"""群相册更新(上传)"""
138+
139+
timestamp: int
140+
image_id: str

lagrange/client/server_push/msg.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import json
22
import re
3+
from urllib.parse import parse_qsl
34
from typing import TYPE_CHECKING, Type, Tuple, TypeVar, Union, Dict
45

56
from lagrange.client.message.decoder import parse_grp_msg, parse_friend_msg
@@ -13,6 +14,7 @@
1314
MemberJoinRequest,
1415
MemberRecallMsg,
1516
GroupSub20Head,
17+
PBGroupAlbumUpdate,
1618
)
1719
from lagrange.utils.binary.protobuf import proto_decode, ProtoStruct, proto_encode
1820
from lagrange.utils.binary.reader import Reader
@@ -29,6 +31,7 @@
2931
GroupNudge,
3032
GroupReaction,
3133
GroupSign,
34+
GroupAlbumUpdate,
3235
)
3336
from ..wtlogin.sso import SSOPacket
3437
from .log import logger
@@ -169,6 +172,16 @@ async def msg_push_handler(client: "Client", sso: SSOPacket):
169172
)
170173
elif pb.flag == 23: # 群幸运字符?
171174
pass
175+
elif pb.flag == 37: # 群相册上传(手Q专用:()
176+
_, pb = unpack(
177+
pkg.message.buf2, PBGroupAlbumUpdate
178+
) # 塞 就硬塞,可以把你的顾辉盒也给塞进来
179+
q = dict(parse_qsl(pb.body.args))
180+
return GroupAlbumUpdate(
181+
grp_id=pb.grp_id,
182+
timestamp=pb.timestamp,
183+
image_id=q["i"],
184+
)
172185
else:
173186
raise ValueError(
174187
f"Unknown subtype_12 flag: {pb.flag}: {pb.body.hex() if pb.body else pb}"

lagrange/pb/status/group.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ class GroupReactionInner(ProtoStruct):
9898
body: GroupReactionBody = proto_field(1)
9999

100100

101-
class GroupReaction(ProtoStruct):
101+
class PBGroupReaction(ProtoStruct):
102102
inner: GroupReactionInner = proto_field(1)
103103

104104

@@ -110,7 +110,7 @@ class GroupSub16Head(ProtoStruct):
110110
13
111111
) # 12: renamed, 6: set special_title, 13: unknown, 35: set reaction
112112
operator_uid: str = proto_field(21, default="")
113-
f44: Optional[GroupReaction] = proto_field(44, default=None) # set reaction only
113+
f44: Optional[PBGroupReaction] = proto_field(44, default=None) # set reaction only
114114

115115

116116
class GroupSub20Body(ProtoStruct):
@@ -128,3 +128,16 @@ class GroupSub20Head(ProtoStruct):
128128
grp_id: int = proto_field(4)
129129
f13: int = proto_field(13) # 19
130130
body: GroupSub20Body = proto_field(26)
131+
132+
133+
class PBGroupAlbumUpdateBody(ProtoStruct):
134+
# f1: 6
135+
args: str = proto_field(2)
136+
137+
138+
class PBGroupAlbumUpdate(ProtoStruct):
139+
# f1: 38
140+
timestamp: int = proto_field(2)
141+
grp_id: int = proto_field(4)
142+
# f13: 37
143+
body: PBGroupAlbumUpdateBody = proto_field(46)

0 commit comments

Comments
 (0)