Skip to content

Commit 0a861c4

Browse files
committed
chore(server_push): bind necessary service by default
1 parent 0036939 commit 0a861c4

File tree

4 files changed

+42
-12
lines changed

4 files changed

+42
-12
lines changed

lagrange/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def __init__(
2020
protocol: Literal["linux", "macos", "windows"] = "linux",
2121
sign_url: Optional[str] = None,
2222
device_info_path="./device.json",
23-
signinfo_path="./sig.bin"
23+
signinfo_path="./sig.bin",
2424
):
2525
self.im = InfoManager(uin, device_info_path, signinfo_path)
2626
self.uin = uin

lagrange/client/client.py

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,16 @@
22
import struct
33
import asyncio
44
from io import BytesIO
5-
from typing import BinaryIO, Callable, Coroutine, List, Optional, Union, overload, Literal
5+
from typing import (
6+
BinaryIO,
7+
Callable,
8+
Coroutine,
9+
List,
10+
Optional,
11+
Union,
12+
overload,
13+
Literal,
14+
)
615

716
from lagrange.info import AppInfo, DeviceInfo, SigInfo
817
from lagrange.pb.message.msg_push import MsgPushBody
@@ -50,7 +59,7 @@
5059
from .message.encoder import build_message
5160
from .message.types import Element
5261
from .models import UserInfo
53-
from .server_push.binder import PushDeliver
62+
from .server_push import PushDeliver, bind_services
5463
from .wtlogin.sso import SSOPacket
5564

5665

@@ -61,14 +70,17 @@ def __init__(
6170
app_info: AppInfo,
6271
device_info: DeviceInfo,
6372
sig_info: SigInfo,
64-
sign_provider: Optional[Callable[[str, int, bytes], Coroutine[None, None, dict]]] = None,
73+
sign_provider: Optional[
74+
Callable[[str, int, bytes], Coroutine[None, None, dict]]
75+
] = None,
6576
use_ipv6=True,
6677
):
6778
super().__init__(uin, app_info, device_info, sig_info, sign_provider, use_ipv6)
6879

6980
self._events = Events()
7081
self._push_deliver = PushDeliver(self)
7182
self._highway = HighWaySession(self)
83+
bind_services(self._push_deliver)
7284

7385
@property
7486
def events(self) -> Events:
@@ -100,7 +112,9 @@ async def easy_login(self) -> bool:
100112
else:
101113
raise AssertionError("siginfo not found, you must login first")
102114

103-
async def login(self, password: str = "", qrcode_path: Optional[str] = None) -> bool:
115+
async def login(
116+
self, password: str = "", qrcode_path: Optional[str] = None
117+
) -> bool:
104118
try:
105119
if self._sig.temp_pwd:
106120
rsp = await self.easy_login()
@@ -235,7 +249,9 @@ async def down_grp_audio(self, audio: Audio, grp_id: int) -> BytesIO:
235249
async def down_friend_audio(self, audio: Audio) -> BytesIO:
236250
return await self._highway.download_audio(audio, uid=self.uid)
237251

238-
async def fetch_image_url(self, bus_type: Literal[10, 20], node: "IndexNode", uid=None, gid=None):
252+
async def fetch_image_url(
253+
self, bus_type: Literal[10, 20], node: "IndexNode", uid=None, gid=None
254+
):
239255
if bus_type == 10:
240256
return await self._get_pri_img_url(uid, node)
241257
elif bus_type == 20:
@@ -313,7 +329,9 @@ async def get_grp_msg(
313329
), "return args not matched"
314330

315331
rsp = list(
316-
await asyncio.gather(*[parse_grp_msg(self, MsgPushBody.decode(i)) for i in payload.elems])
332+
await asyncio.gather(
333+
*[parse_grp_msg(self, MsgPushBody.decode(i)) for i in payload.elems]
334+
)
317335
)
318336
if filter_deleted_msg:
319337
return [*filter(lambda msg: msg.rand != -1, rsp)]
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from .binder import PushDeliver
2+
from .msg import msg_push_handler
3+
from .service import server_kick_handler
4+
5+
6+
def bind_services(pd: PushDeliver):
7+
pd.subscribe("trpc.msg.olpush.OlPushService.MsgPush", msg_push_handler)
8+
pd.subscribe(
9+
"trpc.qq_new_tech.status_svc.StatusService.KickNT", server_kick_handler
10+
)

lagrange/client/server_push/msg.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,23 @@
1111
MemberGotTitleBody,
1212
MemberInviteRequest,
1313
MemberJoinRequest,
14-
MemberRecallMsg, GroupSub20Head,
14+
MemberRecallMsg,
15+
GroupSub20Head,
1516
)
1617
from lagrange.utils.binary.protobuf import proto_decode, ProtoStruct
1718
from lagrange.utils.binary.reader import Reader
1819
from lagrange.utils.operator import unpack_dict
1920

20-
from ..events import BaseEvent
2121
from ..events.group import (
2222
GroupMemberGotSpecialTitle,
2323
GroupMemberJoined,
2424
GroupMemberJoinRequest,
2525
GroupMemberQuit,
2626
GroupMuteMember,
2727
GroupNameChanged,
28-
GroupRecall, GroupNudge, GroupReaction,
28+
GroupRecall,
29+
GroupNudge,
30+
GroupReaction,
2931
)
3032
from ..wtlogin.sso import SSOPacket
3133
from .log import logger
@@ -102,7 +104,7 @@ async def msg_push_handler(client: "Client", sso: SSOPacket):
102104
attrs["action_str"],
103105
attrs["suffix_str"],
104106
attrs,
105-
pb.body.attrs_xml
107+
pb.body.attrs_xml,
106108
)
107109
else:
108110
# print(pkg.encode().hex(), 2)
@@ -144,7 +146,7 @@ async def msg_push_handler(client: "Client", sso: SSOPacket):
144146
emoji_type=body.detail.emo_type,
145147
emoji_count=body.detail.count,
146148
type=body.detail.send_type,
147-
total_operations=body.msg.total_operations
149+
total_operations=body.msg.total_operations,
148150
)
149151
else:
150152
raise ValueError(

0 commit comments

Comments
 (0)