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.IntEnum

An 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.

返回类型

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.

返回类型

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)

基类:cai.client.command.Command

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)

基类:cai.client.command.Command

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)

基类:cai.client.message_service.command.PushNotifyCommand

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)

基类:cai.client.command.Command

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

request: cai.client.message_service.jce.RequestPushForceOffline
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 33 for plain text.

注解

Source: com.tencent.imcore.message.ext.codec.decoder.pbelement.*

参数

elems (Sequence[Elem]) – Sequence of rich text elements.

返回

List of decoded message elements.

返回类型

List[Element]

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.JceStruct

MessageSvc 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.JceStruct

MessageSvc 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.JceStruct

MessageSvc 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
app_share_id: jce.types.INT64
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]
share_data: Optional[cai.client.qq_service.jce.StShareData]
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.JceStruct

MessageSvc Push Notify Request jce packet.

注解

Source: PushNotifyPack.RequestPushNotify

uin: jce.types.INT64
type: jce.types.INT8
service: jce.types.STRING
cmd: jce.types.STRING
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.JceStruct

MessageSvc 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')])

基类:cai.client.event.Event

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

基类:cai.client.event.Event

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.Element

基类:abc.ABC

abstract 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
class cai.client.message_service.models.ImageElement(filename: str, size: int, width: int, height: int, md5: bytes, url: str)

基类:cai.client.message_service.models.Element

filename: str
size: int
width: int
height: int
md5: bytes
url: str
property type: str
class cai.client.message_service.models.PokeElement(id: int, name: str, strength: int, double_hit: int)

基类:cai.client.message_service.models.Element

id: int
name: str
strength: int
double_hit: int
property type: str