cai.client.message_service package¶
MessageSvc Related SDK.
This module is used to build and handle message service related packet.
- Copyright
Copyright (C) 2021-2021 cscs181
- License
AGPL-3.0 or later. See LICENSE for detail.
- class cai.client.message_service.SyncFlag(value)¶
基类:
enum.IntEnumAn enumeration.
- START = 0¶
- CONTINUE = 1¶
- STOP = 2¶
- cai.client.message_service.encode_get_message(seq: int, session_id: bytes, uin: int, d2key: bytes, request_type: int, sync_flag: Union[int, cai.client.message_service.SyncFlag] = SyncFlag.START, sync_cookie: Optional[bytes] = None, online_sync_flag: int = 0, pubaccount_cookie: Optional[bytes] = None, server_buf: Optional[bytes] = None) cai.utils.binary.Packet¶
Build get message packet.
Called in
com.tencent.mobileqq.app.MessageHandler.a.command name:
MessageSvc.PbGetMsg注解
Source: com.tencent.mobileqq.app.MessageHandler.a
- 参数
seq (int) – Packet sequence.
session_id (bytes) – Session ID.
uin (int) – User QQ number.
d2key (bytes) – Siginfo d2 key.
request_type (int) – Request type.
sync_flag (Union[int, SyncFlag], optional) – Sync flag. Defaults to
SyncFlag.START.sync_cookie (Optional[bytes], optional) – Sync cookie. Defaults to None.
online_sync_flag (int, optional) – Online sync flag. Defaults to 0.
pubaccount_cookie (Optional[bytes], optional) – Pubaccount cookie. Defaults to None.
server_buf (Optional[bytes], optional) – Server buf from
PushNotify. Defaults to None.
- 返回
PbGetMsg packet.
- 返回类型
- async cai.client.message_service.handle_get_message(client: Client, packet: cai.client.packet.IncomingPacket) GetMessageCommand¶
Handle Pb Get Message response.
注解
Source: c2c 1002
com.tencent.imcore.message.C2CMessageProcessor.b
com.tencent.imcore.message.C2CMessageProcessor.a
com.tencent.imcore.message.C2CMessageProcessorCallback.a
com.tencent.imcore.message.DecodeMsg.a
- cai.client.message_service.encode_delete_message(seq: int, session_id: bytes, uin: int, d2key: bytes, items: List[cai.pb.msf.msg.svc.svc_pb2.MsgItem]) cai.utils.binary.Packet¶
Build delete message packet.
Called in
com.tencent.mobileqq.app.MessageHandler.a.command name:
MessageSvc.PbDeleteMsg注解
Source: com.tencent.mobileqq.app.MessageHandler.a
- 参数
seq (int) – Packet sequence.
session_id (bytes) – Session ID.
uin (int) – User QQ number.
d2key (bytes) – Siginfo d2 key.
items (List[PbDeleteMsgReq.MsgItem]) – List of message items.
- 返回
PbDeleteMsg packet.
- 返回类型
- async cai.client.message_service.handle_push_notify(client: Client, packet: cai.client.packet.IncomingPacket) cai.client.message_service.command.PushNotifyCommand¶
Handle Push Notify Command.
注解
Source: com.tencent.mobileqq.app.handler.receivesuccess.MessageSvcPushNotify.a
- async cai.client.message_service.handle_force_offline(client: Client, packet: cai.client.packet.IncomingPacket) cai.client.message_service.command.PushForceOfflineCommand¶
Submodules¶
cai.client.message_service.command module¶
MessageSvc Command Parser.
This module is used to parse MessageSvc response packets into command.
- Copyright
Copyright (C) 2021-2021 cscs181
- License
AGPL-3.0 or later. See LICENSE for detail.
- class cai.client.message_service.command.GetMessageCommand(uin: int, seq: int, ret_code: int, command_name: str)¶
-
- classmethod decode_response(uin: int, seq: int, ret_code: int, command_name: str, data: bytes) cai.client.message_service.command.GetMessageCommand¶
Decode MessageSvc get message response packet.
注解
Source: c2c 1002
com.tencent.mobileqq.app.handler.receivesuccess.MessageSvcPbGetMsg
com.tencent.mobileqq.app.MessageHandler.h
com.tencent.imcore.message.C2CMessageProcessor.b
- 参数
uin (int) – User QQ
seq (int) – Sequence number of the response packet.
ret_code (int) – Return code of the response.
command_name (str) – Command name of the response.
data (bytes) – Payload data of the response.
- uin: int¶
- seq: int¶
- ret_code: int¶
- command_name: str¶
- class cai.client.message_service.command.GetMessageSuccess(uin: int, seq: int, ret_code: int, command_name: str, response: cai.pb.msf.msg.svc.svc_pb2.PbGetMsgResp)¶
基类:
cai.client.message_service.command.GetMessageCommand- response: cai.pb.msf.msg.svc.svc_pb2.PbGetMsgResp¶
- class cai.client.message_service.command.GetMessageFail(uin: int, seq: int, ret_code: int, command_name: str, message: str)¶
基类:
cai.client.message_service.command.GetMessageCommand- message: str¶
- class cai.client.message_service.command.PushNotifyCommand(uin: int, seq: int, ret_code: int, command_name: str)¶
-
- classmethod decode_response(uin: int, seq: int, ret_code: int, command_name: str, data: bytes) cai.client.message_service.command.PushNotifyCommand¶
Decode MessageSvc push notify packet.
注解
Source: com.tencent.mobileqq.service.message.MessageFactoryReceiver.f
- 参数
uin (int) – User QQ
seq (int) – Sequence number of the response packet.
ret_code (int) – Return code of the response.
command_name (str) – Command name of the response.
data (bytes) – Payload data of the response.
- uin: int¶
- seq: int¶
- ret_code: int¶
- command_name: str¶
- class cai.client.message_service.command.PushNotify(uin: int, seq: int, ret_code: int, command_name: str, notify: cai.client.message_service.jce.RequestPushNotify)¶
- class cai.client.message_service.command.PushNotifyError(uin: int, seq: int, ret_code: int, command_name: str, message: str)¶
基类:
cai.client.message_service.command.PushNotifyCommand- message: str¶
- class cai.client.message_service.command.PushForceOfflineCommand(uin: int, seq: int, ret_code: int, command_name: str)¶
-
- classmethod decode_response(uin: int, seq: int, ret_code: int, command_name: str, data: bytes) cai.client.message_service.command.PushForceOfflineCommand¶
Decode MessageSvc Force Offline request.
注解
Source: mqq.app.MainService
- 参数
uin (int) – User QQ
seq (int) – Sequence number of the response packet.
ret_code (int) – Return code of the response.
command_name (str) – Command name of the response.
data (bytes) – Payload data of the response.
- uin: int¶
- seq: int¶
- ret_code: int¶
- command_name: str¶
- class cai.client.message_service.command.PushForceOffline(uin: int, seq: int, ret_code: int, command_name: str, request: cai.client.message_service.jce.RequestPushForceOffline)¶
基类:
cai.client.message_service.command.PushForceOfflineCommand
- class cai.client.message_service.command.PushForceOfflineError(uin: int, seq: int, ret_code: int, command_name: str, message: str)¶
基类:
cai.client.message_service.command.PushForceOfflineCommand- message: str¶
cai.client.message_service.decoders module¶
MessageSvc message decoder.
This module is used to decode message protobuf.
- Copyright
Copyright (C) 2021-2021 cscs181
- License
AGPL-3.0 or later. See LICENSE for detail.
- cai.client.message_service.decoders.parse_elements(elems: Sequence[cai.pb.im.msg.msg_body.msg_body_pb2.Elem]) List[cai.client.message_service.models.Element]¶
Parse message rich text elements.
Only parse
text,face,small_smoji,common_elem service 33for plain text.注解
Source: com.tencent.imcore.message.ext.codec.decoder.pbelement.*
- class cai.client.message_service.decoders.BuddyMessageDecoder¶
基类:
object- classmethod decode(message: cai.pb.msf.msg.comm.comm_pb2.Msg) Optional[cai.client.event.Event]¶
Buddy Message Decoder.
注解
Source: com.tencent.mobileqq.service.message.codec.decoder.buddyMessage.BuddyMessageDecoder
- classmethod decode_normal_buddy(message: cai.pb.msf.msg.comm.comm_pb2.Msg) Optional[cai.client.event.Event]¶
Normal Buddy Message Decoder.
注解
Source:
com.tencent.mobileqq.service.message.codec.decoder.buddyMessage.NormalBuddyDecoder
com.tencent.mobileqq.service.message.MessagePBElemDecoder
- class cai.client.message_service.decoders.TroopMessageDecoder¶
基类:
object- long_msg_fragment_store: Dict[int, List[cai.pb.msf.msg.comm.comm_pb2.Msg]] = {}¶
- classmethod decode(message: cai.pb.msf.msg.comm.comm_pb2.Msg) Optional[cai.client.event.Event]¶
- class cai.client.message_service.decoders.TempSessionDecoder¶
基类:
object- classmethod decode(message: cai.pb.msf.msg.comm.comm_pb2.Msg) Optional[cai.client.event.Event]¶
- cai.client.message_service.decoders.MESSAGE_DECODERS: Dict[int, Callable[[cai.pb.msf.msg.comm.comm_pb2.Msg], Optional[cai.client.event.Event]]] = {9: <bound method BuddyMessageDecoder.decode of <class 'cai.client.message_service.decoders.BuddyMessageDecoder'>>, 10: <bound method BuddyMessageDecoder.decode of <class 'cai.client.message_service.decoders.BuddyMessageDecoder'>>, 31: <bound method BuddyMessageDecoder.decode of <class 'cai.client.message_service.decoders.BuddyMessageDecoder'>>, 43: <bound method TroopMessageDecoder.decode of <class 'cai.client.message_service.decoders.TroopMessageDecoder'>>, 79: <bound method BuddyMessageDecoder.decode of <class 'cai.client.message_service.decoders.BuddyMessageDecoder'>>, 82: <bound method TroopMessageDecoder.decode of <class 'cai.client.message_service.decoders.TroopMessageDecoder'>>, 97: <bound method BuddyMessageDecoder.decode of <class 'cai.client.message_service.decoders.BuddyMessageDecoder'>>, 120: <bound method BuddyMessageDecoder.decode of <class 'cai.client.message_service.decoders.BuddyMessageDecoder'>>, 132: <bound method BuddyMessageDecoder.decode of <class 'cai.client.message_service.decoders.BuddyMessageDecoder'>>, 133: <bound method BuddyMessageDecoder.decode of <class 'cai.client.message_service.decoders.BuddyMessageDecoder'>>, 140: <bound method TempSessionDecoder.decode of <class 'cai.client.message_service.decoders.TempSessionDecoder'>>, 141: <bound method TempSessionDecoder.decode of <class 'cai.client.message_service.decoders.TempSessionDecoder'>>, 166: <bound method BuddyMessageDecoder.decode of <class 'cai.client.message_service.decoders.BuddyMessageDecoder'>>, 167: <bound method BuddyMessageDecoder.decode of <class 'cai.client.message_service.decoders.BuddyMessageDecoder'>>}¶
C2C Message Decoders.
注解
Source: com.tencent.mobileqq.app.QQMessageFacadeConfig.start
cai.client.message_service.jce module¶
MessageSvc Packet Builder.
This module is used to build and handle MessageSvc packets.
- Copyright
Copyright (C) 2021-2021 cscs181
- License
AGPL-3.0 or later. See LICENSE for detail.
- class cai.client.message_service.jce.CPicInfo(*, path: jce.types.BYTES, host: jce.types.BYTES = b'')¶
基类:
jce.types.JceStructMessageSvc Online Push CPic Info jce packet.
注解
Source: OnlinePushPack.CPicInfo
- path: jce.types.BYTES¶
- host: jce.types.BYTES¶
- class cai.client.message_service.jce.TempMsgHead(*, c2c_type: jce.types.INT32 = 0, service_type: jce.types.INT32 = 0)¶
基类:
jce.types.JceStructMessageSvc Online Push Temp Message Head jce packet.
注解
Source: OnlinePushPack.TempMsgHead
- c2c_type: jce.types.INT32¶
- service_type: jce.types.INT32¶
- class cai.client.message_service.jce.MessageInfo(*, from_uin: jce.types.INT64, message_time: jce.types.INT64, message_type: jce.types.INT16, message_seq: jce.types.INT16, message: jce.types.STRING, real_message_time: jce.types.INT32 = 0, vec_message: jce.types.BYTES = b'', app_share_id: jce.types.INT64 = 0, message_cookies: jce.types.BYTES = b'', app_share_cookie: jce.types.BYTES = b'', message_uid: jce.types.INT64 = 0, last_change_time: jce.types.INT64 = 0, cpic_info: jce.types.LIST[cai.client.message_service.jce.CPicInfo] = [], share_data: cai.client.qq_service.jce.StShareData = None, from_inst_id: jce.types.INT64 = 0, remark_of_sender: jce.types.BYTES = b'', from_mobile: jce.types.STRING = '', from_name: jce.types.STRING = '', nickname: jce.types.LIST[jce.types.STRING] = [], c2c_temp_msg_head: cai.client.message_service.jce.TempMsgHead = None)¶
基类:
jce.types.JceStructMessageSvc Online Push Message Info jce packet.
注解
Source: OnlinePushPack.MsgInfo
- from_uin: jce.types.INT64¶
- message_time: jce.types.INT64¶
- message_type: jce.types.INT16¶
- message_seq: jce.types.INT16¶
- message: jce.types.STRING¶
- real_message_time: jce.types.INT32¶
- vec_message: jce.types.BYTES¶
- message_cookies: jce.types.BYTES¶
- message_uid: jce.types.INT64¶
- last_change_time: jce.types.INT64¶
- cpic_info: jce.types.LIST[cai.client.message_service.jce.CPicInfo]¶
- from_inst_id: jce.types.INT64¶
- remark_of_sender: jce.types.BYTES¶
- from_mobile: jce.types.STRING¶
- from_name: jce.types.STRING¶
- nickname: jce.types.LIST[jce.types.STRING]¶
- c2c_temp_msg_head: Optional[cai.client.message_service.jce.TempMsgHead]¶
- class cai.client.message_service.jce.RequestPushNotify(*, uin: jce.types.INT64, type: jce.types.INT8, service: jce.types.STRING, cmd: jce.types.STRING, notify_cookie: jce.types.BYTES = b'', message_type: jce.types.INT32 = 0, user_active: jce.types.INT32 = 0, general_flag: jce.types.INT32 = 0, binded_uin: jce.types.INT64 = 0, message_info: cai.client.message_service.jce.MessageInfo = None, message_ctrl_buf: jce.types.STRING = '', server_buf: jce.types.BYTES = b'', ping_flag: jce.types.INT64 = 0, svrip: jce.types.INT64 = 0)¶
基类:
jce.types.JceStructMessageSvc Push Notify Request jce packet.
注解
Source: PushNotifyPack.RequestPushNotify
- uin: jce.types.INT64¶
- type: jce.types.INT8¶
- service: jce.types.STRING¶
- cmd: jce.types.STRING¶
- notify_cookie: jce.types.BYTES¶
- message_type: jce.types.INT32¶
- user_active: jce.types.INT32¶
- general_flag: jce.types.INT32¶
- binded_uin: jce.types.INT64¶
- message_info: Optional[cai.client.message_service.jce.MessageInfo]¶
- message_ctrl_buf: jce.types.STRING¶
- server_buf: jce.types.BYTES¶
- ping_flag: jce.types.INT64¶
- svrip: jce.types.INT64¶
- class cai.client.message_service.jce.RequestPushForceOffline(*, uin: jce.types.INT64, title: jce.types.STRING = '', tips: jce.types.STRING = '', same_device: jce.types.BOOL = False)¶
基类:
jce.types.JceStructMessageSvc Push Force Offline Request jce packet.
注解
Source: PushNotifyPack.RequestPushForceOffline
- uin: jce.types.INT64¶
- title: jce.types.STRING¶
- tips: jce.types.STRING¶
- same_device: jce.types.BOOL¶
cai.client.message_service.models module¶
MessageSvc message models.
This module is used to define message models.
- Copyright
Copyright (C) 2021-2021 cscs181
- License
AGPL-3.0 or later. See LICENSE for detail.
- class cai.client.message_service.models.PrivateMessage(_msg: cai.pb.msf.msg.comm.comm_pb2.Msg, seq: int, time: int, auto_reply: bool, from_uin: int, from_nick: str, to_uin: int, message: List[ForwardRef('Element')])¶
-
- seq: int¶
- time: int¶
- auto_reply: bool¶
- from_uin: int¶
- from_nick: str¶
- to_uin: int¶
- message: List[cai.client.message_service.models.Element]¶
- property type: str¶
- class cai.client.message_service.models.GroupMessage(_msg: cai.pb.msf.msg.comm.comm_pb2.Msg, seq: int, time: int, group_id: int, group_name: str, group_level: int, from_uin: int, from_group_card: str, message: List[ForwardRef('Element')])¶
-
- seq: int¶
- time: int¶
- group_id: int¶
- group_name: str¶
- group_level: int¶
- from_uin: int¶
- from_group_card: str¶
- message: List[cai.client.message_service.models.Element]¶
- property type: str¶
- class cai.client.message_service.models.ReplyElement(seq: int, time: int, sender: int, message: List[cai.client.message_service.models.Element], troop_name: Union[str, NoneType])¶
基类:
cai.client.message_service.models.Element- seq: int¶
- time: int¶
- sender: int¶
- message: List[cai.client.message_service.models.Element]¶
- troop_name: Optional[str]¶
- property type: str¶
- class cai.client.message_service.models.TextElement(content: str)¶
基类:
cai.client.message_service.models.Element- content: str¶
- property type: str¶
- class cai.client.message_service.models.FaceElement(id: int)¶
基类:
cai.client.message_service.models.Element- id: int¶
- property type: str¶
- class cai.client.message_service.models.SmallEmojiElement(id: int, text: str)¶
基类:
cai.client.message_service.models.Element- id: int¶
- text: str¶
- property type: str¶