cai.client.status_service package

StatSvc Related SDK.

This module is used to build and handle status service related packet.

Copyright

Copyright (C) 2021-2021 cscs181

License

AGPL-3.0 or later. See LICENSE for detail.

class cai.client.status_service.OnlineStatus(value)

基类:enum.IntEnum

注解

Source: mqq.app.AppRuntime

Unknown = 0

未知

Online = 11

我在线上

Offline = 21

离线

Away = 31

离开

Invisible = 41

隐身

Busy = 50

忙碌

Qme = 60

Q 我吧

Dnd = 70

请勿打扰

ReceiveOfflineMsg = 95

离线但接收消息

Battery = 1000

当前电量

Listening = 1028

听歌中

Constellation = 1040

星座运势

Weather = 1030

今日天气

MeetSpring = 1069

遇见春天

Timi = 1027

Timi中

EatChicken = 1064

吃鸡中

Loving = 1051

恋爱中

WangWang = 1053

汪汪汪

CookedRice = 1019

干饭中

Study = 1018

学习中

StayUp = 1032

熬夜中

PlayBall = 1050

打球中

Signal = 1011

信号弱

StudyOnline = 1024

在线学习

Gaming = 1017

游戏中

Vacationing = 1022

度假中

WatchingTV = 1021

追剧中

Fitness = 1020

健身中

class cai.client.status_service.RegPushReason(value)

基类:str, enum.Enum

注解

Source: com.tencent.mobileqq.msf.core.push.RegPushReason

MsfBoot = 'msfBoot'
AppRegister = 'appRegister'
Unknown = 'unknown'
MsfHeartTimeTooLong = 'msfHeartTimeTooLong'
MsfByNetChange = 'msfByNetChange'
ServerPush = 'serverPush'
FillRegProxy = 'fillRegProxy'
CreateDefaultRegInfo = 'createDefaultRegInfo'
SetOnlineStatus = 'setOnlineStatus'
cai.client.status_service.encode_register(seq: int, session_id: bytes, ksid: bytes, uin: int, tgt: bytes, d2: bytes, d2key: bytes, status: Union[int, cai.client.status_service.OnlineStatus], reg_push_reason: Union[str, cai.client.status_service.RegPushReason]) cai.utils.binary.Packet

Build status service register packet.

Called in com.tencent.mobileqq.msf.core.push.e.a.

command name: StatSvc.register

注解

Source: com.tencent.mobileqq.msf.core.push.e.a

参数
  • seq (int) – Packet sequence.

  • session_id (bytes) – Session ID.

  • ksid (bytes) – KSID of client.

  • uin (int) – User QQ number.

  • tgt (bytes) – Siginfo tgt.

  • d2 (bytes) – Siginfo d2.

  • d2key (bytes) – Siginfo d2 key.

  • status (Union[int, OnlineStatus]) – Online status.

  • reg_push_reason (Union[str, RegPushReason]) – Reg push reason.

  • battery_status (Optional[int], optional) – Battery capacity. Defaults to None.

  • is_power_connected (bool, optional) – Is power connected to phone. Defaults to False.

返回

Register packet.

返回类型

Packet

cai.client.status_service.encode_set_status(seq: int, session_id: bytes, uin: int, d2key: bytes, status: Union[int, cai.client.status_service.OnlineStatus], battery_status: Optional[int] = None, is_power_connected: bool = False) cai.utils.binary.Packet

Build status service register packet.

Called in com.tencent.mobileqq.msf.core.push.e.a.

command name: StatSvc.SetStatusFromClient

注解

Source: com.tencent.mobileqq.msf.core.push.e.a

参数
  • seq (int) – Packet sequence.

  • session_id (bytes) – Session ID.

  • uin (int) – User QQ number.

  • d2key (bytes) – Siginfo d2 key.

  • status (Union[int, OnlineStatus]) – Online status.

  • reg_push_reason (Union[str, RegPushReason]) – Reg push reason.

  • battery_status (Optional[int], optional) – Battery capacity. Only works when status is OnlineStatus.Battery. Defaults to None.

  • is_power_connected (bool, optional) – Is power connected to phone. Only works when status is OnlineStatus.Battery. Defaults to False.

返回

Register packet.

返回类型

Packet

async cai.client.status_service.handle_register_response(client: Client, packet: cai.client.packet.IncomingPacket) cai.client.status_service.command.SvcRegisterResponse
cai.client.status_service.encode_force_offline_response(seq: int, session_id: bytes, ksid: bytes, uin: int, tgt: bytes, d2: bytes, d2key: bytes, req_uin: int, seq_no: int) cai.utils.binary.Packet

Build status service msf offline response packet.

Called in com.tencent.mobileqq.msf.core.af.a.

command name: StatSvc.RspMSFForceOffline

注解

Source: com.tencent.mobileqq.msf.core.af.a

参数
  • seq (int) – Packet sequence.

  • session_id (bytes) – Session ID.

  • ksid (bytes) – KSID of client.

  • uin (int) – User QQ number.

  • tgt (bytes) – Siginfo tgt.

  • d2 (bytes) – Siginfo d2.

  • d2key (bytes) – Siginfo d2 key.

  • req_uin (int) – Request offline uin.

  • seq_no (int) – Request sequence number.

返回

msf force offline response packet.

返回类型

Packet

async cai.client.status_service.handle_request_offline(client: Client, packet: cai.client.packet.IncomingPacket) cai.client.status_service.command.MSFForceOfflineCommand

Submodules

cai.client.status_service.command module

StatSvc Command Parser.

This module is used to parse StatSvc response packets into command.

Copyright

Copyright (C) 2021-2021 cscs181

License

AGPL-3.0 or later. See LICENSE for detail.

class cai.client.status_service.command.SvcRegisterResponse(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.status_service.command.SvcRegisterResponse

Decode StatSvc register response.

注解

Source: com.tencent.mobileqq.servlet.PushServlet.onReceive

参数
  • 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.

返回

register success. RegisterFail: register failed.

返回类型

RegisterSuccess

uin: int
seq: int
ret_code: int
command_name: str
class cai.client.status_service.command.RegisterFail(uin: int, seq: int, ret_code: int, command_name: str, message: Union[str, NoneType] = None)

基类:cai.client.status_service.command.SvcRegisterResponse

message: Optional[str] = None
class cai.client.status_service.command.RegisterSuccess(uin: int, seq: int, ret_code: int, command_name: str, response: cai.client.status_service.jce.SvcRespRegister)

基类:cai.client.status_service.command.SvcRegisterResponse

response: cai.client.status_service.jce.SvcRespRegister
class cai.client.status_service.command.MSFForceOfflineCommand(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.status_service.command.MSFForceOfflineCommand

Decode StatSvc MSF Offline request.

注解

Source: com.tencent.mobileqq.msf.core.af.a

参数
  • 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.status_service.command.MSFForceOffline(uin: int, seq: int, ret_code: int, command_name: str, request: cai.client.status_service.jce.RequestMSFForceOffline)

基类:cai.client.status_service.command.MSFForceOfflineCommand

request: cai.client.status_service.jce.RequestMSFForceOffline
class cai.client.status_service.command.MSFForceOfflineError(uin: int, seq: int, ret_code: int, command_name: str, message: str)

基类:cai.client.status_service.command.MSFForceOfflineCommand

message: str

cai.client.status_service.jce module

StatSvc Packet Builder.

This module is used to build and handle StatSvc packets.

Copyright

Copyright (C) 2021-2021 cscs181

License

AGPL-3.0 or later. See LICENSE for detail.

class cai.client.status_service.jce.VendorPushInfo(*, vendor_type: jce.types.INT64 = 0)

基类:jce.types.JceStruct

Vendor Push Info Jce Packet.

注解

Source: com.tencent.msf.service.protocol.push.VendorPushInfo

vendor_type: jce.types.INT64

third push type.

Type

INT64

class cai.client.status_service.jce.SvcReqRegister(*, uin: jce.types.INT64, bid: jce.types.INT64, conn_type: jce.types.BYTE = b'\x00', other: jce.types.STRING = '', status: jce.types.INT32, online_push: jce.types.BOOL = False, is_online: jce.types.BOOL = False, is_show_online: jce.types.BOOL = False, kick_pc: jce.types.BOOL = False, kick_weak: jce.types.BOOL = False, timestamp: jce.types.INT64 = 0, ios_version: jce.types.INT64, nettype: jce.types.BYTE, build_version: jce.types.STRING = '', reg_type: jce.types.BYTE, dev_param: jce.types.BYTES = None, guid: jce.types.BYTES = None, locale_id: jce.types.INT32 = 2052, slient_push: jce.types.BYTE = b'\x00', dev_name: jce.types.STRING = '', dev_type: jce.types.STRING = '', os_version: jce.types.STRING = '', open_push: jce.types.BOOL = True, large_seq: jce.types.INT64, last_watch_start_time: jce.types.INT64 = 0, bind_uin: jce.types.LIST[jce.types.JceType] = None, old_sso_ip: jce.types.INT64 = 0, new_sso_ip: jce.types.INT64 = 0, channel_num: jce.types.STRING = '', cp_id: jce.types.INT64 = 0, vendor_name: jce.types.STRING = '', vendor_os_name: jce.types.STRING = '', ios_idfa: jce.types.STRING = '', b769_req: jce.types.BYTES = None, is_set_status: jce.types.BOOL, server_buf: jce.types.BYTES = None, set_mute: jce.types.BOOL, ext_online_status: jce.types.INT64, battery_status: jce.types.INT32, vendor_push_info: cai.client.status_service.jce.VendorPushInfo = None)

基类:jce.types.JceStruct

Service Request Register Jce Packet.

注解

Source: com.tencent.msf.service.protocol.push.SvcReqRegister

uin: jce.types.INT64

uin.

Type

INT64

bid: jce.types.INT64

login bid.

login: 1 | 2 | 4 = 7, logout: 0.

Type

INT64

conn_type: jce.types.BYTE

always 0.

Type

BYTE

other: jce.types.STRING

unknown.

Type

STRING

status: jce.types.INT32

online status.

online: 11, offline: 21, away: 31, invisible: 41, busy: 50, qme: 60, dnd: 70, receive_offline_msg: 95.

Type

INT32

online_push: jce.types.BOOL

unknown.

Type

BOOL

is_online: jce.types.BOOL

is online.

Type

BOOL

is_show_online: jce.types.BOOL

is show online.

Type

BOOL

kick_pc: jce.types.BOOL

whether to kick pc or not.

Type

BOOL

kick_weak: jce.types.BOOL

kick weak.

Type

BOOL

timestamp: jce.types.INT64

timestamp.

Type

INT64

ios_version: jce.types.INT64

android sdk version.

Type

INT64

nettype: jce.types.BYTE

nettype.

wifi: 1, mobile: 0.

Type

BYTE

build_version: jce.types.STRING

build version.

Type

STRING

reg_type: jce.types.BYTE

reg push reason.

appRegister, fillRegProxy, createDefaultRegInfo, setOnlineStatus: 0; else 1.

Type

BYTE

dev_param: Optional[jce.types.BYTES]

unknown.

Type

BYTES

guid: Optional[jce.types.BYTES]

guid.

Type

BYTES

locale_id: jce.types.INT32

2052 by default.

Type

INT32

slient_push: jce.types.BYTE

unknown.

Type

BYTE

dev_name: jce.types.STRING

device model.

Type

STRING

dev_type: jce.types.STRING

device model.

Type

STRING

os_version: jce.types.STRING

build version release.

Type

STRING

open_push: jce.types.BOOL

open push.

Type

BOOL

large_seq: jce.types.INT64

large seq.

Type

INT64

last_watch_start_time: jce.types.INT64

unknown.

Type

INT64

bind_uin: Optional[jce.types.LIST[jce.types.JceType]]

unknown.

Type

LIST

old_sso_ip: jce.types.INT64

old sso ip.

Type

INT64

new_sso_ip: jce.types.INT64

new sso ip.

Type

INT64

channel_num: jce.types.STRING

unknown.

Type

STRING

cp_id: jce.types.INT64

unknown.

Type

INT64

vendor_name: jce.types.STRING

vendor name.

from com.tencent.qphone.base.util.ROMUtil.getRomName():

MIUI, EMUI, FuntouchOS, SMARTISAN, LENOVO, H2OS/O2OS, EUI, MiFavorUI, NUBIAUI, FLYME, LINEAGE, 360, Build.MANUFACTURER

Type

STRING

vendor_os_name: jce.types.STRING

vendor os name.

com.tencent.qphone.base.util.ROMUtil.getRomVersion():

ro.miui.ui.version.name, ro.build.version.emui, ro.vivo.os.version, …

Type

STRING

ios_idfa: jce.types.STRING

unknown.

Type

STRING

b769_req: Optional[jce.types.BYTES]

oidb 0x769 request body.

Type

BYTES

is_set_status: jce.types.BOOL

is set status.

reg push reason:

setOnlineStatus: True, else: False.

Type

BOOL

server_buf: Optional[jce.types.BYTES]

unknown.

Type

BYTES

set_mute: jce.types.BOOL

set mute.

Type

BOOL

ext_online_status: jce.types.INT64

extra online status.

Type

INT64

battery_status: jce.types.INT32

battery status.

battery capacity ( capacity | 128 when power connect).

Type

INT32

vendor_push_info: Optional[cai.client.status_service.jce.VendorPushInfo]

vendor push info.

Type

VendorPushInfo

class cai.client.status_service.jce.SvcRespRegister(*, uin: jce.types.INT64, bid: jce.types.INT64, reply_code: jce.types.INT8, result: jce.types.STRING = '', server_time: jce.types.INT64 = 0, log_qq: jce.types.BYTE = b'\x00', need_kick: jce.types.BOOL = False, update_flag: jce.types.BYTE = b'\x00', timestamp: jce.types.INT64 = 0, crash_flag: jce.types.BYTE = b'\x00', client_ip: jce.types.STRING = '', client_port: jce.types.INT = 0, hello_interval: jce.types.INT = 300, large_seq: jce.types.INT64, large_seq_update: jce.types.BYTE = b'\x00', b769_resp: jce.types.BYTES = None, status: jce.types.INT32 = 0, ext_online_status: jce.types.INT64 = 0, client_battery_get_interval: jce.types.INT64 = 86400, client_auto_status_interval: jce.types.INT64 = 600)

基类:jce.types.JceStruct

Service Response Register Jce Packet.

注解

Source: com.tencent.msf.service.protocol.push.SvcRespRegister

uin: jce.types.INT64

uin.

Type

INT64

bid: jce.types.INT64

login bid.

login: 1 | 2 | 4 = 7, logout: 0.

Type

INT64

reply_code: jce.types.INT8

reply code.

Type

INT8

result: jce.types.STRING

reply message.

Type

STRING

server_time: jce.types.INT64

server time.

Type

INT64

log_qq: jce.types.BYTE

unknown.

Type

BYTE

need_kick: jce.types.BOOL

need kick.

Type

BOOL

update_flag: jce.types.BYTE

unknown.

Type

BYTE

timestamp: jce.types.INT64

timestamp.

Type

INT64

crash_flag: jce.types.BYTE

unknown.

Type

BYTE

client_ip: jce.types.STRING

client IP.

Type

STRING

client_port: jce.types.INT

client port.

Type

INT

hello_interval: jce.types.INT

heartbeat interval time.

Type

INT

large_seq: jce.types.INT64

large seq.

Type

INT64

large_seq_update: jce.types.BYTE

unknown.

Type

BYTE

b769_resp: Optional[jce.types.BYTES]

oidb 0x769 response body.

Type

BYTES

status: jce.types.INT32

online status.

online: 11, offline: 21, away: 31, invisible: 41, busy: 50, qme: 60, dnd: 70, receive_offline_msg: 95.

Type

INT32

ext_online_status: jce.types.INT64

extra online status.

Type

INT64

client_battery_get_interval: jce.types.INT64

client battery status get interval.

Type

INT64

client_auto_status_interval: jce.types.INT64

client status get interval.

Type

INT64

class cai.client.status_service.jce.RequestMSFForceOffline(*, uin: jce.types.INT64, seq_no: jce.types.INT64, kick_type: jce.types.INT8, info: jce.types.STRING, title: jce.types.STRING = '', sig_kick: jce.types.BYTE = b'\x00', sig_kick_data: jce.types.BYTES = b'', same_device: jce.types.BOOL = False)

基类:jce.types.JceStruct

StatSvc MSF Force offline Request jce packet.

注解

Source: com.tencent.msf.service.protocol.push.RequestMSFForceOffline

uin: jce.types.INT64
seq_no: jce.types.INT64
kick_type: jce.types.INT8
info: jce.types.STRING
title: jce.types.STRING
sig_kick: jce.types.BYTE
sig_kick_data: jce.types.BYTES
same_device: jce.types.BOOL
class cai.client.status_service.jce.ResponseMSFForceOffline(*, uin: jce.types.INT64, seq_no: jce.types.INT64, c: jce.types.BYTE)

基类:jce.types.JceStruct

StatSvc MSF Force offline Response jce packet.

注解

Source: com.tencent.msf.service.protocol.push.C35829b

uin: jce.types.INT64
seq_no: jce.types.INT64
c: jce.types.BYTE