From 25d746e2c729b2b0d12e25a1439218a6d7867717 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sat, 19 Mar 2022 23:35:23 +0800 Subject: [PATCH 001/113] change: rewrite login.py --- cai/api/base.py | 19 ++++ cai/api/login.py | 243 +++++++++++++++++------------------------------ 2 files changed, 106 insertions(+), 156 deletions(-) create mode 100644 cai/api/base.py diff --git a/cai/api/base.py b/cai/api/base.py new file mode 100644 index 00000000..6273fe8f --- /dev/null +++ b/cai/api/base.py @@ -0,0 +1,19 @@ +from typing import Callable + +from cai.client.client import Client as client_t +from cai.exceptions import LoginException + + +class BaseAPI: + client: client_t + + async def _executor(self, func_name: str, *args, **kwargs): + if not hasattr(self.client, func_name): + raise AttributeError(f"client has no attribute '{func_name}'") + try: + await getattr(self.client, func_name)(*args, **kwargs) + except LoginException: + raise + except Exception: + await self.client.close() + raise diff --git a/cai/api/login.py b/cai/api/login.py index b6a71ea4..e2c71d37 100644 --- a/cai/api/login.py +++ b/cai/api/login.py @@ -6,165 +6,96 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ +import hashlib +from typing import Optional, Union -from typing import Optional - +from .base import BaseAPI from cai.client import Client -from cai.exceptions import LoginException - -from . import _clients -from .client import get_client - - -async def login(uin: int, password_md5: Optional[bytes] = None) -> Client: - """Create a new client (or use an existing one) and login. - - Password md5 should be provided when login a new account. - - This function wraps the :meth:`~cai.client.client.Client.login` method of the client. - - Args: - uin (int): QQ account number. - password_md5 (Optional[bytes], optional): md5 bytes of the password. Defaults to None. - - Raises: - RuntimeError: Client already exists and is running. - RuntimeError: Password not provided when login a new account. - LoginSliderException: Need slider ticket. - LoginCaptchaException: Need captcha image. - """ - if uin in _clients: - client = _clients[uin] - if client.connected: - raise RuntimeError(f"Client {uin} already connected!") - client._password_md5 = password_md5 or client._password_md5 - else: - if not password_md5: - raise RuntimeError(f"Password md5 needed for creating new client!") - client = Client(uin, password_md5) - _clients[uin] = client - - await client.reconnect() - try: - await client.login() - except LoginException: - raise - except Exception: - await client.close() - raise - return client - - -async def submit_captcha( - captcha: str, captcha_sign: bytes, uin: Optional[int] = None -) -> bool: - """Submit captcha data to login. - - This function wraps the :meth:`~cai.client.client.Client.submit_captcha` - method of the client. - - Args: - captcha (str): Captcha data to submit. - captcha_sign (bytes): Captcha sign received when login. - uin (Optional[int], optional): Account of the client want to login. - Defaults to None. - - Raises: - RuntimeError: Client already exists and is running. - RuntimeError: Password not provided when login a new account. - LoginSliderException: Need slider ticket. - LoginCaptchaException: Need captcha image. - """ - client = get_client(uin) - try: - await client.submit_captcha(captcha, captcha_sign) - except LoginException: - raise - except Exception: - await client.close() - raise - return True - - -async def submit_slider_ticket(ticket: str, uin: Optional[int] = None) -> bool: - """Submit slider ticket to login. - - This function wraps the :meth:`~cai.client.client.Client.submit_slider_ticket` - method of the client. - - Args: - ticket (str): Slider ticket to submit. - uin (Optional[int], optional): Account of the client want to login. - Defaults to None. - - Raises: - RuntimeError: Client already exists and is running. - RuntimeError: Password not provided when login a new account. - LoginSliderException: Need slider ticket. - LoginCaptchaException: Need captcha image. - """ - client = get_client(uin) - try: - await client.submit_slider_ticket(ticket) - except LoginException: - raise - except Exception: - await client.close() - raise - return True - - -async def request_sms(uin: Optional[int] = None) -> bool: - """Request sms code message to login. - - This function wraps the :meth:`~cai.client.client.Client.request_sms` - method of the client. - - Args: - uin (Optional[int], optional): Account of the client want to login. - Defaults to None. - - Raises: - RuntimeError: Client already exists and is running. - RuntimeError: Password not provided when login a new account. - LoginSMSRequestError: Too many SMS messages were sent. - """ - client = get_client(uin) - return await client.request_sms() - - -async def submit_sms(sms_code: str, uin: Optional[int] = None) -> bool: - """Submit sms code to login. - - This function wraps the :meth:`~cai.client.client.Client.submit_sms` - method of the client. - - Args: - sms_code (str): SMS code to submit. - uin (Optional[int], optional): Account of the client want to login. - Defaults to None. - - Raises: - RuntimeError: Client already exists and is running. - RuntimeError: Password not provided when login a new account. - LoginSliderException: Need slider ticket. - LoginCaptchaException: Need captcha image. - """ - client = get_client(uin) - try: - await client.submit_sms(sms_code) - except LoginException: - raise - except Exception: - await client.close() - raise - return True + + +class Login(BaseAPI): + def __init__(self, client: Client): + self.client = client + + async def login(self): + """Create a new client (or use an existing one) and login. + + This function wraps the :meth:`~cai.client.client.Client.login` method of the client. + + Raises: + LoginSliderException: Need slider ticket. + LoginCaptchaException: Need captcha image. + """ + await self.client.reconnect() + await self._executor("login") + + async def submit_captcha( + self, captcha: str, captcha_sign: bytes + ) -> bool: + """Submit captcha data to login. + + This function wraps the :meth:`~cai.client.client.Client.submit_captcha` + method of the client. + + Args: + captcha (str): Captcha data to submit. + captcha_sign (bytes): Captcha sign received when login. + + Raises: + LoginSliderException: Need slider ticket. + LoginCaptchaException: Need captcha image. + """ + await self._executor("submit_captcha", captcha, captcha_sign) + return True + + async def submit_slider_ticket(self, ticket: str, uin: Optional[int] = None) -> bool: + """Submit slider ticket to login. + + This function wraps the :meth:`~cai.client.client.Client.submit_slider_ticket` + method of the client. + + Args: + ticket (str): Slider ticket to submit. + + Raises: + LoginSliderException: Need slider ticket. + LoginCaptchaException: Need captcha image. + """ + await self._executor("submit_slider_ticket", ticket) + return True + + async def request_sms(self) -> bool: + """Request sms code message to login. + + This function wraps the :meth:`~cai.client.client.Client.request_sms` + method of the client. + + Args: + uin (Optional[int], optional): Account of the client want to login. + Defaults to None. + + Raises: + LoginSMSRequestError: Too many SMS messages were sent. + """ + return await self.client.request_sms() + + async def submit_sms(self, sms_code: str) -> bool: + """Submit sms code to login. + + This function wraps the :meth:`~cai.client.client.Client.submit_sms` + method of the client. + + Args: + sms_code (str): SMS code to submit. + + Raises: + LoginSliderException: Need slider ticket. + LoginCaptchaException: Need captcha image. + """ + await self._executor("submit_sms", sms_code) + return True __all__ = [ - "login", - "submit_captcha", - "submit_slider_ticket", - "request_sms", - "submit_sms", + "Login" ] From 1c037d546b95a85dfbbd0c5df7663d1dbd7fb33c Mon Sep 17 00:00:00 2001 From: a1025 Date: Sat, 19 Mar 2022 23:51:51 +0800 Subject: [PATCH 002/113] fix: logical of login.py --- cai/api/login.py | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/cai/api/login.py b/cai/api/login.py index e2c71d37..ebe2ee1f 100644 --- a/cai/api/login.py +++ b/cai/api/login.py @@ -11,6 +11,7 @@ from .base import BaseAPI from cai.client import Client +from cai.exceptions import LoginException class Login(BaseAPI): @@ -27,7 +28,11 @@ async def login(self): LoginCaptchaException: Need captcha image. """ await self.client.reconnect() - await self._executor("login") + try: + await self._executor("login") + except not LoginException: + await self.client.close() + raise async def submit_captcha( self, captcha: str, captcha_sign: bytes @@ -45,10 +50,14 @@ async def submit_captcha( LoginSliderException: Need slider ticket. LoginCaptchaException: Need captcha image. """ - await self._executor("submit_captcha", captcha, captcha_sign) + try: + await self._executor("submit_captcha", captcha, captcha_sign) + except not LoginException: + await self.client.close() + raise return True - async def submit_slider_ticket(self, ticket: str, uin: Optional[int] = None) -> bool: + async def submit_slider_ticket(self, ticket: str) -> bool: """Submit slider ticket to login. This function wraps the :meth:`~cai.client.client.Client.submit_slider_ticket` @@ -61,7 +70,11 @@ async def submit_slider_ticket(self, ticket: str, uin: Optional[int] = None) -> LoginSliderException: Need slider ticket. LoginCaptchaException: Need captcha image. """ - await self._executor("submit_slider_ticket", ticket) + try: + await self._executor("submit_slider_ticket", ticket) + except not LoginException: + await self.client.close() + raise return True async def request_sms(self) -> bool: @@ -77,7 +90,11 @@ async def request_sms(self) -> bool: Raises: LoginSMSRequestError: Too many SMS messages were sent. """ - return await self.client.request_sms() + try: + return await self.client.request_sms() + except not LoginException: + await self.client.close() + raise async def submit_sms(self, sms_code: str) -> bool: """Submit sms code to login. @@ -92,7 +109,11 @@ async def submit_sms(self, sms_code: str) -> bool: LoginSliderException: Need slider ticket. LoginCaptchaException: Need captcha image. """ - await self._executor("submit_sms", sms_code) + try: + await self._executor("submit_sms", sms_code) + except not LoginException: + await self.client.close() + raise return True From d776777fadfd7b912449697f597e88ea9b65845c Mon Sep 17 00:00:00 2001 From: a1025 Date: Sat, 19 Mar 2022 23:56:19 +0800 Subject: [PATCH 003/113] change: rewrite group.py --- cai/api/group.py | 123 +++++++++++++++++++++-------------------------- 1 file changed, 56 insertions(+), 67 deletions(-) diff --git a/cai/api/group.py b/cai/api/group.py index c6b700fc..b2d87e2b 100644 --- a/cai/api/group.py +++ b/cai/api/group.py @@ -9,88 +9,77 @@ from typing import List, Union, Optional -from cai.client import Group, GroupMember +from .base import BaseAPI +from cai.client import GroupMember, Group as group_t -from .client import get_client +class Group(BaseAPI): + async def get_group( + self, group_id: int, cache: bool = True + ) -> Optional[group_t]: + """Get Group. + This function wraps the :meth:`~cai.client.client.Client.get_group` + method of the client. -async def get_group( - group_id: int, cache: bool = True, uin: Optional[int] = None -) -> Optional[Group]: - """Get Group. + Args: + group_id (int): Group id. + cache (bool, optional): Use cached friend group list. Defaults to True. - This function wraps the :meth:`~cai.client.client.Client.get_group` - method of the client. + Returns: + Group: Group object. + None: Group not exists. - Args: - group_id (int): Group id. - cache (bool, optional): Use cached friend group list. Defaults to True. - uin (Optional[int], optional): Account of the client want to use. - Defaults to None. + Raises: + RuntimeError: Error response type got. This should not happen. + ApiResponseError: Get friend list failed. + FriendListException: Get friend list returned non-zero ret code. + """ + return await self._executor("get_group", group_id, cache) - Returns: - Group: Group object. - None: Group not exists. - Raises: - RuntimeError: Error response type got. This should not happen. - ApiResponseError: Get friend list failed. - FriendListException: Get friend list returned non-zero ret code. - """ - client = get_client(uin) - return await client.get_group(group_id, cache) + async def get_group_list( + self, cache: bool = True + ) -> List[group_t]: + """Get account group list. + This function wraps the :meth:`~cai.client.client.Client.get_group_list` + method of the client. -async def get_group_list( - cache: bool = True, uin: Optional[int] = None -) -> List[Group]: - """Get account group list. + Args: + cache (bool, optional): Use cached group list. Defaults to True. - This function wraps the :meth:`~cai.client.client.Client.get_group_list` - method of the client. + Returns: + List[Group]: Group list. - Args: - cache (bool, optional): Use cached group list. Defaults to True. - uin (Optional[int], optional): Account of the client want to use. - Defaults to None. + Raises: + RuntimeError: Error response type got. This should not happen. + ApiResponseError: Get group list failed. + GroupListException: Get group list returned non-zero ret code. + """ + return await self._executor("get_group_list", cache) - Returns: - List[Group]: Group list. + async def get_group_member_list( + self, group: Union[int, group_t], cache: bool = True + ) -> Optional[List[GroupMember]]: + """Get account group member list. - Raises: - RuntimeError: Error response type got. This should not happen. - ApiResponseError: Get group list failed. - GroupListException: Get group list returned non-zero ret code. - """ - client = get_client(uin) - return await client.get_group_list(cache) + This function wraps the :meth:`~cai.client.client.Client.get_group_member_list` + method of the client. + Args: + group (Union[int, Group]): Group id or group object want to get members. + cache (bool, optional): Use cached group list. Defaults to True. -async def get_group_member_list( - group: Union[int, Group], cache: bool = True, uin: Optional[int] = None -) -> Optional[List[GroupMember]]: - """Get account group member list. + Returns: + List[GroupMember]: Group member list. + None: Group not exists. - This function wraps the :meth:`~cai.client.client.Client.get_group_member_list` - method of the client. + Raises: + RuntimeError: Error response type got. This should not happen. + ApiResponseError: Get group list failed. + GroupMemberListException: Get group member list returned non-zero ret code. + """ + return await self._executor("get_group_member_list", group, cache) - Args: - group (Union[int, Group]): Group id or group object want to get members. - cache (bool, optional): Use cached group list. Defaults to True. - uin (Optional[int], optional): Account of the client want to use. - Defaults to None. - Returns: - List[GroupMember]: Group member list. - None: Group not exists. - - Raises: - RuntimeError: Error response type got. This should not happen. - ApiResponseError: Get group list failed. - GroupMemberListException: Get group member list returned non-zero ret code. - """ - client = get_client(uin) - return await client.get_group_member_list(group, cache) - - -__all__ = ["get_group", "get_group_list", "get_group_member_list"] +__all__ = ["Group"] From 346fd7a387ad878751c21fc73935e2d39802f9ea Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 00:00:18 +0800 Subject: [PATCH 004/113] change: rewrite friend.py --- cai/api/friend.py | 162 +++++++++++++++++++++------------------------- 1 file changed, 72 insertions(+), 90 deletions(-) diff --git a/cai/api/friend.py b/cai/api/friend.py index 6e35eb3d..6c7820f4 100644 --- a/cai/api/friend.py +++ b/cai/api/friend.py @@ -9,118 +9,100 @@ from typing import List, Optional -from cai.client import Friend, FriendGroup +from .base import BaseAPI +from cai.client import FriendGroup, Friend as friend_t -from .client import get_client - - -async def get_friend( - friend_uin: int, cache: bool = True, uin: Optional[int] = None -) -> Optional[Friend]: - """Get account friend. - This function wraps the :meth:`~cai.client.client.Client.get_friend` - method of the client. +class Friend(BaseAPI): + async def get_friend( + self, friend_uin: int, cache: bool = True + ) -> Optional[friend_t]: + """Get account friend. - Args: - friend_uin (int): Friend account uin. - cache (bool, optional): Use cached friend list. Defaults to True. - uin (Optional[int], optional): Account of the client want to use. - Defaults to None. + This function wraps the :meth:`~cai.client.client.Client.get_friend` + method of the client. - Returns: - Friend: Friend object. - None: Friend not exists. + Args: + friend_uin (int): Friend account uin. + cache (bool, optional): Use cached friend list. Defaults to True. - Raises: - RuntimeError: Error response type got. This should not happen. - ApiResponseError: Get friend list failed. - FriendListException: Get friend list returned non-zero ret code. - """ - client = get_client(uin) - return await client.get_friend(friend_uin, cache) + Returns: + Friend: Friend object. + None: Friend not exists. + Raises: + RuntimeError: Error response type got. This should not happen. + ApiResponseError: Get friend list failed. + FriendListException: Get friend list returned non-zero ret code. + """ + return await self.client.get_friend(friend_uin, cache) -async def get_friend_list( - cache: bool = True, uin: Optional[int] = None -) -> List[Friend]: - """Get account friend list. + async def get_friend_list( + self, cache: bool = True + ) -> List[friend_t]: + """Get account friend list. - This function wraps the :meth:`~cai.client.client.Client.get_friend_list` - method of the client. + This function wraps the :meth:`~cai.client.client.Client.get_friend_list` + method of the client. - Args: - cache (bool, optional): Use cached friend list. Defaults to True. - uin (Optional[int], optional): Account of the client want to use. - Defaults to None. + Args: + cache (bool, optional): Use cached friend list. Defaults to True. - Returns: - List of :obj:`~cai.client.models.Friend` + Returns: + List of :obj:`~cai.client.models.Friend` - Raises: - RuntimeError: Error response type got. This should not happen. - ApiResponseError: Get friend list failed. - FriendListException: Get friend list returned non-zero ret code. - """ - client = get_client(uin) - return await client.get_friend_list(cache) + Raises: + RuntimeError: Error response type got. This should not happen. + ApiResponseError: Get friend list failed. + FriendListException: Get friend list returned non-zero ret code. + """ + return await self._executor("get_friend_list", cache) + async def get_friend_group( + self, group_id: int, cache: bool = True + ) -> Optional[FriendGroup]: + """Get Friend Group. -async def get_friend_group( - group_id: int, cache: bool = True, uin: Optional[int] = None -) -> Optional[FriendGroup]: - """Get Friend Group. + This function wraps the :meth:`~cai.client.client.Client.get_friend_group` + method of the client. - This function wraps the :meth:`~cai.client.client.Client.get_friend_group` - method of the client. + Args: + group_id (int): Friend group id. + cache (bool, optional): Use cached friend group list. Defaults to True. - Args: - group_id (int): Friend group id. - cache (bool, optional): Use cached friend group list. Defaults to True. - uin (Optional[int], optional): Account of the client want to use. - Defaults to None. + Returns: + FriendGroup: Friend group object. + None: Friend group not exists. - Returns: - FriendGroup: Friend group object. - None: Friend group not exists. + Raises: + RuntimeError: Error response type got. This should not happen. + ApiResponseError: Get friend list failed. + FriendListException: Get friend list returned non-zero ret code. + """ + return await self._executor("get_friend_group", group_id, cache) - Raises: - RuntimeError: Error response type got. This should not happen. - ApiResponseError: Get friend list failed. - FriendListException: Get friend list returned non-zero ret code. - """ - client = get_client(uin) - return await client.get_friend_group(group_id, cache) + async def get_friend_group_list( + self, cache: bool = True + ) -> List[FriendGroup]: + """Get account friend group list. + This function wraps the :meth:`~cai.client.client.Client.get_friend_group_list` + method of the client. -async def get_friend_group_list( - cache: bool = True, uin: Optional[int] = None -) -> List[FriendGroup]: - """Get account friend group list. + Args: + cache (bool, optional): Use cached friend group list. Defaults to True. - This function wraps the :meth:`~cai.client.client.Client.get_friend_group_list` - method of the client. + Returns: + List[FriendGroup]: Friend group list. - Args: - cache (bool, optional): Use cached friend group list. Defaults to True. - uin (Optional[int], optional): Account of the client want to use. - Defaults to None. - - Returns: - List[FriendGroup]: Friend group list. - - Raises: - RuntimeError: Error response type got. This should not happen. - ApiResponseError: Get friend group list failed. - FriendListException: Get friend group list returned non-zero ret code. - """ - client = get_client(uin) - return await client.get_friend_group_list(cache) + Raises: + RuntimeError: Error response type got. This should not happen. + ApiResponseError: Get friend group list failed. + FriendListException: Get friend group list returned non-zero ret code. + """ + return await self._executor("get_friend_group_list", cache) __all__ = [ - "get_friend", - "get_friend_list", - "get_friend_group", - "get_friend_group_list", + "Friend" ] From 8337fc0ea2ee58437d77747d845b03719b837bea Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 00:01:21 +0800 Subject: [PATCH 005/113] change: rewrite client.py --- cai/api/client.py | 150 +++++++++++++++++++--------------------------- 1 file changed, 63 insertions(+), 87 deletions(-) diff --git a/cai/api/client.py b/cai/api/client.py index d4b4f2de..8809d655 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -7,92 +7,68 @@ https://github.com/cscs181/CAI/blob/master/LICENSE """ -import asyncio +import hashlib from typing import Union, Optional -from cai.client import Client, OnlineStatus -from cai.exceptions import ClientNotAvailable - -from . import _clients - - -def get_client(uin: Optional[int] = None) -> Client: - """Get the specific client or existing client. - - Args: - uin (Optional[int], optional): Specific account client to get. Defaults to None. - - Raises: - ClientNotAvailable: Client not exists. - ClientNotAvailable: No client available. - ClientNotAvailable: Multiple clients found and not specify which one to get. - - Returns: - Client: Current client to use. - """ - if not _clients: - raise ClientNotAvailable(uin, f"No client available!") - elif len(_clients) == 1 and not uin: - return list(_clients.values())[0] - else: - if not uin: - raise ClientNotAvailable( - None, f"Multiple clients found! Specify uin to choose." - ) - if uin not in _clients: - raise ClientNotAvailable(None, f"Client {uin} not exists!") - return _clients[uin] - - -async def close(uin: Optional[int] = None) -> None: - """Close an existing client and delete it from clients. - - Args: - uin (Optional[int], optional): Account of the client want to close. Defaults to None. - """ - client = get_client(uin) - await client.close() - del _clients[client.uin] - - -async def close_all() -> None: - """Close all existing clients and delete them.""" - tasks = [close(uin) for uin in _clients.keys()] - await asyncio.gather(*tasks) - - -async def set_status( - status: Union[int, OnlineStatus], - battery_status: Optional[int] = None, - is_power_connected: bool = False, - uin: Optional[int] = None, -) -> None: - """Change client status. - - This function wraps the :meth:`~cai.client.client.Client.register` - method of the client. - - Args: - status (OnlineStatus): Status want to change. - battery_status (Optional[int], optional): Battery capacity. - Defaults to None. - is_power_connected (bool, optional): Is power connected to phone. - Defaults to False. - uin (Optional[int], optional): Account of the client want to change. - Defaults to None. - - Raises: - RuntimeError: Client already exists and is running. - RuntimeError: Password not provided when login a new account. - ApiResponseError: Invalid API request. - RegisterException: Register Failed. - """ - client = get_client(uin) - await client.set_status( - status, - battery_status, - is_power_connected, - ) - - -__all__ = ["get_client", "close", "close_all", "set_status"] +from .login import Login as _Login +from .friend import Friend as _Friend +from .group import Group as _Group +from cai.client import OnlineStatus, Client as client_t + + +def make_client(uin: int, passwd: Union[str, bytes]) -> client_t: + if not (isinstance(passwd, bytes) and len(passwd) == 16): + # not a vailed md5 passwd + if isinstance(passwd, bytes): + passwd = hashlib.md5(passwd).digest() + else: + passwd = hashlib.md5(passwd.encode()).digest() + return client_t(uin, passwd) + + +class Client(_Login, _Friend, _Group): + def __init__(self, client: client_t): + self.client = client + + @property + def connected(self) -> bool: + return self.client.connected + + async def close(self): + """Stop Client""" + await self.client.close() + + async def set_status( + self, + status: Union[int, OnlineStatus], + battery_status: Optional[int] = None, + is_power_connected: bool = False + ) -> None: + """Change client status. + + This function wraps the :meth:`~cai.client.client.Client.register` + method of the client. + + Args: + status (OnlineStatus): Status want to change. + battery_status (Optional[int], optional): Battery capacity. + Defaults to None. + is_power_connected (bool, optional): Is power connected to phone. + Defaults to False. + uin (Optional[int], optional): Account of the client want to change. + Defaults to None. + + Raises: + RuntimeError: Client already exists and is running. + RuntimeError: Password not provided when login a new account. + ApiResponseError: Invalid API request. + RegisterException: Register Failed. + """ + await self.client.set_status( + status, + battery_status, + is_power_connected, + ) + + +__all__ = ["Client"] From 80e00eb515fb399a8201dee15b40b5ba7a99b2d0 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 00:03:26 +0800 Subject: [PATCH 006/113] update: cai/api --- cai/api/__init__.py | 12 ++---------- cai/api/base.py | 9 ++++----- cai/api/group.py | 2 +- cai/api/login.py | 7 ------- 4 files changed, 7 insertions(+), 23 deletions(-) diff --git a/cai/api/__init__.py b/cai/api/__init__.py index d0714f2a..d3e70dae 100644 --- a/cai/api/__init__.py +++ b/cai/api/__init__.py @@ -9,15 +9,7 @@ https://github.com/cscs181/CAI/blob/master/LICENSE """ -from typing import Dict +from .client import Client, make_client -from cai.client import Client -_clients: Dict[int, Client] = {} - - -from .flow import * -from .group import * -from .login import * -from .client import * -from .friend import * +__all__ = ["Client", "make_client"] diff --git a/cai/api/base.py b/cai/api/base.py index 6273fe8f..9316635b 100644 --- a/cai/api/base.py +++ b/cai/api/base.py @@ -7,13 +7,12 @@ class BaseAPI: client: client_t - async def _executor(self, func_name: str, *args, **kwargs): + async def _executor(self, func_name: str, *args, uncaught_error=False, **kwargs): if not hasattr(self.client, func_name): raise AttributeError(f"client has no attribute '{func_name}'") try: - await getattr(self.client, func_name)(*args, **kwargs) - except LoginException: - raise + return await getattr(self.client, func_name)(*args, **kwargs) except Exception: - await self.client.close() + if uncaught_error: + await self.client.close() raise diff --git a/cai/api/group.py b/cai/api/group.py index b2d87e2b..65dd0836 100644 --- a/cai/api/group.py +++ b/cai/api/group.py @@ -12,6 +12,7 @@ from .base import BaseAPI from cai.client import GroupMember, Group as group_t + class Group(BaseAPI): async def get_group( self, group_id: int, cache: bool = True @@ -36,7 +37,6 @@ async def get_group( """ return await self._executor("get_group", group_id, cache) - async def get_group_list( self, cache: bool = True ) -> List[group_t]: diff --git a/cai/api/login.py b/cai/api/login.py index ebe2ee1f..64ea60a5 100644 --- a/cai/api/login.py +++ b/cai/api/login.py @@ -6,18 +6,11 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ -import hashlib -from typing import Optional, Union - from .base import BaseAPI -from cai.client import Client from cai.exceptions import LoginException class Login(BaseAPI): - def __init__(self, client: Client): - self.client = client - async def login(self): """Create a new client (or use an existing one) and login. From 71b581193ad2e8dc1ed203899d31f8c3d8bce97e Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 00:25:46 +0800 Subject: [PATCH 007/113] update: examples/login.py --- examples/login.py | 64 +++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/examples/login.py b/examples/login.py index e6e9bc55..d02cdff9 100644 --- a/examples/login.py +++ b/examples/login.py @@ -7,15 +7,16 @@ https://github.com/cscs181/CAI/blob/master/LICENSE """ import os +import asyncio import signal import asyncio +import sys import traceback from io import BytesIO -from hashlib import md5 from PIL import Image -import cai +from cai.api import Client, make_client from cai.exceptions import ( LoginException, ApiResponseError, @@ -26,46 +27,45 @@ ) -async def run(): +async def run(closed: asyncio.Event): account = os.getenv("ACCOUNT", "") password = os.getenv("PASSWORD") try: + assert password and account, ValueError("account or password not set") + account = int(account) - assert password - except Exception: - print( - f"Error: account '{account}', password '{password}'" # type: ignore - ) - return + ci = Client(make_client(account, password)) - try: - client = await cai.login(account, md5(password.encode()).digest()) - print(f"Login Success! Client status: {client.status!r}") - except Exception as e: - await handle_failure(e) + try: + await ci.login() + print(f"Login Success! Client status: {ci.client.status!r}") + except Exception as e: + await handle_failure(ci, e) + finally: + closed.set() -async def handle_failure(exception: Exception): +async def handle_failure(client: Client, exception: Exception): if isinstance(exception, LoginSliderNeeded): print("Verify url:", exception.verify_url) ticket = input("Please enter the ticket: ").strip() try: - await cai.submit_slider_ticket(ticket) + await client.submit_slider_ticket(ticket) print("Login Success!") await asyncio.sleep(3) except Exception as e: - await handle_failure(e) + await handle_failure(client, e) elif isinstance(exception, LoginCaptchaNeeded): print("Captcha:") image = Image.open(BytesIO(exception.captcha_image)) image.show() captcha = input("Please enter the captcha: ").strip() try: - await cai.submit_captcha(captcha, exception.captcha_sign) + await client.submit_captcha(captcha, exception.captcha_sign) print("Login Success!") await asyncio.sleep(3) except Exception as e: - await handle_failure(e) + await handle_failure(client, e) elif isinstance(exception, LoginAccountFrozen): print("Account is frozen!") elif isinstance(exception, LoginDeviceLocked): @@ -93,21 +93,21 @@ async def handle_failure(exception: Exception): if not way: print("No way to verify device...") elif way == "sms": - await cai.request_sms() + await client.request_sms() print(f"SMS was sent to {exception.sms_phone}!") sms_code = input("Please enter the sms_code: ").strip() try: - await cai.submit_sms(sms_code) + await client.submit_sms(sms_code) except Exception as e: - await handle_failure(e) + await handle_failure(client, e) elif way == "url": - await cai.close() + await client.close() print(f"Go to {exception.verify_url} to verify device!") input("Press ENTER after verification to continue login...") try: - await cai.login(exception.uin) + await client.login() except Exception as e: - await handle_failure(e) + await handle_failure(client, e) elif isinstance(exception, LoginException): print("Login Error:", repr(exception)) elif isinstance(exception, ApiResponseError): @@ -122,10 +122,14 @@ async def handle_failure(exception: Exception): async def wait_cleanup(): await close.wait() - await cai.close_all() loop = asyncio.get_event_loop() - loop.add_signal_handler(signal.SIGINT, close.set) - loop.add_signal_handler(signal.SIGTERM, close.set) - loop.create_task(run()) - loop.run_until_complete(wait_cleanup()) + loop.create_task(run(close)) + if sys.platform != "win32": + loop.add_signal_handler(signal.SIGINT, close.set) + loop.add_signal_handler(signal.SIGTERM, close.set) + else: + try: + loop.run_until_complete(wait_cleanup()) + except KeyboardInterrupt: + close.set() From 3ac1fc8021b07cf17ed9ed0dcc31a49e741cdca3 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 00:26:45 +0800 Subject: [PATCH 008/113] update: remove unused code --- examples/login.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/examples/login.py b/examples/login.py index d02cdff9..bc0252c1 100644 --- a/examples/login.py +++ b/examples/login.py @@ -125,11 +125,7 @@ async def wait_cleanup(): loop = asyncio.get_event_loop() loop.create_task(run(close)) - if sys.platform != "win32": - loop.add_signal_handler(signal.SIGINT, close.set) - loop.add_signal_handler(signal.SIGTERM, close.set) - else: - try: - loop.run_until_complete(wait_cleanup()) - except KeyboardInterrupt: - close.set() + try: + loop.run_until_complete(wait_cleanup()) + except KeyboardInterrupt: + close.set() From 259cc943b3cf9a833ace3b69ba498908919df4d6 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 02:35:02 +0800 Subject: [PATCH 009/113] remove: strong dependency on cai/settings --- cai/api/base.py | 3 - cai/api/client.py | 16 +- cai/client/client.py | 44 +++-- cai/client/command.py | 2 +- cai/client/config_push/__init__.py | 2 +- cai/client/friendlist/__init__.py | 6 +- cai/client/heartbeat/__init__.py | 15 +- cai/client/message_service/__init__.py | 6 +- cai/client/online_push/__init__.py | 25 +-- cai/client/sso_server/__init__.py | 10 +- cai/client/status_service/__init__.py | 57 +++--- cai/client/wtlogin/__init__.py | 255 ++++++++++++++----------- cai/client/wtlogin/oicq.py | 5 +- cai/client/wtlogin/tlv.py | 14 +- cai/settings/protocol.py | 14 +- examples/login.py | 15 +- 16 files changed, 275 insertions(+), 214 deletions(-) diff --git a/cai/api/base.py b/cai/api/base.py index 9316635b..fea30b33 100644 --- a/cai/api/base.py +++ b/cai/api/base.py @@ -1,7 +1,4 @@ -from typing import Callable - from cai.client.client import Client as client_t -from cai.exceptions import LoginException class BaseAPI: diff --git a/cai/api/client.py b/cai/api/client.py index 8809d655..418d68ce 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -14,16 +14,26 @@ from .friend import Friend as _Friend from .group import Group as _Group from cai.client import OnlineStatus, Client as client_t +from cai.settings.device import DeviceInfo, new_device +from cai.settings.protocol import ApkInfo -def make_client(uin: int, passwd: Union[str, bytes]) -> client_t: +def make_client( + uin: int, + passwd: Union[str, bytes], + apk_info: ApkInfo, + device: Optional[DeviceInfo] = None +) -> client_t: if not (isinstance(passwd, bytes) and len(passwd) == 16): # not a vailed md5 passwd if isinstance(passwd, bytes): passwd = hashlib.md5(passwd).digest() else: passwd = hashlib.md5(passwd.encode()).digest() - return client_t(uin, passwd) + if not device: + device = new_device() + print(device) + return client_t(uin, passwd, device, apk_info) class Client(_Login, _Friend, _Group): @@ -55,8 +65,6 @@ async def set_status( Defaults to None. is_power_connected (bool, optional): Is power connected to phone. Defaults to False. - uin (Optional[int], optional): Account of the client want to change. - Defaults to None. Raises: RuntimeError: Client already exists and is running. diff --git a/cai/client/client.py b/cai/client/client.py index cf39f064..32769cf6 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -21,7 +21,7 @@ Callable, Optional, Awaitable, - overload, + overload, Tuple, ) from cachetools import TTLCache @@ -29,9 +29,9 @@ from cai.log import logger from cai.utils.binary import Packet from cai.utils.future import FutureStore -from cai.settings.device import get_device +from cai.settings.device import DeviceInfo +from cai.settings.protocol import ApkInfo from cai.connection import Connection, connect -from cai.settings.protocol import get_protocol from cai.exceptions import ( LoginException, ApiResponseError, @@ -109,11 +109,9 @@ encode_login_request2_captcha, ) -HT = Callable[["Client", IncomingPacket], Awaitable[Command]] +HT = Callable[["Client", IncomingPacket, Tuple[DeviceInfo, ApkInfo]], Awaitable[Command]] LT = Callable[["Client", Event], Awaitable[None]] -DEVICE = get_device() -APK_INFO = get_protocol() HANDLERS: Dict[str, HT] = { "wtlogin.login": handle_oicq_response, "wtlogin.exchange_emp": handle_oicq_response, @@ -139,7 +137,7 @@ class Client: LISTENERS: Set[LT] = set() - def __init__(self, uin: int, password_md5: bytes): + def __init__(self, uin: int, password_md5: bytes, device: DeviceInfo, apk_info: ApkInfo): # account info self._uin: int = uin self._password_md5: bytes = password_md5 @@ -163,7 +161,7 @@ def __init__(self, uin: int, password_md5: bytes): self._file_storage_info: Optional[FileServerPushList] = None self._ip_address: bytes = bytes() - self._ksid: bytes = f"|{DEVICE.imei}|A8.2.7.27f6ea96".encode() + self._ksid: bytes = f"|{device.imei}|A8.2.7.27f6ea96".encode() self._pwd_flag: bool = False self._rollback_sig: bytes = bytes() @@ -183,6 +181,9 @@ def __init__(self, uin: int, password_md5: bytes): self._msg_cache: TTLCache = TTLCache(maxsize=1024, ttl=3600) self._receive_store: FutureStore[int, Command] = FutureStore() + self.device_info: DeviceInfo = device + self.apk_info: ApkInfo = apk_info + def __str__(self) -> str: return f"" @@ -383,7 +384,7 @@ async def send_and_wait( async def _handle_incoming_packet(self, in_packet: IncomingPacket) -> None: try: handler = HANDLERS.get(in_packet.command_name, _packet_to_command) - packet = await handler(self, in_packet) + packet = await handler(self, in_packet, (self.device_info, self.apk_info)) self._receive_store.store_result(packet.seq, packet) except Exception as e: # TODO: handle exception @@ -505,6 +506,8 @@ async def _handle_login_response( self.uin, self._t104, self._siginfo.g, + self.device_info.imei, + self.apk_info ) response = await self.send_and_wait( seq, "wtlogin.login", packet @@ -575,6 +578,8 @@ async def login(self) -> LoginSuccess: self._ksid, self.uin, self._password_md5, + self.device_info, + self.apk_info ) response = await self.send_and_wait(seq, "wtlogin.login", packet) return await self._handle_login_response(response) @@ -609,6 +614,8 @@ async def submit_captcha( captcha, captcha_sign, self._t104, + self.device_info.imei, + self.apk_info ) response = await self.send_and_wait(seq, "wtlogin.login", packet) return await self._handle_login_response(response) @@ -640,6 +647,8 @@ async def submit_slider_ticket(self, ticket: str) -> LoginSuccess: self.uin, ticket, self._t104, + self.device_info.imei, + self.apk_info ) response = await self.send_and_wait(seq, "wtlogin.login", packet) return await self._handle_login_response(response) @@ -671,6 +680,8 @@ async def request_sms(self) -> bool: self.uin, self._t104, self._t174, + self.device_info.imei, + self.apk_info ) response = await self.send_and_wait(seq, "wtlogin.login", packet) @@ -711,6 +722,8 @@ async def submit_sms(self, sms_code: str) -> LoginSuccess: self._t104, self._t174, self._siginfo.g, + self.device_info.imei, + self.apk_info ) response = await self.send_and_wait(seq, "wtlogin.login", packet) return await self._handle_login_response(response) @@ -749,6 +762,8 @@ async def _handle_refresh_response( self.uin, self._t104, self._siginfo.g, + self.device_info.imei, + self.apk_info ) response = await self.send_and_wait( seq, "wtlogin.login", packet @@ -795,6 +810,8 @@ async def refresh_siginfo(self) -> LoginSuccess: self._siginfo.rand_seed, self._siginfo.wt_session_ticket, self._siginfo.wt_session_ticket_key, + self.device_info, + self.apk_info ) response = await self.send_and_wait(seq, "wtlogin.exchange_emp", packet) @@ -833,6 +850,8 @@ async def register( self._siginfo.d2key, status, register_reason, + self.apk_info.sub_app_id, + self.device_info ) response = await self.send_and_wait(seq, "StatSvc.register", packet) @@ -864,8 +883,6 @@ async def set_status( Args: status (OnlineStatus, optional): Client status. Defaults to :attr:`~cai.client.status_service.OnlineStatus.Online`. - register_reason (RegPushReason, optional): Register reason. Defaults to - :attr:`~cai.client.status_service.RegPushReason.AppRegister`. battery_status (Optional[int], optional): Battery capacity. Only works when status is :obj:`.OnlineStatus.Battery`. Defaults to None. is_power_connected (bool, optional): Is power connected to phone. @@ -884,9 +901,10 @@ async def set_status( self._session_id, self.uin, self._siginfo.d2key, + self.device_info, status, battery_status, - is_power_connected, + is_power_connected ) response = await self.send_and_wait( seq, "StatSvc.SetStatusFromClient", packet @@ -927,7 +945,7 @@ async def heartbeat(self) -> None: while self._heartbeat_enabled and self.connected: seq = self.next_seq() packet = encode_heartbeat( - seq, self._session_id, self._ksid, self.uin + seq, self._session_id, self.device_info.imei, self._ksid, self.uin, self.apk_info.sub_app_id ) try: response = await self.send_and_wait( diff --git a/cai/client/command.py b/cai/client/command.py index e930b111..1e7d726e 100644 --- a/cai/client/command.py +++ b/cai/client/command.py @@ -31,7 +31,7 @@ class UnhandledCommand(Command): async def _packet_to_command( - client: "Client", packet: IncomingPacket + client: "Client", packet: IncomingPacket, _device ) -> UnhandledCommand: return UnhandledCommand( packet.uin, diff --git a/cai/client/config_push/__init__.py b/cai/client/config_push/__init__.py index 4a089534..bc99ebbe 100644 --- a/cai/client/config_push/__init__.py +++ b/cai/client/config_push/__init__.py @@ -75,7 +75,7 @@ def encode_config_push_response( # ConfigPushSvc.PushReq async def handle_config_push_request( - client: "Client", packet: IncomingPacket + client: "Client", packet: IncomingPacket, _device ) -> ConfigPushCommand: command = ConfigPushCommand.decode_push_req( packet.uin, diff --git a/cai/client/friendlist/__init__.py b/cai/client/friendlist/__init__.py index 9a71ddf2..0dd9c983 100644 --- a/cai/client/friendlist/__init__.py +++ b/cai/client/friendlist/__init__.py @@ -104,7 +104,7 @@ def encode_get_friend_list( async def handle_friend_list( - client: "Client", packet: IncomingPacket + client: "Client", packet: IncomingPacket, _device ) -> "FriendListCommand": return FriendListCommand.decode_response( packet.uin, @@ -167,7 +167,7 @@ def encode_get_troop_list( async def handle_troop_list( - client: "Client", packet: IncomingPacket + client: "Client", packet: IncomingPacket, _device ) -> TroopListCommand: return TroopListCommand.decode_response( packet.uin, @@ -230,7 +230,7 @@ def encode_get_troop_member_list( async def handle_troop_member_list( - client: "Client", packet: IncomingPacket + client: "Client", packet: IncomingPacket, _device ) -> TroopMemberListCommand: return TroopMemberListCommand.decode_response( packet.uin, diff --git a/cai/client/heartbeat/__init__.py b/cai/client/heartbeat/__init__.py index 6126e88d..37c1d872 100644 --- a/cai/client/heartbeat/__init__.py +++ b/cai/client/heartbeat/__init__.py @@ -14,19 +14,14 @@ from cai.utils.binary import Packet from cai.client.command import Command -from cai.settings.device import get_device -from cai.settings.protocol import get_protocol from cai.client.packet import CSsoBodyPacket, CSsoDataPacket, IncomingPacket if TYPE_CHECKING: from cai.client import Client -DEVICE = get_device() -APK_INFO = get_protocol() - def encode_heartbeat( - seq: int, session_id: bytes, ksid: bytes, uin: int + seq: int, session_id: bytes, imei: str, ksid: bytes, uin: int, sub_app_id: int ) -> Packet: """Build heartbeat alive packet. @@ -41,17 +36,19 @@ def encode_heartbeat( seq (int): Packet sequence. session_id (bytes): Session ID. ksid (bytes): KSID of client. + imei (str): Device imei. uin (int): User QQ number. + sub_app_id (int): apkinfo Returns: Packet: Login packet. """ COMMAND_NAME = "Heartbeat.Alive" - SUB_APP_ID = APK_INFO.sub_app_id + SUB_APP_ID = sub_app_id sso_packet = CSsoBodyPacket.build( - seq, SUB_APP_ID, COMMAND_NAME, DEVICE.imei, session_id, ksid, bytes() + seq, SUB_APP_ID, COMMAND_NAME, imei, session_id, ksid, bytes() ) packet = CSsoDataPacket.build(uin, 0, sso_packet, key=None) return packet @@ -63,7 +60,7 @@ class Heartbeat(Command): async def handle_heartbeat( - client: "Client", packet: IncomingPacket + _client: "Client", packet: IncomingPacket, _device ) -> Heartbeat: return Heartbeat( packet.uin, packet.seq, packet.ret_code, packet.command_name diff --git a/cai/client/message_service/__init__.py b/cai/client/message_service/__init__.py index 68de760f..e6ccd6e6 100644 --- a/cai/client/message_service/__init__.py +++ b/cai/client/message_service/__init__.py @@ -102,7 +102,7 @@ def encode_get_message( async def handle_get_message( - client: "Client", packet: IncomingPacket + client: "Client", packet: IncomingPacket, _device ) -> "GetMessageCommand": """Handle Pb Get Message response. @@ -247,7 +247,7 @@ def encode_delete_message( async def handle_push_notify( - client: "Client", packet: IncomingPacket + client: "Client", packet: IncomingPacket, _device ) -> PushNotifyCommand: """Handle Push Notify Command. @@ -304,7 +304,7 @@ async def handle_push_notify( # MessageSvc.PushForceOffline async def handle_force_offline( - client: "Client", packet: IncomingPacket + client: "Client", packet: IncomingPacket, _device ) -> PushForceOfflineCommand: client._status = OnlineStatus.Offline await client.close() diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index c736d488..b0bf150f 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -9,32 +9,31 @@ https://github.com/cscs181/CAI/blob/master/LICENSE """ -from typing import TYPE_CHECKING, List, Union, Optional +from typing import TYPE_CHECKING, List, Optional, Tuple from jce import types from cai.log import logger from cai.utils.binary import Packet -from cai.settings.device import get_device +from cai.settings.device import DeviceInfo as _DeviceInfo_t from cai.utils.jce import RequestPacketVersion3 from cai.client.message_service import MESSAGE_DECODERS from cai.client.packet import UniPacket, IncomingPacket -from .jce import DelMsgInfo, DeviceInfo, SvcRespPushMsg +from .jce import DelMsgInfo, SvcRespPushMsg, DeviceInfo from .command import PushMsg, PushMsgError, PushMsgCommand +from ...settings.protocol import ApkInfo if TYPE_CHECKING: from cai.client import Client -DEVICE = get_device() - def encode_push_response( seq: int, session_id: bytes, uin: int, d2key: bytes, - resp_uin: int, + resp_uin: int, # warn: unused var svrip: int, delete_messages: List[DelMsgInfo] = [], push_token: Optional[bytes] = None, @@ -88,7 +87,7 @@ def encode_push_response( async def handle_c2c_sync( - client: "Client", packet: IncomingPacket + client: "Client", packet: IncomingPacket, _device ) -> PushMsgCommand: """Handle C2C Message Sync. @@ -137,7 +136,7 @@ async def handle_c2c_sync( async def handle_push_msg( - client: "Client", packet: IncomingPacket + client: "Client", packet: IncomingPacket, device: Tuple[_DeviceInfo_t, ApkInfo] ) -> PushMsgCommand: """Handle Push Message Command. @@ -146,6 +145,8 @@ async def handle_push_msg( com.tencent.mobileqq.app.MessageHandler.b """ + device = device[0] + push = PushMsgCommand.decode_response( packet.uin, packet.seq, @@ -172,10 +173,10 @@ async def handle_push_msg( service_type=1, device_info=DeviceInfo( net_type=1, - dev_type=DEVICE.model, - os_ver=DEVICE.version.release, - vendor_name=DEVICE.vendor_name, - vendor_os_name=DEVICE.vendor_os_name, + dev_type=device.model, + os_ver=device.version.release, + vendor_name=device.vendor_name, + vendor_os_name=device.vendor_os_name, ), ) await client.send(push.seq, "OnlinePush.RespPush", resp_packet) diff --git a/cai/client/sso_server/__init__.py b/cai/client/sso_server/__init__.py index 03e51d87..1f891baa 100644 --- a/cai/client/sso_server/__init__.py +++ b/cai/client/sso_server/__init__.py @@ -16,9 +16,9 @@ from rtea import qqtea_decrypt, qqtea_encrypt from cai.connection import connect -from cai.settings.device import get_device +from cai.settings.device import new_device from cai.exceptions import SsoServerException -from cai.settings.protocol import get_protocol +from cai.settings.protocol import get_apk_info from cai.utils.jce import RequestPacketVersion3 from cai.connection.utils import tcp_latency_test @@ -57,8 +57,8 @@ async def get_sso_list() -> SsoServerResponse: Raises: SsoServerException: Get sso server list failed. """ - device = get_device() - protocol = get_protocol() + device = new_device() + protocol = get_apk_info() key = bytes( [ 0xF0, @@ -151,7 +151,7 @@ async def quality_test( async def get_sso_server( cache: bool = True, cache_server_list: bool = True, - exclude: Optional[Container[str]] = None, + exclude: Optional[Container[str]] = None ) -> SsoServer: """Get the best sso server diff --git a/cai/client/status_service/__init__.py b/cai/client/status_service/__init__.py index b516163d..146956f2 100644 --- a/cai/client/status_service/__init__.py +++ b/cai/client/status_service/__init__.py @@ -11,14 +11,14 @@ import time from enum import Enum, IntEnum -from typing import TYPE_CHECKING, Union, Optional +from typing import TYPE_CHECKING, Union, Optional, Tuple from jce import types from cai.log import logger from cai.utils.binary import Packet -from cai.settings.device import get_device -from cai.settings.protocol import get_protocol +from cai.settings.device import DeviceInfo +from cai.settings.protocol import ApkInfo from cai.utils.jce import RequestPacketVersion3 from cai.pb.im.oidb.cmd0x769 import ReqBody, ConfigSeq from cai.client.packet import ( @@ -41,9 +41,6 @@ if TYPE_CHECKING: from cai.client import Client -DEVICE = get_device() -APK_INFO = get_protocol() - class OnlineStatus(IntEnum): """ @@ -134,6 +131,7 @@ def _encode_svc_request( uin: int, status: Union[int, OnlineStatus], reg_push_reason: Union[str, RegPushReason], + device: DeviceInfo, battery_status: Optional[int] = None, is_power_connected: bool = False, ) -> SvcReqRegister: @@ -146,7 +144,7 @@ def _encode_svc_request( bid=0 if status == OnlineStatus.Offline else 7, status=status if status < 1000 else OnlineStatus.Online, timestamp=int(time.time()), - ios_version=DEVICE.version.sdk, + ios_version=device.version.sdk, nettype=bytes([1]), reg_type=bytes(1) if reg_push_reason @@ -157,13 +155,13 @@ def _encode_svc_request( RegPushReason.SetOnlineStatus, ) else bytes([1]), - guid=DEVICE.guid, - dev_name=DEVICE.model, - dev_type=DEVICE.model, - os_version=DEVICE.version.release, + guid=device.guid, + dev_name=device.model, + dev_type=device.model, + os_version=device.version.release, large_seq=0, - vendor_name=DEVICE.vendor_name, - vendor_os_name=DEVICE.vendor_os_name, + vendor_name=device.vendor_name, + vendor_os_name=device.vendor_os_name, b769_req=ReqBody( config_list=[ ConfigSeq(type=46, version=0), @@ -188,6 +186,8 @@ def encode_register( d2key: bytes, status: Union[int, OnlineStatus], reg_push_reason: Union[str, RegPushReason], + sub_app_id: int, + device: DeviceInfo ) -> Packet: """Build status service register packet. @@ -208,18 +208,16 @@ def encode_register( 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. + device (DeviceInfo): your device info + sub_app_id (int): ApkInfo Returns: Packet: Register packet. """ COMMAND_NAME = "StatSvc.register" - SUB_APP_ID = APK_INFO.sub_app_id + SUB_APP_ID = sub_app_id - svc = _encode_svc_request(uin, status, reg_push_reason) + svc = _encode_svc_request(uin, status, reg_push_reason, device) payload = SvcReqRegister.to_bytes(0, svc) req_packet = RequestPacketVersion3( servant_name="PushService", @@ -230,7 +228,7 @@ def encode_register( seq, SUB_APP_ID, COMMAND_NAME, - DEVICE.imei, + device.imei, session_id, ksid, body=req_packet, @@ -246,6 +244,7 @@ def encode_set_status( session_id: bytes, uin: int, d2key: bytes, + device: DeviceInfo, status: Union[int, OnlineStatus], battery_status: Optional[int] = None, is_power_connected: bool = False, @@ -265,7 +264,7 @@ def encode_set_status( 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. + device (DeviceInfo): your device info battery_status (Optional[int], optional): Battery capacity. Only works when status is :obj:`.OnlineStatus.Battery`. Defaults to None. is_power_connected (bool, optional): Is power connected to phone. @@ -275,12 +274,12 @@ def encode_set_status( Packet: Register packet. """ COMMAND_NAME = "StatSvc.SetStatusFromClient" - SUB_APP_ID = APK_INFO.sub_app_id svc = _encode_svc_request( uin, status, RegPushReason.SetOnlineStatus, + device, ((status == OnlineStatus.Battery) or None) and battery_status, (status == OnlineStatus.Battery) and is_power_connected, ) @@ -297,7 +296,7 @@ def encode_set_status( async def handle_register_response( - client: "Client", packet: IncomingPacket + client: "Client", packet: IncomingPacket, _device ) -> SvcRegisterResponse: response = SvcRegisterResponse.decode_response( packet.uin, @@ -324,6 +323,8 @@ def encode_force_offline_response( d2key: bytes, req_uin: int, seq_no: int, + sub_app_id: int, + device: DeviceInfo ) -> Packet: """Build status service msf offline response packet. @@ -344,12 +345,14 @@ def encode_force_offline_response( d2key (bytes): Siginfo d2 key. req_uin (int): Request offline uin. seq_no (int): Request sequence number. + sub_app_id (int): ApkInfo + device (DeviceInfo): your device info Returns: Packet: msf force offline response packet. """ COMMAND_NAME = "StatSvc.RspMSFForceOffline" - SUB_APP_ID = APK_INFO.sub_app_id + SUB_APP_ID = sub_app_id resp = ResponseMSFForceOffline(uin=req_uin, seq_no=seq_no, c=bytes(1)) payload = ResponseMSFForceOffline.to_bytes(0, resp) @@ -364,7 +367,7 @@ def encode_force_offline_response( seq, SUB_APP_ID, COMMAND_NAME, - DEVICE.imei, + device.imei, session_id, ksid, body=resp_packet, @@ -375,7 +378,7 @@ def encode_force_offline_response( async def handle_request_offline( - client: "Client", packet: IncomingPacket + client: "Client", packet: IncomingPacket, device: Tuple[DeviceInfo, ApkInfo] ) -> MSFForceOfflineCommand: request = MSFForceOfflineCommand.decode_response( packet.uin, @@ -401,6 +404,8 @@ async def handle_request_offline( client._siginfo.d2key, request.request.uin, request.request.seq_no, + device[1].sub_app_id, + device[0] ) await client.send(seq, "StatSvc.RspMSFForceOffline", resp_packet) client._status = OnlineStatus.Offline diff --git a/cai/client/wtlogin/__init__.py b/cai/client/wtlogin/__init__.py index 0bbeb81a..e0975368 100644 --- a/cai/client/wtlogin/__init__.py +++ b/cai/client/wtlogin/__init__.py @@ -8,28 +8,26 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ -import time +import ipaddress +import secrets import string import struct -import secrets -import ipaddress +import time from hashlib import md5 -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Tuple from rtea import qqtea_decrypt -from cai.utils.binary import Packet -from cai.settings.device import get_device -from cai.settings.protocol import get_protocol -from cai.utils.crypto import ECDH, EncryptSession from cai.client.packet import ( UniPacket, CSsoBodyPacket, CSsoDataPacket, IncomingPacket, ) - -from .tlv import TlvEncoder +from cai.settings.device import DeviceInfo +from cai.settings.protocol import ApkInfo +from cai.utils.binary import Packet +from cai.utils.crypto import ECDH, EncryptSession from .oicq import ( NeedCaptcha, OICQRequest, @@ -41,13 +39,11 @@ TooManySMSRequest, UnknownLoginStatus, ) +from .tlv import TlvEncoder if TYPE_CHECKING: from cai.client import Client -DEVICE = get_device() -APK_INFO = get_protocol() - # submit captcha def encode_login_request2_captcha( @@ -59,6 +55,8 @@ def encode_login_request2_captcha( captcha: str, sign: bytes, t104: bytes, + imei: str, + apk_info: ApkInfo ) -> Packet: """Build submit captcha request packet. @@ -82,6 +80,8 @@ def encode_login_request2_captcha( captcha (str): Captcha image result. sign (bytes): Signature of the captcha. t104 (bytes): TLV 104 data. + apk_info (ApkInfo): ApkInfo + imei (str): device imei Returns: Packet: Login packet. @@ -90,9 +90,9 @@ def encode_login_request2_captcha( SUB_COMMAND_ID = 2 COMMAND_NAME = "wtlogin.login" - SUB_APP_ID = APK_INFO.sub_app_id - BITMAP = APK_INFO.bitmap - SUB_SIGMAP = APK_INFO.sub_sigmap + SUB_APP_ID = apk_info.sub_app_id + BITMAP = apk_info.bitmap + SUB_SIGMAP = apk_info.sub_sigmap LOCAL_ID = 2052 # oicq.wlogin_sdk.request.t.v @@ -110,7 +110,7 @@ def encode_login_request2_captcha( seq, SUB_APP_ID, COMMAND_NAME, - DEVICE.imei, + imei, session_id, ksid, oicq_packet, @@ -129,6 +129,8 @@ def encode_login_request2_slider( uin: int, ticket: str, t104: bytes, + imei: str, + apk_info: ApkInfo ) -> Packet: """Build slider ticket request packet. @@ -151,6 +153,8 @@ def encode_login_request2_slider( uin (int): User QQ number. ticket (str): Captcha image result. t104 (bytes): TLV 104 data. + apk_info (ApkInfo): ApkInfo + imei (str): device imei Returns: Packet: Login packet. @@ -159,9 +163,9 @@ def encode_login_request2_slider( SUB_COMMAND_ID = 2 COMMAND_NAME = "wtlogin.login" - SUB_APP_ID = APK_INFO.sub_app_id - BITMAP = APK_INFO.bitmap - SUB_SIGMAP = APK_INFO.sub_sigmap + SUB_APP_ID = apk_info.sub_app_id + BITMAP = apk_info.bitmap + SUB_SIGMAP = apk_info.sub_sigmap LOCAL_ID = 2052 # oicq.wlogin_sdk.request.t.v @@ -179,7 +183,7 @@ def encode_login_request2_slider( seq, SUB_APP_ID, COMMAND_NAME, - DEVICE.imei, + imei, session_id, ksid, oicq_packet, @@ -200,6 +204,8 @@ def encode_login_request7( t104: bytes, t174: bytes, g: bytes, + imei: str, + apk_info: ApkInfo ) -> Packet: """Build sms submit packet. @@ -224,6 +230,8 @@ def encode_login_request7( t104 (bytes): TLV 104 data. t174 (bytes): TLV 174 data. g (bytes): G data of client. + apk_info (ApkInfo): ApkInfo + imei (str): device imei Returns: Packet: Login packet. @@ -232,9 +240,9 @@ def encode_login_request7( SUB_COMMAND_ID = 7 COMMAND_NAME = "wtlogin.login" - SUB_APP_ID = APK_INFO.sub_app_id - BITMAP = APK_INFO.bitmap - SUB_SIGMAP = APK_INFO.sub_sigmap + SUB_APP_ID = apk_info.sub_app_id + BITMAP = apk_info.bitmap + SUB_SIGMAP = apk_info.sub_sigmap GUID_SRC = 1 GUID_CHANGE = 0 @@ -260,7 +268,7 @@ def encode_login_request7( seq, SUB_APP_ID, COMMAND_NAME, - DEVICE.imei, + imei, session_id, ksid, oicq_packet, @@ -279,6 +287,8 @@ def encode_login_request8( uin: int, t104: bytes, t174: bytes, + imei: str, + apk_info: ApkInfo ) -> Packet: """Build sms request packet. @@ -301,6 +311,8 @@ def encode_login_request8( uin (int): User QQ number. t104 (bytes): TLV 104 data. t174 (bytes): TLV 174 data. + apk_info (ApkInfo): ApkInfo + imei (str): device imei Returns: Packet: Login packet. @@ -310,9 +322,9 @@ def encode_login_request8( COMMAND_NAME = "wtlogin.login" SMS_APP_ID = 9 - SUB_APP_ID = APK_INFO.sub_app_id - BITMAP = APK_INFO.bitmap - SUB_SIGMAP = APK_INFO.sub_sigmap + SUB_APP_ID = apk_info.sub_app_id + BITMAP = apk_info.bitmap + SUB_SIGMAP = apk_info.sub_sigmap GUID_SRC = 1 GUID_CHANGE = 0 @@ -337,7 +349,7 @@ def encode_login_request8( seq, SUB_APP_ID, COMMAND_NAME, - DEVICE.imei, + imei, session_id, ksid, oicq_packet, @@ -355,6 +367,8 @@ def encode_login_request9( ksid: bytes, uin: int, password_md5: bytes, + device: DeviceInfo, + apk_info: ApkInfo ) -> Packet: """Build main login request packet. @@ -376,6 +390,8 @@ def encode_login_request9( ksid (bytes): KSID of client. uin (int): User QQ number. password_md5 (bytes): User QQ password md5 hash. + device (DeviceInfo): your device info + apk_info (ApkInfo): ApkInfo Returns: Packet: Login packet. @@ -384,18 +400,18 @@ def encode_login_request9( SUB_COMMAND_ID = 9 COMMAND_NAME = "wtlogin.login" - APK_ID = APK_INFO.apk_id - APK_VERSION = APK_INFO.version - APK_SIGN = APK_INFO.apk_sign - APK_BUILD_TIME = APK_INFO.build_time - APP_ID = APK_INFO.app_id - SUB_APP_ID = APK_INFO.sub_app_id + APK_ID = apk_info.apk_id + APK_VERSION = apk_info.version + APK_SIGN = apk_info.apk_sign + APK_BUILD_TIME = apk_info.build_time + APP_ID = apk_info.app_id + SUB_APP_ID = apk_info.sub_app_id APP_CLIENT_VERSION = 0 - SDK_VERSION = APK_INFO.sdk_version - SSO_VERSION = APK_INFO.sso_version - BITMAP = APK_INFO.bitmap - MAIN_SIGMAP = APK_INFO.main_sigmap - SUB_SIGMAP = APK_INFO.sub_sigmap + SDK_VERSION = apk_info.sdk_version + SSO_VERSION = apk_info.sso_version + BITMAP = apk_info.bitmap + MAIN_SIGMAP = apk_info.main_sigmap + SUB_SIGMAP = apk_info.sub_sigmap GUID_SRC = 1 GUID_CHANGE = 0 @@ -404,8 +420,8 @@ def encode_login_request9( GUID_FLAG |= GUID_CHANGE << 8 & 0xFF00 CAN_WEB_VERIFY = 130 # oicq.wlogin_sdk.request.k.K LOCAL_ID = 2052 # oicq.wlogin_sdk.request.t.v - IP_BYTES: bytes = ipaddress.ip_address(DEVICE.ip_address).packed - NETWORK_TYPE = (DEVICE.apn == "wifi") + 1 + IP_BYTES: bytes = ipaddress.ip_address(device.ip_address).packed + NETWORK_TYPE = (device.apn == "wifi") + 1 data = Packet.build( struct.pack(">HH", SUB_COMMAND_ID, 23), # packet num @@ -419,8 +435,8 @@ def encode_login_request9( uin, 0, password_md5, - DEVICE.guid, - DEVICE.tgtgt, + device.guid, + device.tgtgt, ), TlvEncoder.t116(BITMAP, SUB_SIGMAP), TlvEncoder.t100( @@ -431,36 +447,36 @@ def encode_login_request9( # TlvEncoder.t104(), TlvEncoder.t142(APK_ID), TlvEncoder.t144( - DEVICE.imei.encode(), - DEVICE.bootloader, - DEVICE.proc_version, - DEVICE.version.codename, - DEVICE.version.incremental, - DEVICE.fingerprint, - DEVICE.boot_id, - DEVICE.android_id, - DEVICE.baseband, - DEVICE.version.incremental, - DEVICE.os_type.encode(), - DEVICE.version.release.encode(), + device.imei.encode(), + device.bootloader, + device.proc_version, + device.version.codename, + device.version.incremental, + device.fingerprint, + device.boot_id, + device.android_id, + device.baseband, + device.version.incremental, + device.os_type.encode(), + device.version.release.encode(), NETWORK_TYPE, - DEVICE.sim.encode(), - DEVICE.apn.encode(), + device.sim.encode(), + device.apn.encode(), False, True, False, GUID_FLAG, - DEVICE.model.encode(), - DEVICE.guid, - DEVICE.brand.encode(), - DEVICE.tgtgt, + device.model.encode(), + device.guid, + device.brand.encode(), + device.tgtgt, ), - TlvEncoder.t145(DEVICE.guid), + TlvEncoder.t145(device.guid), TlvEncoder.t147(APP_ID, APK_VERSION.encode(), APK_SIGN), # TlvEncoder.t166(1), # TlvEncoder.t16a(), TlvEncoder.t154(seq), - TlvEncoder.t141(DEVICE.sim.encode(), NETWORK_TYPE, DEVICE.apn.encode()), + TlvEncoder.t141(device.sim.encode(), NETWORK_TYPE, device.apn.encode()), TlvEncoder.t8(LOCAL_ID), TlvEncoder.t511( [ @@ -483,12 +499,12 @@ def encode_login_request9( # TlvEncoder.t172(), # TlvEncoder.t185(1), # when sms login, is_password_login == 3 # TlvEncoder.t400(), # null when first time login - TlvEncoder.t187(DEVICE.mac_address.encode()), - TlvEncoder.t188(DEVICE.android_id.encode()), - TlvEncoder.t194(DEVICE.imsi_md5) if DEVICE.imsi_md5 else b"", + TlvEncoder.t187(device.mac_address.encode()), + TlvEncoder.t188(device.android_id.encode()), + TlvEncoder.t194(device.imsi_md5) if device.imsi_md5 else b"", TlvEncoder.t191(CAN_WEB_VERIFY), # TlvEncoder.t201(), - TlvEncoder.t202(DEVICE.wifi_bssid.encode(), DEVICE.wifi_ssid.encode()), + TlvEncoder.t202(device.wifi_bssid.encode(), device.wifi_ssid.encode()), TlvEncoder.t177(APK_BUILD_TIME, SDK_VERSION), TlvEncoder.t516(), TlvEncoder.t521(), @@ -502,7 +518,7 @@ def encode_login_request9( seq, SUB_APP_ID, COMMAND_NAME, - DEVICE.imei, + device.imei, session_id, ksid, oicq_packet, @@ -521,6 +537,8 @@ def encode_login_request20( uin: int, t104: bytes, g: bytes, + imei: str, + apk_info: ApkInfo ) -> Packet: """Build device lock login request packet. @@ -543,6 +561,8 @@ def encode_login_request20( uin (int): User QQ number. t104 (bytes): T104 response data. g (bytes): md5 of (guid + dpwd + t402). + imei (str): device imei + apk_info (ApkInfo): ApkInfo Returns: Packet: Login packet. @@ -551,9 +571,9 @@ def encode_login_request20( SUB_COMMAND_ID = 20 COMMAND_NAME = "wtlogin.login" - SUB_APP_ID = APK_INFO.sub_app_id - BITMAP = APK_INFO.bitmap - SUB_SIGMAP = APK_INFO.sub_sigmap + SUB_APP_ID = apk_info.sub_app_id + BITMAP = apk_info.bitmap + SUB_SIGMAP = apk_info.sub_sigmap LOCAL_ID = 2052 # oicq.wlogin_sdk.request.t.v @@ -571,7 +591,7 @@ def encode_login_request20( seq, SUB_APP_ID, COMMAND_NAME, - DEVICE.imei, + imei, session_id, ksid, oicq_packet, @@ -599,6 +619,8 @@ def encode_exchange_emp_15( rand_seed: bytes, wt_session_ticket: bytes, wt_session_ticket_key: bytes, + device: DeviceInfo, + apk_info: ApkInfo ) -> Packet: """Build exchange emp request packet. @@ -623,6 +645,8 @@ def encode_exchange_emp_15( rand_seed (bytes): Siginfo random seed. wt_session_ticket (bytes): Siginfo session ticket. wt_session_ticket_key (bytes): Siginfo session ticket key. + device (DeviceInfo): your device info + apk_info (ApkInfo): ApkInfo Returns: Packet: Exchange emp packet. @@ -631,28 +655,28 @@ def encode_exchange_emp_15( SUB_COMMAND_ID = 15 COMMAND_NAME = "wtlogin.exchange_emp" - APK_ID = APK_INFO.apk_id - APK_VERSION = APK_INFO.version - APK_SIGN = APK_INFO.apk_sign - APK_BUILD_TIME = APK_INFO.build_time - APP_ID = APK_INFO.app_id - SUB_APP_ID = APK_INFO.sub_app_id + APK_ID = apk_info.apk_id + APK_VERSION = apk_info.version + APK_SIGN = apk_info.apk_sign + APK_BUILD_TIME = apk_info.build_time + APP_ID = apk_info.app_id + SUB_APP_ID = apk_info.sub_app_id APP_CLIENT_VERSION = 0 - SDK_VERSION = APK_INFO.sdk_version - SSO_VERSION = APK_INFO.sso_version - BITMAP = APK_INFO.bitmap - MAIN_SIGMAP = APK_INFO.main_sigmap - SUB_SIGMAP = APK_INFO.sub_sigmap + SDK_VERSION = apk_info.sdk_version + SSO_VERSION = apk_info.sso_version + BITMAP = apk_info.bitmap + MAIN_SIGMAP = apk_info.main_sigmap + SUB_SIGMAP = apk_info.sub_sigmap - GUID = DEVICE.guid + GUID = device.guid GUID_SRC = 1 GUID_CHANGE = 0 GUID_FLAG = 0 GUID_FLAG |= GUID_SRC << 24 & 0xFF000000 GUID_FLAG |= GUID_CHANGE << 8 & 0xFF00 LOCAL_ID = 2052 # oicq.wlogin_sdk.request.t.v - IP_BYTES: bytes = ipaddress.ip_address(DEVICE.ip_address).packed - NETWORK_TYPE = (DEVICE.apn == "wifi") + 1 + IP_BYTES: bytes = ipaddress.ip_address(device.ip_address).packed + NETWORK_TYPE = (device.apn == "wifi") + 1 data = Packet.build( struct.pack(">HH", SUB_COMMAND_ID, 24), @@ -666,37 +690,37 @@ def encode_exchange_emp_15( TlvEncoder.t107(), # TlvEncoder.t108(KSID), # null when first time login TlvEncoder.t144( - DEVICE.imei.encode(), - DEVICE.bootloader, - DEVICE.proc_version, - DEVICE.version.codename, - DEVICE.version.incremental, - DEVICE.fingerprint, - DEVICE.boot_id, - DEVICE.android_id, - DEVICE.baseband, - DEVICE.version.incremental, - DEVICE.os_type.encode(), - DEVICE.version.release.encode(), + device.imei.encode(), + device.bootloader, + device.proc_version, + device.version.codename, + device.version.incremental, + device.fingerprint, + device.boot_id, + device.android_id, + device.baseband, + device.version.incremental, + device.os_type.encode(), + device.version.release.encode(), NETWORK_TYPE, - DEVICE.sim.encode(), - DEVICE.apn.encode(), + device.sim.encode(), + device.apn.encode(), False, True, False, GUID_FLAG, - DEVICE.model.encode(), - DEVICE.guid, - DEVICE.brand.encode(), - DEVICE.tgtgt, + device.model.encode(), + device.guid, + device.brand.encode(), + device.tgtgt, ), TlvEncoder.t142(APK_ID), # TlvEncoder.t112(), - TlvEncoder.t145(DEVICE.guid), + TlvEncoder.t145(device.guid), # TlvEncoder.t166(1), TlvEncoder.t16a(no_pic_sig), TlvEncoder.t154(seq), - TlvEncoder.t141(DEVICE.sim.encode(), NETWORK_TYPE, DEVICE.apn.encode()), + TlvEncoder.t141(device.sim.encode(), NETWORK_TYPE, device.apn.encode()), TlvEncoder.t8(LOCAL_ID), TlvEncoder.t511( [ @@ -720,11 +744,11 @@ def encode_exchange_emp_15( # TlvEncoder.t172(), TlvEncoder.t177(APK_BUILD_TIME, SDK_VERSION), TlvEncoder.t400(g, uin, GUID, dpwd, 1, APP_ID, rand_seed), - TlvEncoder.t187(DEVICE.mac_address.encode()), - TlvEncoder.t188(DEVICE.android_id.encode()), - TlvEncoder.t194(DEVICE.imsi_md5) if DEVICE.imsi_md5 else b"", + TlvEncoder.t187(device.mac_address.encode()), + TlvEncoder.t188(device.android_id.encode()), + TlvEncoder.t194(device.imsi_md5) if device.imsi_md5 else b"", # TlvEncoder.t201(), - TlvEncoder.t202(DEVICE.wifi_bssid.encode(), DEVICE.wifi_ssid.encode()), + TlvEncoder.t202(device.wifi_bssid.encode(), device.wifi_ssid.encode()), TlvEncoder.t516(), TlvEncoder.t521(), TlvEncoder.t525(TlvEncoder.t536([])), @@ -743,14 +767,17 @@ def encode_exchange_emp_15( async def handle_oicq_response( - client: "Client", packet: IncomingPacket + client: "Client", packet: IncomingPacket, dev: Tuple[DeviceInfo, ApkInfo] ) -> OICQResponse: + device, apk_info = dev + response = OICQResponse.decode_response( packet.uin, packet.seq, packet.ret_code, packet.command_name, packet.data, + device.tgtgt ) if not isinstance(response, UnknownLoginStatus): return response @@ -764,7 +791,7 @@ async def handle_oicq_response( ).encode() client._t402 = response.t402 client._siginfo.g = md5( - DEVICE.guid + client._siginfo.dpwd + client._t402 + device.guid + client._siginfo.dpwd + client._t402 ).digest() if isinstance(response, LoginSuccess): @@ -821,7 +848,7 @@ async def handle_oicq_response( client._password_md5 + bytes(4) + struct.pack(">I", client._uin) ).digest() decrypted = qqtea_decrypt(response.encrypted_a1, key) - DEVICE.tgtgt = decrypted[51:67] + device.tgtgt = decrypted[51:67] elif isinstance(response, NeedCaptcha): client._t104 = response.t104 or client._t104 elif isinstance(response, DeviceLocked): diff --git a/cai/client/wtlogin/oicq.py b/cai/client/wtlogin/oicq.py index 56260260..a17ac00f 100644 --- a/cai/client/wtlogin/oicq.py +++ b/cai/client/wtlogin/oicq.py @@ -58,7 +58,7 @@ def build_encoded( class OICQResponse(Command): @classmethod def decode_response( - cls, uin: int, seq: int, ret_code: int, command_name: str, data: bytes + cls, uin: int, seq: int, ret_code: int, command_name: str, data: bytes, tgtgt: bytes ) -> "OICQResponse": """Decode login response and wrap main info of the response. @@ -71,6 +71,7 @@ def decode_response( ret_code (int): Return code of the response. command_name (str): Command name of the response. data (bytes): Payload data of the response. + tgtgt (bytes): decode key for t119 Returns: LoginSuccess: Login success. @@ -91,7 +92,7 @@ def decode_response( data_.start().uint16().uint8().offset(2).remain().execute() ) - _tlv_map = TlvDecoder.decode(_tlv_bytes) + _tlv_map = TlvDecoder.decode(_tlv_bytes, tgtgt) if status == 0: return LoginSuccess( diff --git a/cai/client/wtlogin/tlv.py b/cai/client/wtlogin/tlv.py index bf94bcb0..03f9b437 100644 --- a/cai/client/wtlogin/tlv.py +++ b/cai/client/wtlogin/tlv.py @@ -18,9 +18,6 @@ from cai.utils.binary import Packet from cai.pb.wtlogin import DeviceReport -from cai.settings.device import get_device - -DEVICE = get_device() class TlvEncoder: @@ -608,8 +605,9 @@ class TlvDecoder: def decode( cls, data: Union[bytes, bytearray], + tgtgt: bytes = None, offset: int = 0, - tag_size: int = 2, + tag_size: int = 2 ) -> Dict[int, Any]: if not isinstance(data, Packet): data = Packet(data) @@ -639,7 +637,9 @@ def decode( value = data.read_bytes(length, offset) offset += length futher_decode = getattr(cls, f"t{tag:x}", None) - if futher_decode: + if futher_decode and tag == 0x119: + value = futher_decode(value, tgtgt) + elif futher_decode: value = futher_decode(value) result[tag] = value @@ -658,7 +658,7 @@ def t113(cls, data: bytes) -> Dict[str, Any]: return {"uin": struct.unpack_from(">I", data)[0]} @classmethod - def t119(cls, data: bytes) -> Dict[int, Any]: + def t119(cls, data: bytes, tgtgt: bytes) -> Dict[int, Any]: """Tea decrypt tlv 119 data. Tlv list: @@ -712,7 +712,7 @@ def t119(cls, data: bytes) -> Dict[int, Any]: Note: Source: oicq.wlogin_sdk.request.oicq_request.d """ - data = qqtea_decrypt(data, DEVICE.tgtgt) + data = qqtea_decrypt(data, tgtgt) result = cls.decode(data, offset=2) return result diff --git a/cai/settings/protocol.py b/cai/settings/protocol.py index f5780878..035652fd 100644 --- a/cai/settings/protocol.py +++ b/cai/settings/protocol.py @@ -164,11 +164,11 @@ class ApkInfo(NamedTuple): ) -def get_apk_info(type_: str = "0") -> ApkInfo: - info = {"0": IPAD, "1": ANDROID_PHONE, "2": ANDROID_WATCH, "3": MACOS} - if type_ not in info: - raise ValueError(f"Invalid Protocol Type: {type_}") - return info[type_] +def get_apk_info(_type: str = "IPAD") -> ApkInfo: + info = {"IPAD": IPAD, "ANDROID_PHONE": ANDROID_PHONE, "ANDROID_WATCH": ANDROID_WATCH, "MACOS": MACOS} + if _type not in info: + raise ValueError(f"Invalid Protocol Type: {_type}") + return info[_type] def get_protocol(cache: bool = True) -> ApkInfo: @@ -181,8 +181,8 @@ def get_protocol(cache: bool = True) -> ApkInfo: with open(Storage.protocol_file, "r") as f: type_ = f.read() elif type_ is MISSING: - type_ = "0" + type_ = "IPAD" with open(Storage.protocol_file, "w") as f: - f.write("0") + f.write("IPAD") _protocol = get_apk_info(type_) return _protocol diff --git a/examples/login.py b/examples/login.py index bc0252c1..d64df97d 100644 --- a/examples/login.py +++ b/examples/login.py @@ -8,15 +8,15 @@ """ import os import asyncio -import signal -import asyncio -import sys import traceback from io import BytesIO from PIL import Image from cai.api import Client, make_client +from cai.client import OnlineStatus +from cai.settings.device import get_device +from cai.settings.protocol import get_apk_info from cai.exceptions import ( LoginException, ApiResponseError, @@ -34,13 +34,20 @@ async def run(closed: asyncio.Event): assert password and account, ValueError("account or password not set") account = int(account) - ci = Client(make_client(account, password)) + ci = Client(make_client(account, password, get_apk_info(), device=get_device())) try: await ci.login() print(f"Login Success! Client status: {ci.client.status!r}") except Exception as e: await handle_failure(ci, e) + while True: + for status in OnlineStatus: + if status == OnlineStatus.Offline: + continue + print(status, "Changed") + await ci.set_status(status, 67, True) + await asyncio.sleep(10) finally: closed.set() From c134a6dcd20c70145f330c2fc3214b45fd51c78f Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 03:02:31 +0800 Subject: [PATCH 010/113] update: named logger --- cai/client/client.py | 32 +++++++++++++------------- cai/client/config_push/__init__.py | 4 ++-- cai/client/message_service/__init__.py | 6 ++--- cai/log.py | 8 +++++-- 4 files changed, 27 insertions(+), 23 deletions(-) diff --git a/cai/client/client.py b/cai/client/client.py index 32769cf6..03c23cd3 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -26,7 +26,7 @@ from cachetools import TTLCache -from cai.log import logger +from cai import log from cai.utils.binary import Packet from cai.utils.future import FutureStore from cai.settings.device import DeviceInfo @@ -271,7 +271,7 @@ async def connect(self, server: Optional[SsoServer] = None) -> None: raise RuntimeError("Already connected to the server") _server = server or await get_sso_server() - logger.info(f"Connecting to server: {_server.host}:{_server.port}") + log.logger.info(f"Connecting to server: {_server.host}:{_server.port}") try: self._connection = await connect( _server.host, _server.port, ssl=False, timeout=3.0 @@ -357,7 +357,7 @@ async def send( Returns: None. """ - logger.debug(f"--> {seq}: {command_name}") + log.network.debug(f"--> {seq}: {command_name}") await self.connection.awrite(packet) async def send_and_wait( @@ -388,7 +388,7 @@ async def _handle_incoming_packet(self, in_packet: IncomingPacket) -> None: self._receive_store.store_result(packet.seq, packet) except Exception as e: # TODO: handle exception - logger.exception(e) + log.logger.exception(e) async def receive(self): """Receive data from connection reader and store it in sequence future. @@ -410,15 +410,15 @@ async def receive(self): self._siginfo.d2key, self._siginfo.wt_session_ticket_key, ) - logger.debug( + log.network.debug( f"<-- {packet.seq} ({packet.ret_code}): {packet.command_name}" ) # do not block receive asyncio.create_task(self._handle_incoming_packet(packet)) except ConnectionAbortedError: - logger.debug(f"Client {self.uin} connection closed") + log.logger.debug(f"Client {self.uin} connection closed") except Exception as e: - logger.exception(e) + log.logger.exception(e) @property def listeners(self) -> Set[LT]: @@ -428,7 +428,7 @@ async def _run_listener(self, listener: LT, event: Event) -> None: try: await listener(self, event) except Exception as e: - logger.exception(e) + log.logger.exception(e) def dispatch_event(self, event: Event) -> None: for listener in self.listeners: @@ -457,15 +457,15 @@ async def _handle_login_response( ) if isinstance(response, LoginSuccess): - logger.info(f"{self.nick}({self.uin}) 登录成功!") + log.logger.info(f"{self.nick}({self.uin}) 登录成功!") await self._init() return response elif isinstance(response, NeedCaptcha): if response.verify_url: - logger.info(f"登录失败!请前往 {response.verify_url} 获取 ticket") + log.logger.info(f"登录失败!请前往 {response.verify_url} 获取 ticket") raise LoginSliderNeeded(response.uin, response.verify_url) elif response.captcha_image: - logger.info(f"登录失败!需要根据图片输入验证码") + log.logger.info(f"登录失败!需要根据图片输入验证码") raise LoginCaptchaNeeded( response.uin, response.captcha_image, response.captcha_sign ) @@ -476,7 +476,7 @@ async def _handle_login_response( "Cannot get verify_url or captcha_image from the response!", ) elif isinstance(response, AccountFrozen): - logger.info("账号已被冻结!") + log.logger.info("账号已被冻结!") raise LoginAccountFrozen(response.uin) elif isinstance(response, DeviceLocked): msg = "账号已开启设备锁!" @@ -484,7 +484,7 @@ async def _handle_login_response( msg += f"向手机{response.sms_phone}发送验证码" if response.verify_url: msg += f"或前往 {response.verify_url} 扫码验证" - logger.info(msg + "。" + str(response.message)) + log.logger.info(msg + "。" + str(response.message)) raise LoginDeviceLocked( response.uin, @@ -493,7 +493,7 @@ async def _handle_login_response( response.message, ) elif isinstance(response, TooManySMSRequest): - logger.info("验证码发送频繁!") + log.logger.info("验证码发送过于频繁!") raise LoginSMSRequestError(response.uin) elif isinstance(response, DeviceLockLogin): if try_times: @@ -532,7 +532,7 @@ async def _handle_login_response( msg = packet_.start(2).string(2).execute()[0] else: msg = "" - logger.info(f"未知的登录返回码 {response.status}! {msg}") + log.logger.info(f"未知的登录返回码 {response.status}! {msg}") raise LoginException( response.uin, response.status, "Unknown login status." ) @@ -954,7 +954,7 @@ async def heartbeat(self) -> None: if not isinstance(response, Heartbeat): raise RuntimeError("Invalid heartbeat response type!") except Exception: - logger.exception("Heartbeat.Alive: Failed") + log.network.exception("Heartbeat.Alive: Failed") break await asyncio.sleep(self._heartbeat_interval) diff --git a/cai/client/config_push/__init__.py b/cai/client/config_push/__init__.py index bc99ebbe..c1b9bf27 100644 --- a/cai/client/config_push/__init__.py +++ b/cai/client/config_push/__init__.py @@ -13,7 +13,7 @@ from jce import types -from cai.log import logger +from cai import log from cai.utils.binary import Packet from cai.utils.jce import RequestPacketVersion3 from cai.client.packet import UniPacket, IncomingPacket @@ -85,7 +85,7 @@ async def handle_config_push_request( packet.data, ) if isinstance(command, SsoServerPushCommand): - logger.debug(f"ConfigPush: Got new server addresses.") + log.network.debug(f"ConfigPush: Got new server addresses.") elif isinstance(command, FileServerPushCommand): client._file_storage_info = command.list diff --git a/cai/client/message_service/__init__.py b/cai/client/message_service/__init__.py index e6ccd6e6..def447ed 100644 --- a/cai/client/message_service/__init__.py +++ b/cai/client/message_service/__init__.py @@ -12,7 +12,7 @@ from enum import IntEnum from typing import TYPE_CHECKING, List, Union, Optional -from cai.log import logger +from cai import log from cai.utils.binary import Packet from cai.client.status_service import OnlineStatus from cai.client.packet import UniPacket, IncomingPacket @@ -169,7 +169,7 @@ async def handle_get_message( msg_type = message.head.type Decoder = MESSAGE_DECODERS.get(msg_type, None) if not Decoder: - logger.debug( + log.network.debug( "MessageSvc.PbGetMsg: " f"Received unknown message type {msg_type}." ) @@ -315,7 +315,7 @@ async def handle_force_offline( packet.command_name, packet.data, ) - logger.error( + log.network.error( f"Client {client.uin} force offline: " + request.request.tips if isinstance(request, PushForceOffline) else "Unknown reason." diff --git a/cai/log.py b/cai/log.py index d205509f..a2f39d54 100644 --- a/cai/log.py +++ b/cai/log.py @@ -11,6 +11,10 @@ import sys import logging +logging.basicConfig( + level=logging.DEBUG, + handlers=[logging.StreamHandler(sys.stdout)] +) + logger = logging.getLogger("cai") -logger.setLevel(logging.DEBUG) -logger.addHandler(logging.StreamHandler(sys.stdout)) +network = logging.getLogger("cai.network") From 876b02fa07980a764fee957ba63da142d9d9f8a4 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 03:56:27 +0800 Subject: [PATCH 011/113] update: logger --- cai/client/client.py | 9 ++++++--- cai/log.py | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/cai/client/client.py b/cai/client/client.py index 03c23cd3..6ede43b3 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -8,6 +8,7 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ +import logging import time import struct import asyncio @@ -269,7 +270,7 @@ async def connect(self, server: Optional[SsoServer] = None) -> None: """ if self.connected: raise RuntimeError("Already connected to the server") - + log.network.debug("Getting Sso server") _server = server or await get_sso_server() log.logger.info(f"Connecting to server: {_server.host}:{_server.port}") try: @@ -318,6 +319,7 @@ async def reconnect( async def close(self) -> None: """Close the client and logout.""" + log.logger.warning("closing client") if ( self.connected and self.status @@ -357,7 +359,7 @@ async def send( Returns: None. """ - log.network.debug(f"--> {seq}: {command_name}") + log.network.debug(f"(send:{seq}): {command_name}") await self.connection.awrite(packet) async def send_and_wait( @@ -410,8 +412,9 @@ async def receive(self): self._siginfo.d2key, self._siginfo.wt_session_ticket_key, ) + # log.network.debug( - f"<-- {packet.seq} ({packet.ret_code}): {packet.command_name}" + f"(receive:{packet.ret_code}): {packet.command_name}" ) # do not block receive asyncio.create_task(self._handle_incoming_packet(packet)) diff --git a/cai/log.py b/cai/log.py index a2f39d54..37c06818 100644 --- a/cai/log.py +++ b/cai/log.py @@ -13,7 +13,8 @@ logging.basicConfig( level=logging.DEBUG, - handlers=[logging.StreamHandler(sys.stdout)] + handlers=[logging.StreamHandler(sys.stdout)], + format="%(asctime)s %(name)s[%(levelname)s]: %(message)s" ) logger = logging.getLogger("cai") From 68ac10d96fd8ff5b7303f5c2d09f11d4335fc7f9 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 04:12:56 +0800 Subject: [PATCH 012/113] add: Client.status --- cai/api/client.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cai/api/client.py b/cai/api/client.py index 418d68ce..6f8fec19 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -32,7 +32,6 @@ def make_client( passwd = hashlib.md5(passwd.encode()).digest() if not device: device = new_device() - print(device) return client_t(uin, passwd, device, apk_info) @@ -44,6 +43,10 @@ def __init__(self, client: client_t): def connected(self) -> bool: return self.client.connected + @property + def status(self) -> Optional[OnlineStatus]: + return self.client.status + async def close(self): """Stop Client""" await self.client.close() From 06d03d6ed355ace275737c42917e2e4826da6cd4 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 04:46:23 +0800 Subject: [PATCH 013/113] add: more debug message --- cai/client/client.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cai/client/client.py b/cai/client/client.py index 6ede43b3..5af25328 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -302,6 +302,7 @@ async def reconnect( change_server (bool, optional): True if you want to change the server. Defaults to False. server (Optional[SsoServer], optional): Which server you want to connect to. Defaults to None. """ + log.network.debug("reconnecting...") if not change_server and self._connection: await self._connection.reconnect() return @@ -316,6 +317,7 @@ async def reconnect( ) await self.disconnect() await self.connect(_server) + log.network.debug("reconnected") async def close(self) -> None: """Close the client and logout.""" @@ -961,6 +963,7 @@ async def heartbeat(self) -> None: break await asyncio.sleep(self._heartbeat_interval) + log.network.debug("heartbeat stopped") self._heartbeat_enabled = False async def _refresh_friend_list(self): From 40974150b60b8b310375182d2101aadaba0d1221 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 14:45:30 +0800 Subject: [PATCH 014/113] add: basic send group message[see example/login.py] --- cai/api/client.py | 21 ++++++++-- cai/client/message_service/encoders.py | 53 ++++++++++++++++++++++++++ cai/log.py | 7 ---- examples/login.py | 32 +++++++++++++++- 4 files changed, 100 insertions(+), 13 deletions(-) create mode 100644 cai/client/message_service/encoders.py diff --git a/cai/api/client.py b/cai/api/client.py index 6f8fec19..c5bc9291 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -8,14 +8,16 @@ """ import hashlib -from typing import Union, Optional +from typing import Union, Optional, Sequence -from .login import Login as _Login -from .friend import Friend as _Friend -from .group import Group as _Group from cai.client import OnlineStatus, Client as client_t +from cai.client.message_service.encoders import make_group_msg_pkg, build_msg from cai.settings.device import DeviceInfo, new_device from cai.settings.protocol import ApkInfo +from .friend import Friend as _Friend +from .group import Group as _Group +from .login import Login as _Login +from cai.client.message_service.models import Element def make_client( @@ -47,6 +49,17 @@ def connected(self) -> bool: def status(self) -> Optional[OnlineStatus]: return self.client.status + async def send_group_msg(self, gid: int, msg: Sequence[Element]): + seq = self.client.next_seq() + + return await self.client.send_and_wait( + seq, + "MessageSvc.PbSendMsg", + make_group_msg_pkg( + seq, gid, self.client, build_msg(msg) + ) + ) + async def close(self): """Stop Client""" await self.client.close() diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py new file mode 100644 index 00000000..07c3b4ba --- /dev/null +++ b/cai/client/message_service/encoders.py @@ -0,0 +1,53 @@ +import random + +from typing import Sequence, TYPE_CHECKING, Dict, Type +from cai.pb.im.msg.msg_body import MsgBody, PlainText, RichText, Elem +from cai.pb.msf.msg.svc.svc_pb2 import PbSendMsgReq, RoutingHead, Grp +from cai.pb.msf.msg.comm.comm_pb2 import ContentHead +from cai.client.packet import UniPacket + +from . import models + + +if TYPE_CHECKING: + from cai.client.client import Client + + +# todo: https://github.com/mamoe/mirai/blob/7d3971259de59cede94b7a55650c8a6ad4346a59/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbSendMsg.kt#L103 +# https://github.com/mamoe/mirai/blob/74fc5a50376ed0330b984af51e0fabc2147afdbb/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt + +def build_msg(elements: Sequence[models.Element]) -> MsgBody: + ret = [] + for e in elements: # todo: support more element + if isinstance(e, models.TextElement): + ret.append(PlainText(str=e.content.encode())) + else: + raise NotImplementedError(e) + + return MsgBody( + rich_text=RichText( + elems=[Elem(text=e) for e in ret], + ptt=None + ) + ) + + +def encode_send_group_msg_req( + seq: int, session_id: bytes, uin: int, group: int, body: MsgBody, head: ContentHead, d2key: bytes +): + return UniPacket.build(uin, seq, "MessageSvc.PbSendMsg", session_id, 1, PbSendMsgReq( + routing_head=RoutingHead(grp=Grp(group_code=group)), + content_head=head, + body=body, + seq=seq, + rand=random.randrange(3000, 30000), + via=0 + ).SerializeToString(), d2key) + + +def make_group_msg_pkg(seq: int, gid: int, client: "Client", body: MsgBody) -> UniPacket: + return encode_send_group_msg_req( + seq, client._session_id, client.uin, + gid, body, ContentHead(pkg_num=1, pkg_index=0, div_seq=0), + client._siginfo.d2key + ) diff --git a/cai/log.py b/cai/log.py index 37c06818..1ca89ad1 100644 --- a/cai/log.py +++ b/cai/log.py @@ -8,14 +8,7 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ -import sys import logging -logging.basicConfig( - level=logging.DEBUG, - handlers=[logging.StreamHandler(sys.stdout)], - format="%(asctime)s %(name)s[%(levelname)s]: %(message)s" -) - logger = logging.getLogger("cai") network = logging.getLogger("cai.network") diff --git a/examples/login.py b/examples/login.py index d64df97d..fc533dd1 100644 --- a/examples/login.py +++ b/examples/login.py @@ -6,15 +6,19 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ +import functools +import logging import os import asyncio +import sys import traceback from io import BytesIO from PIL import Image from cai.api import Client, make_client -from cai.client import OnlineStatus +from cai.client import OnlineStatus, PrivateMessage, GroupMessage, Event +from cai.client.message_service.models import TextElement from cai.settings.device import get_device from cai.settings.protocol import get_apk_info from cai.exceptions import ( @@ -41,17 +45,34 @@ async def run(closed: asyncio.Event): print(f"Login Success! Client status: {ci.client.status!r}") except Exception as e: await handle_failure(ci, e) + ci.client.add_event_listener(functools.partial(listen_message, ci)) while True: for status in OnlineStatus: if status == OnlineStatus.Offline: continue print(status, "Changed") await ci.set_status(status, 67, True) - await asyncio.sleep(10) + await asyncio.sleep(360) finally: closed.set() +async def listen_message(client: Client, _, event: Event): + if isinstance(event, PrivateMessage): + print(f"{event.from_nick}(f{event.from_uin}) -> {event.message}") + elif isinstance(event, GroupMessage): + print(f"{event.group_name}({event.group_id}:{event.from_uin}) -> {event.message}") + if event.message and hasattr(event.message[0], "content"): + if event.message[0].content == "0x114514": + await client.send_group_msg( + event.group_id, [ + TextElement("Hello\n"), + TextElement("Multiple element "), + TextElement("Supported.") + ] + ) + + async def handle_failure(client: Client, exception: Exception): if isinstance(exception, LoginSliderNeeded): print("Verify url:", exception.verify_url) @@ -125,6 +146,13 @@ async def handle_failure(client: Client, exception: Exception): if __name__ == "__main__": + + logging.basicConfig( + level=logging.DEBUG, + handlers=[logging.StreamHandler(sys.stdout)], + format="%(asctime)s %(name)s[%(levelname)s]: %(message)s" + ) + close = asyncio.Event() async def wait_cleanup(): From 6cb910325f821223cc09aceec464146200c4aadc Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 16:06:17 +0800 Subject: [PATCH 015/113] add: highway pb file --- cai/pb/highway/__init__.py | 0 cai/pb/highway/protocol/__init__.py | 0 cai/pb/highway/protocol/highway_head.proto | 132 ++++++ cai/pb/highway/protocol/highway_head_pb2.py | 210 +++++++++ cai/pb/highway/protocol/highway_head_pb2.pyi | 421 +++++++++++++++++++ 5 files changed, 763 insertions(+) create mode 100644 cai/pb/highway/__init__.py create mode 100644 cai/pb/highway/protocol/__init__.py create mode 100644 cai/pb/highway/protocol/highway_head.proto create mode 100644 cai/pb/highway/protocol/highway_head_pb2.py create mode 100644 cai/pb/highway/protocol/highway_head_pb2.pyi diff --git a/cai/pb/highway/__init__.py b/cai/pb/highway/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cai/pb/highway/protocol/__init__.py b/cai/pb/highway/protocol/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cai/pb/highway/protocol/highway_head.proto b/cai/pb/highway/protocol/highway_head.proto new file mode 100644 index 00000000..cfddbdd8 --- /dev/null +++ b/cai/pb/highway/protocol/highway_head.proto @@ -0,0 +1,132 @@ +syntax = "proto2"; +// origin name: CSDataHighwayHead +message highway_head { + message C2CCommonExtendinfo { + optional uint32 infoId = 1; + optional FilterExtendinfo filterExtendinfo = 2; + } + + message DataHighwayHead { + optional uint32 version = 1; + optional bytes uin = 2; + optional bytes command = 3; + optional uint32 seq = 4; + optional uint32 retryTimes = 5; + optional uint32 appid = 6; + optional uint32 dataflag = 7; + optional uint32 commandId = 8; + optional bytes buildVer = 9; + optional uint32 localeId = 10; + optional uint32 envId = 11; + } + + message DataHole { + optional uint64 begin = 1; + optional uint64 end = 2; + } + + message FilterExtendinfo { + optional uint32 filterFlag = 1; + optional ImageFilterRequest imageFilterRequest = 2; + } + + message FilterStyle { + optional uint32 styleId = 1; + optional bytes styleName = 2; + } + + message ImageFilterRequest { + optional bytes sessionId = 1; + optional uint32 clientIp = 2; + optional uint64 uin = 3; + optional FilterStyle style = 4; + optional uint32 width = 5; + optional uint32 height = 6; + optional bytes imageData = 7; + } + + message ImageFilterResponse { + optional int32 retCode = 1; + optional bytes imageData = 2; + optional uint32 costTime = 3; + } + + message LoginSigHead { + optional uint32 loginsigType = 1; + optional bytes loginsig = 2; + } + + message NewServiceTicket { + optional bytes signature = 1; + optional bytes ukey = 2; + } + + message PicInfoExt { + optional uint32 picWidth = 1; + optional uint32 picHeight = 2; + optional uint32 picFlag = 3; + optional uint32 busiType = 4; + optional uint32 srcTerm = 5; + optional uint32 platType = 6; + optional uint32 netType = 7; + optional uint32 imgType = 8; + optional uint32 appPicType = 9; + optional bytes echoCreatedByServer = 10; + optional uint64 qqmeetGuildId = 11; + optional uint64 qqmeetChannelId = 12; + } + + message PicRspExtInfo { + optional bytes skey = 1; + optional uint32 clientIp = 2; + optional uint64 upOffset = 3; + optional uint64 blockSize = 4; + } + + message QueryHoleRsp { + optional uint32 result = 1; + repeated DataHole dataHole = 2; + optional bool compFlag = 3; + } + + message ReqDataHighwayHead { + optional DataHighwayHead basehead = 1; + optional SegHead seghead = 2; + optional bytes reqExtendinfo = 3; + optional uint64 timestamp = 4; + optional LoginSigHead loginSigHead = 5; + } + + message RspBody { + optional QueryHoleRsp queryHoleRsp = 1; + } + + message RspDataHighwayHead { + optional DataHighwayHead basehead = 1; + optional SegHead seghead = 2; + optional uint32 errorCode = 3; + optional uint32 allowRetry = 4; + optional uint32 cachecost = 5; + optional uint32 htcost = 6; + optional bytes rspExtendinfo = 7; + optional uint64 timestamp = 8; + optional uint64 range = 9; + optional uint32 isReset = 10; + } + + message SegHead { + optional uint32 serviceid = 1; + optional uint64 filesize = 2; + optional uint64 dataoffset = 3; + optional uint32 datalength = 4; + optional uint32 rtcode = 5; + optional bytes serviceticket = 6; + optional uint32 flag = 7; + optional bytes md5 = 8; + optional bytes fileMd5 = 9; + optional uint32 cacheAddr = 10; + optional uint32 queryTimes = 11; + optional uint32 updateCacheip = 12; + optional uint32 cachePort = 13; + } +} diff --git a/cai/pb/highway/protocol/highway_head_pb2.py b/cai/pb/highway/protocol/highway_head_pb2.py new file mode 100644 index 00000000..ee212b00 --- /dev/null +++ b/cai/pb/highway/protocol/highway_head_pb2.py @@ -0,0 +1,210 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: highway_head.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12highway_head.proto\"\x93\x10\n\x0chighway_head\x1a_\n\x13\x43\x32\x43\x43ommonExtendinfo\x12\x0e\n\x06infoId\x18\x01 \x01(\r\x12\x38\n\x10\x66ilterExtendinfo\x18\x02 \x01(\x0b\x32\x1e.highway_head.FilterExtendinfo\x1a\xc8\x01\n\x0f\x44\x61taHighwayHead\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0b\n\x03uin\x18\x02 \x01(\x0c\x12\x0f\n\x07\x63ommand\x18\x03 \x01(\x0c\x12\x0b\n\x03seq\x18\x04 \x01(\r\x12\x12\n\nretryTimes\x18\x05 \x01(\r\x12\r\n\x05\x61ppid\x18\x06 \x01(\r\x12\x10\n\x08\x64\x61taflag\x18\x07 \x01(\r\x12\x11\n\tcommandId\x18\x08 \x01(\r\x12\x10\n\x08\x62uildVer\x18\t \x01(\x0c\x12\x10\n\x08localeId\x18\n \x01(\r\x12\r\n\x05\x65nvId\x18\x0b \x01(\r\x1a&\n\x08\x44\x61taHole\x12\r\n\x05\x62\x65gin\x18\x01 \x01(\x04\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x04\x1a\x64\n\x10\x46ilterExtendinfo\x12\x12\n\nfilterFlag\x18\x01 \x01(\r\x12<\n\x12imageFilterRequest\x18\x02 \x01(\x0b\x32 .highway_head.ImageFilterRequest\x1a\x31\n\x0b\x46ilterStyle\x12\x0f\n\x07styleId\x18\x01 \x01(\r\x12\x11\n\tstyleName\x18\x02 \x01(\x0c\x1a\xa2\x01\n\x12ImageFilterRequest\x12\x11\n\tsessionId\x18\x01 \x01(\x0c\x12\x10\n\x08\x63lientIp\x18\x02 \x01(\r\x12\x0b\n\x03uin\x18\x03 \x01(\x04\x12(\n\x05style\x18\x04 \x01(\x0b\x32\x19.highway_head.FilterStyle\x12\r\n\x05width\x18\x05 \x01(\r\x12\x0e\n\x06height\x18\x06 \x01(\r\x12\x11\n\timageData\x18\x07 \x01(\x0c\x1aK\n\x13ImageFilterResponse\x12\x0f\n\x07retCode\x18\x01 \x01(\x05\x12\x11\n\timageData\x18\x02 \x01(\x0c\x12\x10\n\x08\x63ostTime\x18\x03 \x01(\r\x1a\x36\n\x0cLoginSigHead\x12\x14\n\x0cloginsigType\x18\x01 \x01(\r\x12\x10\n\x08loginsig\x18\x02 \x01(\x0c\x1a\x33\n\x10NewServiceTicket\x12\x11\n\tsignature\x18\x01 \x01(\x0c\x12\x0c\n\x04ukey\x18\x02 \x01(\x0c\x1a\xfa\x01\n\nPicInfoExt\x12\x10\n\x08picWidth\x18\x01 \x01(\r\x12\x11\n\tpicHeight\x18\x02 \x01(\r\x12\x0f\n\x07picFlag\x18\x03 \x01(\r\x12\x10\n\x08\x62usiType\x18\x04 \x01(\r\x12\x0f\n\x07srcTerm\x18\x05 \x01(\r\x12\x10\n\x08platType\x18\x06 \x01(\r\x12\x0f\n\x07netType\x18\x07 \x01(\r\x12\x0f\n\x07imgType\x18\x08 \x01(\r\x12\x12\n\nappPicType\x18\t \x01(\r\x12\x1b\n\x13\x65\x63hoCreatedByServer\x18\n \x01(\x0c\x12\x15\n\rqqmeetGuildId\x18\x0b \x01(\x04\x12\x17\n\x0fqqmeetChannelId\x18\x0c \x01(\x04\x1aT\n\rPicRspExtInfo\x12\x0c\n\x04skey\x18\x01 \x01(\x0c\x12\x10\n\x08\x63lientIp\x18\x02 \x01(\r\x12\x10\n\x08upOffset\x18\x03 \x01(\x04\x12\x11\n\tblockSize\x18\x04 \x01(\x04\x1aZ\n\x0cQueryHoleRsp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12(\n\x08\x64\x61taHole\x18\x02 \x03(\x0b\x32\x16.highway_head.DataHole\x12\x10\n\x08\x63ompFlag\x18\x03 \x01(\x08\x1a\xc9\x01\n\x12ReqDataHighwayHead\x12/\n\x08\x62\x61sehead\x18\x01 \x01(\x0b\x32\x1d.highway_head.DataHighwayHead\x12&\n\x07seghead\x18\x02 \x01(\x0b\x32\x15.highway_head.SegHead\x12\x15\n\rreqExtendinfo\x18\x03 \x01(\x0c\x12\x11\n\ttimestamp\x18\x04 \x01(\x04\x12\x30\n\x0cloginSigHead\x18\x05 \x01(\x0b\x32\x1a.highway_head.LoginSigHead\x1a;\n\x07RspBody\x12\x30\n\x0cqueryHoleRsp\x18\x01 \x01(\x0b\x32\x1a.highway_head.QueryHoleRsp\x1a\x81\x02\n\x12RspDataHighwayHead\x12/\n\x08\x62\x61sehead\x18\x01 \x01(\x0b\x32\x1d.highway_head.DataHighwayHead\x12&\n\x07seghead\x18\x02 \x01(\x0b\x32\x15.highway_head.SegHead\x12\x11\n\terrorCode\x18\x03 \x01(\r\x12\x12\n\nallowRetry\x18\x04 \x01(\r\x12\x11\n\tcachecost\x18\x05 \x01(\r\x12\x0e\n\x06htcost\x18\x06 \x01(\r\x12\x15\n\rrspExtendinfo\x18\x07 \x01(\x0c\x12\x11\n\ttimestamp\x18\x08 \x01(\x04\x12\r\n\x05range\x18\t \x01(\x04\x12\x0f\n\x07isReset\x18\n \x01(\r\x1a\xfa\x01\n\x07SegHead\x12\x11\n\tserviceid\x18\x01 \x01(\r\x12\x10\n\x08\x66ilesize\x18\x02 \x01(\x04\x12\x12\n\ndataoffset\x18\x03 \x01(\x04\x12\x12\n\ndatalength\x18\x04 \x01(\r\x12\x0e\n\x06rtcode\x18\x05 \x01(\r\x12\x15\n\rserviceticket\x18\x06 \x01(\x0c\x12\x0c\n\x04\x66lag\x18\x07 \x01(\r\x12\x0b\n\x03md5\x18\x08 \x01(\x0c\x12\x0f\n\x07\x66ileMd5\x18\t \x01(\x0c\x12\x11\n\tcacheAddr\x18\n \x01(\r\x12\x12\n\nqueryTimes\x18\x0b \x01(\r\x12\x15\n\rupdateCacheip\x18\x0c \x01(\r\x12\x11\n\tcachePort\x18\r \x01(\r') + + + +_HIGHWAY_HEAD = DESCRIPTOR.message_types_by_name['highway_head'] +_HIGHWAY_HEAD_C2CCOMMONEXTENDINFO = _HIGHWAY_HEAD.nested_types_by_name['C2CCommonExtendinfo'] +_HIGHWAY_HEAD_DATAHIGHWAYHEAD = _HIGHWAY_HEAD.nested_types_by_name['DataHighwayHead'] +_HIGHWAY_HEAD_DATAHOLE = _HIGHWAY_HEAD.nested_types_by_name['DataHole'] +_HIGHWAY_HEAD_FILTEREXTENDINFO = _HIGHWAY_HEAD.nested_types_by_name['FilterExtendinfo'] +_HIGHWAY_HEAD_FILTERSTYLE = _HIGHWAY_HEAD.nested_types_by_name['FilterStyle'] +_HIGHWAY_HEAD_IMAGEFILTERREQUEST = _HIGHWAY_HEAD.nested_types_by_name['ImageFilterRequest'] +_HIGHWAY_HEAD_IMAGEFILTERRESPONSE = _HIGHWAY_HEAD.nested_types_by_name['ImageFilterResponse'] +_HIGHWAY_HEAD_LOGINSIGHEAD = _HIGHWAY_HEAD.nested_types_by_name['LoginSigHead'] +_HIGHWAY_HEAD_NEWSERVICETICKET = _HIGHWAY_HEAD.nested_types_by_name['NewServiceTicket'] +_HIGHWAY_HEAD_PICINFOEXT = _HIGHWAY_HEAD.nested_types_by_name['PicInfoExt'] +_HIGHWAY_HEAD_PICRSPEXTINFO = _HIGHWAY_HEAD.nested_types_by_name['PicRspExtInfo'] +_HIGHWAY_HEAD_QUERYHOLERSP = _HIGHWAY_HEAD.nested_types_by_name['QueryHoleRsp'] +_HIGHWAY_HEAD_REQDATAHIGHWAYHEAD = _HIGHWAY_HEAD.nested_types_by_name['ReqDataHighwayHead'] +_HIGHWAY_HEAD_RSPBODY = _HIGHWAY_HEAD.nested_types_by_name['RspBody'] +_HIGHWAY_HEAD_RSPDATAHIGHWAYHEAD = _HIGHWAY_HEAD.nested_types_by_name['RspDataHighwayHead'] +_HIGHWAY_HEAD_SEGHEAD = _HIGHWAY_HEAD.nested_types_by_name['SegHead'] +highway_head = _reflection.GeneratedProtocolMessageType('highway_head', (_message.Message,), { + + 'C2CCommonExtendinfo' : _reflection.GeneratedProtocolMessageType('C2CCommonExtendinfo', (_message.Message,), { + 'DESCRIPTOR' : _HIGHWAY_HEAD_C2CCOMMONEXTENDINFO, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head.C2CCommonExtendinfo) + }) + , + + 'DataHighwayHead' : _reflection.GeneratedProtocolMessageType('DataHighwayHead', (_message.Message,), { + 'DESCRIPTOR' : _HIGHWAY_HEAD_DATAHIGHWAYHEAD, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head.DataHighwayHead) + }) + , + + 'DataHole' : _reflection.GeneratedProtocolMessageType('DataHole', (_message.Message,), { + 'DESCRIPTOR' : _HIGHWAY_HEAD_DATAHOLE, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head.DataHole) + }) + , + + 'FilterExtendinfo' : _reflection.GeneratedProtocolMessageType('FilterExtendinfo', (_message.Message,), { + 'DESCRIPTOR' : _HIGHWAY_HEAD_FILTEREXTENDINFO, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head.FilterExtendinfo) + }) + , + + 'FilterStyle' : _reflection.GeneratedProtocolMessageType('FilterStyle', (_message.Message,), { + 'DESCRIPTOR' : _HIGHWAY_HEAD_FILTERSTYLE, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head.FilterStyle) + }) + , + + 'ImageFilterRequest' : _reflection.GeneratedProtocolMessageType('ImageFilterRequest', (_message.Message,), { + 'DESCRIPTOR' : _HIGHWAY_HEAD_IMAGEFILTERREQUEST, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head.ImageFilterRequest) + }) + , + + 'ImageFilterResponse' : _reflection.GeneratedProtocolMessageType('ImageFilterResponse', (_message.Message,), { + 'DESCRIPTOR' : _HIGHWAY_HEAD_IMAGEFILTERRESPONSE, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head.ImageFilterResponse) + }) + , + + 'LoginSigHead' : _reflection.GeneratedProtocolMessageType('LoginSigHead', (_message.Message,), { + 'DESCRIPTOR' : _HIGHWAY_HEAD_LOGINSIGHEAD, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head.LoginSigHead) + }) + , + + 'NewServiceTicket' : _reflection.GeneratedProtocolMessageType('NewServiceTicket', (_message.Message,), { + 'DESCRIPTOR' : _HIGHWAY_HEAD_NEWSERVICETICKET, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head.NewServiceTicket) + }) + , + + 'PicInfoExt' : _reflection.GeneratedProtocolMessageType('PicInfoExt', (_message.Message,), { + 'DESCRIPTOR' : _HIGHWAY_HEAD_PICINFOEXT, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head.PicInfoExt) + }) + , + + 'PicRspExtInfo' : _reflection.GeneratedProtocolMessageType('PicRspExtInfo', (_message.Message,), { + 'DESCRIPTOR' : _HIGHWAY_HEAD_PICRSPEXTINFO, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head.PicRspExtInfo) + }) + , + + 'QueryHoleRsp' : _reflection.GeneratedProtocolMessageType('QueryHoleRsp', (_message.Message,), { + 'DESCRIPTOR' : _HIGHWAY_HEAD_QUERYHOLERSP, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head.QueryHoleRsp) + }) + , + + 'ReqDataHighwayHead' : _reflection.GeneratedProtocolMessageType('ReqDataHighwayHead', (_message.Message,), { + 'DESCRIPTOR' : _HIGHWAY_HEAD_REQDATAHIGHWAYHEAD, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head.ReqDataHighwayHead) + }) + , + + 'RspBody' : _reflection.GeneratedProtocolMessageType('RspBody', (_message.Message,), { + 'DESCRIPTOR' : _HIGHWAY_HEAD_RSPBODY, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head.RspBody) + }) + , + + 'RspDataHighwayHead' : _reflection.GeneratedProtocolMessageType('RspDataHighwayHead', (_message.Message,), { + 'DESCRIPTOR' : _HIGHWAY_HEAD_RSPDATAHIGHWAYHEAD, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head.RspDataHighwayHead) + }) + , + + 'SegHead' : _reflection.GeneratedProtocolMessageType('SegHead', (_message.Message,), { + 'DESCRIPTOR' : _HIGHWAY_HEAD_SEGHEAD, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head.SegHead) + }) + , + 'DESCRIPTOR' : _HIGHWAY_HEAD, + '__module__' : 'highway_head_pb2' + # @@protoc_insertion_point(class_scope:highway_head) + }) +_sym_db.RegisterMessage(highway_head) +_sym_db.RegisterMessage(highway_head.C2CCommonExtendinfo) +_sym_db.RegisterMessage(highway_head.DataHighwayHead) +_sym_db.RegisterMessage(highway_head.DataHole) +_sym_db.RegisterMessage(highway_head.FilterExtendinfo) +_sym_db.RegisterMessage(highway_head.FilterStyle) +_sym_db.RegisterMessage(highway_head.ImageFilterRequest) +_sym_db.RegisterMessage(highway_head.ImageFilterResponse) +_sym_db.RegisterMessage(highway_head.LoginSigHead) +_sym_db.RegisterMessage(highway_head.NewServiceTicket) +_sym_db.RegisterMessage(highway_head.PicInfoExt) +_sym_db.RegisterMessage(highway_head.PicRspExtInfo) +_sym_db.RegisterMessage(highway_head.QueryHoleRsp) +_sym_db.RegisterMessage(highway_head.ReqDataHighwayHead) +_sym_db.RegisterMessage(highway_head.RspBody) +_sym_db.RegisterMessage(highway_head.RspDataHighwayHead) +_sym_db.RegisterMessage(highway_head.SegHead) + +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _HIGHWAY_HEAD._serialized_start=23 + _HIGHWAY_HEAD._serialized_end=2090 + _HIGHWAY_HEAD_C2CCOMMONEXTENDINFO._serialized_start=39 + _HIGHWAY_HEAD_C2CCOMMONEXTENDINFO._serialized_end=134 + _HIGHWAY_HEAD_DATAHIGHWAYHEAD._serialized_start=137 + _HIGHWAY_HEAD_DATAHIGHWAYHEAD._serialized_end=337 + _HIGHWAY_HEAD_DATAHOLE._serialized_start=339 + _HIGHWAY_HEAD_DATAHOLE._serialized_end=377 + _HIGHWAY_HEAD_FILTEREXTENDINFO._serialized_start=379 + _HIGHWAY_HEAD_FILTEREXTENDINFO._serialized_end=479 + _HIGHWAY_HEAD_FILTERSTYLE._serialized_start=481 + _HIGHWAY_HEAD_FILTERSTYLE._serialized_end=530 + _HIGHWAY_HEAD_IMAGEFILTERREQUEST._serialized_start=533 + _HIGHWAY_HEAD_IMAGEFILTERREQUEST._serialized_end=695 + _HIGHWAY_HEAD_IMAGEFILTERRESPONSE._serialized_start=697 + _HIGHWAY_HEAD_IMAGEFILTERRESPONSE._serialized_end=772 + _HIGHWAY_HEAD_LOGINSIGHEAD._serialized_start=774 + _HIGHWAY_HEAD_LOGINSIGHEAD._serialized_end=828 + _HIGHWAY_HEAD_NEWSERVICETICKET._serialized_start=830 + _HIGHWAY_HEAD_NEWSERVICETICKET._serialized_end=881 + _HIGHWAY_HEAD_PICINFOEXT._serialized_start=884 + _HIGHWAY_HEAD_PICINFOEXT._serialized_end=1134 + _HIGHWAY_HEAD_PICRSPEXTINFO._serialized_start=1136 + _HIGHWAY_HEAD_PICRSPEXTINFO._serialized_end=1220 + _HIGHWAY_HEAD_QUERYHOLERSP._serialized_start=1222 + _HIGHWAY_HEAD_QUERYHOLERSP._serialized_end=1312 + _HIGHWAY_HEAD_REQDATAHIGHWAYHEAD._serialized_start=1315 + _HIGHWAY_HEAD_REQDATAHIGHWAYHEAD._serialized_end=1516 + _HIGHWAY_HEAD_RSPBODY._serialized_start=1518 + _HIGHWAY_HEAD_RSPBODY._serialized_end=1577 + _HIGHWAY_HEAD_RSPDATAHIGHWAYHEAD._serialized_start=1580 + _HIGHWAY_HEAD_RSPDATAHIGHWAYHEAD._serialized_end=1837 + _HIGHWAY_HEAD_SEGHEAD._serialized_start=1840 + _HIGHWAY_HEAD_SEGHEAD._serialized_end=2090 +# @@protoc_insertion_point(module_scope) diff --git a/cai/pb/highway/protocol/highway_head_pb2.pyi b/cai/pb/highway/protocol/highway_head_pb2.pyi new file mode 100644 index 00000000..fa8e49aa --- /dev/null +++ b/cai/pb/highway/protocol/highway_head_pb2.pyi @@ -0,0 +1,421 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +from builtins import ( + bool, + bytes, + int, +) + +from google.protobuf.descriptor import ( + Descriptor, + FileDescriptor, +) + +from google.protobuf.internal.containers import ( + RepeatedCompositeFieldContainer, +) + +from google.protobuf.message import ( + Message, +) + +from typing import ( + Iterable, + Optional, +) + +from typing_extensions import ( + Literal, +) + + +DESCRIPTOR: FileDescriptor + +class highway_head(Message): + """origin name: CSDataHighwayHead""" + DESCRIPTOR: Descriptor + class C2CCommonExtendinfo(Message): + DESCRIPTOR: Descriptor + INFOID_FIELD_NUMBER: int + FILTEREXTENDINFO_FIELD_NUMBER: int + infoId: int + @property + def filterExtendinfo(self) -> highway_head.FilterExtendinfo: ... + def __init__(self, + *, + infoId: Optional[int] = ..., + filterExtendinfo: Optional[highway_head.FilterExtendinfo] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["filterExtendinfo",b"filterExtendinfo","infoId",b"infoId"]) -> bool: ... + def ClearField(self, field_name: Literal["filterExtendinfo",b"filterExtendinfo","infoId",b"infoId"]) -> None: ... + + class DataHighwayHead(Message): + DESCRIPTOR: Descriptor + VERSION_FIELD_NUMBER: int + UIN_FIELD_NUMBER: int + COMMAND_FIELD_NUMBER: int + SEQ_FIELD_NUMBER: int + RETRYTIMES_FIELD_NUMBER: int + APPID_FIELD_NUMBER: int + DATAFLAG_FIELD_NUMBER: int + COMMANDID_FIELD_NUMBER: int + BUILDVER_FIELD_NUMBER: int + LOCALEID_FIELD_NUMBER: int + ENVID_FIELD_NUMBER: int + version: int + uin: bytes + command: bytes + seq: int + retryTimes: int + appid: int + dataflag: int + commandId: int + buildVer: bytes + localeId: int + envId: int + def __init__(self, + *, + version: Optional[int] = ..., + uin: Optional[bytes] = ..., + command: Optional[bytes] = ..., + seq: Optional[int] = ..., + retryTimes: Optional[int] = ..., + appid: Optional[int] = ..., + dataflag: Optional[int] = ..., + commandId: Optional[int] = ..., + buildVer: Optional[bytes] = ..., + localeId: Optional[int] = ..., + envId: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["appid",b"appid","buildVer",b"buildVer","command",b"command","commandId",b"commandId","dataflag",b"dataflag","envId",b"envId","localeId",b"localeId","retryTimes",b"retryTimes","seq",b"seq","uin",b"uin","version",b"version"]) -> bool: ... + def ClearField(self, field_name: Literal["appid",b"appid","buildVer",b"buildVer","command",b"command","commandId",b"commandId","dataflag",b"dataflag","envId",b"envId","localeId",b"localeId","retryTimes",b"retryTimes","seq",b"seq","uin",b"uin","version",b"version"]) -> None: ... + + class DataHole(Message): + DESCRIPTOR: Descriptor + BEGIN_FIELD_NUMBER: int + END_FIELD_NUMBER: int + begin: int + end: int + def __init__(self, + *, + begin: Optional[int] = ..., + end: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["begin",b"begin","end",b"end"]) -> bool: ... + def ClearField(self, field_name: Literal["begin",b"begin","end",b"end"]) -> None: ... + + class FilterExtendinfo(Message): + DESCRIPTOR: Descriptor + FILTERFLAG_FIELD_NUMBER: int + IMAGEFILTERREQUEST_FIELD_NUMBER: int + filterFlag: int + @property + def imageFilterRequest(self) -> highway_head.ImageFilterRequest: ... + def __init__(self, + *, + filterFlag: Optional[int] = ..., + imageFilterRequest: Optional[highway_head.ImageFilterRequest] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["filterFlag",b"filterFlag","imageFilterRequest",b"imageFilterRequest"]) -> bool: ... + def ClearField(self, field_name: Literal["filterFlag",b"filterFlag","imageFilterRequest",b"imageFilterRequest"]) -> None: ... + + class FilterStyle(Message): + DESCRIPTOR: Descriptor + STYLEID_FIELD_NUMBER: int + STYLENAME_FIELD_NUMBER: int + styleId: int + styleName: bytes + def __init__(self, + *, + styleId: Optional[int] = ..., + styleName: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["styleId",b"styleId","styleName",b"styleName"]) -> bool: ... + def ClearField(self, field_name: Literal["styleId",b"styleId","styleName",b"styleName"]) -> None: ... + + class ImageFilterRequest(Message): + DESCRIPTOR: Descriptor + SESSIONID_FIELD_NUMBER: int + CLIENTIP_FIELD_NUMBER: int + UIN_FIELD_NUMBER: int + STYLE_FIELD_NUMBER: int + WIDTH_FIELD_NUMBER: int + HEIGHT_FIELD_NUMBER: int + IMAGEDATA_FIELD_NUMBER: int + sessionId: bytes + clientIp: int + uin: int + @property + def style(self) -> highway_head.FilterStyle: ... + width: int + height: int + imageData: bytes + def __init__(self, + *, + sessionId: Optional[bytes] = ..., + clientIp: Optional[int] = ..., + uin: Optional[int] = ..., + style: Optional[highway_head.FilterStyle] = ..., + width: Optional[int] = ..., + height: Optional[int] = ..., + imageData: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["clientIp",b"clientIp","height",b"height","imageData",b"imageData","sessionId",b"sessionId","style",b"style","uin",b"uin","width",b"width"]) -> bool: ... + def ClearField(self, field_name: Literal["clientIp",b"clientIp","height",b"height","imageData",b"imageData","sessionId",b"sessionId","style",b"style","uin",b"uin","width",b"width"]) -> None: ... + + class ImageFilterResponse(Message): + DESCRIPTOR: Descriptor + RETCODE_FIELD_NUMBER: int + IMAGEDATA_FIELD_NUMBER: int + COSTTIME_FIELD_NUMBER: int + retCode: int + imageData: bytes + costTime: int + def __init__(self, + *, + retCode: Optional[int] = ..., + imageData: Optional[bytes] = ..., + costTime: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["costTime",b"costTime","imageData",b"imageData","retCode",b"retCode"]) -> bool: ... + def ClearField(self, field_name: Literal["costTime",b"costTime","imageData",b"imageData","retCode",b"retCode"]) -> None: ... + + class LoginSigHead(Message): + DESCRIPTOR: Descriptor + LOGINSIGTYPE_FIELD_NUMBER: int + LOGINSIG_FIELD_NUMBER: int + loginsigType: int + loginsig: bytes + def __init__(self, + *, + loginsigType: Optional[int] = ..., + loginsig: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["loginsig",b"loginsig","loginsigType",b"loginsigType"]) -> bool: ... + def ClearField(self, field_name: Literal["loginsig",b"loginsig","loginsigType",b"loginsigType"]) -> None: ... + + class NewServiceTicket(Message): + DESCRIPTOR: Descriptor + SIGNATURE_FIELD_NUMBER: int + UKEY_FIELD_NUMBER: int + signature: bytes + ukey: bytes + def __init__(self, + *, + signature: Optional[bytes] = ..., + ukey: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["signature",b"signature","ukey",b"ukey"]) -> bool: ... + def ClearField(self, field_name: Literal["signature",b"signature","ukey",b"ukey"]) -> None: ... + + class PicInfoExt(Message): + DESCRIPTOR: Descriptor + PICWIDTH_FIELD_NUMBER: int + PICHEIGHT_FIELD_NUMBER: int + PICFLAG_FIELD_NUMBER: int + BUSITYPE_FIELD_NUMBER: int + SRCTERM_FIELD_NUMBER: int + PLATTYPE_FIELD_NUMBER: int + NETTYPE_FIELD_NUMBER: int + IMGTYPE_FIELD_NUMBER: int + APPPICTYPE_FIELD_NUMBER: int + ECHOCREATEDBYSERVER_FIELD_NUMBER: int + QQMEETGUILDID_FIELD_NUMBER: int + QQMEETCHANNELID_FIELD_NUMBER: int + picWidth: int + picHeight: int + picFlag: int + busiType: int + srcTerm: int + platType: int + netType: int + imgType: int + appPicType: int + echoCreatedByServer: bytes + qqmeetGuildId: int + qqmeetChannelId: int + def __init__(self, + *, + picWidth: Optional[int] = ..., + picHeight: Optional[int] = ..., + picFlag: Optional[int] = ..., + busiType: Optional[int] = ..., + srcTerm: Optional[int] = ..., + platType: Optional[int] = ..., + netType: Optional[int] = ..., + imgType: Optional[int] = ..., + appPicType: Optional[int] = ..., + echoCreatedByServer: Optional[bytes] = ..., + qqmeetGuildId: Optional[int] = ..., + qqmeetChannelId: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["appPicType",b"appPicType","busiType",b"busiType","echoCreatedByServer",b"echoCreatedByServer","imgType",b"imgType","netType",b"netType","picFlag",b"picFlag","picHeight",b"picHeight","picWidth",b"picWidth","platType",b"platType","qqmeetChannelId",b"qqmeetChannelId","qqmeetGuildId",b"qqmeetGuildId","srcTerm",b"srcTerm"]) -> bool: ... + def ClearField(self, field_name: Literal["appPicType",b"appPicType","busiType",b"busiType","echoCreatedByServer",b"echoCreatedByServer","imgType",b"imgType","netType",b"netType","picFlag",b"picFlag","picHeight",b"picHeight","picWidth",b"picWidth","platType",b"platType","qqmeetChannelId",b"qqmeetChannelId","qqmeetGuildId",b"qqmeetGuildId","srcTerm",b"srcTerm"]) -> None: ... + + class PicRspExtInfo(Message): + DESCRIPTOR: Descriptor + SKEY_FIELD_NUMBER: int + CLIENTIP_FIELD_NUMBER: int + UPOFFSET_FIELD_NUMBER: int + BLOCKSIZE_FIELD_NUMBER: int + skey: bytes + clientIp: int + upOffset: int + blockSize: int + def __init__(self, + *, + skey: Optional[bytes] = ..., + clientIp: Optional[int] = ..., + upOffset: Optional[int] = ..., + blockSize: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["blockSize",b"blockSize","clientIp",b"clientIp","skey",b"skey","upOffset",b"upOffset"]) -> bool: ... + def ClearField(self, field_name: Literal["blockSize",b"blockSize","clientIp",b"clientIp","skey",b"skey","upOffset",b"upOffset"]) -> None: ... + + class QueryHoleRsp(Message): + DESCRIPTOR: Descriptor + RESULT_FIELD_NUMBER: int + DATAHOLE_FIELD_NUMBER: int + COMPFLAG_FIELD_NUMBER: int + result: int + @property + def dataHole(self) -> RepeatedCompositeFieldContainer[highway_head.DataHole]: ... + compFlag: bool + def __init__(self, + *, + result: Optional[int] = ..., + dataHole: Optional[Iterable[highway_head.DataHole]] = ..., + compFlag: Optional[bool] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["compFlag",b"compFlag","result",b"result"]) -> bool: ... + def ClearField(self, field_name: Literal["compFlag",b"compFlag","dataHole",b"dataHole","result",b"result"]) -> None: ... + + class ReqDataHighwayHead(Message): + DESCRIPTOR: Descriptor + BASEHEAD_FIELD_NUMBER: int + SEGHEAD_FIELD_NUMBER: int + REQEXTENDINFO_FIELD_NUMBER: int + TIMESTAMP_FIELD_NUMBER: int + LOGINSIGHEAD_FIELD_NUMBER: int + @property + def basehead(self) -> highway_head.DataHighwayHead: ... + @property + def seghead(self) -> highway_head.SegHead: ... + reqExtendinfo: bytes + timestamp: int + @property + def loginSigHead(self) -> highway_head.LoginSigHead: ... + def __init__(self, + *, + basehead: Optional[highway_head.DataHighwayHead] = ..., + seghead: Optional[highway_head.SegHead] = ..., + reqExtendinfo: Optional[bytes] = ..., + timestamp: Optional[int] = ..., + loginSigHead: Optional[highway_head.LoginSigHead] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["basehead",b"basehead","loginSigHead",b"loginSigHead","reqExtendinfo",b"reqExtendinfo","seghead",b"seghead","timestamp",b"timestamp"]) -> bool: ... + def ClearField(self, field_name: Literal["basehead",b"basehead","loginSigHead",b"loginSigHead","reqExtendinfo",b"reqExtendinfo","seghead",b"seghead","timestamp",b"timestamp"]) -> None: ... + + class RspBody(Message): + DESCRIPTOR: Descriptor + QUERYHOLERSP_FIELD_NUMBER: int + @property + def queryHoleRsp(self) -> highway_head.QueryHoleRsp: ... + def __init__(self, + *, + queryHoleRsp: Optional[highway_head.QueryHoleRsp] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["queryHoleRsp",b"queryHoleRsp"]) -> bool: ... + def ClearField(self, field_name: Literal["queryHoleRsp",b"queryHoleRsp"]) -> None: ... + + class RspDataHighwayHead(Message): + DESCRIPTOR: Descriptor + BASEHEAD_FIELD_NUMBER: int + SEGHEAD_FIELD_NUMBER: int + ERRORCODE_FIELD_NUMBER: int + ALLOWRETRY_FIELD_NUMBER: int + CACHECOST_FIELD_NUMBER: int + HTCOST_FIELD_NUMBER: int + RSPEXTENDINFO_FIELD_NUMBER: int + TIMESTAMP_FIELD_NUMBER: int + RANGE_FIELD_NUMBER: int + ISRESET_FIELD_NUMBER: int + @property + def basehead(self) -> highway_head.DataHighwayHead: ... + @property + def seghead(self) -> highway_head.SegHead: ... + errorCode: int + allowRetry: int + cachecost: int + htcost: int + rspExtendinfo: bytes + timestamp: int + range: int + isReset: int + def __init__(self, + *, + basehead: Optional[highway_head.DataHighwayHead] = ..., + seghead: Optional[highway_head.SegHead] = ..., + errorCode: Optional[int] = ..., + allowRetry: Optional[int] = ..., + cachecost: Optional[int] = ..., + htcost: Optional[int] = ..., + rspExtendinfo: Optional[bytes] = ..., + timestamp: Optional[int] = ..., + range: Optional[int] = ..., + isReset: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["allowRetry",b"allowRetry","basehead",b"basehead","cachecost",b"cachecost","errorCode",b"errorCode","htcost",b"htcost","isReset",b"isReset","range",b"range","rspExtendinfo",b"rspExtendinfo","seghead",b"seghead","timestamp",b"timestamp"]) -> bool: ... + def ClearField(self, field_name: Literal["allowRetry",b"allowRetry","basehead",b"basehead","cachecost",b"cachecost","errorCode",b"errorCode","htcost",b"htcost","isReset",b"isReset","range",b"range","rspExtendinfo",b"rspExtendinfo","seghead",b"seghead","timestamp",b"timestamp"]) -> None: ... + + class SegHead(Message): + DESCRIPTOR: Descriptor + SERVICEID_FIELD_NUMBER: int + FILESIZE_FIELD_NUMBER: int + DATAOFFSET_FIELD_NUMBER: int + DATALENGTH_FIELD_NUMBER: int + RTCODE_FIELD_NUMBER: int + SERVICETICKET_FIELD_NUMBER: int + FLAG_FIELD_NUMBER: int + MD5_FIELD_NUMBER: int + FILEMD5_FIELD_NUMBER: int + CACHEADDR_FIELD_NUMBER: int + QUERYTIMES_FIELD_NUMBER: int + UPDATECACHEIP_FIELD_NUMBER: int + CACHEPORT_FIELD_NUMBER: int + serviceid: int + filesize: int + dataoffset: int + datalength: int + rtcode: int + serviceticket: bytes + flag: int + md5: bytes + fileMd5: bytes + cacheAddr: int + queryTimes: int + updateCacheip: int + cachePort: int + def __init__(self, + *, + serviceid: Optional[int] = ..., + filesize: Optional[int] = ..., + dataoffset: Optional[int] = ..., + datalength: Optional[int] = ..., + rtcode: Optional[int] = ..., + serviceticket: Optional[bytes] = ..., + flag: Optional[int] = ..., + md5: Optional[bytes] = ..., + fileMd5: Optional[bytes] = ..., + cacheAddr: Optional[int] = ..., + queryTimes: Optional[int] = ..., + updateCacheip: Optional[int] = ..., + cachePort: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["cacheAddr",b"cacheAddr","cachePort",b"cachePort","datalength",b"datalength","dataoffset",b"dataoffset","fileMd5",b"fileMd5","filesize",b"filesize","flag",b"flag","md5",b"md5","queryTimes",b"queryTimes","rtcode",b"rtcode","serviceid",b"serviceid","serviceticket",b"serviceticket","updateCacheip",b"updateCacheip"]) -> bool: ... + def ClearField(self, field_name: Literal["cacheAddr",b"cacheAddr","cachePort",b"cachePort","datalength",b"datalength","dataoffset",b"dataoffset","fileMd5",b"fileMd5","filesize",b"filesize","flag",b"flag","md5",b"md5","queryTimes",b"queryTimes","rtcode",b"rtcode","serviceid",b"serviceid","serviceticket",b"serviceticket","updateCacheip",b"updateCacheip"]) -> None: ... + + def __init__(self, + ) -> None: ... From 9a824056282ee110a2da927b6c2b34f621920782 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 16:06:27 +0800 Subject: [PATCH 016/113] update: todo --- cai/api/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cai/api/client.py b/cai/api/client.py index c5bc9291..2ab50a3c 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -51,7 +51,7 @@ def status(self) -> Optional[OnlineStatus]: async def send_group_msg(self, gid: int, msg: Sequence[Element]): seq = self.client.next_seq() - + # todo: split long msg return await self.client.send_and_wait( seq, "MessageSvc.PbSendMsg", From 28def19aee3fcc36afac4e60b1e457c2abb622ac Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 17:08:15 +0800 Subject: [PATCH 017/113] add: longmsg.proto --- cai/pb/highway/longmsg/__init__.py | 0 cai/pb/highway/longmsg/longmsg.proto | 61 +++++++ cai/pb/highway/longmsg/longmsg_pb2.py | 95 ++++++++++ cai/pb/highway/longmsg/longmsg_pb2.pyi | 230 +++++++++++++++++++++++++ 4 files changed, 386 insertions(+) create mode 100644 cai/pb/highway/longmsg/__init__.py create mode 100644 cai/pb/highway/longmsg/longmsg.proto create mode 100644 cai/pb/highway/longmsg/longmsg_pb2.py create mode 100644 cai/pb/highway/longmsg/longmsg_pb2.pyi diff --git a/cai/pb/highway/longmsg/__init__.py b/cai/pb/highway/longmsg/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cai/pb/highway/longmsg/longmsg.proto b/cai/pb/highway/longmsg/longmsg.proto new file mode 100644 index 00000000..6a6de669 --- /dev/null +++ b/cai/pb/highway/longmsg/longmsg.proto @@ -0,0 +1,61 @@ +syntax = "proto3"; + +option go_package = "github.com/Mrs4s/MiraiGo/client/pb/multimsg"; + +message ExternMsg { + int32 channelType = 1; +} +message MultiMsgApplyDownReq { + bytes msgResid = 1; + int32 msgType = 2; + int64 srcUin = 3; +} +message MultiMsgApplyDownRsp { + int32 result = 1; + bytes thumbDownPara = 2; + bytes msgKey = 3; + repeated int32 uint32DownIp = 4; + repeated int32 uint32DownPort = 5; + bytes msgResid = 6; + ExternMsg msgExternInfo = 7; + repeated bytes bytesDownIpV6 = 8; + repeated int32 uint32DownV6Port = 9; +} +message MultiMsgApplyUpReq { + int64 dstUin = 1; + int64 msgSize = 2; + bytes msgMd5 = 3; + int32 msgType = 4; + int32 applyId = 5; +} +message MultiMsgApplyUpRsp { + int32 result = 1; + string msgResid = 2; + bytes msgUkey = 3; + repeated int32 uint32UpIp = 4; + repeated int32 uint32UpPort = 5; + int64 blockSize = 6; + int64 upOffset = 7; + int32 applyId = 8; + bytes msgKey = 9; + bytes msgSig = 10; + ExternMsg msgExternInfo = 11; + repeated bytes bytesUpIpV6 = 12; + repeated int32 uint32UpV6Port = 13; +} +message MultiReqBody { + int32 subcmd = 1; + int32 termType = 2; + int32 platformType = 3; + int32 netType = 4; + string buildVer = 5; + repeated MultiMsgApplyUpReq multimsgApplyupReq = 6; + repeated MultiMsgApplyDownReq multimsgApplydownReq = 7; + int32 buType = 8; + int32 reqChannelType = 9; +} +message MultiRspBody { + int32 subcmd = 1; + repeated MultiMsgApplyUpRsp multimsgApplyupRsp = 2; + repeated MultiMsgApplyDownRsp multimsgApplydownRsp = 3; +} diff --git a/cai/pb/highway/longmsg/longmsg_pb2.py b/cai/pb/highway/longmsg/longmsg_pb2.py new file mode 100644 index 00000000..e3f37fc5 --- /dev/null +++ b/cai/pb/highway/longmsg/longmsg_pb2.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: longmsg.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rlongmsg.proto\" \n\tExternMsg\x12\x13\n\x0b\x63hannelType\x18\x01 \x01(\x05\"I\n\x14MultiMsgApplyDownReq\x12\x10\n\x08msgResid\x18\x01 \x01(\x0c\x12\x0f\n\x07msgType\x18\x02 \x01(\x05\x12\x0e\n\x06srcUin\x18\x03 \x01(\x03\"\xe1\x01\n\x14MultiMsgApplyDownRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x15\n\rthumbDownPara\x18\x02 \x01(\x0c\x12\x0e\n\x06msgKey\x18\x03 \x01(\x0c\x12\x14\n\x0cuint32DownIp\x18\x04 \x03(\x05\x12\x16\n\x0euint32DownPort\x18\x05 \x03(\x05\x12\x10\n\x08msgResid\x18\x06 \x01(\x0c\x12!\n\rmsgExternInfo\x18\x07 \x01(\x0b\x32\n.ExternMsg\x12\x15\n\rbytesDownIpV6\x18\x08 \x03(\x0c\x12\x18\n\x10uint32DownV6Port\x18\t \x03(\x05\"g\n\x12MultiMsgApplyUpReq\x12\x0e\n\x06\x64stUin\x18\x01 \x01(\x03\x12\x0f\n\x07msgSize\x18\x02 \x01(\x03\x12\x0e\n\x06msgMd5\x18\x03 \x01(\x0c\x12\x0f\n\x07msgType\x18\x04 \x01(\x05\x12\x0f\n\x07\x61pplyId\x18\x05 \x01(\x05\"\x97\x02\n\x12MultiMsgApplyUpRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x10\n\x08msgResid\x18\x02 \x01(\t\x12\x0f\n\x07msgUkey\x18\x03 \x01(\x0c\x12\x12\n\nuint32UpIp\x18\x04 \x03(\x05\x12\x14\n\x0cuint32UpPort\x18\x05 \x03(\x05\x12\x11\n\tblockSize\x18\x06 \x01(\x03\x12\x10\n\x08upOffset\x18\x07 \x01(\x03\x12\x0f\n\x07\x61pplyId\x18\x08 \x01(\x05\x12\x0e\n\x06msgKey\x18\t \x01(\x0c\x12\x0e\n\x06msgSig\x18\n \x01(\x0c\x12!\n\rmsgExternInfo\x18\x0b \x01(\x0b\x32\n.ExternMsg\x12\x13\n\x0b\x62ytesUpIpV6\x18\x0c \x03(\x0c\x12\x16\n\x0euint32UpV6Port\x18\r \x03(\x05\"\xf7\x01\n\x0cMultiReqBody\x12\x0e\n\x06subcmd\x18\x01 \x01(\x05\x12\x10\n\x08termType\x18\x02 \x01(\x05\x12\x14\n\x0cplatformType\x18\x03 \x01(\x05\x12\x0f\n\x07netType\x18\x04 \x01(\x05\x12\x10\n\x08\x62uildVer\x18\x05 \x01(\t\x12/\n\x12multimsgApplyupReq\x18\x06 \x03(\x0b\x32\x13.MultiMsgApplyUpReq\x12\x33\n\x14multimsgApplydownReq\x18\x07 \x03(\x0b\x32\x15.MultiMsgApplyDownReq\x12\x0e\n\x06\x62uType\x18\x08 \x01(\x05\x12\x16\n\x0ereqChannelType\x18\t \x01(\x05\"\x84\x01\n\x0cMultiRspBody\x12\x0e\n\x06subcmd\x18\x01 \x01(\x05\x12/\n\x12multimsgApplyupRsp\x18\x02 \x03(\x0b\x32\x13.MultiMsgApplyUpRsp\x12\x33\n\x14multimsgApplydownRsp\x18\x03 \x03(\x0b\x32\x15.MultiMsgApplyDownRspB-Z+github.com/Mrs4s/MiraiGo/client/pb/multimsgb\x06proto3') + + + +_EXTERNMSG = DESCRIPTOR.message_types_by_name['ExternMsg'] +_MULTIMSGAPPLYDOWNREQ = DESCRIPTOR.message_types_by_name['MultiMsgApplyDownReq'] +_MULTIMSGAPPLYDOWNRSP = DESCRIPTOR.message_types_by_name['MultiMsgApplyDownRsp'] +_MULTIMSGAPPLYUPREQ = DESCRIPTOR.message_types_by_name['MultiMsgApplyUpReq'] +_MULTIMSGAPPLYUPRSP = DESCRIPTOR.message_types_by_name['MultiMsgApplyUpRsp'] +_MULTIREQBODY = DESCRIPTOR.message_types_by_name['MultiReqBody'] +_MULTIRSPBODY = DESCRIPTOR.message_types_by_name['MultiRspBody'] +ExternMsg = _reflection.GeneratedProtocolMessageType('ExternMsg', (_message.Message,), { + 'DESCRIPTOR' : _EXTERNMSG, + '__module__' : 'longmsg_pb2' + # @@protoc_insertion_point(class_scope:ExternMsg) + }) +_sym_db.RegisterMessage(ExternMsg) + +MultiMsgApplyDownReq = _reflection.GeneratedProtocolMessageType('MultiMsgApplyDownReq', (_message.Message,), { + 'DESCRIPTOR' : _MULTIMSGAPPLYDOWNREQ, + '__module__' : 'longmsg_pb2' + # @@protoc_insertion_point(class_scope:MultiMsgApplyDownReq) + }) +_sym_db.RegisterMessage(MultiMsgApplyDownReq) + +MultiMsgApplyDownRsp = _reflection.GeneratedProtocolMessageType('MultiMsgApplyDownRsp', (_message.Message,), { + 'DESCRIPTOR' : _MULTIMSGAPPLYDOWNRSP, + '__module__' : 'longmsg_pb2' + # @@protoc_insertion_point(class_scope:MultiMsgApplyDownRsp) + }) +_sym_db.RegisterMessage(MultiMsgApplyDownRsp) + +MultiMsgApplyUpReq = _reflection.GeneratedProtocolMessageType('MultiMsgApplyUpReq', (_message.Message,), { + 'DESCRIPTOR' : _MULTIMSGAPPLYUPREQ, + '__module__' : 'longmsg_pb2' + # @@protoc_insertion_point(class_scope:MultiMsgApplyUpReq) + }) +_sym_db.RegisterMessage(MultiMsgApplyUpReq) + +MultiMsgApplyUpRsp = _reflection.GeneratedProtocolMessageType('MultiMsgApplyUpRsp', (_message.Message,), { + 'DESCRIPTOR' : _MULTIMSGAPPLYUPRSP, + '__module__' : 'longmsg_pb2' + # @@protoc_insertion_point(class_scope:MultiMsgApplyUpRsp) + }) +_sym_db.RegisterMessage(MultiMsgApplyUpRsp) + +MultiReqBody = _reflection.GeneratedProtocolMessageType('MultiReqBody', (_message.Message,), { + 'DESCRIPTOR' : _MULTIREQBODY, + '__module__' : 'longmsg_pb2' + # @@protoc_insertion_point(class_scope:MultiReqBody) + }) +_sym_db.RegisterMessage(MultiReqBody) + +MultiRspBody = _reflection.GeneratedProtocolMessageType('MultiRspBody', (_message.Message,), { + 'DESCRIPTOR' : _MULTIRSPBODY, + '__module__' : 'longmsg_pb2' + # @@protoc_insertion_point(class_scope:MultiRspBody) + }) +_sym_db.RegisterMessage(MultiRspBody) + +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'Z+github.com/Mrs4s/MiraiGo/client/pb/multimsg' + _EXTERNMSG._serialized_start=17 + _EXTERNMSG._serialized_end=49 + _MULTIMSGAPPLYDOWNREQ._serialized_start=51 + _MULTIMSGAPPLYDOWNREQ._serialized_end=124 + _MULTIMSGAPPLYDOWNRSP._serialized_start=127 + _MULTIMSGAPPLYDOWNRSP._serialized_end=352 + _MULTIMSGAPPLYUPREQ._serialized_start=354 + _MULTIMSGAPPLYUPREQ._serialized_end=457 + _MULTIMSGAPPLYUPRSP._serialized_start=460 + _MULTIMSGAPPLYUPRSP._serialized_end=739 + _MULTIREQBODY._serialized_start=742 + _MULTIREQBODY._serialized_end=989 + _MULTIRSPBODY._serialized_start=992 + _MULTIRSPBODY._serialized_end=1124 +# @@protoc_insertion_point(module_scope) diff --git a/cai/pb/highway/longmsg/longmsg_pb2.pyi b/cai/pb/highway/longmsg/longmsg_pb2.pyi new file mode 100644 index 00000000..4bdb72de --- /dev/null +++ b/cai/pb/highway/longmsg/longmsg_pb2.pyi @@ -0,0 +1,230 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +from builtins import ( + bool, + bytes, + int, +) + +from google.protobuf.descriptor import ( + Descriptor, + FileDescriptor, +) + +from google.protobuf.internal.containers import ( + RepeatedCompositeFieldContainer, + RepeatedScalarFieldContainer, +) + +from google.protobuf.message import ( + Message, +) + +from typing import ( + Iterable, + Optional, + Text, +) + +from typing_extensions import ( + Literal, +) + + +DESCRIPTOR: FileDescriptor + +class ExternMsg(Message): + DESCRIPTOR: Descriptor + CHANNELTYPE_FIELD_NUMBER: int + channelType: int + def __init__(self, + *, + channelType: int = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["channelType",b"channelType"]) -> None: ... + +class MultiMsgApplyDownReq(Message): + DESCRIPTOR: Descriptor + MSGRESID_FIELD_NUMBER: int + MSGTYPE_FIELD_NUMBER: int + SRCUIN_FIELD_NUMBER: int + msgResid: bytes + msgType: int + srcUin: int + def __init__(self, + *, + msgResid: bytes = ..., + msgType: int = ..., + srcUin: int = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["msgResid",b"msgResid","msgType",b"msgType","srcUin",b"srcUin"]) -> None: ... + +class MultiMsgApplyDownRsp(Message): + DESCRIPTOR: Descriptor + RESULT_FIELD_NUMBER: int + THUMBDOWNPARA_FIELD_NUMBER: int + MSGKEY_FIELD_NUMBER: int + UINT32DOWNIP_FIELD_NUMBER: int + UINT32DOWNPORT_FIELD_NUMBER: int + MSGRESID_FIELD_NUMBER: int + MSGEXTERNINFO_FIELD_NUMBER: int + BYTESDOWNIPV6_FIELD_NUMBER: int + UINT32DOWNV6PORT_FIELD_NUMBER: int + result: int + thumbDownPara: bytes + msgKey: bytes + @property + def uint32DownIp(self) -> RepeatedScalarFieldContainer[int]: ... + @property + def uint32DownPort(self) -> RepeatedScalarFieldContainer[int]: ... + msgResid: bytes + @property + def msgExternInfo(self) -> ExternMsg: ... + @property + def bytesDownIpV6(self) -> RepeatedScalarFieldContainer[bytes]: ... + @property + def uint32DownV6Port(self) -> RepeatedScalarFieldContainer[int]: ... + def __init__(self, + *, + result: int = ..., + thumbDownPara: bytes = ..., + msgKey: bytes = ..., + uint32DownIp: Optional[Iterable[int]] = ..., + uint32DownPort: Optional[Iterable[int]] = ..., + msgResid: bytes = ..., + msgExternInfo: Optional[ExternMsg] = ..., + bytesDownIpV6: Optional[Iterable[bytes]] = ..., + uint32DownV6Port: Optional[Iterable[int]] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["msgExternInfo",b"msgExternInfo"]) -> bool: ... + def ClearField(self, field_name: Literal["bytesDownIpV6",b"bytesDownIpV6","msgExternInfo",b"msgExternInfo","msgKey",b"msgKey","msgResid",b"msgResid","result",b"result","thumbDownPara",b"thumbDownPara","uint32DownIp",b"uint32DownIp","uint32DownPort",b"uint32DownPort","uint32DownV6Port",b"uint32DownV6Port"]) -> None: ... + +class MultiMsgApplyUpReq(Message): + DESCRIPTOR: Descriptor + DSTUIN_FIELD_NUMBER: int + MSGSIZE_FIELD_NUMBER: int + MSGMD5_FIELD_NUMBER: int + MSGTYPE_FIELD_NUMBER: int + APPLYID_FIELD_NUMBER: int + dstUin: int + msgSize: int + msgMd5: bytes + msgType: int + applyId: int + def __init__(self, + *, + dstUin: int = ..., + msgSize: int = ..., + msgMd5: bytes = ..., + msgType: int = ..., + applyId: int = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["applyId",b"applyId","dstUin",b"dstUin","msgMd5",b"msgMd5","msgSize",b"msgSize","msgType",b"msgType"]) -> None: ... + +class MultiMsgApplyUpRsp(Message): + DESCRIPTOR: Descriptor + RESULT_FIELD_NUMBER: int + MSGRESID_FIELD_NUMBER: int + MSGUKEY_FIELD_NUMBER: int + UINT32UPIP_FIELD_NUMBER: int + UINT32UPPORT_FIELD_NUMBER: int + BLOCKSIZE_FIELD_NUMBER: int + UPOFFSET_FIELD_NUMBER: int + APPLYID_FIELD_NUMBER: int + MSGKEY_FIELD_NUMBER: int + MSGSIG_FIELD_NUMBER: int + MSGEXTERNINFO_FIELD_NUMBER: int + BYTESUPIPV6_FIELD_NUMBER: int + UINT32UPV6PORT_FIELD_NUMBER: int + result: int + msgResid: Text + msgUkey: bytes + @property + def uint32UpIp(self) -> RepeatedScalarFieldContainer[int]: ... + @property + def uint32UpPort(self) -> RepeatedScalarFieldContainer[int]: ... + blockSize: int + upOffset: int + applyId: int + msgKey: bytes + msgSig: bytes + @property + def msgExternInfo(self) -> ExternMsg: ... + @property + def bytesUpIpV6(self) -> RepeatedScalarFieldContainer[bytes]: ... + @property + def uint32UpV6Port(self) -> RepeatedScalarFieldContainer[int]: ... + def __init__(self, + *, + result: int = ..., + msgResid: Text = ..., + msgUkey: bytes = ..., + uint32UpIp: Optional[Iterable[int]] = ..., + uint32UpPort: Optional[Iterable[int]] = ..., + blockSize: int = ..., + upOffset: int = ..., + applyId: int = ..., + msgKey: bytes = ..., + msgSig: bytes = ..., + msgExternInfo: Optional[ExternMsg] = ..., + bytesUpIpV6: Optional[Iterable[bytes]] = ..., + uint32UpV6Port: Optional[Iterable[int]] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["msgExternInfo",b"msgExternInfo"]) -> bool: ... + def ClearField(self, field_name: Literal["applyId",b"applyId","blockSize",b"blockSize","bytesUpIpV6",b"bytesUpIpV6","msgExternInfo",b"msgExternInfo","msgKey",b"msgKey","msgResid",b"msgResid","msgSig",b"msgSig","msgUkey",b"msgUkey","result",b"result","uint32UpIp",b"uint32UpIp","uint32UpPort",b"uint32UpPort","uint32UpV6Port",b"uint32UpV6Port","upOffset",b"upOffset"]) -> None: ... + +class MultiReqBody(Message): + DESCRIPTOR: Descriptor + SUBCMD_FIELD_NUMBER: int + TERMTYPE_FIELD_NUMBER: int + PLATFORMTYPE_FIELD_NUMBER: int + NETTYPE_FIELD_NUMBER: int + BUILDVER_FIELD_NUMBER: int + MULTIMSGAPPLYUPREQ_FIELD_NUMBER: int + MULTIMSGAPPLYDOWNREQ_FIELD_NUMBER: int + BUTYPE_FIELD_NUMBER: int + REQCHANNELTYPE_FIELD_NUMBER: int + subcmd: int + termType: int + platformType: int + netType: int + buildVer: Text + @property + def multimsgApplyupReq(self) -> RepeatedCompositeFieldContainer[MultiMsgApplyUpReq]: ... + @property + def multimsgApplydownReq(self) -> RepeatedCompositeFieldContainer[MultiMsgApplyDownReq]: ... + buType: int + reqChannelType: int + def __init__(self, + *, + subcmd: int = ..., + termType: int = ..., + platformType: int = ..., + netType: int = ..., + buildVer: Text = ..., + multimsgApplyupReq: Optional[Iterable[MultiMsgApplyUpReq]] = ..., + multimsgApplydownReq: Optional[Iterable[MultiMsgApplyDownReq]] = ..., + buType: int = ..., + reqChannelType: int = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["buType",b"buType","buildVer",b"buildVer","multimsgApplydownReq",b"multimsgApplydownReq","multimsgApplyupReq",b"multimsgApplyupReq","netType",b"netType","platformType",b"platformType","reqChannelType",b"reqChannelType","subcmd",b"subcmd","termType",b"termType"]) -> None: ... + +class MultiRspBody(Message): + DESCRIPTOR: Descriptor + SUBCMD_FIELD_NUMBER: int + MULTIMSGAPPLYUPRSP_FIELD_NUMBER: int + MULTIMSGAPPLYDOWNRSP_FIELD_NUMBER: int + subcmd: int + @property + def multimsgApplyupRsp(self) -> RepeatedCompositeFieldContainer[MultiMsgApplyUpRsp]: ... + @property + def multimsgApplydownRsp(self) -> RepeatedCompositeFieldContainer[MultiMsgApplyDownRsp]: ... + def __init__(self, + *, + subcmd: int = ..., + multimsgApplyupRsp: Optional[Iterable[MultiMsgApplyUpRsp]] = ..., + multimsgApplydownRsp: Optional[Iterable[MultiMsgApplyDownRsp]] = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["multimsgApplydownRsp",b"multimsgApplydownRsp","multimsgApplyupRsp",b"multimsgApplyupRsp","subcmd",b"subcmd"]) -> None: ... From a98a1445a9d88768e2109134a19eed8ea4f632c7 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 17:43:26 +0800 Subject: [PATCH 018/113] add: Client.send_unipkg_and_wait & optimized code --- cai/api/client.py | 6 +++--- cai/client/message_service/encoders.py | 16 +++++++--------- cai/client/multi_msg/__init__.py | 0 3 files changed, 10 insertions(+), 12 deletions(-) create mode 100644 cai/client/multi_msg/__init__.py diff --git a/cai/api/client.py b/cai/api/client.py index 2ab50a3c..af0f4831 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -52,12 +52,12 @@ def status(self) -> Optional[OnlineStatus]: async def send_group_msg(self, gid: int, msg: Sequence[Element]): seq = self.client.next_seq() # todo: split long msg - return await self.client.send_and_wait( + return await self.client.send_unipkg_and_wait( seq, "MessageSvc.PbSendMsg", make_group_msg_pkg( - seq, gid, self.client, build_msg(msg) - ) + seq, gid, build_msg(msg) + ).SerializeToString() ) async def close(self): diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py index 07c3b4ba..d65efc86 100644 --- a/cai/client/message_service/encoders.py +++ b/cai/client/message_service/encoders.py @@ -7,7 +7,7 @@ from cai.client.packet import UniPacket from . import models - +from ...pb.msf.msg.svc import PbSendMsgReq if TYPE_CHECKING: from cai.client.client import Client @@ -33,21 +33,19 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: def encode_send_group_msg_req( - seq: int, session_id: bytes, uin: int, group: int, body: MsgBody, head: ContentHead, d2key: bytes -): - return UniPacket.build(uin, seq, "MessageSvc.PbSendMsg", session_id, 1, PbSendMsgReq( + seq: int, group: int, body: MsgBody, head: ContentHead +) -> PbSendMsgReq: + return PbSendMsgReq( routing_head=RoutingHead(grp=Grp(group_code=group)), content_head=head, body=body, seq=seq, rand=random.randrange(3000, 30000), via=0 - ).SerializeToString(), d2key) + ) -def make_group_msg_pkg(seq: int, gid: int, client: "Client", body: MsgBody) -> UniPacket: +def make_group_msg_pkg(seq: int, gid: int, body: MsgBody) -> PbSendMsgReq: return encode_send_group_msg_req( - seq, client._session_id, client.uin, - gid, body, ContentHead(pkg_num=1, pkg_index=0, div_seq=0), - client._siginfo.d2key + seq, gid, body, ContentHead(pkg_num=1, pkg_index=0, div_seq=0) ) diff --git a/cai/client/multi_msg/__init__.py b/cai/client/multi_msg/__init__.py new file mode 100644 index 00000000..e69de29b From ff083daeee7d4301198b9bf54d2ecd9f63b8a487 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 17:44:04 +0800 Subject: [PATCH 019/113] add: multi_apply_up_pkg handle --- cai/client/client.py | 13 +++++- cai/client/highway.py | 64 +++++++++++++++++++++++++++ cai/client/multi_msg/long_msg.py | 41 +++++++++++++++++ cai/pb/highway/longmsg/longmsg.proto | 2 +- cai/pb/highway/longmsg/longmsg_pb2.py | 2 +- 5 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 cai/client/highway.py create mode 100644 cai/client/multi_msg/long_msg.py diff --git a/cai/client/client.py b/cai/client/client.py index 5af25328..47590200 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -48,7 +48,8 @@ ) from .event import Event -from .packet import IncomingPacket +from .multi_msg.long_msg import handle_multi_apply_up_resp +from .packet import IncomingPacket, UniPacket from .command import Command, _packet_to_command from .sso_server import SsoServer, get_sso_server from .online_push import handle_c2c_sync, handle_push_msg @@ -132,6 +133,9 @@ "OnlinePush.PbC2CMsgSync": handle_c2c_sync, "OnlinePush.PbPushC2CMsg": handle_push_msg, # "OnlinePush.PbPushBindUinGroupMsg": handle_push_msg, # sub account + + # new + "MultiMsg.ApplyUp": handle_multi_apply_up_resp } @@ -385,6 +389,13 @@ async def send_and_wait( await self.send(seq, command_name, packet) return await self._receive_store.fetch(seq, timeout) + async def send_unipkg_and_wait(self, seq: int, command_name: str, enc_packet: bytes, timeout=10.0): + await self.send_and_wait( + seq, command_name, + UniPacket.build(self.uin, seq, command_name, self._session_id, 1, enc_packet, self._siginfo.d2key), + timeout + ) + async def _handle_incoming_packet(self, in_packet: IncomingPacket) -> None: try: handler = HANDLERS.get(in_packet.command_name, _packet_to_command) diff --git a/cai/client/highway.py b/cai/client/highway.py new file mode 100644 index 00000000..d1bb18ea --- /dev/null +++ b/cai/client/highway.py @@ -0,0 +1,64 @@ +import asyncio +from hashlib import md5 +from typing import Tuple, BinaryIO, TYPE_CHECKING + +from cai.pb.highway.protocol.highway_head_pb2 import highway_head + +if TYPE_CHECKING: + from cai.client.client import Client + +# https://github.com/Mrs4s/MiraiGo/blob/master/client/internal/highway/highway.go#L79 + + +def calc_file_md5(file: BinaryIO, bs=4096) -> str: + try: + fm = md5() + while True: + bl = file.read(bs) + fm.update(bl) + if len(bl) != bs: + break + return fm.hexdigest() + finally: + file.seek(0) + + +def create_highway_header( + cmd: bytes, + flag: int, + cmd_id: int, + client: "Client", + locale=2052 +) -> highway_head.DataHighwayHead: + return highway_head.DataHighwayHead( + version=1, + uin=bytes(str(client.uin)), + command=cmd, + commandId=cmd_id, + seq=client.next_seq(), + appid=client.apk_info.app_id, + localeId=locale, + dataflag=flag + ) + + +async def upload_file(addr: Tuple[str, int], file: BinaryIO, cmd_id: int, client: Client, *, block_size=65535): + fmd5, fl = calc_file_md5(file), len(file.read()) + file.seek(0) + reader, writer = await asyncio.open_connection(*addr) + bc = 0 + while True: + bl = file.read(block_size) + if not bl: + break + highway_head.ReqDataHighwayHead( + basehead=create_highway_header(b"PicUp.DataUp", 4096, cmd_id, client), + seghead=highway_head.SegHead( + filesize=fl, + dataoffset=bc * block_size, + datalength=len(bl), + serviceticket=None, #todo: https://github.com/Mrs4s/MiraiGo/blob/38990f6e1cf9ca0785709d03b66237a713338d0b/client/group_msg.go#L216 + + ) + ) + bc += 1 diff --git a/cai/client/multi_msg/long_msg.py b/cai/client/multi_msg/long_msg.py new file mode 100644 index 00000000..57df3113 --- /dev/null +++ b/cai/client/multi_msg/long_msg.py @@ -0,0 +1,41 @@ +from cai.client import Command +from cai.pb.highway.longmsg.longmsg_pb2 import MultiReqBody, MultiMsgApplyUpReq, MultiMsgApplyUpRsp +from typing import TYPE_CHECKING + +from dataclasses import dataclass + +if TYPE_CHECKING: + from cai.client.packet import IncomingPacket + from cai.client.client import Client + + +def encode_multi_apply_up_pkg(group_id: int, data_len: int, data_md5: bytes, bu_type: int) -> bytes: + return MultiReqBody( + subcmd=1, + termType=5, + platformType=9, + netType=3, + buildVer="8.2.0.1297", # modify + multimsgApplyupReq=[MultiMsgApplyUpReq( + dstUin=group_id, + msgSize=data_len, + msgMd5=data_md5, + msgType=3 + )], + buType=bu_type + ).SerializeToString() + + +@dataclass +class MultiApplyUpResp(Command): + data: MultiMsgApplyUpRsp + + +async def handle_multi_apply_up_resp(client: "Client", pkg: "IncomingPacket", _device): + return MultiApplyUpResp( + uin=pkg.uin, + seq=pkg.seq, + ret_code=pkg.ret_code, + command_name=pkg.command_name, + data=MultiMsgApplyUpRsp.FromString(pkg.data) + ) diff --git a/cai/pb/highway/longmsg/longmsg.proto b/cai/pb/highway/longmsg/longmsg.proto index 6a6de669..b40e4b9f 100644 --- a/cai/pb/highway/longmsg/longmsg.proto +++ b/cai/pb/highway/longmsg/longmsg.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -option go_package = "github.com/Mrs4s/MiraiGo/client/pb/multimsg"; +option go_package = "github.com/Mrs4s/MiraiGo/client/pb/multi_msg"; message ExternMsg { int32 channelType = 1; diff --git a/cai/pb/highway/longmsg/longmsg_pb2.py b/cai/pb/highway/longmsg/longmsg_pb2.py index e3f37fc5..e8b3a316 100644 --- a/cai/pb/highway/longmsg/longmsg_pb2.py +++ b/cai/pb/highway/longmsg/longmsg_pb2.py @@ -77,7 +77,7 @@ if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'Z+github.com/Mrs4s/MiraiGo/client/pb/multimsg' + DESCRIPTOR._serialized_options = b'Z+github.com/Mrs4s/MiraiGo/client/pb/multi_msg' _EXTERNMSG._serialized_start=17 _EXTERNMSG._serialized_end=49 _MULTIMSGAPPLYDOWNREQ._serialized_start=51 From aa06c4ef1c6d0364cb31fec6a24407d3a5dfe3b9 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 18:10:20 +0800 Subject: [PATCH 020/113] add: GroupIdConverter --- cai/utils/gcode.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 cai/utils/gcode.py diff --git a/cai/utils/gcode.py b/cai/utils/gcode.py new file mode 100644 index 00000000..688d9a92 --- /dev/null +++ b/cai/utils/gcode.py @@ -0,0 +1,38 @@ +class GroupIdConvertor: + @staticmethod + def to_group_code(group_id: int) -> int: + left = group_id / 1000000 + if 0 + 202 <= left <= 10 + 202: + left -= 202 + elif 11 + 480 - 11 <= left <= 19 + 480 - 11: + left -= 480 - 11 + elif 20 + 2100 - 20 <= left <= 66 + 2100 - 20: + left -= 2100 - 20 + elif 67 + 2010 - 67 <= left <= 156 + 2010 - 67: + left -= 2010 - 67 + elif 157 + 2147 - 157 <= left <= 209 + 2147 - 157: + left -= 2147 - 157 + elif 210 + 4100 - 210 <= left <= 309 + 4100 - 210: + left -= 4100 - 210 + elif 310 + 3800 - 310 <= left <= 499 + 3800 - 310: + left -= 3800 - 310 + return int(left * 1000000 + group_id % 1000000) + + @staticmethod + def to_group_uin(group_code: int) -> int: + left = group_code / 1000000 + if 0 <= left <= 10: + left += 202 + elif 11 <= left <= 19: + left += 480 - 11 + elif 20 <= left <= 66: + left += 2100 - 20 + elif 67 <= left <= 156: + left += 2010 - 67 + elif 157 <= left <= 209: + left += 2147 - 157 + elif 210 <= left <= 309: + left += 4100 - 210 + elif 310 <= left <= 499: + left += 3800 - 310 + return int(left * 1000000 + group_code % 1000000) From b7b376834d10be8aaa813f8ae03b469de70c4e06 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 20 Mar 2022 18:10:36 +0800 Subject: [PATCH 021/113] fix: some bugs --- cai/client/client.py | 4 ++-- cai/client/multi_msg/long_msg.py | 30 ++++++++++++++++++++++-------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/cai/client/client.py b/cai/client/client.py index 47590200..572beeb1 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -48,7 +48,7 @@ ) from .event import Event -from .multi_msg.long_msg import handle_multi_apply_up_resp +from .multi_msg.long_msg import handle_multi_resp_body from .packet import IncomingPacket, UniPacket from .command import Command, _packet_to_command from .sso_server import SsoServer, get_sso_server @@ -135,7 +135,7 @@ # "OnlinePush.PbPushBindUinGroupMsg": handle_push_msg, # sub account # new - "MultiMsg.ApplyUp": handle_multi_apply_up_resp + "MultiMsg.ApplyUp": handle_multi_resp_body } diff --git a/cai/client/multi_msg/long_msg.py b/cai/client/multi_msg/long_msg.py index 57df3113..67025bfd 100644 --- a/cai/client/multi_msg/long_msg.py +++ b/cai/client/multi_msg/long_msg.py @@ -1,5 +1,5 @@ from cai.client import Command -from cai.pb.highway.longmsg.longmsg_pb2 import MultiReqBody, MultiMsgApplyUpReq, MultiMsgApplyUpRsp +from cai.pb.highway.longmsg.longmsg_pb2 import MultiReqBody, MultiMsgApplyUpReq, MultiMsgApplyUpRsp, MultiRspBody from typing import TYPE_CHECKING from dataclasses import dataclass @@ -9,7 +9,7 @@ from cai.client.client import Client -def encode_multi_apply_up_pkg(group_id: int, data_len: int, data_md5: bytes, bu_type: int) -> bytes: +def _encode_multi_req_body(group_id: int, data_len: int, data_md5: bytes, bu_type: int) -> MultiReqBody: return MultiReqBody( subcmd=1, termType=5, @@ -23,19 +23,33 @@ def encode_multi_apply_up_pkg(group_id: int, data_len: int, data_md5: bytes, bu_ msgType=3 )], buType=bu_type - ).SerializeToString() + ) @dataclass -class MultiApplyUpResp(Command): - data: MultiMsgApplyUpRsp +class MultiApplyResp(Command): + data: MultiRspBody + + +async def build_multi_apply_up_pkg(client: "Client", group_id: int, data_len: int, data_md5: bytes, bu_type: int): + body: MultiApplyResp = await client.send_unipkg_and_wait( + client.next_seq(), + "MultiMsg.ApplyUp", + _encode_multi_req_body( + group_id, data_len, data_md5, bu_type + ).SerializeToString() + ) + + + + -async def handle_multi_apply_up_resp(client: "Client", pkg: "IncomingPacket", _device): - return MultiApplyUpResp( +async def handle_multi_resp_body(client: "Client", pkg: "IncomingPacket", _device) -> MultiApplyResp: + return MultiApplyResp( uin=pkg.uin, seq=pkg.seq, ret_code=pkg.ret_code, command_name=pkg.command_name, - data=MultiMsgApplyUpRsp.FromString(pkg.data) + data=MultiRspBody.FromString(pkg.data) ) From 46c42c50e7115e085d36975eb70c15390b30b941 Mon Sep 17 00:00:00 2001 From: a1025 Date: Mon, 21 Mar 2022 01:19:19 +0800 Subject: [PATCH 022/113] fix: some bugs --- cai/client/client.py | 4 +- cai/client/multi_msg/long_msg.py | 25 ++- .../highway/{longmsg => long_msg}/__init__.py | 0 cai/pb/highway/long_msg/long_msg.proto | 52 +++++ cai/pb/highway/long_msg/long_msg_pb2.py | 105 ++++++++++ cai/pb/highway/long_msg/long_msg_pb2.pyi | 191 ++++++++++++++++++ cai/pb/highway/longmsg/longmsg_pb2.py | 95 --------- cai/pb/highway/multi_msg/__init__.py | 0 .../multi_msg.proto} | 0 cai/pb/highway/multi_msg/multi_msg_pb2.py | 95 +++++++++ .../multi_msg_pb2.pyi} | 0 11 files changed, 465 insertions(+), 102 deletions(-) rename cai/pb/highway/{longmsg => long_msg}/__init__.py (100%) create mode 100644 cai/pb/highway/long_msg/long_msg.proto create mode 100644 cai/pb/highway/long_msg/long_msg_pb2.py create mode 100644 cai/pb/highway/long_msg/long_msg_pb2.pyi delete mode 100644 cai/pb/highway/longmsg/longmsg_pb2.py create mode 100644 cai/pb/highway/multi_msg/__init__.py rename cai/pb/highway/{longmsg/longmsg.proto => multi_msg/multi_msg.proto} (100%) create mode 100644 cai/pb/highway/multi_msg/multi_msg_pb2.py rename cai/pb/highway/{longmsg/longmsg_pb2.pyi => multi_msg/multi_msg_pb2.pyi} (100%) diff --git a/cai/client/client.py b/cai/client/client.py index 572beeb1..2aeeda14 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -48,7 +48,7 @@ ) from .event import Event -from .multi_msg.long_msg import handle_multi_resp_body +from .multi_msg.long_msg import _handle_multi_resp_body from .packet import IncomingPacket, UniPacket from .command import Command, _packet_to_command from .sso_server import SsoServer, get_sso_server @@ -135,7 +135,7 @@ # "OnlinePush.PbPushBindUinGroupMsg": handle_push_msg, # sub account # new - "MultiMsg.ApplyUp": handle_multi_resp_body + "MultiMsg.ApplyUp": _handle_multi_resp_body } diff --git a/cai/client/multi_msg/long_msg.py b/cai/client/multi_msg/long_msg.py index 67025bfd..5fc2fca2 100644 --- a/cai/client/multi_msg/long_msg.py +++ b/cai/client/multi_msg/long_msg.py @@ -1,5 +1,6 @@ from cai.client import Command -from cai.pb.highway.longmsg.longmsg_pb2 import MultiReqBody, MultiMsgApplyUpReq, MultiMsgApplyUpRsp, MultiRspBody +from cai.pb.highway.multi_msg.multi_msg_pb2 import MultiReqBody, MultiMsgApplyUpReq, MultiMsgApplyUpRsp, MultiRspBody +from cai.pb.highway.long_msg.long_msg_pb2 import LongReqBody, LongMsgUpReq from typing import TYPE_CHECKING from dataclasses import dataclass @@ -28,7 +29,7 @@ def _encode_multi_req_body(group_id: int, data_len: int, data_md5: bytes, bu_typ @dataclass class MultiApplyResp(Command): - data: MultiRspBody + data: MultiMsgApplyUpRsp async def build_multi_apply_up_pkg(client: "Client", group_id: int, data_len: int, data_md5: bytes, bu_type: int): @@ -39,17 +40,31 @@ async def build_multi_apply_up_pkg(client: "Client", group_id: int, data_len: in group_id, data_len, data_md5, bu_type ).SerializeToString() ) - + LongReqBody( + subcmd=1, + termType=5, + platformType=9, + msgUpReq=[LongMsgUpReq( + msgType=3, + dstUin=client.uin, + msgContent=bytes(), # todo: + storeType=2, + msgUkey=body.data.msgUkey + )] + ) -async def handle_multi_resp_body(client: "Client", pkg: "IncomingPacket", _device) -> MultiApplyResp: +async def _handle_multi_resp_body(client: "Client", pkg: "IncomingPacket", _device) -> MultiApplyResp: + mrb = MultiRspBody.FromString(pkg.data).multimsgApplyupRsp + if not mrb: + raise ConnectionError("no MultiMsgApplyUpRsp Found") return MultiApplyResp( uin=pkg.uin, seq=pkg.seq, ret_code=pkg.ret_code, command_name=pkg.command_name, - data=MultiRspBody.FromString(pkg.data) + data=mrb[0] ) diff --git a/cai/pb/highway/longmsg/__init__.py b/cai/pb/highway/long_msg/__init__.py similarity index 100% rename from cai/pb/highway/longmsg/__init__.py rename to cai/pb/highway/long_msg/__init__.py diff --git a/cai/pb/highway/long_msg/long_msg.proto b/cai/pb/highway/long_msg/long_msg.proto new file mode 100644 index 00000000..ade6631a --- /dev/null +++ b/cai/pb/highway/long_msg/long_msg.proto @@ -0,0 +1,52 @@ +syntax = "proto3"; + +option go_package = "github.com/Mrs4s/MiraiGo/client/pb/longmsg"; + +message LongMsgDeleteReq { + bytes msgResid = 1; + int32 msgType = 2; +} +message LongMsgDeleteRsp { + int32 result = 1; + bytes msgResid = 2; +} +message LongMsgDownReq { + int32 srcUin = 1; + bytes msgResid = 2; + int32 msgType = 3; + int32 needCache = 4; +} +message LongMsgDownRsp { + int32 result = 1; + bytes msgResid = 2; + bytes msgContent = 3; +} +message LongMsgUpReq { + int32 msgType = 1; + int64 dstUin = 2; + int32 msgId = 3; + bytes msgContent = 4; + int32 storeType = 5; + bytes msgUkey = 6; + int32 needCache = 7; +} +message LongMsgUpRsp { + int32 result = 1; + int32 msgId = 2; + bytes msgResid = 3; +} +message LongReqBody { + int32 subcmd = 1; + int32 termType = 2; + int32 platformType = 3; + repeated LongMsgUpReq msgUpReq = 4; + repeated LongMsgDownReq msgDownReq = 5; + repeated LongMsgDeleteReq msgDelReq = 6; + int32 agentType = 10; +} +message LongRspBody { + int32 subcmd = 1; + repeated LongMsgUpRsp msgUpRsp = 2; + repeated LongMsgDownRsp msgDownRsp = 3; + repeated LongMsgDeleteRsp msgDelRsp = 4; +} diff --git a/cai/pb/highway/long_msg/long_msg_pb2.py b/cai/pb/highway/long_msg/long_msg_pb2.py new file mode 100644 index 00000000..aac6da9d --- /dev/null +++ b/cai/pb/highway/long_msg/long_msg_pb2.py @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: long_msg.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0elong_msg.proto\"5\n\x10LongMsgDeleteReq\x12\x10\n\x08msgResid\x18\x01 \x01(\x0c\x12\x0f\n\x07msgType\x18\x02 \x01(\x05\"4\n\x10LongMsgDeleteRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x10\n\x08msgResid\x18\x02 \x01(\x0c\"V\n\x0eLongMsgDownReq\x12\x0e\n\x06srcUin\x18\x01 \x01(\x05\x12\x10\n\x08msgResid\x18\x02 \x01(\x0c\x12\x0f\n\x07msgType\x18\x03 \x01(\x05\x12\x11\n\tneedCache\x18\x04 \x01(\x05\"F\n\x0eLongMsgDownRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x10\n\x08msgResid\x18\x02 \x01(\x0c\x12\x12\n\nmsgContent\x18\x03 \x01(\x0c\"\x89\x01\n\x0cLongMsgUpReq\x12\x0f\n\x07msgType\x18\x01 \x01(\x05\x12\x0e\n\x06\x64stUin\x18\x02 \x01(\x03\x12\r\n\x05msgId\x18\x03 \x01(\x05\x12\x12\n\nmsgContent\x18\x04 \x01(\x0c\x12\x11\n\tstoreType\x18\x05 \x01(\x05\x12\x0f\n\x07msgUkey\x18\x06 \x01(\x0c\x12\x11\n\tneedCache\x18\x07 \x01(\x05\"?\n\x0cLongMsgUpRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\r\n\x05msgId\x18\x02 \x01(\x05\x12\x10\n\x08msgResid\x18\x03 \x01(\x0c\"\xc4\x01\n\x0bLongReqBody\x12\x0e\n\x06subcmd\x18\x01 \x01(\x05\x12\x10\n\x08termType\x18\x02 \x01(\x05\x12\x14\n\x0cplatformType\x18\x03 \x01(\x05\x12\x1f\n\x08msgUpReq\x18\x04 \x03(\x0b\x32\r.LongMsgUpReq\x12#\n\nmsgDownReq\x18\x05 \x03(\x0b\x32\x0f.LongMsgDownReq\x12$\n\tmsgDelReq\x18\x06 \x03(\x0b\x32\x11.LongMsgDeleteReq\x12\x11\n\tagentType\x18\n \x01(\x05\"\x89\x01\n\x0bLongRspBody\x12\x0e\n\x06subcmd\x18\x01 \x01(\x05\x12\x1f\n\x08msgUpRsp\x18\x02 \x03(\x0b\x32\r.LongMsgUpRsp\x12#\n\nmsgDownRsp\x18\x03 \x03(\x0b\x32\x0f.LongMsgDownRsp\x12$\n\tmsgDelRsp\x18\x04 \x03(\x0b\x32\x11.LongMsgDeleteRspB,Z*github.com/Mrs4s/MiraiGo/client/pb/longmsgb\x06proto3') + + + +_LONGMSGDELETEREQ = DESCRIPTOR.message_types_by_name['LongMsgDeleteReq'] +_LONGMSGDELETERSP = DESCRIPTOR.message_types_by_name['LongMsgDeleteRsp'] +_LONGMSGDOWNREQ = DESCRIPTOR.message_types_by_name['LongMsgDownReq'] +_LONGMSGDOWNRSP = DESCRIPTOR.message_types_by_name['LongMsgDownRsp'] +_LONGMSGUPREQ = DESCRIPTOR.message_types_by_name['LongMsgUpReq'] +_LONGMSGUPRSP = DESCRIPTOR.message_types_by_name['LongMsgUpRsp'] +_LONGREQBODY = DESCRIPTOR.message_types_by_name['LongReqBody'] +_LONGRSPBODY = DESCRIPTOR.message_types_by_name['LongRspBody'] +LongMsgDeleteReq = _reflection.GeneratedProtocolMessageType('LongMsgDeleteReq', (_message.Message,), { + 'DESCRIPTOR' : _LONGMSGDELETEREQ, + '__module__' : 'long_msg_pb2' + # @@protoc_insertion_point(class_scope:LongMsgDeleteReq) + }) +_sym_db.RegisterMessage(LongMsgDeleteReq) + +LongMsgDeleteRsp = _reflection.GeneratedProtocolMessageType('LongMsgDeleteRsp', (_message.Message,), { + 'DESCRIPTOR' : _LONGMSGDELETERSP, + '__module__' : 'long_msg_pb2' + # @@protoc_insertion_point(class_scope:LongMsgDeleteRsp) + }) +_sym_db.RegisterMessage(LongMsgDeleteRsp) + +LongMsgDownReq = _reflection.GeneratedProtocolMessageType('LongMsgDownReq', (_message.Message,), { + 'DESCRIPTOR' : _LONGMSGDOWNREQ, + '__module__' : 'long_msg_pb2' + # @@protoc_insertion_point(class_scope:LongMsgDownReq) + }) +_sym_db.RegisterMessage(LongMsgDownReq) + +LongMsgDownRsp = _reflection.GeneratedProtocolMessageType('LongMsgDownRsp', (_message.Message,), { + 'DESCRIPTOR' : _LONGMSGDOWNRSP, + '__module__' : 'long_msg_pb2' + # @@protoc_insertion_point(class_scope:LongMsgDownRsp) + }) +_sym_db.RegisterMessage(LongMsgDownRsp) + +LongMsgUpReq = _reflection.GeneratedProtocolMessageType('LongMsgUpReq', (_message.Message,), { + 'DESCRIPTOR' : _LONGMSGUPREQ, + '__module__' : 'long_msg_pb2' + # @@protoc_insertion_point(class_scope:LongMsgUpReq) + }) +_sym_db.RegisterMessage(LongMsgUpReq) + +LongMsgUpRsp = _reflection.GeneratedProtocolMessageType('LongMsgUpRsp', (_message.Message,), { + 'DESCRIPTOR' : _LONGMSGUPRSP, + '__module__' : 'long_msg_pb2' + # @@protoc_insertion_point(class_scope:LongMsgUpRsp) + }) +_sym_db.RegisterMessage(LongMsgUpRsp) + +LongReqBody = _reflection.GeneratedProtocolMessageType('LongReqBody', (_message.Message,), { + 'DESCRIPTOR' : _LONGREQBODY, + '__module__' : 'long_msg_pb2' + # @@protoc_insertion_point(class_scope:LongReqBody) + }) +_sym_db.RegisterMessage(LongReqBody) + +LongRspBody = _reflection.GeneratedProtocolMessageType('LongRspBody', (_message.Message,), { + 'DESCRIPTOR' : _LONGRSPBODY, + '__module__' : 'long_msg_pb2' + # @@protoc_insertion_point(class_scope:LongRspBody) + }) +_sym_db.RegisterMessage(LongRspBody) + +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'Z*github.com/Mrs4s/MiraiGo/client/pb/longmsg' + _LONGMSGDELETEREQ._serialized_start=18 + _LONGMSGDELETEREQ._serialized_end=71 + _LONGMSGDELETERSP._serialized_start=73 + _LONGMSGDELETERSP._serialized_end=125 + _LONGMSGDOWNREQ._serialized_start=127 + _LONGMSGDOWNREQ._serialized_end=213 + _LONGMSGDOWNRSP._serialized_start=215 + _LONGMSGDOWNRSP._serialized_end=285 + _LONGMSGUPREQ._serialized_start=288 + _LONGMSGUPREQ._serialized_end=425 + _LONGMSGUPRSP._serialized_start=427 + _LONGMSGUPRSP._serialized_end=490 + _LONGREQBODY._serialized_start=493 + _LONGREQBODY._serialized_end=689 + _LONGRSPBODY._serialized_start=692 + _LONGRSPBODY._serialized_end=829 +# @@protoc_insertion_point(module_scope) diff --git a/cai/pb/highway/long_msg/long_msg_pb2.pyi b/cai/pb/highway/long_msg/long_msg_pb2.pyi new file mode 100644 index 00000000..8346339e --- /dev/null +++ b/cai/pb/highway/long_msg/long_msg_pb2.pyi @@ -0,0 +1,191 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +from builtins import ( + bytes, + int, +) + +from google.protobuf.descriptor import ( + Descriptor, + FileDescriptor, +) + +from google.protobuf.internal.containers import ( + RepeatedCompositeFieldContainer, +) + +from google.protobuf.message import ( + Message, +) + +from typing import ( + Iterable, + Optional, +) + +from typing_extensions import ( + Literal, +) + + +DESCRIPTOR: FileDescriptor + +class LongMsgDeleteReq(Message): + DESCRIPTOR: Descriptor + MSGRESID_FIELD_NUMBER: int + MSGTYPE_FIELD_NUMBER: int + msgResid: bytes + msgType: int + def __init__(self, + *, + msgResid: bytes = ..., + msgType: int = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["msgResid",b"msgResid","msgType",b"msgType"]) -> None: ... + +class LongMsgDeleteRsp(Message): + DESCRIPTOR: Descriptor + RESULT_FIELD_NUMBER: int + MSGRESID_FIELD_NUMBER: int + result: int + msgResid: bytes + def __init__(self, + *, + result: int = ..., + msgResid: bytes = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["msgResid",b"msgResid","result",b"result"]) -> None: ... + +class LongMsgDownReq(Message): + DESCRIPTOR: Descriptor + SRCUIN_FIELD_NUMBER: int + MSGRESID_FIELD_NUMBER: int + MSGTYPE_FIELD_NUMBER: int + NEEDCACHE_FIELD_NUMBER: int + srcUin: int + msgResid: bytes + msgType: int + needCache: int + def __init__(self, + *, + srcUin: int = ..., + msgResid: bytes = ..., + msgType: int = ..., + needCache: int = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["msgResid",b"msgResid","msgType",b"msgType","needCache",b"needCache","srcUin",b"srcUin"]) -> None: ... + +class LongMsgDownRsp(Message): + DESCRIPTOR: Descriptor + RESULT_FIELD_NUMBER: int + MSGRESID_FIELD_NUMBER: int + MSGCONTENT_FIELD_NUMBER: int + result: int + msgResid: bytes + msgContent: bytes + def __init__(self, + *, + result: int = ..., + msgResid: bytes = ..., + msgContent: bytes = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["msgContent",b"msgContent","msgResid",b"msgResid","result",b"result"]) -> None: ... + +class LongMsgUpReq(Message): + DESCRIPTOR: Descriptor + MSGTYPE_FIELD_NUMBER: int + DSTUIN_FIELD_NUMBER: int + MSGID_FIELD_NUMBER: int + MSGCONTENT_FIELD_NUMBER: int + STORETYPE_FIELD_NUMBER: int + MSGUKEY_FIELD_NUMBER: int + NEEDCACHE_FIELD_NUMBER: int + msgType: int + dstUin: int + msgId: int + msgContent: bytes + storeType: int + msgUkey: bytes + needCache: int + def __init__(self, + *, + msgType: int = ..., + dstUin: int = ..., + msgId: int = ..., + msgContent: bytes = ..., + storeType: int = ..., + msgUkey: bytes = ..., + needCache: int = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["dstUin",b"dstUin","msgContent",b"msgContent","msgId",b"msgId","msgType",b"msgType","msgUkey",b"msgUkey","needCache",b"needCache","storeType",b"storeType"]) -> None: ... + +class LongMsgUpRsp(Message): + DESCRIPTOR: Descriptor + RESULT_FIELD_NUMBER: int + MSGID_FIELD_NUMBER: int + MSGRESID_FIELD_NUMBER: int + result: int + msgId: int + msgResid: bytes + def __init__(self, + *, + result: int = ..., + msgId: int = ..., + msgResid: bytes = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["msgId",b"msgId","msgResid",b"msgResid","result",b"result"]) -> None: ... + +class LongReqBody(Message): + DESCRIPTOR: Descriptor + SUBCMD_FIELD_NUMBER: int + TERMTYPE_FIELD_NUMBER: int + PLATFORMTYPE_FIELD_NUMBER: int + MSGUPREQ_FIELD_NUMBER: int + MSGDOWNREQ_FIELD_NUMBER: int + MSGDELREQ_FIELD_NUMBER: int + AGENTTYPE_FIELD_NUMBER: int + subcmd: int + termType: int + platformType: int + @property + def msgUpReq(self) -> RepeatedCompositeFieldContainer[LongMsgUpReq]: ... + @property + def msgDownReq(self) -> RepeatedCompositeFieldContainer[LongMsgDownReq]: ... + @property + def msgDelReq(self) -> RepeatedCompositeFieldContainer[LongMsgDeleteReq]: ... + agentType: int + def __init__(self, + *, + subcmd: int = ..., + termType: int = ..., + platformType: int = ..., + msgUpReq: Optional[Iterable[LongMsgUpReq]] = ..., + msgDownReq: Optional[Iterable[LongMsgDownReq]] = ..., + msgDelReq: Optional[Iterable[LongMsgDeleteReq]] = ..., + agentType: int = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["agentType",b"agentType","msgDelReq",b"msgDelReq","msgDownReq",b"msgDownReq","msgUpReq",b"msgUpReq","platformType",b"platformType","subcmd",b"subcmd","termType",b"termType"]) -> None: ... + +class LongRspBody(Message): + DESCRIPTOR: Descriptor + SUBCMD_FIELD_NUMBER: int + MSGUPRSP_FIELD_NUMBER: int + MSGDOWNRSP_FIELD_NUMBER: int + MSGDELRSP_FIELD_NUMBER: int + subcmd: int + @property + def msgUpRsp(self) -> RepeatedCompositeFieldContainer[LongMsgUpRsp]: ... + @property + def msgDownRsp(self) -> RepeatedCompositeFieldContainer[LongMsgDownRsp]: ... + @property + def msgDelRsp(self) -> RepeatedCompositeFieldContainer[LongMsgDeleteRsp]: ... + def __init__(self, + *, + subcmd: int = ..., + msgUpRsp: Optional[Iterable[LongMsgUpRsp]] = ..., + msgDownRsp: Optional[Iterable[LongMsgDownRsp]] = ..., + msgDelRsp: Optional[Iterable[LongMsgDeleteRsp]] = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["msgDelRsp",b"msgDelRsp","msgDownRsp",b"msgDownRsp","msgUpRsp",b"msgUpRsp","subcmd",b"subcmd"]) -> None: ... diff --git a/cai/pb/highway/longmsg/longmsg_pb2.py b/cai/pb/highway/longmsg/longmsg_pb2.py deleted file mode 100644 index e8b3a316..00000000 --- a/cai/pb/highway/longmsg/longmsg_pb2.py +++ /dev/null @@ -1,95 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: longmsg.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rlongmsg.proto\" \n\tExternMsg\x12\x13\n\x0b\x63hannelType\x18\x01 \x01(\x05\"I\n\x14MultiMsgApplyDownReq\x12\x10\n\x08msgResid\x18\x01 \x01(\x0c\x12\x0f\n\x07msgType\x18\x02 \x01(\x05\x12\x0e\n\x06srcUin\x18\x03 \x01(\x03\"\xe1\x01\n\x14MultiMsgApplyDownRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x15\n\rthumbDownPara\x18\x02 \x01(\x0c\x12\x0e\n\x06msgKey\x18\x03 \x01(\x0c\x12\x14\n\x0cuint32DownIp\x18\x04 \x03(\x05\x12\x16\n\x0euint32DownPort\x18\x05 \x03(\x05\x12\x10\n\x08msgResid\x18\x06 \x01(\x0c\x12!\n\rmsgExternInfo\x18\x07 \x01(\x0b\x32\n.ExternMsg\x12\x15\n\rbytesDownIpV6\x18\x08 \x03(\x0c\x12\x18\n\x10uint32DownV6Port\x18\t \x03(\x05\"g\n\x12MultiMsgApplyUpReq\x12\x0e\n\x06\x64stUin\x18\x01 \x01(\x03\x12\x0f\n\x07msgSize\x18\x02 \x01(\x03\x12\x0e\n\x06msgMd5\x18\x03 \x01(\x0c\x12\x0f\n\x07msgType\x18\x04 \x01(\x05\x12\x0f\n\x07\x61pplyId\x18\x05 \x01(\x05\"\x97\x02\n\x12MultiMsgApplyUpRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x10\n\x08msgResid\x18\x02 \x01(\t\x12\x0f\n\x07msgUkey\x18\x03 \x01(\x0c\x12\x12\n\nuint32UpIp\x18\x04 \x03(\x05\x12\x14\n\x0cuint32UpPort\x18\x05 \x03(\x05\x12\x11\n\tblockSize\x18\x06 \x01(\x03\x12\x10\n\x08upOffset\x18\x07 \x01(\x03\x12\x0f\n\x07\x61pplyId\x18\x08 \x01(\x05\x12\x0e\n\x06msgKey\x18\t \x01(\x0c\x12\x0e\n\x06msgSig\x18\n \x01(\x0c\x12!\n\rmsgExternInfo\x18\x0b \x01(\x0b\x32\n.ExternMsg\x12\x13\n\x0b\x62ytesUpIpV6\x18\x0c \x03(\x0c\x12\x16\n\x0euint32UpV6Port\x18\r \x03(\x05\"\xf7\x01\n\x0cMultiReqBody\x12\x0e\n\x06subcmd\x18\x01 \x01(\x05\x12\x10\n\x08termType\x18\x02 \x01(\x05\x12\x14\n\x0cplatformType\x18\x03 \x01(\x05\x12\x0f\n\x07netType\x18\x04 \x01(\x05\x12\x10\n\x08\x62uildVer\x18\x05 \x01(\t\x12/\n\x12multimsgApplyupReq\x18\x06 \x03(\x0b\x32\x13.MultiMsgApplyUpReq\x12\x33\n\x14multimsgApplydownReq\x18\x07 \x03(\x0b\x32\x15.MultiMsgApplyDownReq\x12\x0e\n\x06\x62uType\x18\x08 \x01(\x05\x12\x16\n\x0ereqChannelType\x18\t \x01(\x05\"\x84\x01\n\x0cMultiRspBody\x12\x0e\n\x06subcmd\x18\x01 \x01(\x05\x12/\n\x12multimsgApplyupRsp\x18\x02 \x03(\x0b\x32\x13.MultiMsgApplyUpRsp\x12\x33\n\x14multimsgApplydownRsp\x18\x03 \x03(\x0b\x32\x15.MultiMsgApplyDownRspB-Z+github.com/Mrs4s/MiraiGo/client/pb/multimsgb\x06proto3') - - - -_EXTERNMSG = DESCRIPTOR.message_types_by_name['ExternMsg'] -_MULTIMSGAPPLYDOWNREQ = DESCRIPTOR.message_types_by_name['MultiMsgApplyDownReq'] -_MULTIMSGAPPLYDOWNRSP = DESCRIPTOR.message_types_by_name['MultiMsgApplyDownRsp'] -_MULTIMSGAPPLYUPREQ = DESCRIPTOR.message_types_by_name['MultiMsgApplyUpReq'] -_MULTIMSGAPPLYUPRSP = DESCRIPTOR.message_types_by_name['MultiMsgApplyUpRsp'] -_MULTIREQBODY = DESCRIPTOR.message_types_by_name['MultiReqBody'] -_MULTIRSPBODY = DESCRIPTOR.message_types_by_name['MultiRspBody'] -ExternMsg = _reflection.GeneratedProtocolMessageType('ExternMsg', (_message.Message,), { - 'DESCRIPTOR' : _EXTERNMSG, - '__module__' : 'longmsg_pb2' - # @@protoc_insertion_point(class_scope:ExternMsg) - }) -_sym_db.RegisterMessage(ExternMsg) - -MultiMsgApplyDownReq = _reflection.GeneratedProtocolMessageType('MultiMsgApplyDownReq', (_message.Message,), { - 'DESCRIPTOR' : _MULTIMSGAPPLYDOWNREQ, - '__module__' : 'longmsg_pb2' - # @@protoc_insertion_point(class_scope:MultiMsgApplyDownReq) - }) -_sym_db.RegisterMessage(MultiMsgApplyDownReq) - -MultiMsgApplyDownRsp = _reflection.GeneratedProtocolMessageType('MultiMsgApplyDownRsp', (_message.Message,), { - 'DESCRIPTOR' : _MULTIMSGAPPLYDOWNRSP, - '__module__' : 'longmsg_pb2' - # @@protoc_insertion_point(class_scope:MultiMsgApplyDownRsp) - }) -_sym_db.RegisterMessage(MultiMsgApplyDownRsp) - -MultiMsgApplyUpReq = _reflection.GeneratedProtocolMessageType('MultiMsgApplyUpReq', (_message.Message,), { - 'DESCRIPTOR' : _MULTIMSGAPPLYUPREQ, - '__module__' : 'longmsg_pb2' - # @@protoc_insertion_point(class_scope:MultiMsgApplyUpReq) - }) -_sym_db.RegisterMessage(MultiMsgApplyUpReq) - -MultiMsgApplyUpRsp = _reflection.GeneratedProtocolMessageType('MultiMsgApplyUpRsp', (_message.Message,), { - 'DESCRIPTOR' : _MULTIMSGAPPLYUPRSP, - '__module__' : 'longmsg_pb2' - # @@protoc_insertion_point(class_scope:MultiMsgApplyUpRsp) - }) -_sym_db.RegisterMessage(MultiMsgApplyUpRsp) - -MultiReqBody = _reflection.GeneratedProtocolMessageType('MultiReqBody', (_message.Message,), { - 'DESCRIPTOR' : _MULTIREQBODY, - '__module__' : 'longmsg_pb2' - # @@protoc_insertion_point(class_scope:MultiReqBody) - }) -_sym_db.RegisterMessage(MultiReqBody) - -MultiRspBody = _reflection.GeneratedProtocolMessageType('MultiRspBody', (_message.Message,), { - 'DESCRIPTOR' : _MULTIRSPBODY, - '__module__' : 'longmsg_pb2' - # @@protoc_insertion_point(class_scope:MultiRspBody) - }) -_sym_db.RegisterMessage(MultiRspBody) - -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'Z+github.com/Mrs4s/MiraiGo/client/pb/multi_msg' - _EXTERNMSG._serialized_start=17 - _EXTERNMSG._serialized_end=49 - _MULTIMSGAPPLYDOWNREQ._serialized_start=51 - _MULTIMSGAPPLYDOWNREQ._serialized_end=124 - _MULTIMSGAPPLYDOWNRSP._serialized_start=127 - _MULTIMSGAPPLYDOWNRSP._serialized_end=352 - _MULTIMSGAPPLYUPREQ._serialized_start=354 - _MULTIMSGAPPLYUPREQ._serialized_end=457 - _MULTIMSGAPPLYUPRSP._serialized_start=460 - _MULTIMSGAPPLYUPRSP._serialized_end=739 - _MULTIREQBODY._serialized_start=742 - _MULTIREQBODY._serialized_end=989 - _MULTIRSPBODY._serialized_start=992 - _MULTIRSPBODY._serialized_end=1124 -# @@protoc_insertion_point(module_scope) diff --git a/cai/pb/highway/multi_msg/__init__.py b/cai/pb/highway/multi_msg/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cai/pb/highway/longmsg/longmsg.proto b/cai/pb/highway/multi_msg/multi_msg.proto similarity index 100% rename from cai/pb/highway/longmsg/longmsg.proto rename to cai/pb/highway/multi_msg/multi_msg.proto diff --git a/cai/pb/highway/multi_msg/multi_msg_pb2.py b/cai/pb/highway/multi_msg/multi_msg_pb2.py new file mode 100644 index 00000000..73455d32 --- /dev/null +++ b/cai/pb/highway/multi_msg/multi_msg_pb2.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: multi_msg.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0fmulti_msg.proto\" \n\tExternMsg\x12\x13\n\x0b\x63hannelType\x18\x01 \x01(\x05\"I\n\x14MultiMsgApplyDownReq\x12\x10\n\x08msgResid\x18\x01 \x01(\x0c\x12\x0f\n\x07msgType\x18\x02 \x01(\x05\x12\x0e\n\x06srcUin\x18\x03 \x01(\x03\"\xe1\x01\n\x14MultiMsgApplyDownRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x15\n\rthumbDownPara\x18\x02 \x01(\x0c\x12\x0e\n\x06msgKey\x18\x03 \x01(\x0c\x12\x14\n\x0cuint32DownIp\x18\x04 \x03(\x05\x12\x16\n\x0euint32DownPort\x18\x05 \x03(\x05\x12\x10\n\x08msgResid\x18\x06 \x01(\x0c\x12!\n\rmsgExternInfo\x18\x07 \x01(\x0b\x32\n.ExternMsg\x12\x15\n\rbytesDownIpV6\x18\x08 \x03(\x0c\x12\x18\n\x10uint32DownV6Port\x18\t \x03(\x05\"g\n\x12MultiMsgApplyUpReq\x12\x0e\n\x06\x64stUin\x18\x01 \x01(\x03\x12\x0f\n\x07msgSize\x18\x02 \x01(\x03\x12\x0e\n\x06msgMd5\x18\x03 \x01(\x0c\x12\x0f\n\x07msgType\x18\x04 \x01(\x05\x12\x0f\n\x07\x61pplyId\x18\x05 \x01(\x05\"\x97\x02\n\x12MultiMsgApplyUpRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x10\n\x08msgResid\x18\x02 \x01(\t\x12\x0f\n\x07msgUkey\x18\x03 \x01(\x0c\x12\x12\n\nuint32UpIp\x18\x04 \x03(\x05\x12\x14\n\x0cuint32UpPort\x18\x05 \x03(\x05\x12\x11\n\tblockSize\x18\x06 \x01(\x03\x12\x10\n\x08upOffset\x18\x07 \x01(\x03\x12\x0f\n\x07\x61pplyId\x18\x08 \x01(\x05\x12\x0e\n\x06msgKey\x18\t \x01(\x0c\x12\x0e\n\x06msgSig\x18\n \x01(\x0c\x12!\n\rmsgExternInfo\x18\x0b \x01(\x0b\x32\n.ExternMsg\x12\x13\n\x0b\x62ytesUpIpV6\x18\x0c \x03(\x0c\x12\x16\n\x0euint32UpV6Port\x18\r \x03(\x05\"\xf7\x01\n\x0cMultiReqBody\x12\x0e\n\x06subcmd\x18\x01 \x01(\x05\x12\x10\n\x08termType\x18\x02 \x01(\x05\x12\x14\n\x0cplatformType\x18\x03 \x01(\x05\x12\x0f\n\x07netType\x18\x04 \x01(\x05\x12\x10\n\x08\x62uildVer\x18\x05 \x01(\t\x12/\n\x12multimsgApplyupReq\x18\x06 \x03(\x0b\x32\x13.MultiMsgApplyUpReq\x12\x33\n\x14multimsgApplydownReq\x18\x07 \x03(\x0b\x32\x15.MultiMsgApplyDownReq\x12\x0e\n\x06\x62uType\x18\x08 \x01(\x05\x12\x16\n\x0ereqChannelType\x18\t \x01(\x05\"\x84\x01\n\x0cMultiRspBody\x12\x0e\n\x06subcmd\x18\x01 \x01(\x05\x12/\n\x12multimsgApplyupRsp\x18\x02 \x03(\x0b\x32\x13.MultiMsgApplyUpRsp\x12\x33\n\x14multimsgApplydownRsp\x18\x03 \x03(\x0b\x32\x15.MultiMsgApplyDownRspB.Z,github.com/Mrs4s/MiraiGo/client/pb/multi_msgb\x06proto3') + + + +_EXTERNMSG = DESCRIPTOR.message_types_by_name['ExternMsg'] +_MULTIMSGAPPLYDOWNREQ = DESCRIPTOR.message_types_by_name['MultiMsgApplyDownReq'] +_MULTIMSGAPPLYDOWNRSP = DESCRIPTOR.message_types_by_name['MultiMsgApplyDownRsp'] +_MULTIMSGAPPLYUPREQ = DESCRIPTOR.message_types_by_name['MultiMsgApplyUpReq'] +_MULTIMSGAPPLYUPRSP = DESCRIPTOR.message_types_by_name['MultiMsgApplyUpRsp'] +_MULTIREQBODY = DESCRIPTOR.message_types_by_name['MultiReqBody'] +_MULTIRSPBODY = DESCRIPTOR.message_types_by_name['MultiRspBody'] +ExternMsg = _reflection.GeneratedProtocolMessageType('ExternMsg', (_message.Message,), { + 'DESCRIPTOR' : _EXTERNMSG, + '__module__' : 'multi_msg_pb2' + # @@protoc_insertion_point(class_scope:ExternMsg) + }) +_sym_db.RegisterMessage(ExternMsg) + +MultiMsgApplyDownReq = _reflection.GeneratedProtocolMessageType('MultiMsgApplyDownReq', (_message.Message,), { + 'DESCRIPTOR' : _MULTIMSGAPPLYDOWNREQ, + '__module__' : 'multi_msg_pb2' + # @@protoc_insertion_point(class_scope:MultiMsgApplyDownReq) + }) +_sym_db.RegisterMessage(MultiMsgApplyDownReq) + +MultiMsgApplyDownRsp = _reflection.GeneratedProtocolMessageType('MultiMsgApplyDownRsp', (_message.Message,), { + 'DESCRIPTOR' : _MULTIMSGAPPLYDOWNRSP, + '__module__' : 'multi_msg_pb2' + # @@protoc_insertion_point(class_scope:MultiMsgApplyDownRsp) + }) +_sym_db.RegisterMessage(MultiMsgApplyDownRsp) + +MultiMsgApplyUpReq = _reflection.GeneratedProtocolMessageType('MultiMsgApplyUpReq', (_message.Message,), { + 'DESCRIPTOR' : _MULTIMSGAPPLYUPREQ, + '__module__' : 'multi_msg_pb2' + # @@protoc_insertion_point(class_scope:MultiMsgApplyUpReq) + }) +_sym_db.RegisterMessage(MultiMsgApplyUpReq) + +MultiMsgApplyUpRsp = _reflection.GeneratedProtocolMessageType('MultiMsgApplyUpRsp', (_message.Message,), { + 'DESCRIPTOR' : _MULTIMSGAPPLYUPRSP, + '__module__' : 'multi_msg_pb2' + # @@protoc_insertion_point(class_scope:MultiMsgApplyUpRsp) + }) +_sym_db.RegisterMessage(MultiMsgApplyUpRsp) + +MultiReqBody = _reflection.GeneratedProtocolMessageType('MultiReqBody', (_message.Message,), { + 'DESCRIPTOR' : _MULTIREQBODY, + '__module__' : 'multi_msg_pb2' + # @@protoc_insertion_point(class_scope:MultiReqBody) + }) +_sym_db.RegisterMessage(MultiReqBody) + +MultiRspBody = _reflection.GeneratedProtocolMessageType('MultiRspBody', (_message.Message,), { + 'DESCRIPTOR' : _MULTIRSPBODY, + '__module__' : 'multi_msg_pb2' + # @@protoc_insertion_point(class_scope:MultiRspBody) + }) +_sym_db.RegisterMessage(MultiRspBody) + +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'Z,github.com/Mrs4s/MiraiGo/client/pb/multi_msg' + _EXTERNMSG._serialized_start=19 + _EXTERNMSG._serialized_end=51 + _MULTIMSGAPPLYDOWNREQ._serialized_start=53 + _MULTIMSGAPPLYDOWNREQ._serialized_end=126 + _MULTIMSGAPPLYDOWNRSP._serialized_start=129 + _MULTIMSGAPPLYDOWNRSP._serialized_end=354 + _MULTIMSGAPPLYUPREQ._serialized_start=356 + _MULTIMSGAPPLYUPREQ._serialized_end=459 + _MULTIMSGAPPLYUPRSP._serialized_start=462 + _MULTIMSGAPPLYUPRSP._serialized_end=741 + _MULTIREQBODY._serialized_start=744 + _MULTIREQBODY._serialized_end=991 + _MULTIRSPBODY._serialized_start=994 + _MULTIRSPBODY._serialized_end=1126 +# @@protoc_insertion_point(module_scope) diff --git a/cai/pb/highway/longmsg/longmsg_pb2.pyi b/cai/pb/highway/multi_msg/multi_msg_pb2.pyi similarity index 100% rename from cai/pb/highway/longmsg/longmsg_pb2.pyi rename to cai/pb/highway/multi_msg/multi_msg_pb2.pyi From 88064e48017303a4c12f65738a6802fcdfbe2721 Mon Sep 17 00:00:00 2001 From: a1025 Date: Mon, 21 Mar 2022 01:22:08 +0800 Subject: [PATCH 023/113] add: cmd0x388 --- cai/pb/im/oidb/cmd0x388/__init__.py | 0 cai/pb/im/oidb/cmd0x388/cmd0x388.proto | 255 ++++++++ cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.py | 225 +++++++ cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.pyi | 799 +++++++++++++++++++++++ 4 files changed, 1279 insertions(+) create mode 100644 cai/pb/im/oidb/cmd0x388/__init__.py create mode 100644 cai/pb/im/oidb/cmd0x388/cmd0x388.proto create mode 100644 cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.py create mode 100644 cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.pyi diff --git a/cai/pb/im/oidb/cmd0x388/__init__.py b/cai/pb/im/oidb/cmd0x388/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cai/pb/im/oidb/cmd0x388/cmd0x388.proto b/cai/pb/im/oidb/cmd0x388/cmd0x388.proto new file mode 100644 index 00000000..f5cef756 --- /dev/null +++ b/cai/pb/im/oidb/cmd0x388/cmd0x388.proto @@ -0,0 +1,255 @@ +syntax = "proto2"; + +option go_package = "github.com/Mrs4s/MiraiGo/client/pb/cmd0x388"; + + message DelImgReq { + optional uint64 srcUin = 1; + optional uint64 dstUin = 2; + optional uint32 reqTerm = 3; + optional uint32 reqPlatformType = 4; + optional uint32 buType = 5; + optional bytes buildVer = 6; + optional bytes fileResid = 7; + optional uint32 picWidth = 8; + optional uint32 picHeight = 9; + } + + message DelImgRsp { + optional uint32 result = 1; + optional bytes failMsg = 2; + optional bytes fileResid = 3; + } + + message ExpRoamExtendInfo { + optional bytes resid = 1; + } + + message ExpRoamPicInfo { + optional uint32 shopFlag = 1; + optional uint32 pkgId = 2; + optional bytes picId = 3; + } + + message ExtensionCommPicTryUp { + repeated bytes extinfo = 1; + } + + message ExtensionExpRoamTryUp { + repeated ExpRoamPicInfo exproamPicInfo = 1; + } + + message GetImgUrlReq { + optional uint64 groupCode = 1; + optional uint64 dstUin = 2; + optional uint64 fileid = 3; + optional bytes fileMd5 = 4; + optional uint32 urlFlag = 5; + optional uint32 urlType = 6; + optional uint32 reqTerm = 7; + optional uint32 reqPlatformType = 8; + optional uint32 innerIp = 9; + optional uint32 buType = 10; + optional bytes buildVer = 11; + optional uint64 fileId = 12; + optional uint64 fileSize = 13; + optional uint32 originalPic = 14; + optional uint32 retryReq = 15; + optional uint32 fileHeight = 16; + optional uint32 fileWidth = 17; + optional uint32 picType = 18; + optional uint32 picUpTimestamp = 19; + optional uint32 reqTransferType = 20; + optional uint64 qqmeetGuildId = 21; + optional uint64 qqmeetChannelId = 22; + optional bytes downloadIndex = 23; + } + + message GetImgUrlRsp { + optional uint64 fileid = 1; + optional bytes fileMd5 = 2; + optional uint32 result = 3; + optional bytes failMsg = 4; + optional ImgInfo imgInfo = 5; + repeated bytes thumbDownUrl = 6; + repeated bytes originalDownUrl = 7; + repeated bytes bigDownUrl = 8; + repeated uint32 downIp = 9; + repeated uint32 downPort = 10; + optional bytes downDomain = 11; + optional bytes thumbDownPara = 12; + optional bytes originalDownPara = 13; + optional bytes bigDownPara = 14; + optional uint64 fileId = 15; + optional uint32 autoDownType = 16; + repeated uint32 orderDownType = 17; + optional bytes bigThumbDownPara = 19; + optional uint32 httpsUrlFlag = 20; + repeated IPv6Info downIp6 = 26; + optional bytes clientIp6 = 27; + } + + message GetPttUrlReq { + optional uint64 groupCode = 1; + optional uint64 dstUin = 2; + optional uint64 fileid = 3; + optional bytes fileMd5 = 4; + optional uint32 reqTerm = 5; + optional uint32 reqPlatformType = 6; + optional uint32 innerIp = 7; + optional uint32 buType = 8; + optional bytes buildVer = 9; + optional uint64 fileId = 10; + optional bytes fileKey = 11; + optional uint32 codec = 12; + optional uint32 buId = 13; + optional uint32 reqTransferType = 14; + optional uint32 isAuto = 15; + } + + message GetPttUrlRsp { + optional uint64 fileid = 1; + optional bytes fileMd5 = 2; + optional uint32 result = 3; + optional bytes failMsg = 4; + repeated bytes downUrl = 5; + repeated uint32 downIp = 6; + repeated uint32 downPort = 7; + optional bytes downDomain = 8; + optional bytes downPara = 9; + optional uint64 fileId = 10; + optional uint32 transferType = 11; + optional uint32 allowRetry = 12; + repeated IPv6Info downIp6 = 26; + optional bytes clientIp6 = 27; + optional string domain = 28; + } + + message IPv6Info { + optional bytes ip6 = 1; + optional uint32 port = 2; + } + + message ImgInfo { + optional bytes fileMd5 = 1; + optional uint32 fileType = 2; + optional uint64 fileSize = 3; + optional uint32 fileWidth = 4; + optional uint32 fileHeight = 5; + } + + message PicSize { + optional uint32 original = 1; + optional uint32 thumb = 2; + optional uint32 high = 3; + } + + message D388ReqBody { + optional uint32 netType = 1; + optional uint32 subcmd = 2; + repeated TryUpImgReq tryupImgReq = 3; + repeated GetImgUrlReq getimgUrlReq = 4; + repeated TryUpPttReq tryupPttReq = 5; + repeated GetPttUrlReq getpttUrlReq = 6; + optional uint32 commandId = 7; + repeated DelImgReq delImgReq = 8; + optional bytes extension = 1001; + } + + message D388RspBody { + optional uint32 clientIp = 1; + optional uint32 subcmd = 2; + repeated D388TryUpImgRsp tryupImgRsp = 3; + repeated GetImgUrlRsp getimgUrlRsp = 4; + repeated TryUpPttRsp tryupPttRsp = 5; + repeated GetPttUrlRsp getpttUrlRsp = 6; + repeated DelImgRsp delImgRsp = 7; + } + + message TryUpImgReq { + optional uint64 groupCode = 1; + optional uint64 srcUin = 2; + optional uint64 fileId = 3; + optional bytes fileMd5 = 4; + optional uint64 fileSize = 5; + optional bytes fileName = 6; + optional uint32 srcTerm = 7; + optional uint32 platformType = 8; + optional uint32 buType = 9; + optional uint32 picWidth = 10; + optional uint32 picHeight = 11; + optional uint32 picType = 12; + optional bytes buildVer = 13; + optional uint32 innerIp = 14; + optional uint32 appPicType = 15; + optional uint32 originalPic = 16; + optional bytes fileIndex = 17; + optional uint64 dstUin = 18; + optional uint32 srvUpload = 19; + optional bytes transferUrl = 20; + optional uint64 qqmeetGuildId = 21; + optional uint64 qqmeetChannelId = 22; + } + + message D388TryUpImgRsp { + optional uint64 fileId = 1; + optional uint32 result = 2; + optional bytes failMsg = 3; + optional bool fileExit = 4; + optional ImgInfo imgInfo = 5; + repeated uint32 upIp = 6; + repeated uint32 upPort = 7; + optional bytes upUkey = 8; + optional uint64 fileid = 9; + optional uint64 upOffset = 10; + optional uint64 blockSize = 11; + optional bool newBigChan = 12; + repeated IPv6Info upIp6 = 26; + optional bytes clientIp6 = 27; + optional bytes downloadIndex = 28; + optional TryUpInfo4Busi info4Busi = 1001; + } + + message TryUpInfo4Busi { + optional bytes downDomain = 1; + optional bytes thumbDownUrl = 2; + optional bytes originalDownUrl = 3; + optional bytes bigDownUrl = 4; + optional bytes fileResid = 5; + } + + message TryUpPttReq { + optional uint64 groupCode = 1; + optional uint64 srcUin = 2; + optional uint64 fileId = 3; + optional bytes fileMd5 = 4; + optional uint64 fileSize = 5; + optional bytes fileName = 6; + optional uint32 srcTerm = 7; + optional uint32 platformType = 8; + optional uint32 buType = 9; + optional bytes buildVer = 10; + optional uint32 innerIp = 11; + optional uint32 voiceLength = 12; + optional bool newUpChan = 13; + optional uint32 codec = 14; + optional uint32 voiceType = 15; + optional uint32 buId = 16; + } + + message TryUpPttRsp { + optional uint64 fileId = 1; + optional uint32 result = 2; + optional bytes failMsg = 3; + optional bool fileExit = 4; + repeated uint32 upIp = 5; + repeated uint32 upPort = 6; + optional bytes upUkey = 7; + optional uint64 fileid = 8; + optional uint64 upOffset = 9; + optional uint64 blockSize = 10; + optional bytes fileKey = 11; + optional uint32 channelType = 12; + repeated IPv6Info upIp6 = 26; + optional bytes clientIp6 = 27; + } + diff --git a/cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.py b/cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.py new file mode 100644 index 00000000..4f02ceba --- /dev/null +++ b/cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.py @@ -0,0 +1,225 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: cmd0x388.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0e\x63md0x388.proto\"\xaf\x01\n\tDelImgReq\x12\x0e\n\x06srcUin\x18\x01 \x01(\x04\x12\x0e\n\x06\x64stUin\x18\x02 \x01(\x04\x12\x0f\n\x07reqTerm\x18\x03 \x01(\r\x12\x17\n\x0freqPlatformType\x18\x04 \x01(\r\x12\x0e\n\x06\x62uType\x18\x05 \x01(\r\x12\x10\n\x08\x62uildVer\x18\x06 \x01(\x0c\x12\x11\n\tfileResid\x18\x07 \x01(\x0c\x12\x10\n\x08picWidth\x18\x08 \x01(\r\x12\x11\n\tpicHeight\x18\t \x01(\r\"?\n\tDelImgRsp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0f\n\x07\x66\x61ilMsg\x18\x02 \x01(\x0c\x12\x11\n\tfileResid\x18\x03 \x01(\x0c\"\"\n\x11\x45xpRoamExtendInfo\x12\r\n\x05resid\x18\x01 \x01(\x0c\"@\n\x0e\x45xpRoamPicInfo\x12\x10\n\x08shopFlag\x18\x01 \x01(\r\x12\r\n\x05pkgId\x18\x02 \x01(\r\x12\r\n\x05picId\x18\x03 \x01(\x0c\"(\n\x15\x45xtensionCommPicTryUp\x12\x0f\n\x07\x65xtinfo\x18\x01 \x03(\x0c\"@\n\x15\x45xtensionExpRoamTryUp\x12\'\n\x0e\x65xproamPicInfo\x18\x01 \x03(\x0b\x32\x0f.ExpRoamPicInfo\"\xca\x03\n\x0cGetImgUrlReq\x12\x11\n\tgroupCode\x18\x01 \x01(\x04\x12\x0e\n\x06\x64stUin\x18\x02 \x01(\x04\x12\x0e\n\x06\x66ileid\x18\x03 \x01(\x04\x12\x0f\n\x07\x66ileMd5\x18\x04 \x01(\x0c\x12\x0f\n\x07urlFlag\x18\x05 \x01(\r\x12\x0f\n\x07urlType\x18\x06 \x01(\r\x12\x0f\n\x07reqTerm\x18\x07 \x01(\r\x12\x17\n\x0freqPlatformType\x18\x08 \x01(\r\x12\x0f\n\x07innerIp\x18\t \x01(\r\x12\x0e\n\x06\x62uType\x18\n \x01(\r\x12\x10\n\x08\x62uildVer\x18\x0b \x01(\x0c\x12\x0e\n\x06\x66ileId\x18\x0c \x01(\x04\x12\x10\n\x08\x66ileSize\x18\r \x01(\x04\x12\x13\n\x0boriginalPic\x18\x0e \x01(\r\x12\x10\n\x08retryReq\x18\x0f \x01(\r\x12\x12\n\nfileHeight\x18\x10 \x01(\r\x12\x11\n\tfileWidth\x18\x11 \x01(\r\x12\x0f\n\x07picType\x18\x12 \x01(\r\x12\x16\n\x0epicUpTimestamp\x18\x13 \x01(\r\x12\x17\n\x0freqTransferType\x18\x14 \x01(\r\x12\x15\n\rqqmeetGuildId\x18\x15 \x01(\x04\x12\x17\n\x0fqqmeetChannelId\x18\x16 \x01(\x04\x12\x15\n\rdownloadIndex\x18\x17 \x01(\x0c\"\xc6\x03\n\x0cGetImgUrlRsp\x12\x0e\n\x06\x66ileid\x18\x01 \x01(\x04\x12\x0f\n\x07\x66ileMd5\x18\x02 \x01(\x0c\x12\x0e\n\x06result\x18\x03 \x01(\r\x12\x0f\n\x07\x66\x61ilMsg\x18\x04 \x01(\x0c\x12\x19\n\x07imgInfo\x18\x05 \x01(\x0b\x32\x08.ImgInfo\x12\x14\n\x0cthumbDownUrl\x18\x06 \x03(\x0c\x12\x17\n\x0foriginalDownUrl\x18\x07 \x03(\x0c\x12\x12\n\nbigDownUrl\x18\x08 \x03(\x0c\x12\x0e\n\x06\x64ownIp\x18\t \x03(\r\x12\x10\n\x08\x64ownPort\x18\n \x03(\r\x12\x12\n\ndownDomain\x18\x0b \x01(\x0c\x12\x15\n\rthumbDownPara\x18\x0c \x01(\x0c\x12\x18\n\x10originalDownPara\x18\r \x01(\x0c\x12\x13\n\x0b\x62igDownPara\x18\x0e \x01(\x0c\x12\x0e\n\x06\x66ileId\x18\x0f \x01(\x04\x12\x14\n\x0c\x61utoDownType\x18\x10 \x01(\r\x12\x15\n\rorderDownType\x18\x11 \x03(\r\x12\x18\n\x10\x62igThumbDownPara\x18\x13 \x01(\x0c\x12\x14\n\x0chttpsUrlFlag\x18\x14 \x01(\r\x12\x1a\n\x07\x64ownIp6\x18\x1a \x03(\x0b\x32\t.IPv6Info\x12\x11\n\tclientIp6\x18\x1b \x01(\x0c\"\x96\x02\n\x0cGetPttUrlReq\x12\x11\n\tgroupCode\x18\x01 \x01(\x04\x12\x0e\n\x06\x64stUin\x18\x02 \x01(\x04\x12\x0e\n\x06\x66ileid\x18\x03 \x01(\x04\x12\x0f\n\x07\x66ileMd5\x18\x04 \x01(\x0c\x12\x0f\n\x07reqTerm\x18\x05 \x01(\r\x12\x17\n\x0freqPlatformType\x18\x06 \x01(\r\x12\x0f\n\x07innerIp\x18\x07 \x01(\r\x12\x0e\n\x06\x62uType\x18\x08 \x01(\r\x12\x10\n\x08\x62uildVer\x18\t \x01(\x0c\x12\x0e\n\x06\x66ileId\x18\n \x01(\x04\x12\x0f\n\x07\x66ileKey\x18\x0b \x01(\x0c\x12\r\n\x05\x63odec\x18\x0c \x01(\r\x12\x0c\n\x04\x62uId\x18\r \x01(\r\x12\x17\n\x0freqTransferType\x18\x0e \x01(\r\x12\x0e\n\x06isAuto\x18\x0f \x01(\r\"\xa2\x02\n\x0cGetPttUrlRsp\x12\x0e\n\x06\x66ileid\x18\x01 \x01(\x04\x12\x0f\n\x07\x66ileMd5\x18\x02 \x01(\x0c\x12\x0e\n\x06result\x18\x03 \x01(\r\x12\x0f\n\x07\x66\x61ilMsg\x18\x04 \x01(\x0c\x12\x0f\n\x07\x64ownUrl\x18\x05 \x03(\x0c\x12\x0e\n\x06\x64ownIp\x18\x06 \x03(\r\x12\x10\n\x08\x64ownPort\x18\x07 \x03(\r\x12\x12\n\ndownDomain\x18\x08 \x01(\x0c\x12\x10\n\x08\x64ownPara\x18\t \x01(\x0c\x12\x0e\n\x06\x66ileId\x18\n \x01(\x04\x12\x14\n\x0ctransferType\x18\x0b \x01(\r\x12\x12\n\nallowRetry\x18\x0c \x01(\r\x12\x1a\n\x07\x64ownIp6\x18\x1a \x03(\x0b\x32\t.IPv6Info\x12\x11\n\tclientIp6\x18\x1b \x01(\x0c\x12\x0e\n\x06\x64omain\x18\x1c \x01(\t\"%\n\x08IPv6Info\x12\x0b\n\x03ip6\x18\x01 \x01(\x0c\x12\x0c\n\x04port\x18\x02 \x01(\r\"e\n\x07ImgInfo\x12\x0f\n\x07\x66ileMd5\x18\x01 \x01(\x0c\x12\x10\n\x08\x66ileType\x18\x02 \x01(\r\x12\x10\n\x08\x66ileSize\x18\x03 \x01(\x04\x12\x11\n\tfileWidth\x18\x04 \x01(\r\x12\x12\n\nfileHeight\x18\x05 \x01(\r\"8\n\x07PicSize\x12\x10\n\x08original\x18\x01 \x01(\r\x12\r\n\x05thumb\x18\x02 \x01(\r\x12\x0c\n\x04high\x18\x03 \x01(\r\"\x84\x02\n\x0b\x44\x33\x38\x38ReqBody\x12\x0f\n\x07netType\x18\x01 \x01(\r\x12\x0e\n\x06subcmd\x18\x02 \x01(\r\x12!\n\x0btryupImgReq\x18\x03 \x03(\x0b\x32\x0c.TryUpImgReq\x12#\n\x0cgetimgUrlReq\x18\x04 \x03(\x0b\x32\r.GetImgUrlReq\x12!\n\x0btryupPttReq\x18\x05 \x03(\x0b\x32\x0c.TryUpPttReq\x12#\n\x0cgetpttUrlReq\x18\x06 \x03(\x0b\x32\r.GetPttUrlReq\x12\x11\n\tcommandId\x18\x07 \x01(\r\x12\x1d\n\tdelImgReq\x18\x08 \x03(\x0b\x32\n.DelImgReq\x12\x12\n\textension\x18\xe9\x07 \x01(\x0c\"\xe2\x01\n\x0b\x44\x33\x38\x38RspBody\x12\x10\n\x08\x63lientIp\x18\x01 \x01(\r\x12\x0e\n\x06subcmd\x18\x02 \x01(\r\x12%\n\x0btryupImgRsp\x18\x03 \x03(\x0b\x32\x10.D388TryUpImgRsp\x12#\n\x0cgetimgUrlRsp\x18\x04 \x03(\x0b\x32\r.GetImgUrlRsp\x12!\n\x0btryupPttRsp\x18\x05 \x03(\x0b\x32\x0c.TryUpPttRsp\x12#\n\x0cgetpttUrlRsp\x18\x06 \x03(\x0b\x32\r.GetPttUrlRsp\x12\x1d\n\tdelImgRsp\x18\x07 \x03(\x0b\x32\n.DelImgRsp\"\xa9\x03\n\x0bTryUpImgReq\x12\x11\n\tgroupCode\x18\x01 \x01(\x04\x12\x0e\n\x06srcUin\x18\x02 \x01(\x04\x12\x0e\n\x06\x66ileId\x18\x03 \x01(\x04\x12\x0f\n\x07\x66ileMd5\x18\x04 \x01(\x0c\x12\x10\n\x08\x66ileSize\x18\x05 \x01(\x04\x12\x10\n\x08\x66ileName\x18\x06 \x01(\x0c\x12\x0f\n\x07srcTerm\x18\x07 \x01(\r\x12\x14\n\x0cplatformType\x18\x08 \x01(\r\x12\x0e\n\x06\x62uType\x18\t \x01(\r\x12\x10\n\x08picWidth\x18\n \x01(\r\x12\x11\n\tpicHeight\x18\x0b \x01(\r\x12\x0f\n\x07picType\x18\x0c \x01(\r\x12\x10\n\x08\x62uildVer\x18\r \x01(\x0c\x12\x0f\n\x07innerIp\x18\x0e \x01(\r\x12\x12\n\nappPicType\x18\x0f \x01(\r\x12\x13\n\x0boriginalPic\x18\x10 \x01(\r\x12\x11\n\tfileIndex\x18\x11 \x01(\x0c\x12\x0e\n\x06\x64stUin\x18\x12 \x01(\x04\x12\x11\n\tsrvUpload\x18\x13 \x01(\r\x12\x13\n\x0btransferUrl\x18\x14 \x01(\x0c\x12\x15\n\rqqmeetGuildId\x18\x15 \x01(\x04\x12\x17\n\x0fqqmeetChannelId\x18\x16 \x01(\x04\"\xcf\x02\n\x0f\x44\x33\x38\x38TryUpImgRsp\x12\x0e\n\x06\x66ileId\x18\x01 \x01(\x04\x12\x0e\n\x06result\x18\x02 \x01(\r\x12\x0f\n\x07\x66\x61ilMsg\x18\x03 \x01(\x0c\x12\x10\n\x08\x66ileExit\x18\x04 \x01(\x08\x12\x19\n\x07imgInfo\x18\x05 \x01(\x0b\x32\x08.ImgInfo\x12\x0c\n\x04upIp\x18\x06 \x03(\r\x12\x0e\n\x06upPort\x18\x07 \x03(\r\x12\x0e\n\x06upUkey\x18\x08 \x01(\x0c\x12\x0e\n\x06\x66ileid\x18\t \x01(\x04\x12\x10\n\x08upOffset\x18\n \x01(\x04\x12\x11\n\tblockSize\x18\x0b \x01(\x04\x12\x12\n\nnewBigChan\x18\x0c \x01(\x08\x12\x18\n\x05upIp6\x18\x1a \x03(\x0b\x32\t.IPv6Info\x12\x11\n\tclientIp6\x18\x1b \x01(\x0c\x12\x15\n\rdownloadIndex\x18\x1c \x01(\x0c\x12#\n\tinfo4Busi\x18\xe9\x07 \x01(\x0b\x32\x0f.TryUpInfo4Busi\"z\n\x0eTryUpInfo4Busi\x12\x12\n\ndownDomain\x18\x01 \x01(\x0c\x12\x14\n\x0cthumbDownUrl\x18\x02 \x01(\x0c\x12\x17\n\x0foriginalDownUrl\x18\x03 \x01(\x0c\x12\x12\n\nbigDownUrl\x18\x04 \x01(\x0c\x12\x11\n\tfileResid\x18\x05 \x01(\x0c\"\xa7\x02\n\x0bTryUpPttReq\x12\x11\n\tgroupCode\x18\x01 \x01(\x04\x12\x0e\n\x06srcUin\x18\x02 \x01(\x04\x12\x0e\n\x06\x66ileId\x18\x03 \x01(\x04\x12\x0f\n\x07\x66ileMd5\x18\x04 \x01(\x0c\x12\x10\n\x08\x66ileSize\x18\x05 \x01(\x04\x12\x10\n\x08\x66ileName\x18\x06 \x01(\x0c\x12\x0f\n\x07srcTerm\x18\x07 \x01(\r\x12\x14\n\x0cplatformType\x18\x08 \x01(\r\x12\x0e\n\x06\x62uType\x18\t \x01(\r\x12\x10\n\x08\x62uildVer\x18\n \x01(\x0c\x12\x0f\n\x07innerIp\x18\x0b \x01(\r\x12\x13\n\x0bvoiceLength\x18\x0c \x01(\r\x12\x11\n\tnewUpChan\x18\r \x01(\x08\x12\r\n\x05\x63odec\x18\x0e \x01(\r\x12\x11\n\tvoiceType\x18\x0f \x01(\r\x12\x0c\n\x04\x62uId\x18\x10 \x01(\r\"\x86\x02\n\x0bTryUpPttRsp\x12\x0e\n\x06\x66ileId\x18\x01 \x01(\x04\x12\x0e\n\x06result\x18\x02 \x01(\r\x12\x0f\n\x07\x66\x61ilMsg\x18\x03 \x01(\x0c\x12\x10\n\x08\x66ileExit\x18\x04 \x01(\x08\x12\x0c\n\x04upIp\x18\x05 \x03(\r\x12\x0e\n\x06upPort\x18\x06 \x03(\r\x12\x0e\n\x06upUkey\x18\x07 \x01(\x0c\x12\x0e\n\x06\x66ileid\x18\x08 \x01(\x04\x12\x10\n\x08upOffset\x18\t \x01(\x04\x12\x11\n\tblockSize\x18\n \x01(\x04\x12\x0f\n\x07\x66ileKey\x18\x0b \x01(\x0c\x12\x13\n\x0b\x63hannelType\x18\x0c \x01(\r\x12\x18\n\x05upIp6\x18\x1a \x03(\x0b\x32\t.IPv6Info\x12\x11\n\tclientIp6\x18\x1b \x01(\x0c\x42-Z+github.com/Mrs4s/MiraiGo/client/pb/cmd0x388') + + + +_DELIMGREQ = DESCRIPTOR.message_types_by_name['DelImgReq'] +_DELIMGRSP = DESCRIPTOR.message_types_by_name['DelImgRsp'] +_EXPROAMEXTENDINFO = DESCRIPTOR.message_types_by_name['ExpRoamExtendInfo'] +_EXPROAMPICINFO = DESCRIPTOR.message_types_by_name['ExpRoamPicInfo'] +_EXTENSIONCOMMPICTRYUP = DESCRIPTOR.message_types_by_name['ExtensionCommPicTryUp'] +_EXTENSIONEXPROAMTRYUP = DESCRIPTOR.message_types_by_name['ExtensionExpRoamTryUp'] +_GETIMGURLREQ = DESCRIPTOR.message_types_by_name['GetImgUrlReq'] +_GETIMGURLRSP = DESCRIPTOR.message_types_by_name['GetImgUrlRsp'] +_GETPTTURLREQ = DESCRIPTOR.message_types_by_name['GetPttUrlReq'] +_GETPTTURLRSP = DESCRIPTOR.message_types_by_name['GetPttUrlRsp'] +_IPV6INFO = DESCRIPTOR.message_types_by_name['IPv6Info'] +_IMGINFO = DESCRIPTOR.message_types_by_name['ImgInfo'] +_PICSIZE = DESCRIPTOR.message_types_by_name['PicSize'] +_D388REQBODY = DESCRIPTOR.message_types_by_name['D388ReqBody'] +_D388RSPBODY = DESCRIPTOR.message_types_by_name['D388RspBody'] +_TRYUPIMGREQ = DESCRIPTOR.message_types_by_name['TryUpImgReq'] +_D388TRYUPIMGRSP = DESCRIPTOR.message_types_by_name['D388TryUpImgRsp'] +_TRYUPINFO4BUSI = DESCRIPTOR.message_types_by_name['TryUpInfo4Busi'] +_TRYUPPTTREQ = DESCRIPTOR.message_types_by_name['TryUpPttReq'] +_TRYUPPTTRSP = DESCRIPTOR.message_types_by_name['TryUpPttRsp'] +DelImgReq = _reflection.GeneratedProtocolMessageType('DelImgReq', (_message.Message,), { + 'DESCRIPTOR' : _DELIMGREQ, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:DelImgReq) + }) +_sym_db.RegisterMessage(DelImgReq) + +DelImgRsp = _reflection.GeneratedProtocolMessageType('DelImgRsp', (_message.Message,), { + 'DESCRIPTOR' : _DELIMGRSP, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:DelImgRsp) + }) +_sym_db.RegisterMessage(DelImgRsp) + +ExpRoamExtendInfo = _reflection.GeneratedProtocolMessageType('ExpRoamExtendInfo', (_message.Message,), { + 'DESCRIPTOR' : _EXPROAMEXTENDINFO, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:ExpRoamExtendInfo) + }) +_sym_db.RegisterMessage(ExpRoamExtendInfo) + +ExpRoamPicInfo = _reflection.GeneratedProtocolMessageType('ExpRoamPicInfo', (_message.Message,), { + 'DESCRIPTOR' : _EXPROAMPICINFO, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:ExpRoamPicInfo) + }) +_sym_db.RegisterMessage(ExpRoamPicInfo) + +ExtensionCommPicTryUp = _reflection.GeneratedProtocolMessageType('ExtensionCommPicTryUp', (_message.Message,), { + 'DESCRIPTOR' : _EXTENSIONCOMMPICTRYUP, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:ExtensionCommPicTryUp) + }) +_sym_db.RegisterMessage(ExtensionCommPicTryUp) + +ExtensionExpRoamTryUp = _reflection.GeneratedProtocolMessageType('ExtensionExpRoamTryUp', (_message.Message,), { + 'DESCRIPTOR' : _EXTENSIONEXPROAMTRYUP, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:ExtensionExpRoamTryUp) + }) +_sym_db.RegisterMessage(ExtensionExpRoamTryUp) + +GetImgUrlReq = _reflection.GeneratedProtocolMessageType('GetImgUrlReq', (_message.Message,), { + 'DESCRIPTOR' : _GETIMGURLREQ, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:GetImgUrlReq) + }) +_sym_db.RegisterMessage(GetImgUrlReq) + +GetImgUrlRsp = _reflection.GeneratedProtocolMessageType('GetImgUrlRsp', (_message.Message,), { + 'DESCRIPTOR' : _GETIMGURLRSP, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:GetImgUrlRsp) + }) +_sym_db.RegisterMessage(GetImgUrlRsp) + +GetPttUrlReq = _reflection.GeneratedProtocolMessageType('GetPttUrlReq', (_message.Message,), { + 'DESCRIPTOR' : _GETPTTURLREQ, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:GetPttUrlReq) + }) +_sym_db.RegisterMessage(GetPttUrlReq) + +GetPttUrlRsp = _reflection.GeneratedProtocolMessageType('GetPttUrlRsp', (_message.Message,), { + 'DESCRIPTOR' : _GETPTTURLRSP, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:GetPttUrlRsp) + }) +_sym_db.RegisterMessage(GetPttUrlRsp) + +IPv6Info = _reflection.GeneratedProtocolMessageType('IPv6Info', (_message.Message,), { + 'DESCRIPTOR' : _IPV6INFO, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:IPv6Info) + }) +_sym_db.RegisterMessage(IPv6Info) + +ImgInfo = _reflection.GeneratedProtocolMessageType('ImgInfo', (_message.Message,), { + 'DESCRIPTOR' : _IMGINFO, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:ImgInfo) + }) +_sym_db.RegisterMessage(ImgInfo) + +PicSize = _reflection.GeneratedProtocolMessageType('PicSize', (_message.Message,), { + 'DESCRIPTOR' : _PICSIZE, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:PicSize) + }) +_sym_db.RegisterMessage(PicSize) + +D388ReqBody = _reflection.GeneratedProtocolMessageType('D388ReqBody', (_message.Message,), { + 'DESCRIPTOR' : _D388REQBODY, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:D388ReqBody) + }) +_sym_db.RegisterMessage(D388ReqBody) + +D388RspBody = _reflection.GeneratedProtocolMessageType('D388RspBody', (_message.Message,), { + 'DESCRIPTOR' : _D388RSPBODY, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:D388RspBody) + }) +_sym_db.RegisterMessage(D388RspBody) + +TryUpImgReq = _reflection.GeneratedProtocolMessageType('TryUpImgReq', (_message.Message,), { + 'DESCRIPTOR' : _TRYUPIMGREQ, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:TryUpImgReq) + }) +_sym_db.RegisterMessage(TryUpImgReq) + +D388TryUpImgRsp = _reflection.GeneratedProtocolMessageType('D388TryUpImgRsp', (_message.Message,), { + 'DESCRIPTOR' : _D388TRYUPIMGRSP, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:D388TryUpImgRsp) + }) +_sym_db.RegisterMessage(D388TryUpImgRsp) + +TryUpInfo4Busi = _reflection.GeneratedProtocolMessageType('TryUpInfo4Busi', (_message.Message,), { + 'DESCRIPTOR' : _TRYUPINFO4BUSI, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:TryUpInfo4Busi) + }) +_sym_db.RegisterMessage(TryUpInfo4Busi) + +TryUpPttReq = _reflection.GeneratedProtocolMessageType('TryUpPttReq', (_message.Message,), { + 'DESCRIPTOR' : _TRYUPPTTREQ, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:TryUpPttReq) + }) +_sym_db.RegisterMessage(TryUpPttReq) + +TryUpPttRsp = _reflection.GeneratedProtocolMessageType('TryUpPttRsp', (_message.Message,), { + 'DESCRIPTOR' : _TRYUPPTTRSP, + '__module__' : 'cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:TryUpPttRsp) + }) +_sym_db.RegisterMessage(TryUpPttRsp) + +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'Z+github.com/Mrs4s/MiraiGo/client/pb/cmd0x388' + _DELIMGREQ._serialized_start=19 + _DELIMGREQ._serialized_end=194 + _DELIMGRSP._serialized_start=196 + _DELIMGRSP._serialized_end=259 + _EXPROAMEXTENDINFO._serialized_start=261 + _EXPROAMEXTENDINFO._serialized_end=295 + _EXPROAMPICINFO._serialized_start=297 + _EXPROAMPICINFO._serialized_end=361 + _EXTENSIONCOMMPICTRYUP._serialized_start=363 + _EXTENSIONCOMMPICTRYUP._serialized_end=403 + _EXTENSIONEXPROAMTRYUP._serialized_start=405 + _EXTENSIONEXPROAMTRYUP._serialized_end=469 + _GETIMGURLREQ._serialized_start=472 + _GETIMGURLREQ._serialized_end=930 + _GETIMGURLRSP._serialized_start=933 + _GETIMGURLRSP._serialized_end=1387 + _GETPTTURLREQ._serialized_start=1390 + _GETPTTURLREQ._serialized_end=1668 + _GETPTTURLRSP._serialized_start=1671 + _GETPTTURLRSP._serialized_end=1961 + _IPV6INFO._serialized_start=1963 + _IPV6INFO._serialized_end=2000 + _IMGINFO._serialized_start=2002 + _IMGINFO._serialized_end=2103 + _PICSIZE._serialized_start=2105 + _PICSIZE._serialized_end=2161 + _D388REQBODY._serialized_start=2164 + _D388REQBODY._serialized_end=2424 + _D388RSPBODY._serialized_start=2427 + _D388RSPBODY._serialized_end=2653 + _TRYUPIMGREQ._serialized_start=2656 + _TRYUPIMGREQ._serialized_end=3081 + _D388TRYUPIMGRSP._serialized_start=3084 + _D388TRYUPIMGRSP._serialized_end=3419 + _TRYUPINFO4BUSI._serialized_start=3421 + _TRYUPINFO4BUSI._serialized_end=3543 + _TRYUPPTTREQ._serialized_start=3546 + _TRYUPPTTREQ._serialized_end=3841 + _TRYUPPTTRSP._serialized_start=3844 + _TRYUPPTTRSP._serialized_end=4106 +# @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.pyi b/cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.pyi new file mode 100644 index 00000000..49ccf026 --- /dev/null +++ b/cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.pyi @@ -0,0 +1,799 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +from builtins import ( + bool, + bytes, + int, +) + +from google.protobuf.descriptor import ( + Descriptor, + FileDescriptor, +) + +from google.protobuf.internal.containers import ( + RepeatedCompositeFieldContainer, + RepeatedScalarFieldContainer, +) + +from google.protobuf.message import ( + Message, +) + +from typing import ( + Iterable, + Optional, + Text, +) + +from typing_extensions import ( + Literal, +) + + +DESCRIPTOR: FileDescriptor + +class DelImgReq(Message): + DESCRIPTOR: Descriptor + SRCUIN_FIELD_NUMBER: int + DSTUIN_FIELD_NUMBER: int + REQTERM_FIELD_NUMBER: int + REQPLATFORMTYPE_FIELD_NUMBER: int + BUTYPE_FIELD_NUMBER: int + BUILDVER_FIELD_NUMBER: int + FILERESID_FIELD_NUMBER: int + PICWIDTH_FIELD_NUMBER: int + PICHEIGHT_FIELD_NUMBER: int + srcUin: int + dstUin: int + reqTerm: int + reqPlatformType: int + buType: int + buildVer: bytes + fileResid: bytes + picWidth: int + picHeight: int + def __init__(self, + *, + srcUin: Optional[int] = ..., + dstUin: Optional[int] = ..., + reqTerm: Optional[int] = ..., + reqPlatformType: Optional[int] = ..., + buType: Optional[int] = ..., + buildVer: Optional[bytes] = ..., + fileResid: Optional[bytes] = ..., + picWidth: Optional[int] = ..., + picHeight: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["buType",b"buType","buildVer",b"buildVer","dstUin",b"dstUin","fileResid",b"fileResid","picHeight",b"picHeight","picWidth",b"picWidth","reqPlatformType",b"reqPlatformType","reqTerm",b"reqTerm","srcUin",b"srcUin"]) -> bool: ... + def ClearField(self, field_name: Literal["buType",b"buType","buildVer",b"buildVer","dstUin",b"dstUin","fileResid",b"fileResid","picHeight",b"picHeight","picWidth",b"picWidth","reqPlatformType",b"reqPlatformType","reqTerm",b"reqTerm","srcUin",b"srcUin"]) -> None: ... + +class DelImgRsp(Message): + DESCRIPTOR: Descriptor + RESULT_FIELD_NUMBER: int + FAILMSG_FIELD_NUMBER: int + FILERESID_FIELD_NUMBER: int + result: int + failMsg: bytes + fileResid: bytes + def __init__(self, + *, + result: Optional[int] = ..., + failMsg: Optional[bytes] = ..., + fileResid: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["failMsg",b"failMsg","fileResid",b"fileResid","result",b"result"]) -> bool: ... + def ClearField(self, field_name: Literal["failMsg",b"failMsg","fileResid",b"fileResid","result",b"result"]) -> None: ... + +class ExpRoamExtendInfo(Message): + DESCRIPTOR: Descriptor + RESID_FIELD_NUMBER: int + resid: bytes + def __init__(self, + *, + resid: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["resid",b"resid"]) -> bool: ... + def ClearField(self, field_name: Literal["resid",b"resid"]) -> None: ... + +class ExpRoamPicInfo(Message): + DESCRIPTOR: Descriptor + SHOPFLAG_FIELD_NUMBER: int + PKGID_FIELD_NUMBER: int + PICID_FIELD_NUMBER: int + shopFlag: int + pkgId: int + picId: bytes + def __init__(self, + *, + shopFlag: Optional[int] = ..., + pkgId: Optional[int] = ..., + picId: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["picId",b"picId","pkgId",b"pkgId","shopFlag",b"shopFlag"]) -> bool: ... + def ClearField(self, field_name: Literal["picId",b"picId","pkgId",b"pkgId","shopFlag",b"shopFlag"]) -> None: ... + +class ExtensionCommPicTryUp(Message): + DESCRIPTOR: Descriptor + EXTINFO_FIELD_NUMBER: int + @property + def extinfo(self) -> RepeatedScalarFieldContainer[bytes]: ... + def __init__(self, + *, + extinfo: Optional[Iterable[bytes]] = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["extinfo",b"extinfo"]) -> None: ... + +class ExtensionExpRoamTryUp(Message): + DESCRIPTOR: Descriptor + EXPROAMPICINFO_FIELD_NUMBER: int + @property + def exproamPicInfo(self) -> RepeatedCompositeFieldContainer[ExpRoamPicInfo]: ... + def __init__(self, + *, + exproamPicInfo: Optional[Iterable[ExpRoamPicInfo]] = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["exproamPicInfo",b"exproamPicInfo"]) -> None: ... + +class GetImgUrlReq(Message): + DESCRIPTOR: Descriptor + GROUPCODE_FIELD_NUMBER: int + DSTUIN_FIELD_NUMBER: int + FILEID_FIELD_NUMBER: int + FILEMD5_FIELD_NUMBER: int + URLFLAG_FIELD_NUMBER: int + URLTYPE_FIELD_NUMBER: int + REQTERM_FIELD_NUMBER: int + REQPLATFORMTYPE_FIELD_NUMBER: int + INNERIP_FIELD_NUMBER: int + BUTYPE_FIELD_NUMBER: int + BUILDVER_FIELD_NUMBER: int + FILEID_FIELD_NUMBER: int + FILESIZE_FIELD_NUMBER: int + ORIGINALPIC_FIELD_NUMBER: int + RETRYREQ_FIELD_NUMBER: int + FILEHEIGHT_FIELD_NUMBER: int + FILEWIDTH_FIELD_NUMBER: int + PICTYPE_FIELD_NUMBER: int + PICUPTIMESTAMP_FIELD_NUMBER: int + REQTRANSFERTYPE_FIELD_NUMBER: int + QQMEETGUILDID_FIELD_NUMBER: int + QQMEETCHANNELID_FIELD_NUMBER: int + DOWNLOADINDEX_FIELD_NUMBER: int + groupCode: int + dstUin: int + fileid: int + fileMd5: bytes + urlFlag: int + urlType: int + reqTerm: int + reqPlatformType: int + innerIp: int + buType: int + buildVer: bytes + fileId: int + fileSize: int + originalPic: int + retryReq: int + fileHeight: int + fileWidth: int + picType: int + picUpTimestamp: int + reqTransferType: int + qqmeetGuildId: int + qqmeetChannelId: int + downloadIndex: bytes + def __init__(self, + *, + groupCode: Optional[int] = ..., + dstUin: Optional[int] = ..., + fileid: Optional[int] = ..., + fileMd5: Optional[bytes] = ..., + urlFlag: Optional[int] = ..., + urlType: Optional[int] = ..., + reqTerm: Optional[int] = ..., + reqPlatformType: Optional[int] = ..., + innerIp: Optional[int] = ..., + buType: Optional[int] = ..., + buildVer: Optional[bytes] = ..., + fileId: Optional[int] = ..., + fileSize: Optional[int] = ..., + originalPic: Optional[int] = ..., + retryReq: Optional[int] = ..., + fileHeight: Optional[int] = ..., + fileWidth: Optional[int] = ..., + picType: Optional[int] = ..., + picUpTimestamp: Optional[int] = ..., + reqTransferType: Optional[int] = ..., + qqmeetGuildId: Optional[int] = ..., + qqmeetChannelId: Optional[int] = ..., + downloadIndex: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["buType",b"buType","buildVer",b"buildVer","downloadIndex",b"downloadIndex","dstUin",b"dstUin","fileHeight",b"fileHeight","fileId",b"fileId","fileMd5",b"fileMd5","fileSize",b"fileSize","fileWidth",b"fileWidth","fileid",b"fileid","groupCode",b"groupCode","innerIp",b"innerIp","originalPic",b"originalPic","picType",b"picType","picUpTimestamp",b"picUpTimestamp","qqmeetChannelId",b"qqmeetChannelId","qqmeetGuildId",b"qqmeetGuildId","reqPlatformType",b"reqPlatformType","reqTerm",b"reqTerm","reqTransferType",b"reqTransferType","retryReq",b"retryReq","urlFlag",b"urlFlag","urlType",b"urlType"]) -> bool: ... + def ClearField(self, field_name: Literal["buType",b"buType","buildVer",b"buildVer","downloadIndex",b"downloadIndex","dstUin",b"dstUin","fileHeight",b"fileHeight","fileId",b"fileId","fileMd5",b"fileMd5","fileSize",b"fileSize","fileWidth",b"fileWidth","fileid",b"fileid","groupCode",b"groupCode","innerIp",b"innerIp","originalPic",b"originalPic","picType",b"picType","picUpTimestamp",b"picUpTimestamp","qqmeetChannelId",b"qqmeetChannelId","qqmeetGuildId",b"qqmeetGuildId","reqPlatformType",b"reqPlatformType","reqTerm",b"reqTerm","reqTransferType",b"reqTransferType","retryReq",b"retryReq","urlFlag",b"urlFlag","urlType",b"urlType"]) -> None: ... + +class GetImgUrlRsp(Message): + DESCRIPTOR: Descriptor + FILEID_FIELD_NUMBER: int + FILEMD5_FIELD_NUMBER: int + RESULT_FIELD_NUMBER: int + FAILMSG_FIELD_NUMBER: int + IMGINFO_FIELD_NUMBER: int + THUMBDOWNURL_FIELD_NUMBER: int + ORIGINALDOWNURL_FIELD_NUMBER: int + BIGDOWNURL_FIELD_NUMBER: int + DOWNIP_FIELD_NUMBER: int + DOWNPORT_FIELD_NUMBER: int + DOWNDOMAIN_FIELD_NUMBER: int + THUMBDOWNPARA_FIELD_NUMBER: int + ORIGINALDOWNPARA_FIELD_NUMBER: int + BIGDOWNPARA_FIELD_NUMBER: int + FILEID_FIELD_NUMBER: int + AUTODOWNTYPE_FIELD_NUMBER: int + ORDERDOWNTYPE_FIELD_NUMBER: int + BIGTHUMBDOWNPARA_FIELD_NUMBER: int + HTTPSURLFLAG_FIELD_NUMBER: int + DOWNIP6_FIELD_NUMBER: int + CLIENTIP6_FIELD_NUMBER: int + fileid: int + fileMd5: bytes + result: int + failMsg: bytes + @property + def imgInfo(self) -> ImgInfo: ... + @property + def thumbDownUrl(self) -> RepeatedScalarFieldContainer[bytes]: ... + @property + def originalDownUrl(self) -> RepeatedScalarFieldContainer[bytes]: ... + @property + def bigDownUrl(self) -> RepeatedScalarFieldContainer[bytes]: ... + @property + def downIp(self) -> RepeatedScalarFieldContainer[int]: ... + @property + def downPort(self) -> RepeatedScalarFieldContainer[int]: ... + downDomain: bytes + thumbDownPara: bytes + originalDownPara: bytes + bigDownPara: bytes + fileId: int + autoDownType: int + @property + def orderDownType(self) -> RepeatedScalarFieldContainer[int]: ... + bigThumbDownPara: bytes + httpsUrlFlag: int + @property + def downIp6(self) -> RepeatedCompositeFieldContainer[IPv6Info]: ... + clientIp6: bytes + def __init__(self, + *, + fileid: Optional[int] = ..., + fileMd5: Optional[bytes] = ..., + result: Optional[int] = ..., + failMsg: Optional[bytes] = ..., + imgInfo: Optional[ImgInfo] = ..., + thumbDownUrl: Optional[Iterable[bytes]] = ..., + originalDownUrl: Optional[Iterable[bytes]] = ..., + bigDownUrl: Optional[Iterable[bytes]] = ..., + downIp: Optional[Iterable[int]] = ..., + downPort: Optional[Iterable[int]] = ..., + downDomain: Optional[bytes] = ..., + thumbDownPara: Optional[bytes] = ..., + originalDownPara: Optional[bytes] = ..., + bigDownPara: Optional[bytes] = ..., + fileId: Optional[int] = ..., + autoDownType: Optional[int] = ..., + orderDownType: Optional[Iterable[int]] = ..., + bigThumbDownPara: Optional[bytes] = ..., + httpsUrlFlag: Optional[int] = ..., + downIp6: Optional[Iterable[IPv6Info]] = ..., + clientIp6: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["autoDownType",b"autoDownType","bigDownPara",b"bigDownPara","bigThumbDownPara",b"bigThumbDownPara","clientIp6",b"clientIp6","downDomain",b"downDomain","failMsg",b"failMsg","fileId",b"fileId","fileMd5",b"fileMd5","fileid",b"fileid","httpsUrlFlag",b"httpsUrlFlag","imgInfo",b"imgInfo","originalDownPara",b"originalDownPara","result",b"result","thumbDownPara",b"thumbDownPara"]) -> bool: ... + def ClearField(self, field_name: Literal["autoDownType",b"autoDownType","bigDownPara",b"bigDownPara","bigDownUrl",b"bigDownUrl","bigThumbDownPara",b"bigThumbDownPara","clientIp6",b"clientIp6","downDomain",b"downDomain","downIp",b"downIp","downIp6",b"downIp6","downPort",b"downPort","failMsg",b"failMsg","fileId",b"fileId","fileMd5",b"fileMd5","fileid",b"fileid","httpsUrlFlag",b"httpsUrlFlag","imgInfo",b"imgInfo","orderDownType",b"orderDownType","originalDownPara",b"originalDownPara","originalDownUrl",b"originalDownUrl","result",b"result","thumbDownPara",b"thumbDownPara","thumbDownUrl",b"thumbDownUrl"]) -> None: ... + +class GetPttUrlReq(Message): + DESCRIPTOR: Descriptor + GROUPCODE_FIELD_NUMBER: int + DSTUIN_FIELD_NUMBER: int + FILEID_FIELD_NUMBER: int + FILEMD5_FIELD_NUMBER: int + REQTERM_FIELD_NUMBER: int + REQPLATFORMTYPE_FIELD_NUMBER: int + INNERIP_FIELD_NUMBER: int + BUTYPE_FIELD_NUMBER: int + BUILDVER_FIELD_NUMBER: int + FILEID_FIELD_NUMBER: int + FILEKEY_FIELD_NUMBER: int + CODEC_FIELD_NUMBER: int + BUID_FIELD_NUMBER: int + REQTRANSFERTYPE_FIELD_NUMBER: int + ISAUTO_FIELD_NUMBER: int + groupCode: int + dstUin: int + fileid: int + fileMd5: bytes + reqTerm: int + reqPlatformType: int + innerIp: int + buType: int + buildVer: bytes + fileId: int + fileKey: bytes + codec: int + buId: int + reqTransferType: int + isAuto: int + def __init__(self, + *, + groupCode: Optional[int] = ..., + dstUin: Optional[int] = ..., + fileid: Optional[int] = ..., + fileMd5: Optional[bytes] = ..., + reqTerm: Optional[int] = ..., + reqPlatformType: Optional[int] = ..., + innerIp: Optional[int] = ..., + buType: Optional[int] = ..., + buildVer: Optional[bytes] = ..., + fileId: Optional[int] = ..., + fileKey: Optional[bytes] = ..., + codec: Optional[int] = ..., + buId: Optional[int] = ..., + reqTransferType: Optional[int] = ..., + isAuto: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["buId",b"buId","buType",b"buType","buildVer",b"buildVer","codec",b"codec","dstUin",b"dstUin","fileId",b"fileId","fileKey",b"fileKey","fileMd5",b"fileMd5","fileid",b"fileid","groupCode",b"groupCode","innerIp",b"innerIp","isAuto",b"isAuto","reqPlatformType",b"reqPlatformType","reqTerm",b"reqTerm","reqTransferType",b"reqTransferType"]) -> bool: ... + def ClearField(self, field_name: Literal["buId",b"buId","buType",b"buType","buildVer",b"buildVer","codec",b"codec","dstUin",b"dstUin","fileId",b"fileId","fileKey",b"fileKey","fileMd5",b"fileMd5","fileid",b"fileid","groupCode",b"groupCode","innerIp",b"innerIp","isAuto",b"isAuto","reqPlatformType",b"reqPlatformType","reqTerm",b"reqTerm","reqTransferType",b"reqTransferType"]) -> None: ... + +class GetPttUrlRsp(Message): + DESCRIPTOR: Descriptor + FILEID_FIELD_NUMBER: int + FILEMD5_FIELD_NUMBER: int + RESULT_FIELD_NUMBER: int + FAILMSG_FIELD_NUMBER: int + DOWNURL_FIELD_NUMBER: int + DOWNIP_FIELD_NUMBER: int + DOWNPORT_FIELD_NUMBER: int + DOWNDOMAIN_FIELD_NUMBER: int + DOWNPARA_FIELD_NUMBER: int + FILEID_FIELD_NUMBER: int + TRANSFERTYPE_FIELD_NUMBER: int + ALLOWRETRY_FIELD_NUMBER: int + DOWNIP6_FIELD_NUMBER: int + CLIENTIP6_FIELD_NUMBER: int + DOMAIN_FIELD_NUMBER: int + fileid: int + fileMd5: bytes + result: int + failMsg: bytes + @property + def downUrl(self) -> RepeatedScalarFieldContainer[bytes]: ... + @property + def downIp(self) -> RepeatedScalarFieldContainer[int]: ... + @property + def downPort(self) -> RepeatedScalarFieldContainer[int]: ... + downDomain: bytes + downPara: bytes + fileId: int + transferType: int + allowRetry: int + @property + def downIp6(self) -> RepeatedCompositeFieldContainer[IPv6Info]: ... + clientIp6: bytes + domain: Text + def __init__(self, + *, + fileid: Optional[int] = ..., + fileMd5: Optional[bytes] = ..., + result: Optional[int] = ..., + failMsg: Optional[bytes] = ..., + downUrl: Optional[Iterable[bytes]] = ..., + downIp: Optional[Iterable[int]] = ..., + downPort: Optional[Iterable[int]] = ..., + downDomain: Optional[bytes] = ..., + downPara: Optional[bytes] = ..., + fileId: Optional[int] = ..., + transferType: Optional[int] = ..., + allowRetry: Optional[int] = ..., + downIp6: Optional[Iterable[IPv6Info]] = ..., + clientIp6: Optional[bytes] = ..., + domain: Optional[Text] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["allowRetry",b"allowRetry","clientIp6",b"clientIp6","domain",b"domain","downDomain",b"downDomain","downPara",b"downPara","failMsg",b"failMsg","fileId",b"fileId","fileMd5",b"fileMd5","fileid",b"fileid","result",b"result","transferType",b"transferType"]) -> bool: ... + def ClearField(self, field_name: Literal["allowRetry",b"allowRetry","clientIp6",b"clientIp6","domain",b"domain","downDomain",b"downDomain","downIp",b"downIp","downIp6",b"downIp6","downPara",b"downPara","downPort",b"downPort","downUrl",b"downUrl","failMsg",b"failMsg","fileId",b"fileId","fileMd5",b"fileMd5","fileid",b"fileid","result",b"result","transferType",b"transferType"]) -> None: ... + +class IPv6Info(Message): + DESCRIPTOR: Descriptor + IP6_FIELD_NUMBER: int + PORT_FIELD_NUMBER: int + ip6: bytes + port: int + def __init__(self, + *, + ip6: Optional[bytes] = ..., + port: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["ip6",b"ip6","port",b"port"]) -> bool: ... + def ClearField(self, field_name: Literal["ip6",b"ip6","port",b"port"]) -> None: ... + +class ImgInfo(Message): + DESCRIPTOR: Descriptor + FILEMD5_FIELD_NUMBER: int + FILETYPE_FIELD_NUMBER: int + FILESIZE_FIELD_NUMBER: int + FILEWIDTH_FIELD_NUMBER: int + FILEHEIGHT_FIELD_NUMBER: int + fileMd5: bytes + fileType: int + fileSize: int + fileWidth: int + fileHeight: int + def __init__(self, + *, + fileMd5: Optional[bytes] = ..., + fileType: Optional[int] = ..., + fileSize: Optional[int] = ..., + fileWidth: Optional[int] = ..., + fileHeight: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["fileHeight",b"fileHeight","fileMd5",b"fileMd5","fileSize",b"fileSize","fileType",b"fileType","fileWidth",b"fileWidth"]) -> bool: ... + def ClearField(self, field_name: Literal["fileHeight",b"fileHeight","fileMd5",b"fileMd5","fileSize",b"fileSize","fileType",b"fileType","fileWidth",b"fileWidth"]) -> None: ... + +class PicSize(Message): + DESCRIPTOR: Descriptor + ORIGINAL_FIELD_NUMBER: int + THUMB_FIELD_NUMBER: int + HIGH_FIELD_NUMBER: int + original: int + thumb: int + high: int + def __init__(self, + *, + original: Optional[int] = ..., + thumb: Optional[int] = ..., + high: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["high",b"high","original",b"original","thumb",b"thumb"]) -> bool: ... + def ClearField(self, field_name: Literal["high",b"high","original",b"original","thumb",b"thumb"]) -> None: ... + +class D388ReqBody(Message): + DESCRIPTOR: Descriptor + NETTYPE_FIELD_NUMBER: int + SUBCMD_FIELD_NUMBER: int + TRYUPIMGREQ_FIELD_NUMBER: int + GETIMGURLREQ_FIELD_NUMBER: int + TRYUPPTTREQ_FIELD_NUMBER: int + GETPTTURLREQ_FIELD_NUMBER: int + COMMANDID_FIELD_NUMBER: int + DELIMGREQ_FIELD_NUMBER: int + EXTENSION_FIELD_NUMBER: int + netType: int + subcmd: int + @property + def tryupImgReq(self) -> RepeatedCompositeFieldContainer[TryUpImgReq]: ... + @property + def getimgUrlReq(self) -> RepeatedCompositeFieldContainer[GetImgUrlReq]: ... + @property + def tryupPttReq(self) -> RepeatedCompositeFieldContainer[TryUpPttReq]: ... + @property + def getpttUrlReq(self) -> RepeatedCompositeFieldContainer[GetPttUrlReq]: ... + commandId: int + @property + def delImgReq(self) -> RepeatedCompositeFieldContainer[DelImgReq]: ... + extension: bytes + def __init__(self, + *, + netType: Optional[int] = ..., + subcmd: Optional[int] = ..., + tryupImgReq: Optional[Iterable[TryUpImgReq]] = ..., + getimgUrlReq: Optional[Iterable[GetImgUrlReq]] = ..., + tryupPttReq: Optional[Iterable[TryUpPttReq]] = ..., + getpttUrlReq: Optional[Iterable[GetPttUrlReq]] = ..., + commandId: Optional[int] = ..., + delImgReq: Optional[Iterable[DelImgReq]] = ..., + extension: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["commandId",b"commandId","extension",b"extension","netType",b"netType","subcmd",b"subcmd"]) -> bool: ... + def ClearField(self, field_name: Literal["commandId",b"commandId","delImgReq",b"delImgReq","extension",b"extension","getimgUrlReq",b"getimgUrlReq","getpttUrlReq",b"getpttUrlReq","netType",b"netType","subcmd",b"subcmd","tryupImgReq",b"tryupImgReq","tryupPttReq",b"tryupPttReq"]) -> None: ... + +class D388RspBody(Message): + DESCRIPTOR: Descriptor + CLIENTIP_FIELD_NUMBER: int + SUBCMD_FIELD_NUMBER: int + TRYUPIMGRSP_FIELD_NUMBER: int + GETIMGURLRSP_FIELD_NUMBER: int + TRYUPPTTRSP_FIELD_NUMBER: int + GETPTTURLRSP_FIELD_NUMBER: int + DELIMGRSP_FIELD_NUMBER: int + clientIp: int + subcmd: int + @property + def tryupImgRsp(self) -> RepeatedCompositeFieldContainer[D388TryUpImgRsp]: ... + @property + def getimgUrlRsp(self) -> RepeatedCompositeFieldContainer[GetImgUrlRsp]: ... + @property + def tryupPttRsp(self) -> RepeatedCompositeFieldContainer[TryUpPttRsp]: ... + @property + def getpttUrlRsp(self) -> RepeatedCompositeFieldContainer[GetPttUrlRsp]: ... + @property + def delImgRsp(self) -> RepeatedCompositeFieldContainer[DelImgRsp]: ... + def __init__(self, + *, + clientIp: Optional[int] = ..., + subcmd: Optional[int] = ..., + tryupImgRsp: Optional[Iterable[D388TryUpImgRsp]] = ..., + getimgUrlRsp: Optional[Iterable[GetImgUrlRsp]] = ..., + tryupPttRsp: Optional[Iterable[TryUpPttRsp]] = ..., + getpttUrlRsp: Optional[Iterable[GetPttUrlRsp]] = ..., + delImgRsp: Optional[Iterable[DelImgRsp]] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["clientIp",b"clientIp","subcmd",b"subcmd"]) -> bool: ... + def ClearField(self, field_name: Literal["clientIp",b"clientIp","delImgRsp",b"delImgRsp","getimgUrlRsp",b"getimgUrlRsp","getpttUrlRsp",b"getpttUrlRsp","subcmd",b"subcmd","tryupImgRsp",b"tryupImgRsp","tryupPttRsp",b"tryupPttRsp"]) -> None: ... + +class TryUpImgReq(Message): + DESCRIPTOR: Descriptor + GROUPCODE_FIELD_NUMBER: int + SRCUIN_FIELD_NUMBER: int + FILEID_FIELD_NUMBER: int + FILEMD5_FIELD_NUMBER: int + FILESIZE_FIELD_NUMBER: int + FILENAME_FIELD_NUMBER: int + SRCTERM_FIELD_NUMBER: int + PLATFORMTYPE_FIELD_NUMBER: int + BUTYPE_FIELD_NUMBER: int + PICWIDTH_FIELD_NUMBER: int + PICHEIGHT_FIELD_NUMBER: int + PICTYPE_FIELD_NUMBER: int + BUILDVER_FIELD_NUMBER: int + INNERIP_FIELD_NUMBER: int + APPPICTYPE_FIELD_NUMBER: int + ORIGINALPIC_FIELD_NUMBER: int + FILEINDEX_FIELD_NUMBER: int + DSTUIN_FIELD_NUMBER: int + SRVUPLOAD_FIELD_NUMBER: int + TRANSFERURL_FIELD_NUMBER: int + QQMEETGUILDID_FIELD_NUMBER: int + QQMEETCHANNELID_FIELD_NUMBER: int + groupCode: int + srcUin: int + fileId: int + fileMd5: bytes + fileSize: int + fileName: bytes + srcTerm: int + platformType: int + buType: int + picWidth: int + picHeight: int + picType: int + buildVer: bytes + innerIp: int + appPicType: int + originalPic: int + fileIndex: bytes + dstUin: int + srvUpload: int + transferUrl: bytes + qqmeetGuildId: int + qqmeetChannelId: int + def __init__(self, + *, + groupCode: Optional[int] = ..., + srcUin: Optional[int] = ..., + fileId: Optional[int] = ..., + fileMd5: Optional[bytes] = ..., + fileSize: Optional[int] = ..., + fileName: Optional[bytes] = ..., + srcTerm: Optional[int] = ..., + platformType: Optional[int] = ..., + buType: Optional[int] = ..., + picWidth: Optional[int] = ..., + picHeight: Optional[int] = ..., + picType: Optional[int] = ..., + buildVer: Optional[bytes] = ..., + innerIp: Optional[int] = ..., + appPicType: Optional[int] = ..., + originalPic: Optional[int] = ..., + fileIndex: Optional[bytes] = ..., + dstUin: Optional[int] = ..., + srvUpload: Optional[int] = ..., + transferUrl: Optional[bytes] = ..., + qqmeetGuildId: Optional[int] = ..., + qqmeetChannelId: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["appPicType",b"appPicType","buType",b"buType","buildVer",b"buildVer","dstUin",b"dstUin","fileId",b"fileId","fileIndex",b"fileIndex","fileMd5",b"fileMd5","fileName",b"fileName","fileSize",b"fileSize","groupCode",b"groupCode","innerIp",b"innerIp","originalPic",b"originalPic","picHeight",b"picHeight","picType",b"picType","picWidth",b"picWidth","platformType",b"platformType","qqmeetChannelId",b"qqmeetChannelId","qqmeetGuildId",b"qqmeetGuildId","srcTerm",b"srcTerm","srcUin",b"srcUin","srvUpload",b"srvUpload","transferUrl",b"transferUrl"]) -> bool: ... + def ClearField(self, field_name: Literal["appPicType",b"appPicType","buType",b"buType","buildVer",b"buildVer","dstUin",b"dstUin","fileId",b"fileId","fileIndex",b"fileIndex","fileMd5",b"fileMd5","fileName",b"fileName","fileSize",b"fileSize","groupCode",b"groupCode","innerIp",b"innerIp","originalPic",b"originalPic","picHeight",b"picHeight","picType",b"picType","picWidth",b"picWidth","platformType",b"platformType","qqmeetChannelId",b"qqmeetChannelId","qqmeetGuildId",b"qqmeetGuildId","srcTerm",b"srcTerm","srcUin",b"srcUin","srvUpload",b"srvUpload","transferUrl",b"transferUrl"]) -> None: ... + +class D388TryUpImgRsp(Message): + DESCRIPTOR: Descriptor + FILEID_FIELD_NUMBER: int + RESULT_FIELD_NUMBER: int + FAILMSG_FIELD_NUMBER: int + FILEEXIT_FIELD_NUMBER: int + IMGINFO_FIELD_NUMBER: int + UPIP_FIELD_NUMBER: int + UPPORT_FIELD_NUMBER: int + UPUKEY_FIELD_NUMBER: int + FILEID_FIELD_NUMBER: int + UPOFFSET_FIELD_NUMBER: int + BLOCKSIZE_FIELD_NUMBER: int + NEWBIGCHAN_FIELD_NUMBER: int + UPIP6_FIELD_NUMBER: int + CLIENTIP6_FIELD_NUMBER: int + DOWNLOADINDEX_FIELD_NUMBER: int + INFO4BUSI_FIELD_NUMBER: int + fileId: int + result: int + failMsg: bytes + fileExit: bool + @property + def imgInfo(self) -> ImgInfo: ... + @property + def upIp(self) -> RepeatedScalarFieldContainer[int]: ... + @property + def upPort(self) -> RepeatedScalarFieldContainer[int]: ... + upUkey: bytes + fileid: int + upOffset: int + blockSize: int + newBigChan: bool + @property + def upIp6(self) -> RepeatedCompositeFieldContainer[IPv6Info]: ... + clientIp6: bytes + downloadIndex: bytes + @property + def info4Busi(self) -> TryUpInfo4Busi: ... + def __init__(self, + *, + fileId: Optional[int] = ..., + result: Optional[int] = ..., + failMsg: Optional[bytes] = ..., + fileExit: Optional[bool] = ..., + imgInfo: Optional[ImgInfo] = ..., + upIp: Optional[Iterable[int]] = ..., + upPort: Optional[Iterable[int]] = ..., + upUkey: Optional[bytes] = ..., + fileid: Optional[int] = ..., + upOffset: Optional[int] = ..., + blockSize: Optional[int] = ..., + newBigChan: Optional[bool] = ..., + upIp6: Optional[Iterable[IPv6Info]] = ..., + clientIp6: Optional[bytes] = ..., + downloadIndex: Optional[bytes] = ..., + info4Busi: Optional[TryUpInfo4Busi] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["blockSize",b"blockSize","clientIp6",b"clientIp6","downloadIndex",b"downloadIndex","failMsg",b"failMsg","fileExit",b"fileExit","fileId",b"fileId","fileid",b"fileid","imgInfo",b"imgInfo","info4Busi",b"info4Busi","newBigChan",b"newBigChan","result",b"result","upOffset",b"upOffset","upUkey",b"upUkey"]) -> bool: ... + def ClearField(self, field_name: Literal["blockSize",b"blockSize","clientIp6",b"clientIp6","downloadIndex",b"downloadIndex","failMsg",b"failMsg","fileExit",b"fileExit","fileId",b"fileId","fileid",b"fileid","imgInfo",b"imgInfo","info4Busi",b"info4Busi","newBigChan",b"newBigChan","result",b"result","upIp",b"upIp","upIp6",b"upIp6","upOffset",b"upOffset","upPort",b"upPort","upUkey",b"upUkey"]) -> None: ... + +class TryUpInfo4Busi(Message): + DESCRIPTOR: Descriptor + DOWNDOMAIN_FIELD_NUMBER: int + THUMBDOWNURL_FIELD_NUMBER: int + ORIGINALDOWNURL_FIELD_NUMBER: int + BIGDOWNURL_FIELD_NUMBER: int + FILERESID_FIELD_NUMBER: int + downDomain: bytes + thumbDownUrl: bytes + originalDownUrl: bytes + bigDownUrl: bytes + fileResid: bytes + def __init__(self, + *, + downDomain: Optional[bytes] = ..., + thumbDownUrl: Optional[bytes] = ..., + originalDownUrl: Optional[bytes] = ..., + bigDownUrl: Optional[bytes] = ..., + fileResid: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["bigDownUrl",b"bigDownUrl","downDomain",b"downDomain","fileResid",b"fileResid","originalDownUrl",b"originalDownUrl","thumbDownUrl",b"thumbDownUrl"]) -> bool: ... + def ClearField(self, field_name: Literal["bigDownUrl",b"bigDownUrl","downDomain",b"downDomain","fileResid",b"fileResid","originalDownUrl",b"originalDownUrl","thumbDownUrl",b"thumbDownUrl"]) -> None: ... + +class TryUpPttReq(Message): + DESCRIPTOR: Descriptor + GROUPCODE_FIELD_NUMBER: int + SRCUIN_FIELD_NUMBER: int + FILEID_FIELD_NUMBER: int + FILEMD5_FIELD_NUMBER: int + FILESIZE_FIELD_NUMBER: int + FILENAME_FIELD_NUMBER: int + SRCTERM_FIELD_NUMBER: int + PLATFORMTYPE_FIELD_NUMBER: int + BUTYPE_FIELD_NUMBER: int + BUILDVER_FIELD_NUMBER: int + INNERIP_FIELD_NUMBER: int + VOICELENGTH_FIELD_NUMBER: int + NEWUPCHAN_FIELD_NUMBER: int + CODEC_FIELD_NUMBER: int + VOICETYPE_FIELD_NUMBER: int + BUID_FIELD_NUMBER: int + groupCode: int + srcUin: int + fileId: int + fileMd5: bytes + fileSize: int + fileName: bytes + srcTerm: int + platformType: int + buType: int + buildVer: bytes + innerIp: int + voiceLength: int + newUpChan: bool + codec: int + voiceType: int + buId: int + def __init__(self, + *, + groupCode: Optional[int] = ..., + srcUin: Optional[int] = ..., + fileId: Optional[int] = ..., + fileMd5: Optional[bytes] = ..., + fileSize: Optional[int] = ..., + fileName: Optional[bytes] = ..., + srcTerm: Optional[int] = ..., + platformType: Optional[int] = ..., + buType: Optional[int] = ..., + buildVer: Optional[bytes] = ..., + innerIp: Optional[int] = ..., + voiceLength: Optional[int] = ..., + newUpChan: Optional[bool] = ..., + codec: Optional[int] = ..., + voiceType: Optional[int] = ..., + buId: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["buId",b"buId","buType",b"buType","buildVer",b"buildVer","codec",b"codec","fileId",b"fileId","fileMd5",b"fileMd5","fileName",b"fileName","fileSize",b"fileSize","groupCode",b"groupCode","innerIp",b"innerIp","newUpChan",b"newUpChan","platformType",b"platformType","srcTerm",b"srcTerm","srcUin",b"srcUin","voiceLength",b"voiceLength","voiceType",b"voiceType"]) -> bool: ... + def ClearField(self, field_name: Literal["buId",b"buId","buType",b"buType","buildVer",b"buildVer","codec",b"codec","fileId",b"fileId","fileMd5",b"fileMd5","fileName",b"fileName","fileSize",b"fileSize","groupCode",b"groupCode","innerIp",b"innerIp","newUpChan",b"newUpChan","platformType",b"platformType","srcTerm",b"srcTerm","srcUin",b"srcUin","voiceLength",b"voiceLength","voiceType",b"voiceType"]) -> None: ... + +class TryUpPttRsp(Message): + DESCRIPTOR: Descriptor + FILEID_FIELD_NUMBER: int + RESULT_FIELD_NUMBER: int + FAILMSG_FIELD_NUMBER: int + FILEEXIT_FIELD_NUMBER: int + UPIP_FIELD_NUMBER: int + UPPORT_FIELD_NUMBER: int + UPUKEY_FIELD_NUMBER: int + FILEID_FIELD_NUMBER: int + UPOFFSET_FIELD_NUMBER: int + BLOCKSIZE_FIELD_NUMBER: int + FILEKEY_FIELD_NUMBER: int + CHANNELTYPE_FIELD_NUMBER: int + UPIP6_FIELD_NUMBER: int + CLIENTIP6_FIELD_NUMBER: int + fileId: int + result: int + failMsg: bytes + fileExit: bool + @property + def upIp(self) -> RepeatedScalarFieldContainer[int]: ... + @property + def upPort(self) -> RepeatedScalarFieldContainer[int]: ... + upUkey: bytes + fileid: int + upOffset: int + blockSize: int + fileKey: bytes + channelType: int + @property + def upIp6(self) -> RepeatedCompositeFieldContainer[IPv6Info]: ... + clientIp6: bytes + def __init__(self, + *, + fileId: Optional[int] = ..., + result: Optional[int] = ..., + failMsg: Optional[bytes] = ..., + fileExit: Optional[bool] = ..., + upIp: Optional[Iterable[int]] = ..., + upPort: Optional[Iterable[int]] = ..., + upUkey: Optional[bytes] = ..., + fileid: Optional[int] = ..., + upOffset: Optional[int] = ..., + blockSize: Optional[int] = ..., + fileKey: Optional[bytes] = ..., + channelType: Optional[int] = ..., + upIp6: Optional[Iterable[IPv6Info]] = ..., + clientIp6: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["blockSize",b"blockSize","channelType",b"channelType","clientIp6",b"clientIp6","failMsg",b"failMsg","fileExit",b"fileExit","fileId",b"fileId","fileKey",b"fileKey","fileid",b"fileid","result",b"result","upOffset",b"upOffset","upUkey",b"upUkey"]) -> bool: ... + def ClearField(self, field_name: Literal["blockSize",b"blockSize","channelType",b"channelType","clientIp6",b"clientIp6","failMsg",b"failMsg","fileExit",b"fileExit","fileId",b"fileId","fileKey",b"fileKey","fileid",b"fileid","result",b"result","upIp",b"upIp","upIp6",b"upIp6","upOffset",b"upOffset","upPort",b"upPort","upUkey",b"upUkey"]) -> None: ... From 0d452b51ef64cd056242f06ca9b26857a427b384 Mon Sep 17 00:00:00 2001 From: a1025 Date: Mon, 21 Mar 2022 23:57:45 +0800 Subject: [PATCH 024/113] sync changes --- cai/api/client.py | 11 +- cai/client/client.py | 6 +- cai/client/highway.py | 162 +++++++++++++++++++++++++-- cai/client/message_service/models.py | 4 +- cai/client/message_service/upload.py | 29 +++++ cai/client/multi_msg/long_msg.py | 5 +- examples/login.py | 2 + 7 files changed, 199 insertions(+), 20 deletions(-) create mode 100644 cai/client/message_service/upload.py diff --git a/cai/api/client.py b/cai/api/client.py index af0f4831..85a9a580 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -8,7 +8,7 @@ """ import hashlib -from typing import Union, Optional, Sequence +from typing import Union, Optional, Sequence, BinaryIO from cai.client import OnlineStatus, Client as client_t from cai.client.message_service.encoders import make_group_msg_pkg, build_msg @@ -17,7 +17,10 @@ from .friend import Friend as _Friend from .group import Group as _Group from .login import Login as _Login +from cai.utils.gcode import GroupIdConvertor from cai.client.message_service.models import Element +from cai.client.message_service.upload import encode_d388_req +from ..client.highway import calc_file_md5_and_length, upload_image def make_client( @@ -53,13 +56,17 @@ async def send_group_msg(self, gid: int, msg: Sequence[Element]): seq = self.client.next_seq() # todo: split long msg return await self.client.send_unipkg_and_wait( - seq, "MessageSvc.PbSendMsg", make_group_msg_pkg( seq, gid, build_msg(msg) ).SerializeToString() ) + async def upload_image(self, group_id: int, file: BinaryIO): + await upload_image(file, group_id, self.client) + "todo: https://github.com/Mrs4s/MiraiGo/blob/714961d68f3dcd6956771d7b8bdea70d96ad65fd/client/image.go#L98" + + async def close(self): """Stop Client""" await self.client.close() diff --git a/cai/client/client.py b/cai/client/client.py index 2aeeda14..a3a26529 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -389,8 +389,10 @@ async def send_and_wait( await self.send(seq, command_name, packet) return await self._receive_store.fetch(seq, timeout) - async def send_unipkg_and_wait(self, seq: int, command_name: str, enc_packet: bytes, timeout=10.0): - await self.send_and_wait( + async def send_unipkg_and_wait(self, command_name: str, enc_packet: bytes, seq=-1, timeout=10.0): + if seq == -1: + seq = self.next_seq() + return await self.send_and_wait( seq, command_name, UniPacket.build(self.uin, seq, command_name, self._session_id, 1, enc_packet, self._siginfo.d2key), timeout diff --git a/cai/client/highway.py b/cai/client/highway.py index d1bb18ea..303125d3 100644 --- a/cai/client/highway.py +++ b/cai/client/highway.py @@ -1,24 +1,34 @@ import asyncio +import ipaddress +import struct +import uuid +from dataclasses import dataclass from hashlib import md5 -from typing import Tuple, BinaryIO, TYPE_CHECKING +from typing import Tuple, BinaryIO, TYPE_CHECKING, Optional +from cai.client.message_service.models import ImageElement +from cai.utils.gcode import GroupIdConvertor +from cai.client.message_service.upload import encode_d388_req, decode_d388_rsp from cai.pb.highway.protocol.highway_head_pb2 import highway_head if TYPE_CHECKING: from cai.client.client import Client + # https://github.com/Mrs4s/MiraiGo/blob/master/client/internal/highway/highway.go#L79 -def calc_file_md5(file: BinaryIO, bs=4096) -> str: +def calc_file_md5_and_length(file: BinaryIO, bs=4096) -> Tuple[bytes, int]: try: - fm = md5() + fm, length = md5(), 0 while True: bl = file.read(bs) fm.update(bl) if len(bl) != bs: break - return fm.hexdigest() + else: + length += len(bl) + return fm.digest(), length finally: file.seek(0) @@ -32,7 +42,7 @@ def create_highway_header( ) -> highway_head.DataHighwayHead: return highway_head.DataHighwayHead( version=1, - uin=bytes(str(client.uin)), + uin=str(client.uin).encode(), command=cmd, commandId=cmd_id, seq=client.next_seq(), @@ -42,23 +52,151 @@ def create_highway_header( ) -async def upload_file(addr: Tuple[str, int], file: BinaryIO, cmd_id: int, client: Client, *, block_size=65535): - fmd5, fl = calc_file_md5(file), len(file.read()) +def itoa(i: int) -> str: # int to address(str) + return ipaddress.IPv4Address(i).compressed + + +def to_img_id(i_uuid: int) -> str: + return "{%s}.png" % uuid.UUID(int=i_uuid) + + +def write_frame(head: bytes, body: bytes) -> bytes: + buf = bytearray() + buf.append(0x28) + buf += struct.pack("!II", len(head), len(body)) + buf += head + buf += body + buf.append(0x29) + return buf + + +async def read_frame(reader: asyncio.StreamReader) -> Tuple[highway_head.RspDataHighwayHead, bytes]: + head = await reader.read(9) + if len(head) != 9: + raise ValueError("Invalid frame head", head) + _, hl, bl = struct.unpack("!cII", head) + return ( + highway_head.RspDataHighwayHead.FromString(await reader.readexactly(hl)), + await reader.readexactly(bl) + ) + + +@dataclass +class ImageUploadResponse: + uploadKey: Optional[bytes] = None + uploadIp: Optional[int] = None + uploadPort: Optional[int] = None + width: Optional[int] = None + height: Optional[int] = None + message: Optional[str] = None + downloadIndex: Optional[str] = None + resourceId: Optional[int] = None + fileId: Optional[int] = None + fileType: Optional[int] = None + resultCode: Optional[int] = 0 + isExists: bool = False + hasMetaData: bool = False + + +def decode_upload_image_resp(data: bytes) -> ImageUploadResponse: + pkg = decode_d388_rsp(data).tryupImgRsp[0] + if pkg.result != 0: + return ImageUploadResponse(resultCode=pkg.result, message=pkg.failMsg.decode()) + + if pkg.fileExit: + if pkg.imgInfo: + info = pkg.imgInfo + return ImageUploadResponse( + isExists=True, fileId=pkg.fileId, hasMetaData=True, + fileType=info.fileType, width=info.fileWidth, height=info.fileHeight + ) + else: + return ImageUploadResponse(isExists=True, fileId=pkg.fileId) + return ImageUploadResponse( + isExists=False, + uploadIp=pkg.upIp[0], # todo: parse + uploadPort=pkg.upPort[0], + uploadKey=pkg.upUkey + ) + + +async def upload_image(file: BinaryIO, gid: int, client: "Client") -> ImageElement: + fmd5, fl = calc_file_md5_and_length(file) + ret = decode_upload_image_resp( + (await client.send_unipkg_and_wait( + "ImgStore.GroupPicUp", + encode_d388_req(GroupIdConvertor.to_group_code(gid), client.uin, fmd5, fl).SerializeToString() + )).data + ) + print(ret) + if ret.resultCode != 0: + raise ConnectionError(ret.resultCode) + elif not ret.isExists: + print("not exists") + #raise ValueError("Upload Error") + + await bdh_uploader( + b"PicUp.DataUp", + (itoa(ret.uploadIp), ret.uploadPort), + file, + 2, + ret.uploadKey, + client + ) file.seek(0) + + if ret.hasMetaData: + image_type = ret.fileType + w, h = ret.width, ret.height + else: + image_type = 1000 + w, h = (800, 600) + + return ImageElement( + id=ret.fileId, + filename=to_img_id(ret.fileId), + size=fl, + width=w, + height=h, + md5=fmd5, + filetype=image_type, + url=f"https://gchat.qpic.cn/gchatpic_new/1/0-0-{fmd5:x}/0?term=2" + ) + + +async def bdh_uploader( + cmd: bytes, + addr: Tuple[str, int], + file: BinaryIO, + cmd_id: int, + ticket: bytes, + client: "Client", *, + block_size=65535 +): + fmd5, fl = calc_file_md5_and_length(file) + print(addr) reader, writer = await asyncio.open_connection(*addr) bc = 0 while True: bl = file.read(block_size) if not bl: break - highway_head.ReqDataHighwayHead( - basehead=create_highway_header(b"PicUp.DataUp", 4096, cmd_id, client), + head = highway_head.ReqDataHighwayHead( + basehead=create_highway_header(cmd, 4096, cmd_id, client), seghead=highway_head.SegHead( filesize=fl, dataoffset=bc * block_size, datalength=len(bl), - serviceticket=None, #todo: https://github.com/Mrs4s/MiraiGo/blob/38990f6e1cf9ca0785709d03b66237a713338d0b/client/group_msg.go#L216 - + serviceticket=ticket, + # todo: https://github.com/Mrs4s/MiraiGo/blob/38990f6e1cf9ca0785709d03b66237a713338d0b/client/group_msg.go#L216 + md5=md5(bl).digest(), + fileMd5=fmd5 ) - ) + ).SerializeToString() + + writer.write(write_frame(head, bl)) + await writer.drain() + + resp, _ = await read_frame(reader) + bc += 1 diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index baa32edc..40e0c771 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -101,12 +101,14 @@ def type(self) -> str: @dataclass class ImageElement(Element): + id: int filename: str size: int width: int height: int md5: bytes - url: str + url: Optional[str] = None + filetype: Optional[int] = 1000 @property def type(self) -> str: diff --git a/cai/client/message_service/upload.py b/cai/client/message_service/upload.py new file mode 100644 index 00000000..52e5d7a5 --- /dev/null +++ b/cai/client/message_service/upload.py @@ -0,0 +1,29 @@ +import os + +from cai.pb.im.oidb.cmd0x388.cmd0x388_pb2 import D388ReqBody, TryUpImgReq, D388RspBody + + +def encode_d388_req(group_code: int, uin: int, md5: bytes, size: int) -> D388ReqBody: + fn = os.urandom(16).hex() + ".gif" + return D388ReqBody( + netType=3, + subcmd=1, + tryupImgReq=[TryUpImgReq( + groupCode=group_code, + srcUin=uin, + fileName=fn.encode(), + fileMd5=md5, + fileIndex=None, + fileSize=size, + srcTerm=5, + platformType=9, + buType=1, + picType=1000, + buildVer="8.2.7.4410".encode(), + appPicType=1006 + )] + ) + + +def decode_d388_rsp(data: bytes) -> D388RspBody: + return D388RspBody.FromString(data) diff --git a/cai/client/multi_msg/long_msg.py b/cai/client/multi_msg/long_msg.py index 5fc2fca2..345b4186 100644 --- a/cai/client/multi_msg/long_msg.py +++ b/cai/client/multi_msg/long_msg.py @@ -1,7 +1,7 @@ from cai.client import Command from cai.pb.highway.multi_msg.multi_msg_pb2 import MultiReqBody, MultiMsgApplyUpReq, MultiMsgApplyUpRsp, MultiRspBody from cai.pb.highway.long_msg.long_msg_pb2 import LongReqBody, LongMsgUpReq -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Tuple from dataclasses import dataclass @@ -32,9 +32,8 @@ class MultiApplyResp(Command): data: MultiMsgApplyUpRsp -async def build_multi_apply_up_pkg(client: "Client", group_id: int, data_len: int, data_md5: bytes, bu_type: int): +async def build_multi_apply_up_pkg(client: "Client", group_id: int, data_len: int, data_md5: bytes, bu_type: int) -> Tuple[LongReqBody, MultiMsgApplyUpRsp]: body: MultiApplyResp = await client.send_unipkg_and_wait( - client.next_seq(), "MultiMsg.ApplyUp", _encode_multi_req_body( group_id, data_len, data_md5, bu_type diff --git a/examples/login.py b/examples/login.py index fc533dd1..71fe5cf7 100644 --- a/examples/login.py +++ b/examples/login.py @@ -71,6 +71,8 @@ async def listen_message(client: Client, _, event: Event): TextElement("Supported.") ] ) + elif event.message[0].content == "1919": + print(await client.upload_image(event.group_id, open("test.jpg", "rb"))) async def handle_failure(client: Client, exception: Exception): From 8e41ae59ec267e1c8de6b005952dae256c274fc4 Mon Sep 17 00:00:00 2001 From: yitaoguanggao Date: Tue, 22 Mar 2022 13:43:37 +0800 Subject: [PATCH 025/113] fix: struct parse error --- cai/client/wtlogin/oicq.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cai/client/wtlogin/oicq.py b/cai/client/wtlogin/oicq.py index a17ac00f..6b7afda0 100644 --- a/cai/client/wtlogin/oicq.py +++ b/cai/client/wtlogin/oicq.py @@ -307,7 +307,10 @@ def __init__( self.t174 = _tlv_map.get(0x174) if self.t174: t178 = Packet(_tlv_map[0x178]) - self.sms_phone = t178.start().string(4).execute()[0] + try: + self.sms_phone = t178.start().string(4).execute()[0] + except struct.error: + self.sms_phone = None @dataclass From c87d7024b6b85aeb440945b830f27317ea6992c7 Mon Sep 17 00:00:00 2001 From: yitaoguanggao Date: Tue, 22 Mar 2022 14:14:15 +0800 Subject: [PATCH 026/113] sync changes --- cai/api/login.py | 10 ++++------ cai/client/highway.py | 2 +- cai/client/message_service/upload.py | 11 ++++++----- cai/utils/gcode.py | 4 ++-- examples/login.py | 9 +++++---- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/cai/api/login.py b/cai/api/login.py index 64ea60a5..55e967da 100644 --- a/cai/api/login.py +++ b/cai/api/login.py @@ -23,7 +23,9 @@ async def login(self): await self.client.reconnect() try: await self._executor("login") - except not LoginException: + except LoginException: + raise # user handle required + except Exception: await self.client.close() raise @@ -63,11 +65,7 @@ async def submit_slider_ticket(self, ticket: str) -> bool: LoginSliderException: Need slider ticket. LoginCaptchaException: Need captcha image. """ - try: - await self._executor("submit_slider_ticket", ticket) - except not LoginException: - await self.client.close() - raise + await self._executor("submit_slider_ticket", ticket) return True async def request_sms(self) -> bool: diff --git a/cai/client/highway.py b/cai/client/highway.py index 303125d3..a5a58775 100644 --- a/cai/client/highway.py +++ b/cai/client/highway.py @@ -125,7 +125,7 @@ async def upload_image(file: BinaryIO, gid: int, client: "Client") -> ImageEleme ret = decode_upload_image_resp( (await client.send_unipkg_and_wait( "ImgStore.GroupPicUp", - encode_d388_req(GroupIdConvertor.to_group_code(gid), client.uin, fmd5, fl).SerializeToString() + encode_d388_req(GroupIdConvertor.to_group_code(gid), client.uin, fmd5, fl, client.apk_info.version.encode()).SerializeToString() )).data ) print(ret) diff --git a/cai/client/message_service/upload.py b/cai/client/message_service/upload.py index 52e5d7a5..994654cd 100644 --- a/cai/client/message_service/upload.py +++ b/cai/client/message_service/upload.py @@ -3,8 +3,8 @@ from cai.pb.im.oidb.cmd0x388.cmd0x388_pb2 import D388ReqBody, TryUpImgReq, D388RspBody -def encode_d388_req(group_code: int, uin: int, md5: bytes, size: int) -> D388ReqBody: - fn = os.urandom(16).hex() + ".gif" +def encode_d388_req(group_code: int, uin: int, md5: bytes, size: int, build_ver: bytes) -> D388ReqBody: + fn = md5.hex() + ".gif" return D388ReqBody( netType=3, subcmd=1, @@ -13,14 +13,15 @@ def encode_d388_req(group_code: int, uin: int, md5: bytes, size: int) -> D388Req srcUin=uin, fileName=fn.encode(), fileMd5=md5, - fileIndex=None, fileSize=size, + fileId=0, srcTerm=5, platformType=9, buType=1, picType=1000, - buildVer="8.2.7.4410".encode(), - appPicType=1006 + buildVer=build_ver, + appPicType=1006, + originalPic=0, )] ) diff --git a/cai/utils/gcode.py b/cai/utils/gcode.py index 688d9a92..53b5714a 100644 --- a/cai/utils/gcode.py +++ b/cai/utils/gcode.py @@ -1,7 +1,7 @@ class GroupIdConvertor: @staticmethod def to_group_code(group_id: int) -> int: - left = group_id / 1000000 + left = group_id // 1000000 if 0 + 202 <= left <= 10 + 202: left -= 202 elif 11 + 480 - 11 <= left <= 19 + 480 - 11: @@ -20,7 +20,7 @@ def to_group_code(group_id: int) -> int: @staticmethod def to_group_uin(group_code: int) -> int: - left = group_code / 1000000 + left = group_code // 1000000 if 0 <= left <= 10: left += 202 elif 11 <= left <= 19: diff --git a/examples/login.py b/examples/login.py index 71fe5cf7..67c9a1e7 100644 --- a/examples/login.py +++ b/examples/login.py @@ -45,13 +45,14 @@ async def run(closed: asyncio.Event): print(f"Login Success! Client status: {ci.client.status!r}") except Exception as e: await handle_failure(ci, e) - ci.client.add_event_listener(functools.partial(listen_message, ci)) + #ci.client.add_event_listener(functools.partial(listen_message, ci)) + print(await ci.upload_image(478399804, open("test.png", "rb"))) while True: for status in OnlineStatus: if status == OnlineStatus.Offline: continue print(status, "Changed") - await ci.set_status(status, 67, True) + #await ci.set_status(status, 67, True) await asyncio.sleep(360) finally: closed.set() @@ -72,12 +73,12 @@ async def listen_message(client: Client, _, event: Event): ] ) elif event.message[0].content == "1919": - print(await client.upload_image(event.group_id, open("test.jpg", "rb"))) + print(await client.upload_image(event.group_id, open("test.png", "rb"))) async def handle_failure(client: Client, exception: Exception): if isinstance(exception, LoginSliderNeeded): - print("Verify url:", exception.verify_url) + print("Verify url:", exception.verify_url.replace("ssl.captcha.qq.com", "txhelper.glitch.me")) ticket = input("Please enter the ticket: ").strip() try: await client.submit_slider_ticket(ticket) From 6411f298c192977032caefd5be9c02510ca30f97 Mon Sep 17 00:00:00 2001 From: yitaoguanggao Date: Wed, 23 Mar 2022 13:53:54 +0800 Subject: [PATCH 027/113] add: highway & upload image --- cai/api/client.py | 3 +- cai/client/highway.py | 136 ++++++++++++++----------- cai/client/message_service/encoders.py | 32 +++++- cai/client/message_service/upload.py | 17 ++-- cai/log.py | 1 + examples/login.py | 11 +- 6 files changed, 126 insertions(+), 74 deletions(-) diff --git a/cai/api/client.py b/cai/api/client.py index 85a9a580..b7764d86 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -63,8 +63,7 @@ async def send_group_msg(self, gid: int, msg: Sequence[Element]): ) async def upload_image(self, group_id: int, file: BinaryIO): - await upload_image(file, group_id, self.client) - "todo: https://github.com/Mrs4s/MiraiGo/blob/714961d68f3dcd6956771d7b8bdea70d96ad65fd/client/image.go#L98" + return await upload_image(file, group_id, self.client) async def close(self): diff --git a/cai/client/highway.py b/cai/client/highway.py index a5a58775..1c02922b 100644 --- a/cai/client/highway.py +++ b/cai/client/highway.py @@ -1,13 +1,13 @@ import asyncio -import ipaddress import struct +import time import uuid from dataclasses import dataclass from hashlib import md5 -from typing import Tuple, BinaryIO, TYPE_CHECKING, Optional +from typing import Tuple, BinaryIO, TYPE_CHECKING, Optional, List, Any, Callable, Awaitable +from cai.log import highway as highway_logger from cai.client.message_service.models import ImageElement -from cai.utils.gcode import GroupIdConvertor from cai.client.message_service.upload import encode_d388_req, decode_d388_rsp from cai.pb.highway.protocol.highway_head_pb2 import highway_head @@ -24,10 +24,9 @@ def calc_file_md5_and_length(file: BinaryIO, bs=4096) -> Tuple[bytes, int]: while True: bl = file.read(bs) fm.update(bl) + length += len(bl) if len(bl) != bs: break - else: - length += len(bl) return fm.digest(), length finally: file.seek(0) @@ -53,11 +52,11 @@ def create_highway_header( def itoa(i: int) -> str: # int to address(str) - return ipaddress.IPv4Address(i).compressed + return ".".join([str(p) for p in i.to_bytes(4, "little")]) -def to_img_id(i_uuid: int) -> str: - return "{%s}.png" % uuid.UUID(int=i_uuid) +def to_img_id(b_uuid: bytes) -> str: + return "{%s}.png" % uuid.UUID(bytes=b_uuid) def write_frame(head: bytes, body: bytes) -> bytes: @@ -71,21 +70,29 @@ def write_frame(head: bytes, body: bytes) -> bytes: async def read_frame(reader: asyncio.StreamReader) -> Tuple[highway_head.RspDataHighwayHead, bytes]: - head = await reader.read(9) - if len(head) != 9: + head = await reader.readexactly(9) + if len(head) != 9 and head[0] != 0x28: raise ValueError("Invalid frame head", head) - _, hl, bl = struct.unpack("!cII", head) - return ( - highway_head.RspDataHighwayHead.FromString(await reader.readexactly(hl)), - await reader.readexactly(bl) - ) + hl, bl = struct.unpack("!II", head[1:]) + try: + return ( + highway_head.RspDataHighwayHead.FromString(await reader.readexactly(hl)), + await reader.readexactly(bl) + ) + finally: + await reader.read(1) # flush end byte + + +async def timeit(func: Awaitable) -> Tuple[float, Any]: + start = time.time() + result = await func + return time.time() - start, result @dataclass class ImageUploadResponse: uploadKey: Optional[bytes] = None - uploadIp: Optional[int] = None - uploadPort: Optional[int] = None + uploadAddr: Optional[List[Tuple[str, int]]] = None width: Optional[int] = None height: Optional[int] = None message: Optional[str] = None @@ -93,7 +100,7 @@ class ImageUploadResponse: resourceId: Optional[int] = None fileId: Optional[int] = None fileType: Optional[int] = None - resultCode: Optional[int] = 0 + resultCode: int = 0 isExists: bool = False hasMetaData: bool = False @@ -114,36 +121,47 @@ def decode_upload_image_resp(data: bytes) -> ImageUploadResponse: return ImageUploadResponse(isExists=True, fileId=pkg.fileId) return ImageUploadResponse( isExists=False, - uploadIp=pkg.upIp[0], # todo: parse - uploadPort=pkg.upPort[0], + uploadAddr=[(itoa(a), p) for a, p in zip(pkg.upIp, pkg.upPort)], uploadKey=pkg.upUkey ) async def upload_image(file: BinaryIO, gid: int, client: "Client") -> ImageElement: fmd5, fl = calc_file_md5_and_length(file) + print(encode_d388_req(gid, client.uin, fmd5, fl).SerializeToString().hex()) ret = decode_upload_image_resp( (await client.send_unipkg_and_wait( "ImgStore.GroupPicUp", - encode_d388_req(GroupIdConvertor.to_group_code(gid), client.uin, fmd5, fl, client.apk_info.version.encode()).SerializeToString() + encode_d388_req(gid, client.uin, fmd5, fl).SerializeToString() )).data ) print(ret) if ret.resultCode != 0: raise ConnectionError(ret.resultCode) elif not ret.isExists: - print("not exists") - #raise ValueError("Upload Error") - - await bdh_uploader( - b"PicUp.DataUp", - (itoa(ret.uploadIp), ret.uploadPort), - file, - 2, - ret.uploadKey, - client - ) - file.seek(0) + highway_logger.debug("file not found, uploading...") + + for addr in ret.uploadAddr: + try: + t, _ = await timeit( + bdh_uploader( + b"PicUp.DataUp", + addr, + file, + 2, + ret.uploadKey, + client + ) + ) + highway_logger.info("upload complete, use %fs in %d bytes" % (t * 1000, fl)) + except TimeoutError: + highway_logger.error(f"server {addr[0]}:{addr[1]} timeout") + continue + finally: + file.seek(0) + break + else: + raise ConnectionError("cannot upload image, all server failure") if ret.hasMetaData: image_type = ret.fileType @@ -154,13 +172,13 @@ async def upload_image(file: BinaryIO, gid: int, client: "Client") -> ImageEleme return ImageElement( id=ret.fileId, - filename=to_img_id(ret.fileId), + filename=to_img_id(fmd5), size=fl, width=w, height=h, md5=fmd5, filetype=image_type, - url=f"https://gchat.qpic.cn/gchatpic_new/1/0-0-{fmd5:x}/0?term=2" + url=f"https://gchat.qpic.cn/gchatpic_new/1/0-0-{fmd5.hex().upper()}/0?term=2" ) @@ -177,26 +195,28 @@ async def bdh_uploader( print(addr) reader, writer = await asyncio.open_connection(*addr) bc = 0 - while True: - bl = file.read(block_size) - if not bl: - break - head = highway_head.ReqDataHighwayHead( - basehead=create_highway_header(cmd, 4096, cmd_id, client), - seghead=highway_head.SegHead( - filesize=fl, - dataoffset=bc * block_size, - datalength=len(bl), - serviceticket=ticket, - # todo: https://github.com/Mrs4s/MiraiGo/blob/38990f6e1cf9ca0785709d03b66237a713338d0b/client/group_msg.go#L216 - md5=md5(bl).digest(), - fileMd5=fmd5 - ) - ).SerializeToString() - - writer.write(write_frame(head, bl)) - await writer.drain() - - resp, _ = await read_frame(reader) - - bc += 1 + try: + while True: + bl = file.read(block_size) + if not bl: + break + head = highway_head.ReqDataHighwayHead( + basehead=create_highway_header(cmd, 4096, cmd_id, client), + seghead=highway_head.SegHead( + filesize=fl, + dataoffset=bc * block_size, + datalength=len(bl), + serviceticket=ticket, + md5=md5(bl).digest(), + fileMd5=fmd5 + ) + ).SerializeToString() + + writer.write(write_frame(head, bl)) + await writer.drain() + + resp, _ = await read_frame(reader) + + bc += 1 + finally: + writer.close() diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py index d65efc86..5f613403 100644 --- a/cai/client/message_service/encoders.py +++ b/cai/client/message_service/encoders.py @@ -1,7 +1,7 @@ import random from typing import Sequence, TYPE_CHECKING, Dict, Type -from cai.pb.im.msg.msg_body import MsgBody, PlainText, RichText, Elem +from cai.pb.im.msg.msg_body import MsgBody, PlainText, RichText, CustomFace, Elem from cai.pb.msf.msg.svc.svc_pb2 import PbSendMsgReq, RoutingHead, Grp from cai.pb.msf.msg.comm.comm_pb2 import ContentHead from cai.client.packet import UniPacket @@ -20,16 +20,40 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: ret = [] for e in elements: # todo: support more element if isinstance(e, models.TextElement): - ret.append(PlainText(str=e.content.encode())) + ret.append( + Elem(text=PlainText(str=e.content.encode())) + ) + elif isinstance(e, models.ImageElement): + ret.append( + Elem( + custom_face=CustomFace( + file_type=66, + useful=1, + biz_type=0, #5 + width=e.width, + height=e.height, + file_id=e.id, + file_path=e.filename, + image_type=e.filetype, + origin=1, + size=e.size, + md5=e.md5, + flag=b"\x00\x00\x00\x00" + ) + ) + ) else: raise NotImplementedError(e) - return MsgBody( + d = MsgBody( rich_text=RichText( - elems=[Elem(text=e) for e in ret], + #elems=[Elem(text=e) for e in ret], + elems=ret, ptt=None ) ) + print(d.SerializeToString().hex()) + return d def encode_send_group_msg_req( diff --git a/cai/client/message_service/upload.py b/cai/client/message_service/upload.py index 994654cd..d38afe6a 100644 --- a/cai/client/message_service/upload.py +++ b/cai/client/message_service/upload.py @@ -3,10 +3,10 @@ from cai.pb.im.oidb.cmd0x388.cmd0x388_pb2 import D388ReqBody, TryUpImgReq, D388RspBody -def encode_d388_req(group_code: int, uin: int, md5: bytes, size: int, build_ver: bytes) -> D388ReqBody: - fn = md5.hex() + ".gif" +def encode_d388_req(group_code: int, uin: int, md5: bytes, size: int) -> D388ReqBody: + fn = md5.hex().upper() + ".jpg" return D388ReqBody( - netType=3, + netType=8, subcmd=1, tryupImgReq=[TryUpImgReq( groupCode=group_code, @@ -18,10 +18,13 @@ def encode_d388_req(group_code: int, uin: int, md5: bytes, size: int, build_ver: srcTerm=5, platformType=9, buType=1, - picType=1000, - buildVer=build_ver, - appPicType=1006, - originalPic=0, + picType=1003, + picWidth=1920, + picHeight=903, + buildVer=b"8.8.50.2324", + appPicType=1052, + originalPic=1, + srvUpload=0 )] ) diff --git a/cai/log.py b/cai/log.py index 1ca89ad1..64ed0a9e 100644 --- a/cai/log.py +++ b/cai/log.py @@ -12,3 +12,4 @@ logger = logging.getLogger("cai") network = logging.getLogger("cai.network") +highway = logging.getLogger("cai.highway") diff --git a/examples/login.py b/examples/login.py index 67c9a1e7..de030378 100644 --- a/examples/login.py +++ b/examples/login.py @@ -45,8 +45,7 @@ async def run(closed: asyncio.Event): print(f"Login Success! Client status: {ci.client.status!r}") except Exception as e: await handle_failure(ci, e) - #ci.client.add_event_listener(functools.partial(listen_message, ci)) - print(await ci.upload_image(478399804, open("test.png", "rb"))) + ci.client.add_event_listener(functools.partial(listen_message, ci)) while True: for status in OnlineStatus: if status == OnlineStatus.Offline: @@ -73,7 +72,13 @@ async def listen_message(client: Client, _, event: Event): ] ) elif event.message[0].content == "1919": - print(await client.upload_image(event.group_id, open("test.png", "rb"))) + await client.send_group_msg( + event.group_id, + [ + await client.upload_image(event.group_id, open("test.png", "rb")), + TextElement("1234") + ] + ) async def handle_failure(client: Client, exception: Exception): From 1a97045fbb64079374f12f86b3353fe603d1de54 Mon Sep 17 00:00:00 2001 From: yitaoguanggao Date: Thu, 24 Mar 2022 21:26:49 +0800 Subject: [PATCH 028/113] fix: send image to group --- cai/api/client.py | 1 - cai/client/highway.py | 7 +++---- cai/client/message_service/encoders.py | 11 +++++++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/cai/api/client.py b/cai/api/client.py index b7764d86..32ec17f6 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -65,7 +65,6 @@ async def send_group_msg(self, gid: int, msg: Sequence[Element]): async def upload_image(self, group_id: int, file: BinaryIO): return await upload_image(file, group_id, self.client) - async def close(self): """Stop Client""" await self.client.close() diff --git a/cai/client/highway.py b/cai/client/highway.py index 1c02922b..3be5904a 100644 --- a/cai/client/highway.py +++ b/cai/client/highway.py @@ -113,12 +113,13 @@ def decode_upload_image_resp(data: bytes) -> ImageUploadResponse: if pkg.fileExit: if pkg.imgInfo: info = pkg.imgInfo + # fuck: pkg.fileId != pkg.fileid return ImageUploadResponse( - isExists=True, fileId=pkg.fileId, hasMetaData=True, + isExists=True, fileId=pkg.fileid, hasMetaData=True, fileType=info.fileType, width=info.fileWidth, height=info.fileHeight ) else: - return ImageUploadResponse(isExists=True, fileId=pkg.fileId) + return ImageUploadResponse(isExists=True, fileId=pkg.fileid) return ImageUploadResponse( isExists=False, uploadAddr=[(itoa(a), p) for a, p in zip(pkg.upIp, pkg.upPort)], @@ -128,14 +129,12 @@ def decode_upload_image_resp(data: bytes) -> ImageUploadResponse: async def upload_image(file: BinaryIO, gid: int, client: "Client") -> ImageElement: fmd5, fl = calc_file_md5_and_length(file) - print(encode_d388_req(gid, client.uin, fmd5, fl).SerializeToString().hex()) ret = decode_upload_image_resp( (await client.send_unipkg_and_wait( "ImgStore.GroupPicUp", encode_d388_req(gid, client.uin, fmd5, fl).SerializeToString() )).data ) - print(ret) if ret.resultCode != 0: raise ConnectionError(ret.resultCode) elif not ret.isExists: diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py index 5f613403..c55373ef 100644 --- a/cai/client/message_service/encoders.py +++ b/cai/client/message_service/encoders.py @@ -29,16 +29,19 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: custom_face=CustomFace( file_type=66, useful=1, - biz_type=0, #5 + biz_type=0, width=e.width, height=e.height, file_id=e.id, file_path=e.filename, image_type=e.filetype, + source=200, origin=1, size=e.size, md5=e.md5, - flag=b"\x00\x00\x00\x00" + show_len=0, + download_len=0 + #flag=b"\x00\x00\x00\x00" ) ) ) @@ -64,8 +67,8 @@ def encode_send_group_msg_req( content_head=head, body=body, seq=seq, - rand=random.randrange(3000, 30000), - via=0 + rand=random.randrange(300000, 3000000), + via=1, ) From c318dcc672bc5e77bb06b58b7db902a7a85d7926 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 3 Apr 2022 13:19:38 +0800 Subject: [PATCH 029/113] sync changes --- cai/api/client.py | 4 ++- cai/client/client.py | 31 ++++++++++------ cai/client/message_service/decoders.py | 49 +++++++++++++------------- cai/client/message_service/models.py | 2 +- cai/connection/__init__.py | 10 +++++- 5 files changed, 57 insertions(+), 39 deletions(-) diff --git a/cai/api/client.py b/cai/api/client.py index 32ec17f6..85a9a580 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -63,7 +63,9 @@ async def send_group_msg(self, gid: int, msg: Sequence[Element]): ) async def upload_image(self, group_id: int, file: BinaryIO): - return await upload_image(file, group_id, self.client) + await upload_image(file, group_id, self.client) + "todo: https://github.com/Mrs4s/MiraiGo/blob/714961d68f3dcd6956771d7b8bdea70d96ad65fd/client/image.go#L98" + async def close(self): """Stop Client""" diff --git a/cai/client/client.py b/cai/client/client.py index a3a26529..c88a29ba 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -142,7 +142,7 @@ class Client: LISTENERS: Set[LT] = set() - def __init__(self, uin: int, password_md5: bytes, device: DeviceInfo, apk_info: ApkInfo): + def __init__(self, uin: int, password_md5: bytes, device: DeviceInfo, apk_info: ApkInfo, *, loop=None): # account info self._uin: int = uin self._password_md5: bytes = password_md5 @@ -188,9 +188,13 @@ def __init__(self, uin: int, password_md5: bytes, device: DeviceInfo, apk_info: self.device_info: DeviceInfo = device self.apk_info: ApkInfo = apk_info + + if not loop: + loop = asyncio.get_event_loop() + self._loop = loop def __str__(self) -> str: - return f"" + return f"" @property def uin(self) -> int: @@ -281,7 +285,7 @@ async def connect(self, server: Optional[SsoServer] = None) -> None: self._connection = await connect( _server.host, _server.port, ssl=False, timeout=3.0 ) - asyncio.create_task(self.receive()) + self._loop.create_task(self.receive()).add_done_callback(self._recv_done_cb) except ConnectionError as e: raise except Exception as e: @@ -290,6 +294,10 @@ async def connect(self, server: Optional[SsoServer] = None) -> None: f"server({_server.host}:{_server.port}): " + repr(e) ) + def _recv_done_cb(self, task): + log.network.warning("receiver stopped, try to reconnect") + self._loop.create_task(self.reconnect()) + async def disconnect(self) -> None: """Disconnect if already connected to the server.""" if self._connection: @@ -309,6 +317,7 @@ async def reconnect( log.network.debug("reconnecting...") if not change_server and self._connection: await self._connection.reconnect() + await self.register() return exclude = ( @@ -415,10 +424,8 @@ async def receive(self): """ while self.connected: try: - length: int = ( - struct.unpack(">i", await self.connection.read_bytes(4))[0] - - 4 - ) + length: int = int.from_bytes(await self.connection.read_bytes(4), "big") - 4 + # FIXME: length < 0 ? data = await self.connection.read_bytes(length) packet = IncomingPacket.parse( @@ -432,9 +439,11 @@ async def receive(self): f"(receive:{packet.ret_code}): {packet.command_name}" ) # do not block receive - asyncio.create_task(self._handle_incoming_packet(packet)) - except ConnectionAbortedError: - log.logger.debug(f"Client {self.uin} connection closed") + self._loop.create_task(self._handle_incoming_packet(packet)) + except ConnectionError: #ConnectionAbortedError: + log.logger.exception(f"Client {self.uin} connection closed") + break + #await self.reconnect(change_server=True) except Exception as e: log.logger.exception(e) @@ -960,7 +969,7 @@ async def heartbeat(self) -> None: self._heartbeat_enabled = True - while self._heartbeat_enabled and self.connected: + while self._heartbeat_enabled and not self._connection.closed: seq = self.next_seq() packet = encode_heartbeat( seq, self._session_id, self.device_info.imei, self._ksid, self.uin, self.apk_info.sub_app_id diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index 26f02974..e5b2983d 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -96,23 +96,23 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: if elem.custom_face.md5 and elem.custom_face.orig_url: res.append( ImageElement( - elem.custom_face.file_path, - elem.custom_face.size, - elem.custom_face.width, - elem.custom_face.height, - elem.custom_face.md5, - "https://gchat.qpic.cn" + elem.custom_face.orig_url, + filename=elem.custom_face.file_path, + size=elem.custom_face.size, + width=elem.custom_face.width, + height=elem.custom_face.height, + md5=elem.custom_face.md5, + url="https://gchat.qpic.cn" + elem.custom_face.orig_url, ) ) elif elem.custom_face.md5: res.append( ImageElement( - elem.custom_face.file_path, - elem.custom_face.size, - elem.custom_face.width, - elem.custom_face.height, - elem.custom_face.md5, - "https://gchat.qpic.cn/gchatpic_new/0/0-0-" + filename=elem.custom_face.file_path, + size=elem.custom_face.size, + width=elem.custom_face.width, + height=elem.custom_face.height, + md5=elem.custom_face.md5, + url="https://gchat.qpic.cn/gchatpic_new/0/0-0-" + elem.custom_face.md5.decode().upper() + "/0", ) @@ -122,13 +122,12 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: if elem.not_online_image.orig_url: res.append( ImageElement( - elem.not_online_image.file_path.decode("utf-8"), - elem.not_online_image.file_len, - elem.not_online_image.pic_width, - elem.not_online_image.pic_height, - elem.not_online_image.pic_md5, - "https://c2cpicdw.qpic.cn" - + elem.not_online_image.orig_url, + filename=elem.not_online_image.file_path.decode("utf-8"), + size=elem.not_online_image.file_len, + width=elem.not_online_image.pic_width, + height=elem.not_online_image.pic_height, + md5=elem.not_online_image.pic_md5, + url="https://c2cpicdw.qpic.cn" + elem.not_online_image.orig_url, ) ) elif ( @@ -137,12 +136,12 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: ): res.append( ImageElement( - elem.not_online_image.file_path.decode("utf-8"), - elem.not_online_image.file_len, - elem.not_online_image.pic_width, - elem.not_online_image.pic_height, - elem.not_online_image.pic_md5, - "https://c2cpicdw.qpic.cn/offpic_new/0/" + filename=elem.not_online_image.file_path.decode("utf-8"), + size=elem.not_online_image.file_len, + width=elem.not_online_image.pic_width, + height=elem.not_online_image.pic_height, + md5=elem.not_online_image.pic_md5, + url="https://c2cpicdw.qpic.cn/offpic_new/0/" + ( elem.not_online_image.res_id or elem.not_online_image.download_path diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index 40e0c771..7dd10ed9 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -101,12 +101,12 @@ def type(self) -> str: @dataclass class ImageElement(Element): - id: int filename: str size: int width: int height: int md5: bytes + id: Optional[int] = -1 url: Optional[str] = None filetype: Optional[int] = 1000 diff --git a/cai/connection/__init__.py b/cai/connection/__init__.py index 977f3784..3365a1ab 100644 --- a/cai/connection/__init__.py +++ b/cai/connection/__init__.py @@ -27,6 +27,7 @@ def __init__( self._host = host self._port = port self._ssl = ssl + self._closed = asyncio.Event() self.timeout = timeout self._reader: Optional[asyncio.StreamReader] = None @@ -58,7 +59,12 @@ def reader(self) -> asyncio.StreamReader: @property def closed(self) -> bool: - return self._writer is None + #return self._writer is None + return self._closed.is_set() + + @property + async def wait_closed(self): + await self._closed.wait() async def __aenter__(self): await self._connect() @@ -87,8 +93,10 @@ async def _connect(self): raise ConnectionError( f"Open connection to {self._host}:{self._port} failed" ) from e + self._closed.clear() async def close(self): + self._closed.set() if self._writer: self._writer.close() await self._writer.wait_closed() From 646bc7b9eaf28c8993eb64d0d0628977843a30c0 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 3 Apr 2022 14:16:30 +0800 Subject: [PATCH 030/113] add: reconnect & Client.closed --- cai/api/login.py | 2 +- cai/client/client.py | 33 ++++++++++++++++++++------------- cai/connection/__init__.py | 2 +- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/cai/api/login.py b/cai/api/login.py index 55e967da..01d6ff73 100644 --- a/cai/api/login.py +++ b/cai/api/login.py @@ -20,7 +20,7 @@ async def login(self): LoginSliderException: Need slider ticket. LoginCaptchaException: Need captcha image. """ - await self.client.reconnect() + await self.client.connect() try: await self._executor("login") except LoginException: diff --git a/cai/client/client.py b/cai/client/client.py index c88a29ba..81ce7437 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -188,7 +188,9 @@ def __init__(self, uin: int, password_md5: bytes, device: DeviceInfo, apk_info: self.device_info: DeviceInfo = device self.apk_info: ApkInfo = apk_info - + self._reconnect: bool = True + self.closed: asyncio.Event = asyncio.Event() + if not loop: loop = asyncio.get_event_loop() self._loop = loop @@ -294,9 +296,13 @@ async def connect(self, server: Optional[SsoServer] = None) -> None: f"server({_server.host}:{_server.port}): " + repr(e) ) - def _recv_done_cb(self, task): - log.network.warning("receiver stopped, try to reconnect") - self._loop.create_task(self.reconnect()) + def _recv_done_cb(self, _task): + if self._reconnect: + log.network.warning("receiver stopped, try to reconnect") + self._loop.create_task(self.reconnect()) + else: + log.network.warning("receiver stopped") + await self.close() async def disconnect(self) -> None: """Disconnect if already connected to the server.""" @@ -314,10 +320,13 @@ async def reconnect( change_server (bool, optional): True if you want to change the server. Defaults to False. server (Optional[SsoServer], optional): Which server you want to connect to. Defaults to None. """ - log.network.debug("reconnecting...") + if not change_server and self._connection: - await self._connection.reconnect() - await self.register() + log.network.debug("reconnecting...") + await self.connect() + await self.login() + await self.register(register_reason=RegPushReason.MsfByNetChange) + log.network.debug("reconnected") return exclude = ( @@ -330,7 +339,6 @@ async def reconnect( ) await self.disconnect() await self.connect(_server) - log.network.debug("reconnected") async def close(self) -> None: """Close the client and logout.""" @@ -343,6 +351,7 @@ async def close(self) -> None: await self.register(OnlineStatus.Offline) self._receive_store.cancel_all() await self.disconnect() + self.closed.set() @property def seq(self) -> int: @@ -424,9 +433,8 @@ async def receive(self): """ while self.connected: try: - length: int = int.from_bytes(await self.connection.read_bytes(4), "big") - 4 + length: int = int.from_bytes(await self.connection.read_bytes(4), "big", signed=False) - 4 - # FIXME: length < 0 ? data = await self.connection.read_bytes(length) packet = IncomingPacket.parse( data, @@ -440,10 +448,9 @@ async def receive(self): ) # do not block receive self._loop.create_task(self._handle_incoming_packet(packet)) - except ConnectionError: #ConnectionAbortedError: - log.logger.exception(f"Client {self.uin} connection closed") + except ConnectionAbortedError as e: + log.logger.error(f"{self.uin} connection lost: {str(e)}") break - #await self.reconnect(change_server=True) except Exception as e: log.logger.exception(e) diff --git a/cai/connection/__init__.py b/cai/connection/__init__.py index 3365a1ab..dcc8b7b3 100644 --- a/cai/connection/__init__.py +++ b/cai/connection/__init__.py @@ -64,7 +64,7 @@ def closed(self) -> bool: @property async def wait_closed(self): - await self._closed.wait() + return self._closed.wait async def __aenter__(self): await self._connect() From de9228947dfa3d9367ca12f8315f9c7858589df3 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 3 Apr 2022 14:32:09 +0800 Subject: [PATCH 031/113] revert change --- cai/client/message_service/encoders.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py index c55373ef..a088c324 100644 --- a/cai/client/message_service/encoders.py +++ b/cai/client/message_service/encoders.py @@ -48,15 +48,13 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: else: raise NotImplementedError(e) - d = MsgBody( + return MsgBody( rich_text=RichText( #elems=[Elem(text=e) for e in ret], elems=ret, ptt=None ) ) - print(d.SerializeToString().hex()) - return d def encode_send_group_msg_req( From 93279cff4784388c9fef28d5d41bebb44bd4c98d Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 3 Apr 2022 15:17:36 +0800 Subject: [PATCH 032/113] update: split highway.py --- cai/api/client.py | 15 +- cai/client/client.py | 4 +- cai/client/highway.py | 221 ------------------ cai/client/highway/__init__.py | 4 + cai/client/highway/decoders.py | 29 +++ .../upload.py => highway/encoders.py} | 7 +- cai/client/highway/frame.py | 29 +++ cai/client/highway/highway.py | 131 +++++++++++ cai/client/highway/models.py | 18 ++ cai/client/highway/utils.py | 32 +++ 10 files changed, 252 insertions(+), 238 deletions(-) delete mode 100644 cai/client/highway.py create mode 100644 cai/client/highway/__init__.py create mode 100644 cai/client/highway/decoders.py rename cai/client/{message_service/upload.py => highway/encoders.py} (85%) create mode 100644 cai/client/highway/frame.py create mode 100644 cai/client/highway/highway.py create mode 100644 cai/client/highway/models.py create mode 100644 cai/client/highway/utils.py diff --git a/cai/api/client.py b/cai/api/client.py index 85a9a580..be42e96a 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -10,17 +10,17 @@ import hashlib from typing import Union, Optional, Sequence, BinaryIO +from cai import log from cai.client import OnlineStatus, Client as client_t +from cai.client.highway import HighWaySession +from cai.client.message_service.models import Element, ImageElement from cai.client.message_service.encoders import make_group_msg_pkg, build_msg from cai.settings.device import DeviceInfo, new_device from cai.settings.protocol import ApkInfo + from .friend import Friend as _Friend from .group import Group as _Group from .login import Login as _Login -from cai.utils.gcode import GroupIdConvertor -from cai.client.message_service.models import Element -from cai.client.message_service.upload import encode_d388_req -from ..client.highway import calc_file_md5_and_length, upload_image def make_client( @@ -43,6 +43,7 @@ def make_client( class Client(_Login, _Friend, _Group): def __init__(self, client: client_t): self.client = client + self._highway_session = HighWaySession(client, logger=log.highway) @property def connected(self) -> bool: @@ -62,10 +63,8 @@ async def send_group_msg(self, gid: int, msg: Sequence[Element]): ).SerializeToString() ) - async def upload_image(self, group_id: int, file: BinaryIO): - await upload_image(file, group_id, self.client) - "todo: https://github.com/Mrs4s/MiraiGo/blob/714961d68f3dcd6956771d7b8bdea70d96ad65fd/client/image.go#L98" - + async def upload_image(self, group_id: int, file: BinaryIO) -> ImageElement: + return await self._highway_session.upload_image(file, group_id) async def close(self): """Stop Client""" diff --git a/cai/client/client.py b/cai/client/client.py index 81ce7437..471310d5 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -8,9 +8,7 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ -import logging import time -import struct import asyncio import secrets from typing import ( @@ -302,7 +300,7 @@ def _recv_done_cb(self, _task): self._loop.create_task(self.reconnect()) else: log.network.warning("receiver stopped") - await self.close() + self._loop.create_task(self.close()) async def disconnect(self) -> None: """Disconnect if already connected to the server.""" diff --git a/cai/client/highway.py b/cai/client/highway.py deleted file mode 100644 index 3be5904a..00000000 --- a/cai/client/highway.py +++ /dev/null @@ -1,221 +0,0 @@ -import asyncio -import struct -import time -import uuid -from dataclasses import dataclass -from hashlib import md5 -from typing import Tuple, BinaryIO, TYPE_CHECKING, Optional, List, Any, Callable, Awaitable - -from cai.log import highway as highway_logger -from cai.client.message_service.models import ImageElement -from cai.client.message_service.upload import encode_d388_req, decode_d388_rsp -from cai.pb.highway.protocol.highway_head_pb2 import highway_head - -if TYPE_CHECKING: - from cai.client.client import Client - - -# https://github.com/Mrs4s/MiraiGo/blob/master/client/internal/highway/highway.go#L79 - - -def calc_file_md5_and_length(file: BinaryIO, bs=4096) -> Tuple[bytes, int]: - try: - fm, length = md5(), 0 - while True: - bl = file.read(bs) - fm.update(bl) - length += len(bl) - if len(bl) != bs: - break - return fm.digest(), length - finally: - file.seek(0) - - -def create_highway_header( - cmd: bytes, - flag: int, - cmd_id: int, - client: "Client", - locale=2052 -) -> highway_head.DataHighwayHead: - return highway_head.DataHighwayHead( - version=1, - uin=str(client.uin).encode(), - command=cmd, - commandId=cmd_id, - seq=client.next_seq(), - appid=client.apk_info.app_id, - localeId=locale, - dataflag=flag - ) - - -def itoa(i: int) -> str: # int to address(str) - return ".".join([str(p) for p in i.to_bytes(4, "little")]) - - -def to_img_id(b_uuid: bytes) -> str: - return "{%s}.png" % uuid.UUID(bytes=b_uuid) - - -def write_frame(head: bytes, body: bytes) -> bytes: - buf = bytearray() - buf.append(0x28) - buf += struct.pack("!II", len(head), len(body)) - buf += head - buf += body - buf.append(0x29) - return buf - - -async def read_frame(reader: asyncio.StreamReader) -> Tuple[highway_head.RspDataHighwayHead, bytes]: - head = await reader.readexactly(9) - if len(head) != 9 and head[0] != 0x28: - raise ValueError("Invalid frame head", head) - hl, bl = struct.unpack("!II", head[1:]) - try: - return ( - highway_head.RspDataHighwayHead.FromString(await reader.readexactly(hl)), - await reader.readexactly(bl) - ) - finally: - await reader.read(1) # flush end byte - - -async def timeit(func: Awaitable) -> Tuple[float, Any]: - start = time.time() - result = await func - return time.time() - start, result - - -@dataclass -class ImageUploadResponse: - uploadKey: Optional[bytes] = None - uploadAddr: Optional[List[Tuple[str, int]]] = None - width: Optional[int] = None - height: Optional[int] = None - message: Optional[str] = None - downloadIndex: Optional[str] = None - resourceId: Optional[int] = None - fileId: Optional[int] = None - fileType: Optional[int] = None - resultCode: int = 0 - isExists: bool = False - hasMetaData: bool = False - - -def decode_upload_image_resp(data: bytes) -> ImageUploadResponse: - pkg = decode_d388_rsp(data).tryupImgRsp[0] - if pkg.result != 0: - return ImageUploadResponse(resultCode=pkg.result, message=pkg.failMsg.decode()) - - if pkg.fileExit: - if pkg.imgInfo: - info = pkg.imgInfo - # fuck: pkg.fileId != pkg.fileid - return ImageUploadResponse( - isExists=True, fileId=pkg.fileid, hasMetaData=True, - fileType=info.fileType, width=info.fileWidth, height=info.fileHeight - ) - else: - return ImageUploadResponse(isExists=True, fileId=pkg.fileid) - return ImageUploadResponse( - isExists=False, - uploadAddr=[(itoa(a), p) for a, p in zip(pkg.upIp, pkg.upPort)], - uploadKey=pkg.upUkey - ) - - -async def upload_image(file: BinaryIO, gid: int, client: "Client") -> ImageElement: - fmd5, fl = calc_file_md5_and_length(file) - ret = decode_upload_image_resp( - (await client.send_unipkg_and_wait( - "ImgStore.GroupPicUp", - encode_d388_req(gid, client.uin, fmd5, fl).SerializeToString() - )).data - ) - if ret.resultCode != 0: - raise ConnectionError(ret.resultCode) - elif not ret.isExists: - highway_logger.debug("file not found, uploading...") - - for addr in ret.uploadAddr: - try: - t, _ = await timeit( - bdh_uploader( - b"PicUp.DataUp", - addr, - file, - 2, - ret.uploadKey, - client - ) - ) - highway_logger.info("upload complete, use %fs in %d bytes" % (t * 1000, fl)) - except TimeoutError: - highway_logger.error(f"server {addr[0]}:{addr[1]} timeout") - continue - finally: - file.seek(0) - break - else: - raise ConnectionError("cannot upload image, all server failure") - - if ret.hasMetaData: - image_type = ret.fileType - w, h = ret.width, ret.height - else: - image_type = 1000 - w, h = (800, 600) - - return ImageElement( - id=ret.fileId, - filename=to_img_id(fmd5), - size=fl, - width=w, - height=h, - md5=fmd5, - filetype=image_type, - url=f"https://gchat.qpic.cn/gchatpic_new/1/0-0-{fmd5.hex().upper()}/0?term=2" - ) - - -async def bdh_uploader( - cmd: bytes, - addr: Tuple[str, int], - file: BinaryIO, - cmd_id: int, - ticket: bytes, - client: "Client", *, - block_size=65535 -): - fmd5, fl = calc_file_md5_and_length(file) - print(addr) - reader, writer = await asyncio.open_connection(*addr) - bc = 0 - try: - while True: - bl = file.read(block_size) - if not bl: - break - head = highway_head.ReqDataHighwayHead( - basehead=create_highway_header(cmd, 4096, cmd_id, client), - seghead=highway_head.SegHead( - filesize=fl, - dataoffset=bc * block_size, - datalength=len(bl), - serviceticket=ticket, - md5=md5(bl).digest(), - fileMd5=fmd5 - ) - ).SerializeToString() - - writer.write(write_frame(head, bl)) - await writer.drain() - - resp, _ = await read_frame(reader) - - bc += 1 - finally: - writer.close() diff --git a/cai/client/highway/__init__.py b/cai/client/highway/__init__.py new file mode 100644 index 00000000..b53b1834 --- /dev/null +++ b/cai/client/highway/__init__.py @@ -0,0 +1,4 @@ +from .highway import HighWaySession + + +__all__ = ["HighWaySession"] diff --git a/cai/client/highway/decoders.py b/cai/client/highway/decoders.py new file mode 100644 index 00000000..41ff971f --- /dev/null +++ b/cai/client/highway/decoders.py @@ -0,0 +1,29 @@ +from .models import ImageUploadResponse +from .utils import itoa +from ...pb.im.oidb.cmd0x388.cmd0x388_pb2 import D388RspBody + + +def decode_upload_image_resp(data: bytes) -> ImageUploadResponse: + pkg = decode_d388_rsp(data).tryupImgRsp[0] + if pkg.result != 0: + return ImageUploadResponse(resultCode=pkg.result, message=pkg.failMsg.decode()) + + if pkg.fileExit: + if pkg.imgInfo: + info = pkg.imgInfo + # fuck: pkg.fileId != pkg.fileid + return ImageUploadResponse( + isExists=True, fileId=pkg.fileid, hasMetaData=True, + fileType=info.fileType, width=info.fileWidth, height=info.fileHeight + ) + else: + return ImageUploadResponse(isExists=True, fileId=pkg.fileid) + return ImageUploadResponse( + isExists=False, + uploadAddr=[(itoa(a), p) for a, p in zip(pkg.upIp, pkg.upPort)], + uploadKey=pkg.upUkey + ) + + +def decode_d388_rsp(data: bytes) -> D388RspBody: + return D388RspBody.FromString(data) diff --git a/cai/client/message_service/upload.py b/cai/client/highway/encoders.py similarity index 85% rename from cai/client/message_service/upload.py rename to cai/client/highway/encoders.py index d38afe6a..ab733119 100644 --- a/cai/client/message_service/upload.py +++ b/cai/client/highway/encoders.py @@ -1,6 +1,4 @@ -import os - -from cai.pb.im.oidb.cmd0x388.cmd0x388_pb2 import D388ReqBody, TryUpImgReq, D388RspBody +from cai.pb.im.oidb.cmd0x388.cmd0x388_pb2 import D388ReqBody, TryUpImgReq def encode_d388_req(group_code: int, uin: int, md5: bytes, size: int) -> D388ReqBody: @@ -28,6 +26,3 @@ def encode_d388_req(group_code: int, uin: int, md5: bytes, size: int) -> D388Req )] ) - -def decode_d388_rsp(data: bytes) -> D388RspBody: - return D388RspBody.FromString(data) diff --git a/cai/client/highway/frame.py b/cai/client/highway/frame.py new file mode 100644 index 00000000..4c557930 --- /dev/null +++ b/cai/client/highway/frame.py @@ -0,0 +1,29 @@ +import asyncio +import struct +from typing import Tuple + +from cai.pb.highway.protocol.highway_head_pb2 import highway_head + + +def write_frame(head: bytes, body: bytes) -> bytes: + buf = bytearray() + buf.append(0x28) + buf += struct.pack("!II", len(head), len(body)) + buf += head + buf += body + buf.append(0x29) + return buf + + +async def read_frame(reader: asyncio.StreamReader) -> Tuple[highway_head.RspDataHighwayHead, bytes]: + head = await reader.readexactly(9) + if len(head) != 9 and head[0] != 0x28: + raise ValueError("Invalid frame head", head) + hl, bl = struct.unpack("!II", head[1:]) + try: + return ( + highway_head.RspDataHighwayHead.FromString(await reader.readexactly(hl)), + await reader.readexactly(bl) + ) + finally: + await reader.read(1) # flush end byte diff --git a/cai/client/highway/highway.py b/cai/client/highway/highway.py new file mode 100644 index 00000000..2dc1c711 --- /dev/null +++ b/cai/client/highway/highway.py @@ -0,0 +1,131 @@ +import asyncio +import logging +from hashlib import md5 +from typing import Tuple, BinaryIO, TYPE_CHECKING + +from .decoders import decode_upload_image_resp +from .encoders import encode_d388_req +from .utils import calc_file_md5_and_length, timeit, to_img_id +from .frame import read_frame, write_frame +from cai.pb.highway.protocol.highway_head_pb2 import highway_head +from ..message_service.models import ImageElement + +if TYPE_CHECKING: + from cai.client.client import Client + + +def _create_highway_header( + cmd: bytes, + flag: int, + cmd_id: int, + client: "Client", + locale=2052 +) -> highway_head.DataHighwayHead: + return highway_head.DataHighwayHead( + version=1, + uin=str(client.uin).encode(), + command=cmd, + commandId=cmd_id, + seq=client.next_seq(), + appid=client.apk_info.app_id, + localeId=locale, + dataflag=flag + ) + + +class HighWaySession: + def __init__(self, client: "Client", logger: logging.Logger = None): + if not logger: + logger = logging.getLogger(__name__) + self.logger = logger + self._client = client + + async def upload_image(self, file: BinaryIO, gid: int) -> ImageElement: + fmd5, fl = calc_file_md5_and_length(file) + ret = decode_upload_image_resp( + (await self._client.send_unipkg_and_wait( + "ImgStore.GroupPicUp", + encode_d388_req(gid, self._client.uin, fmd5, fl).SerializeToString() + )).data + ) + if ret.resultCode != 0: + raise ConnectionError(ret.resultCode) + elif not ret.isExists: + self.logger.debug("file not found, uploading...") + + for addr in ret.uploadAddr: + try: + t, _ = await timeit( + self.bdh_uploader( + b"PicUp.DataUp", + addr, + file, + 2, + ret.uploadKey + ) + ) + self.logger.info("upload complete, use %fs in %d bytes" % (t * 1000, fl)) + except TimeoutError: + self.logger.error(f"server {addr[0]}:{addr[1]} timeout") + continue + finally: + file.seek(0) + break + else: + raise ConnectionError("cannot upload image, all server failure") + + if ret.hasMetaData: + image_type = ret.fileType + w, h = ret.width, ret.height + else: + image_type = 1000 + w, h = (800, 600) + + return ImageElement( + id=ret.fileId, + filename=to_img_id(fmd5), + size=fl, + width=w, + height=h, + md5=fmd5, + filetype=image_type, + url=f"https://gchat.qpic.cn/gchatpic_new/1/0-0-{fmd5.hex().upper()}/0?term=2" + ) + + async def bdh_uploader( + self, + cmd: bytes, + addr: Tuple[str, int], + file: BinaryIO, + cmd_id: int, + ticket: bytes, *, + block_size=65535 + ): + fmd5, fl = calc_file_md5_and_length(file) + reader, writer = await asyncio.open_connection(*addr) + bc = 0 + try: + while True: + bl = file.read(block_size) + if not bl: + break + head = highway_head.ReqDataHighwayHead( + basehead=_create_highway_header(cmd, 4096, cmd_id, self._client), + seghead=highway_head.SegHead( + filesize=fl, + dataoffset=bc * block_size, + datalength=len(bl), + serviceticket=ticket, + md5=md5(bl).digest(), + fileMd5=fmd5 + ) + ).SerializeToString() + + writer.write(write_frame(head, bl)) + await writer.drain() + + resp, _ = await read_frame(reader) + + bc += 1 + finally: + writer.close() diff --git a/cai/client/highway/models.py b/cai/client/highway/models.py new file mode 100644 index 00000000..b598217d --- /dev/null +++ b/cai/client/highway/models.py @@ -0,0 +1,18 @@ +from dataclasses import dataclass +from typing import Optional, List, Tuple + + +@dataclass +class ImageUploadResponse: + uploadKey: Optional[bytes] = None + uploadAddr: Optional[List[Tuple[str, int]]] = None + width: Optional[int] = None + height: Optional[int] = None + message: Optional[str] = None + downloadIndex: Optional[str] = None + resourceId: Optional[int] = None + fileId: Optional[int] = None + fileType: Optional[int] = None + resultCode: int = 0 + isExists: bool = False + hasMetaData: bool = False diff --git a/cai/client/highway/utils.py b/cai/client/highway/utils.py new file mode 100644 index 00000000..5958499d --- /dev/null +++ b/cai/client/highway/utils.py @@ -0,0 +1,32 @@ +import time +import uuid +from hashlib import md5 +from typing import BinaryIO, Tuple, Awaitable, Any + + +def calc_file_md5_and_length(file: BinaryIO, bs=4096) -> Tuple[bytes, int]: + try: + fm, length = md5(), 0 + while True: + bl = file.read(bs) + fm.update(bl) + length += len(bl) + if len(bl) != bs: + break + return fm.digest(), length + finally: + file.seek(0) + + +def itoa(i: int) -> str: # int to address(str) + return ".".join([str(p) for p in i.to_bytes(4, "little")]) + + +def to_img_id(b_uuid: bytes) -> str: + return "{%s}.png" % uuid.UUID(bytes=b_uuid) + + +async def timeit(func: Awaitable) -> Tuple[float, Any]: + start = time.time() + result = await func + return time.time() - start, result From 270ed93cd15012864e3a63088743468be9bea98d Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 3 Apr 2022 16:21:49 +0800 Subject: [PATCH 033/113] update: reconnect method --- cai/client/client.py | 1 - 1 file changed, 1 deletion(-) diff --git a/cai/client/client.py b/cai/client/client.py index 471310d5..dd6eceea 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -322,7 +322,6 @@ async def reconnect( if not change_server and self._connection: log.network.debug("reconnecting...") await self.connect() - await self.login() await self.register(register_reason=RegPushReason.MsfByNetChange) log.network.debug("reconnected") return From 43ee0a4baf142f6219e6c715c9bad5f843f38ef6 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 3 Apr 2022 16:21:59 +0800 Subject: [PATCH 034/113] remove: unused code --- cai/client/message_service/encoders.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py index a088c324..be0371ad 100644 --- a/cai/client/message_service/encoders.py +++ b/cai/client/message_service/encoders.py @@ -1,16 +1,12 @@ import random -from typing import Sequence, TYPE_CHECKING, Dict, Type +from typing import Sequence from cai.pb.im.msg.msg_body import MsgBody, PlainText, RichText, CustomFace, Elem -from cai.pb.msf.msg.svc.svc_pb2 import PbSendMsgReq, RoutingHead, Grp +from cai.pb.msf.msg.svc.svc_pb2 import RoutingHead, Grp from cai.pb.msf.msg.comm.comm_pb2 import ContentHead -from cai.client.packet import UniPacket from . import models -from ...pb.msf.msg.svc import PbSendMsgReq - -if TYPE_CHECKING: - from cai.client.client import Client +from cai.pb.msf.msg.svc import PbSendMsgReq # todo: https://github.com/mamoe/mirai/blob/7d3971259de59cede94b7a55650c8a6ad4346a59/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbSendMsg.kt#L103 From 79059158d1f567f6f1c1f17150d2ff73bd4cc2a5 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 3 Apr 2022 17:42:00 +0800 Subject: [PATCH 035/113] fix: login failfast --- cai/client/client.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cai/client/client.py b/cai/client/client.py index dd6eceea..8d1dab09 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -8,9 +8,11 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ +import sys import time import asyncio import secrets +import traceback from typing import ( Any, Set, @@ -340,6 +342,7 @@ async def reconnect( async def close(self) -> None: """Close the client and logout.""" log.logger.warning("closing client") + self._reconnect = False if ( self.connected and self.status From 97ca3a4bddd71463d92f45b5aef7277cbabf802a Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 3 Apr 2022 17:58:04 +0800 Subject: [PATCH 036/113] add: FlashImage At RichMsg parse --- cai/client/message_service/decoders.py | 55 +++++++++++++++++++++++++- cai/client/message_service/models.py | 36 +++++++++++++++++ 2 files changed, 89 insertions(+), 2 deletions(-) diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index e5b2983d..8a3b49fb 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -8,7 +8,7 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ - +import zlib from itertools import chain from typing import Dict, List, Callable, Optional, Sequence @@ -18,19 +18,23 @@ from cai.pb.im.msg.msg_body import Elem from cai.pb.im.msg.service.comm_elem import ( MsgElemInfo_servtype2, + MsgElemInfo_servtype3, MsgElemInfo_servtype33, ) from .models import ( Element, + AtElement, FaceElement, PokeElement, TextElement, GroupMessage, ImageElement, ReplyElement, + RichMsgElement, PrivateMessage, SmallEmojiElement, + FlashImageElement ) @@ -67,7 +71,39 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: ) # TextElemDecoder if elem.HasField("text"): - res.append(TextElement(elem.text.str.decode("utf-8"))) + if elem.text.attr_6_buf: + res.append( + AtElement( + int.from_bytes(elem.text.attr_6_buf[7:11], "big", signed=False), + elem.text.str.decode("utf-8") + ) + ) + else: + res.append(TextElement(elem.text.str.decode("utf-8"))) + if elem.HasField("rich_msg"): + if elem.rich_msg.template_1[0]: + content = zlib.decompress(elem.rich_msg.template_1[1:]) + else: + content = elem.rich_msg.template_1[1:] + res.append( + RichMsgElement( + content, + elem.rich_msg.service_id if content[1] == 60 else -1 + ) + ) + break + if elem.HasField("light_app"): + if elem.light_app.data[0]: + content = zlib.decompress(elem.light_app.data[1:]) + else: + content = elem.light_app.data[1:] + res.append( + RichMsgElement( + content, + -2 + ) + ) + break # TextElemDecoder if elem.HasField("face"): res.append(FaceElement(elem.face.index)) @@ -167,6 +203,21 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: ) ] break + elif service_type == 3: + flash = MsgElemInfo_servtype3.FromString(elem.common_elem.pb_elem) + if flash.flash_troop_pic: + res.append( + FlashImageElement( + id=flash.flash_troop_pic.file_id, + filename=flash.flash_troop_pic.file_path, + filetype=flash.flash_troop_pic.file_type, + size=flash.flash_troop_pic.size, + md5=flash.flash_troop_pic.md5, + width=flash.flash_troop_pic.width, + height=flash.flash_troop_pic.height + ) + ) + break # TextElemDecoder elif service_type == 33: info = MsgElemInfo_servtype33.FromString( diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index 7dd10ed9..f2df2f4a 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -115,6 +115,13 @@ def type(self) -> str: return "image" +@dataclass +class FlashImageElement(ImageElement): + @property + def type(self) -> str: + return "flash_image" + + @dataclass class PokeElement(Element): id: int @@ -125,3 +132,32 @@ class PokeElement(Element): @property def type(self) -> str: return "poke" + + +@dataclass +class AtElement(Element): + target: int + display: Optional[str] = "" + + @property + def type(self) -> str: + return "at" + + +@dataclass +class RichMsgElement(Element): + """ + service_id: + case -1: + json + case -2: + light_app + default: + xml + """ + content: bytes + service_id: Optional[int] = -1 + + @property + def type(self) -> str: + return "rich_msg" From 398b92bd0a2349cbf599aa7369f981e719a98506 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 3 Apr 2022 22:44:44 +0800 Subject: [PATCH 037/113] add: raise send_group_msg error --- cai/api/client.py | 26 ++++++++++++++++++++------ cai/api/error.py | 18 ++++++++++++++++++ cai/client/client.py | 2 -- 3 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 cai/api/error.py diff --git a/cai/api/client.py b/cai/api/client.py index be42e96a..c86a661e 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -18,10 +18,13 @@ from cai.settings.device import DeviceInfo, new_device from cai.settings.protocol import ApkInfo +from .error import BotMutedException, AtAllLimitException, GroupMsgLimitException from .friend import Friend as _Friend from .group import Group as _Group from .login import Login as _Login +from cai.pb.msf.msg.svc import PbSendMsgResp + def make_client( uin: int, @@ -54,15 +57,26 @@ def status(self) -> Optional[OnlineStatus]: return self.client.status async def send_group_msg(self, gid: int, msg: Sequence[Element]): - seq = self.client.next_seq() # todo: split long msg - return await self.client.send_unipkg_and_wait( - "MessageSvc.PbSendMsg", - make_group_msg_pkg( - seq, gid, build_msg(msg) - ).SerializeToString() + resp: PbSendMsgResp = PbSendMsgResp.FromString( + (await self.client.send_unipkg_and_wait( + "MessageSvc.PbSendMsg", + make_group_msg_pkg( + self.client.next_seq(), gid, build_msg(msg) + ).SerializeToString() + )).data ) + if resp.result == 120: + raise BotMutedException + elif resp.result == 121: + raise AtAllLimitException + elif resp.result == 299: + raise GroupMsgLimitException + else: + # todo: store msg + return resp + async def upload_image(self, group_id: int, file: BinaryIO) -> ImageElement: return await self._highway_session.upload_image(file, group_id) diff --git a/cai/api/error.py b/cai/api/error.py new file mode 100644 index 00000000..569a4d44 --- /dev/null +++ b/cai/api/error.py @@ -0,0 +1,18 @@ +class BotException(Exception): + pass + + +class BotMutedException(BotException): + pass + + +class LimitException(Exception): + pass + + +class AtAllLimitException(LimitException): + pass + + +class GroupMsgLimitException(LimitException): + pass diff --git a/cai/client/client.py b/cai/client/client.py index 8d1dab09..888ed6cf 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -8,11 +8,9 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ -import sys import time import asyncio import secrets -import traceback from typing import ( Any, Set, From f73d8682b1615da94e63713c28d8efe4ceb9c482 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sun, 3 Apr 2022 23:39:11 +0800 Subject: [PATCH 038/113] add: send At & FlashImage --- cai/client/message_service/encoders.py | 63 ++++++++++++++++++-------- 1 file changed, 44 insertions(+), 19 deletions(-) diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py index be0371ad..416c5e97 100644 --- a/cai/client/message_service/encoders.py +++ b/cai/client/message_service/encoders.py @@ -1,7 +1,7 @@ import random -from typing import Sequence -from cai.pb.im.msg.msg_body import MsgBody, PlainText, RichText, CustomFace, Elem +from typing import Sequence, Union +from cai.pb.im.msg.msg_body import MsgBody, PlainText, RichText, CustomFace, Elem, CommonElem from cai.pb.msf.msg.svc.svc_pb2 import RoutingHead, Grp from cai.pb.msf.msg.comm.comm_pb2 import ContentHead @@ -12,6 +12,27 @@ # todo: https://github.com/mamoe/mirai/blob/7d3971259de59cede94b7a55650c8a6ad4346a59/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbSendMsg.kt#L103 # https://github.com/mamoe/mirai/blob/74fc5a50376ed0330b984af51e0fabc2147afdbb/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt + +def _build_image_elem(e: Union[models.ImageElement, models.FlashImageElement]) -> CustomFace: + return CustomFace( + file_type=66, + useful=1, + biz_type=0, + width=e.width, + height=e.height, + file_id=e.id, + file_path=e.filename, + image_type=e.filetype, + source=200, + origin=1, + size=e.size, + md5=e.md5, + show_len=0, + download_len=0 + #flag=b"\x00\x00\x00\x00" + ) + + def build_msg(elements: Sequence[models.Element]) -> MsgBody: ret = [] for e in elements: # todo: support more element @@ -22,22 +43,27 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: elif isinstance(e, models.ImageElement): ret.append( Elem( - custom_face=CustomFace( - file_type=66, - useful=1, - biz_type=0, - width=e.width, - height=e.height, - file_id=e.id, - file_path=e.filename, - image_type=e.filetype, - source=200, - origin=1, - size=e.size, - md5=e.md5, - show_len=0, - download_len=0 - #flag=b"\x00\x00\x00\x00" + custom_face=_build_image_elem(e) + ) + ) + elif isinstance(e, models.FlashImageElement): + ret.append( + Elem( + common_elem=CommonElem( + service_type=3, + pb_elem=_build_image_elem(e).SerializeToString() + ) + ) + ) + ret.append( # fallback info + Elem(text=PlainText(str="[闪照]请使用新版手机QQ查看".encode())) + ) + elif isinstance(e, models.AtElement): + ret.append( + Elem( + text=PlainText( + str=e.display.encode(), + attr_6_buf=b"\x00\x01\x00\x00\x00\x03\x00"+e.target.to_bytes(4, "big", signed=False)+b"\x00\x00" ) ) ) @@ -46,7 +72,6 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: return MsgBody( rich_text=RichText( - #elems=[Elem(text=e) for e in ret], elems=ret, ptt=None ) From 9afe29884d39cc80cb77a4392a5d98881a2c2725 Mon Sep 17 00:00:00 2001 From: a1025 Date: Mon, 4 Apr 2022 00:11:11 +0800 Subject: [PATCH 039/113] add: send RichMsg --- cai/client/message_service/decoders.py | 10 ++++------ cai/client/message_service/encoders.py | 18 +++++++++++++++++- cai/client/message_service/models.py | 2 +- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index 8a3b49fb..bd0a67a6 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -85,25 +85,23 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: content = zlib.decompress(elem.rich_msg.template_1[1:]) else: content = elem.rich_msg.template_1[1:] - res.append( + return [ RichMsgElement( content, elem.rich_msg.service_id if content[1] == 60 else -1 ) - ) - break + ] if elem.HasField("light_app"): if elem.light_app.data[0]: content = zlib.decompress(elem.light_app.data[1:]) else: content = elem.light_app.data[1:] - res.append( + return [ RichMsgElement( content, -2 ) - ) - break + ] # TextElemDecoder if elem.HasField("face"): res.append(FaceElement(elem.face.index)) diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py index 416c5e97..79cb8d66 100644 --- a/cai/client/message_service/encoders.py +++ b/cai/client/message_service/encoders.py @@ -1,7 +1,8 @@ import random +import zlib from typing import Sequence, Union -from cai.pb.im.msg.msg_body import MsgBody, PlainText, RichText, CustomFace, Elem, CommonElem +from cai.pb.im.msg.msg_body import MsgBody, PlainText, RichText, CustomFace, Elem, CommonElem, LightAppElem, RichMsg from cai.pb.msf.msg.svc.svc_pb2 import RoutingHead, Grp from cai.pb.msf.msg.comm.comm_pb2 import ContentHead @@ -67,6 +68,21 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: ) ) ) + elif isinstance(e, models.RichMsgElement): + if len(e.content) > 256: # compress require + content = b"\x01" + zlib.compress(e.content, level=6) + else: + content = b"\x00" + e.content + if e.service_id == -2: # LightApp + ret_elem = Elem(light_app=LightAppElem( + data=content + )) + else: # Json & Xml + ret_elem = Elem(rich_msg=RichMsg( + template_1=content, + service_id=0 if e.service_id < 0 else e.service_id + )) + ret.append(ret_elem) else: raise NotImplementedError(e) diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index f2df2f4a..5dbb2bb8 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -156,7 +156,7 @@ class RichMsgElement(Element): xml """ content: bytes - service_id: Optional[int] = -1 + service_id: Optional[int] = -2 @property def type(self) -> str: From 5cbafe85d41a2b3e4b620f3aafdc85d17498c490 Mon Sep 17 00:00:00 2001 From: a1025 Date: Mon, 4 Apr 2022 10:46:45 +0800 Subject: [PATCH 040/113] fix: remove redundancy data of Reply --- cai/client/message_service/decoders.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index bd0a67a6..dfdf3ad3 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -60,6 +60,12 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: # SrcElemDecoder if elem.HasField("src_msg"): if len(elem.src_msg.orig_seqs) > 0: + # preprocess + # Delete redundancy data + if index == 2: # Sent by PC + res = [] + else: + index += 1 # pass res.append( ReplyElement( elem.src_msg.orig_seqs[0], From 77cd27aff299553c8cfe26439622bf7256f27cf6 Mon Sep 17 00:00:00 2001 From: a1025 Date: Tue, 5 Apr 2022 00:07:48 +0800 Subject: [PATCH 041/113] fix: rich_msg parse --- cai/client/message_service/decoders.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index dfdf3ad3..13fe98ec 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -94,7 +94,7 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: return [ RichMsgElement( content, - elem.rich_msg.service_id if content[1] == 60 else -1 + elem.rich_msg.service_id if content[0] == 60 else -1 ) ] if elem.HasField("light_app"): From ab243e0c6719620e7f90ca8c2af7ca9fe3374d12 Mon Sep 17 00:00:00 2001 From: a1025 Date: Tue, 5 Apr 2022 00:09:25 +0800 Subject: [PATCH 042/113] change: heartbeat err --- cai/client/client.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cai/client/client.py b/cai/client/client.py index 888ed6cf..460a7919 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -985,8 +985,8 @@ async def heartbeat(self) -> None: ) if not isinstance(response, Heartbeat): raise RuntimeError("Invalid heartbeat response type!") - except Exception: - log.network.exception("Heartbeat.Alive: Failed") + except (ConnectionError, TimeoutError) as e: + log.network.error(f"Heartbeat.Alive: failed by {str(e)}") break await asyncio.sleep(self._heartbeat_interval) From 95d6d51609105a8f170e6c543b1889efd1f763b7 Mon Sep 17 00:00:00 2001 From: a1025 Date: Tue, 5 Apr 2022 00:29:34 +0800 Subject: [PATCH 043/113] change: log level --- cai/client/client.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cai/client/client.py b/cai/client/client.py index 460a7919..83217373 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -320,10 +320,10 @@ async def reconnect( """ if not change_server and self._connection: - log.network.debug("reconnecting...") + log.network.warning("reconnecting...") await self.connect() await self.register(register_reason=RegPushReason.MsfByNetChange) - log.network.debug("reconnected") + log.network.info("reconnected") return exclude = ( From d5fbcd865759517463325986b7b70aa07428ad53 Mon Sep 17 00:00:00 2001 From: a1025 Date: Tue, 5 Apr 2022 01:43:28 +0800 Subject: [PATCH 044/113] add: AtAll recv/send --- cai/client/message_service/decoders.py | 14 +++++++++----- cai/client/message_service/encoders.py | 9 +++++++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index 13fe98ec..95aca362 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -31,6 +31,7 @@ GroupMessage, ImageElement, ReplyElement, + AtAllElement, RichMsgElement, PrivateMessage, SmallEmojiElement, @@ -78,12 +79,15 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: # TextElemDecoder if elem.HasField("text"): if elem.text.attr_6_buf: - res.append( - AtElement( - int.from_bytes(elem.text.attr_6_buf[7:11], "big", signed=False), - elem.text.str.decode("utf-8") + if elem.text.attr_6_buf[6]: # AtAll + res.append(AtAllElement()) + else: + res.append( + AtElement( + int.from_bytes(elem.text.attr_6_buf[7:11], "big", signed=False), + elem.text.str.decode("utf-8") + ) ) - ) else: res.append(TextElement(elem.text.str.decode("utf-8"))) if elem.HasField("rich_msg"): diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py index 79cb8d66..e81f686e 100644 --- a/cai/client/message_service/encoders.py +++ b/cai/client/message_service/encoders.py @@ -68,6 +68,15 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: ) ) ) + elif isinstance(e, models.AtAllElement): + ret.append( + Elem( + text=PlainText( + str="@全体成员".encode(), + attr_6_buf=b"\x00\x01\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00" + ) + ) + ) elif isinstance(e, models.RichMsgElement): if len(e.content) > 256: # compress require content = b"\x01" + zlib.compress(e.content, level=6) From 325e0abadd2a77099817c0a365f0ccf25e7a9e85 Mon Sep 17 00:00:00 2001 From: a1025 Date: Tue, 5 Apr 2022 01:43:46 +0800 Subject: [PATCH 045/113] add: AtAll recv/send --- cai/client/message_service/models.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index 5dbb2bb8..40f447e6 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -99,6 +99,13 @@ def type(self) -> str: return "small_emoji" +@dataclass +class AtAllElement(Element): + @property + def type(self) -> str: + return "at_all" + + @dataclass class ImageElement(Element): filename: str From 18be327194837e044d0df22bffc140801f3169fb Mon Sep 17 00:00:00 2001 From: a1025 Date: Tue, 5 Apr 2022 01:46:57 +0800 Subject: [PATCH 046/113] add: Image.to_flash --- cai/client/message_service/models.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index 40f447e6..55a766be 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -121,6 +121,18 @@ class ImageElement(Element): def type(self) -> str: return "image" + def to_flash(self) -> "FlashImageElement": + return FlashImageElement( + filename=self.filename, + filetype=self.filetype, + size=self.size, + width=self.width, + height=self.height, + md5=self.md5, + id=self.id, + url=self.url + ) + @dataclass class FlashImageElement(ImageElement): From 446f383bba3ff3af60284bd4bc6b2c6f7d16d7d4 Mon Sep 17 00:00:00 2001 From: a1025 Date: Tue, 5 Apr 2022 01:54:31 +0800 Subject: [PATCH 047/113] fix: flash_image build err --- cai/client/message_service/encoders.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py index e81f686e..4cd61b25 100644 --- a/cai/client/message_service/encoders.py +++ b/cai/client/message_service/encoders.py @@ -12,6 +12,7 @@ # todo: https://github.com/mamoe/mirai/blob/7d3971259de59cede94b7a55650c8a6ad4346a59/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbSendMsg.kt#L103 # https://github.com/mamoe/mirai/blob/74fc5a50376ed0330b984af51e0fabc2147afdbb/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt +from ...pb.im.msg.service.comm_elem import MsgElemInfo_servtype3 def _build_image_elem(e: Union[models.ImageElement, models.FlashImageElement]) -> CustomFace: @@ -41,24 +42,24 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: ret.append( Elem(text=PlainText(str=e.content.encode())) ) - elif isinstance(e, models.ImageElement): - ret.append( - Elem( - custom_face=_build_image_elem(e) - ) - ) elif isinstance(e, models.FlashImageElement): ret.append( Elem( common_elem=CommonElem( service_type=3, - pb_elem=_build_image_elem(e).SerializeToString() + pb_elem=MsgElemInfo_servtype3(flash_troop_pic=_build_image_elem(e)).SerializeToString() ) ) ) ret.append( # fallback info Elem(text=PlainText(str="[闪照]请使用新版手机QQ查看".encode())) ) + elif isinstance(e, models.ImageElement): + ret.append( + Elem( + custom_face=_build_image_elem(e) + ) + ) elif isinstance(e, models.AtElement): ret.append( Elem( From 897e78c54ce82dfbc69e6f90fbd9ed7ac71ff052 Mon Sep 17 00:00:00 2001 From: a1025 Date: Tue, 5 Apr 2022 02:03:55 +0800 Subject: [PATCH 048/113] fix: flash_image no url --- cai/client/message_service/decoders.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index 95aca362..5ff29670 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -222,7 +222,8 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: size=flash.flash_troop_pic.size, md5=flash.flash_troop_pic.md5, width=flash.flash_troop_pic.width, - height=flash.flash_troop_pic.height + height=flash.flash_troop_pic.height, + url=f"https://gchat.qpic.cn/gchatpic_new/0/0-0-{flash.flash_troop_pic.md5.hex().upper()}/0" ) ) break From 0054da13bf0f70a212318e2e1643f3ad9c9e325c Mon Sep 17 00:00:00 2001 From: a1025 Date: Tue, 5 Apr 2022 02:26:47 +0800 Subject: [PATCH 049/113] add: shake_window & improve parser --- cai/client/message_service/decoders.py | 21 +++++++++++---------- cai/client/message_service/encoders.py | 12 +++++++++++- cai/client/message_service/models.py | 10 ++++++++++ 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index 5ff29670..907f06b2 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -35,7 +35,7 @@ RichMsgElement, PrivateMessage, SmallEmojiElement, - FlashImageElement + FlashImageElement, ShakeElement ) @@ -77,7 +77,7 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: ) ) # TextElemDecoder - if elem.HasField("text"): + elif elem.HasField("text"): if elem.text.attr_6_buf: if elem.text.attr_6_buf[6]: # AtAll res.append(AtAllElement()) @@ -90,7 +90,7 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: ) else: res.append(TextElement(elem.text.str.decode("utf-8"))) - if elem.HasField("rich_msg"): + elif elem.HasField("rich_msg"): if elem.rich_msg.template_1[0]: content = zlib.decompress(elem.rich_msg.template_1[1:]) else: @@ -101,7 +101,7 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: elem.rich_msg.service_id if content[0] == 60 else -1 ) ] - if elem.HasField("light_app"): + elif elem.HasField("light_app"): if elem.light_app.data[0]: content = zlib.decompress(elem.light_app.data[1:]) else: @@ -113,10 +113,10 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: ) ] # TextElemDecoder - if elem.HasField("face"): + elif elem.HasField("face"): res.append(FaceElement(elem.face.index)) # TextElemDecoder - if elem.HasField("small_emoji"): + elif elem.HasField("small_emoji"): index += 1 text = elems[index].text.str.decode("utf-8") res.append( @@ -136,7 +136,7 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: ) ) # PictureElemDecoder - if elem.HasField("custom_face"): + elif elem.HasField("custom_face"): if elem.custom_face.md5 and elem.custom_face.orig_url: res.append( ImageElement( @@ -162,7 +162,7 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: ) ) # PictureElemDecoder - if elem.HasField("not_online_image"): + elif elem.HasField("not_online_image"): if elem.not_online_image.orig_url: res.append( ImageElement( @@ -193,7 +193,7 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: + "/0", ) ) - if elem.HasField("common_elem"): + elif elem.HasField("common_elem"): service_type = elem.common_elem.service_type # PokeMsgElemDecoder if service_type == 2: @@ -233,7 +233,8 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: elem.common_elem.pb_elem ) res.append(FaceElement(info.index)) - + elif elem.HasField("shake_window"): + res.append(ShakeElement(stype=elem.shake_window.type, uin=elem.shake_window.uin)) index += 1 return res diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py index 4cd61b25..c0e8d89b 100644 --- a/cai/client/message_service/encoders.py +++ b/cai/client/message_service/encoders.py @@ -2,7 +2,8 @@ import zlib from typing import Sequence, Union -from cai.pb.im.msg.msg_body import MsgBody, PlainText, RichText, CustomFace, Elem, CommonElem, LightAppElem, RichMsg +from cai.pb.im.msg.msg_body import MsgBody, PlainText, RichText, CustomFace, Elem, CommonElem, LightAppElem, RichMsg, \ + ShakeWindow from cai.pb.msf.msg.svc.svc_pb2 import RoutingHead, Grp from cai.pb.msf.msg.comm.comm_pb2 import ContentHead @@ -93,6 +94,15 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: service_id=0 if e.service_id < 0 else e.service_id )) ret.append(ret_elem) + elif isinstance(e, models.ShakeElement): + ret.append( + Elem( + shake_window=ShakeWindow(type=e.stype, uin=e.uin) + ) + ) + ret.append( # fallback info + Elem(text=PlainText(str="[窗口抖动]请使用新版手机QQ查看".encode())) + ) else: raise NotImplementedError(e) diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index 55a766be..b5796572 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -180,3 +180,13 @@ class RichMsgElement(Element): @property def type(self) -> str: return "rich_msg" + + +@dataclass +class ShakeElement(Element): + stype: int = 0 + uin: int = 0 + + @property + def type(self) -> str: + return "shake" From e7d37e09141ca2d8f4b78f85d0084d53640cdf1e Mon Sep 17 00:00:00 2001 From: a1025 Date: Tue, 5 Apr 2022 03:00:58 +0800 Subject: [PATCH 050/113] add: poke send --- cai/client/message_service/decoders.py | 3 ++- cai/client/message_service/encoders.py | 19 ++++++++++++++++++- cai/client/message_service/models.py | 8 ++++---- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index 907f06b2..f815c3bd 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -200,6 +200,7 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: poke = MsgElemInfo_servtype2.FromString( elem.common_elem.pb_elem ) + print(poke) res = [ PokeElement( poke.poke_type @@ -207,7 +208,7 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: else poke.vaspoke_id, poke.vaspoke_name.decode("utf-8"), poke.poke_strength, - poke.double_hit, + poke.double_hit ) ] break diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py index c0e8d89b..41a5034d 100644 --- a/cai/client/message_service/encoders.py +++ b/cai/client/message_service/encoders.py @@ -9,11 +9,11 @@ from . import models from cai.pb.msf.msg.svc import PbSendMsgReq +from cai.pb.im.msg.service.comm_elem import MsgElemInfo_servtype3, MsgElemInfo_servtype2 # todo: https://github.com/mamoe/mirai/blob/7d3971259de59cede94b7a55650c8a6ad4346a59/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbSendMsg.kt#L103 # https://github.com/mamoe/mirai/blob/74fc5a50376ed0330b984af51e0fabc2147afdbb/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt -from ...pb.im.msg.service.comm_elem import MsgElemInfo_servtype3 def _build_image_elem(e: Union[models.ImageElement, models.FlashImageElement]) -> CustomFace: @@ -103,6 +103,23 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: ret.append( # fallback info Elem(text=PlainText(str="[窗口抖动]请使用新版手机QQ查看".encode())) ) + elif isinstance(e, models.PokeElement): + ret.append( + Elem( + common_elem=CommonElem( + service_type=2, + pb_elem=MsgElemInfo_servtype2( + vaspoke_id=0xFFFFFFFF, + vaspoke_name=e.name.encode(), + poke_type=e.id, + poke_strength=e.strength, + double_hit=e.double_hit, + poke_flag=0 + ).SerializeToString() + ) + ) + ) + else: raise NotImplementedError(e) diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index b5796572..6eb8e41e 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -143,10 +143,10 @@ def type(self) -> str: @dataclass class PokeElement(Element): - id: int - name: str - strength: int - double_hit: int + id: int = 0 + name: str = "" + strength: int = 0 + double_hit: int = 0 @property def type(self) -> str: From 1d3f731b6eaeb36392949f755f46d13d9d84c4ba Mon Sep 17 00:00:00 2001 From: a1025 Date: Tue, 5 Apr 2022 15:03:48 +0800 Subject: [PATCH 051/113] fix: highway bug & support send voice --- cai/api/client.py | 5 +- cai/client/highway/decoders.py | 18 +++- cai/client/highway/encoders.py | 43 ++++++-- cai/client/highway/highway.py | 139 +++++++++++++++++++------ cai/client/highway/models.py | 10 +- cai/client/highway/utils.py | 4 +- cai/client/message_service/decoders.py | 1 - cai/client/message_service/encoders.py | 9 +- cai/client/message_service/models.py | 30 ++++++ 9 files changed, 206 insertions(+), 53 deletions(-) diff --git a/cai/api/client.py b/cai/api/client.py index c86a661e..d90609a5 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -13,7 +13,7 @@ from cai import log from cai.client import OnlineStatus, Client as client_t from cai.client.highway import HighWaySession -from cai.client.message_service.models import Element, ImageElement +from cai.client.message_service.models import Element, ImageElement, VoiceElement from cai.client.message_service.encoders import make_group_msg_pkg, build_msg from cai.settings.device import DeviceInfo, new_device from cai.settings.protocol import ApkInfo @@ -80,6 +80,9 @@ async def send_group_msg(self, gid: int, msg: Sequence[Element]): async def upload_image(self, group_id: int, file: BinaryIO) -> ImageElement: return await self._highway_session.upload_image(file, group_id) + async def upload_voice(self, group_id: int, file: BinaryIO) -> VoiceElement: + return await self._highway_session.upload_voice(file, group_id) + async def close(self): """Stop Client""" await self.client.close() diff --git a/cai/client/highway/decoders.py b/cai/client/highway/decoders.py index 41ff971f..006e4d7f 100644 --- a/cai/client/highway/decoders.py +++ b/cai/client/highway/decoders.py @@ -1,6 +1,6 @@ -from .models import ImageUploadResponse +from .models import ImageUploadResponse, UploadResponse from .utils import itoa -from ...pb.im.oidb.cmd0x388.cmd0x388_pb2 import D388RspBody +from cai.pb.im.oidb.cmd0x388.cmd0x388_pb2 import D388RspBody def decode_upload_image_resp(data: bytes) -> ImageUploadResponse: @@ -25,5 +25,19 @@ def decode_upload_image_resp(data: bytes) -> ImageUploadResponse: ) +def decode_upload_ptt_resp(data: bytes) -> UploadResponse: + pkg = decode_d388_rsp(data).tryupPttRsp[0] + if pkg.result != 0: + return UploadResponse(resultCode=pkg.result, message=pkg.failMsg.decode()) + + if pkg.fileExit: + return UploadResponse(isExists=True, fileId=pkg.fileid) + return UploadResponse( + isExists=False, + uploadAddr=[(itoa(a), p) for a, p in zip(pkg.upIp, pkg.upPort)], + uploadKey=pkg.upUkey + ) + + def decode_d388_rsp(data: bytes) -> D388RspBody: return D388RspBody.FromString(data) diff --git a/cai/client/highway/encoders.py b/cai/client/highway/encoders.py index ab733119..663fd656 100644 --- a/cai/client/highway/encoders.py +++ b/cai/client/highway/encoders.py @@ -1,12 +1,17 @@ -from cai.pb.im.oidb.cmd0x388.cmd0x388_pb2 import D388ReqBody, TryUpImgReq +from cai.pb.im.oidb.cmd0x388.cmd0x388_pb2 import D388ReqBody, TryUpImgReq, TryUpPttReq -def encode_d388_req(group_code: int, uin: int, md5: bytes, size: int) -> D388ReqBody: - fn = md5.hex().upper() + ".jpg" - return D388ReqBody( - netType=8, - subcmd=1, - tryupImgReq=[TryUpImgReq( +def encode_d388_req( + group_code: int, + uin: int, + md5: bytes, + size: int, + subcmd: int +) -> D388ReqBody: + img, ptt = None, None + if subcmd == 1: # upload img + fn = md5.hex().upper() + ".jpg" + img = [TryUpImgReq( groupCode=group_code, srcUin=uin, fileName=fn.encode(), @@ -24,5 +29,29 @@ def encode_d388_req(group_code: int, uin: int, md5: bytes, size: int) -> D388Req originalPic=1, srvUpload=0 )] + elif subcmd == 3: # voice + ptt = [TryUpPttReq( + groupCode=group_code, + srcUin=uin, + fileMd5=md5, + fileName=(md5.hex().upper() + ".amr").encode(), + fileSize=size, + voiceLength=size, + voiceType=1, + codec=0, + srcTerm=5, + platformType=9, + buType=4, + innerIp=0, + buildVer=b"8.8.50.2324", + newUpChan=True + )] + else: + ValueError("unsupported subcmd:", subcmd) + return D388ReqBody( + netType=8, + subcmd=subcmd, + tryupImgReq=img, + tryupPttReq=ptt ) diff --git a/cai/client/highway/highway.py b/cai/client/highway/highway.py index 2dc1c711..21e32f5f 100644 --- a/cai/client/highway/highway.py +++ b/cai/client/highway/highway.py @@ -1,14 +1,14 @@ import asyncio import logging from hashlib import md5 -from typing import Tuple, BinaryIO, TYPE_CHECKING +from typing import Tuple, BinaryIO, TYPE_CHECKING, Optional, List -from .decoders import decode_upload_image_resp +from .decoders import decode_upload_image_resp, decode_upload_ptt_resp from .encoders import encode_d388_req -from .utils import calc_file_md5_and_length, timeit, to_img_id +from .utils import calc_file_md5_and_length, timeit, to_id from .frame import read_frame, write_frame from cai.pb.highway.protocol.highway_head_pb2 import highway_head -from ..message_service.models import ImageElement +from ..message_service.models import ImageElement, VoiceElement if TYPE_CHECKING: from cai.client.client import Client @@ -27,7 +27,7 @@ def _create_highway_header( command=cmd, commandId=cmd_id, seq=client.next_seq(), - appid=client.apk_info.app_id, + appid=client.apk_info.sub_app_id, localeId=locale, dataflag=flag ) @@ -39,13 +39,56 @@ def __init__(self, client: "Client", logger: logging.Logger = None): logger = logging.getLogger(__name__) self.logger = logger self._client = client + self._session_sig: Optional[bytes] = None + self._session_key: Optional[bytes] = None + self._session_addr_list: Optional[List[Tuple[str, int]]] = [] + + def _decode_bdh_session(self): + info = self._client._file_storage_info + if not info: + raise ValueError("info not found, try again later") + self._session_sig = info.big_data_channel.bigdata_sig_session + self._session_key = info.big_data_channel.bigdata_key_session + for iplist in info.big_data_channel.bigdata_iplists: + for ip in iplist.ip_list: + self._session_addr_list.append((ip.ip, ip.port)) + + async def _upload_controller( + self, + addrs: List[Tuple[str, int]], + file: BinaryIO, + cmd_id: int, + ticket: bytes, + ext=None + ) -> Optional[bytes]: + for addr in addrs: + try: + t, d = await timeit( + self.bdh_uploader( + b"PicUp.DataUp", + addr, + file, + cmd_id, + ticket, + ext + ) + ) + self.logger.info("upload complete, use %fms" % (t * 1000)) + return d + except TimeoutError: + self.logger.error(f"server {addr[0]}:{addr[1]} timeout") + continue + finally: + file.seek(0) + else: + raise ConnectionError("cannot upload, all server failure") async def upload_image(self, file: BinaryIO, gid: int) -> ImageElement: fmd5, fl = calc_file_md5_and_length(file) ret = decode_upload_image_resp( (await self._client.send_unipkg_and_wait( "ImgStore.GroupPicUp", - encode_d388_req(gid, self._client.uin, fmd5, fl).SerializeToString() + encode_d388_req(gid, self._client.uin, fmd5, fl, 1).SerializeToString() )).data ) if ret.resultCode != 0: @@ -53,26 +96,19 @@ async def upload_image(self, file: BinaryIO, gid: int) -> ImageElement: elif not ret.isExists: self.logger.debug("file not found, uploading...") - for addr in ret.uploadAddr: - try: - t, _ = await timeit( - self.bdh_uploader( - b"PicUp.DataUp", - addr, - file, - 2, - ret.uploadKey - ) - ) - self.logger.info("upload complete, use %fs in %d bytes" % (t * 1000, fl)) - except TimeoutError: - self.logger.error(f"server {addr[0]}:{addr[1]} timeout") - continue - finally: - file.seek(0) - break - else: - raise ConnectionError("cannot upload image, all server failure") + await self._upload_controller( + ret.uploadAddr, + file, + 2, # send to group + ret.uploadKey + ) + + ret = decode_upload_image_resp( + (await self._client.send_unipkg_and_wait( + "ImgStore.GroupPicUp", + encode_d388_req(gid, self._client.uin, fmd5, fl, 1).SerializeToString() + )).data + ) if ret.hasMetaData: image_type = ret.fileType @@ -83,7 +119,7 @@ async def upload_image(self, file: BinaryIO, gid: int) -> ImageElement: return ImageElement( id=ret.fileId, - filename=to_img_id(fmd5), + filename=to_id(fmd5) + ".png", size=fl, width=w, height=h, @@ -92,15 +128,41 @@ async def upload_image(self, file: BinaryIO, gid: int) -> ImageElement: url=f"https://gchat.qpic.cn/gchatpic_new/1/0-0-{fmd5.hex().upper()}/0?term=2" ) + async def upload_voice(self, file: BinaryIO, gid: int) -> VoiceElement: + fmd5, fl = calc_file_md5_and_length(file) + ext = encode_d388_req(gid, self._client.uin, fmd5, fl, 3).SerializeToString() + if not (self._session_key and self._session_sig): + self._decode_bdh_session() + ret = decode_upload_ptt_resp( + await self._upload_controller( + self._session_addr_list, + file, + 29, # send to group + self._session_sig, + ext + ) + ) + if ret.resultCode: + raise ConnectionError(ret.resultCode, ret.message) + return VoiceElement( + to_id(fmd5) + ".amr", + file_type=ret.fileId, + from_uin=self._client.uin, + md5=fmd5, + size=fl, + group_file_key=ret.uploadKey + ) + async def bdh_uploader( self, cmd: bytes, addr: Tuple[str, int], file: BinaryIO, cmd_id: int, - ticket: bytes, *, + ticket: bytes, + ext: bytes = None, *, block_size=65535 - ): + ) -> Optional[bytes]: fmd5, fl = calc_file_md5_and_length(file) reader, writer = await asyncio.open_connection(*addr) bc = 0 @@ -108,7 +170,7 @@ async def bdh_uploader( while True: bl = file.read(block_size) if not bl: - break + return ext head = highway_head.ReqDataHighwayHead( basehead=_create_highway_header(cmd, 4096, cmd_id, self._client), seghead=highway_head.SegHead( @@ -118,13 +180,22 @@ async def bdh_uploader( serviceticket=ticket, md5=md5(bl).digest(), fileMd5=fmd5 - ) - ).SerializeToString() + ), + reqExtendinfo=ext + ) - writer.write(write_frame(head, bl)) + writer.write(write_frame(head.SerializeToString(), bl)) await writer.drain() - resp, _ = await read_frame(reader) + resp, data = await read_frame(reader) + if resp.errorCode: + raise ConnectionError(resp.errorCode, "upload error", resp) + if resp and ext: + if resp.rspExtendinfo: + ext = resp.rspExtendinfo + if resp.seghead: + if resp.seghead.serviceticket: + self._session_key = resp.seghead.serviceticket bc += 1 finally: diff --git a/cai/client/highway/models.py b/cai/client/highway/models.py index b598217d..4a09e76e 100644 --- a/cai/client/highway/models.py +++ b/cai/client/highway/models.py @@ -3,11 +3,9 @@ @dataclass -class ImageUploadResponse: +class UploadResponse: uploadKey: Optional[bytes] = None uploadAddr: Optional[List[Tuple[str, int]]] = None - width: Optional[int] = None - height: Optional[int] = None message: Optional[str] = None downloadIndex: Optional[str] = None resourceId: Optional[int] = None @@ -16,3 +14,9 @@ class ImageUploadResponse: resultCode: int = 0 isExists: bool = False hasMetaData: bool = False + + +@dataclass +class ImageUploadResponse(UploadResponse): + width: Optional[int] = None + height: Optional[int] = None diff --git a/cai/client/highway/utils.py b/cai/client/highway/utils.py index 5958499d..9e3b6bd8 100644 --- a/cai/client/highway/utils.py +++ b/cai/client/highway/utils.py @@ -22,8 +22,8 @@ def itoa(i: int) -> str: # int to address(str) return ".".join([str(p) for p in i.to_bytes(4, "little")]) -def to_img_id(b_uuid: bytes) -> str: - return "{%s}.png" % uuid.UUID(bytes=b_uuid) +def to_id(b_uuid: bytes) -> str: + return "{%s}" % uuid.UUID(bytes=b_uuid) async def timeit(func: Awaitable) -> Tuple[float, Any]: diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index f815c3bd..99b189d9 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -200,7 +200,6 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: poke = MsgElemInfo_servtype2.FromString( elem.common_elem.pb_elem ) - print(poke) res = [ PokeElement( poke.poke_type diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py index 41a5034d..22f40f97 100644 --- a/cai/client/message_service/encoders.py +++ b/cai/client/message_service/encoders.py @@ -3,7 +3,7 @@ from typing import Sequence, Union from cai.pb.im.msg.msg_body import MsgBody, PlainText, RichText, CustomFace, Elem, CommonElem, LightAppElem, RichMsg, \ - ShakeWindow + ShakeWindow, Ptt from cai.pb.msf.msg.svc.svc_pb2 import RoutingHead, Grp from cai.pb.msf.msg.comm.comm_pb2 import ContentHead @@ -38,6 +38,7 @@ def _build_image_elem(e: Union[models.ImageElement, models.FlashImageElement]) - def build_msg(elements: Sequence[models.Element]) -> MsgBody: ret = [] + ptt = None for e in elements: # todo: support more element if isinstance(e, models.TextElement): ret.append( @@ -119,14 +120,16 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: ) ) ) - + elif isinstance(e, models.VoiceElement): + ptt = e.to_ptt() + break else: raise NotImplementedError(e) return MsgBody( rich_text=RichText( elems=ret, - ptt=None + ptt=ptt ) ) diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index 6eb8e41e..7cfb23de 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -14,6 +14,7 @@ from typing import List, Optional from cai.client.event import Event +from cai.pb.im.msg.msg_body import Ptt from cai.pb.msf.msg.comm import Msg @@ -141,6 +142,35 @@ def type(self) -> str: return "flash_image" +@dataclass +class VoiceElement(Element): + file_name: str + file_type: int + from_uin: int + md5: bytes + size: int + group_file_key: bytes + + @property + def type(self) -> str: + return "voice" + + @property + def _pb_reserve(self) -> bytes: + return bytes([8, 0, 40, 0, 56, 0]) + + def to_ptt(self) -> Ptt: + return Ptt( + file_type=self.file_type, + src_uin=self.from_uin, + file_md5=self.md5, + file_name=self.file_name.encode(), + file_size=self.size, + pb_reserve=self._pb_reserve, + valid=True + ) + + @dataclass class PokeElement(Element): id: int = 0 From ef0865fdab1bac755e0b55167b89839c82e279fb Mon Sep 17 00:00:00 2001 From: a1025 Date: Tue, 5 Apr 2022 15:51:45 +0800 Subject: [PATCH 052/113] add: parse voice.url --- cai/client/highway/highway.py | 5 +++-- cai/client/message_service/decoders.py | 30 ++++++++++++++++++++------ cai/client/message_service/models.py | 1 + 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/cai/client/highway/highway.py b/cai/client/highway/highway.py index 21e32f5f..14d9e218 100644 --- a/cai/client/highway/highway.py +++ b/cai/client/highway/highway.py @@ -146,11 +146,12 @@ async def upload_voice(self, file: BinaryIO, gid: int) -> VoiceElement: raise ConnectionError(ret.resultCode, ret.message) return VoiceElement( to_id(fmd5) + ".amr", - file_type=ret.fileId, + file_type=4, from_uin=self._client.uin, md5=fmd5, size=fl, - group_file_key=ret.uploadKey + group_file_key=ret.uploadKey, + url=f"https://grouptalk.c2c.qq.com/?ver=0&rkey={ret.uploadKey.hex()}&filetype=4%voice_codec=0" ) async def bdh_uploader( diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index 99b189d9..cbbc2f25 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -15,7 +15,7 @@ from cai.log import logger from cai.client.event import Event from cai.pb.msf.msg.comm import Msg -from cai.pb.im.msg.msg_body import Elem +from cai.pb.im.msg.msg_body import Elem, Ptt from cai.pb.im.msg.service.comm_elem import ( MsgElemInfo_servtype2, MsgElemInfo_servtype3, @@ -35,11 +35,11 @@ RichMsgElement, PrivateMessage, SmallEmojiElement, - FlashImageElement, ShakeElement + FlashImageElement, ShakeElement, VoiceElement ) -def parse_elements(elems: Sequence[Elem]) -> List[Element]: +def parse_elements(elems: Sequence[Elem], ptt: Optional[Ptt]) -> List[Element]: """Parse message rich text elements. Only parse ``text``, ``face``, ``small_smoji``, ``common_elem service 33`` @@ -50,10 +50,26 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: Args: elems (Sequence[Elem]): Sequence of rich text elements. + ptt (Ptt) Returns: List[Element]: List of decoded message elements. """ + if ptt: + if ptt.file_name.endswith(b".amr"): + info = {} + for bl in ptt.down_para.decode().split("&")[1:]: + k, v = bl.split("=", 1) + info[k] = v + return [VoiceElement( + ptt.file_name.decode(), + info["filetype"], + ptt.src_uin, + ptt.file_md5, + ptt.file_size, + bytes.fromhex(info["rkey"]), + "https://grouptalk.c2c.qq.com" + ptt.down_para.decode() + )] res: List[Element] = [] index = 0 while index < len(elems): @@ -72,7 +88,7 @@ def parse_elements(elems: Sequence[Elem]) -> List[Element]: elem.src_msg.orig_seqs[0], elem.src_msg.time, elem.src_msg.sender_uin, - parse_elements(elem.src_msg.elems), + parse_elements(elem.src_msg.elems, None), elem.src_msg.troop_name.decode("utf-8") or None, ) ) @@ -294,6 +310,7 @@ def decode_normal_buddy(cls, message: Msg) -> Optional[Event]: from_nick = message.head.from_nick to_uin = message.head.to_uin elems = message.body.rich_text.elems + ptt = message.body.rich_text.ptt return PrivateMessage( message, @@ -303,7 +320,7 @@ def decode_normal_buddy(cls, message: Msg) -> Optional[Event]: from_uin, from_nick, to_uin, - parse_elements(elems), + parse_elements(elems, ptt), ) @@ -321,6 +338,7 @@ def decode(cls, message: Msg) -> Optional[Event]: troop = message.head.group_info content_head = message.content_head elems = message.body.rich_text.elems + ptt = message.body.rich_text.ptt # long msg fragment if content_head.pkg_num > 1: @@ -350,7 +368,7 @@ def decode(cls, message: Msg) -> Optional[Event]: troop.group_level, from_uin, troop.group_card.decode("utf-8"), - parse_elements(elems), + parse_elements(elems, ptt), ) diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index 7cfb23de..d45d562f 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -150,6 +150,7 @@ class VoiceElement(Element): md5: bytes size: int group_file_key: bytes + url: str = None @property def type(self) -> str: From 57617ee7f835c4c99a33ad824a45ed8bbbf90eb0 Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Thu, 7 Apr 2022 11:02:42 +0800 Subject: [PATCH 053/113] :arrow_up: upgrade dependencies --- poetry.lock | 618 ++++++++++++++++++++++++------------------------- pyproject.toml | 18 +- 2 files changed, 315 insertions(+), 321 deletions(-) diff --git a/poetry.lock b/poetry.lock index 0f327f50..e0b0de90 100644 --- a/poetry.lock +++ b/poetry.lock @@ -19,38 +19,34 @@ pytz = ">=2015.7" [[package]] name = "black" -version = "21.12b0" +version = "22.3.0" description = "The uncompromising code formatter." category = "dev" optional = false python-versions = ">=3.6.2" [package.dependencies] -click = ">=7.1.2" +click = ">=8.0.0" mypy-extensions = ">=0.4.3" -pathspec = ">=0.9.0,<1" +pathspec = ">=0.9.0" platformdirs = ">=2" -tomli = ">=0.2.6,<2.0.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""} -typing-extensions = [ - {version = ">=3.10.0.0", markers = "python_version < \"3.10\""}, - {version = "!=3.10.0.1", markers = "python_version >= \"3.10\""}, -] +typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} [package.extras] colorama = ["colorama (>=0.4.3)"] d = ["aiohttp (>=3.7.4)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] -python2 = ["typed-ast (>=1.4.3)"] uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "cachetools" -version = "4.2.4" +version = "5.0.0" description = "Extensible memoizing collections and decorators" category = "main" optional = false -python-versions = "~=3.5" +python-versions = "~=3.7" [[package]] name = "certifi" @@ -73,7 +69,7 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "2.0.9" +version = "2.0.12" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "dev" optional = false @@ -84,11 +80,11 @@ unicode_backport = ["unicodedata2"] [[package]] name = "click" -version = "8.0.3" +version = "8.1.2" description = "Composable command line interface toolkit" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} @@ -104,7 +100,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [[package]] name = "cryptography" -version = "3.4.8" +version = "36.0.2" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." category = "main" optional = false @@ -115,15 +111,15 @@ cffi = ">=1.12" [package.extras] docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"] -docstest = ["doc8", "pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"] +docstest = ["pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"] pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] -sdist = ["setuptools-rust (>=0.11.4)"] +sdist = ["setuptools_rust (>=0.11.4)"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pytest (>=6.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] +test = ["pytest (>=6.2.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] [[package]] name = "docutils" -version = "0.16" +version = "0.17.1" description = "Docutils -- Python Documentation Utilities" category = "dev" optional = false @@ -147,20 +143,20 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "importlib-metadata" -version = "4.8.2" +version = "4.11.3" description = "Read metadata from Python packages" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] perf = ["ipython"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] [[package]] name = "isort" @@ -190,11 +186,11 @@ typing-extensions = ">=3.7.4,<5.0.0" [[package]] name = "jinja2" -version = "3.0.3" +version = "3.1.1" description = "A very fast and expressive template engine." category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] MarkupSafe = ">=2.0" @@ -204,11 +200,11 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "markupsafe" -version = "2.0.1" +version = "2.1.1" description = "Safely add untrusted strings to HTML/XML markup." category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [[package]] name = "mypy-extensions" @@ -220,15 +216,15 @@ python-versions = "*" [[package]] name = "mypy-protobuf" -version = "2.10" +version = "3.2.0" description = "Generate mypy stub files from protobuf specs" category = "dev" optional = false python-versions = ">=3.6" [package.dependencies] -protobuf = ">=3.17.3" -types-protobuf = ">=3.17.4" +protobuf = ">=3.19.3" +types-protobuf = ">=3.19.5" [[package]] name = "packaging" @@ -251,19 +247,23 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [[package]] name = "pillow" -version = "8.4.0" +version = "9.1.0" description = "Python Imaging Library (Fork)" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" + +[package.extras] +docs = ["olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinx-rtd-theme (>=1.0)", "sphinxext-opengraph"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] [[package]] name = "platformdirs" -version = "2.4.0" +version = "2.5.1" description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.extras] docs = ["Sphinx (>=4)", "furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)"] @@ -282,11 +282,11 @@ six = ">=1.5.2" [[package]] name = "protobuf" -version = "3.19.1" +version = "3.20.0" description = "Protocol Buffers" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" [[package]] name = "pycparser" @@ -298,7 +298,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "pydantic" -version = "1.8.2" +version = "1.9.0" description = "Data validation and settings management using python 3.6 type hinting" category = "main" optional = false @@ -313,7 +313,7 @@ email = ["email-validator (>=1.0.3)"] [[package]] name = "pygments" -version = "2.10.0" +version = "2.11.2" description = "Pygments is a syntax highlighting package written in Python." category = "dev" optional = false @@ -321,7 +321,7 @@ python-versions = ">=3.5" [[package]] name = "pyparsing" -version = "3.0.6" +version = "3.0.7" description = "Python parsing module" category = "dev" optional = false @@ -332,7 +332,7 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pytz" -version = "2021.3" +version = "2022.1" description = "World timezone definitions, modern and historical" category = "dev" optional = false @@ -340,7 +340,7 @@ python-versions = "*" [[package]] name = "requests" -version = "2.26.0" +version = "2.27.1" description = "Python HTTP for Humans." category = "dev" optional = false @@ -382,7 +382,7 @@ python-versions = "*" [[package]] name = "sphinx" -version = "4.3.1" +version = "4.5.0" description = "Python documentation generator" category = "dev" optional = false @@ -394,6 +394,7 @@ babel = ">=1.3" colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""} docutils = ">=0.14,<0.18" imagesize = "*" +importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} Jinja2 = ">=2.3" packaging = "*" Pygments = ">=2.0" @@ -408,12 +409,12 @@ sphinxcontrib-serializinghtml = ">=1.1.5" [package.extras] docs = ["sphinxcontrib-websupport"] -lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.900)", "docutils-stubs", "types-typed-ast", "types-pkg-resources", "types-requests"] +lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.931)", "docutils-stubs", "types-typed-ast", "types-requests"] test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"] [[package]] name = "sphinx-copybutton" -version = "0.4.0" +version = "0.5.0" description = "Add a copy button to each of your code cells." category = "dev" optional = false @@ -424,19 +425,19 @@ sphinx = ">=1.8" [package.extras] code_style = ["pre-commit (==2.12.1)"] -rtd = ["sphinx", "ipython", "sphinx-book-theme"] +rtd = ["sphinx", "ipython", "myst-nb", "sphinx-book-theme"] [[package]] name = "sphinx-rtd-theme" -version = "0.5.2" +version = "1.0.0" description = "Read the Docs theme for Sphinx" category = "dev" optional = false -python-versions = "*" +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" [package.dependencies] -docutils = "<0.17" -sphinx = "*" +docutils = "<0.18" +sphinx = ">=1.6" [package.extras] dev = ["transifex-client", "sphinxcontrib-httpdomain", "bump2version"] @@ -526,42 +527,31 @@ test = ["pytest"] [[package]] name = "tomli" -version = "1.2.2" +version = "2.0.1" description = "A lil' TOML parser" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [[package]] name = "typed-ast" -version = "1.5.1" +version = "1.5.2" description = "a fork of Python 2 and 3 ast modules with type comment support" category = "dev" optional = false python-versions = ">=3.6" -[[package]] -name = "types-futures" -version = "3.3.1" -description = "Typing stubs for futures" -category = "dev" -optional = false -python-versions = "*" - [[package]] name = "types-protobuf" -version = "3.18.2" +version = "3.19.15" description = "Typing stubs for protobuf" category = "dev" optional = false python-versions = "*" -[package.dependencies] -types-futures = "*" - [[package]] name = "typing-extensions" -version = "4.0.1" +version = "4.1.1" description = "Backported and Experimental Type Hints for Python 3.6+" category = "main" optional = false @@ -569,33 +559,33 @@ python-versions = ">=3.6" [[package]] name = "urllib3" -version = "1.26.7" +version = "1.26.9" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" [package.extras] -brotli = ["brotlipy (>=0.6.0)"] +brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "zipp" -version = "3.6.0" +version = "3.8.0" description = "Backport of pathlib-compatible object wrapper for zip files" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] [metadata] lock-version = "1.1" python-versions = "^3.7" -content-hash = "581c5d9e6a5eff6418922c6632469be265c318fb0ba8d418ca8b752a8f90a7ae" +content-hash = "0c909b96166d323dfe34fb02f03a3decc50a45281238be69b02b5de72c445503" [metadata.files] alabaster = [ @@ -607,12 +597,33 @@ babel = [ {file = "Babel-2.9.1.tar.gz", hash = "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0"}, ] black = [ - {file = "black-21.12b0-py3-none-any.whl", hash = "sha256:a615e69ae185e08fdd73e4715e260e2479c861b5740057fde6e8b4e3b7dd589f"}, - {file = "black-21.12b0.tar.gz", hash = "sha256:77b80f693a569e2e527958459634f18df9b0ba2625ba4e0c2d5da5be42e6f2b3"}, + {file = "black-22.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2497f9c2386572e28921fa8bec7be3e51de6801f7459dffd6e62492531c47e09"}, + {file = "black-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5795a0375eb87bfe902e80e0c8cfaedf8af4d49694d69161e5bd3206c18618bb"}, + {file = "black-22.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3556168e2e5c49629f7b0f377070240bd5511e45e25a4497bb0073d9dda776a"}, + {file = "black-22.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67c8301ec94e3bcc8906740fe071391bce40a862b7be0b86fb5382beefecd968"}, + {file = "black-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:fd57160949179ec517d32ac2ac898b5f20d68ed1a9c977346efbac9c2f1e779d"}, + {file = "black-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc1e1de68c8e5444e8f94c3670bb48a2beef0e91dddfd4fcc29595ebd90bb9ce"}, + {file = "black-22.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2fc92002d44746d3e7db7cf9313cf4452f43e9ea77a2c939defce3b10b5c82"}, + {file = "black-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a6342964b43a99dbc72f72812bf88cad8f0217ae9acb47c0d4f141a6416d2d7b"}, + {file = "black-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:328efc0cc70ccb23429d6be184a15ce613f676bdfc85e5fe8ea2a9354b4e9015"}, + {file = "black-22.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06f9d8846f2340dfac80ceb20200ea5d1b3f181dd0556b47af4e8e0b24fa0a6b"}, + {file = "black-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4efa5fad66b903b4a5f96d91461d90b9507a812b3c5de657d544215bb7877a"}, + {file = "black-22.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8477ec6bbfe0312c128e74644ac8a02ca06bcdb8982d4ee06f209be28cdf163"}, + {file = "black-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:637a4014c63fbf42a692d22b55d8ad6968a946b4a6ebc385c5505d9625b6a464"}, + {file = "black-22.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:863714200ada56cbc366dc9ae5291ceb936573155f8bf8e9de92aef51f3ad0f0"}, + {file = "black-22.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dbe6e6d2988049b4655b2b739f98785a884d4d6b85bc35133a8fb9a2233176"}, + {file = "black-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:cee3e11161dde1b2a33a904b850b0899e0424cc331b7295f2a9698e79f9a69a0"}, + {file = "black-22.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5891ef8abc06576985de8fa88e95ab70641de6c1fca97e2a15820a9b69e51b20"}, + {file = "black-22.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:30d78ba6bf080eeaf0b7b875d924b15cd46fec5fd044ddfbad38c8ea9171043a"}, + {file = "black-22.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee8f1f7228cce7dffc2b464f07ce769f478968bfb3dd1254a4c2eeed84928aad"}, + {file = "black-22.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ee227b696ca60dd1c507be80a6bc849a5a6ab57ac7352aad1ffec9e8b805f21"}, + {file = "black-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:9b542ced1ec0ceeff5b37d69838106a6348e60db7b8fdd245294dc1d26136265"}, + {file = "black-22.3.0-py3-none-any.whl", hash = "sha256:bc58025940a896d7e5356952228b68f793cf5fcb342be703c3a2669a1488cb72"}, + {file = "black-22.3.0.tar.gz", hash = "sha256:35020b8886c022ced9282b51b5a875b6d1ab0c387b31a065b84db7c33085ca79"}, ] cachetools = [ - {file = "cachetools-4.2.4-py3-none-any.whl", hash = "sha256:92971d3cb7d2a97efff7c7bb1657f21a8f5fb309a37530537c71b1774189f2d1"}, - {file = "cachetools-4.2.4.tar.gz", hash = "sha256:89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693"}, + {file = "cachetools-5.0.0-py3-none-any.whl", hash = "sha256:8fecd4203a38af17928be7b90689d8083603073622229ca7077b72d8e5a976e4"}, + {file = "cachetools-5.0.0.tar.gz", hash = "sha256:486471dfa8799eb7ec503a8059e263db000cdda20075ce5e48903087f79d5fd6"}, ] certifi = [ {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, @@ -671,41 +682,42 @@ cffi = [ {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"}, ] charset-normalizer = [ - {file = "charset-normalizer-2.0.9.tar.gz", hash = "sha256:b0b883e8e874edfdece9c28f314e3dd5badf067342e42fb162203335ae61aa2c"}, - {file = "charset_normalizer-2.0.9-py3-none-any.whl", hash = "sha256:1eecaa09422db5be9e29d7fc65664e6c33bd06f9ced7838578ba40d58bdf3721"}, + {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, + {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, ] click = [ - {file = "click-8.0.3-py3-none-any.whl", hash = "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3"}, - {file = "click-8.0.3.tar.gz", hash = "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b"}, + {file = "click-8.1.2-py3-none-any.whl", hash = "sha256:24e1a4a9ec5bf6299411369b208c1df2188d9eb8d916302fe6bf03faed227f1e"}, + {file = "click-8.1.2.tar.gz", hash = "sha256:479707fe14d9ec9a0757618b7a100a0ae4c4e236fac5b7f80ca68028141a1a72"}, ] colorama = [ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, ] cryptography = [ - {file = "cryptography-3.4.8-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:a00cf305f07b26c351d8d4e1af84ad7501eca8a342dedf24a7acb0e7b7406e14"}, - {file = "cryptography-3.4.8-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:f44d141b8c4ea5eb4dbc9b3ad992d45580c1d22bf5e24363f2fbf50c2d7ae8a7"}, - {file = "cryptography-3.4.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0a7dcbcd3f1913f664aca35d47c1331fce738d44ec34b7be8b9d332151b0b01e"}, - {file = "cryptography-3.4.8-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34dae04a0dce5730d8eb7894eab617d8a70d0c97da76b905de9efb7128ad7085"}, - {file = "cryptography-3.4.8-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1eb7bb0df6f6f583dd8e054689def236255161ebbcf62b226454ab9ec663746b"}, - {file = "cryptography-3.4.8-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:9965c46c674ba8cc572bc09a03f4c649292ee73e1b683adb1ce81e82e9a6a0fb"}, - {file = "cryptography-3.4.8-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:3c4129fc3fdc0fa8e40861b5ac0c673315b3c902bbdc05fc176764815b43dd1d"}, - {file = "cryptography-3.4.8-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:695104a9223a7239d155d7627ad912953b540929ef97ae0c34c7b8bf30857e89"}, - {file = "cryptography-3.4.8-cp36-abi3-win32.whl", hash = "sha256:21ca464b3a4b8d8e86ba0ee5045e103a1fcfac3b39319727bc0fc58c09c6aff7"}, - {file = "cryptography-3.4.8-cp36-abi3-win_amd64.whl", hash = "sha256:3520667fda779eb788ea00080124875be18f2d8f0848ec00733c0ec3bb8219fc"}, - {file = "cryptography-3.4.8-pp36-pypy36_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d2a6e5ef66503da51d2110edf6c403dc6b494cc0082f85db12f54e9c5d4c3ec5"}, - {file = "cryptography-3.4.8-pp36-pypy36_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a305600e7a6b7b855cd798e00278161b681ad6e9b7eca94c721d5f588ab212af"}, - {file = "cryptography-3.4.8-pp36-pypy36_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:3fa3a7ccf96e826affdf1a0a9432be74dc73423125c8f96a909e3835a5ef194a"}, - {file = "cryptography-3.4.8-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:d9ec0e67a14f9d1d48dd87a2531009a9b251c02ea42851c060b25c782516ff06"}, - {file = "cryptography-3.4.8-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5b0fbfae7ff7febdb74b574055c7466da334a5371f253732d7e2e7525d570498"}, - {file = "cryptography-3.4.8-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94fff993ee9bc1b2440d3b7243d488c6a3d9724cc2b09cdb297f6a886d040ef7"}, - {file = "cryptography-3.4.8-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:8695456444f277af73a4877db9fc979849cd3ee74c198d04fc0776ebc3db52b9"}, - {file = "cryptography-3.4.8-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:cd65b60cfe004790c795cc35f272e41a3df4631e2fb6b35aa7ac6ef2859d554e"}, - {file = "cryptography-3.4.8.tar.gz", hash = "sha256:94cc5ed4ceaefcbe5bf38c8fba6a21fc1d365bb8fb826ea1688e3370b2e24a1c"}, + {file = "cryptography-36.0.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:4e2dddd38a5ba733be6a025a1475a9f45e4e41139d1321f412c6b360b19070b6"}, + {file = "cryptography-36.0.2-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:4881d09298cd0b669bb15b9cfe6166f16fc1277b4ed0d04a22f3d6430cb30f1d"}, + {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea634401ca02367c1567f012317502ef3437522e2fc44a3ea1844de028fa4b84"}, + {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:7be666cc4599b415f320839e36367b273db8501127b38316f3b9f22f17a0b815"}, + {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8241cac0aae90b82d6b5c443b853723bcc66963970c67e56e71a2609dc4b5eaf"}, + {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b2d54e787a884ffc6e187262823b6feb06c338084bbe80d45166a1cb1c6c5bf"}, + {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:c2c5250ff0d36fd58550252f54915776940e4e866f38f3a7866d92b32a654b86"}, + {file = "cryptography-36.0.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ec6597aa85ce03f3e507566b8bcdf9da2227ec86c4266bd5e6ab4d9e0cc8dab2"}, + {file = "cryptography-36.0.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ca9f686517ec2c4a4ce930207f75c00bf03d94e5063cbc00a1dc42531511b7eb"}, + {file = "cryptography-36.0.2-cp36-abi3-win32.whl", hash = "sha256:f64b232348ee82f13aac22856515ce0195837f6968aeaa94a3d0353ea2ec06a6"}, + {file = "cryptography-36.0.2-cp36-abi3-win_amd64.whl", hash = "sha256:53e0285b49fd0ab6e604f4c5d9c5ddd98de77018542e88366923f152dbeb3c29"}, + {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:32db5cc49c73f39aac27574522cecd0a4bb7384e71198bc65a0d23f901e89bb7"}, + {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b3d199647468d410994dbeb8cec5816fb74feb9368aedf300af709ef507e3e"}, + {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:da73d095f8590ad437cd5e9faf6628a218aa7c387e1fdf67b888b47ba56a17f0"}, + {file = "cryptography-36.0.2-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:0a3bf09bb0b7a2c93ce7b98cb107e9170a90c51a0162a20af1c61c765b90e60b"}, + {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8897b7b7ec077c819187a123174b645eb680c13df68354ed99f9b40a50898f77"}, + {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82740818f2f240a5da8dfb8943b360e4f24022b093207160c77cadade47d7c85"}, + {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:1f64a62b3b75e4005df19d3b5235abd43fa6358d5516cfc43d87aeba8d08dd51"}, + {file = "cryptography-36.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e167b6b710c7f7bc54e67ef593f8731e1f45aa35f8a8a7b72d6e42ec76afd4b3"}, + {file = "cryptography-36.0.2.tar.gz", hash = "sha256:70f8f4f7bb2ac9f340655cbac89d68c527af5bb4387522a8413e841e3e6628c9"}, ] docutils = [ - {file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"}, - {file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"}, + {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"}, + {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, ] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, @@ -716,8 +728,8 @@ imagesize = [ {file = "imagesize-1.3.0.tar.gz", hash = "sha256:cd1750d452385ca327479d45b64d9c7729ecf0b3969a58148298c77092261f9d"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.8.2-py3-none-any.whl", hash = "sha256:53ccfd5c134223e497627b9815d5030edf77d2ed573922f7a0b8f8bb81a1c100"}, - {file = "importlib_metadata-4.8.2.tar.gz", hash = "sha256:75bdec14c397f528724c1bfd9709d660b33a4d2e77387a3358f20b848bb5e5fb"}, + {file = "importlib_metadata-4.11.3-py3-none-any.whl", hash = "sha256:1208431ca90a8cca1a6b8af391bb53c1a2db74e5d1cef6ddced95d4b2062edc6"}, + {file = "importlib_metadata-4.11.3.tar.gz", hash = "sha256:ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539"}, ] isort = [ {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, @@ -728,87 +740,58 @@ jcestruct = [ {file = "JceStruct-0.1.5.tar.gz", hash = "sha256:c465d3ed91c64a0ca23b34c4f1fee66987d9fb7346934a4b160d3a5222ef7e0e"}, ] jinja2 = [ - {file = "Jinja2-3.0.3-py3-none-any.whl", hash = "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8"}, - {file = "Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"}, + {file = "Jinja2-3.1.1-py3-none-any.whl", hash = "sha256:539835f51a74a69f41b848a9645dbdc35b4f20a3b601e2d9a7e22947b15ff119"}, + {file = "Jinja2-3.1.1.tar.gz", hash = "sha256:640bed4bb501cbd17194b3cace1dc2126f5b619cf068a726b98192a0fde74ae9"}, ] markupsafe = [ - {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"}, - {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, + {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, ] mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] mypy-protobuf = [ - {file = "mypy-protobuf-2.10.tar.gz", hash = "sha256:1fed214e16351b09946770794a321a818abb744078b1d863a479da070028684c"}, - {file = "mypy_protobuf-2.10-py3-none-any.whl", hash = "sha256:8f85a7e12908ca2f59bdacb59f81bd64fd40b946a22844a748fbaf9e1e82d3cd"}, + {file = "mypy-protobuf-3.2.0.tar.gz", hash = "sha256:730aa15337c38f0446fbe08f6c6c2370ee01d395125369d4b70e08b1e2ee30ee"}, + {file = "mypy_protobuf-3.2.0-py3-none-any.whl", hash = "sha256:65fc0492165f4a3c0aff69b03e34096fc1453e4dac8f14b4e9c2306cdde06010"}, ] packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, @@ -819,125 +802,135 @@ pathspec = [ {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, ] pillow = [ - {file = "Pillow-8.4.0-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:81f8d5c81e483a9442d72d182e1fb6dcb9723f289a57e8030811bac9ea3fef8d"}, - {file = "Pillow-8.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3f97cfb1e5a392d75dd8b9fd274d205404729923840ca94ca45a0af57e13dbe6"}, - {file = "Pillow-8.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb9fc393f3c61f9054e1ed26e6fe912c7321af2f41ff49d3f83d05bacf22cc78"}, - {file = "Pillow-8.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d82cdb63100ef5eedb8391732375e6d05993b765f72cb34311fab92103314649"}, - {file = "Pillow-8.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62cc1afda735a8d109007164714e73771b499768b9bb5afcbbee9d0ff374b43f"}, - {file = "Pillow-8.4.0-cp310-cp310-win32.whl", hash = "sha256:e3dacecfbeec9a33e932f00c6cd7996e62f53ad46fbe677577394aaa90ee419a"}, - {file = "Pillow-8.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:620582db2a85b2df5f8a82ddeb52116560d7e5e6b055095f04ad828d1b0baa39"}, - {file = "Pillow-8.4.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:1bc723b434fbc4ab50bb68e11e93ce5fb69866ad621e3c2c9bdb0cd70e345f55"}, - {file = "Pillow-8.4.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72cbcfd54df6caf85cc35264c77ede902452d6df41166010262374155947460c"}, - {file = "Pillow-8.4.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70ad9e5c6cb9b8487280a02c0ad8a51581dcbbe8484ce058477692a27c151c0a"}, - {file = "Pillow-8.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25a49dc2e2f74e65efaa32b153527fc5ac98508d502fa46e74fa4fd678ed6645"}, - {file = "Pillow-8.4.0-cp36-cp36m-win32.whl", hash = "sha256:93ce9e955cc95959df98505e4608ad98281fff037350d8c2671c9aa86bcf10a9"}, - {file = "Pillow-8.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2e4440b8f00f504ee4b53fe30f4e381aae30b0568193be305256b1462216feff"}, - {file = "Pillow-8.4.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:8c803ac3c28bbc53763e6825746f05cc407b20e4a69d0122e526a582e3b5e153"}, - {file = "Pillow-8.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8a17b5d948f4ceeceb66384727dde11b240736fddeda54ca740b9b8b1556b29"}, - {file = "Pillow-8.4.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1394a6ad5abc838c5cd8a92c5a07535648cdf6d09e8e2d6df916dfa9ea86ead8"}, - {file = "Pillow-8.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:792e5c12376594bfcb986ebf3855aa4b7c225754e9a9521298e460e92fb4a488"}, - {file = "Pillow-8.4.0-cp37-cp37m-win32.whl", hash = "sha256:d99ec152570e4196772e7a8e4ba5320d2d27bf22fdf11743dd882936ed64305b"}, - {file = "Pillow-8.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:7b7017b61bbcdd7f6363aeceb881e23c46583739cb69a3ab39cb384f6ec82e5b"}, - {file = "Pillow-8.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:d89363f02658e253dbd171f7c3716a5d340a24ee82d38aab9183f7fdf0cdca49"}, - {file = "Pillow-8.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0a0956fdc5defc34462bb1c765ee88d933239f9a94bc37d132004775241a7585"}, - {file = "Pillow-8.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b7bb9de00197fb4261825c15551adf7605cf14a80badf1761d61e59da347779"}, - {file = "Pillow-8.4.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72b9e656e340447f827885b8d7a15fc8c4e68d410dc2297ef6787eec0f0ea409"}, - {file = "Pillow-8.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5a4532a12314149d8b4e4ad8ff09dde7427731fcfa5917ff16d0291f13609df"}, - {file = "Pillow-8.4.0-cp38-cp38-win32.whl", hash = "sha256:82aafa8d5eb68c8463b6e9baeb4f19043bb31fefc03eb7b216b51e6a9981ae09"}, - {file = "Pillow-8.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:066f3999cb3b070a95c3652712cffa1a748cd02d60ad7b4e485c3748a04d9d76"}, - {file = "Pillow-8.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:5503c86916d27c2e101b7f71c2ae2cddba01a2cf55b8395b0255fd33fa4d1f1a"}, - {file = "Pillow-8.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4acc0985ddf39d1bc969a9220b51d94ed51695d455c228d8ac29fcdb25810e6e"}, - {file = "Pillow-8.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b052a619a8bfcf26bd8b3f48f45283f9e977890263e4571f2393ed8898d331b"}, - {file = "Pillow-8.4.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:493cb4e415f44cd601fcec11c99836f707bb714ab03f5ed46ac25713baf0ff20"}, - {file = "Pillow-8.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8831cb7332eda5dc89b21a7bce7ef6ad305548820595033a4b03cf3091235ed"}, - {file = "Pillow-8.4.0-cp39-cp39-win32.whl", hash = "sha256:5e9ac5f66616b87d4da618a20ab0a38324dbe88d8a39b55be8964eb520021e02"}, - {file = "Pillow-8.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:3eb1ce5f65908556c2d8685a8f0a6e989d887ec4057326f6c22b24e8a172c66b"}, - {file = "Pillow-8.4.0-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ddc4d832a0f0b4c52fff973a0d44b6c99839a9d016fe4e6a1cb8f3eea96479c2"}, - {file = "Pillow-8.4.0-pp36-pypy36_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a3e5ddc44c14042f0844b8cf7d2cd455f6cc80fd7f5eefbe657292cf601d9ad"}, - {file = "Pillow-8.4.0-pp36-pypy36_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70e94281588ef053ae8998039610dbd71bc509e4acbc77ab59d7d2937b10698"}, - {file = "Pillow-8.4.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:3862b7256046fcd950618ed22d1d60b842e3a40a48236a5498746f21189afbbc"}, - {file = "Pillow-8.4.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4901622493f88b1a29bd30ec1a2f683782e57c3c16a2dbc7f2595ba01f639df"}, - {file = "Pillow-8.4.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84c471a734240653a0ec91dec0996696eea227eafe72a33bd06c92697728046b"}, - {file = "Pillow-8.4.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:244cf3b97802c34c41905d22810846802a3329ddcb93ccc432870243211c79fc"}, - {file = "Pillow-8.4.0.tar.gz", hash = "sha256:b8e2f83c56e141920c39464b852de3719dfbfb6e3c99a2d8da0edf4fb33176ed"}, + {file = "Pillow-9.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:af79d3fde1fc2e33561166d62e3b63f0cc3e47b5a3a2e5fea40d4917754734ea"}, + {file = "Pillow-9.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:55dd1cf09a1fd7c7b78425967aacae9b0d70125f7d3ab973fadc7b5abc3de652"}, + {file = "Pillow-9.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66822d01e82506a19407d1afc104c3fcea3b81d5eb11485e593ad6b8492f995a"}, + {file = "Pillow-9.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5eaf3b42df2bcda61c53a742ee2c6e63f777d0e085bbc6b2ab7ed57deb13db7"}, + {file = "Pillow-9.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01ce45deec9df310cbbee11104bae1a2a43308dd9c317f99235b6d3080ddd66e"}, + {file = "Pillow-9.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:aea7ce61328e15943d7b9eaca87e81f7c62ff90f669116f857262e9da4057ba3"}, + {file = "Pillow-9.1.0-cp310-cp310-win32.whl", hash = "sha256:7a053bd4d65a3294b153bdd7724dce864a1d548416a5ef61f6d03bf149205160"}, + {file = "Pillow-9.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:97bda660702a856c2c9e12ec26fc6d187631ddfd896ff685814ab21ef0597033"}, + {file = "Pillow-9.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:21dee8466b42912335151d24c1665fcf44dc2ee47e021d233a40c3ca5adae59c"}, + {file = "Pillow-9.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b6d4050b208c8ff886fd3db6690bf04f9a48749d78b41b7a5bf24c236ab0165"}, + {file = "Pillow-9.1.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5cfca31ab4c13552a0f354c87fbd7f162a4fafd25e6b521bba93a57fe6a3700a"}, + {file = "Pillow-9.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed742214068efa95e9844c2d9129e209ed63f61baa4d54dbf4cf8b5e2d30ccf2"}, + {file = "Pillow-9.1.0-cp37-cp37m-win32.whl", hash = "sha256:c9efef876c21788366ea1f50ecb39d5d6f65febe25ad1d4c0b8dff98843ac244"}, + {file = "Pillow-9.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:de344bcf6e2463bb25179d74d6e7989e375f906bcec8cb86edb8b12acbc7dfef"}, + {file = "Pillow-9.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:17869489de2fce6c36690a0c721bd3db176194af5f39249c1ac56d0bb0fcc512"}, + {file = "Pillow-9.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:25023a6209a4d7c42154073144608c9a71d3512b648a2f5d4465182cb93d3477"}, + {file = "Pillow-9.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8782189c796eff29dbb37dd87afa4ad4d40fc90b2742704f94812851b725964b"}, + {file = "Pillow-9.1.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:463acf531f5d0925ca55904fa668bb3461c3ef6bc779e1d6d8a488092bdee378"}, + {file = "Pillow-9.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f42364485bfdab19c1373b5cd62f7c5ab7cc052e19644862ec8f15bb8af289e"}, + {file = "Pillow-9.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3fddcdb619ba04491e8f771636583a7cc5a5051cd193ff1aa1ee8616d2a692c5"}, + {file = "Pillow-9.1.0-cp38-cp38-win32.whl", hash = "sha256:4fe29a070de394e449fd88ebe1624d1e2d7ddeed4c12e0b31624561b58948d9a"}, + {file = "Pillow-9.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:c24f718f9dd73bb2b31a6201e6db5ea4a61fdd1d1c200f43ee585fc6dcd21b34"}, + {file = "Pillow-9.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fb89397013cf302f282f0fc998bb7abf11d49dcff72c8ecb320f76ea6e2c5717"}, + {file = "Pillow-9.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c870193cce4b76713a2b29be5d8327c8ccbe0d4a49bc22968aa1e680930f5581"}, + {file = "Pillow-9.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69e5ddc609230d4408277af135c5b5c8fe7a54b2bdb8ad7c5100b86b3aab04c6"}, + {file = "Pillow-9.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35be4a9f65441d9982240e6966c1eaa1c654c4e5e931eaf580130409e31804d4"}, + {file = "Pillow-9.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82283af99c1c3a5ba1da44c67296d5aad19f11c535b551a5ae55328a317ce331"}, + {file = "Pillow-9.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a325ac71914c5c043fa50441b36606e64a10cd262de12f7a179620f579752ff8"}, + {file = "Pillow-9.1.0-cp39-cp39-win32.whl", hash = "sha256:a598d8830f6ef5501002ae85c7dbfcd9c27cc4efc02a1989369303ba85573e58"}, + {file = "Pillow-9.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0c51cb9edac8a5abd069fd0758ac0a8bfe52c261ee0e330f363548aca6893595"}, + {file = "Pillow-9.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a336a4f74baf67e26f3acc4d61c913e378e931817cd1e2ef4dfb79d3e051b481"}, + {file = "Pillow-9.1.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb1b89b11256b5b6cad5e7593f9061ac4624f7651f7a8eb4dfa37caa1dfaa4d0"}, + {file = "Pillow-9.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:255c9d69754a4c90b0ee484967fc8818c7ff8311c6dddcc43a4340e10cd1636a"}, + {file = "Pillow-9.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5a3ecc026ea0e14d0ad7cd990ea7f48bfcb3eb4271034657dc9d06933c6629a7"}, + {file = "Pillow-9.1.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5b0ff59785d93b3437c3703e3c64c178aabada51dea2a7f2c5eccf1bcf565a3"}, + {file = "Pillow-9.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7110ec1701b0bf8df569a7592a196c9d07c764a0a74f65471ea56816f10e2c8"}, + {file = "Pillow-9.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8d79c6f468215d1a8415aa53d9868a6b40c4682165b8cb62a221b1baa47db458"}, + {file = "Pillow-9.1.0.tar.gz", hash = "sha256:f401ed2bbb155e1ade150ccc63db1a4f6c1909d3d378f7d1235a44e90d75fb97"}, ] platformdirs = [ - {file = "platformdirs-2.4.0-py3-none-any.whl", hash = "sha256:8868bbe3c3c80d42f20156f22e7131d2fb321f5bc86a2a345375c6481a67021d"}, - {file = "platformdirs-2.4.0.tar.gz", hash = "sha256:367a5e80b3d04d2428ffa76d33f124cf11e8fff2acdaa9b43d545f5c7d661ef2"}, + {file = "platformdirs-2.5.1-py3-none-any.whl", hash = "sha256:bcae7cab893c2d310a711b70b24efb93334febe65f8de776ee320b517471e227"}, + {file = "platformdirs-2.5.1.tar.gz", hash = "sha256:7535e70dfa32e84d4b34996ea99c5e432fa29a708d0f4e394bbcb2a8faa4f16d"}, ] pockets = [ {file = "pockets-0.9.1-py2.py3-none-any.whl", hash = "sha256:68597934193c08a08eb2bf6a1d85593f627c22f9b065cc727a4f03f669d96d86"}, {file = "pockets-0.9.1.tar.gz", hash = "sha256:9320f1a3c6f7a9133fe3b571f283bcf3353cd70249025ae8d618e40e9f7e92b3"}, ] protobuf = [ - {file = "protobuf-3.19.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d80f80eb175bf5f1169139c2e0c5ada98b1c098e2b3c3736667f28cbbea39fc8"}, - {file = "protobuf-3.19.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a529e7df52204565bcd33738a7a5f288f3d2d37d86caa5d78c458fa5fabbd54d"}, - {file = "protobuf-3.19.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28ccea56d4dc38d35cd70c43c2da2f40ac0be0a355ef882242e8586c6d66666f"}, - {file = "protobuf-3.19.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:8b30a7de128c46b5ecb343917d9fa737612a6e8280f440874e5cc2ba0d79b8f6"}, - {file = "protobuf-3.19.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5935c8ce02e3d89c7900140a8a42b35bc037ec07a6aeb61cc108be8d3c9438a6"}, - {file = "protobuf-3.19.1-cp36-cp36m-win32.whl", hash = "sha256:74f33edeb4f3b7ed13d567881da8e5a92a72b36495d57d696c2ea1ae0cfee80c"}, - {file = "protobuf-3.19.1-cp36-cp36m-win_amd64.whl", hash = "sha256:038daf4fa38a7e818dd61f51f22588d61755160a98db087a046f80d66b855942"}, - {file = "protobuf-3.19.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e51561d72efd5bd5c91490af1f13e32bcba8dab4643761eb7de3ce18e64a853"}, - {file = "protobuf-3.19.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:6e8ea9173403219239cdfd8d946ed101f2ab6ecc025b0fda0c6c713c35c9981d"}, - {file = "protobuf-3.19.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db3532d9f7a6ebbe2392041350437953b6d7a792de10e629c1e4f5a6b1fe1ac6"}, - {file = "protobuf-3.19.1-cp37-cp37m-win32.whl", hash = "sha256:615b426a177780ce381ecd212edc1e0f70db8557ed72560b82096bd36b01bc04"}, - {file = "protobuf-3.19.1-cp37-cp37m-win_amd64.whl", hash = "sha256:d8919368410110633717c406ab5c97e8df5ce93020cfcf3012834f28b1fab1ea"}, - {file = "protobuf-3.19.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:71b0250b0cfb738442d60cab68abc166de43411f2a4f791d31378590bfb71bd7"}, - {file = "protobuf-3.19.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:3cd0458870ea7d1c58e948ac8078f6ba8a7ecc44a57e03032ed066c5bb318089"}, - {file = "protobuf-3.19.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:655264ed0d0efe47a523e2255fc1106a22f6faab7cc46cfe99b5bae085c2a13e"}, - {file = "protobuf-3.19.1-cp38-cp38-win32.whl", hash = "sha256:b691d996c6d0984947c4cf8b7ae2fe372d99b32821d0584f0b90277aa36982d3"}, - {file = "protobuf-3.19.1-cp38-cp38-win_amd64.whl", hash = "sha256:e7e8d2c20921f8da0dea277dfefc6abac05903ceac8e72839b2da519db69206b"}, - {file = "protobuf-3.19.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fd390367fc211cc0ffcf3a9e149dfeca78fecc62adb911371db0cec5c8b7472d"}, - {file = "protobuf-3.19.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:d83e1ef8cb74009bebee3e61cc84b1c9cd04935b72bca0cbc83217d140424995"}, - {file = "protobuf-3.19.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36d90676d6f426718463fe382ec6274909337ca6319d375eebd2044e6c6ac560"}, - {file = "protobuf-3.19.1-cp39-cp39-win32.whl", hash = "sha256:e7b24c11df36ee8e0c085e5b0dc560289e4b58804746fb487287dda51410f1e2"}, - {file = "protobuf-3.19.1-cp39-cp39-win_amd64.whl", hash = "sha256:77d2fadcf369b3f22859ab25bd12bb8e98fb11e05d9ff9b7cd45b711c719c002"}, - {file = "protobuf-3.19.1-py2.py3-none-any.whl", hash = "sha256:e813b1c9006b6399308e917ac5d298f345d95bb31f46f02b60cd92970a9afa17"}, - {file = "protobuf-3.19.1.tar.gz", hash = "sha256:62a8e4baa9cb9e064eb62d1002eca820857ab2138440cb4b3ea4243830f94ca7"}, + {file = "protobuf-3.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9d0f3aca8ca51c8b5e204ab92bd8afdb2a8e3df46bd0ce0bd39065d79aabcaa4"}, + {file = "protobuf-3.20.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:001c2160c03b6349c04de39cf1a58e342750da3632f6978a1634a3dcca1ec10e"}, + {file = "protobuf-3.20.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5b5860b790498f233cdc8d635a17fc08de62e59d4dcd8cdb6c6c0d38a31edf2b"}, + {file = "protobuf-3.20.0-cp310-cp310-win32.whl", hash = "sha256:0b250c60256c8824219352dc2a228a6b49987e5bf94d3ffcf4c46585efcbd499"}, + {file = "protobuf-3.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:a1eebb6eb0653e594cb86cd8e536b9b083373fca9aba761ade6cd412d46fb2ab"}, + {file = "protobuf-3.20.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:bc14037281db66aa60856cd4ce4541a942040686d290e3f3224dd3978f88f554"}, + {file = "protobuf-3.20.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:47257d932de14a7b6c4ae1b7dbf592388153ee35ec7cae216b87ae6490ed39a3"}, + {file = "protobuf-3.20.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fbcbb068ebe67c4ff6483d2e2aa87079c325f8470b24b098d6bf7d4d21d57a69"}, + {file = "protobuf-3.20.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:542f25a4adf3691a306dcc00bf9a73176554938ec9b98f20f929a044f80acf1b"}, + {file = "protobuf-3.20.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:fd7133b885e356fa4920ead8289bb45dc6f185a164e99e10279f33732ed5ce15"}, + {file = "protobuf-3.20.0-cp37-cp37m-win32.whl", hash = "sha256:8d84453422312f8275455d1cb52d850d6a4d7d714b784e41b573c6f5bfc2a029"}, + {file = "protobuf-3.20.0-cp37-cp37m-win_amd64.whl", hash = "sha256:52bae32a147c375522ce09bd6af4d2949aca32a0415bc62df1456b3ad17c6001"}, + {file = "protobuf-3.20.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25d2fcd6eef340082718ec9ad2c58d734429f2b1f7335d989523852f2bba220b"}, + {file = "protobuf-3.20.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:88c8be0558bdfc35e68c42ae5bf785eb9390d25915d4863bbc7583d23da77074"}, + {file = "protobuf-3.20.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:38fd9eb74b852e4ee14b16e9670cd401d147ee3f3ec0d4f7652e0c921d6227f8"}, + {file = "protobuf-3.20.0-cp38-cp38-win32.whl", hash = "sha256:7dcd84dc31ebb35ade755e06d1561d1bd3b85e85dbdbf6278011fc97b22810db"}, + {file = "protobuf-3.20.0-cp38-cp38-win_amd64.whl", hash = "sha256:1eb13f5a5a59ca4973bcfa2fc8fff644bd39f2109c3f7a60bd5860cb6a49b679"}, + {file = "protobuf-3.20.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d24c81c2310f0063b8fc1c20c8ed01f3331be9374b4b5c2de846f69e11e21fb"}, + {file = "protobuf-3.20.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:8be43a91ab66fe995e85ccdbdd1046d9f0443d59e060c0840319290de25b7d33"}, + {file = "protobuf-3.20.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7a53d4035427b9dbfbb397f46642754d294f131e93c661d056366f2a31438263"}, + {file = "protobuf-3.20.0-cp39-cp39-win32.whl", hash = "sha256:32bf4a90c207a0b4e70ca6dd09d43de3cb9898f7d5b69c2e9e3b966a7f342820"}, + {file = "protobuf-3.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:6efe066a7135233f97ce51a1aa007d4fb0be28ef093b4f88dac4ad1b3a2b7b6f"}, + {file = "protobuf-3.20.0-py2.py3-none-any.whl", hash = "sha256:4eda68bd9e2a4879385e6b1ea528c976f59cd9728382005cc54c28bcce8db983"}, + {file = "protobuf-3.20.0.tar.gz", hash = "sha256:71b2c3d1cd26ed1ec7c8196834143258b2ad7f444efff26fdc366c6f5e752702"}, ] pycparser = [ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, ] pydantic = [ - {file = "pydantic-1.8.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:05ddfd37c1720c392f4e0d43c484217b7521558302e7069ce8d318438d297739"}, - {file = "pydantic-1.8.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a7c6002203fe2c5a1b5cbb141bb85060cbff88c2d78eccbc72d97eb7022c43e4"}, - {file = "pydantic-1.8.2-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:589eb6cd6361e8ac341db97602eb7f354551482368a37f4fd086c0733548308e"}, - {file = "pydantic-1.8.2-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:10e5622224245941efc193ad1d159887872776df7a8fd592ed746aa25d071840"}, - {file = "pydantic-1.8.2-cp36-cp36m-win_amd64.whl", hash = "sha256:99a9fc39470010c45c161a1dc584997f1feb13f689ecf645f59bb4ba623e586b"}, - {file = "pydantic-1.8.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a83db7205f60c6a86f2c44a61791d993dff4b73135df1973ecd9eed5ea0bda20"}, - {file = "pydantic-1.8.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:41b542c0b3c42dc17da70554bc6f38cbc30d7066d2c2815a94499b5684582ecb"}, - {file = "pydantic-1.8.2-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:ea5cb40a3b23b3265f6325727ddfc45141b08ed665458be8c6285e7b85bd73a1"}, - {file = "pydantic-1.8.2-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:18b5ea242dd3e62dbf89b2b0ec9ba6c7b5abaf6af85b95a97b00279f65845a23"}, - {file = "pydantic-1.8.2-cp37-cp37m-win_amd64.whl", hash = "sha256:234a6c19f1c14e25e362cb05c68afb7f183eb931dd3cd4605eafff055ebbf287"}, - {file = "pydantic-1.8.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:021ea0e4133e8c824775a0cfe098677acf6fa5a3cbf9206a376eed3fc09302cd"}, - {file = "pydantic-1.8.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e710876437bc07bd414ff453ac8ec63d219e7690128d925c6e82889d674bb505"}, - {file = "pydantic-1.8.2-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:ac8eed4ca3bd3aadc58a13c2aa93cd8a884bcf21cb019f8cfecaae3b6ce3746e"}, - {file = "pydantic-1.8.2-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:4a03cbbe743e9c7247ceae6f0d8898f7a64bb65800a45cbdc52d65e370570820"}, - {file = "pydantic-1.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:8621559dcf5afacf0069ed194278f35c255dc1a1385c28b32dd6c110fd6531b3"}, - {file = "pydantic-1.8.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8b223557f9510cf0bfd8b01316bf6dd281cf41826607eada99662f5e4963f316"}, - {file = "pydantic-1.8.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:244ad78eeb388a43b0c927e74d3af78008e944074b7d0f4f696ddd5b2af43c62"}, - {file = "pydantic-1.8.2-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:05ef5246a7ffd2ce12a619cbb29f3307b7c4509307b1b49f456657b43529dc6f"}, - {file = "pydantic-1.8.2-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:54cd5121383f4a461ff7644c7ca20c0419d58052db70d8791eacbbe31528916b"}, - {file = "pydantic-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:4be75bebf676a5f0f87937c6ddb061fa39cbea067240d98e298508c1bda6f3f3"}, - {file = "pydantic-1.8.2-py3-none-any.whl", hash = "sha256:fec866a0b59f372b7e776f2d7308511784dace622e0992a0b59ea3ccee0ae833"}, - {file = "pydantic-1.8.2.tar.gz", hash = "sha256:26464e57ccaafe72b7ad156fdaa4e9b9ef051f69e175dbbb463283000c05ab7b"}, + {file = "pydantic-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cb23bcc093697cdea2708baae4f9ba0e972960a835af22560f6ae4e7e47d33f5"}, + {file = "pydantic-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1d5278bd9f0eee04a44c712982343103bba63507480bfd2fc2790fa70cd64cf4"}, + {file = "pydantic-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab624700dc145aa809e6f3ec93fb8e7d0f99d9023b713f6a953637429b437d37"}, + {file = "pydantic-1.9.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c8d7da6f1c1049eefb718d43d99ad73100c958a5367d30b9321b092771e96c25"}, + {file = "pydantic-1.9.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3c3b035103bd4e2e4a28da9da7ef2fa47b00ee4a9cf4f1a735214c1bcd05e0f6"}, + {file = "pydantic-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3011b975c973819883842c5ab925a4e4298dffccf7782c55ec3580ed17dc464c"}, + {file = "pydantic-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:086254884d10d3ba16da0588604ffdc5aab3f7f09557b998373e885c690dd398"}, + {file = "pydantic-1.9.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0fe476769acaa7fcddd17cadd172b156b53546ec3614a4d880e5d29ea5fbce65"}, + {file = "pydantic-1.9.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8e9dcf1ac499679aceedac7e7ca6d8641f0193c591a2d090282aaf8e9445a46"}, + {file = "pydantic-1.9.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1e4c28f30e767fd07f2ddc6f74f41f034d1dd6bc526cd59e63a82fe8bb9ef4c"}, + {file = "pydantic-1.9.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:c86229333cabaaa8c51cf971496f10318c4734cf7b641f08af0a6fbf17ca3054"}, + {file = "pydantic-1.9.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:c0727bda6e38144d464daec31dff936a82917f431d9c39c39c60a26567eae3ed"}, + {file = "pydantic-1.9.0-cp36-cp36m-win_amd64.whl", hash = "sha256:dee5ef83a76ac31ab0c78c10bd7d5437bfdb6358c95b91f1ba7ff7b76f9996a1"}, + {file = "pydantic-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9c9bdb3af48e242838f9f6e6127de9be7063aad17b32215ccc36a09c5cf1070"}, + {file = "pydantic-1.9.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ee7e3209db1e468341ef41fe263eb655f67f5c5a76c924044314e139a1103a2"}, + {file = "pydantic-1.9.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b6037175234850ffd094ca77bf60fb54b08b5b22bc85865331dd3bda7a02fa1"}, + {file = "pydantic-1.9.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b2571db88c636d862b35090ccf92bf24004393f85c8870a37f42d9f23d13e032"}, + {file = "pydantic-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8b5ac0f1c83d31b324e57a273da59197c83d1bb18171e512908fe5dc7278a1d6"}, + {file = "pydantic-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bbbc94d0c94dd80b3340fc4f04fd4d701f4b038ebad72c39693c794fd3bc2d9d"}, + {file = "pydantic-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e0896200b6a40197405af18828da49f067c2fa1f821491bc8f5bde241ef3f7d7"}, + {file = "pydantic-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bdfdadb5994b44bd5579cfa7c9b0e1b0e540c952d56f627eb227851cda9db77"}, + {file = "pydantic-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:574936363cd4b9eed8acdd6b80d0143162f2eb654d96cb3a8ee91d3e64bf4cf9"}, + {file = "pydantic-1.9.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c556695b699f648c58373b542534308922c46a1cda06ea47bc9ca45ef5b39ae6"}, + {file = "pydantic-1.9.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f947352c3434e8b937e3aa8f96f47bdfe6d92779e44bb3f41e4c213ba6a32145"}, + {file = "pydantic-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5e48ef4a8b8c066c4a31409d91d7ca372a774d0212da2787c0d32f8045b1e034"}, + {file = "pydantic-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:96f240bce182ca7fe045c76bcebfa0b0534a1bf402ed05914a6f1dadff91877f"}, + {file = "pydantic-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:815ddebb2792efd4bba5488bc8fde09c29e8ca3227d27cf1c6990fc830fd292b"}, + {file = "pydantic-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c5b77947b9e85a54848343928b597b4f74fc364b70926b3c4441ff52620640c"}, + {file = "pydantic-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c68c3bc88dbda2a6805e9a142ce84782d3930f8fdd9655430d8576315ad97ce"}, + {file = "pydantic-1.9.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a79330f8571faf71bf93667d3ee054609816f10a259a109a0738dac983b23c3"}, + {file = "pydantic-1.9.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f5a64b64ddf4c99fe201ac2724daada8595ada0d102ab96d019c1555c2d6441d"}, + {file = "pydantic-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a733965f1a2b4090a5238d40d983dcd78f3ecea221c7af1497b845a9709c1721"}, + {file = "pydantic-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cc6a4cb8a118ffec2ca5fcb47afbacb4f16d0ab8b7350ddea5e8ef7bcc53a16"}, + {file = "pydantic-1.9.0-py3-none-any.whl", hash = "sha256:085ca1de245782e9b46cefcf99deecc67d418737a1fd3f6a4f511344b613a5b3"}, + {file = "pydantic-1.9.0.tar.gz", hash = "sha256:742645059757a56ecd886faf4ed2441b9c0cd406079c2b4bee51bcc3fbcd510a"}, ] pygments = [ - {file = "Pygments-2.10.0-py3-none-any.whl", hash = "sha256:b8e67fe6af78f492b3c4b3e2970c0624cbf08beb1e493b2c99b9fa1b67a20380"}, - {file = "Pygments-2.10.0.tar.gz", hash = "sha256:f398865f7eb6874156579fdf36bc840a03cab64d1cde9e93d68f46a425ec52c6"}, + {file = "Pygments-2.11.2-py3-none-any.whl", hash = "sha256:44238f1b60a76d78fc8ca0528ee429702aae011c265fe6a8dd8b63049ae41c65"}, + {file = "Pygments-2.11.2.tar.gz", hash = "sha256:4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a"}, ] pyparsing = [ - {file = "pyparsing-3.0.6-py3-none-any.whl", hash = "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4"}, - {file = "pyparsing-3.0.6.tar.gz", hash = "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81"}, + {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"}, + {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, ] pytz = [ - {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"}, - {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, + {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, + {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, ] requests = [ - {file = "requests-2.26.0-py2.py3-none-any.whl", hash = "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24"}, - {file = "requests-2.26.0.tar.gz", hash = "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"}, + {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, + {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, ] rtea = [ {file = "rtea-0.3.2-cp36-cp36m-macosx_10_7_x86_64.whl", hash = "sha256:10aa8b0684fcaa03cbe9398bc29ece6fafbdf86df0838fa123e8880b1fe00239"}, @@ -963,16 +956,16 @@ snowballstemmer = [ {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, ] sphinx = [ - {file = "Sphinx-4.3.1-py3-none-any.whl", hash = "sha256:048dac56039a5713f47a554589dc98a442b39226a2b9ed7f82797fcb2fe9253f"}, - {file = "Sphinx-4.3.1.tar.gz", hash = "sha256:32a5b3e9a1b176cc25ed048557d4d3d01af635e6b76c5bc7a43b0a34447fbd45"}, + {file = "Sphinx-4.5.0-py3-none-any.whl", hash = "sha256:ebf612653238bcc8f4359627a9b7ce44ede6fdd75d9d30f68255c7383d3a6226"}, + {file = "Sphinx-4.5.0.tar.gz", hash = "sha256:7bf8ca9637a4ee15af412d1a1d9689fec70523a68ca9bb9127c2f3eeb344e2e6"}, ] sphinx-copybutton = [ - {file = "sphinx-copybutton-0.4.0.tar.gz", hash = "sha256:8daed13a87afd5013c3a9af3575cc4d5bec052075ccd3db243f895c07a689386"}, - {file = "sphinx_copybutton-0.4.0-py3-none-any.whl", hash = "sha256:4340d33c169dac6dd82dce2c83333412aa786a42dd01a81a8decac3b130dc8b0"}, + {file = "sphinx-copybutton-0.5.0.tar.gz", hash = "sha256:a0c059daadd03c27ba750da534a92a63e7a36a7736dcf684f26ee346199787f6"}, + {file = "sphinx_copybutton-0.5.0-py3-none-any.whl", hash = "sha256:9684dec7434bd73f0eea58dda93f9bb879d24bff2d8b187b1f2ec08dfe7b5f48"}, ] sphinx-rtd-theme = [ - {file = "sphinx_rtd_theme-0.5.2-py2.py3-none-any.whl", hash = "sha256:4a05bdbe8b1446d77a01e20a23ebc6777c74f43237035e76be89699308987d6f"}, - {file = "sphinx_rtd_theme-0.5.2.tar.gz", hash = "sha256:32bd3b5d13dc8186d7a42fc816a23d32e83a4827d7d9882948e7b837c232da5a"}, + {file = "sphinx_rtd_theme-1.0.0-py2.py3-none-any.whl", hash = "sha256:4d35a56f4508cfee4c4fb604373ede6feae2a306731d533f409ef5c3496fdbd8"}, + {file = "sphinx_rtd_theme-1.0.0.tar.gz", hash = "sha256:eec6d497e4c2195fa0e8b2016b337532b8a699a68bcb22a512870e16925c6a5c"}, ] sphinxcontrib-applehelp = [ {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, @@ -1003,47 +996,48 @@ sphinxcontrib-serializinghtml = [ {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, ] tomli = [ - {file = "tomli-1.2.2-py3-none-any.whl", hash = "sha256:f04066f68f5554911363063a30b108d2b5a5b1a010aa8b6132af78489fe3aade"}, - {file = "tomli-1.2.2.tar.gz", hash = "sha256:c6ce0015eb38820eaf32b5db832dbc26deb3dd427bd5f6556cf0acac2c214fee"}, + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] typed-ast = [ - {file = "typed_ast-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d8314c92414ce7481eee7ad42b353943679cf6f30237b5ecbf7d835519e1212"}, - {file = "typed_ast-1.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b53ae5de5500529c76225d18eeb060efbcec90ad5e030713fe8dab0fb4531631"}, - {file = "typed_ast-1.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:24058827d8f5d633f97223f5148a7d22628099a3d2efe06654ce872f46f07cdb"}, - {file = "typed_ast-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:a6d495c1ef572519a7bac9534dbf6d94c40e5b6a608ef41136133377bba4aa08"}, - {file = "typed_ast-1.5.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:de4ecae89c7d8b56169473e08f6bfd2df7f95015591f43126e4ea7865928677e"}, - {file = "typed_ast-1.5.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:256115a5bc7ea9e665c6314ed6671ee2c08ca380f9d5f130bd4d2c1f5848d695"}, - {file = "typed_ast-1.5.1-cp36-cp36m-win_amd64.whl", hash = "sha256:7c42707ab981b6cf4b73490c16e9d17fcd5227039720ca14abe415d39a173a30"}, - {file = "typed_ast-1.5.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:71dcda943a471d826ea930dd449ac7e76db7be778fcd722deb63642bab32ea3f"}, - {file = "typed_ast-1.5.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4f30a2bcd8e68adbb791ce1567fdb897357506f7ea6716f6bbdd3053ac4d9471"}, - {file = "typed_ast-1.5.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ca9e8300d8ba0b66d140820cf463438c8e7b4cdc6fd710c059bfcfb1531d03fb"}, - {file = "typed_ast-1.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9caaf2b440efb39ecbc45e2fabde809cbe56272719131a6318fd9bf08b58e2cb"}, - {file = "typed_ast-1.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c9bcad65d66d594bffab8575f39420fe0ee96f66e23c4d927ebb4e24354ec1af"}, - {file = "typed_ast-1.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:591bc04e507595887160ed7aa8d6785867fb86c5793911be79ccede61ae96f4d"}, - {file = "typed_ast-1.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:a80d84f535642420dd17e16ae25bb46c7f4c16ee231105e7f3eb43976a89670a"}, - {file = "typed_ast-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:38cf5c642fa808300bae1281460d4f9b7617cf864d4e383054a5ef336e344d32"}, - {file = "typed_ast-1.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5b6ab14c56bc9c7e3c30228a0a0b54b915b1579613f6e463ba6f4eb1382e7fd4"}, - {file = "typed_ast-1.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2b8d7007f6280e36fa42652df47087ac7b0a7d7f09f9468f07792ba646aac2d"}, - {file = "typed_ast-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:b6d17f37f6edd879141e64a5db17b67488cfeffeedad8c5cec0392305e9bc775"}, - {file = "typed_ast-1.5.1.tar.gz", hash = "sha256:484137cab8ecf47e137260daa20bafbba5f4e3ec7fda1c1e69ab299b75fa81c5"}, -] -types-futures = [ - {file = "types-futures-3.3.1.tar.gz", hash = "sha256:bbdad92cec642693bac10fbbecf834776009db7782d91dc293bdd123be73186d"}, - {file = "types_futures-3.3.1-py3-none-any.whl", hash = "sha256:b4bb97d1a028679929a8da2e9e63a5caccc6f68d0d6a456c41fd00e32764f144"}, + {file = "typed_ast-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:183b183b7771a508395d2cbffd6db67d6ad52958a5fdc99f450d954003900266"}, + {file = "typed_ast-1.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:676d051b1da67a852c0447621fdd11c4e104827417bf216092ec3e286f7da596"}, + {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc2542e83ac8399752bc16e0b35e038bdb659ba237f4222616b4e83fb9654985"}, + {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74cac86cc586db8dfda0ce65d8bcd2bf17b58668dfcc3652762f3ef0e6677e76"}, + {file = "typed_ast-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:18fe320f354d6f9ad3147859b6e16649a0781425268c4dde596093177660e71a"}, + {file = "typed_ast-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:31d8c6b2df19a777bc8826770b872a45a1f30cfefcfd729491baa5237faae837"}, + {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:963a0ccc9a4188524e6e6d39b12c9ca24cc2d45a71cfdd04a26d883c922b4b78"}, + {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0eb77764ea470f14fcbb89d51bc6bbf5e7623446ac4ed06cbd9ca9495b62e36e"}, + {file = "typed_ast-1.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:294a6903a4d087db805a7656989f613371915fc45c8cc0ddc5c5a0a8ad9bea4d"}, + {file = "typed_ast-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:26a432dc219c6b6f38be20a958cbe1abffcc5492821d7e27f08606ef99e0dffd"}, + {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7407cfcad702f0b6c0e0f3e7ab876cd1d2c13b14ce770e412c0c4b9728a0f88"}, + {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f30ddd110634c2d7534b2d4e0e22967e88366b0d356b24de87419cc4410c41b7"}, + {file = "typed_ast-1.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8c08d6625bb258179b6e512f55ad20f9dfef019bbfbe3095247401e053a3ea30"}, + {file = "typed_ast-1.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:90904d889ab8e81a956f2c0935a523cc4e077c7847a836abee832f868d5c26a4"}, + {file = "typed_ast-1.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bbebc31bf11762b63bf61aaae232becb41c5bf6b3461b80a4df7e791fabb3aca"}, + {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c29dd9a3a9d259c9fa19d19738d021632d673f6ed9b35a739f48e5f807f264fb"}, + {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:58ae097a325e9bb7a684572d20eb3e1809802c5c9ec7108e85da1eb6c1a3331b"}, + {file = "typed_ast-1.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:da0a98d458010bf4fe535f2d1e367a2e2060e105978873c04c04212fb20543f7"}, + {file = "typed_ast-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:33b4a19ddc9fc551ebabca9765d54d04600c4a50eda13893dadf67ed81d9a098"}, + {file = "typed_ast-1.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1098df9a0592dd4c8c0ccfc2e98931278a6c6c53cb3a3e2cf7e9ee3b06153344"}, + {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42c47c3b43fe3a39ddf8de1d40dbbfca60ac8530a36c9b198ea5b9efac75c09e"}, + {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f290617f74a610849bd8f5514e34ae3d09eafd521dceaa6cf68b3f4414266d4e"}, + {file = "typed_ast-1.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:df05aa5b241e2e8045f5f4367a9f6187b09c4cdf8578bb219861c4e27c443db5"}, + {file = "typed_ast-1.5.2.tar.gz", hash = "sha256:525a2d4088e70a9f75b08b3f87a51acc9cde640e19cc523c7e41aa355564ae27"}, ] types-protobuf = [ - {file = "types-protobuf-3.18.2.tar.gz", hash = "sha256:ca21dedfe7759acbeb0cd8f5c72a74ff3c409ae0c07bc1d94eff5123ac0fa23c"}, - {file = "types_protobuf-3.18.2-py3-none-any.whl", hash = "sha256:bcf3176ca59b42145fd60530f918b74fba01903a6cd96b94fa488791e3af0586"}, + {file = "types-protobuf-3.19.15.tar.gz", hash = "sha256:d371d0a5b32e78c2d684329a5d4491d385e6eadcab497b37c41172ded328c5d9"}, + {file = "types_protobuf-3.19.15-py3-none-any.whl", hash = "sha256:4673a4e56495886590c36cd87f2d855299a699a598eacb2e27d82b57eb4afb05"}, ] typing-extensions = [ - {file = "typing_extensions-4.0.1-py3-none-any.whl", hash = "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b"}, - {file = "typing_extensions-4.0.1.tar.gz", hash = "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e"}, + {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"}, + {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"}, ] urllib3 = [ - {file = "urllib3-1.26.7-py2.py3-none-any.whl", hash = "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"}, - {file = "urllib3-1.26.7.tar.gz", hash = "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece"}, + {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, + {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, ] zipp = [ - {file = "zipp-3.6.0-py3-none-any.whl", hash = "sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc"}, - {file = "zipp-3.6.0.tar.gz", hash = "sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832"}, + {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, + {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, ] diff --git a/pyproject.toml b/pyproject.toml index 7458fd90..4363882d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ readme = "README.md" homepage = "https://github.com/cscs181/CAI" repository = "https://github.com/cscs181/CAI" documentation = "https://github.com/cscs181/CAI#readme" -keywords = ["qq", "mirai", "cqhttp"] +keywords = ["qq", "mirai", "cqhttp", "onebot"] classifiers = ["Framework :: Robot Framework", "Programming Language :: Python :: 3"] include = ["cai/py.typed"] @@ -17,18 +17,18 @@ python = "^3.7" rtea = "^0.3.0" jcestruct = "^0.1.0" protobuf = "^3.14.0" -cachetools = "^4.2.2" -cryptography = "^3.4.1" -typing-extensions = ">=3.10.0,<5.0.0" +cachetools = "^5.0.0" +cryptography = "^36.0.2" +typing-extensions = "^4.1.0" [tool.poetry.dev-dependencies] isort = "^5.9.3" -black = "^21.7b0" -pillow = "^8.1.0" +black = "^22.3.0" +pillow = "^9.1.0" sphinx = "^4.1.0" -mypy-protobuf = "^2.4" -sphinx-rtd-theme = "^0.5.1" -sphinx-copybutton = "^0.4.0" +mypy-protobuf = "^3.2.0" +sphinx-rtd-theme = "^1.0.0" +sphinx-copybutton = "^0.5.0" sphinxcontrib-napoleon = "^0.7" # [[tool.poetry.source]] From 0f8c52484e7931c228de21b23e6e5be761bdd25e Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Thu, 7 Apr 2022 11:25:14 +0800 Subject: [PATCH 054/113] :label: update typing for pep646 --- cai/utils/binary.py | 99 +++++++++++++++++++++++---------------- cai/utils/binary.pyi | 109 ------------------------------------------- 2 files changed, 58 insertions(+), 150 deletions(-) delete mode 100644 cai/utils/binary.pyi diff --git a/cai/utils/binary.py b/cai/utils/binary.py index c26aaeb6..e8016416 100644 --- a/cai/utils/binary.py +++ b/cai/utils/binary.py @@ -9,19 +9,22 @@ https://github.com/cscs181/CAI/blob/master/LICENSE """ import struct +from typing_extensions import Unpack, TypeVarTuple from typing import ( + TYPE_CHECKING, Any, List, Type, Tuple, Union, + Generic, NewType, TypeVar, Callable, - Optional, ) P = TypeVar("P", bound="BasePacket") +Ts = TypeVarTuple("Ts") BOOL = NewType("BOOL", bool) INT8 = NewType("INT8", int) @@ -147,7 +150,7 @@ def read_string(self, offset: int = 0) -> STRING: return STRING(self.read_bytes(length, offset + 4).decode()) -class Packet(BasePacket): +class Packet(BasePacket, Generic[Unpack[Ts]]): """Packet Class for extracting data more efficiently. Support `PEP646`_ typing hints. Using ``pyright`` or ``pylance`` for type checking. @@ -162,7 +165,12 @@ class Packet(BasePacket): """ - def __init__(self, *args, **kwargs): + if TYPE_CHECKING: + + def __new__(cls, *args, **kwargs) -> "Packet[()]": + ... + + def __init__(self: "Packet[Unpack[Ts]]", *args, **kwargs): super(Packet, self).__init__(*args, **kwargs) self.start() @@ -172,107 +180,116 @@ def _add_filter(self, filter: Callable[[Any], Any]): def _get_position(self) -> int: return struct.calcsize(self._query) + self._offset - def start(self, offset: int = 0): + def start(self: "Packet[Unpack[Ts]]", offset: int = 0) -> "Packet[()]": self._query: str = ">" self._offset: int = offset self._executed: bool = False self._filters: List[Callable[[Any], Any]] = [] - return self + return self # type: ignore - def bool(self): + def bool(self: "Packet[Unpack[Ts]]") -> "Packet[Unpack[Ts], BOOL]": self._query += "?" self._add_filter(BOOL) - return self + return self # type: ignore - def int8(self): + def int8(self: "Packet[Unpack[Ts]]") -> "Packet[Unpack[Ts], INT8]": self._query += "b" self._add_filter(INT8) - return self + return self # type: ignore - def uint8(self): + def uint8(self: "Packet[Unpack[Ts]]") -> "Packet[Unpack[Ts], UINT8]": self._query += "B" self._add_filter(UINT8) - return self + return self # type: ignore - def int16(self): + def int16(self: "Packet[Unpack[Ts]]") -> "Packet[Unpack[Ts], INT16]": self._query += "h" self._add_filter(INT16) - return self + return self # type: ignore - def uint16(self): + def uint16(self: "Packet[Unpack[Ts]]") -> "Packet[Unpack[Ts], UINT16]": self._query += "H" self._add_filter(UINT16) - return self + return self # type: ignore - def int32(self): + def int32(self: "Packet[Unpack[Ts]]") -> "Packet[Unpack[Ts], INT32]": self._query += "i" self._add_filter(INT32) - return self + return self # type: ignore - def uint32(self): + def uint32(self: "Packet[Unpack[Ts]]") -> "Packet[Unpack[Ts], UINT32]": self._query += "I" self._add_filter(UINT32) - return self + return self # type: ignore - def int64(self): + def int64(self: "Packet[Unpack[Ts]]") -> "Packet[Unpack[Ts], INT64]": self._query += "q" self._add_filter(INT64) - return self + return self # type: ignore - def uint64(self): + def uint64(self: "Packet[Unpack[Ts]]") -> "Packet[Unpack[Ts], UINT64]": self._query += "Q" self._add_filter(UINT64) - return self + return self # type: ignore - def float(self): + def float(self: "Packet[Unpack[Ts]]") -> "Packet[Unpack[Ts], FLOAT]": self._query += "f" self._add_filter(FLOAT) - return self + return self # type: ignore - def double(self): + def double(self: "Packet[Unpack[Ts]]") -> "Packet[Unpack[Ts], DOUBLE]": self._query += "d" self._add_filter(DOUBLE) - return self + return self # type: ignore - def byte(self): + def byte(self: "Packet[Unpack[Ts]]") -> "Packet[Unpack[Ts], BYTE]": self._query += "c" self._add_filter(BYTE) - return self + return self # type: ignore - def bytes(self, length: int): + def bytes( + self: "Packet[Unpack[Ts]]", length: int + ) -> "Packet[Unpack[Ts], BYTES]": self._query += f"{length}s" self._add_filter(BYTES) - return self + return self # type: ignore - def bytes_with_length(self, head_bytes: int, offset: int = 0): + def bytes_with_length( + self: "Packet[Unpack[Ts]]", head_bytes: int, offset: int = 0 + ) -> "Packet[Unpack[Ts], BYTES]": length = int.from_bytes( self.read_bytes(head_bytes, self._get_position()), "big", ) self._query += f"{head_bytes}x{length - offset}s" self._add_filter(BYTES) - return self - - def string(self, head_bytes: int, offset: int = 0, encoding: str = "utf-8"): + return self # type: ignore + + def string( + self: "Packet[Unpack[Ts]]", + head_bytes: int, + offset: int = 0, + encoding: str = "utf-8", + ) -> "Packet[Unpack[Ts], STRING]": length = int.from_bytes( self.read_bytes(head_bytes, self._get_position()), "big", ) self._query += f"{head_bytes}x{length - offset}s" self._add_filter(lambda x: STRING(x.decode(encoding))) - return self + return self # type: ignore - def offset(self, offset: int): + def offset(self: "Packet[Unpack[Ts]]", offset: int) -> "Packet[Unpack[Ts]]": self._query += f"{offset}x" return self - def remain(self): + def remain(self: "Packet[Unpack[Ts]]") -> "Packet[Unpack[Ts], Packet[()]]": length = struct.calcsize(self._query) self._query += f"{len(self) - length}s" self._add_filter(Packet) - return self + return self # type: ignore - def execute(self): + def execute(self: "Packet[Unpack[Ts]]") -> Tuple[Unpack[Ts]]: if self._executed: raise RuntimeError("Cannot re-execute query. Call `start()` first.") query = self._query @@ -286,4 +303,4 @@ def execute(self): filters, self.unpack_from(query, self._offset), ) - ) + ) # type: ignore diff --git a/cai/utils/binary.pyi b/cai/utils/binary.pyi deleted file mode 100644 index f68b440f..00000000 --- a/cai/utils/binary.pyi +++ /dev/null @@ -1,109 +0,0 @@ -# type: ignore -"""Binary Tools Stub File. - -Type hints in this file needs python>=3.10 or using ``pyright`` or ``pylance``... - -:Copyright: Copyright (C) 2021-2021 cscs181 -:License: AGPL-3.0 or later. See `LICENSE`_ for detail. - -.. _LICENSE: - https://github.com/cscs181/CAI/blob/master/LICENSE -""" - -from typing_extensions import Unpack, TypeVarTuple -from typing import ( - Any, - List, - Type, - Tuple, - Union, - Generic, - NewType, - TypeVar, - Callable, - Optional, -) - -P = TypeVar("P", bound="BasePacket") -Ts = TypeVarTuple("Ts") - -BOOL = NewType("BOOL", bool) -INT8 = NewType("INT8", int) -UINT8 = NewType("UINT8", int) -INT16 = NewType("INT16", int) -UINT16 = NewType("UINT16", int) -INT32 = NewType("INT32", int) -UINT32 = NewType("UINT32", int) -INT64 = NewType("INT64", int) -UINT64 = NewType("UINT64", int) -FLOAT = NewType("FLOAT", float) -DOUBLE = NewType("DOUBLE", float) -BYTE = NewType("BYTE", bytes) -BYTES = NewType("BYTES", bytes) -STRING = NewType("STRING", str) - -class BasePacket(bytearray): - @classmethod - def build(cls: Type[P], *data: Union[bytes, "BasePacket"]) -> P: ... - def write(self: P, *data: Union[bytes, "BasePacket"]) -> P: ... - def write_with_length( - self: P, *data: Union[bytes, "BasePacket"], offset: int = ... - ) -> P: ... - def unpack(self, format: Union[bytes, str]) -> Tuple[Any, ...]: ... - def unpack_from( - self, format: Union[bytes, str], offset: int = ... - ) -> Tuple[Any, ...]: ... - def read_int8(self, offset: int = ...) -> INT8: ... - def read_uint8(self, offset: int = ...) -> UINT8: ... - def read_int16(self, offset: int = ...) -> INT16: ... - def read_uint16(self, offset: int = ...) -> UINT16: ... - def read_int32(self, offset: int = ...) -> INT32: ... - def read_uint32(self, offset: int = ...) -> UINT32: ... - def read_int64(self, offset: int = ...) -> INT64: ... - def read_uint64(self, offset: int = ...) -> UINT64: ... - def read_byte(self, offset: int = ...) -> BYTE: ... - def read_bytes(self, n: int, offset: int = ...) -> BYTES: ... - def read_string(self, offset: int = ...) -> STRING: ... - -_bool = bool - -class Packet(BasePacket, Generic[Unpack[Ts]]): - _query: str = ... - _offset: int = ... - _executed: _bool = ... - _filters: List[Callable[[Any], Any]] = ... - def __init__( - self, *args, cache: Optional[Tuple[Any, ...]] = None, **kwargs - ) -> Packet[()]: ... - def __new__(cls, *args, **kwargs) -> Packet[()]: ... - def start(self: Packet[Unpack[Ts]], offset: int = ...) -> Packet[()]: ... - def bool(self: Packet[Unpack[Ts]]) -> Packet[Unpack[Ts], BOOL]: ... - def int8(self: Packet[Unpack[Ts]]) -> Packet[Unpack[Ts], INT8]: ... - def uint8(self: Packet[Unpack[Ts]]) -> Packet[Unpack[Ts], UINT8]: ... - def int16(self: Packet[Unpack[Ts]]) -> Packet[Unpack[Ts], INT16]: ... - def uint16(self: Packet[Unpack[Ts]]) -> Packet[Unpack[Ts], UINT16]: ... - def int32(self: Packet[Unpack[Ts]]) -> Packet[Unpack[Ts], INT32]: ... - def uint32(self: Packet[Unpack[Ts]]) -> Packet[Unpack[Ts], UINT32]: ... - def int64(self: Packet[Unpack[Ts]]) -> Packet[Unpack[Ts], INT64]: ... - def uint64(self: Packet[Unpack[Ts]]) -> Packet[Unpack[Ts], UINT64]: ... - def float(self: Packet[Unpack[Ts]]) -> Packet[Unpack[Ts], FLOAT]: ... - def double(self: Packet[Unpack[Ts]]) -> Packet[Unpack[Ts], DOUBLE]: ... - def byte(self: Packet[Unpack[Ts]]) -> Packet[Unpack[Ts], BYTE]: ... - def bytes( - self: Packet[Unpack[Ts]], length: int - ) -> Packet[Unpack[Ts], BYTES]: ... - def bytes_with_length( - self: Packet[Unpack[Ts]], head_bytes: int, offset: int = ... - ) -> Packet[Unpack[Ts], BYTES]: ... - def string( - self: Packet[Unpack[Ts]], - head_bytes: int, - offset: int = ..., - encoding: str = ..., - ) -> Packet[Unpack[Ts], STRING]: ... - def offset(self: Packet[Unpack[Ts]], offset: int) -> Packet[Unpack[Ts]]: ... - def remain( - self: Packet[Unpack[Ts]], - ) -> Packet[Unpack[Ts], Packet[()]]: ... - def _exec_cache(self: Packet[Unpack[Ts]]) -> Packet[Unpack[Ts]]: ... - def execute(self: Packet[Unpack[Ts]]) -> Tuple[Unpack[Ts]]: ... From 05eb52b242b968710147676aa9f6392138940803 Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Thu, 7 Apr 2022 15:06:19 +0800 Subject: [PATCH 055/113] :art: format code --- cai/api/__init__.py | 1 - cai/api/base.py | 4 +- cai/api/client.py | 44 +++++--- cai/api/friend.py | 12 +-- cai/api/group.py | 8 +- cai/api/login.py | 17 ++- cai/client/client.py | 137 ++++++++++++++++++------- cai/client/heartbeat/__init__.py | 7 +- cai/client/highway/__init__.py | 1 - cai/client/highway/decoders.py | 25 +++-- cai/client/highway/encoders.py | 90 ++++++++-------- cai/client/highway/frame.py | 12 ++- cai/client/highway/highway.py | 78 +++++++------- cai/client/highway/models.py | 2 +- cai/client/highway/utils.py | 2 +- cai/client/message_service/decoders.py | 70 +++++++------ cai/client/message_service/encoders.py | 85 +++++++-------- cai/client/message_service/models.py | 7 +- cai/client/multi_msg/long_msg.py | 67 +++++++----- cai/client/online_push/__init__.py | 12 ++- cai/client/sso_server/__init__.py | 2 +- cai/client/status_service/__init__.py | 10 +- cai/client/wtlogin/__init__.py | 33 +++--- cai/client/wtlogin/oicq.py | 8 +- cai/client/wtlogin/tlv.py | 2 +- cai/connection/__init__.py | 2 +- cai/settings/protocol.py | 7 +- cai/utils/coroutine.py | 2 +- examples/login.py | 44 +++++--- 29 files changed, 467 insertions(+), 324 deletions(-) diff --git a/cai/api/__init__.py b/cai/api/__init__.py index d3e70dae..2ff5d805 100644 --- a/cai/api/__init__.py +++ b/cai/api/__init__.py @@ -11,5 +11,4 @@ from .client import Client, make_client - __all__ = ["Client", "make_client"] diff --git a/cai/api/base.py b/cai/api/base.py index fea30b33..d642c757 100644 --- a/cai/api/base.py +++ b/cai/api/base.py @@ -4,7 +4,9 @@ class BaseAPI: client: client_t - async def _executor(self, func_name: str, *args, uncaught_error=False, **kwargs): + async def _executor( + self, func_name: str, *args, uncaught_error=False, **kwargs + ): if not hasattr(self.client, func_name): raise AttributeError(f"client has no attribute '{func_name}'") try: diff --git a/cai/api/client.py b/cai/api/client.py index d90609a5..e03e6570 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -8,29 +8,37 @@ """ import hashlib -from typing import Union, Optional, Sequence, BinaryIO +from typing import Union, BinaryIO, Optional, Sequence from cai import log -from cai.client import OnlineStatus, Client as client_t +from cai.client import OnlineStatus +from cai.client import Client as client_t +from cai.settings.protocol import ApkInfo +from cai.pb.msf.msg.svc import PbSendMsgResp from cai.client.highway import HighWaySession -from cai.client.message_service.models import Element, ImageElement, VoiceElement -from cai.client.message_service.encoders import make_group_msg_pkg, build_msg from cai.settings.device import DeviceInfo, new_device -from cai.settings.protocol import ApkInfo +from cai.client.message_service.encoders import build_msg, make_group_msg_pkg +from cai.client.message_service.models import ( + Element, + ImageElement, + VoiceElement, +) -from .error import BotMutedException, AtAllLimitException, GroupMsgLimitException -from .friend import Friend as _Friend from .group import Group as _Group from .login import Login as _Login - -from cai.pb.msf.msg.svc import PbSendMsgResp +from .friend import Friend as _Friend +from .error import ( + BotMutedException, + AtAllLimitException, + GroupMsgLimitException, +) def make_client( uin: int, passwd: Union[str, bytes], apk_info: ApkInfo, - device: Optional[DeviceInfo] = None + device: Optional[DeviceInfo] = None, ) -> client_t: if not (isinstance(passwd, bytes) and len(passwd) == 16): # not a vailed md5 passwd @@ -59,12 +67,14 @@ def status(self) -> Optional[OnlineStatus]: async def send_group_msg(self, gid: int, msg: Sequence[Element]): # todo: split long msg resp: PbSendMsgResp = PbSendMsgResp.FromString( - (await self.client.send_unipkg_and_wait( - "MessageSvc.PbSendMsg", - make_group_msg_pkg( - self.client.next_seq(), gid, build_msg(msg) - ).SerializeToString() - )).data + ( + await self.client.send_unipkg_and_wait( + "MessageSvc.PbSendMsg", + make_group_msg_pkg( + self.client.next_seq(), gid, build_msg(msg) + ).SerializeToString(), + ) + ).data ) if resp.result == 120: @@ -91,7 +101,7 @@ async def set_status( self, status: Union[int, OnlineStatus], battery_status: Optional[int] = None, - is_power_connected: bool = False + is_power_connected: bool = False, ) -> None: """Change client status. diff --git a/cai/api/friend.py b/cai/api/friend.py index 6c7820f4..6aabf8bb 100644 --- a/cai/api/friend.py +++ b/cai/api/friend.py @@ -9,8 +9,10 @@ from typing import List, Optional +from cai.client import FriendGroup +from cai.client import Friend as friend_t + from .base import BaseAPI -from cai.client import FriendGroup, Friend as friend_t class Friend(BaseAPI): @@ -37,9 +39,7 @@ async def get_friend( """ return await self.client.get_friend(friend_uin, cache) - async def get_friend_list( - self, cache: bool = True - ) -> List[friend_t]: + async def get_friend_list(self, cache: bool = True) -> List[friend_t]: """Get account friend list. This function wraps the :meth:`~cai.client.client.Client.get_friend_list` @@ -103,6 +103,4 @@ async def get_friend_group_list( return await self._executor("get_friend_group_list", cache) -__all__ = [ - "Friend" -] +__all__ = ["Friend"] diff --git a/cai/api/group.py b/cai/api/group.py index 65dd0836..b16536c7 100644 --- a/cai/api/group.py +++ b/cai/api/group.py @@ -9,8 +9,10 @@ from typing import List, Union, Optional +from cai.client import GroupMember +from cai.client import Group as group_t + from .base import BaseAPI -from cai.client import GroupMember, Group as group_t class Group(BaseAPI): @@ -37,9 +39,7 @@ async def get_group( """ return await self._executor("get_group", group_id, cache) - async def get_group_list( - self, cache: bool = True - ) -> List[group_t]: + async def get_group_list(self, cache: bool = True) -> List[group_t]: """Get account group list. This function wraps the :meth:`~cai.client.client.Client.get_group_list` diff --git a/cai/api/login.py b/cai/api/login.py index 01d6ff73..7c736b88 100644 --- a/cai/api/login.py +++ b/cai/api/login.py @@ -6,9 +6,10 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ -from .base import BaseAPI from cai.exceptions import LoginException +from .base import BaseAPI + class Login(BaseAPI): async def login(self): @@ -29,9 +30,7 @@ async def login(self): await self.client.close() raise - async def submit_captcha( - self, captcha: str, captcha_sign: bytes - ) -> bool: + async def submit_captcha(self, captcha: str, captcha_sign: bytes) -> bool: """Submit captcha data to login. This function wraps the :meth:`~cai.client.client.Client.submit_captcha` @@ -47,7 +46,7 @@ async def submit_captcha( """ try: await self._executor("submit_captcha", captcha, captcha_sign) - except not LoginException: + except LoginException: await self.client.close() raise return True @@ -83,7 +82,7 @@ async def request_sms(self) -> bool: """ try: return await self.client.request_sms() - except not LoginException: + except LoginException: await self.client.close() raise @@ -102,12 +101,10 @@ async def submit_sms(self, sms_code: str) -> bool: """ try: await self._executor("submit_sms", sms_code) - except not LoginException: + except LoginException: await self.client.close() raise return True -__all__ = [ - "Login" -] +__all__ = ["Login"] diff --git a/cai/client/client.py b/cai/client/client.py index 83217373..5ad34d5e 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -16,11 +16,12 @@ Set, Dict, List, + Tuple, Union, Callable, Optional, Awaitable, - overload, Tuple, + overload, ) from cachetools import TTLCache @@ -28,8 +29,8 @@ from cai import log from cai.utils.binary import Packet from cai.utils.future import FutureStore -from cai.settings.device import DeviceInfo from cai.settings.protocol import ApkInfo +from cai.settings.device import DeviceInfo from cai.connection import Connection, connect from cai.exceptions import ( LoginException, @@ -46,10 +47,10 @@ ) from .event import Event -from .multi_msg.long_msg import _handle_multi_resp_body -from .packet import IncomingPacket, UniPacket +from .packet import UniPacket, IncomingPacket from .command import Command, _packet_to_command from .sso_server import SsoServer, get_sso_server +from .multi_msg.long_msg import _handle_multi_resp_body from .online_push import handle_c2c_sync, handle_push_msg from .heartbeat import Heartbeat, encode_heartbeat, handle_heartbeat from .models import Group, Friend, SigInfo, FriendGroup, GroupMember @@ -109,7 +110,9 @@ encode_login_request2_captcha, ) -HT = Callable[["Client", IncomingPacket, Tuple[DeviceInfo, ApkInfo]], Awaitable[Command]] +HT = Callable[ + ["Client", IncomingPacket, Tuple[DeviceInfo, ApkInfo]], Awaitable[Command] +] LT = Callable[["Client", Event], Awaitable[None]] HANDLERS: Dict[str, HT] = { @@ -131,16 +134,28 @@ "OnlinePush.PbC2CMsgSync": handle_c2c_sync, "OnlinePush.PbPushC2CMsg": handle_push_msg, # "OnlinePush.PbPushBindUinGroupMsg": handle_push_msg, # sub account - # new - "MultiMsg.ApplyUp": _handle_multi_resp_body + "MultiMsg.ApplyUp": _handle_multi_resp_body, } class Client: LISTENERS: Set[LT] = set() - def __init__(self, uin: int, password_md5: bytes, device: DeviceInfo, apk_info: ApkInfo, *, loop=None): + def __init__( + self, + uin: int, + password_md5: bytes, + device: DeviceInfo, + apk_info: ApkInfo, + *, + auto_reconnect: bool = True, + max_reconnections: Optional[int] = 3, + ): + # client info + self._device: DeviceInfo = device + self._apk_info: ApkInfo = apk_info + # account info self._uin: int = uin self._password_md5: bytes = password_md5 @@ -184,18 +199,30 @@ def __init__(self, uin: int, password_md5: bytes, device: DeviceInfo, apk_info: self._msg_cache: TTLCache = TTLCache(maxsize=1024, ttl=3600) self._receive_store: FutureStore[int, Command] = FutureStore() - self.device_info: DeviceInfo = device - self.apk_info: ApkInfo = apk_info - self._reconnect: bool = True - self.closed: asyncio.Event = asyncio.Event() - - if not loop: - loop = asyncio.get_event_loop() - self._loop = loop + # connection info + self._reconnect: bool = auto_reconnect + self._max_reconnections: Optional[int] = max_reconnections + self._closed: asyncio.Event = asyncio.Event() def __str__(self) -> str: return f"" + @property + def device(self) -> DeviceInfo: + """ + Returns: + DeviceInfo: client device info + """ + return self._device + + @property + def apk_info(self) -> ApkInfo: + """ + Returns: + ApkInfo: client apk(protocol) info + """ + return self._apk_info + @property def uin(self) -> int: """ @@ -264,6 +291,10 @@ def connected(self) -> bool: """ return bool(self._connection and not self._connection.closed) + @property + def closed(self) -> bool: + return self._closed.is_set() + async def connect(self, server: Optional[SsoServer] = None) -> None: """Connect to the server. @@ -278,6 +309,8 @@ async def connect(self, server: Optional[SsoServer] = None) -> None: """ if self.connected: raise RuntimeError("Already connected to the server") + if self.closed: + raise RuntimeError("Client is closed") log.network.debug("Getting Sso server") _server = server or await get_sso_server() log.logger.info(f"Connecting to server: {_server.host}:{_server.port}") @@ -285,7 +318,9 @@ async def connect(self, server: Optional[SsoServer] = None) -> None: self._connection = await connect( _server.host, _server.port, ssl=False, timeout=3.0 ) - self._loop.create_task(self.receive()).add_done_callback(self._recv_done_cb) + asyncio.create_task(self.receive()).add_done_callback( + self._recv_done_cb + ) except ConnectionError as e: raise except Exception as e: @@ -297,10 +332,10 @@ async def connect(self, server: Optional[SsoServer] = None) -> None: def _recv_done_cb(self, _task): if self._reconnect: log.network.warning("receiver stopped, try to reconnect") - self._loop.create_task(self.reconnect()) + asyncio.create_task(self.reconnect()) else: log.network.warning("receiver stopped") - self._loop.create_task(self.close()) + asyncio.create_task(self.close()) async def disconnect(self) -> None: """Disconnect if already connected to the server.""" @@ -340,14 +375,19 @@ async def reconnect( async def close(self) -> None: """Close the client and logout.""" log.logger.warning("closing client") + # disable reconnection self._reconnect = False + # logout if ( self.connected and self.status and self.status != OnlineStatus.Offline ): await self.register(OnlineStatus.Offline) + + # clear waiting packet self._receive_store.cancel_all() + # disconnect server await self.disconnect() self.closed.set() @@ -405,19 +445,32 @@ async def send_and_wait( await self.send(seq, command_name, packet) return await self._receive_store.fetch(seq, timeout) - async def send_unipkg_and_wait(self, command_name: str, enc_packet: bytes, seq=-1, timeout=10.0): + async def send_unipkg_and_wait( + self, command_name: str, enc_packet: bytes, seq=-1, timeout=10.0 + ): if seq == -1: seq = self.next_seq() return await self.send_and_wait( - seq, command_name, - UniPacket.build(self.uin, seq, command_name, self._session_id, 1, enc_packet, self._siginfo.d2key), - timeout + seq, + command_name, + UniPacket.build( + self.uin, + seq, + command_name, + self._session_id, + 1, + enc_packet, + self._siginfo.d2key, + ), + timeout, ) async def _handle_incoming_packet(self, in_packet: IncomingPacket) -> None: try: handler = HANDLERS.get(in_packet.command_name, _packet_to_command) - packet = await handler(self, in_packet, (self.device_info, self.apk_info)) + packet = await handler( + self, in_packet, (self.device_info, self.apk_info) + ) self._receive_store.store_result(packet.seq, packet) except Exception as e: # TODO: handle exception @@ -431,7 +484,12 @@ async def receive(self): """ while self.connected: try: - length: int = int.from_bytes(await self.connection.read_bytes(4), "big", signed=False) - 4 + length: int = ( + int.from_bytes( + await self.connection.read_bytes(4), "big", signed=False + ) + - 4 + ) data = await self.connection.read_bytes(length) packet = IncomingPacket.parse( @@ -445,7 +503,7 @@ async def receive(self): f"(receive:{packet.ret_code}): {packet.command_name}" ) # do not block receive - self._loop.create_task(self._handle_incoming_packet(packet)) + asyncio.create_task(self._handle_incoming_packet(packet)) except ConnectionAbortedError as e: log.logger.error(f"{self.uin} connection lost: {str(e)}") break @@ -539,7 +597,7 @@ async def _handle_login_response( self._t104, self._siginfo.g, self.device_info.imei, - self.apk_info + self.apk_info, ) response = await self.send_and_wait( seq, "wtlogin.login", packet @@ -611,7 +669,7 @@ async def login(self) -> LoginSuccess: self.uin, self._password_md5, self.device_info, - self.apk_info + self.apk_info, ) response = await self.send_and_wait(seq, "wtlogin.login", packet) return await self._handle_login_response(response) @@ -647,7 +705,7 @@ async def submit_captcha( captcha_sign, self._t104, self.device_info.imei, - self.apk_info + self.apk_info, ) response = await self.send_and_wait(seq, "wtlogin.login", packet) return await self._handle_login_response(response) @@ -680,7 +738,7 @@ async def submit_slider_ticket(self, ticket: str) -> LoginSuccess: ticket, self._t104, self.device_info.imei, - self.apk_info + self.apk_info, ) response = await self.send_and_wait(seq, "wtlogin.login", packet) return await self._handle_login_response(response) @@ -713,7 +771,7 @@ async def request_sms(self) -> bool: self._t104, self._t174, self.device_info.imei, - self.apk_info + self.apk_info, ) response = await self.send_and_wait(seq, "wtlogin.login", packet) @@ -755,7 +813,7 @@ async def submit_sms(self, sms_code: str) -> LoginSuccess: self._t174, self._siginfo.g, self.device_info.imei, - self.apk_info + self.apk_info, ) response = await self.send_and_wait(seq, "wtlogin.login", packet) return await self._handle_login_response(response) @@ -795,7 +853,7 @@ async def _handle_refresh_response( self._t104, self._siginfo.g, self.device_info.imei, - self.apk_info + self.apk_info, ) response = await self.send_and_wait( seq, "wtlogin.login", packet @@ -843,7 +901,7 @@ async def refresh_siginfo(self) -> LoginSuccess: self._siginfo.wt_session_ticket, self._siginfo.wt_session_ticket_key, self.device_info, - self.apk_info + self.apk_info, ) response = await self.send_and_wait(seq, "wtlogin.exchange_emp", packet) @@ -883,7 +941,7 @@ async def register( status, register_reason, self.apk_info.sub_app_id, - self.device_info + self.device_info, ) response = await self.send_and_wait(seq, "StatSvc.register", packet) @@ -936,7 +994,7 @@ async def set_status( self.device_info, status, battery_status, - is_power_connected + is_power_connected, ) response = await self.send_and_wait( seq, "StatSvc.SetStatusFromClient", packet @@ -977,7 +1035,12 @@ async def heartbeat(self) -> None: while self._heartbeat_enabled and not self._connection.closed: seq = self.next_seq() packet = encode_heartbeat( - seq, self._session_id, self.device_info.imei, self._ksid, self.uin, self.apk_info.sub_app_id + seq, + self._session_id, + self.device_info.imei, + self._ksid, + self.uin, + self.apk_info.sub_app_id, ) try: response = await self.send_and_wait( diff --git a/cai/client/heartbeat/__init__.py b/cai/client/heartbeat/__init__.py index 37c1d872..b2b516fd 100644 --- a/cai/client/heartbeat/__init__.py +++ b/cai/client/heartbeat/__init__.py @@ -21,7 +21,12 @@ def encode_heartbeat( - seq: int, session_id: bytes, imei: str, ksid: bytes, uin: int, sub_app_id: int + seq: int, + session_id: bytes, + imei: str, + ksid: bytes, + uin: int, + sub_app_id: int, ) -> Packet: """Build heartbeat alive packet. diff --git a/cai/client/highway/__init__.py b/cai/client/highway/__init__.py index b53b1834..cb227ebb 100644 --- a/cai/client/highway/__init__.py +++ b/cai/client/highway/__init__.py @@ -1,4 +1,3 @@ from .highway import HighWaySession - __all__ = ["HighWaySession"] diff --git a/cai/client/highway/decoders.py b/cai/client/highway/decoders.py index 006e4d7f..da5e6734 100644 --- a/cai/client/highway/decoders.py +++ b/cai/client/highway/decoders.py @@ -1,41 +1,50 @@ -from .models import ImageUploadResponse, UploadResponse -from .utils import itoa from cai.pb.im.oidb.cmd0x388.cmd0x388_pb2 import D388RspBody +from .utils import itoa +from .models import UploadResponse, ImageUploadResponse + def decode_upload_image_resp(data: bytes) -> ImageUploadResponse: pkg = decode_d388_rsp(data).tryupImgRsp[0] if pkg.result != 0: - return ImageUploadResponse(resultCode=pkg.result, message=pkg.failMsg.decode()) + return ImageUploadResponse( + resultCode=pkg.result, message=pkg.failMsg.decode() + ) if pkg.fileExit: if pkg.imgInfo: info = pkg.imgInfo # fuck: pkg.fileId != pkg.fileid return ImageUploadResponse( - isExists=True, fileId=pkg.fileid, hasMetaData=True, - fileType=info.fileType, width=info.fileWidth, height=info.fileHeight + isExists=True, + fileId=pkg.fileid, + hasMetaData=True, + fileType=info.fileType, + width=info.fileWidth, + height=info.fileHeight, ) else: return ImageUploadResponse(isExists=True, fileId=pkg.fileid) return ImageUploadResponse( isExists=False, uploadAddr=[(itoa(a), p) for a, p in zip(pkg.upIp, pkg.upPort)], - uploadKey=pkg.upUkey + uploadKey=pkg.upUkey, ) def decode_upload_ptt_resp(data: bytes) -> UploadResponse: pkg = decode_d388_rsp(data).tryupPttRsp[0] if pkg.result != 0: - return UploadResponse(resultCode=pkg.result, message=pkg.failMsg.decode()) + return UploadResponse( + resultCode=pkg.result, message=pkg.failMsg.decode() + ) if pkg.fileExit: return UploadResponse(isExists=True, fileId=pkg.fileid) return UploadResponse( isExists=False, uploadAddr=[(itoa(a), p) for a, p in zip(pkg.upIp, pkg.upPort)], - uploadKey=pkg.upUkey + uploadKey=pkg.upUkey, ) diff --git a/cai/client/highway/encoders.py b/cai/client/highway/encoders.py index 663fd656..d96c5859 100644 --- a/cai/client/highway/encoders.py +++ b/cai/client/highway/encoders.py @@ -1,57 +1,57 @@ -from cai.pb.im.oidb.cmd0x388.cmd0x388_pb2 import D388ReqBody, TryUpImgReq, TryUpPttReq +from cai.pb.im.oidb.cmd0x388.cmd0x388_pb2 import ( + D388ReqBody, + TryUpImgReq, + TryUpPttReq, +) def encode_d388_req( - group_code: int, - uin: int, - md5: bytes, - size: int, - subcmd: int + group_code: int, uin: int, md5: bytes, size: int, subcmd: int ) -> D388ReqBody: img, ptt = None, None if subcmd == 1: # upload img fn = md5.hex().upper() + ".jpg" - img = [TryUpImgReq( - groupCode=group_code, - srcUin=uin, - fileName=fn.encode(), - fileMd5=md5, - fileSize=size, - fileId=0, - srcTerm=5, - platformType=9, - buType=1, - picType=1003, - picWidth=1920, - picHeight=903, - buildVer=b"8.8.50.2324", - appPicType=1052, - originalPic=1, - srvUpload=0 - )] + img = [ + TryUpImgReq( + groupCode=group_code, + srcUin=uin, + fileName=fn.encode(), + fileMd5=md5, + fileSize=size, + fileId=0, + srcTerm=5, + platformType=9, + buType=1, + picType=1003, + picWidth=1920, + picHeight=903, + buildVer=b"8.8.50.2324", + appPicType=1052, + originalPic=1, + srvUpload=0, + ) + ] elif subcmd == 3: # voice - ptt = [TryUpPttReq( - groupCode=group_code, - srcUin=uin, - fileMd5=md5, - fileName=(md5.hex().upper() + ".amr").encode(), - fileSize=size, - voiceLength=size, - voiceType=1, - codec=0, - srcTerm=5, - platformType=9, - buType=4, - innerIp=0, - buildVer=b"8.8.50.2324", - newUpChan=True - )] + ptt = [ + TryUpPttReq( + groupCode=group_code, + srcUin=uin, + fileMd5=md5, + fileName=(md5.hex().upper() + ".amr").encode(), + fileSize=size, + voiceLength=size, + voiceType=1, + codec=0, + srcTerm=5, + platformType=9, + buType=4, + innerIp=0, + buildVer=b"8.8.50.2324", + newUpChan=True, + ) + ] else: ValueError("unsupported subcmd:", subcmd) return D388ReqBody( - netType=8, - subcmd=subcmd, - tryupImgReq=img, - tryupPttReq=ptt + netType=8, subcmd=subcmd, tryupImgReq=img, tryupPttReq=ptt ) - diff --git a/cai/client/highway/frame.py b/cai/client/highway/frame.py index 4c557930..42191b1a 100644 --- a/cai/client/highway/frame.py +++ b/cai/client/highway/frame.py @@ -1,5 +1,5 @@ -import asyncio import struct +import asyncio from typing import Tuple from cai.pb.highway.protocol.highway_head_pb2 import highway_head @@ -15,15 +15,19 @@ def write_frame(head: bytes, body: bytes) -> bytes: return buf -async def read_frame(reader: asyncio.StreamReader) -> Tuple[highway_head.RspDataHighwayHead, bytes]: +async def read_frame( + reader: asyncio.StreamReader, +) -> Tuple[highway_head.RspDataHighwayHead, bytes]: head = await reader.readexactly(9) if len(head) != 9 and head[0] != 0x28: raise ValueError("Invalid frame head", head) hl, bl = struct.unpack("!II", head[1:]) try: return ( - highway_head.RspDataHighwayHead.FromString(await reader.readexactly(hl)), - await reader.readexactly(bl) + highway_head.RspDataHighwayHead.FromString( + await reader.readexactly(hl) + ), + await reader.readexactly(bl), ) finally: await reader.read(1) # flush end byte diff --git a/cai/client/highway/highway.py b/cai/client/highway/highway.py index 14d9e218..13a77d5c 100644 --- a/cai/client/highway/highway.py +++ b/cai/client/highway/highway.py @@ -1,25 +1,22 @@ import asyncio import logging from hashlib import md5 -from typing import Tuple, BinaryIO, TYPE_CHECKING, Optional, List +from typing import TYPE_CHECKING, List, Tuple, BinaryIO, Optional + +from cai.pb.highway.protocol.highway_head_pb2 import highway_head -from .decoders import decode_upload_image_resp, decode_upload_ptt_resp from .encoders import encode_d388_req -from .utils import calc_file_md5_and_length, timeit, to_id from .frame import read_frame, write_frame -from cai.pb.highway.protocol.highway_head_pb2 import highway_head +from .utils import to_id, timeit, calc_file_md5_and_length from ..message_service.models import ImageElement, VoiceElement +from .decoders import decode_upload_ptt_resp, decode_upload_image_resp if TYPE_CHECKING: from cai.client.client import Client def _create_highway_header( - cmd: bytes, - flag: int, - cmd_id: int, - client: "Client", - locale=2052 + cmd: bytes, flag: int, cmd_id: int, client: "Client", locale=2052 ) -> highway_head.DataHighwayHead: return highway_head.DataHighwayHead( version=1, @@ -29,7 +26,7 @@ def _create_highway_header( seq=client.next_seq(), appid=client.apk_info.sub_app_id, localeId=locale, - dataflag=flag + dataflag=flag, ) @@ -59,18 +56,13 @@ async def _upload_controller( file: BinaryIO, cmd_id: int, ticket: bytes, - ext=None + ext=None, ) -> Optional[bytes]: for addr in addrs: try: t, d = await timeit( self.bdh_uploader( - b"PicUp.DataUp", - addr, - file, - cmd_id, - ticket, - ext + b"PicUp.DataUp", addr, file, cmd_id, ticket, ext ) ) self.logger.info("upload complete, use %fms" % (t * 1000)) @@ -86,10 +78,14 @@ async def _upload_controller( async def upload_image(self, file: BinaryIO, gid: int) -> ImageElement: fmd5, fl = calc_file_md5_and_length(file) ret = decode_upload_image_resp( - (await self._client.send_unipkg_and_wait( - "ImgStore.GroupPicUp", - encode_d388_req(gid, self._client.uin, fmd5, fl, 1).SerializeToString() - )).data + ( + await self._client.send_unipkg_and_wait( + "ImgStore.GroupPicUp", + encode_d388_req( + gid, self._client.uin, fmd5, fl, 1 + ).SerializeToString(), + ) + ).data ) if ret.resultCode != 0: raise ConnectionError(ret.resultCode) @@ -97,17 +93,18 @@ async def upload_image(self, file: BinaryIO, gid: int) -> ImageElement: self.logger.debug("file not found, uploading...") await self._upload_controller( - ret.uploadAddr, - file, - 2, # send to group - ret.uploadKey + ret.uploadAddr, file, 2, ret.uploadKey # send to group ) ret = decode_upload_image_resp( - (await self._client.send_unipkg_and_wait( - "ImgStore.GroupPicUp", - encode_d388_req(gid, self._client.uin, fmd5, fl, 1).SerializeToString() - )).data + ( + await self._client.send_unipkg_and_wait( + "ImgStore.GroupPicUp", + encode_d388_req( + gid, self._client.uin, fmd5, fl, 1 + ).SerializeToString(), + ) + ).data ) if ret.hasMetaData: @@ -125,12 +122,14 @@ async def upload_image(self, file: BinaryIO, gid: int) -> ImageElement: height=h, md5=fmd5, filetype=image_type, - url=f"https://gchat.qpic.cn/gchatpic_new/1/0-0-{fmd5.hex().upper()}/0?term=2" + url=f"https://gchat.qpic.cn/gchatpic_new/1/0-0-{fmd5.hex().upper()}/0?term=2", ) async def upload_voice(self, file: BinaryIO, gid: int) -> VoiceElement: fmd5, fl = calc_file_md5_and_length(file) - ext = encode_d388_req(gid, self._client.uin, fmd5, fl, 3).SerializeToString() + ext = encode_d388_req( + gid, self._client.uin, fmd5, fl, 3 + ).SerializeToString() if not (self._session_key and self._session_sig): self._decode_bdh_session() ret = decode_upload_ptt_resp( @@ -139,7 +138,7 @@ async def upload_voice(self, file: BinaryIO, gid: int) -> VoiceElement: file, 29, # send to group self._session_sig, - ext + ext, ) ) if ret.resultCode: @@ -151,7 +150,7 @@ async def upload_voice(self, file: BinaryIO, gid: int) -> VoiceElement: md5=fmd5, size=fl, group_file_key=ret.uploadKey, - url=f"https://grouptalk.c2c.qq.com/?ver=0&rkey={ret.uploadKey.hex()}&filetype=4%voice_codec=0" + url=f"https://grouptalk.c2c.qq.com/?ver=0&rkey={ret.uploadKey.hex()}&filetype=4%voice_codec=0", ) async def bdh_uploader( @@ -161,8 +160,9 @@ async def bdh_uploader( file: BinaryIO, cmd_id: int, ticket: bytes, - ext: bytes = None, *, - block_size=65535 + ext: bytes = None, + *, + block_size=65535, ) -> Optional[bytes]: fmd5, fl = calc_file_md5_and_length(file) reader, writer = await asyncio.open_connection(*addr) @@ -173,16 +173,18 @@ async def bdh_uploader( if not bl: return ext head = highway_head.ReqDataHighwayHead( - basehead=_create_highway_header(cmd, 4096, cmd_id, self._client), + basehead=_create_highway_header( + cmd, 4096, cmd_id, self._client + ), seghead=highway_head.SegHead( filesize=fl, dataoffset=bc * block_size, datalength=len(bl), serviceticket=ticket, md5=md5(bl).digest(), - fileMd5=fmd5 + fileMd5=fmd5, ), - reqExtendinfo=ext + reqExtendinfo=ext, ) writer.write(write_frame(head.SerializeToString(), bl)) diff --git a/cai/client/highway/models.py b/cai/client/highway/models.py index 4a09e76e..8bd5875b 100644 --- a/cai/client/highway/models.py +++ b/cai/client/highway/models.py @@ -1,5 +1,5 @@ from dataclasses import dataclass -from typing import Optional, List, Tuple +from typing import List, Tuple, Optional @dataclass diff --git a/cai/client/highway/utils.py b/cai/client/highway/utils.py index 9e3b6bd8..3eb68bfa 100644 --- a/cai/client/highway/utils.py +++ b/cai/client/highway/utils.py @@ -1,7 +1,7 @@ import time import uuid from hashlib import md5 -from typing import BinaryIO, Tuple, Awaitable, Any +from typing import Any, Tuple, BinaryIO, Awaitable def calc_file_md5_and_length(file: BinaryIO, bs=4096) -> Tuple[bytes, int]: diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index cbbc2f25..2e52367f 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -15,7 +15,7 @@ from cai.log import logger from cai.client.event import Event from cai.pb.msf.msg.comm import Msg -from cai.pb.im.msg.msg_body import Elem, Ptt +from cai.pb.im.msg.msg_body import Ptt, Elem from cai.pb.im.msg.service.comm_elem import ( MsgElemInfo_servtype2, MsgElemInfo_servtype3, @@ -28,14 +28,16 @@ FaceElement, PokeElement, TextElement, + AtAllElement, GroupMessage, ImageElement, ReplyElement, - AtAllElement, - RichMsgElement, + ShakeElement, + VoiceElement, PrivateMessage, + RichMsgElement, + FlashImageElement, SmallEmojiElement, - FlashImageElement, ShakeElement, VoiceElement ) @@ -61,15 +63,17 @@ def parse_elements(elems: Sequence[Elem], ptt: Optional[Ptt]) -> List[Element]: for bl in ptt.down_para.decode().split("&")[1:]: k, v = bl.split("=", 1) info[k] = v - return [VoiceElement( - ptt.file_name.decode(), - info["filetype"], - ptt.src_uin, - ptt.file_md5, - ptt.file_size, - bytes.fromhex(info["rkey"]), - "https://grouptalk.c2c.qq.com" + ptt.down_para.decode() - )] + return [ + VoiceElement( + ptt.file_name.decode(), + info["filetype"], + ptt.src_uin, + ptt.file_md5, + ptt.file_size, + bytes.fromhex(info["rkey"]), + "https://grouptalk.c2c.qq.com" + ptt.down_para.decode(), + ) + ] res: List[Element] = [] index = 0 while index < len(elems): @@ -100,8 +104,10 @@ def parse_elements(elems: Sequence[Elem], ptt: Optional[Ptt]) -> List[Element]: else: res.append( AtElement( - int.from_bytes(elem.text.attr_6_buf[7:11], "big", signed=False), - elem.text.str.decode("utf-8") + int.from_bytes( + elem.text.attr_6_buf[7:11], "big", signed=False + ), + elem.text.str.decode("utf-8"), ) ) else: @@ -114,7 +120,7 @@ def parse_elements(elems: Sequence[Elem], ptt: Optional[Ptt]) -> List[Element]: return [ RichMsgElement( content, - elem.rich_msg.service_id if content[0] == 60 else -1 + elem.rich_msg.service_id if content[0] == 60 else -1, ) ] elif elem.HasField("light_app"): @@ -122,12 +128,7 @@ def parse_elements(elems: Sequence[Elem], ptt: Optional[Ptt]) -> List[Element]: content = zlib.decompress(elem.light_app.data[1:]) else: content = elem.light_app.data[1:] - return [ - RichMsgElement( - content, - -2 - ) - ] + return [RichMsgElement(content, -2)] # TextElemDecoder elif elem.HasField("face"): res.append(FaceElement(elem.face.index)) @@ -182,12 +183,15 @@ def parse_elements(elems: Sequence[Elem], ptt: Optional[Ptt]) -> List[Element]: if elem.not_online_image.orig_url: res.append( ImageElement( - filename=elem.not_online_image.file_path.decode("utf-8"), + filename=elem.not_online_image.file_path.decode( + "utf-8" + ), size=elem.not_online_image.file_len, width=elem.not_online_image.pic_width, height=elem.not_online_image.pic_height, md5=elem.not_online_image.pic_md5, - url="https://c2cpicdw.qpic.cn" + elem.not_online_image.orig_url, + url="https://c2cpicdw.qpic.cn" + + elem.not_online_image.orig_url, ) ) elif ( @@ -196,7 +200,9 @@ def parse_elements(elems: Sequence[Elem], ptt: Optional[Ptt]) -> List[Element]: ): res.append( ImageElement( - filename=elem.not_online_image.file_path.decode("utf-8"), + filename=elem.not_online_image.file_path.decode( + "utf-8" + ), size=elem.not_online_image.file_len, width=elem.not_online_image.pic_width, height=elem.not_online_image.pic_height, @@ -223,12 +229,14 @@ def parse_elements(elems: Sequence[Elem], ptt: Optional[Ptt]) -> List[Element]: else poke.vaspoke_id, poke.vaspoke_name.decode("utf-8"), poke.poke_strength, - poke.double_hit + poke.double_hit, ) ] break elif service_type == 3: - flash = MsgElemInfo_servtype3.FromString(elem.common_elem.pb_elem) + flash = MsgElemInfo_servtype3.FromString( + elem.common_elem.pb_elem + ) if flash.flash_troop_pic: res.append( FlashImageElement( @@ -239,7 +247,7 @@ def parse_elements(elems: Sequence[Elem], ptt: Optional[Ptt]) -> List[Element]: md5=flash.flash_troop_pic.md5, width=flash.flash_troop_pic.width, height=flash.flash_troop_pic.height, - url=f"https://gchat.qpic.cn/gchatpic_new/0/0-0-{flash.flash_troop_pic.md5.hex().upper()}/0" + url=f"https://gchat.qpic.cn/gchatpic_new/0/0-0-{flash.flash_troop_pic.md5.hex().upper()}/0", ) ) break @@ -250,7 +258,11 @@ def parse_elements(elems: Sequence[Elem], ptt: Optional[Ptt]) -> List[Element]: ) res.append(FaceElement(info.index)) elif elem.HasField("shake_window"): - res.append(ShakeElement(stype=elem.shake_window.type, uin=elem.shake_window.uin)) + res.append( + ShakeElement( + stype=elem.shake_window.type, uin=elem.shake_window.uin + ) + ) index += 1 return res diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py index 22f40f97..9c58b97f 100644 --- a/cai/client/message_service/encoders.py +++ b/cai/client/message_service/encoders.py @@ -1,22 +1,36 @@ -import random import zlib +import random +from typing import Union, Sequence -from typing import Sequence, Union -from cai.pb.im.msg.msg_body import MsgBody, PlainText, RichText, CustomFace, Elem, CommonElem, LightAppElem, RichMsg, \ - ShakeWindow, Ptt -from cai.pb.msf.msg.svc.svc_pb2 import RoutingHead, Grp +from cai.pb.msf.msg.svc import PbSendMsgReq from cai.pb.msf.msg.comm.comm_pb2 import ContentHead +from cai.pb.msf.msg.svc.svc_pb2 import Grp, RoutingHead +from cai.pb.im.msg.service.comm_elem import ( + MsgElemInfo_servtype2, + MsgElemInfo_servtype3, +) +from cai.pb.im.msg.msg_body import ( + Ptt, + Elem, + MsgBody, + RichMsg, + RichText, + PlainText, + CommonElem, + CustomFace, + ShakeWindow, + LightAppElem, +) from . import models -from cai.pb.msf.msg.svc import PbSendMsgReq -from cai.pb.im.msg.service.comm_elem import MsgElemInfo_servtype3, MsgElemInfo_servtype2 - # todo: https://github.com/mamoe/mirai/blob/7d3971259de59cede94b7a55650c8a6ad4346a59/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbSendMsg.kt#L103 # https://github.com/mamoe/mirai/blob/74fc5a50376ed0330b984af51e0fabc2147afdbb/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt -def _build_image_elem(e: Union[models.ImageElement, models.FlashImageElement]) -> CustomFace: +def _build_image_elem( + e: Union[models.ImageElement, models.FlashImageElement] +) -> CustomFace: return CustomFace( file_type=66, useful=1, @@ -32,7 +46,7 @@ def _build_image_elem(e: Union[models.ImageElement, models.FlashImageElement]) - md5=e.md5, show_len=0, download_len=0 - #flag=b"\x00\x00\x00\x00" + # flag=b"\x00\x00\x00\x00" ) @@ -41,15 +55,15 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: ptt = None for e in elements: # todo: support more element if isinstance(e, models.TextElement): - ret.append( - Elem(text=PlainText(str=e.content.encode())) - ) + ret.append(Elem(text=PlainText(str=e.content.encode()))) elif isinstance(e, models.FlashImageElement): ret.append( Elem( common_elem=CommonElem( service_type=3, - pb_elem=MsgElemInfo_servtype3(flash_troop_pic=_build_image_elem(e)).SerializeToString() + pb_elem=MsgElemInfo_servtype3( + flash_troop_pic=_build_image_elem(e) + ).SerializeToString(), ) ) ) @@ -57,17 +71,15 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: Elem(text=PlainText(str="[闪照]请使用新版手机QQ查看".encode())) ) elif isinstance(e, models.ImageElement): - ret.append( - Elem( - custom_face=_build_image_elem(e) - ) - ) + ret.append(Elem(custom_face=_build_image_elem(e))) elif isinstance(e, models.AtElement): ret.append( Elem( text=PlainText( str=e.display.encode(), - attr_6_buf=b"\x00\x01\x00\x00\x00\x03\x00"+e.target.to_bytes(4, "big", signed=False)+b"\x00\x00" + attr_6_buf=b"\x00\x01\x00\x00\x00\x03\x00" + + e.target.to_bytes(4, "big", signed=False) + + b"\x00\x00", ) ) ) @@ -76,7 +88,7 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: Elem( text=PlainText( str="@全体成员".encode(), - attr_6_buf=b"\x00\x01\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00" + attr_6_buf=b"\x00\x01\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00", ) ) ) @@ -86,21 +98,17 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: else: content = b"\x00" + e.content if e.service_id == -2: # LightApp - ret_elem = Elem(light_app=LightAppElem( - data=content - )) + ret_elem = Elem(light_app=LightAppElem(data=content)) else: # Json & Xml - ret_elem = Elem(rich_msg=RichMsg( - template_1=content, - service_id=0 if e.service_id < 0 else e.service_id - )) + ret_elem = Elem( + rich_msg=RichMsg( + template_1=content, + service_id=0 if e.service_id < 0 else e.service_id, + ) + ) ret.append(ret_elem) elif isinstance(e, models.ShakeElement): - ret.append( - Elem( - shake_window=ShakeWindow(type=e.stype, uin=e.uin) - ) - ) + ret.append(Elem(shake_window=ShakeWindow(type=e.stype, uin=e.uin))) ret.append( # fallback info Elem(text=PlainText(str="[窗口抖动]请使用新版手机QQ查看".encode())) ) @@ -115,8 +123,8 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: poke_type=e.id, poke_strength=e.strength, double_hit=e.double_hit, - poke_flag=0 - ).SerializeToString() + poke_flag=0, + ).SerializeToString(), ) ) ) @@ -126,12 +134,7 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: else: raise NotImplementedError(e) - return MsgBody( - rich_text=RichText( - elems=ret, - ptt=ptt - ) - ) + return MsgBody(rich_text=RichText(elems=ret, ptt=ptt)) def encode_send_group_msg_req( diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index d45d562f..df9ee92d 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -14,8 +14,8 @@ from typing import List, Optional from cai.client.event import Event -from cai.pb.im.msg.msg_body import Ptt from cai.pb.msf.msg.comm import Msg +from cai.pb.im.msg.msg_body import Ptt @dataclass @@ -131,7 +131,7 @@ def to_flash(self) -> "FlashImageElement": height=self.height, md5=self.md5, id=self.id, - url=self.url + url=self.url, ) @@ -168,7 +168,7 @@ def to_ptt(self) -> Ptt: file_name=self.file_name.encode(), file_size=self.size, pb_reserve=self._pb_reserve, - valid=True + valid=True, ) @@ -205,6 +205,7 @@ class RichMsgElement(Element): default: xml """ + content: bytes service_id: Optional[int] = -2 diff --git a/cai/client/multi_msg/long_msg.py b/cai/client/multi_msg/long_msg.py index 345b4186..0f635148 100644 --- a/cai/client/multi_msg/long_msg.py +++ b/cai/client/multi_msg/long_msg.py @@ -1,29 +1,35 @@ -from cai.client import Command -from cai.pb.highway.multi_msg.multi_msg_pb2 import MultiReqBody, MultiMsgApplyUpReq, MultiMsgApplyUpRsp, MultiRspBody -from cai.pb.highway.long_msg.long_msg_pb2 import LongReqBody, LongMsgUpReq +from dataclasses import dataclass from typing import TYPE_CHECKING, Tuple -from dataclasses import dataclass +from cai.client import Command +from cai.pb.highway.long_msg.long_msg_pb2 import LongReqBody, LongMsgUpReq +from cai.pb.highway.multi_msg.multi_msg_pb2 import ( + MultiReqBody, + MultiRspBody, + MultiMsgApplyUpReq, + MultiMsgApplyUpRsp, +) if TYPE_CHECKING: - from cai.client.packet import IncomingPacket from cai.client.client import Client + from cai.client.packet import IncomingPacket -def _encode_multi_req_body(group_id: int, data_len: int, data_md5: bytes, bu_type: int) -> MultiReqBody: +def _encode_multi_req_body( + group_id: int, data_len: int, data_md5: bytes, bu_type: int +) -> MultiReqBody: return MultiReqBody( subcmd=1, termType=5, platformType=9, netType=3, buildVer="8.2.0.1297", # modify - multimsgApplyupReq=[MultiMsgApplyUpReq( - dstUin=group_id, - msgSize=data_len, - msgMd5=data_md5, - msgType=3 - )], - buType=bu_type + multimsgApplyupReq=[ + MultiMsgApplyUpReq( + dstUin=group_id, msgSize=data_len, msgMd5=data_md5, msgType=3 + ) + ], + buType=bu_type, ) @@ -32,31 +38,38 @@ class MultiApplyResp(Command): data: MultiMsgApplyUpRsp -async def build_multi_apply_up_pkg(client: "Client", group_id: int, data_len: int, data_md5: bytes, bu_type: int) -> Tuple[LongReqBody, MultiMsgApplyUpRsp]: +async def build_multi_apply_up_pkg( + client: "Client", + group_id: int, + data_len: int, + data_md5: bytes, + bu_type: int, +) -> Tuple[LongReqBody, MultiMsgApplyUpRsp]: body: MultiApplyResp = await client.send_unipkg_and_wait( "MultiMsg.ApplyUp", _encode_multi_req_body( group_id, data_len, data_md5, bu_type - ).SerializeToString() + ).SerializeToString(), ) LongReqBody( subcmd=1, termType=5, platformType=9, - msgUpReq=[LongMsgUpReq( - msgType=3, - dstUin=client.uin, - msgContent=bytes(), # todo: - storeType=2, - msgUkey=body.data.msgUkey - )] + msgUpReq=[ + LongMsgUpReq( + msgType=3, + dstUin=client.uin, + msgContent=bytes(), # todo: + storeType=2, + msgUkey=body.data.msgUkey, + ) + ], ) - - - -async def _handle_multi_resp_body(client: "Client", pkg: "IncomingPacket", _device) -> MultiApplyResp: +async def _handle_multi_resp_body( + client: "Client", pkg: "IncomingPacket", _device +) -> MultiApplyResp: mrb = MultiRspBody.FromString(pkg.data).multimsgApplyupRsp if not mrb: raise ConnectionError("no MultiMsgApplyUpRsp Found") @@ -65,5 +78,5 @@ async def _handle_multi_resp_body(client: "Client", pkg: "IncomingPacket", _devi seq=pkg.seq, ret_code=pkg.ret_code, command_name=pkg.command_name, - data=mrb[0] + data=mrb[0], ) diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index b0bf150f..86cc96a0 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -9,20 +9,20 @@ https://github.com/cscs181/CAI/blob/master/LICENSE """ -from typing import TYPE_CHECKING, List, Optional, Tuple +from typing import TYPE_CHECKING, List, Tuple, Optional from jce import types from cai.log import logger from cai.utils.binary import Packet -from cai.settings.device import DeviceInfo as _DeviceInfo_t from cai.utils.jce import RequestPacketVersion3 from cai.client.message_service import MESSAGE_DECODERS from cai.client.packet import UniPacket, IncomingPacket +from cai.settings.device import DeviceInfo as _DeviceInfo_t -from .jce import DelMsgInfo, SvcRespPushMsg, DeviceInfo -from .command import PushMsg, PushMsgError, PushMsgCommand from ...settings.protocol import ApkInfo +from .jce import DelMsgInfo, DeviceInfo, SvcRespPushMsg +from .command import PushMsg, PushMsgError, PushMsgCommand if TYPE_CHECKING: from cai.client import Client @@ -136,7 +136,9 @@ async def handle_c2c_sync( async def handle_push_msg( - client: "Client", packet: IncomingPacket, device: Tuple[_DeviceInfo_t, ApkInfo] + client: "Client", + packet: IncomingPacket, + device: Tuple[_DeviceInfo_t, ApkInfo], ) -> PushMsgCommand: """Handle Push Message Command. diff --git a/cai/client/sso_server/__init__.py b/cai/client/sso_server/__init__.py index 1f891baa..b2b102e5 100644 --- a/cai/client/sso_server/__init__.py +++ b/cai/client/sso_server/__init__.py @@ -151,7 +151,7 @@ async def quality_test( async def get_sso_server( cache: bool = True, cache_server_list: bool = True, - exclude: Optional[Container[str]] = None + exclude: Optional[Container[str]] = None, ) -> SsoServer: """Get the best sso server diff --git a/cai/client/status_service/__init__.py b/cai/client/status_service/__init__.py index 146956f2..40889b9b 100644 --- a/cai/client/status_service/__init__.py +++ b/cai/client/status_service/__init__.py @@ -11,14 +11,14 @@ import time from enum import Enum, IntEnum -from typing import TYPE_CHECKING, Union, Optional, Tuple +from typing import TYPE_CHECKING, Tuple, Union, Optional from jce import types from cai.log import logger from cai.utils.binary import Packet -from cai.settings.device import DeviceInfo from cai.settings.protocol import ApkInfo +from cai.settings.device import DeviceInfo from cai.utils.jce import RequestPacketVersion3 from cai.pb.im.oidb.cmd0x769 import ReqBody, ConfigSeq from cai.client.packet import ( @@ -187,7 +187,7 @@ def encode_register( status: Union[int, OnlineStatus], reg_push_reason: Union[str, RegPushReason], sub_app_id: int, - device: DeviceInfo + device: DeviceInfo, ) -> Packet: """Build status service register packet. @@ -324,7 +324,7 @@ def encode_force_offline_response( req_uin: int, seq_no: int, sub_app_id: int, - device: DeviceInfo + device: DeviceInfo, ) -> Packet: """Build status service msf offline response packet. @@ -405,7 +405,7 @@ async def handle_request_offline( request.request.uin, request.request.seq_no, device[1].sub_app_id, - device[0] + device[0], ) await client.send(seq, "StatSvc.RspMSFForceOffline", resp_packet) client._status = OnlineStatus.Offline diff --git a/cai/client/wtlogin/__init__.py b/cai/client/wtlogin/__init__.py index e0975368..e7d87742 100644 --- a/cai/client/wtlogin/__init__.py +++ b/cai/client/wtlogin/__init__.py @@ -8,26 +8,28 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ -import ipaddress -import secrets +import time import string import struct -import time +import secrets +import ipaddress from hashlib import md5 from typing import TYPE_CHECKING, Tuple from rtea import qqtea_decrypt +from cai.utils.binary import Packet +from cai.settings.protocol import ApkInfo +from cai.settings.device import DeviceInfo +from cai.utils.crypto import ECDH, EncryptSession from cai.client.packet import ( UniPacket, CSsoBodyPacket, CSsoDataPacket, IncomingPacket, ) -from cai.settings.device import DeviceInfo -from cai.settings.protocol import ApkInfo -from cai.utils.binary import Packet -from cai.utils.crypto import ECDH, EncryptSession + +from .tlv import TlvEncoder from .oicq import ( NeedCaptcha, OICQRequest, @@ -39,7 +41,6 @@ TooManySMSRequest, UnknownLoginStatus, ) -from .tlv import TlvEncoder if TYPE_CHECKING: from cai.client import Client @@ -56,7 +57,7 @@ def encode_login_request2_captcha( sign: bytes, t104: bytes, imei: str, - apk_info: ApkInfo + apk_info: ApkInfo, ) -> Packet: """Build submit captcha request packet. @@ -130,7 +131,7 @@ def encode_login_request2_slider( ticket: str, t104: bytes, imei: str, - apk_info: ApkInfo + apk_info: ApkInfo, ) -> Packet: """Build slider ticket request packet. @@ -205,7 +206,7 @@ def encode_login_request7( t174: bytes, g: bytes, imei: str, - apk_info: ApkInfo + apk_info: ApkInfo, ) -> Packet: """Build sms submit packet. @@ -288,7 +289,7 @@ def encode_login_request8( t104: bytes, t174: bytes, imei: str, - apk_info: ApkInfo + apk_info: ApkInfo, ) -> Packet: """Build sms request packet. @@ -368,7 +369,7 @@ def encode_login_request9( uin: int, password_md5: bytes, device: DeviceInfo, - apk_info: ApkInfo + apk_info: ApkInfo, ) -> Packet: """Build main login request packet. @@ -538,7 +539,7 @@ def encode_login_request20( t104: bytes, g: bytes, imei: str, - apk_info: ApkInfo + apk_info: ApkInfo, ) -> Packet: """Build device lock login request packet. @@ -620,7 +621,7 @@ def encode_exchange_emp_15( wt_session_ticket: bytes, wt_session_ticket_key: bytes, device: DeviceInfo, - apk_info: ApkInfo + apk_info: ApkInfo, ) -> Packet: """Build exchange emp request packet. @@ -777,7 +778,7 @@ async def handle_oicq_response( packet.ret_code, packet.command_name, packet.data, - device.tgtgt + device.tgtgt, ) if not isinstance(response, UnknownLoginStatus): return response diff --git a/cai/client/wtlogin/oicq.py b/cai/client/wtlogin/oicq.py index 6b7afda0..bbf41eb3 100644 --- a/cai/client/wtlogin/oicq.py +++ b/cai/client/wtlogin/oicq.py @@ -58,7 +58,13 @@ def build_encoded( class OICQResponse(Command): @classmethod def decode_response( - cls, uin: int, seq: int, ret_code: int, command_name: str, data: bytes, tgtgt: bytes + cls, + uin: int, + seq: int, + ret_code: int, + command_name: str, + data: bytes, + tgtgt: bytes, ) -> "OICQResponse": """Decode login response and wrap main info of the response. diff --git a/cai/client/wtlogin/tlv.py b/cai/client/wtlogin/tlv.py index 03f9b437..4cbab73e 100644 --- a/cai/client/wtlogin/tlv.py +++ b/cai/client/wtlogin/tlv.py @@ -607,7 +607,7 @@ def decode( data: Union[bytes, bytearray], tgtgt: bytes = None, offset: int = 0, - tag_size: int = 2 + tag_size: int = 2, ) -> Dict[int, Any]: if not isinstance(data, Packet): data = Packet(data) diff --git a/cai/connection/__init__.py b/cai/connection/__init__.py index dcc8b7b3..51fd42ab 100644 --- a/cai/connection/__init__.py +++ b/cai/connection/__init__.py @@ -59,7 +59,7 @@ def reader(self) -> asyncio.StreamReader: @property def closed(self) -> bool: - #return self._writer is None + # return self._writer is None return self._closed.is_set() @property diff --git a/cai/settings/protocol.py b/cai/settings/protocol.py index 035652fd..b7eaf766 100644 --- a/cai/settings/protocol.py +++ b/cai/settings/protocol.py @@ -165,7 +165,12 @@ class ApkInfo(NamedTuple): def get_apk_info(_type: str = "IPAD") -> ApkInfo: - info = {"IPAD": IPAD, "ANDROID_PHONE": ANDROID_PHONE, "ANDROID_WATCH": ANDROID_WATCH, "MACOS": MACOS} + info = { + "IPAD": IPAD, + "ANDROID_PHONE": ANDROID_PHONE, + "ANDROID_WATCH": ANDROID_WATCH, + "MACOS": MACOS, + } if _type not in info: raise ValueError(f"Invalid Protocol Type: {_type}") return info[_type] diff --git a/cai/utils/coroutine.py b/cai/utils/coroutine.py index cd602e31..3991be5a 100644 --- a/cai/utils/coroutine.py +++ b/cai/utils/coroutine.py @@ -42,7 +42,7 @@ def close(self): return self._coro.close() def __next__(self): - return self.send(None) + raise StopIteration def __iter__(self): return self._coro.__await__() diff --git a/examples/login.py b/examples/login.py index de030378..fd869e3a 100644 --- a/examples/login.py +++ b/examples/login.py @@ -6,21 +6,21 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ -import functools -import logging import os -import asyncio import sys +import asyncio +import logging +import functools import traceback from io import BytesIO from PIL import Image from cai.api import Client, make_client -from cai.client import OnlineStatus, PrivateMessage, GroupMessage, Event -from cai.client.message_service.models import TextElement from cai.settings.device import get_device from cai.settings.protocol import get_apk_info +from cai.client.message_service.models import TextElement +from cai.client import Event, GroupMessage, OnlineStatus, PrivateMessage from cai.exceptions import ( LoginException, ApiResponseError, @@ -38,7 +38,9 @@ async def run(closed: asyncio.Event): assert password and account, ValueError("account or password not set") account = int(account) - ci = Client(make_client(account, password, get_apk_info(), device=get_device())) + ci = Client( + make_client(account, password, get_apk_info(), device=get_device()) + ) try: await ci.login() @@ -51,7 +53,7 @@ async def run(closed: asyncio.Event): if status == OnlineStatus.Offline: continue print(status, "Changed") - #await ci.set_status(status, 67, True) + # await ci.set_status(status, 67, True) await asyncio.sleep(360) finally: closed.set() @@ -61,29 +63,39 @@ async def listen_message(client: Client, _, event: Event): if isinstance(event, PrivateMessage): print(f"{event.from_nick}(f{event.from_uin}) -> {event.message}") elif isinstance(event, GroupMessage): - print(f"{event.group_name}({event.group_id}:{event.from_uin}) -> {event.message}") + print( + f"{event.group_name}({event.group_id}:{event.from_uin}) -> {event.message}" + ) if event.message and hasattr(event.message[0], "content"): if event.message[0].content == "0x114514": await client.send_group_msg( - event.group_id, [ + event.group_id, + [ TextElement("Hello\n"), TextElement("Multiple element "), - TextElement("Supported.") - ] + TextElement("Supported."), + ], ) elif event.message[0].content == "1919": await client.send_group_msg( event.group_id, [ - await client.upload_image(event.group_id, open("test.png", "rb")), - TextElement("1234") - ] + await client.upload_image( + event.group_id, open("test.png", "rb") + ), + TextElement("1234"), + ], ) async def handle_failure(client: Client, exception: Exception): if isinstance(exception, LoginSliderNeeded): - print("Verify url:", exception.verify_url.replace("ssl.captcha.qq.com", "txhelper.glitch.me")) + print( + "Verify url:", + exception.verify_url.replace( + "ssl.captcha.qq.com", "txhelper.glitch.me" + ), + ) ticket = input("Please enter the ticket: ").strip() try: await client.submit_slider_ticket(ticket) @@ -158,7 +170,7 @@ async def handle_failure(client: Client, exception: Exception): logging.basicConfig( level=logging.DEBUG, handlers=[logging.StreamHandler(sys.stdout)], - format="%(asctime)s %(name)s[%(levelname)s]: %(message)s" + format="%(asctime)s %(name)s[%(levelname)s]: %(message)s", ) close = asyncio.Event() From c61a84a82340c10238d19723f7fdaa990e87a273 Mon Sep 17 00:00:00 2001 From: a1025 Date: Thu, 7 Apr 2022 15:14:47 +0800 Subject: [PATCH 056/113] delete: unused file --- cai/api/flow.py | 61 ------------------------------------------------- 1 file changed, 61 deletions(-) delete mode 100644 cai/api/flow.py diff --git a/cai/api/flow.py b/cai/api/flow.py deleted file mode 100644 index f9f6f0cb..00000000 --- a/cai/api/flow.py +++ /dev/null @@ -1,61 +0,0 @@ -"""Application Flow APIs. - -:Copyright: Copyright (C) 2021-2021 cscs181 -:License: AGPL-3.0 or later. See `LICENSE`_ for detail. - -.. _LICENSE: - https://github.com/cscs181/CAI/blob/master/LICENSE -""" - -from typing import Callable, Optional, Awaitable - -from cai.log import logger -from cai.client import HANDLERS, Event, Client, Command, IncomingPacket - -from .client import get_client - - -def add_event_listener( - listener: Callable[[Client, Event], Awaitable[None]], - uin: Optional[int] = None, -): - """Add event listener. - - If uin is ``None``, listener will receive events from all clients. - - Args: - listener (Callable[[Client, Event], Awaitable[None]]): Event listener. - uin (Optional[int], optional): Account of the client want to listen. - Defaults to None. - """ - if uin: - client = get_client(uin) - client.add_event_listener(listener) - else: - Client.LISTENERS.add(listener) - - -def register_packet_handler( - cmd: str, - packet_handler: Callable[[Client, IncomingPacket], Awaitable[Command]], -) -> None: - """Register custom packet handler. - - Note: - This function is a low-level api to mock default behavior. - Be aware of what you are doing! - - Args: - cmd (str): Command name of the packet. - packet_handler (Callable[[Client, IncomingPacket], Awaitable[Command]]): - Asynchronous packet handler. A :obj:`~cai.client.command.Command` - object should be returned. - """ - if cmd in HANDLERS: - logger.warning( - f"You are overwriting an existing handler for command {cmd}!" - ) - HANDLERS[cmd] = packet_handler - - -__all__ = ["add_event_listener", "register_packet_handler"] From 23f8692921a351aa111ed3af6b1e7e2e5de85630 Mon Sep 17 00:00:00 2001 From: a1025 Date: Thu, 7 Apr 2022 15:16:07 +0800 Subject: [PATCH 057/113] Revert "delete: unused file" This reverts commit c61a84a82340c10238d19723f7fdaa990e87a273. --- cai/api/flow.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 cai/api/flow.py diff --git a/cai/api/flow.py b/cai/api/flow.py new file mode 100644 index 00000000..f9f6f0cb --- /dev/null +++ b/cai/api/flow.py @@ -0,0 +1,61 @@ +"""Application Flow APIs. + +:Copyright: Copyright (C) 2021-2021 cscs181 +:License: AGPL-3.0 or later. See `LICENSE`_ for detail. + +.. _LICENSE: + https://github.com/cscs181/CAI/blob/master/LICENSE +""" + +from typing import Callable, Optional, Awaitable + +from cai.log import logger +from cai.client import HANDLERS, Event, Client, Command, IncomingPacket + +from .client import get_client + + +def add_event_listener( + listener: Callable[[Client, Event], Awaitable[None]], + uin: Optional[int] = None, +): + """Add event listener. + + If uin is ``None``, listener will receive events from all clients. + + Args: + listener (Callable[[Client, Event], Awaitable[None]]): Event listener. + uin (Optional[int], optional): Account of the client want to listen. + Defaults to None. + """ + if uin: + client = get_client(uin) + client.add_event_listener(listener) + else: + Client.LISTENERS.add(listener) + + +def register_packet_handler( + cmd: str, + packet_handler: Callable[[Client, IncomingPacket], Awaitable[Command]], +) -> None: + """Register custom packet handler. + + Note: + This function is a low-level api to mock default behavior. + Be aware of what you are doing! + + Args: + cmd (str): Command name of the packet. + packet_handler (Callable[[Client, IncomingPacket], Awaitable[Command]]): + Asynchronous packet handler. A :obj:`~cai.client.command.Command` + object should be returned. + """ + if cmd in HANDLERS: + logger.warning( + f"You are overwriting an existing handler for command {cmd}!" + ) + HANDLERS[cmd] = packet_handler + + +__all__ = ["add_event_listener", "register_packet_handler"] From 205a572839f3e93f8d7b8cb811709be2b790d29c Mon Sep 17 00:00:00 2001 From: a1025 Date: Thu, 7 Apr 2022 15:22:01 +0800 Subject: [PATCH 058/113] fix: event register --- cai/api/client.py | 3 +- cai/api/flow.py | 86 +++++++++++++++++++++-------------------------- 2 files changed, 40 insertions(+), 49 deletions(-) diff --git a/cai/api/client.py b/cai/api/client.py index e03e6570..6f280059 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -24,6 +24,7 @@ VoiceElement, ) +from .flow import Events as _Events from .group import Group as _Group from .login import Login as _Login from .friend import Friend as _Friend @@ -51,7 +52,7 @@ def make_client( return client_t(uin, passwd, device, apk_info) -class Client(_Login, _Friend, _Group): +class Client(_Login, _Friend, _Group, _Events): def __init__(self, client: client_t): self.client = client self._highway_session = HighWaySession(client, logger=log.highway) diff --git a/cai/api/flow.py b/cai/api/flow.py index f9f6f0cb..6c2faba1 100644 --- a/cai/api/flow.py +++ b/cai/api/flow.py @@ -7,55 +7,45 @@ https://github.com/cscs181/CAI/blob/master/LICENSE """ -from typing import Callable, Optional, Awaitable +from typing import Callable, Awaitable from cai.log import logger from cai.client import HANDLERS, Event, Client, Command, IncomingPacket -from .client import get_client - - -def add_event_listener( - listener: Callable[[Client, Event], Awaitable[None]], - uin: Optional[int] = None, -): - """Add event listener. - - If uin is ``None``, listener will receive events from all clients. - - Args: - listener (Callable[[Client, Event], Awaitable[None]]): Event listener. - uin (Optional[int], optional): Account of the client want to listen. - Defaults to None. - """ - if uin: - client = get_client(uin) - client.add_event_listener(listener) - else: - Client.LISTENERS.add(listener) - - -def register_packet_handler( - cmd: str, - packet_handler: Callable[[Client, IncomingPacket], Awaitable[Command]], -) -> None: - """Register custom packet handler. - - Note: - This function is a low-level api to mock default behavior. - Be aware of what you are doing! - - Args: - cmd (str): Command name of the packet. - packet_handler (Callable[[Client, IncomingPacket], Awaitable[Command]]): - Asynchronous packet handler. A :obj:`~cai.client.command.Command` - object should be returned. - """ - if cmd in HANDLERS: - logger.warning( - f"You are overwriting an existing handler for command {cmd}!" - ) - HANDLERS[cmd] = packet_handler - - -__all__ = ["add_event_listener", "register_packet_handler"] +from .base import BaseAPI + + +class Events(BaseAPI): + def add_event_listener( + self, + listener: Callable[[Client, Event], Awaitable[None]] + ): + """Add event listener. + + Args: + listener (Callable[[Client, Event], Awaitable[None]]): Event listener. + """ + self.client.add_event_listener(listener) + + def register_packet_handler( + self, + cmd: str, + packet_handler: Callable[[Client, IncomingPacket], Awaitable[Command]], + ) -> None: + """Register custom packet handler. + + Note: + This function is a low-level api to mock default behavior. + Be aware of what you are doing! + + Args: + cmd (str): Command name of the packet. + packet_handler (Callable[[Client, IncomingPacket], Awaitable[Command]]): + Asynchronous packet handler. A :obj:`~cai.client.command.Command` + object should be returned. + """ + if cmd in HANDLERS: + logger.warning( + f"You are overwriting an existing handler for command {cmd}!" + ) + HANDLERS[cmd] = packet_handler From 7e225de8a76d01809bda3362c63e71bed8f3172e Mon Sep 17 00:00:00 2001 From: a1025 Date: Thu, 7 Apr 2022 15:44:23 +0800 Subject: [PATCH 059/113] fix: unsync changes --- cai/client/client.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/cai/client/client.py b/cai/client/client.py index 5ad34d5e..150b8ac2 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -389,7 +389,7 @@ async def close(self) -> None: self._receive_store.cancel_all() # disconnect server await self.disconnect() - self.closed.set() + self._closed.set() @property def seq(self) -> int: @@ -469,7 +469,7 @@ async def _handle_incoming_packet(self, in_packet: IncomingPacket) -> None: try: handler = HANDLERS.get(in_packet.command_name, _packet_to_command) packet = await handler( - self, in_packet, (self.device_info, self.apk_info) + self, in_packet, (self.device, self.apk_info) ) self._receive_store.store_result(packet.seq, packet) except Exception as e: @@ -596,7 +596,7 @@ async def _handle_login_response( self.uin, self._t104, self._siginfo.g, - self.device_info.imei, + self.device.imei, self.apk_info, ) response = await self.send_and_wait( @@ -668,7 +668,7 @@ async def login(self) -> LoginSuccess: self._ksid, self.uin, self._password_md5, - self.device_info, + self.device, self.apk_info, ) response = await self.send_and_wait(seq, "wtlogin.login", packet) @@ -704,7 +704,7 @@ async def submit_captcha( captcha, captcha_sign, self._t104, - self.device_info.imei, + self.device.imei, self.apk_info, ) response = await self.send_and_wait(seq, "wtlogin.login", packet) @@ -737,7 +737,7 @@ async def submit_slider_ticket(self, ticket: str) -> LoginSuccess: self.uin, ticket, self._t104, - self.device_info.imei, + self.device.imei, self.apk_info, ) response = await self.send_and_wait(seq, "wtlogin.login", packet) @@ -770,7 +770,7 @@ async def request_sms(self) -> bool: self.uin, self._t104, self._t174, - self.device_info.imei, + self.device.imei, self.apk_info, ) response = await self.send_and_wait(seq, "wtlogin.login", packet) @@ -812,7 +812,7 @@ async def submit_sms(self, sms_code: str) -> LoginSuccess: self._t104, self._t174, self._siginfo.g, - self.device_info.imei, + self.device.imei, self.apk_info, ) response = await self.send_and_wait(seq, "wtlogin.login", packet) @@ -852,7 +852,7 @@ async def _handle_refresh_response( self.uin, self._t104, self._siginfo.g, - self.device_info.imei, + self.device.imei, self.apk_info, ) response = await self.send_and_wait( @@ -900,7 +900,7 @@ async def refresh_siginfo(self) -> LoginSuccess: self._siginfo.rand_seed, self._siginfo.wt_session_ticket, self._siginfo.wt_session_ticket_key, - self.device_info, + self.device, self.apk_info, ) response = await self.send_and_wait(seq, "wtlogin.exchange_emp", packet) @@ -941,7 +941,7 @@ async def register( status, register_reason, self.apk_info.sub_app_id, - self.device_info, + self.device, ) response = await self.send_and_wait(seq, "StatSvc.register", packet) @@ -991,7 +991,7 @@ async def set_status( self._session_id, self.uin, self._siginfo.d2key, - self.device_info, + self.device, status, battery_status, is_power_connected, @@ -1037,7 +1037,7 @@ async def heartbeat(self) -> None: packet = encode_heartbeat( seq, self._session_id, - self.device_info.imei, + self.device.imei, self._ksid, self.uin, self.apk_info.sub_app_id, From fdef3f9d9e4794500e5573afeb6c1849765dd1d1 Mon Sep 17 00:00:00 2001 From: a1025 Date: Thu, 7 Apr 2022 15:54:50 +0800 Subject: [PATCH 060/113] fix: some bugs --- cai/api/flow.py | 9 ++++++--- cai/client/client.py | 3 +++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/cai/api/flow.py b/cai/api/flow.py index 6c2faba1..27a3cc9f 100644 --- a/cai/api/flow.py +++ b/cai/api/flow.py @@ -7,25 +7,28 @@ https://github.com/cscs181/CAI/blob/master/LICENSE """ -from typing import Callable, Awaitable +from typing import Callable, Awaitable, TYPE_CHECKING from cai.log import logger from cai.client import HANDLERS, Event, Client, Command, IncomingPacket from .base import BaseAPI +if TYPE_CHECKING: + from .client import Client as Client_T + class Events(BaseAPI): def add_event_listener( self, - listener: Callable[[Client, Event], Awaitable[None]] + listener: Callable[["Client_T", Event], Awaitable[None]] ): """Add event listener. Args: listener (Callable[[Client, Event], Awaitable[None]]): Event listener. """ - self.client.add_event_listener(listener) + self.client.add_event_listener(lambda _, e: listener(self, e)) # type: ignore def register_packet_handler( self, diff --git a/cai/client/client.py b/cai/client/client.py index 150b8ac2..8441144e 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -295,6 +295,9 @@ def connected(self) -> bool: def closed(self) -> bool: return self._closed.is_set() + async def wait_closed(self): + await self._closed.wait() + async def connect(self, server: Optional[SsoServer] = None) -> None: """Connect to the server. From 3d1f2634c0b8f7091092fe906b465c6e898498b5 Mon Sep 17 00:00:00 2001 From: a1025 Date: Thu, 7 Apr 2022 16:44:08 +0800 Subject: [PATCH 061/113] add: more poke type --- cai/client/message_service/encoders.py | 4 ++-- cai/client/message_service/models.py | 13 +++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py index 9c58b97f..98b454cd 100644 --- a/cai/client/message_service/encoders.py +++ b/cai/client/message_service/encoders.py @@ -10,7 +10,6 @@ MsgElemInfo_servtype3, ) from cai.pb.im.msg.msg_body import ( - Ptt, Elem, MsgBody, RichMsg, @@ -117,10 +116,11 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: Elem( common_elem=CommonElem( service_type=2, + business_type=e.id, pb_elem=MsgElemInfo_servtype2( vaspoke_id=0xFFFFFFFF, vaspoke_name=e.name.encode(), - poke_type=e.id, + poke_type=0, poke_strength=e.strength, double_hit=e.double_hit, poke_flag=0, diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index df9ee92d..4fbe7cd4 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -11,7 +11,8 @@ import abc from dataclasses import dataclass -from typing import List, Optional +from enum import IntEnum +from typing import List, Optional, Union from cai.client.event import Event from cai.pb.msf.msg.comm import Msg @@ -174,11 +175,19 @@ def to_ptt(self) -> Ptt: @dataclass class PokeElement(Element): - id: int = 0 + id: Union[int, "PokeType"] = 0 name: str = "" strength: int = 0 double_hit: int = 0 + class PokeType(IntEnum): + ChuoYiChuo = 0 + BiXin = 2 + DianZan = 3 + XinSui = 4 + SixSixSix = 5 + FangDaZhao = 6 + @property def type(self) -> str: return "poke" From 9f25e6b0734992ec65172847503aec8cfefd6287 Mon Sep 17 00:00:00 2001 From: a1025 Date: Thu, 7 Apr 2022 16:55:46 +0800 Subject: [PATCH 062/113] change: PokeType --- cai/client/message_service/models.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index 4fbe7cd4..490b1a9d 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -10,8 +10,8 @@ """ import abc -from dataclasses import dataclass from enum import IntEnum +from dataclasses import dataclass from typing import List, Optional, Union from cai.client.event import Event @@ -19,6 +19,15 @@ from cai.pb.im.msg.msg_body import Ptt +class PokeType(IntEnum): + ChuoYiChuo = 0 + BiXin = 2 + DianZan = 3 + XinSui = 4 + SixSixSix = 5 + FangDaZhao = 6 + + @dataclass class PrivateMessage(Event): _msg: Msg @@ -175,19 +184,11 @@ def to_ptt(self) -> Ptt: @dataclass class PokeElement(Element): - id: Union[int, "PokeType"] = 0 + id: Union[int, PokeType] = 0 name: str = "" strength: int = 0 double_hit: int = 0 - class PokeType(IntEnum): - ChuoYiChuo = 0 - BiXin = 2 - DianZan = 3 - XinSui = 4 - SixSixSix = 5 - FangDaZhao = 6 - @property def type(self) -> str: return "poke" From e0487e3c74a4e468415fed9ffc8694d7b05b7617 Mon Sep 17 00:00:00 2001 From: a1025 Date: Thu, 7 Apr 2022 22:17:37 +0800 Subject: [PATCH 063/113] add: parse group mute/unmute,recall,nudge event --- cai/client/__init__.py | 2 +- cai/client/client.py | 7 +- cai/client/events/__init__.py | 12 +++ cai/client/{event.py => events/base.py} | 0 cai/client/events/common.py | 16 ++++ cai/client/events/friend.py | 1 + cai/client/events/group.py | 37 ++++++++++ cai/client/message_service/decoders.py | 2 +- cai/client/message_service/models.py | 2 +- cai/client/online_push/__init__.py | 85 +++++++++++++++++++++- cai/pb/im/oidb/group0x857/__init__.py | 0 cai/pb/im/oidb/group0x857/group0x857.proto | 83 +++++++++++++++++++++ 12 files changed, 238 insertions(+), 9 deletions(-) create mode 100644 cai/client/events/__init__.py rename cai/client/{event.py => events/base.py} (100%) create mode 100644 cai/client/events/common.py create mode 100644 cai/client/events/friend.py create mode 100644 cai/client/events/group.py create mode 100644 cai/pb/im/oidb/group0x857/__init__.py create mode 100644 cai/pb/im/oidb/group0x857/group0x857.proto diff --git a/cai/client/__init__.py b/cai/client/__init__.py index 207f79e4..dbf1d67b 100644 --- a/cai/client/__init__.py +++ b/cai/client/__init__.py @@ -9,7 +9,7 @@ https://github.com/cscs181/CAI/blob/master/LICENSE """ -from .event import Event +from cai.client.events.base import Event from .command import Command from .packet import IncomingPacket from .client import HANDLERS, Client diff --git a/cai/client/client.py b/cai/client/client.py index 8441144e..25b0e292 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -46,12 +46,12 @@ GroupMemberListException, ) -from .event import Event +from cai.client.events.base import Event from .packet import UniPacket, IncomingPacket from .command import Command, _packet_to_command from .sso_server import SsoServer, get_sso_server from .multi_msg.long_msg import _handle_multi_resp_body -from .online_push import handle_c2c_sync, handle_push_msg +from .online_push import handle_c2c_sync, handle_push_msg, handle_req_push from .heartbeat import Heartbeat, encode_heartbeat, handle_heartbeat from .models import Group, Friend, SigInfo, FriendGroup, GroupMember from .config_push import FileServerPushList, handle_config_push_request @@ -136,6 +136,7 @@ # "OnlinePush.PbPushBindUinGroupMsg": handle_push_msg, # sub account # new "MultiMsg.ApplyUp": _handle_multi_resp_body, + "OnlinePush.ReqPush": handle_req_push } @@ -524,6 +525,8 @@ async def _run_listener(self, listener: LT, event: Event) -> None: log.logger.exception(e) def dispatch_event(self, event: Event) -> None: + if event.type not in ("group_message", "private_message"): # log filter + log.logger.debug(f"Event {event.type} was triggered") for listener in self.listeners: asyncio.create_task(self._run_listener(listener, event)) diff --git a/cai/client/events/__init__.py b/cai/client/events/__init__.py new file mode 100644 index 00000000..51d507c5 --- /dev/null +++ b/cai/client/events/__init__.py @@ -0,0 +1,12 @@ +from .common import NudgeEvent +from .group import GroupEvent, MemberMutedEvent, MemberUnMutedEvent, MemberRecallMessageEvent +# from .friend import * + + +__all__ = [ + "GroupEvent", + "MemberMutedEvent", + "MemberUnMutedEvent", + "MemberRecallMessageEvent", + "NudgeEvent" +] diff --git a/cai/client/event.py b/cai/client/events/base.py similarity index 100% rename from cai/client/event.py rename to cai/client/events/base.py diff --git a/cai/client/events/common.py b/cai/client/events/common.py new file mode 100644 index 00000000..158847ac --- /dev/null +++ b/cai/client/events/common.py @@ -0,0 +1,16 @@ +from typing import Optional +from dataclasses import dataclass +from .base import Event + + +@dataclass +class NudgeEvent(Event): + sender: int + target: int + action: str + suffix: Optional[str] + group: Optional[int] = None + + @property + def type(self) -> str: + return "NudgeEvent" diff --git a/cai/client/events/friend.py b/cai/client/events/friend.py new file mode 100644 index 00000000..db4e5dd7 --- /dev/null +++ b/cai/client/events/friend.py @@ -0,0 +1 @@ +# TODO: PR Welcome diff --git a/cai/client/events/group.py b/cai/client/events/group.py new file mode 100644 index 00000000..d3e2bd29 --- /dev/null +++ b/cai/client/events/group.py @@ -0,0 +1,37 @@ +from dataclasses import dataclass + +from .base import Event + + +class GroupEvent(Event): + @property + def type(self) -> str: + return self.__class__.__name__ + + +@dataclass +class MemberMutedEvent(GroupEvent): + group: int + operator: int + target: int + duration: int + + +@dataclass +class MemberUnMutedEvent(GroupEvent): + group: int + operator: int + target: int + + +@dataclass +class MemberRecallMessageEvent(GroupEvent): + group: int + operator: int + operator_type: int + target: int + + msg_rand: int + msg_seq: int + msg_time: int + diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index 2e52367f..da4f456a 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -13,7 +13,7 @@ from typing import Dict, List, Callable, Optional, Sequence from cai.log import logger -from cai.client.event import Event +from cai.client.events.base import Event from cai.pb.msf.msg.comm import Msg from cai.pb.im.msg.msg_body import Ptt, Elem from cai.pb.im.msg.service.comm_elem import ( diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index 490b1a9d..3f1ad89e 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -14,7 +14,7 @@ from dataclasses import dataclass from typing import List, Optional, Union -from cai.client.event import Event +from cai.client.events.base import Event from cai.pb.msf.msg.comm import Msg from cai.pb.im.msg.msg_body import Ptt diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index 86cc96a0..c221165d 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -8,18 +8,21 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ +import struct +import tkinter +from typing import TYPE_CHECKING, List, Tuple, Optional, Sequence -from typing import TYPE_CHECKING, List, Tuple, Optional - -from jce import types +from jce import types, JceDecoder from cai.log import logger from cai.utils.binary import Packet -from cai.utils.jce import RequestPacketVersion3 +from cai.utils.jce import RequestPacketVersion3, RequestPacket from cai.client.message_service import MESSAGE_DECODERS from cai.client.packet import UniPacket, IncomingPacket from cai.settings.device import DeviceInfo as _DeviceInfo_t +from cai.pb.im.oidb.group0x857.group0x857_pb2 import NotifyMsgBody, TemplParam +from .. import events from ...settings.protocol import ApkInfo from .jce import DelMsgInfo, DeviceInfo, SvcRespPushMsg from .command import PushMsg, PushMsgError, PushMsgCommand @@ -218,6 +221,80 @@ async def handle_push_msg( return push +def _parse_poke(params: Sequence[TemplParam]) -> dict: + res = {"target": None, "sender": None, "action": None, "suffix": None} + for p in params: + if p.name == "uin_str1": + res["sender"] = p.value + elif p.name == "uin_str2": + res["target"] = p.value + elif p.name == "suffix_str": + res["suffix"] = p.value + elif p.name == "action_str": + res["action"] = p.value + return res + + + +# OnlinePush.ReqPush +async def handle_req_push( + client: "Client", + packet: IncomingPacket, + device: Tuple[_DeviceInfo_t, ApkInfo], +) -> PushMsgCommand: + data = JceDecoder.decode_single( # type: ignore + RequestPacket.decode(packet.data).buffer + )[1]["req"]["OnlinePushPack.SvcReqPushMsg"] + body = JceDecoder.decode_bytes(data)[0] + _, stime, content = body[0], body[1], body[2][0][6] + # TODO: Send OnlinePush.RespPush + if body[2][0][2] == 732: # group + gid = int.from_bytes(content[0:4], "big") + dtype = content[4] + if dtype in (0x14, 0x11): + notify = NotifyMsgBody.FromString(content[7:]) + if dtype == 0x14: # nudge + client.dispatch_event(events.NudgeEvent( + **_parse_poke(notify.optGeneralGrayTip.msgTemplParam), + group=gid + )) + elif dtype == 0x11: # recall + msg = notify.optMsgRecall.recalledMsgList[0] + client.dispatch_event(events.MemberRecallMessageEvent( + gid, + notify.optMsgRecall.uin, + notify.optMsgRecall.opType, + msg.authorUin, + msg.msgRandom, + msg.seq, + msg.time + )) + elif dtype == 0x0c: # mute event + operator = int.from_bytes(content[6:10], "big", signed=False) + target = int.from_bytes(content[16:20], "big", signed=False) + duration = int.from_bytes(content[20:24], "big", signed=False) + if duration > 0: # muted + client.dispatch_event(events.MemberMutedEvent( + gid, + operator, + target, + duration + )) + else: + client.dispatch_event(events.MemberUnMutedEvent( + gid, + operator, + target + )) + # TODO: parse friend event + return PushMsgCommand( + packet.uin, + packet.seq, + packet.ret_code, + packet.command_name + ) + + __all__ = [ "handle_c2c_sync", "handle_push_msg", diff --git a/cai/pb/im/oidb/group0x857/__init__.py b/cai/pb/im/oidb/group0x857/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cai/pb/im/oidb/group0x857/group0x857.proto b/cai/pb/im/oidb/group0x857/group0x857.proto new file mode 100644 index 00000000..6989c805 --- /dev/null +++ b/cai/pb/im/oidb/group0x857/group0x857.proto @@ -0,0 +1,83 @@ +syntax = "proto3"; + +option go_package = "github.com/Mrs4s/MiraiGo/client/pb/notify"; + +message NotifyMsgBody { + AIOGrayTipsInfo optMsgGrayTips = 5; + RedGrayTipsInfo optMsgRedTips = 9; + MessageRecallReminder optMsgRecall = 11; + GeneralGrayTipInfo optGeneralGrayTip = 26; + QQGroupDigestMsg qqGroupDigestMsg = 33; + int32 serviceType = 13; +} + +message AIOGrayTipsInfo{ + uint32 showLatest = 1; + bytes content = 2; + uint32 remind = 3; + bytes brief = 4; + uint64 receiverUin = 5; + uint32 reliaoAdminOpt = 6; +} + +message GeneralGrayTipInfo { + uint64 busiType = 1; + uint64 busiId = 2; + uint32 ctrlFlag = 3; + uint32 c2cType = 4; + uint32 serviceType = 5; + uint64 templId = 6; + repeated TemplParam msgTemplParam = 7; + string content = 8; +} + +message TemplParam { + string name = 1; + string value = 2; +} + +message MessageRecallReminder { + int64 uin = 1; + bytes nickname = 2; + repeated RecalledMessageMeta recalledMsgList = 3; + bytes reminderContent = 4; + bytes userdef = 5; + int32 groupType = 6; + int32 opType = 7; +} + +message RecalledMessageMeta { + int32 seq = 1; + int32 time = 2; + int32 msgRandom = 3; + int32 msgType = 4; + int32 msgFlag = 5; + int64 authorUin = 6; +} + +message RedGrayTipsInfo { + uint32 showLatest = 1; + uint64 senderUin = 2; + uint64 receiverUin = 3; + string senderRichContent = 4; + string receiverRichContent = 5; + bytes authKey = 6; + sint32 msgType = 7; + uint32 luckyFlag = 8; + uint32 hideFlag = 9; + uint64 luckyUin = 12; +} + +message QQGroupDigestMsg { + uint64 groupCode = 1; + uint32 seq = 2; + uint32 random = 3; + int32 opType = 4; + uint64 sender = 5; + uint64 digestOper = 6; + uint32 opTime = 7; + uint32 lastestMsgSeq = 8; + bytes operNick = 9; + bytes senderNick = 10; + int32 extInfo = 11; +} From cff4e4c6d14bf778530e9bfad3de51c40e2ce2ad Mon Sep 17 00:00:00 2001 From: a1025 Date: Thu, 7 Apr 2022 22:37:44 +0800 Subject: [PATCH 064/113] fix: type error --- cai/client/online_push/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index c221165d..aab0ff8c 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -225,9 +225,9 @@ def _parse_poke(params: Sequence[TemplParam]) -> dict: res = {"target": None, "sender": None, "action": None, "suffix": None} for p in params: if p.name == "uin_str1": - res["sender"] = p.value + res["sender"] = int(p.value) elif p.name == "uin_str2": - res["target"] = p.value + res["target"] = int(p.value) elif p.name == "suffix_str": res["suffix"] = p.value elif p.name == "action_str": From eb17c61831d8e23a5774109c9a83b59a0e386d4d Mon Sep 17 00:00:00 2001 From: a1025 Date: Thu, 7 Apr 2022 23:57:11 +0800 Subject: [PATCH 065/113] add: send OnlinePush.RespPush & optimized code --- cai/client/online_push/__init__.py | 67 +++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 16 deletions(-) diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index aab0ff8c..5402986e 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -8,11 +8,9 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ -import struct -import tkinter from typing import TYPE_CHECKING, List, Tuple, Optional, Sequence -from jce import types, JceDecoder +from jce import types, JceDecoder, JceStruct, JceEncoder from cai.log import logger from cai.utils.binary import Packet @@ -235,6 +233,20 @@ def _parse_poke(params: Sequence[TemplParam]) -> dict: return res +"""def encode_resp_push_pkg(uin: int, svrip: int, seq: int, items: Sequence[DelMsgInfo]) -> bytes: + pkg = SvcRespPushMsg( + uin=uin, + del_infos=items, + svrip=svrip & 0xffffffff, + service_type=0 + ) + return RequestPacketVersion3( + servant_name="OnlinePush", + func_name="SvcRespPushMsg", + req_id=seq, + data=types.MAP({types.STRING("SvcRespPushMsg"): types.BYTES(SvcRespPushMsg.to_bytes(0, pkg))}) + ).encode() +""" # OnlinePush.ReqPush async def handle_req_push( @@ -242,23 +254,25 @@ async def handle_req_push( packet: IncomingPacket, device: Tuple[_DeviceInfo_t, ApkInfo], ) -> PushMsgCommand: - data = JceDecoder.decode_single( # type: ignore - RequestPacket.decode(packet.data).buffer - )[1]["req"]["OnlinePushPack.SvcReqPushMsg"] - body = JceDecoder.decode_bytes(data)[0] - _, stime, content = body[0], body[1], body[2][0][6] - # TODO: Send OnlinePush.RespPush - if body[2][0][2] == 732: # group + body = JceDecoder.decode_bytes( + JceDecoder.decode_single( # type: ignore + RequestPacket.decode(packet.data).buffer + )[1]["req"]["OnlinePushPack.SvcReqPushMsg"] + )[0] + + _uin, stime, push_type, content = body[0], body[1], body[2][0][2], body[2][0][6] + + if push_type == 732: # group gid = int.from_bytes(content[0:4], "big") - dtype = content[4] - if dtype in (0x14, 0x11): + stype = content[4] + if stype in (0x14, 0x11): notify = NotifyMsgBody.FromString(content[7:]) - if dtype == 0x14: # nudge + if stype == 0x14: # nudge client.dispatch_event(events.NudgeEvent( **_parse_poke(notify.optGeneralGrayTip.msgTemplParam), group=gid )) - elif dtype == 0x11: # recall + elif stype == 0x11: # recall msg = notify.optMsgRecall.recalledMsgList[0] client.dispatch_event(events.MemberRecallMessageEvent( gid, @@ -269,7 +283,7 @@ async def handle_req_push( msg.seq, msg.time )) - elif dtype == 0x0c: # mute event + elif stype == 0x0c: # mute event operator = int.from_bytes(content[6:10], "big", signed=False) target = int.from_bytes(content[16:20], "big", signed=False) duration = int.from_bytes(content[20:24], "big", signed=False) @@ -286,7 +300,28 @@ async def handle_req_push( operator, target )) - # TODO: parse friend event + elif push_type == 528: + pass + # TODO: parse friend event + + await client.send_and_wait( # resp ack + seq=client.next_seq(), + command_name="OnlinePush.RespPush", + packet=encode_push_response( + body[1], + client._session_id, + _uin, + client._siginfo.d2key, + client.uin, + body[3] & 0xffffffff, + [DelMsgInfo( + from_uin=_uin, + msg_seq=body[1], + msg_time=stime + )] + ) + ) + return PushMsgCommand( packet.uin, packet.seq, From 473d8b28fea60f56430e8a7087627be6862fa458 Mon Sep 17 00:00:00 2001 From: a1025 Date: Fri, 8 Apr 2022 00:04:01 +0800 Subject: [PATCH 066/113] sync file --- cai/pb/im/oidb/group0x857/group0x857_pb2.py | 105 ++++++++ cai/pb/im/oidb/group0x857/group0x857_pb2.pyi | 267 +++++++++++++++++++ 2 files changed, 372 insertions(+) create mode 100644 cai/pb/im/oidb/group0x857/group0x857_pb2.py create mode 100644 cai/pb/im/oidb/group0x857/group0x857_pb2.pyi diff --git a/cai/pb/im/oidb/group0x857/group0x857_pb2.py b/cai/pb/im/oidb/group0x857/group0x857_pb2.py new file mode 100644 index 00000000..ef7632b0 --- /dev/null +++ b/cai/pb/im/oidb/group0x857/group0x857_pb2.py @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: group0x857.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10group0x857.proto\"\x82\x02\n\rNotifyMsgBody\x12(\n\x0eoptMsgGrayTips\x18\x05 \x01(\x0b\x32\x10.AIOGrayTipsInfo\x12\'\n\roptMsgRedTips\x18\t \x01(\x0b\x32\x10.RedGrayTipsInfo\x12,\n\x0coptMsgRecall\x18\x0b \x01(\x0b\x32\x16.MessageRecallReminder\x12.\n\x11optGeneralGrayTip\x18\x1a \x01(\x0b\x32\x13.GeneralGrayTipInfo\x12+\n\x10qqGroupDigestMsg\x18! \x01(\x0b\x32\x11.QQGroupDigestMsg\x12\x13\n\x0bserviceType\x18\r \x01(\x05\"\x82\x01\n\x0f\x41IOGrayTipsInfo\x12\x12\n\nshowLatest\x18\x01 \x01(\r\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\x12\x0e\n\x06remind\x18\x03 \x01(\r\x12\r\n\x05\x62rief\x18\x04 \x01(\x0c\x12\x13\n\x0breceiverUin\x18\x05 \x01(\x04\x12\x16\n\x0ereliaoAdminOpt\x18\x06 \x01(\r\"\xb4\x01\n\x12GeneralGrayTipInfo\x12\x10\n\x08\x62usiType\x18\x01 \x01(\x04\x12\x0e\n\x06\x62usiId\x18\x02 \x01(\x04\x12\x10\n\x08\x63trlFlag\x18\x03 \x01(\r\x12\x0f\n\x07\x63\x32\x63Type\x18\x04 \x01(\r\x12\x13\n\x0bserviceType\x18\x05 \x01(\r\x12\x0f\n\x07templId\x18\x06 \x01(\x04\x12\"\n\rmsgTemplParam\x18\x07 \x03(\x0b\x32\x0b.TemplParam\x12\x0f\n\x07\x63ontent\x18\x08 \x01(\t\")\n\nTemplParam\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xb2\x01\n\x15MessageRecallReminder\x12\x0b\n\x03uin\x18\x01 \x01(\x03\x12\x10\n\x08nickname\x18\x02 \x01(\x0c\x12-\n\x0frecalledMsgList\x18\x03 \x03(\x0b\x32\x14.RecalledMessageMeta\x12\x17\n\x0freminderContent\x18\x04 \x01(\x0c\x12\x0f\n\x07userdef\x18\x05 \x01(\x0c\x12\x11\n\tgroupType\x18\x06 \x01(\x05\x12\x0e\n\x06opType\x18\x07 \x01(\x05\"x\n\x13RecalledMessageMeta\x12\x0b\n\x03seq\x18\x01 \x01(\x05\x12\x0c\n\x04time\x18\x02 \x01(\x05\x12\x11\n\tmsgRandom\x18\x03 \x01(\x05\x12\x0f\n\x07msgType\x18\x04 \x01(\x05\x12\x0f\n\x07msgFlag\x18\x05 \x01(\x05\x12\x11\n\tauthorUin\x18\x06 \x01(\x03\"\xde\x01\n\x0fRedGrayTipsInfo\x12\x12\n\nshowLatest\x18\x01 \x01(\r\x12\x11\n\tsenderUin\x18\x02 \x01(\x04\x12\x13\n\x0breceiverUin\x18\x03 \x01(\x04\x12\x19\n\x11senderRichContent\x18\x04 \x01(\t\x12\x1b\n\x13receiverRichContent\x18\x05 \x01(\t\x12\x0f\n\x07\x61uthKey\x18\x06 \x01(\x0c\x12\x0f\n\x07msgType\x18\x07 \x01(\x11\x12\x11\n\tluckyFlag\x18\x08 \x01(\r\x12\x10\n\x08hideFlag\x18\t \x01(\r\x12\x10\n\x08luckyUin\x18\x0c \x01(\x04\"\xd4\x01\n\x10QQGroupDigestMsg\x12\x11\n\tgroupCode\x18\x01 \x01(\x04\x12\x0b\n\x03seq\x18\x02 \x01(\r\x12\x0e\n\x06random\x18\x03 \x01(\r\x12\x0e\n\x06opType\x18\x04 \x01(\x05\x12\x0e\n\x06sender\x18\x05 \x01(\x04\x12\x12\n\ndigestOper\x18\x06 \x01(\x04\x12\x0e\n\x06opTime\x18\x07 \x01(\r\x12\x15\n\rlastestMsgSeq\x18\x08 \x01(\r\x12\x10\n\x08operNick\x18\t \x01(\x0c\x12\x12\n\nsenderNick\x18\n \x01(\x0c\x12\x0f\n\x07\x65xtInfo\x18\x0b \x01(\x05\x42+Z)github.com/Mrs4s/MiraiGo/client/pb/notifyb\x06proto3') + + + +_NOTIFYMSGBODY = DESCRIPTOR.message_types_by_name['NotifyMsgBody'] +_AIOGRAYTIPSINFO = DESCRIPTOR.message_types_by_name['AIOGrayTipsInfo'] +_GENERALGRAYTIPINFO = DESCRIPTOR.message_types_by_name['GeneralGrayTipInfo'] +_TEMPLPARAM = DESCRIPTOR.message_types_by_name['TemplParam'] +_MESSAGERECALLREMINDER = DESCRIPTOR.message_types_by_name['MessageRecallReminder'] +_RECALLEDMESSAGEMETA = DESCRIPTOR.message_types_by_name['RecalledMessageMeta'] +_REDGRAYTIPSINFO = DESCRIPTOR.message_types_by_name['RedGrayTipsInfo'] +_QQGROUPDIGESTMSG = DESCRIPTOR.message_types_by_name['QQGroupDigestMsg'] +NotifyMsgBody = _reflection.GeneratedProtocolMessageType('NotifyMsgBody', (_message.Message,), { + 'DESCRIPTOR' : _NOTIFYMSGBODY, + '__module__' : 'group0x857_pb2' + # @@protoc_insertion_point(class_scope:NotifyMsgBody) + }) +_sym_db.RegisterMessage(NotifyMsgBody) + +AIOGrayTipsInfo = _reflection.GeneratedProtocolMessageType('AIOGrayTipsInfo', (_message.Message,), { + 'DESCRIPTOR' : _AIOGRAYTIPSINFO, + '__module__' : 'group0x857_pb2' + # @@protoc_insertion_point(class_scope:AIOGrayTipsInfo) + }) +_sym_db.RegisterMessage(AIOGrayTipsInfo) + +GeneralGrayTipInfo = _reflection.GeneratedProtocolMessageType('GeneralGrayTipInfo', (_message.Message,), { + 'DESCRIPTOR' : _GENERALGRAYTIPINFO, + '__module__' : 'group0x857_pb2' + # @@protoc_insertion_point(class_scope:GeneralGrayTipInfo) + }) +_sym_db.RegisterMessage(GeneralGrayTipInfo) + +TemplParam = _reflection.GeneratedProtocolMessageType('TemplParam', (_message.Message,), { + 'DESCRIPTOR' : _TEMPLPARAM, + '__module__' : 'group0x857_pb2' + # @@protoc_insertion_point(class_scope:TemplParam) + }) +_sym_db.RegisterMessage(TemplParam) + +MessageRecallReminder = _reflection.GeneratedProtocolMessageType('MessageRecallReminder', (_message.Message,), { + 'DESCRIPTOR' : _MESSAGERECALLREMINDER, + '__module__' : 'group0x857_pb2' + # @@protoc_insertion_point(class_scope:MessageRecallReminder) + }) +_sym_db.RegisterMessage(MessageRecallReminder) + +RecalledMessageMeta = _reflection.GeneratedProtocolMessageType('RecalledMessageMeta', (_message.Message,), { + 'DESCRIPTOR' : _RECALLEDMESSAGEMETA, + '__module__' : 'group0x857_pb2' + # @@protoc_insertion_point(class_scope:RecalledMessageMeta) + }) +_sym_db.RegisterMessage(RecalledMessageMeta) + +RedGrayTipsInfo = _reflection.GeneratedProtocolMessageType('RedGrayTipsInfo', (_message.Message,), { + 'DESCRIPTOR' : _REDGRAYTIPSINFO, + '__module__' : 'group0x857_pb2' + # @@protoc_insertion_point(class_scope:RedGrayTipsInfo) + }) +_sym_db.RegisterMessage(RedGrayTipsInfo) + +QQGroupDigestMsg = _reflection.GeneratedProtocolMessageType('QQGroupDigestMsg', (_message.Message,), { + 'DESCRIPTOR' : _QQGROUPDIGESTMSG, + '__module__' : 'group0x857_pb2' + # @@protoc_insertion_point(class_scope:QQGroupDigestMsg) + }) +_sym_db.RegisterMessage(QQGroupDigestMsg) + +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'Z)github.com/Mrs4s/MiraiGo/client/pb/notify' + _NOTIFYMSGBODY._serialized_start=21 + _NOTIFYMSGBODY._serialized_end=279 + _AIOGRAYTIPSINFO._serialized_start=282 + _AIOGRAYTIPSINFO._serialized_end=412 + _GENERALGRAYTIPINFO._serialized_start=415 + _GENERALGRAYTIPINFO._serialized_end=595 + _TEMPLPARAM._serialized_start=597 + _TEMPLPARAM._serialized_end=638 + _MESSAGERECALLREMINDER._serialized_start=641 + _MESSAGERECALLREMINDER._serialized_end=819 + _RECALLEDMESSAGEMETA._serialized_start=821 + _RECALLEDMESSAGEMETA._serialized_end=941 + _REDGRAYTIPSINFO._serialized_start=944 + _REDGRAYTIPSINFO._serialized_end=1166 + _QQGROUPDIGESTMSG._serialized_start=1169 + _QQGROUPDIGESTMSG._serialized_end=1381 +# @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/oidb/group0x857/group0x857_pb2.pyi b/cai/pb/im/oidb/group0x857/group0x857_pb2.pyi new file mode 100644 index 00000000..7fa6257b --- /dev/null +++ b/cai/pb/im/oidb/group0x857/group0x857_pb2.pyi @@ -0,0 +1,267 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +from builtins import ( + bool, + bytes, + int, +) + +from google.protobuf.descriptor import ( + Descriptor, + FileDescriptor, +) + +from google.protobuf.internal.containers import ( + RepeatedCompositeFieldContainer, +) + +from google.protobuf.message import ( + Message, +) + +from typing import ( + Iterable, + Optional, + Text, +) + +from typing_extensions import ( + Literal, +) + + +DESCRIPTOR: FileDescriptor + +class NotifyMsgBody(Message): + DESCRIPTOR: Descriptor + OPTMSGGRAYTIPS_FIELD_NUMBER: int + OPTMSGREDTIPS_FIELD_NUMBER: int + OPTMSGRECALL_FIELD_NUMBER: int + OPTGENERALGRAYTIP_FIELD_NUMBER: int + QQGROUPDIGESTMSG_FIELD_NUMBER: int + SERVICETYPE_FIELD_NUMBER: int + @property + def optMsgGrayTips(self) -> AIOGrayTipsInfo: ... + @property + def optMsgRedTips(self) -> RedGrayTipsInfo: ... + @property + def optMsgRecall(self) -> MessageRecallReminder: ... + @property + def optGeneralGrayTip(self) -> GeneralGrayTipInfo: ... + @property + def qqGroupDigestMsg(self) -> QQGroupDigestMsg: ... + serviceType: int + def __init__(self, + *, + optMsgGrayTips: Optional[AIOGrayTipsInfo] = ..., + optMsgRedTips: Optional[RedGrayTipsInfo] = ..., + optMsgRecall: Optional[MessageRecallReminder] = ..., + optGeneralGrayTip: Optional[GeneralGrayTipInfo] = ..., + qqGroupDigestMsg: Optional[QQGroupDigestMsg] = ..., + serviceType: int = ..., + ) -> None: ... + def HasField(self, field_name: Literal["optGeneralGrayTip",b"optGeneralGrayTip","optMsgGrayTips",b"optMsgGrayTips","optMsgRecall",b"optMsgRecall","optMsgRedTips",b"optMsgRedTips","qqGroupDigestMsg",b"qqGroupDigestMsg"]) -> bool: ... + def ClearField(self, field_name: Literal["optGeneralGrayTip",b"optGeneralGrayTip","optMsgGrayTips",b"optMsgGrayTips","optMsgRecall",b"optMsgRecall","optMsgRedTips",b"optMsgRedTips","qqGroupDigestMsg",b"qqGroupDigestMsg","serviceType",b"serviceType"]) -> None: ... + +class AIOGrayTipsInfo(Message): + DESCRIPTOR: Descriptor + SHOWLATEST_FIELD_NUMBER: int + CONTENT_FIELD_NUMBER: int + REMIND_FIELD_NUMBER: int + BRIEF_FIELD_NUMBER: int + RECEIVERUIN_FIELD_NUMBER: int + RELIAOADMINOPT_FIELD_NUMBER: int + showLatest: int + content: bytes + remind: int + brief: bytes + receiverUin: int + reliaoAdminOpt: int + def __init__(self, + *, + showLatest: int = ..., + content: bytes = ..., + remind: int = ..., + brief: bytes = ..., + receiverUin: int = ..., + reliaoAdminOpt: int = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["brief",b"brief","content",b"content","receiverUin",b"receiverUin","reliaoAdminOpt",b"reliaoAdminOpt","remind",b"remind","showLatest",b"showLatest"]) -> None: ... + +class GeneralGrayTipInfo(Message): + DESCRIPTOR: Descriptor + BUSITYPE_FIELD_NUMBER: int + BUSIID_FIELD_NUMBER: int + CTRLFLAG_FIELD_NUMBER: int + C2CTYPE_FIELD_NUMBER: int + SERVICETYPE_FIELD_NUMBER: int + TEMPLID_FIELD_NUMBER: int + MSGTEMPLPARAM_FIELD_NUMBER: int + CONTENT_FIELD_NUMBER: int + busiType: int + busiId: int + ctrlFlag: int + c2cType: int + serviceType: int + templId: int + @property + def msgTemplParam(self) -> RepeatedCompositeFieldContainer[TemplParam]: ... + content: Text + def __init__(self, + *, + busiType: int = ..., + busiId: int = ..., + ctrlFlag: int = ..., + c2cType: int = ..., + serviceType: int = ..., + templId: int = ..., + msgTemplParam: Optional[Iterable[TemplParam]] = ..., + content: Text = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["busiId",b"busiId","busiType",b"busiType","c2cType",b"c2cType","content",b"content","ctrlFlag",b"ctrlFlag","msgTemplParam",b"msgTemplParam","serviceType",b"serviceType","templId",b"templId"]) -> None: ... + +class TemplParam(Message): + DESCRIPTOR: Descriptor + NAME_FIELD_NUMBER: int + VALUE_FIELD_NUMBER: int + name: Text + value: Text + def __init__(self, + *, + name: Text = ..., + value: Text = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["name",b"name","value",b"value"]) -> None: ... + +class MessageRecallReminder(Message): + DESCRIPTOR: Descriptor + UIN_FIELD_NUMBER: int + NICKNAME_FIELD_NUMBER: int + RECALLEDMSGLIST_FIELD_NUMBER: int + REMINDERCONTENT_FIELD_NUMBER: int + USERDEF_FIELD_NUMBER: int + GROUPTYPE_FIELD_NUMBER: int + OPTYPE_FIELD_NUMBER: int + uin: int + nickname: bytes + @property + def recalledMsgList(self) -> RepeatedCompositeFieldContainer[RecalledMessageMeta]: ... + reminderContent: bytes + userdef: bytes + groupType: int + opType: int + def __init__(self, + *, + uin: int = ..., + nickname: bytes = ..., + recalledMsgList: Optional[Iterable[RecalledMessageMeta]] = ..., + reminderContent: bytes = ..., + userdef: bytes = ..., + groupType: int = ..., + opType: int = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["groupType",b"groupType","nickname",b"nickname","opType",b"opType","recalledMsgList",b"recalledMsgList","reminderContent",b"reminderContent","uin",b"uin","userdef",b"userdef"]) -> None: ... + +class RecalledMessageMeta(Message): + DESCRIPTOR: Descriptor + SEQ_FIELD_NUMBER: int + TIME_FIELD_NUMBER: int + MSGRANDOM_FIELD_NUMBER: int + MSGTYPE_FIELD_NUMBER: int + MSGFLAG_FIELD_NUMBER: int + AUTHORUIN_FIELD_NUMBER: int + seq: int + time: int + msgRandom: int + msgType: int + msgFlag: int + authorUin: int + def __init__(self, + *, + seq: int = ..., + time: int = ..., + msgRandom: int = ..., + msgType: int = ..., + msgFlag: int = ..., + authorUin: int = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["authorUin",b"authorUin","msgFlag",b"msgFlag","msgRandom",b"msgRandom","msgType",b"msgType","seq",b"seq","time",b"time"]) -> None: ... + +class RedGrayTipsInfo(Message): + DESCRIPTOR: Descriptor + SHOWLATEST_FIELD_NUMBER: int + SENDERUIN_FIELD_NUMBER: int + RECEIVERUIN_FIELD_NUMBER: int + SENDERRICHCONTENT_FIELD_NUMBER: int + RECEIVERRICHCONTENT_FIELD_NUMBER: int + AUTHKEY_FIELD_NUMBER: int + MSGTYPE_FIELD_NUMBER: int + LUCKYFLAG_FIELD_NUMBER: int + HIDEFLAG_FIELD_NUMBER: int + LUCKYUIN_FIELD_NUMBER: int + showLatest: int + senderUin: int + receiverUin: int + senderRichContent: Text + receiverRichContent: Text + authKey: bytes + msgType: int + luckyFlag: int + hideFlag: int + luckyUin: int + def __init__(self, + *, + showLatest: int = ..., + senderUin: int = ..., + receiverUin: int = ..., + senderRichContent: Text = ..., + receiverRichContent: Text = ..., + authKey: bytes = ..., + msgType: int = ..., + luckyFlag: int = ..., + hideFlag: int = ..., + luckyUin: int = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["authKey",b"authKey","hideFlag",b"hideFlag","luckyFlag",b"luckyFlag","luckyUin",b"luckyUin","msgType",b"msgType","receiverRichContent",b"receiverRichContent","receiverUin",b"receiverUin","senderRichContent",b"senderRichContent","senderUin",b"senderUin","showLatest",b"showLatest"]) -> None: ... + +class QQGroupDigestMsg(Message): + DESCRIPTOR: Descriptor + GROUPCODE_FIELD_NUMBER: int + SEQ_FIELD_NUMBER: int + RANDOM_FIELD_NUMBER: int + OPTYPE_FIELD_NUMBER: int + SENDER_FIELD_NUMBER: int + DIGESTOPER_FIELD_NUMBER: int + OPTIME_FIELD_NUMBER: int + LASTESTMSGSEQ_FIELD_NUMBER: int + OPERNICK_FIELD_NUMBER: int + SENDERNICK_FIELD_NUMBER: int + EXTINFO_FIELD_NUMBER: int + groupCode: int + seq: int + random: int + opType: int + sender: int + digestOper: int + opTime: int + lastestMsgSeq: int + operNick: bytes + senderNick: bytes + extInfo: int + def __init__(self, + *, + groupCode: int = ..., + seq: int = ..., + random: int = ..., + opType: int = ..., + sender: int = ..., + digestOper: int = ..., + opTime: int = ..., + lastestMsgSeq: int = ..., + operNick: bytes = ..., + senderNick: bytes = ..., + extInfo: int = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["digestOper",b"digestOper","extInfo",b"extInfo","groupCode",b"groupCode","lastestMsgSeq",b"lastestMsgSeq","opTime",b"opTime","opType",b"opType","operNick",b"operNick","random",b"random","sender",b"sender","senderNick",b"senderNick","seq",b"seq"]) -> None: ... From cbb506e3c7354bc1bb04cbb0d977293298e30ab1 Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Fri, 8 Apr 2022 11:11:19 +0800 Subject: [PATCH 067/113] :art: improve reconnect --- cai/client/client.py | 45 ++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/cai/client/client.py b/cai/client/client.py index 25b0e292..6cf26073 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -9,6 +9,7 @@ https://github.com/cscs181/CAI/blob/master/LICENSE """ import time +import struct import asyncio import secrets from typing import ( @@ -28,6 +29,7 @@ from cai import log from cai.utils.binary import Packet +from cai.client.events.base import Event from cai.utils.future import FutureStore from cai.settings.protocol import ApkInfo from cai.settings.device import DeviceInfo @@ -46,15 +48,14 @@ GroupMemberListException, ) -from cai.client.events.base import Event from .packet import UniPacket, IncomingPacket from .command import Command, _packet_to_command from .sso_server import SsoServer, get_sso_server from .multi_msg.long_msg import _handle_multi_resp_body -from .online_push import handle_c2c_sync, handle_push_msg, handle_req_push from .heartbeat import Heartbeat, encode_heartbeat, handle_heartbeat from .models import Group, Friend, SigInfo, FriendGroup, GroupMember from .config_push import FileServerPushList, handle_config_push_request +from .online_push import handle_c2c_sync, handle_push_msg, handle_req_push from .message_service import ( SyncFlag, GetMessageCommand, @@ -136,7 +137,7 @@ # "OnlinePush.PbPushBindUinGroupMsg": handle_push_msg, # sub account # new "MultiMsg.ApplyUp": _handle_multi_resp_body, - "OnlinePush.ReqPush": handle_req_push + "OnlinePush.ReqPush": handle_req_push, } @@ -202,6 +203,7 @@ def __init__( # connection info self._reconnect: bool = auto_reconnect + self._reconnect_times: int = 0 self._max_reconnections: Optional[int] = max_reconnections self._closed: asyncio.Event = asyncio.Event() @@ -322,9 +324,8 @@ async def connect(self, server: Optional[SsoServer] = None) -> None: self._connection = await connect( _server.host, _server.port, ssl=False, timeout=3.0 ) - asyncio.create_task(self.receive()).add_done_callback( - self._recv_done_cb - ) + task = asyncio.create_task(self.receive()) + task.add_done_callback(self._recv_done_cb) except ConnectionError as e: raise except Exception as e: @@ -333,13 +334,23 @@ async def connect(self, server: Optional[SsoServer] = None) -> None: f"server({_server.host}:{_server.port}): " + repr(e) ) - def _recv_done_cb(self, _task): + def _recv_done_cb(self, task: asyncio.Task): if self._reconnect: - log.network.warning("receiver stopped, try to reconnect") - asyncio.create_task(self.reconnect()) + if ( + self._max_reconnections + and self._reconnect_times >= self._max_reconnections + ): + log.network.warning( + "Max reconnections reached, stop reconnecting" + ) + asyncio.create_task(self.disconnect()) + else: + log.network.warning("receiver stopped, try to reconnect") + self._reconnect_times += 1 + asyncio.create_task(self.reconnect()) else: log.network.warning("receiver stopped") - asyncio.create_task(self.close()) + asyncio.create_task(self.disconnect()) async def disconnect(self) -> None: """Disconnect if already connected to the server.""" @@ -360,7 +371,7 @@ async def reconnect( if not change_server and self._connection: log.network.warning("reconnecting...") - await self.connect() + await self._connection.reconnect() await self.register(register_reason=RegPushReason.MsfByNetChange) log.network.info("reconnected") return @@ -425,7 +436,7 @@ async def send( Returns: None. """ - log.network.debug(f"(send:{seq}): {command_name}") + log.network.debug(f"(send: {seq}): {command_name}") await self.connection.awrite(packet) async def send_and_wait( @@ -449,6 +460,7 @@ async def send_and_wait( await self.send(seq, command_name, packet) return await self._receive_store.fetch(seq, timeout) + # FIXME async def send_unipkg_and_wait( self, command_name: str, enc_packet: bytes, seq=-1, timeout=10.0 ): @@ -489,12 +501,10 @@ async def receive(self): while self.connected: try: length: int = ( - int.from_bytes( - await self.connection.read_bytes(4), "big", signed=False - ) + struct.unpack(">i", await self.connection.read_bytes(4))[0] - 4 ) - + # FIXME: length < 0 ? data = await self.connection.read_bytes(length) packet = IncomingPacket.parse( data, @@ -502,9 +512,8 @@ async def receive(self): self._siginfo.d2key, self._siginfo.wt_session_ticket_key, ) - # log.network.debug( - f"(receive:{packet.ret_code}): {packet.command_name}" + f"(receive: {packet.ret_code}): {packet.command_name}" ) # do not block receive asyncio.create_task(self._handle_incoming_packet(packet)) From 21aa1eefe394adb5e39c3c0bfba9cb1781acb4fa Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Fri, 8 Apr 2022 11:30:59 +0800 Subject: [PATCH 068/113] :wheelchair: fix reconnect init --- cai/client/client.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/cai/client/client.py b/cai/client/client.py index 6cf26073..ddb2f067 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -372,7 +372,8 @@ async def reconnect( if not change_server and self._connection: log.network.warning("reconnecting...") await self._connection.reconnect() - await self.register(register_reason=RegPushReason.MsfByNetChange) + # FIXME: register reason msfByNetChange? + await self._init(drop_offline_msg=False) log.network.info("reconnected") return @@ -642,13 +643,15 @@ async def _handle_login_response( response.uin, response.status, "Unknown login status." ) - async def _init(self) -> None: + async def _init(self, drop_offline_msg: bool = True) -> None: if not self.connected or self.status == OnlineStatus.Offline: raise RuntimeError("Client is offline.") - self._init_flag = True + self._init_flag = drop_offline_msg + + previous_status = self._status or OnlineStatus.Online # register client online status - await self.register() + await self.register(status=previous_status) # force refresh group list await self._refresh_group_list() # force refresh friend list From 55e9fac9bfdcbffd8e282f27c325ae1bcd5d7730 Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Fri, 8 Apr 2022 12:32:03 +0800 Subject: [PATCH 069/113] :art: remove device handle param --- cai/api/client.py | 2 +- cai/api/flow.py | 5 +- cai/client/__init__.py | 1 + cai/client/client.py | 28 +++--- cai/client/command.py | 2 +- cai/client/config_push/__init__.py | 2 +- cai/client/events/__init__.py | 10 +- cai/client/events/common.py | 1 + cai/client/events/group.py | 1 - cai/client/friendlist/__init__.py | 6 +- cai/client/heartbeat/__init__.py | 2 +- cai/client/message_service/__init__.py | 8 +- cai/client/message_service/decoders.py | 2 +- cai/client/message_service/models.py | 4 +- cai/client/multi_msg/long_msg.py | 2 +- cai/client/online_push/__init__.py | 134 ++++++++++++------------- cai/client/status_service/__init__.py | 8 +- cai/client/wtlogin/__init__.py | 10 +- 18 files changed, 114 insertions(+), 114 deletions(-) diff --git a/cai/api/client.py b/cai/api/client.py index 6f280059..76b917c4 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -24,9 +24,9 @@ VoiceElement, ) -from .flow import Events as _Events from .group import Group as _Group from .login import Login as _Login +from .flow import Events as _Events from .friend import Friend as _Friend from .error import ( BotMutedException, diff --git a/cai/api/flow.py b/cai/api/flow.py index 27a3cc9f..1fea701b 100644 --- a/cai/api/flow.py +++ b/cai/api/flow.py @@ -7,7 +7,7 @@ https://github.com/cscs181/CAI/blob/master/LICENSE """ -from typing import Callable, Awaitable, TYPE_CHECKING +from typing import TYPE_CHECKING, Callable, Awaitable from cai.log import logger from cai.client import HANDLERS, Event, Client, Command, IncomingPacket @@ -20,8 +20,7 @@ class Events(BaseAPI): def add_event_listener( - self, - listener: Callable[["Client_T", Event], Awaitable[None]] + self, listener: Callable[["Client_T", Event], Awaitable[None]] ): """Add event listener. diff --git a/cai/client/__init__.py b/cai/client/__init__.py index dbf1d67b..6a5d5624 100644 --- a/cai/client/__init__.py +++ b/cai/client/__init__.py @@ -10,6 +10,7 @@ """ from cai.client.events.base import Event + from .command import Command from .packet import IncomingPacket from .client import HANDLERS, Client diff --git a/cai/client/client.py b/cai/client/client.py index ddb2f067..e8d904f5 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -111,9 +111,7 @@ encode_login_request2_captcha, ) -HT = Callable[ - ["Client", IncomingPacket, Tuple[DeviceInfo, ApkInfo]], Awaitable[Command] -] +HT = Callable[["Client", IncomingPacket], Awaitable[Command]] LT = Callable[["Client", Event], Awaitable[None]] HANDLERS: Dict[str, HT] = { @@ -135,7 +133,6 @@ "OnlinePush.PbC2CMsgSync": handle_c2c_sync, "OnlinePush.PbPushC2CMsg": handle_push_msg, # "OnlinePush.PbPushBindUinGroupMsg": handle_push_msg, # sub account - # new "MultiMsg.ApplyUp": _handle_multi_resp_body, "OnlinePush.ReqPush": handle_req_push, } @@ -347,7 +344,7 @@ def _recv_done_cb(self, task: asyncio.Task): else: log.network.warning("receiver stopped, try to reconnect") self._reconnect_times += 1 - asyncio.create_task(self.reconnect()) + asyncio.create_task(self.reconnect_and_login()) else: log.network.warning("receiver stopped") asyncio.create_task(self.disconnect()) @@ -372,8 +369,6 @@ async def reconnect( if not change_server and self._connection: log.network.warning("reconnecting...") await self._connection.reconnect() - # FIXME: register reason msfByNetChange? - await self._init(drop_offline_msg=False) log.network.info("reconnected") return @@ -388,6 +383,13 @@ async def reconnect( await self.disconnect() await self.connect(_server) + async def reconnect_and_login( + self, change_server: bool = False, server: Optional[SsoServer] = None + ) -> None: + await self.reconnect(change_server=change_server, server=server) + # FIXME: register reason msfByNetChange? + await self._init(drop_offline_msg=False) + async def close(self) -> None: """Close the client and logout.""" log.logger.warning("closing client") @@ -485,9 +487,7 @@ async def send_unipkg_and_wait( async def _handle_incoming_packet(self, in_packet: IncomingPacket) -> None: try: handler = HANDLERS.get(in_packet.command_name, _packet_to_command) - packet = await handler( - self, in_packet, (self.device, self.apk_info) - ) + packet = await handler(self, in_packet) self._receive_store.store_result(packet.seq, packet) except Exception as e: # TODO: handle exception @@ -644,12 +644,14 @@ async def _handle_login_response( ) async def _init(self, drop_offline_msg: bool = True) -> None: - if not self.connected or self.status == OnlineStatus.Offline: - raise RuntimeError("Client is offline.") + if not self.connected: + raise RuntimeError("Client not connected.") self._init_flag = drop_offline_msg previous_status = self._status or OnlineStatus.Online + if previous_status in (OnlineStatus.Offline, OnlineStatus.Unknown): + previous_status = OnlineStatus.Online # register client online status await self.register(status=previous_status) # force refresh group list @@ -1050,7 +1052,7 @@ async def heartbeat(self) -> None: self._heartbeat_enabled = True - while self._heartbeat_enabled and not self._connection.closed: + while self._heartbeat_enabled and self.connected: seq = self.next_seq() packet = encode_heartbeat( seq, diff --git a/cai/client/command.py b/cai/client/command.py index 1e7d726e..e930b111 100644 --- a/cai/client/command.py +++ b/cai/client/command.py @@ -31,7 +31,7 @@ class UnhandledCommand(Command): async def _packet_to_command( - client: "Client", packet: IncomingPacket, _device + client: "Client", packet: IncomingPacket ) -> UnhandledCommand: return UnhandledCommand( packet.uin, diff --git a/cai/client/config_push/__init__.py b/cai/client/config_push/__init__.py index c1b9bf27..516a4ac8 100644 --- a/cai/client/config_push/__init__.py +++ b/cai/client/config_push/__init__.py @@ -75,7 +75,7 @@ def encode_config_push_response( # ConfigPushSvc.PushReq async def handle_config_push_request( - client: "Client", packet: IncomingPacket, _device + client: "Client", packet: IncomingPacket ) -> ConfigPushCommand: command = ConfigPushCommand.decode_push_req( packet.uin, diff --git a/cai/client/events/__init__.py b/cai/client/events/__init__.py index 51d507c5..183ef0b9 100644 --- a/cai/client/events/__init__.py +++ b/cai/client/events/__init__.py @@ -1,5 +1,11 @@ from .common import NudgeEvent -from .group import GroupEvent, MemberMutedEvent, MemberUnMutedEvent, MemberRecallMessageEvent +from .group import ( + GroupEvent, + MemberMutedEvent, + MemberUnMutedEvent, + MemberRecallMessageEvent, +) + # from .friend import * @@ -8,5 +14,5 @@ "MemberMutedEvent", "MemberUnMutedEvent", "MemberRecallMessageEvent", - "NudgeEvent" + "NudgeEvent", ] diff --git a/cai/client/events/common.py b/cai/client/events/common.py index 158847ac..5a4d1524 100644 --- a/cai/client/events/common.py +++ b/cai/client/events/common.py @@ -1,5 +1,6 @@ from typing import Optional from dataclasses import dataclass + from .base import Event diff --git a/cai/client/events/group.py b/cai/client/events/group.py index d3e2bd29..ff61ec8d 100644 --- a/cai/client/events/group.py +++ b/cai/client/events/group.py @@ -34,4 +34,3 @@ class MemberRecallMessageEvent(GroupEvent): msg_rand: int msg_seq: int msg_time: int - diff --git a/cai/client/friendlist/__init__.py b/cai/client/friendlist/__init__.py index 0dd9c983..9a71ddf2 100644 --- a/cai/client/friendlist/__init__.py +++ b/cai/client/friendlist/__init__.py @@ -104,7 +104,7 @@ def encode_get_friend_list( async def handle_friend_list( - client: "Client", packet: IncomingPacket, _device + client: "Client", packet: IncomingPacket ) -> "FriendListCommand": return FriendListCommand.decode_response( packet.uin, @@ -167,7 +167,7 @@ def encode_get_troop_list( async def handle_troop_list( - client: "Client", packet: IncomingPacket, _device + client: "Client", packet: IncomingPacket ) -> TroopListCommand: return TroopListCommand.decode_response( packet.uin, @@ -230,7 +230,7 @@ def encode_get_troop_member_list( async def handle_troop_member_list( - client: "Client", packet: IncomingPacket, _device + client: "Client", packet: IncomingPacket ) -> TroopMemberListCommand: return TroopMemberListCommand.decode_response( packet.uin, diff --git a/cai/client/heartbeat/__init__.py b/cai/client/heartbeat/__init__.py index b2b516fd..e9af60f9 100644 --- a/cai/client/heartbeat/__init__.py +++ b/cai/client/heartbeat/__init__.py @@ -65,7 +65,7 @@ class Heartbeat(Command): async def handle_heartbeat( - _client: "Client", packet: IncomingPacket, _device + client: "Client", packet: IncomingPacket ) -> Heartbeat: return Heartbeat( packet.uin, packet.seq, packet.ret_code, packet.command_name diff --git a/cai/client/message_service/__init__.py b/cai/client/message_service/__init__.py index def447ed..515d4cf6 100644 --- a/cai/client/message_service/__init__.py +++ b/cai/client/message_service/__init__.py @@ -102,7 +102,7 @@ def encode_get_message( async def handle_get_message( - client: "Client", packet: IncomingPacket, _device + client: "Client", packet: IncomingPacket ) -> "GetMessageCommand": """Handle Pb Get Message response. @@ -247,7 +247,7 @@ def encode_delete_message( async def handle_push_notify( - client: "Client", packet: IncomingPacket, _device + client: "Client", packet: IncomingPacket ) -> PushNotifyCommand: """Handle Push Notify Command. @@ -304,10 +304,10 @@ async def handle_push_notify( # MessageSvc.PushForceOffline async def handle_force_offline( - client: "Client", packet: IncomingPacket, _device + client: "Client", packet: IncomingPacket ) -> PushForceOfflineCommand: client._status = OnlineStatus.Offline - await client.close() + await client.disconnect() request = PushForceOfflineCommand.decode_response( packet.uin, packet.seq, diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index da4f456a..f17b2f50 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -13,8 +13,8 @@ from typing import Dict, List, Callable, Optional, Sequence from cai.log import logger -from cai.client.events.base import Event from cai.pb.msf.msg.comm import Msg +from cai.client.events.base import Event from cai.pb.im.msg.msg_body import Ptt, Elem from cai.pb.im.msg.service.comm_elem import ( MsgElemInfo_servtype2, diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index 3f1ad89e..821bd3f6 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -12,11 +12,11 @@ import abc from enum import IntEnum from dataclasses import dataclass -from typing import List, Optional, Union +from typing import List, Union, Optional -from cai.client.events.base import Event from cai.pb.msf.msg.comm import Msg from cai.pb.im.msg.msg_body import Ptt +from cai.client.events.base import Event class PokeType(IntEnum): diff --git a/cai/client/multi_msg/long_msg.py b/cai/client/multi_msg/long_msg.py index 0f635148..87a2aa5d 100644 --- a/cai/client/multi_msg/long_msg.py +++ b/cai/client/multi_msg/long_msg.py @@ -68,7 +68,7 @@ async def build_multi_apply_up_pkg( async def _handle_multi_resp_body( - client: "Client", pkg: "IncomingPacket", _device + client: "Client", pkg: "IncomingPacket" ) -> MultiApplyResp: mrb = MultiRspBody.FromString(pkg.data).multimsgApplyupRsp if not mrb: diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index 5402986e..bec45a51 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -10,15 +10,15 @@ """ from typing import TYPE_CHECKING, List, Tuple, Optional, Sequence -from jce import types, JceDecoder, JceStruct, JceEncoder +from jce import JceStruct, JceDecoder, JceEncoder, types from cai.log import logger from cai.utils.binary import Packet -from cai.utils.jce import RequestPacketVersion3, RequestPacket from cai.client.message_service import MESSAGE_DECODERS from cai.client.packet import UniPacket, IncomingPacket from cai.settings.device import DeviceInfo as _DeviceInfo_t -from cai.pb.im.oidb.group0x857.group0x857_pb2 import NotifyMsgBody, TemplParam +from cai.utils.jce import RequestPacket, RequestPacketVersion3 +from cai.pb.im.oidb.group0x857.group0x857_pb2 import TemplParam, NotifyMsgBody from .. import events from ...settings.protocol import ApkInfo @@ -29,12 +29,12 @@ from cai.client import Client +# OnlinePush.RespPush def encode_push_response( seq: int, session_id: bytes, uin: int, d2key: bytes, - resp_uin: int, # warn: unused var svrip: int, delete_messages: List[DelMsgInfo] = [], push_token: Optional[bytes] = None, @@ -55,7 +55,6 @@ def encode_push_response( session_id (bytes): Session ID. uin (int): User QQ number. d2key (bytes): Siginfo d2 key. - resp_uin (int): Push response uin. svrip (int): Svrip from push packet. delete_messages (List[DelMsgInfo]): List of delete messages. push_token (Optional[bytes]): Push token from push packet. @@ -88,7 +87,7 @@ def encode_push_response( async def handle_c2c_sync( - client: "Client", packet: IncomingPacket, _device + client: "Client", packet: IncomingPacket ) -> PushMsgCommand: """Handle C2C Message Sync. @@ -116,7 +115,6 @@ async def handle_c2c_sync( client._session_id, client.uin, client._siginfo.d2key, - message.head.from_uin, push.push.svrip, push_token=push.push.push_token or None, ) @@ -139,7 +137,6 @@ async def handle_c2c_sync( async def handle_push_msg( client: "Client", packet: IncomingPacket, - device: Tuple[_DeviceInfo_t, ApkInfo], ) -> PushMsgCommand: """Handle Push Message Command. @@ -148,7 +145,6 @@ async def handle_push_msg( com.tencent.mobileqq.app.MessageHandler.b """ - device = device[0] push = PushMsgCommand.decode_response( packet.uin, @@ -170,16 +166,15 @@ async def handle_push_msg( client._session_id, client.uin, client._siginfo.d2key, - client.uin, push.push.svrip, push_token=push.push.push_token or None, service_type=1, device_info=DeviceInfo( net_type=1, - dev_type=device.model, - os_ver=device.version.release, - vendor_name=device.vendor_name, - vendor_os_name=device.vendor_os_name, + dev_type=client.device.model, + os_ver=client.device.version.release, + vendor_name=client.device.vendor_name, + vendor_os_name=client.device.vendor_os_name, ), ) await client.send(push.seq, "OnlinePush.RespPush", resp_packet) @@ -195,7 +190,6 @@ async def handle_push_msg( client._session_id, client.uin, client._siginfo.d2key, - message.head.from_uin, push.push.svrip, [delete_info], push_token=push.push.push_token or None, @@ -233,26 +227,30 @@ def _parse_poke(params: Sequence[TemplParam]) -> dict: return res -"""def encode_resp_push_pkg(uin: int, svrip: int, seq: int, items: Sequence[DelMsgInfo]) -> bytes: - pkg = SvcRespPushMsg( - uin=uin, - del_infos=items, - svrip=svrip & 0xffffffff, - service_type=0 - ) - return RequestPacketVersion3( - servant_name="OnlinePush", - func_name="SvcRespPushMsg", - req_id=seq, - data=types.MAP({types.STRING("SvcRespPushMsg"): types.BYTES(SvcRespPushMsg.to_bytes(0, pkg))}) - ).encode() -""" +# OnlinePush.SvcRespPushMsg +# def encode_resp_push_pkg( +# uin: int, svrip: int, seq: int, items: Sequence[DelMsgInfo] +# ) -> bytes: +# pkg = SvcRespPushMsg( +# uin=uin, del_infos=items, svrip=svrip & 0xFFFFFFFF, service_type=0 +# ) +# return RequestPacketVersion3( +# servant_name="OnlinePush", +# func_name="SvcRespPushMsg", +# req_id=seq, +# data=types.MAP( +# { +# types.STRING("SvcRespPushMsg"): types.BYTES( +# SvcRespPushMsg.to_bytes(0, pkg) +# ) +# } +# ), +# ).encode() + # OnlinePush.ReqPush async def handle_req_push( - client: "Client", - packet: IncomingPacket, - device: Tuple[_DeviceInfo_t, ApkInfo], + client: "Client", packet: IncomingPacket ) -> PushMsgCommand: body = JceDecoder.decode_bytes( JceDecoder.decode_single( # type: ignore @@ -260,7 +258,12 @@ async def handle_req_push( )[1]["req"]["OnlinePushPack.SvcReqPushMsg"] )[0] - _uin, stime, push_type, content = body[0], body[1], body[2][0][2], body[2][0][6] + _uin, stime, push_type, content = ( + body[0], + body[1], + body[2][0][2], + body[2][0][6], + ) if push_type == 732: # group gid = int.from_bytes(content[0:4], "big") @@ -268,38 +271,37 @@ async def handle_req_push( if stype in (0x14, 0x11): notify = NotifyMsgBody.FromString(content[7:]) if stype == 0x14: # nudge - client.dispatch_event(events.NudgeEvent( - **_parse_poke(notify.optGeneralGrayTip.msgTemplParam), - group=gid - )) + client.dispatch_event( + events.NudgeEvent( + **_parse_poke(notify.optGeneralGrayTip.msgTemplParam), + group=gid, + ) + ) elif stype == 0x11: # recall msg = notify.optMsgRecall.recalledMsgList[0] - client.dispatch_event(events.MemberRecallMessageEvent( - gid, - notify.optMsgRecall.uin, - notify.optMsgRecall.opType, - msg.authorUin, - msg.msgRandom, - msg.seq, - msg.time - )) - elif stype == 0x0c: # mute event + client.dispatch_event( + events.MemberRecallMessageEvent( + gid, + notify.optMsgRecall.uin, + notify.optMsgRecall.opType, + msg.authorUin, + msg.msgRandom, + msg.seq, + msg.time, + ) + ) + elif stype == 0x0C: # mute event operator = int.from_bytes(content[6:10], "big", signed=False) target = int.from_bytes(content[16:20], "big", signed=False) duration = int.from_bytes(content[20:24], "big", signed=False) if duration > 0: # muted - client.dispatch_event(events.MemberMutedEvent( - gid, - operator, - target, - duration - )) + client.dispatch_event( + events.MemberMutedEvent(gid, operator, target, duration) + ) else: - client.dispatch_event(events.MemberUnMutedEvent( - gid, - operator, - target - )) + client.dispatch_event( + events.MemberUnMutedEvent(gid, operator, target) + ) elif push_type == 528: pass # TODO: parse friend event @@ -312,21 +314,13 @@ async def handle_req_push( client._session_id, _uin, client._siginfo.d2key, - client.uin, - body[3] & 0xffffffff, - [DelMsgInfo( - from_uin=_uin, - msg_seq=body[1], - msg_time=stime - )] - ) + body[3] & 0xFFFFFFFF, + [DelMsgInfo(from_uin=_uin, msg_seq=body[1], msg_time=stime)], + ), ) return PushMsgCommand( - packet.uin, - packet.seq, - packet.ret_code, - packet.command_name + packet.uin, packet.seq, packet.ret_code, packet.command_name ) diff --git a/cai/client/status_service/__init__.py b/cai/client/status_service/__init__.py index 40889b9b..b2768079 100644 --- a/cai/client/status_service/__init__.py +++ b/cai/client/status_service/__init__.py @@ -296,7 +296,7 @@ def encode_set_status( async def handle_register_response( - client: "Client", packet: IncomingPacket, _device + client: "Client", packet: IncomingPacket ) -> SvcRegisterResponse: response = SvcRegisterResponse.decode_response( packet.uin, @@ -378,7 +378,7 @@ def encode_force_offline_response( async def handle_request_offline( - client: "Client", packet: IncomingPacket, device: Tuple[DeviceInfo, ApkInfo] + client: "Client", packet: IncomingPacket ) -> MSFForceOfflineCommand: request = MSFForceOfflineCommand.decode_response( packet.uin, @@ -404,8 +404,8 @@ async def handle_request_offline( client._siginfo.d2key, request.request.uin, request.request.seq_no, - device[1].sub_app_id, - device[0], + client.apk_info.sub_app_id, + client.device, ) await client.send(seq, "StatSvc.RspMSFForceOffline", resp_packet) client._status = OnlineStatus.Offline diff --git a/cai/client/wtlogin/__init__.py b/cai/client/wtlogin/__init__.py index e7d87742..65783cc9 100644 --- a/cai/client/wtlogin/__init__.py +++ b/cai/client/wtlogin/__init__.py @@ -768,17 +768,15 @@ def encode_exchange_emp_15( async def handle_oicq_response( - client: "Client", packet: IncomingPacket, dev: Tuple[DeviceInfo, ApkInfo] + client: "Client", packet: IncomingPacket ) -> OICQResponse: - device, apk_info = dev - response = OICQResponse.decode_response( packet.uin, packet.seq, packet.ret_code, packet.command_name, packet.data, - device.tgtgt, + client.device.tgtgt, ) if not isinstance(response, UnknownLoginStatus): return response @@ -792,7 +790,7 @@ async def handle_oicq_response( ).encode() client._t402 = response.t402 client._siginfo.g = md5( - device.guid + client._siginfo.dpwd + client._t402 + client.device.guid + client._siginfo.dpwd + client._t402 ).digest() if isinstance(response, LoginSuccess): @@ -849,7 +847,7 @@ async def handle_oicq_response( client._password_md5 + bytes(4) + struct.pack(">I", client._uin) ).digest() decrypted = qqtea_decrypt(response.encrypted_a1, key) - device.tgtgt = decrypted[51:67] + client.device.tgtgt = decrypted[51:67] elif isinstance(response, NeedCaptcha): client._t104 = response.t104 or client._t104 elif isinstance(response, DeviceLocked): From 4220e75503f67dd1e80499796c60f8aabfafe4b6 Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Fri, 8 Apr 2022 13:57:56 +0800 Subject: [PATCH 070/113] :arrow_up: upgrade protobuf gen --- cai/client/highway/decoders.py | 36 +- cai/client/highway/encoders.py | 70 +- cai/client/online_push/__init__.py | 6 +- cai/client/wtlogin/tlv.py | 4 +- cai/connection/__init__.py | 5 +- cai/pb/highway/long_msg/long_msg_pb2.py | 52 +- cai/pb/highway/multi_msg/multi_msg_pb2.py | 46 +- cai/pb/highway/protocol/highway_head_pb2.py | 106 +- cai/pb/im/cs/__init__.py | 16 + cai/pb/im/cs/cmd0x388/__init__.py | 1 + cai/pb/im/cs/cmd0x388/cmd0x388.proto | 255 + cai/pb/im/cs/cmd0x388/cmd0x388_pb2.py | 224 + cai/pb/im/cs/cmd0x388/cmd0x388_pb2.pyi | 802 +++ cai/pb/im/msg/common/common_pb2.py | 258 +- cai/pb/im/msg/common/common_pb2.pyi | 105 +- cai/pb/im/msg/msg/msg_pb2.py | 510 +- cai/pb/im/msg/msg/msg_pb2.pyi | 170 +- cai/pb/im/msg/msg_body/msg_body_pb2.py | 5696 +---------------- cai/pb/im/msg/msg_body/msg_body_pb2.pyi | 2641 ++++---- cai/pb/im/msg/msg_head/msg_head_pb2.py | 1091 +--- cai/pb/im/msg/msg_head/msg_head_pb2.pyi | 480 +- cai/pb/im/msg/obj_msg/obj_msg_pb2.py | 275 +- cai/pb/im/msg/obj_msg/obj_msg_pb2.pyi | 111 +- cai/pb/im/msg/receipt/receipt_pb2.py | 197 +- cai/pb/im/msg/receipt/receipt_pb2.pyi | 64 +- .../im/msg/service/comm_elem/comm_elem_pb2.py | 2105 +----- .../msg/service/comm_elem/comm_elem_pb2.pyi | 925 ++- cai/pb/im/oidb/cmd0x388/__init__.py | 0 cai/pb/im/oidb/cmd0x388/cmd0x388.proto | 255 - cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.py | 225 - cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.pyi | 799 --- cai/pb/im/oidb/cmd0x769/cmd0x769.proto | 2 +- cai/pb/im/oidb/cmd0x769/cmd0x769_pb2.py | 877 +-- cai/pb/im/oidb/cmd0x769/cmd0x769_pb2.pyi | 334 +- cai/pb/im/oidb/cmd0xd50/cmd0xd50_pb2.py | 553 +- cai/pb/im/oidb/cmd0xd50/cmd0xd50_pb2.pyi | 274 +- cai/pb/im/oidb/group0x857/group0x857_pb2.py | 52 +- cai/pb/msf/msg/comm/comm_pb2.py | 1071 +--- cai/pb/msf/msg/comm/comm_pb2.pyi | 461 +- cai/pb/msf/msg/ctrl/ctrl_pb2.py | 143 +- cai/pb/msf/msg/ctrl/ctrl_pb2.pyi | 58 +- cai/pb/msf/msg/onlinepush/onlinepush_pb2.py | 87 +- cai/pb/msf/msg/onlinepush/onlinepush_pb2.pyi | 32 +- cai/pb/msf/msg/svc/svc_pb2.py | 5401 +--------------- cai/pb/msf/msg/svc/svc_pb2.pyi | 2130 +++--- cai/pb/wtlogin/data_pb2.py | 184 +- cai/pb/wtlogin/data_pb2.pyi | 82 +- 47 files changed, 6050 insertions(+), 23221 deletions(-) create mode 100644 cai/pb/im/cs/__init__.py create mode 100644 cai/pb/im/cs/cmd0x388/__init__.py create mode 100644 cai/pb/im/cs/cmd0x388/cmd0x388.proto create mode 100644 cai/pb/im/cs/cmd0x388/cmd0x388_pb2.py create mode 100644 cai/pb/im/cs/cmd0x388/cmd0x388_pb2.pyi delete mode 100644 cai/pb/im/oidb/cmd0x388/__init__.py delete mode 100644 cai/pb/im/oidb/cmd0x388/cmd0x388.proto delete mode 100644 cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.py delete mode 100644 cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.pyi diff --git a/cai/client/highway/decoders.py b/cai/client/highway/decoders.py index da5e6734..0fd6ee01 100644 --- a/cai/client/highway/decoders.py +++ b/cai/client/highway/decoders.py @@ -1,52 +1,52 @@ -from cai.pb.im.oidb.cmd0x388.cmd0x388_pb2 import D388RspBody +from cai.pb.im.cs.cmd0x388 import RspBody from .utils import itoa from .models import UploadResponse, ImageUploadResponse def decode_upload_image_resp(data: bytes) -> ImageUploadResponse: - pkg = decode_d388_rsp(data).tryupImgRsp[0] + pkg = decode_d388_rsp(data).tryup_img_rsp[0] if pkg.result != 0: return ImageUploadResponse( - resultCode=pkg.result, message=pkg.failMsg.decode() + resultCode=pkg.result, message=pkg.fail_msg.decode() ) - if pkg.fileExit: - if pkg.imgInfo: - info = pkg.imgInfo + if pkg.file_exit: + if pkg.img_info: + info = pkg.img_info # fuck: pkg.fileId != pkg.fileid return ImageUploadResponse( isExists=True, fileId=pkg.fileid, hasMetaData=True, - fileType=info.fileType, - width=info.fileWidth, - height=info.fileHeight, + fileType=info.file_type, + width=info.file_width, + height=info.file_height, ) else: return ImageUploadResponse(isExists=True, fileId=pkg.fileid) return ImageUploadResponse( isExists=False, - uploadAddr=[(itoa(a), p) for a, p in zip(pkg.upIp, pkg.upPort)], - uploadKey=pkg.upUkey, + uploadAddr=[(itoa(a), p) for a, p in zip(pkg.up_ip, pkg.up_port)], + uploadKey=pkg.up_ukey, ) def decode_upload_ptt_resp(data: bytes) -> UploadResponse: - pkg = decode_d388_rsp(data).tryupPttRsp[0] + pkg = decode_d388_rsp(data).tryup_ptt_rsp[0] if pkg.result != 0: return UploadResponse( - resultCode=pkg.result, message=pkg.failMsg.decode() + resultCode=pkg.result, message=pkg.fail_msg.decode() ) - if pkg.fileExit: + if pkg.file_exit: return UploadResponse(isExists=True, fileId=pkg.fileid) return UploadResponse( isExists=False, - uploadAddr=[(itoa(a), p) for a, p in zip(pkg.upIp, pkg.upPort)], - uploadKey=pkg.upUkey, + uploadAddr=[(itoa(a), p) for a, p in zip(pkg.up_ip, pkg.up_port)], + uploadKey=pkg.up_ukey, ) -def decode_d388_rsp(data: bytes) -> D388RspBody: - return D388RspBody.FromString(data) +def decode_d388_rsp(data: bytes) -> RspBody: + return RspBody.FromString(data) diff --git a/cai/client/highway/encoders.py b/cai/client/highway/encoders.py index d96c5859..30425329 100644 --- a/cai/client/highway/encoders.py +++ b/cai/client/highway/encoders.py @@ -1,57 +1,53 @@ -from cai.pb.im.oidb.cmd0x388.cmd0x388_pb2 import ( - D388ReqBody, - TryUpImgReq, - TryUpPttReq, -) +from cai.pb.im.cs.cmd0x388 import ReqBody, TryUpImgReq, TryUpPttReq def encode_d388_req( group_code: int, uin: int, md5: bytes, size: int, subcmd: int -) -> D388ReqBody: +) -> ReqBody: img, ptt = None, None if subcmd == 1: # upload img fn = md5.hex().upper() + ".jpg" img = [ TryUpImgReq( - groupCode=group_code, - srcUin=uin, - fileName=fn.encode(), - fileMd5=md5, - fileSize=size, - fileId=0, - srcTerm=5, - platformType=9, - buType=1, - picType=1003, - picWidth=1920, - picHeight=903, - buildVer=b"8.8.50.2324", - appPicType=1052, - originalPic=1, - srvUpload=0, + group_code=group_code, + src_uin=uin, + file_name=fn.encode(), + file_md5=md5, + file_size=size, + file_id=0, + src_term=5, + platform_type=9, + bu_type=1, + pic_type=1003, + pic_width=1920, + pic_height=903, + build_ver=b"8.8.50.2324", + app_pic_type=1052, + original_pic=1, + srv_upload=0, ) ] elif subcmd == 3: # voice ptt = [ TryUpPttReq( - groupCode=group_code, - srcUin=uin, - fileMd5=md5, - fileName=(md5.hex().upper() + ".amr").encode(), - fileSize=size, - voiceLength=size, - voiceType=1, + group_code=group_code, + src_uin=uin, + file_md5=md5, + file_name=(md5.hex().upper() + ".amr").encode(), + file_size=size, + voice_length=size, + voice_type=1, codec=0, - srcTerm=5, - platformType=9, - buType=4, - innerIp=0, - buildVer=b"8.8.50.2324", - newUpChan=True, + src_term=5, + platform_type=9, + bu_type=4, + inner_ip=0, + build_ver=b"8.8.50.2324", + new_up_chan=True, ) ] else: ValueError("unsupported subcmd:", subcmd) - return D388ReqBody( - netType=8, subcmd=subcmd, tryupImgReq=img, tryupPttReq=ptt + return ReqBody( + net_type=8, subcmd=subcmd, tryup_img_req=img, tryup_ptt_req=ptt ) diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index bec45a51..785f700a 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -10,18 +10,16 @@ """ from typing import TYPE_CHECKING, List, Tuple, Optional, Sequence -from jce import JceStruct, JceDecoder, JceEncoder, types +from jce import JceStruct, JceDecoder, types from cai.log import logger +from cai.client import events from cai.utils.binary import Packet from cai.client.message_service import MESSAGE_DECODERS from cai.client.packet import UniPacket, IncomingPacket -from cai.settings.device import DeviceInfo as _DeviceInfo_t from cai.utils.jce import RequestPacket, RequestPacketVersion3 from cai.pb.im.oidb.group0x857.group0x857_pb2 import TemplParam, NotifyMsgBody -from .. import events -from ...settings.protocol import ApkInfo from .jce import DelMsgInfo, DeviceInfo, SvcRespPushMsg from .command import PushMsg, PushMsgError, PushMsgCommand diff --git a/cai/client/wtlogin/tlv.py b/cai/client/wtlogin/tlv.py index 4cbab73e..a6ec6070 100644 --- a/cai/client/wtlogin/tlv.py +++ b/cai/client/wtlogin/tlv.py @@ -12,7 +12,7 @@ import random import struct from hashlib import md5 -from typing import Any, Dict, List, Union +from typing import Any, Dict, List, Union, Optional from rtea import qqtea_decrypt, qqtea_encrypt @@ -605,7 +605,7 @@ class TlvDecoder: def decode( cls, data: Union[bytes, bytearray], - tgtgt: bytes = None, + tgtgt: Optional[bytes] = None, offset: int = 0, tag_size: int = 2, ) -> Dict[int, Any]: diff --git a/cai/connection/__init__.py b/cai/connection/__init__.py index 51fd42ab..750a9499 100644 --- a/cai/connection/__init__.py +++ b/cai/connection/__init__.py @@ -62,9 +62,8 @@ def closed(self) -> bool: # return self._writer is None return self._closed.is_set() - @property async def wait_closed(self): - return self._closed.wait + await self._closed.wait() async def __aenter__(self): await self._connect() @@ -96,12 +95,12 @@ async def _connect(self): self._closed.clear() async def close(self): - self._closed.set() if self._writer: self._writer.close() await self._writer.wait_closed() self._writer = None self._reader = None + self._closed.set() async def reconnect(self) -> None: await self.close() diff --git a/cai/pb/highway/long_msg/long_msg_pb2.py b/cai/pb/highway/long_msg/long_msg_pb2.py index aac6da9d..dbff969d 100644 --- a/cai/pb/highway/long_msg/long_msg_pb2.py +++ b/cai/pb/highway/long_msg/long_msg_pb2.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! -# source: long_msg.proto +# source: cai/pb/highway/long_msg/long_msg.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0elong_msg.proto\"5\n\x10LongMsgDeleteReq\x12\x10\n\x08msgResid\x18\x01 \x01(\x0c\x12\x0f\n\x07msgType\x18\x02 \x01(\x05\"4\n\x10LongMsgDeleteRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x10\n\x08msgResid\x18\x02 \x01(\x0c\"V\n\x0eLongMsgDownReq\x12\x0e\n\x06srcUin\x18\x01 \x01(\x05\x12\x10\n\x08msgResid\x18\x02 \x01(\x0c\x12\x0f\n\x07msgType\x18\x03 \x01(\x05\x12\x11\n\tneedCache\x18\x04 \x01(\x05\"F\n\x0eLongMsgDownRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x10\n\x08msgResid\x18\x02 \x01(\x0c\x12\x12\n\nmsgContent\x18\x03 \x01(\x0c\"\x89\x01\n\x0cLongMsgUpReq\x12\x0f\n\x07msgType\x18\x01 \x01(\x05\x12\x0e\n\x06\x64stUin\x18\x02 \x01(\x03\x12\r\n\x05msgId\x18\x03 \x01(\x05\x12\x12\n\nmsgContent\x18\x04 \x01(\x0c\x12\x11\n\tstoreType\x18\x05 \x01(\x05\x12\x0f\n\x07msgUkey\x18\x06 \x01(\x0c\x12\x11\n\tneedCache\x18\x07 \x01(\x05\"?\n\x0cLongMsgUpRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\r\n\x05msgId\x18\x02 \x01(\x05\x12\x10\n\x08msgResid\x18\x03 \x01(\x0c\"\xc4\x01\n\x0bLongReqBody\x12\x0e\n\x06subcmd\x18\x01 \x01(\x05\x12\x10\n\x08termType\x18\x02 \x01(\x05\x12\x14\n\x0cplatformType\x18\x03 \x01(\x05\x12\x1f\n\x08msgUpReq\x18\x04 \x03(\x0b\x32\r.LongMsgUpReq\x12#\n\nmsgDownReq\x18\x05 \x03(\x0b\x32\x0f.LongMsgDownReq\x12$\n\tmsgDelReq\x18\x06 \x03(\x0b\x32\x11.LongMsgDeleteReq\x12\x11\n\tagentType\x18\n \x01(\x05\"\x89\x01\n\x0bLongRspBody\x12\x0e\n\x06subcmd\x18\x01 \x01(\x05\x12\x1f\n\x08msgUpRsp\x18\x02 \x03(\x0b\x32\r.LongMsgUpRsp\x12#\n\nmsgDownRsp\x18\x03 \x03(\x0b\x32\x0f.LongMsgDownRsp\x12$\n\tmsgDelRsp\x18\x04 \x03(\x0b\x32\x11.LongMsgDeleteRspB,Z*github.com/Mrs4s/MiraiGo/client/pb/longmsgb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&cai/pb/highway/long_msg/long_msg.proto\"5\n\x10LongMsgDeleteReq\x12\x10\n\x08msgResid\x18\x01 \x01(\x0c\x12\x0f\n\x07msgType\x18\x02 \x01(\x05\"4\n\x10LongMsgDeleteRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x10\n\x08msgResid\x18\x02 \x01(\x0c\"V\n\x0eLongMsgDownReq\x12\x0e\n\x06srcUin\x18\x01 \x01(\x05\x12\x10\n\x08msgResid\x18\x02 \x01(\x0c\x12\x0f\n\x07msgType\x18\x03 \x01(\x05\x12\x11\n\tneedCache\x18\x04 \x01(\x05\"F\n\x0eLongMsgDownRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x10\n\x08msgResid\x18\x02 \x01(\x0c\x12\x12\n\nmsgContent\x18\x03 \x01(\x0c\"\x89\x01\n\x0cLongMsgUpReq\x12\x0f\n\x07msgType\x18\x01 \x01(\x05\x12\x0e\n\x06\x64stUin\x18\x02 \x01(\x03\x12\r\n\x05msgId\x18\x03 \x01(\x05\x12\x12\n\nmsgContent\x18\x04 \x01(\x0c\x12\x11\n\tstoreType\x18\x05 \x01(\x05\x12\x0f\n\x07msgUkey\x18\x06 \x01(\x0c\x12\x11\n\tneedCache\x18\x07 \x01(\x05\"?\n\x0cLongMsgUpRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\r\n\x05msgId\x18\x02 \x01(\x05\x12\x10\n\x08msgResid\x18\x03 \x01(\x0c\"\xc4\x01\n\x0bLongReqBody\x12\x0e\n\x06subcmd\x18\x01 \x01(\x05\x12\x10\n\x08termType\x18\x02 \x01(\x05\x12\x14\n\x0cplatformType\x18\x03 \x01(\x05\x12\x1f\n\x08msgUpReq\x18\x04 \x03(\x0b\x32\r.LongMsgUpReq\x12#\n\nmsgDownReq\x18\x05 \x03(\x0b\x32\x0f.LongMsgDownReq\x12$\n\tmsgDelReq\x18\x06 \x03(\x0b\x32\x11.LongMsgDeleteReq\x12\x11\n\tagentType\x18\n \x01(\x05\"\x89\x01\n\x0bLongRspBody\x12\x0e\n\x06subcmd\x18\x01 \x01(\x05\x12\x1f\n\x08msgUpRsp\x18\x02 \x03(\x0b\x32\r.LongMsgUpRsp\x12#\n\nmsgDownRsp\x18\x03 \x03(\x0b\x32\x0f.LongMsgDownRsp\x12$\n\tmsgDelRsp\x18\x04 \x03(\x0b\x32\x11.LongMsgDeleteRspB,Z*github.com/Mrs4s/MiraiGo/client/pb/longmsgb\x06proto3') @@ -28,56 +28,56 @@ _LONGRSPBODY = DESCRIPTOR.message_types_by_name['LongRspBody'] LongMsgDeleteReq = _reflection.GeneratedProtocolMessageType('LongMsgDeleteReq', (_message.Message,), { 'DESCRIPTOR' : _LONGMSGDELETEREQ, - '__module__' : 'long_msg_pb2' + '__module__' : 'cai.pb.highway.long_msg.long_msg_pb2' # @@protoc_insertion_point(class_scope:LongMsgDeleteReq) }) _sym_db.RegisterMessage(LongMsgDeleteReq) LongMsgDeleteRsp = _reflection.GeneratedProtocolMessageType('LongMsgDeleteRsp', (_message.Message,), { 'DESCRIPTOR' : _LONGMSGDELETERSP, - '__module__' : 'long_msg_pb2' + '__module__' : 'cai.pb.highway.long_msg.long_msg_pb2' # @@protoc_insertion_point(class_scope:LongMsgDeleteRsp) }) _sym_db.RegisterMessage(LongMsgDeleteRsp) LongMsgDownReq = _reflection.GeneratedProtocolMessageType('LongMsgDownReq', (_message.Message,), { 'DESCRIPTOR' : _LONGMSGDOWNREQ, - '__module__' : 'long_msg_pb2' + '__module__' : 'cai.pb.highway.long_msg.long_msg_pb2' # @@protoc_insertion_point(class_scope:LongMsgDownReq) }) _sym_db.RegisterMessage(LongMsgDownReq) LongMsgDownRsp = _reflection.GeneratedProtocolMessageType('LongMsgDownRsp', (_message.Message,), { 'DESCRIPTOR' : _LONGMSGDOWNRSP, - '__module__' : 'long_msg_pb2' + '__module__' : 'cai.pb.highway.long_msg.long_msg_pb2' # @@protoc_insertion_point(class_scope:LongMsgDownRsp) }) _sym_db.RegisterMessage(LongMsgDownRsp) LongMsgUpReq = _reflection.GeneratedProtocolMessageType('LongMsgUpReq', (_message.Message,), { 'DESCRIPTOR' : _LONGMSGUPREQ, - '__module__' : 'long_msg_pb2' + '__module__' : 'cai.pb.highway.long_msg.long_msg_pb2' # @@protoc_insertion_point(class_scope:LongMsgUpReq) }) _sym_db.RegisterMessage(LongMsgUpReq) LongMsgUpRsp = _reflection.GeneratedProtocolMessageType('LongMsgUpRsp', (_message.Message,), { 'DESCRIPTOR' : _LONGMSGUPRSP, - '__module__' : 'long_msg_pb2' + '__module__' : 'cai.pb.highway.long_msg.long_msg_pb2' # @@protoc_insertion_point(class_scope:LongMsgUpRsp) }) _sym_db.RegisterMessage(LongMsgUpRsp) LongReqBody = _reflection.GeneratedProtocolMessageType('LongReqBody', (_message.Message,), { 'DESCRIPTOR' : _LONGREQBODY, - '__module__' : 'long_msg_pb2' + '__module__' : 'cai.pb.highway.long_msg.long_msg_pb2' # @@protoc_insertion_point(class_scope:LongReqBody) }) _sym_db.RegisterMessage(LongReqBody) LongRspBody = _reflection.GeneratedProtocolMessageType('LongRspBody', (_message.Message,), { 'DESCRIPTOR' : _LONGRSPBODY, - '__module__' : 'long_msg_pb2' + '__module__' : 'cai.pb.highway.long_msg.long_msg_pb2' # @@protoc_insertion_point(class_scope:LongRspBody) }) _sym_db.RegisterMessage(LongRspBody) @@ -86,20 +86,20 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'Z*github.com/Mrs4s/MiraiGo/client/pb/longmsg' - _LONGMSGDELETEREQ._serialized_start=18 - _LONGMSGDELETEREQ._serialized_end=71 - _LONGMSGDELETERSP._serialized_start=73 - _LONGMSGDELETERSP._serialized_end=125 - _LONGMSGDOWNREQ._serialized_start=127 - _LONGMSGDOWNREQ._serialized_end=213 - _LONGMSGDOWNRSP._serialized_start=215 - _LONGMSGDOWNRSP._serialized_end=285 - _LONGMSGUPREQ._serialized_start=288 - _LONGMSGUPREQ._serialized_end=425 - _LONGMSGUPRSP._serialized_start=427 - _LONGMSGUPRSP._serialized_end=490 - _LONGREQBODY._serialized_start=493 - _LONGREQBODY._serialized_end=689 - _LONGRSPBODY._serialized_start=692 - _LONGRSPBODY._serialized_end=829 + _LONGMSGDELETEREQ._serialized_start=42 + _LONGMSGDELETEREQ._serialized_end=95 + _LONGMSGDELETERSP._serialized_start=97 + _LONGMSGDELETERSP._serialized_end=149 + _LONGMSGDOWNREQ._serialized_start=151 + _LONGMSGDOWNREQ._serialized_end=237 + _LONGMSGDOWNRSP._serialized_start=239 + _LONGMSGDOWNRSP._serialized_end=309 + _LONGMSGUPREQ._serialized_start=312 + _LONGMSGUPREQ._serialized_end=449 + _LONGMSGUPRSP._serialized_start=451 + _LONGMSGUPRSP._serialized_end=514 + _LONGREQBODY._serialized_start=517 + _LONGREQBODY._serialized_end=713 + _LONGRSPBODY._serialized_start=716 + _LONGRSPBODY._serialized_end=853 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/highway/multi_msg/multi_msg_pb2.py b/cai/pb/highway/multi_msg/multi_msg_pb2.py index 73455d32..a5d6dba2 100644 --- a/cai/pb/highway/multi_msg/multi_msg_pb2.py +++ b/cai/pb/highway/multi_msg/multi_msg_pb2.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! -# source: multi_msg.proto +# source: cai/pb/highway/multi_msg/multi_msg.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0fmulti_msg.proto\" \n\tExternMsg\x12\x13\n\x0b\x63hannelType\x18\x01 \x01(\x05\"I\n\x14MultiMsgApplyDownReq\x12\x10\n\x08msgResid\x18\x01 \x01(\x0c\x12\x0f\n\x07msgType\x18\x02 \x01(\x05\x12\x0e\n\x06srcUin\x18\x03 \x01(\x03\"\xe1\x01\n\x14MultiMsgApplyDownRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x15\n\rthumbDownPara\x18\x02 \x01(\x0c\x12\x0e\n\x06msgKey\x18\x03 \x01(\x0c\x12\x14\n\x0cuint32DownIp\x18\x04 \x03(\x05\x12\x16\n\x0euint32DownPort\x18\x05 \x03(\x05\x12\x10\n\x08msgResid\x18\x06 \x01(\x0c\x12!\n\rmsgExternInfo\x18\x07 \x01(\x0b\x32\n.ExternMsg\x12\x15\n\rbytesDownIpV6\x18\x08 \x03(\x0c\x12\x18\n\x10uint32DownV6Port\x18\t \x03(\x05\"g\n\x12MultiMsgApplyUpReq\x12\x0e\n\x06\x64stUin\x18\x01 \x01(\x03\x12\x0f\n\x07msgSize\x18\x02 \x01(\x03\x12\x0e\n\x06msgMd5\x18\x03 \x01(\x0c\x12\x0f\n\x07msgType\x18\x04 \x01(\x05\x12\x0f\n\x07\x61pplyId\x18\x05 \x01(\x05\"\x97\x02\n\x12MultiMsgApplyUpRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x10\n\x08msgResid\x18\x02 \x01(\t\x12\x0f\n\x07msgUkey\x18\x03 \x01(\x0c\x12\x12\n\nuint32UpIp\x18\x04 \x03(\x05\x12\x14\n\x0cuint32UpPort\x18\x05 \x03(\x05\x12\x11\n\tblockSize\x18\x06 \x01(\x03\x12\x10\n\x08upOffset\x18\x07 \x01(\x03\x12\x0f\n\x07\x61pplyId\x18\x08 \x01(\x05\x12\x0e\n\x06msgKey\x18\t \x01(\x0c\x12\x0e\n\x06msgSig\x18\n \x01(\x0c\x12!\n\rmsgExternInfo\x18\x0b \x01(\x0b\x32\n.ExternMsg\x12\x13\n\x0b\x62ytesUpIpV6\x18\x0c \x03(\x0c\x12\x16\n\x0euint32UpV6Port\x18\r \x03(\x05\"\xf7\x01\n\x0cMultiReqBody\x12\x0e\n\x06subcmd\x18\x01 \x01(\x05\x12\x10\n\x08termType\x18\x02 \x01(\x05\x12\x14\n\x0cplatformType\x18\x03 \x01(\x05\x12\x0f\n\x07netType\x18\x04 \x01(\x05\x12\x10\n\x08\x62uildVer\x18\x05 \x01(\t\x12/\n\x12multimsgApplyupReq\x18\x06 \x03(\x0b\x32\x13.MultiMsgApplyUpReq\x12\x33\n\x14multimsgApplydownReq\x18\x07 \x03(\x0b\x32\x15.MultiMsgApplyDownReq\x12\x0e\n\x06\x62uType\x18\x08 \x01(\x05\x12\x16\n\x0ereqChannelType\x18\t \x01(\x05\"\x84\x01\n\x0cMultiRspBody\x12\x0e\n\x06subcmd\x18\x01 \x01(\x05\x12/\n\x12multimsgApplyupRsp\x18\x02 \x03(\x0b\x32\x13.MultiMsgApplyUpRsp\x12\x33\n\x14multimsgApplydownRsp\x18\x03 \x03(\x0b\x32\x15.MultiMsgApplyDownRspB.Z,github.com/Mrs4s/MiraiGo/client/pb/multi_msgb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(cai/pb/highway/multi_msg/multi_msg.proto\" \n\tExternMsg\x12\x13\n\x0b\x63hannelType\x18\x01 \x01(\x05\"I\n\x14MultiMsgApplyDownReq\x12\x10\n\x08msgResid\x18\x01 \x01(\x0c\x12\x0f\n\x07msgType\x18\x02 \x01(\x05\x12\x0e\n\x06srcUin\x18\x03 \x01(\x03\"\xe1\x01\n\x14MultiMsgApplyDownRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x15\n\rthumbDownPara\x18\x02 \x01(\x0c\x12\x0e\n\x06msgKey\x18\x03 \x01(\x0c\x12\x14\n\x0cuint32DownIp\x18\x04 \x03(\x05\x12\x16\n\x0euint32DownPort\x18\x05 \x03(\x05\x12\x10\n\x08msgResid\x18\x06 \x01(\x0c\x12!\n\rmsgExternInfo\x18\x07 \x01(\x0b\x32\n.ExternMsg\x12\x15\n\rbytesDownIpV6\x18\x08 \x03(\x0c\x12\x18\n\x10uint32DownV6Port\x18\t \x03(\x05\"g\n\x12MultiMsgApplyUpReq\x12\x0e\n\x06\x64stUin\x18\x01 \x01(\x03\x12\x0f\n\x07msgSize\x18\x02 \x01(\x03\x12\x0e\n\x06msgMd5\x18\x03 \x01(\x0c\x12\x0f\n\x07msgType\x18\x04 \x01(\x05\x12\x0f\n\x07\x61pplyId\x18\x05 \x01(\x05\"\x97\x02\n\x12MultiMsgApplyUpRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x10\n\x08msgResid\x18\x02 \x01(\t\x12\x0f\n\x07msgUkey\x18\x03 \x01(\x0c\x12\x12\n\nuint32UpIp\x18\x04 \x03(\x05\x12\x14\n\x0cuint32UpPort\x18\x05 \x03(\x05\x12\x11\n\tblockSize\x18\x06 \x01(\x03\x12\x10\n\x08upOffset\x18\x07 \x01(\x03\x12\x0f\n\x07\x61pplyId\x18\x08 \x01(\x05\x12\x0e\n\x06msgKey\x18\t \x01(\x0c\x12\x0e\n\x06msgSig\x18\n \x01(\x0c\x12!\n\rmsgExternInfo\x18\x0b \x01(\x0b\x32\n.ExternMsg\x12\x13\n\x0b\x62ytesUpIpV6\x18\x0c \x03(\x0c\x12\x16\n\x0euint32UpV6Port\x18\r \x03(\x05\"\xf7\x01\n\x0cMultiReqBody\x12\x0e\n\x06subcmd\x18\x01 \x01(\x05\x12\x10\n\x08termType\x18\x02 \x01(\x05\x12\x14\n\x0cplatformType\x18\x03 \x01(\x05\x12\x0f\n\x07netType\x18\x04 \x01(\x05\x12\x10\n\x08\x62uildVer\x18\x05 \x01(\t\x12/\n\x12multimsgApplyupReq\x18\x06 \x03(\x0b\x32\x13.MultiMsgApplyUpReq\x12\x33\n\x14multimsgApplydownReq\x18\x07 \x03(\x0b\x32\x15.MultiMsgApplyDownReq\x12\x0e\n\x06\x62uType\x18\x08 \x01(\x05\x12\x16\n\x0ereqChannelType\x18\t \x01(\x05\"\x84\x01\n\x0cMultiRspBody\x12\x0e\n\x06subcmd\x18\x01 \x01(\x05\x12/\n\x12multimsgApplyupRsp\x18\x02 \x03(\x0b\x32\x13.MultiMsgApplyUpRsp\x12\x33\n\x14multimsgApplydownRsp\x18\x03 \x03(\x0b\x32\x15.MultiMsgApplyDownRspB.Z,github.com/Mrs4s/MiraiGo/client/pb/multi_msgb\x06proto3') @@ -27,49 +27,49 @@ _MULTIRSPBODY = DESCRIPTOR.message_types_by_name['MultiRspBody'] ExternMsg = _reflection.GeneratedProtocolMessageType('ExternMsg', (_message.Message,), { 'DESCRIPTOR' : _EXTERNMSG, - '__module__' : 'multi_msg_pb2' + '__module__' : 'cai.pb.highway.multi_msg.multi_msg_pb2' # @@protoc_insertion_point(class_scope:ExternMsg) }) _sym_db.RegisterMessage(ExternMsg) MultiMsgApplyDownReq = _reflection.GeneratedProtocolMessageType('MultiMsgApplyDownReq', (_message.Message,), { 'DESCRIPTOR' : _MULTIMSGAPPLYDOWNREQ, - '__module__' : 'multi_msg_pb2' + '__module__' : 'cai.pb.highway.multi_msg.multi_msg_pb2' # @@protoc_insertion_point(class_scope:MultiMsgApplyDownReq) }) _sym_db.RegisterMessage(MultiMsgApplyDownReq) MultiMsgApplyDownRsp = _reflection.GeneratedProtocolMessageType('MultiMsgApplyDownRsp', (_message.Message,), { 'DESCRIPTOR' : _MULTIMSGAPPLYDOWNRSP, - '__module__' : 'multi_msg_pb2' + '__module__' : 'cai.pb.highway.multi_msg.multi_msg_pb2' # @@protoc_insertion_point(class_scope:MultiMsgApplyDownRsp) }) _sym_db.RegisterMessage(MultiMsgApplyDownRsp) MultiMsgApplyUpReq = _reflection.GeneratedProtocolMessageType('MultiMsgApplyUpReq', (_message.Message,), { 'DESCRIPTOR' : _MULTIMSGAPPLYUPREQ, - '__module__' : 'multi_msg_pb2' + '__module__' : 'cai.pb.highway.multi_msg.multi_msg_pb2' # @@protoc_insertion_point(class_scope:MultiMsgApplyUpReq) }) _sym_db.RegisterMessage(MultiMsgApplyUpReq) MultiMsgApplyUpRsp = _reflection.GeneratedProtocolMessageType('MultiMsgApplyUpRsp', (_message.Message,), { 'DESCRIPTOR' : _MULTIMSGAPPLYUPRSP, - '__module__' : 'multi_msg_pb2' + '__module__' : 'cai.pb.highway.multi_msg.multi_msg_pb2' # @@protoc_insertion_point(class_scope:MultiMsgApplyUpRsp) }) _sym_db.RegisterMessage(MultiMsgApplyUpRsp) MultiReqBody = _reflection.GeneratedProtocolMessageType('MultiReqBody', (_message.Message,), { 'DESCRIPTOR' : _MULTIREQBODY, - '__module__' : 'multi_msg_pb2' + '__module__' : 'cai.pb.highway.multi_msg.multi_msg_pb2' # @@protoc_insertion_point(class_scope:MultiReqBody) }) _sym_db.RegisterMessage(MultiReqBody) MultiRspBody = _reflection.GeneratedProtocolMessageType('MultiRspBody', (_message.Message,), { 'DESCRIPTOR' : _MULTIRSPBODY, - '__module__' : 'multi_msg_pb2' + '__module__' : 'cai.pb.highway.multi_msg.multi_msg_pb2' # @@protoc_insertion_point(class_scope:MultiRspBody) }) _sym_db.RegisterMessage(MultiRspBody) @@ -78,18 +78,18 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'Z,github.com/Mrs4s/MiraiGo/client/pb/multi_msg' - _EXTERNMSG._serialized_start=19 - _EXTERNMSG._serialized_end=51 - _MULTIMSGAPPLYDOWNREQ._serialized_start=53 - _MULTIMSGAPPLYDOWNREQ._serialized_end=126 - _MULTIMSGAPPLYDOWNRSP._serialized_start=129 - _MULTIMSGAPPLYDOWNRSP._serialized_end=354 - _MULTIMSGAPPLYUPREQ._serialized_start=356 - _MULTIMSGAPPLYUPREQ._serialized_end=459 - _MULTIMSGAPPLYUPRSP._serialized_start=462 - _MULTIMSGAPPLYUPRSP._serialized_end=741 - _MULTIREQBODY._serialized_start=744 - _MULTIREQBODY._serialized_end=991 - _MULTIRSPBODY._serialized_start=994 - _MULTIRSPBODY._serialized_end=1126 + _EXTERNMSG._serialized_start=44 + _EXTERNMSG._serialized_end=76 + _MULTIMSGAPPLYDOWNREQ._serialized_start=78 + _MULTIMSGAPPLYDOWNREQ._serialized_end=151 + _MULTIMSGAPPLYDOWNRSP._serialized_start=154 + _MULTIMSGAPPLYDOWNRSP._serialized_end=379 + _MULTIMSGAPPLYUPREQ._serialized_start=381 + _MULTIMSGAPPLYUPREQ._serialized_end=484 + _MULTIMSGAPPLYUPRSP._serialized_start=487 + _MULTIMSGAPPLYUPRSP._serialized_end=766 + _MULTIREQBODY._serialized_start=769 + _MULTIREQBODY._serialized_end=1016 + _MULTIRSPBODY._serialized_start=1019 + _MULTIRSPBODY._serialized_end=1151 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/highway/protocol/highway_head_pb2.py b/cai/pb/highway/protocol/highway_head_pb2.py index ee212b00..b6d3a24d 100644 --- a/cai/pb/highway/protocol/highway_head_pb2.py +++ b/cai/pb/highway/protocol/highway_head_pb2.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! -# source: highway_head.proto +# source: cai/pb/highway/protocol/highway_head.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12highway_head.proto\"\x93\x10\n\x0chighway_head\x1a_\n\x13\x43\x32\x43\x43ommonExtendinfo\x12\x0e\n\x06infoId\x18\x01 \x01(\r\x12\x38\n\x10\x66ilterExtendinfo\x18\x02 \x01(\x0b\x32\x1e.highway_head.FilterExtendinfo\x1a\xc8\x01\n\x0f\x44\x61taHighwayHead\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0b\n\x03uin\x18\x02 \x01(\x0c\x12\x0f\n\x07\x63ommand\x18\x03 \x01(\x0c\x12\x0b\n\x03seq\x18\x04 \x01(\r\x12\x12\n\nretryTimes\x18\x05 \x01(\r\x12\r\n\x05\x61ppid\x18\x06 \x01(\r\x12\x10\n\x08\x64\x61taflag\x18\x07 \x01(\r\x12\x11\n\tcommandId\x18\x08 \x01(\r\x12\x10\n\x08\x62uildVer\x18\t \x01(\x0c\x12\x10\n\x08localeId\x18\n \x01(\r\x12\r\n\x05\x65nvId\x18\x0b \x01(\r\x1a&\n\x08\x44\x61taHole\x12\r\n\x05\x62\x65gin\x18\x01 \x01(\x04\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x04\x1a\x64\n\x10\x46ilterExtendinfo\x12\x12\n\nfilterFlag\x18\x01 \x01(\r\x12<\n\x12imageFilterRequest\x18\x02 \x01(\x0b\x32 .highway_head.ImageFilterRequest\x1a\x31\n\x0b\x46ilterStyle\x12\x0f\n\x07styleId\x18\x01 \x01(\r\x12\x11\n\tstyleName\x18\x02 \x01(\x0c\x1a\xa2\x01\n\x12ImageFilterRequest\x12\x11\n\tsessionId\x18\x01 \x01(\x0c\x12\x10\n\x08\x63lientIp\x18\x02 \x01(\r\x12\x0b\n\x03uin\x18\x03 \x01(\x04\x12(\n\x05style\x18\x04 \x01(\x0b\x32\x19.highway_head.FilterStyle\x12\r\n\x05width\x18\x05 \x01(\r\x12\x0e\n\x06height\x18\x06 \x01(\r\x12\x11\n\timageData\x18\x07 \x01(\x0c\x1aK\n\x13ImageFilterResponse\x12\x0f\n\x07retCode\x18\x01 \x01(\x05\x12\x11\n\timageData\x18\x02 \x01(\x0c\x12\x10\n\x08\x63ostTime\x18\x03 \x01(\r\x1a\x36\n\x0cLoginSigHead\x12\x14\n\x0cloginsigType\x18\x01 \x01(\r\x12\x10\n\x08loginsig\x18\x02 \x01(\x0c\x1a\x33\n\x10NewServiceTicket\x12\x11\n\tsignature\x18\x01 \x01(\x0c\x12\x0c\n\x04ukey\x18\x02 \x01(\x0c\x1a\xfa\x01\n\nPicInfoExt\x12\x10\n\x08picWidth\x18\x01 \x01(\r\x12\x11\n\tpicHeight\x18\x02 \x01(\r\x12\x0f\n\x07picFlag\x18\x03 \x01(\r\x12\x10\n\x08\x62usiType\x18\x04 \x01(\r\x12\x0f\n\x07srcTerm\x18\x05 \x01(\r\x12\x10\n\x08platType\x18\x06 \x01(\r\x12\x0f\n\x07netType\x18\x07 \x01(\r\x12\x0f\n\x07imgType\x18\x08 \x01(\r\x12\x12\n\nappPicType\x18\t \x01(\r\x12\x1b\n\x13\x65\x63hoCreatedByServer\x18\n \x01(\x0c\x12\x15\n\rqqmeetGuildId\x18\x0b \x01(\x04\x12\x17\n\x0fqqmeetChannelId\x18\x0c \x01(\x04\x1aT\n\rPicRspExtInfo\x12\x0c\n\x04skey\x18\x01 \x01(\x0c\x12\x10\n\x08\x63lientIp\x18\x02 \x01(\r\x12\x10\n\x08upOffset\x18\x03 \x01(\x04\x12\x11\n\tblockSize\x18\x04 \x01(\x04\x1aZ\n\x0cQueryHoleRsp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12(\n\x08\x64\x61taHole\x18\x02 \x03(\x0b\x32\x16.highway_head.DataHole\x12\x10\n\x08\x63ompFlag\x18\x03 \x01(\x08\x1a\xc9\x01\n\x12ReqDataHighwayHead\x12/\n\x08\x62\x61sehead\x18\x01 \x01(\x0b\x32\x1d.highway_head.DataHighwayHead\x12&\n\x07seghead\x18\x02 \x01(\x0b\x32\x15.highway_head.SegHead\x12\x15\n\rreqExtendinfo\x18\x03 \x01(\x0c\x12\x11\n\ttimestamp\x18\x04 \x01(\x04\x12\x30\n\x0cloginSigHead\x18\x05 \x01(\x0b\x32\x1a.highway_head.LoginSigHead\x1a;\n\x07RspBody\x12\x30\n\x0cqueryHoleRsp\x18\x01 \x01(\x0b\x32\x1a.highway_head.QueryHoleRsp\x1a\x81\x02\n\x12RspDataHighwayHead\x12/\n\x08\x62\x61sehead\x18\x01 \x01(\x0b\x32\x1d.highway_head.DataHighwayHead\x12&\n\x07seghead\x18\x02 \x01(\x0b\x32\x15.highway_head.SegHead\x12\x11\n\terrorCode\x18\x03 \x01(\r\x12\x12\n\nallowRetry\x18\x04 \x01(\r\x12\x11\n\tcachecost\x18\x05 \x01(\r\x12\x0e\n\x06htcost\x18\x06 \x01(\r\x12\x15\n\rrspExtendinfo\x18\x07 \x01(\x0c\x12\x11\n\ttimestamp\x18\x08 \x01(\x04\x12\r\n\x05range\x18\t \x01(\x04\x12\x0f\n\x07isReset\x18\n \x01(\r\x1a\xfa\x01\n\x07SegHead\x12\x11\n\tserviceid\x18\x01 \x01(\r\x12\x10\n\x08\x66ilesize\x18\x02 \x01(\x04\x12\x12\n\ndataoffset\x18\x03 \x01(\x04\x12\x12\n\ndatalength\x18\x04 \x01(\r\x12\x0e\n\x06rtcode\x18\x05 \x01(\r\x12\x15\n\rserviceticket\x18\x06 \x01(\x0c\x12\x0c\n\x04\x66lag\x18\x07 \x01(\r\x12\x0b\n\x03md5\x18\x08 \x01(\x0c\x12\x0f\n\x07\x66ileMd5\x18\t \x01(\x0c\x12\x11\n\tcacheAddr\x18\n \x01(\r\x12\x12\n\nqueryTimes\x18\x0b \x01(\r\x12\x15\n\rupdateCacheip\x18\x0c \x01(\r\x12\x11\n\tcachePort\x18\r \x01(\r') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*cai/pb/highway/protocol/highway_head.proto\"\x93\x10\n\x0chighway_head\x1a_\n\x13\x43\x32\x43\x43ommonExtendinfo\x12\x0e\n\x06infoId\x18\x01 \x01(\r\x12\x38\n\x10\x66ilterExtendinfo\x18\x02 \x01(\x0b\x32\x1e.highway_head.FilterExtendinfo\x1a\xc8\x01\n\x0f\x44\x61taHighwayHead\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0b\n\x03uin\x18\x02 \x01(\x0c\x12\x0f\n\x07\x63ommand\x18\x03 \x01(\x0c\x12\x0b\n\x03seq\x18\x04 \x01(\r\x12\x12\n\nretryTimes\x18\x05 \x01(\r\x12\r\n\x05\x61ppid\x18\x06 \x01(\r\x12\x10\n\x08\x64\x61taflag\x18\x07 \x01(\r\x12\x11\n\tcommandId\x18\x08 \x01(\r\x12\x10\n\x08\x62uildVer\x18\t \x01(\x0c\x12\x10\n\x08localeId\x18\n \x01(\r\x12\r\n\x05\x65nvId\x18\x0b \x01(\r\x1a&\n\x08\x44\x61taHole\x12\r\n\x05\x62\x65gin\x18\x01 \x01(\x04\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x04\x1a\x64\n\x10\x46ilterExtendinfo\x12\x12\n\nfilterFlag\x18\x01 \x01(\r\x12<\n\x12imageFilterRequest\x18\x02 \x01(\x0b\x32 .highway_head.ImageFilterRequest\x1a\x31\n\x0b\x46ilterStyle\x12\x0f\n\x07styleId\x18\x01 \x01(\r\x12\x11\n\tstyleName\x18\x02 \x01(\x0c\x1a\xa2\x01\n\x12ImageFilterRequest\x12\x11\n\tsessionId\x18\x01 \x01(\x0c\x12\x10\n\x08\x63lientIp\x18\x02 \x01(\r\x12\x0b\n\x03uin\x18\x03 \x01(\x04\x12(\n\x05style\x18\x04 \x01(\x0b\x32\x19.highway_head.FilterStyle\x12\r\n\x05width\x18\x05 \x01(\r\x12\x0e\n\x06height\x18\x06 \x01(\r\x12\x11\n\timageData\x18\x07 \x01(\x0c\x1aK\n\x13ImageFilterResponse\x12\x0f\n\x07retCode\x18\x01 \x01(\x05\x12\x11\n\timageData\x18\x02 \x01(\x0c\x12\x10\n\x08\x63ostTime\x18\x03 \x01(\r\x1a\x36\n\x0cLoginSigHead\x12\x14\n\x0cloginsigType\x18\x01 \x01(\r\x12\x10\n\x08loginsig\x18\x02 \x01(\x0c\x1a\x33\n\x10NewServiceTicket\x12\x11\n\tsignature\x18\x01 \x01(\x0c\x12\x0c\n\x04ukey\x18\x02 \x01(\x0c\x1a\xfa\x01\n\nPicInfoExt\x12\x10\n\x08picWidth\x18\x01 \x01(\r\x12\x11\n\tpicHeight\x18\x02 \x01(\r\x12\x0f\n\x07picFlag\x18\x03 \x01(\r\x12\x10\n\x08\x62usiType\x18\x04 \x01(\r\x12\x0f\n\x07srcTerm\x18\x05 \x01(\r\x12\x10\n\x08platType\x18\x06 \x01(\r\x12\x0f\n\x07netType\x18\x07 \x01(\r\x12\x0f\n\x07imgType\x18\x08 \x01(\r\x12\x12\n\nappPicType\x18\t \x01(\r\x12\x1b\n\x13\x65\x63hoCreatedByServer\x18\n \x01(\x0c\x12\x15\n\rqqmeetGuildId\x18\x0b \x01(\x04\x12\x17\n\x0fqqmeetChannelId\x18\x0c \x01(\x04\x1aT\n\rPicRspExtInfo\x12\x0c\n\x04skey\x18\x01 \x01(\x0c\x12\x10\n\x08\x63lientIp\x18\x02 \x01(\r\x12\x10\n\x08upOffset\x18\x03 \x01(\x04\x12\x11\n\tblockSize\x18\x04 \x01(\x04\x1aZ\n\x0cQueryHoleRsp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12(\n\x08\x64\x61taHole\x18\x02 \x03(\x0b\x32\x16.highway_head.DataHole\x12\x10\n\x08\x63ompFlag\x18\x03 \x01(\x08\x1a\xc9\x01\n\x12ReqDataHighwayHead\x12/\n\x08\x62\x61sehead\x18\x01 \x01(\x0b\x32\x1d.highway_head.DataHighwayHead\x12&\n\x07seghead\x18\x02 \x01(\x0b\x32\x15.highway_head.SegHead\x12\x15\n\rreqExtendinfo\x18\x03 \x01(\x0c\x12\x11\n\ttimestamp\x18\x04 \x01(\x04\x12\x30\n\x0cloginSigHead\x18\x05 \x01(\x0b\x32\x1a.highway_head.LoginSigHead\x1a;\n\x07RspBody\x12\x30\n\x0cqueryHoleRsp\x18\x01 \x01(\x0b\x32\x1a.highway_head.QueryHoleRsp\x1a\x81\x02\n\x12RspDataHighwayHead\x12/\n\x08\x62\x61sehead\x18\x01 \x01(\x0b\x32\x1d.highway_head.DataHighwayHead\x12&\n\x07seghead\x18\x02 \x01(\x0b\x32\x15.highway_head.SegHead\x12\x11\n\terrorCode\x18\x03 \x01(\r\x12\x12\n\nallowRetry\x18\x04 \x01(\r\x12\x11\n\tcachecost\x18\x05 \x01(\r\x12\x0e\n\x06htcost\x18\x06 \x01(\r\x12\x15\n\rrspExtendinfo\x18\x07 \x01(\x0c\x12\x11\n\ttimestamp\x18\x08 \x01(\x04\x12\r\n\x05range\x18\t \x01(\x04\x12\x0f\n\x07isReset\x18\n \x01(\r\x1a\xfa\x01\n\x07SegHead\x12\x11\n\tserviceid\x18\x01 \x01(\r\x12\x10\n\x08\x66ilesize\x18\x02 \x01(\x04\x12\x12\n\ndataoffset\x18\x03 \x01(\x04\x12\x12\n\ndatalength\x18\x04 \x01(\r\x12\x0e\n\x06rtcode\x18\x05 \x01(\r\x12\x15\n\rserviceticket\x18\x06 \x01(\x0c\x12\x0c\n\x04\x66lag\x18\x07 \x01(\r\x12\x0b\n\x03md5\x18\x08 \x01(\x0c\x12\x0f\n\x07\x66ileMd5\x18\t \x01(\x0c\x12\x11\n\tcacheAddr\x18\n \x01(\r\x12\x12\n\nqueryTimes\x18\x0b \x01(\r\x12\x15\n\rupdateCacheip\x18\x0c \x01(\r\x12\x11\n\tcachePort\x18\r \x01(\r') @@ -39,117 +39,117 @@ 'C2CCommonExtendinfo' : _reflection.GeneratedProtocolMessageType('C2CCommonExtendinfo', (_message.Message,), { 'DESCRIPTOR' : _HIGHWAY_HEAD_C2CCOMMONEXTENDINFO, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head.C2CCommonExtendinfo) }) , 'DataHighwayHead' : _reflection.GeneratedProtocolMessageType('DataHighwayHead', (_message.Message,), { 'DESCRIPTOR' : _HIGHWAY_HEAD_DATAHIGHWAYHEAD, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head.DataHighwayHead) }) , 'DataHole' : _reflection.GeneratedProtocolMessageType('DataHole', (_message.Message,), { 'DESCRIPTOR' : _HIGHWAY_HEAD_DATAHOLE, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head.DataHole) }) , 'FilterExtendinfo' : _reflection.GeneratedProtocolMessageType('FilterExtendinfo', (_message.Message,), { 'DESCRIPTOR' : _HIGHWAY_HEAD_FILTEREXTENDINFO, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head.FilterExtendinfo) }) , 'FilterStyle' : _reflection.GeneratedProtocolMessageType('FilterStyle', (_message.Message,), { 'DESCRIPTOR' : _HIGHWAY_HEAD_FILTERSTYLE, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head.FilterStyle) }) , 'ImageFilterRequest' : _reflection.GeneratedProtocolMessageType('ImageFilterRequest', (_message.Message,), { 'DESCRIPTOR' : _HIGHWAY_HEAD_IMAGEFILTERREQUEST, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head.ImageFilterRequest) }) , 'ImageFilterResponse' : _reflection.GeneratedProtocolMessageType('ImageFilterResponse', (_message.Message,), { 'DESCRIPTOR' : _HIGHWAY_HEAD_IMAGEFILTERRESPONSE, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head.ImageFilterResponse) }) , 'LoginSigHead' : _reflection.GeneratedProtocolMessageType('LoginSigHead', (_message.Message,), { 'DESCRIPTOR' : _HIGHWAY_HEAD_LOGINSIGHEAD, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head.LoginSigHead) }) , 'NewServiceTicket' : _reflection.GeneratedProtocolMessageType('NewServiceTicket', (_message.Message,), { 'DESCRIPTOR' : _HIGHWAY_HEAD_NEWSERVICETICKET, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head.NewServiceTicket) }) , 'PicInfoExt' : _reflection.GeneratedProtocolMessageType('PicInfoExt', (_message.Message,), { 'DESCRIPTOR' : _HIGHWAY_HEAD_PICINFOEXT, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head.PicInfoExt) }) , 'PicRspExtInfo' : _reflection.GeneratedProtocolMessageType('PicRspExtInfo', (_message.Message,), { 'DESCRIPTOR' : _HIGHWAY_HEAD_PICRSPEXTINFO, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head.PicRspExtInfo) }) , 'QueryHoleRsp' : _reflection.GeneratedProtocolMessageType('QueryHoleRsp', (_message.Message,), { 'DESCRIPTOR' : _HIGHWAY_HEAD_QUERYHOLERSP, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head.QueryHoleRsp) }) , 'ReqDataHighwayHead' : _reflection.GeneratedProtocolMessageType('ReqDataHighwayHead', (_message.Message,), { 'DESCRIPTOR' : _HIGHWAY_HEAD_REQDATAHIGHWAYHEAD, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head.ReqDataHighwayHead) }) , 'RspBody' : _reflection.GeneratedProtocolMessageType('RspBody', (_message.Message,), { 'DESCRIPTOR' : _HIGHWAY_HEAD_RSPBODY, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head.RspBody) }) , 'RspDataHighwayHead' : _reflection.GeneratedProtocolMessageType('RspDataHighwayHead', (_message.Message,), { 'DESCRIPTOR' : _HIGHWAY_HEAD_RSPDATAHIGHWAYHEAD, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head.RspDataHighwayHead) }) , 'SegHead' : _reflection.GeneratedProtocolMessageType('SegHead', (_message.Message,), { 'DESCRIPTOR' : _HIGHWAY_HEAD_SEGHEAD, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head.SegHead) }) , 'DESCRIPTOR' : _HIGHWAY_HEAD, - '__module__' : 'highway_head_pb2' + '__module__' : 'cai.pb.highway.protocol.highway_head_pb2' # @@protoc_insertion_point(class_scope:highway_head) }) _sym_db.RegisterMessage(highway_head) @@ -173,38 +173,38 @@ if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - _HIGHWAY_HEAD._serialized_start=23 - _HIGHWAY_HEAD._serialized_end=2090 - _HIGHWAY_HEAD_C2CCOMMONEXTENDINFO._serialized_start=39 - _HIGHWAY_HEAD_C2CCOMMONEXTENDINFO._serialized_end=134 - _HIGHWAY_HEAD_DATAHIGHWAYHEAD._serialized_start=137 - _HIGHWAY_HEAD_DATAHIGHWAYHEAD._serialized_end=337 - _HIGHWAY_HEAD_DATAHOLE._serialized_start=339 - _HIGHWAY_HEAD_DATAHOLE._serialized_end=377 - _HIGHWAY_HEAD_FILTEREXTENDINFO._serialized_start=379 - _HIGHWAY_HEAD_FILTEREXTENDINFO._serialized_end=479 - _HIGHWAY_HEAD_FILTERSTYLE._serialized_start=481 - _HIGHWAY_HEAD_FILTERSTYLE._serialized_end=530 - _HIGHWAY_HEAD_IMAGEFILTERREQUEST._serialized_start=533 - _HIGHWAY_HEAD_IMAGEFILTERREQUEST._serialized_end=695 - _HIGHWAY_HEAD_IMAGEFILTERRESPONSE._serialized_start=697 - _HIGHWAY_HEAD_IMAGEFILTERRESPONSE._serialized_end=772 - _HIGHWAY_HEAD_LOGINSIGHEAD._serialized_start=774 - _HIGHWAY_HEAD_LOGINSIGHEAD._serialized_end=828 - _HIGHWAY_HEAD_NEWSERVICETICKET._serialized_start=830 - _HIGHWAY_HEAD_NEWSERVICETICKET._serialized_end=881 - _HIGHWAY_HEAD_PICINFOEXT._serialized_start=884 - _HIGHWAY_HEAD_PICINFOEXT._serialized_end=1134 - _HIGHWAY_HEAD_PICRSPEXTINFO._serialized_start=1136 - _HIGHWAY_HEAD_PICRSPEXTINFO._serialized_end=1220 - _HIGHWAY_HEAD_QUERYHOLERSP._serialized_start=1222 - _HIGHWAY_HEAD_QUERYHOLERSP._serialized_end=1312 - _HIGHWAY_HEAD_REQDATAHIGHWAYHEAD._serialized_start=1315 - _HIGHWAY_HEAD_REQDATAHIGHWAYHEAD._serialized_end=1516 - _HIGHWAY_HEAD_RSPBODY._serialized_start=1518 - _HIGHWAY_HEAD_RSPBODY._serialized_end=1577 - _HIGHWAY_HEAD_RSPDATAHIGHWAYHEAD._serialized_start=1580 - _HIGHWAY_HEAD_RSPDATAHIGHWAYHEAD._serialized_end=1837 - _HIGHWAY_HEAD_SEGHEAD._serialized_start=1840 - _HIGHWAY_HEAD_SEGHEAD._serialized_end=2090 + _HIGHWAY_HEAD._serialized_start=47 + _HIGHWAY_HEAD._serialized_end=2114 + _HIGHWAY_HEAD_C2CCOMMONEXTENDINFO._serialized_start=63 + _HIGHWAY_HEAD_C2CCOMMONEXTENDINFO._serialized_end=158 + _HIGHWAY_HEAD_DATAHIGHWAYHEAD._serialized_start=161 + _HIGHWAY_HEAD_DATAHIGHWAYHEAD._serialized_end=361 + _HIGHWAY_HEAD_DATAHOLE._serialized_start=363 + _HIGHWAY_HEAD_DATAHOLE._serialized_end=401 + _HIGHWAY_HEAD_FILTEREXTENDINFO._serialized_start=403 + _HIGHWAY_HEAD_FILTEREXTENDINFO._serialized_end=503 + _HIGHWAY_HEAD_FILTERSTYLE._serialized_start=505 + _HIGHWAY_HEAD_FILTERSTYLE._serialized_end=554 + _HIGHWAY_HEAD_IMAGEFILTERREQUEST._serialized_start=557 + _HIGHWAY_HEAD_IMAGEFILTERREQUEST._serialized_end=719 + _HIGHWAY_HEAD_IMAGEFILTERRESPONSE._serialized_start=721 + _HIGHWAY_HEAD_IMAGEFILTERRESPONSE._serialized_end=796 + _HIGHWAY_HEAD_LOGINSIGHEAD._serialized_start=798 + _HIGHWAY_HEAD_LOGINSIGHEAD._serialized_end=852 + _HIGHWAY_HEAD_NEWSERVICETICKET._serialized_start=854 + _HIGHWAY_HEAD_NEWSERVICETICKET._serialized_end=905 + _HIGHWAY_HEAD_PICINFOEXT._serialized_start=908 + _HIGHWAY_HEAD_PICINFOEXT._serialized_end=1158 + _HIGHWAY_HEAD_PICRSPEXTINFO._serialized_start=1160 + _HIGHWAY_HEAD_PICRSPEXTINFO._serialized_end=1244 + _HIGHWAY_HEAD_QUERYHOLERSP._serialized_start=1246 + _HIGHWAY_HEAD_QUERYHOLERSP._serialized_end=1336 + _HIGHWAY_HEAD_REQDATAHIGHWAYHEAD._serialized_start=1339 + _HIGHWAY_HEAD_REQDATAHIGHWAYHEAD._serialized_end=1540 + _HIGHWAY_HEAD_RSPBODY._serialized_start=1542 + _HIGHWAY_HEAD_RSPBODY._serialized_end=1601 + _HIGHWAY_HEAD_RSPDATAHIGHWAYHEAD._serialized_start=1604 + _HIGHWAY_HEAD_RSPDATAHIGHWAYHEAD._serialized_end=1861 + _HIGHWAY_HEAD_SEGHEAD._serialized_start=1864 + _HIGHWAY_HEAD_SEGHEAD._serialized_end=2114 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/cs/__init__.py b/cai/pb/im/cs/__init__.py new file mode 100644 index 00000000..2c6434f0 --- /dev/null +++ b/cai/pb/im/cs/__init__.py @@ -0,0 +1,16 @@ +"""IM CS Protocol Buffer Model Category. + +This module is used to store all cs protobuf files. + +Generate all protobuf file using: + +.. code-block:: bash + + protoc cai/pb/**/*.proto --python_out=. --mypy_out=readable_stubs:. + +:Copyright: Copyright (C) 2021-2021 cscs181 +:License: AGPL-3.0 or later. See `LICENSE`_ for detail. + +.. _LICENSE: + https://github.com/cscs181/CAI/blob/master/LICENSE +""" diff --git a/cai/pb/im/cs/cmd0x388/__init__.py b/cai/pb/im/cs/cmd0x388/__init__.py new file mode 100644 index 00000000..27330430 --- /dev/null +++ b/cai/pb/im/cs/cmd0x388/__init__.py @@ -0,0 +1 @@ +from .cmd0x388_pb2 import * diff --git a/cai/pb/im/cs/cmd0x388/cmd0x388.proto b/cai/pb/im/cs/cmd0x388/cmd0x388.proto new file mode 100644 index 00000000..f572218c --- /dev/null +++ b/cai/pb/im/cs/cmd0x388/cmd0x388.proto @@ -0,0 +1,255 @@ +syntax = "proto2"; +package im.cs.cmd0x388; + +// tencent/im/cs/cmd0x388/cmd0x388.java + +message DelImgReq { + optional uint64 src_uin = 1; + optional uint64 dst_uin = 2; + optional uint32 req_term = 3; + optional uint32 req_platform_type = 4; + optional uint32 bu_type = 5; + optional bytes build_ver = 6; + optional bytes file_resid = 7; + optional uint32 pic_width = 8; + optional uint32 pic_height = 9; +} + +message DelImgRsp { + optional uint32 result = 1; + optional bytes fail_msg = 2; + optional bytes file_resid = 3; +} + +message ExpRoamExtendInfo { + optional bytes resid = 1; +} + +message ExpRoamPicInfo { + optional uint32 shop_flag = 1; + optional uint32 pkg_id = 2; + optional bytes pic_id = 3; +} + +message ExtensionCommPicTryUp { + repeated bytes extinfo = 1; +} + +message ExtensionExpRoamTryUp { + repeated ExpRoamPicInfo exproam_pic_info = 1; +} + +message GetImgUrlReq { + optional uint64 group_code = 1; + optional uint64 dst_uin = 2; + optional uint64 fileid = 3; + optional bytes file_md5 = 4; + optional uint32 url_flag = 5; + optional uint32 url_type = 6; + optional uint32 req_term = 7; + optional uint32 req_platform_type = 8; + optional uint32 inner_ip = 9; + optional uint32 bu_type = 10; + optional bytes build_ver = 11; + optional uint64 file_id = 12; + optional uint64 file_size = 13; + optional uint32 original_pic = 14; + optional uint32 retry_req = 15; + optional uint32 file_height = 16; + optional uint32 file_width = 17; + optional uint32 pic_type = 18; + optional uint32 pic_up_timestamp = 19; + optional uint32 req_transfer_type = 20; + optional uint64 qqmeet_guild_id = 21; + optional uint64 qqmeet_channel_id = 22; + optional bytes download_index = 23; +} + +message GetImgUrlRsp { + optional uint64 fileid = 1; + optional bytes file_md5 = 2; + optional uint32 result = 3; + optional bytes fail_msg = 4; + optional ImgInfo img_info = 5; + repeated bytes thumb_down_url = 6; + repeated bytes original_down_url = 7; + repeated bytes big_down_url = 8; + repeated uint32 down_ip = 9; + repeated uint32 down_port = 10; + optional bytes down_domain = 11; + optional bytes thumb_down_para = 12; + optional bytes original_down_para = 13; + optional bytes big_down_para = 14; + optional uint64 file_id = 15; + optional uint32 auto_down_type = 16; + repeated uint32 order_down_type = 17; + optional bytes big_thumb_down_para = 19; + optional uint32 https_url_flag = 20; + repeated IPv6Info down_ip6 = 26; + optional bytes client_ip6 = 27; +} + +message GetPttUrlReq { + optional uint64 group_code = 1; + optional uint64 dst_uin = 2; + optional uint64 fileid = 3; + optional bytes file_md5 = 4; + optional uint32 req_term = 5; + optional uint32 req_platform_type = 6; + optional uint32 inner_ip = 7; + optional uint32 bu_type = 8; + optional bytes build_ver = 9; + optional uint64 file_id = 10; + optional bytes file_key = 11; + optional uint32 codec = 12; + optional uint32 bu_id = 13; + optional uint32 req_transfer_type = 14; + optional uint32 is_auto = 15; +} + +message GetPttUrlRsp { + optional uint64 fileid = 1; + optional bytes file_md5 = 2; + optional uint32 result = 3; + optional bytes fail_msg = 4; + repeated bytes down_url = 5; + repeated uint32 down_ip = 6; + repeated uint32 down_port = 7; + optional bytes down_domain = 8; + optional bytes down_para = 9; + optional uint64 file_id = 10; + optional uint32 transfer_type = 11; + optional uint32 allow_retry = 12; + repeated IPv6Info down_ip6 = 26; + optional bytes client_ip6 = 27; + optional string domain = 28; +} + +message IPv6Info { + optional bytes ip6 = 1; + optional uint32 port = 2; +} + +message ImgInfo { + optional bytes file_md5 = 1; + optional uint32 file_type = 2; + optional uint64 file_size = 3; + optional uint32 file_width = 4; + optional uint32 file_height = 5; +} + +message PicSize { + optional uint32 original = 1; + optional uint32 thumb = 2; + optional uint32 high = 3; +} + +message ReqBody { + optional uint32 net_type = 1; + optional uint32 subcmd = 2; + repeated TryUpImgReq tryup_img_req = 3; + repeated GetImgUrlReq getimg_url_req = 4; + repeated TryUpPttReq tryup_ptt_req = 5; + repeated GetPttUrlReq getptt_url_req = 6; + optional uint32 command_id = 7; + repeated DelImgReq del_img_req = 8; + optional bytes extension = 1001; +} + +message RspBody { + optional uint32 client_ip = 1; + optional uint32 subcmd = 2; + repeated TryUpImgRsp tryup_img_rsp = 3; + repeated GetImgUrlRsp getimg_url_rsp = 4; + repeated TryUpPttRsp tryup_ptt_rsp = 5; + repeated GetPttUrlRsp getptt_url_rsp = 6; + repeated DelImgRsp del_img_rsp = 7; +} + +message TryUpImgReq { + optional uint64 group_code = 1; + optional uint64 src_uin = 2; + optional uint64 file_id = 3; + optional bytes file_md5 = 4; + optional uint64 file_size = 5; + optional bytes file_name = 6; + optional uint32 src_term = 7; + optional uint32 platform_type = 8; + optional uint32 bu_type = 9; + optional uint32 pic_width = 10; + optional uint32 pic_height = 11; + optional uint32 pic_type = 12; + optional bytes build_ver = 13; + optional uint32 inner_ip = 14; + optional uint32 app_pic_type = 15; + optional uint32 original_pic = 16; + optional bytes file_index = 17; + optional uint64 dst_uin = 18; + optional uint32 srv_upload = 19; + optional bytes transfer_url = 20; + optional uint64 qqmeet_guild_id = 21; + optional uint64 qqmeet_channel_id = 22; +} + +message TryUpImgRsp { + optional uint64 file_id = 1; + optional uint32 result = 2; + optional bytes fail_msg = 3; + optional bool file_exit = 4; + optional ImgInfo img_info = 5; + repeated uint32 up_ip = 6; + repeated uint32 up_port = 7; + optional bytes up_ukey = 8; + optional uint64 fileid = 9; + optional uint64 up_offset = 10; + optional uint64 block_size = 11; + optional bool new_big_chan = 12; + repeated IPv6Info up_ip6 = 26; + optional bytes client_ip6 = 27; + optional bytes download_index = 28; + optional TryUpInfo4Busi info4_busi = 1001; +} + +message TryUpInfo4Busi { + optional bytes down_domain = 1; + optional bytes thumb_down_url = 2; + optional bytes original_down_url = 3; + optional bytes big_down_url = 4; + optional bytes file_resid = 5; +} + +message TryUpPttReq { + optional uint64 group_code = 1; + optional uint64 src_uin = 2; + optional uint64 file_id = 3; + optional bytes file_md5 = 4; + optional uint64 file_size = 5; + optional bytes file_name = 6; + optional uint32 src_term = 7; + optional uint32 platform_type = 8; + optional uint32 bu_type = 9; + optional bytes build_ver = 10; + optional uint32 inner_ip = 11; + optional uint32 voice_length = 12; + optional bool new_up_chan = 13; + optional uint32 codec = 14; + optional uint32 voice_type = 15; + optional uint32 bu_id = 16; +} + +message TryUpPttRsp { + optional uint64 file_id = 1; + optional uint32 result = 2; + optional bytes fail_msg = 3; + optional bool file_exit = 4; + repeated uint32 up_ip = 5; + repeated uint32 up_port = 6; + optional bytes up_ukey = 7; + optional uint64 fileid = 8; + optional uint64 up_offset = 9; + optional uint64 block_size = 10; + optional bytes file_key = 11; + optional uint32 channel_type = 12; + repeated IPv6Info up_ip6 = 26; + optional bytes client_ip6 = 27; +} diff --git a/cai/pb/im/cs/cmd0x388/cmd0x388_pb2.py b/cai/pb/im/cs/cmd0x388/cmd0x388_pb2.py new file mode 100644 index 00000000..b1372a04 --- /dev/null +++ b/cai/pb/im/cs/cmd0x388/cmd0x388_pb2.py @@ -0,0 +1,224 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: cai/pb/im/cs/cmd0x388/cmd0x388.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$cai/pb/im/cs/cmd0x388/cmd0x388.proto\x12\x0eim.cs.cmd0x388\"\xb9\x01\n\tDelImgReq\x12\x0f\n\x07src_uin\x18\x01 \x01(\x04\x12\x0f\n\x07\x64st_uin\x18\x02 \x01(\x04\x12\x10\n\x08req_term\x18\x03 \x01(\r\x12\x19\n\x11req_platform_type\x18\x04 \x01(\r\x12\x0f\n\x07\x62u_type\x18\x05 \x01(\r\x12\x11\n\tbuild_ver\x18\x06 \x01(\x0c\x12\x12\n\nfile_resid\x18\x07 \x01(\x0c\x12\x11\n\tpic_width\x18\x08 \x01(\r\x12\x12\n\npic_height\x18\t \x01(\r\"A\n\tDelImgRsp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x10\n\x08\x66\x61il_msg\x18\x02 \x01(\x0c\x12\x12\n\nfile_resid\x18\x03 \x01(\x0c\"\"\n\x11\x45xpRoamExtendInfo\x12\r\n\x05resid\x18\x01 \x01(\x0c\"C\n\x0e\x45xpRoamPicInfo\x12\x11\n\tshop_flag\x18\x01 \x01(\r\x12\x0e\n\x06pkg_id\x18\x02 \x01(\r\x12\x0e\n\x06pic_id\x18\x03 \x01(\x0c\"(\n\x15\x45xtensionCommPicTryUp\x12\x0f\n\x07\x65xtinfo\x18\x01 \x03(\x0c\"Q\n\x15\x45xtensionExpRoamTryUp\x12\x38\n\x10\x65xproam_pic_info\x18\x01 \x03(\x0b\x32\x1e.im.cs.cmd0x388.ExpRoamPicInfo\"\xe5\x03\n\x0cGetImgUrlReq\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x0f\n\x07\x64st_uin\x18\x02 \x01(\x04\x12\x0e\n\x06\x66ileid\x18\x03 \x01(\x04\x12\x10\n\x08\x66ile_md5\x18\x04 \x01(\x0c\x12\x10\n\x08url_flag\x18\x05 \x01(\r\x12\x10\n\x08url_type\x18\x06 \x01(\r\x12\x10\n\x08req_term\x18\x07 \x01(\r\x12\x19\n\x11req_platform_type\x18\x08 \x01(\r\x12\x10\n\x08inner_ip\x18\t \x01(\r\x12\x0f\n\x07\x62u_type\x18\n \x01(\r\x12\x11\n\tbuild_ver\x18\x0b \x01(\x0c\x12\x0f\n\x07\x66ile_id\x18\x0c \x01(\x04\x12\x11\n\tfile_size\x18\r \x01(\x04\x12\x14\n\x0coriginal_pic\x18\x0e \x01(\r\x12\x11\n\tretry_req\x18\x0f \x01(\r\x12\x13\n\x0b\x66ile_height\x18\x10 \x01(\r\x12\x12\n\nfile_width\x18\x11 \x01(\r\x12\x10\n\x08pic_type\x18\x12 \x01(\r\x12\x18\n\x10pic_up_timestamp\x18\x13 \x01(\r\x12\x19\n\x11req_transfer_type\x18\x14 \x01(\r\x12\x17\n\x0fqqmeet_guild_id\x18\x15 \x01(\x04\x12\x19\n\x11qqmeet_channel_id\x18\x16 \x01(\x04\x12\x16\n\x0e\x64ownload_index\x18\x17 \x01(\x0c\"\x82\x04\n\x0cGetImgUrlRsp\x12\x0e\n\x06\x66ileid\x18\x01 \x01(\x04\x12\x10\n\x08\x66ile_md5\x18\x02 \x01(\x0c\x12\x0e\n\x06result\x18\x03 \x01(\r\x12\x10\n\x08\x66\x61il_msg\x18\x04 \x01(\x0c\x12)\n\x08img_info\x18\x05 \x01(\x0b\x32\x17.im.cs.cmd0x388.ImgInfo\x12\x16\n\x0ethumb_down_url\x18\x06 \x03(\x0c\x12\x19\n\x11original_down_url\x18\x07 \x03(\x0c\x12\x14\n\x0c\x62ig_down_url\x18\x08 \x03(\x0c\x12\x0f\n\x07\x64own_ip\x18\t \x03(\r\x12\x11\n\tdown_port\x18\n \x03(\r\x12\x13\n\x0b\x64own_domain\x18\x0b \x01(\x0c\x12\x17\n\x0fthumb_down_para\x18\x0c \x01(\x0c\x12\x1a\n\x12original_down_para\x18\r \x01(\x0c\x12\x15\n\rbig_down_para\x18\x0e \x01(\x0c\x12\x0f\n\x07\x66ile_id\x18\x0f \x01(\x04\x12\x16\n\x0e\x61uto_down_type\x18\x10 \x01(\r\x12\x17\n\x0forder_down_type\x18\x11 \x03(\r\x12\x1b\n\x13\x62ig_thumb_down_para\x18\x13 \x01(\x0c\x12\x16\n\x0ehttps_url_flag\x18\x14 \x01(\r\x12*\n\x08\x64own_ip6\x18\x1a \x03(\x0b\x32\x18.im.cs.cmd0x388.IPv6Info\x12\x12\n\nclient_ip6\x18\x1b \x01(\x0c\"\xa5\x02\n\x0cGetPttUrlReq\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x0f\n\x07\x64st_uin\x18\x02 \x01(\x04\x12\x0e\n\x06\x66ileid\x18\x03 \x01(\x04\x12\x10\n\x08\x66ile_md5\x18\x04 \x01(\x0c\x12\x10\n\x08req_term\x18\x05 \x01(\r\x12\x19\n\x11req_platform_type\x18\x06 \x01(\r\x12\x10\n\x08inner_ip\x18\x07 \x01(\r\x12\x0f\n\x07\x62u_type\x18\x08 \x01(\r\x12\x11\n\tbuild_ver\x18\t \x01(\x0c\x12\x0f\n\x07\x66ile_id\x18\n \x01(\x04\x12\x10\n\x08\x66ile_key\x18\x0b \x01(\x0c\x12\r\n\x05\x63odec\x18\x0c \x01(\r\x12\r\n\x05\x62u_id\x18\r \x01(\r\x12\x19\n\x11req_transfer_type\x18\x0e \x01(\r\x12\x0f\n\x07is_auto\x18\x0f \x01(\r\"\xbd\x02\n\x0cGetPttUrlRsp\x12\x0e\n\x06\x66ileid\x18\x01 \x01(\x04\x12\x10\n\x08\x66ile_md5\x18\x02 \x01(\x0c\x12\x0e\n\x06result\x18\x03 \x01(\r\x12\x10\n\x08\x66\x61il_msg\x18\x04 \x01(\x0c\x12\x10\n\x08\x64own_url\x18\x05 \x03(\x0c\x12\x0f\n\x07\x64own_ip\x18\x06 \x03(\r\x12\x11\n\tdown_port\x18\x07 \x03(\r\x12\x13\n\x0b\x64own_domain\x18\x08 \x01(\x0c\x12\x11\n\tdown_para\x18\t \x01(\x0c\x12\x0f\n\x07\x66ile_id\x18\n \x01(\x04\x12\x15\n\rtransfer_type\x18\x0b \x01(\r\x12\x13\n\x0b\x61llow_retry\x18\x0c \x01(\r\x12*\n\x08\x64own_ip6\x18\x1a \x03(\x0b\x32\x18.im.cs.cmd0x388.IPv6Info\x12\x12\n\nclient_ip6\x18\x1b \x01(\x0c\x12\x0e\n\x06\x64omain\x18\x1c \x01(\t\"%\n\x08IPv6Info\x12\x0b\n\x03ip6\x18\x01 \x01(\x0c\x12\x0c\n\x04port\x18\x02 \x01(\r\"j\n\x07ImgInfo\x12\x10\n\x08\x66ile_md5\x18\x01 \x01(\x0c\x12\x11\n\tfile_type\x18\x02 \x01(\r\x12\x11\n\tfile_size\x18\x03 \x01(\x04\x12\x12\n\nfile_width\x18\x04 \x01(\r\x12\x13\n\x0b\x66ile_height\x18\x05 \x01(\r\"8\n\x07PicSize\x12\x10\n\x08original\x18\x01 \x01(\r\x12\r\n\x05thumb\x18\x02 \x01(\r\x12\x0c\n\x04high\x18\x03 \x01(\r\"\xd7\x02\n\x07ReqBody\x12\x10\n\x08net_type\x18\x01 \x01(\r\x12\x0e\n\x06subcmd\x18\x02 \x01(\r\x12\x32\n\rtryup_img_req\x18\x03 \x03(\x0b\x32\x1b.im.cs.cmd0x388.TryUpImgReq\x12\x34\n\x0egetimg_url_req\x18\x04 \x03(\x0b\x32\x1c.im.cs.cmd0x388.GetImgUrlReq\x12\x32\n\rtryup_ptt_req\x18\x05 \x03(\x0b\x32\x1b.im.cs.cmd0x388.TryUpPttReq\x12\x34\n\x0egetptt_url_req\x18\x06 \x03(\x0b\x32\x1c.im.cs.cmd0x388.GetPttUrlReq\x12\x12\n\ncommand_id\x18\x07 \x01(\r\x12.\n\x0b\x64\x65l_img_req\x18\x08 \x03(\x0b\x32\x19.im.cs.cmd0x388.DelImgReq\x12\x12\n\textension\x18\xe9\x07 \x01(\x0c\"\xb0\x02\n\x07RspBody\x12\x11\n\tclient_ip\x18\x01 \x01(\r\x12\x0e\n\x06subcmd\x18\x02 \x01(\r\x12\x32\n\rtryup_img_rsp\x18\x03 \x03(\x0b\x32\x1b.im.cs.cmd0x388.TryUpImgRsp\x12\x34\n\x0egetimg_url_rsp\x18\x04 \x03(\x0b\x32\x1c.im.cs.cmd0x388.GetImgUrlRsp\x12\x32\n\rtryup_ptt_rsp\x18\x05 \x03(\x0b\x32\x1b.im.cs.cmd0x388.TryUpPttRsp\x12\x34\n\x0egetptt_url_rsp\x18\x06 \x03(\x0b\x32\x1c.im.cs.cmd0x388.GetPttUrlRsp\x12.\n\x0b\x64\x65l_img_rsp\x18\x07 \x03(\x0b\x32\x19.im.cs.cmd0x388.DelImgRsp\"\xc2\x03\n\x0bTryUpImgReq\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x0f\n\x07src_uin\x18\x02 \x01(\x04\x12\x0f\n\x07\x66ile_id\x18\x03 \x01(\x04\x12\x10\n\x08\x66ile_md5\x18\x04 \x01(\x0c\x12\x11\n\tfile_size\x18\x05 \x01(\x04\x12\x11\n\tfile_name\x18\x06 \x01(\x0c\x12\x10\n\x08src_term\x18\x07 \x01(\r\x12\x15\n\rplatform_type\x18\x08 \x01(\r\x12\x0f\n\x07\x62u_type\x18\t \x01(\r\x12\x11\n\tpic_width\x18\n \x01(\r\x12\x12\n\npic_height\x18\x0b \x01(\r\x12\x10\n\x08pic_type\x18\x0c \x01(\r\x12\x11\n\tbuild_ver\x18\r \x01(\x0c\x12\x10\n\x08inner_ip\x18\x0e \x01(\r\x12\x14\n\x0c\x61pp_pic_type\x18\x0f \x01(\r\x12\x14\n\x0coriginal_pic\x18\x10 \x01(\r\x12\x12\n\nfile_index\x18\x11 \x01(\x0c\x12\x0f\n\x07\x64st_uin\x18\x12 \x01(\x04\x12\x12\n\nsrv_upload\x18\x13 \x01(\r\x12\x14\n\x0ctransfer_url\x18\x14 \x01(\x0c\x12\x17\n\x0fqqmeet_guild_id\x18\x15 \x01(\x04\x12\x19\n\x11qqmeet_channel_id\x18\x16 \x01(\x04\"\x87\x03\n\x0bTryUpImgRsp\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\x04\x12\x0e\n\x06result\x18\x02 \x01(\r\x12\x10\n\x08\x66\x61il_msg\x18\x03 \x01(\x0c\x12\x11\n\tfile_exit\x18\x04 \x01(\x08\x12)\n\x08img_info\x18\x05 \x01(\x0b\x32\x17.im.cs.cmd0x388.ImgInfo\x12\r\n\x05up_ip\x18\x06 \x03(\r\x12\x0f\n\x07up_port\x18\x07 \x03(\r\x12\x0f\n\x07up_ukey\x18\x08 \x01(\x0c\x12\x0e\n\x06\x66ileid\x18\t \x01(\x04\x12\x11\n\tup_offset\x18\n \x01(\x04\x12\x12\n\nblock_size\x18\x0b \x01(\x04\x12\x14\n\x0cnew_big_chan\x18\x0c \x01(\x08\x12(\n\x06up_ip6\x18\x1a \x03(\x0b\x32\x18.im.cs.cmd0x388.IPv6Info\x12\x12\n\nclient_ip6\x18\x1b \x01(\x0c\x12\x16\n\x0e\x64ownload_index\x18\x1c \x01(\x0c\x12\x33\n\ninfo4_busi\x18\xe9\x07 \x01(\x0b\x32\x1e.im.cs.cmd0x388.TryUpInfo4Busi\"\x82\x01\n\x0eTryUpInfo4Busi\x12\x13\n\x0b\x64own_domain\x18\x01 \x01(\x0c\x12\x16\n\x0ethumb_down_url\x18\x02 \x01(\x0c\x12\x19\n\x11original_down_url\x18\x03 \x01(\x0c\x12\x14\n\x0c\x62ig_down_url\x18\x04 \x01(\x0c\x12\x12\n\nfile_resid\x18\x05 \x01(\x0c\"\xb7\x02\n\x0bTryUpPttReq\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x0f\n\x07src_uin\x18\x02 \x01(\x04\x12\x0f\n\x07\x66ile_id\x18\x03 \x01(\x04\x12\x10\n\x08\x66ile_md5\x18\x04 \x01(\x0c\x12\x11\n\tfile_size\x18\x05 \x01(\x04\x12\x11\n\tfile_name\x18\x06 \x01(\x0c\x12\x10\n\x08src_term\x18\x07 \x01(\r\x12\x15\n\rplatform_type\x18\x08 \x01(\r\x12\x0f\n\x07\x62u_type\x18\t \x01(\r\x12\x11\n\tbuild_ver\x18\n \x01(\x0c\x12\x10\n\x08inner_ip\x18\x0b \x01(\r\x12\x14\n\x0cvoice_length\x18\x0c \x01(\r\x12\x13\n\x0bnew_up_chan\x18\r \x01(\x08\x12\r\n\x05\x63odec\x18\x0e \x01(\r\x12\x12\n\nvoice_type\x18\x0f \x01(\r\x12\r\n\x05\x62u_id\x18\x10 \x01(\r\"\xa1\x02\n\x0bTryUpPttRsp\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\x04\x12\x0e\n\x06result\x18\x02 \x01(\r\x12\x10\n\x08\x66\x61il_msg\x18\x03 \x01(\x0c\x12\x11\n\tfile_exit\x18\x04 \x01(\x08\x12\r\n\x05up_ip\x18\x05 \x03(\r\x12\x0f\n\x07up_port\x18\x06 \x03(\r\x12\x0f\n\x07up_ukey\x18\x07 \x01(\x0c\x12\x0e\n\x06\x66ileid\x18\x08 \x01(\x04\x12\x11\n\tup_offset\x18\t \x01(\x04\x12\x12\n\nblock_size\x18\n \x01(\x04\x12\x10\n\x08\x66ile_key\x18\x0b \x01(\x0c\x12\x14\n\x0c\x63hannel_type\x18\x0c \x01(\r\x12(\n\x06up_ip6\x18\x1a \x03(\x0b\x32\x18.im.cs.cmd0x388.IPv6Info\x12\x12\n\nclient_ip6\x18\x1b \x01(\x0c') + + + +_DELIMGREQ = DESCRIPTOR.message_types_by_name['DelImgReq'] +_DELIMGRSP = DESCRIPTOR.message_types_by_name['DelImgRsp'] +_EXPROAMEXTENDINFO = DESCRIPTOR.message_types_by_name['ExpRoamExtendInfo'] +_EXPROAMPICINFO = DESCRIPTOR.message_types_by_name['ExpRoamPicInfo'] +_EXTENSIONCOMMPICTRYUP = DESCRIPTOR.message_types_by_name['ExtensionCommPicTryUp'] +_EXTENSIONEXPROAMTRYUP = DESCRIPTOR.message_types_by_name['ExtensionExpRoamTryUp'] +_GETIMGURLREQ = DESCRIPTOR.message_types_by_name['GetImgUrlReq'] +_GETIMGURLRSP = DESCRIPTOR.message_types_by_name['GetImgUrlRsp'] +_GETPTTURLREQ = DESCRIPTOR.message_types_by_name['GetPttUrlReq'] +_GETPTTURLRSP = DESCRIPTOR.message_types_by_name['GetPttUrlRsp'] +_IPV6INFO = DESCRIPTOR.message_types_by_name['IPv6Info'] +_IMGINFO = DESCRIPTOR.message_types_by_name['ImgInfo'] +_PICSIZE = DESCRIPTOR.message_types_by_name['PicSize'] +_REQBODY = DESCRIPTOR.message_types_by_name['ReqBody'] +_RSPBODY = DESCRIPTOR.message_types_by_name['RspBody'] +_TRYUPIMGREQ = DESCRIPTOR.message_types_by_name['TryUpImgReq'] +_TRYUPIMGRSP = DESCRIPTOR.message_types_by_name['TryUpImgRsp'] +_TRYUPINFO4BUSI = DESCRIPTOR.message_types_by_name['TryUpInfo4Busi'] +_TRYUPPTTREQ = DESCRIPTOR.message_types_by_name['TryUpPttReq'] +_TRYUPPTTRSP = DESCRIPTOR.message_types_by_name['TryUpPttRsp'] +DelImgReq = _reflection.GeneratedProtocolMessageType('DelImgReq', (_message.Message,), { + 'DESCRIPTOR' : _DELIMGREQ, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.DelImgReq) + }) +_sym_db.RegisterMessage(DelImgReq) + +DelImgRsp = _reflection.GeneratedProtocolMessageType('DelImgRsp', (_message.Message,), { + 'DESCRIPTOR' : _DELIMGRSP, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.DelImgRsp) + }) +_sym_db.RegisterMessage(DelImgRsp) + +ExpRoamExtendInfo = _reflection.GeneratedProtocolMessageType('ExpRoamExtendInfo', (_message.Message,), { + 'DESCRIPTOR' : _EXPROAMEXTENDINFO, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.ExpRoamExtendInfo) + }) +_sym_db.RegisterMessage(ExpRoamExtendInfo) + +ExpRoamPicInfo = _reflection.GeneratedProtocolMessageType('ExpRoamPicInfo', (_message.Message,), { + 'DESCRIPTOR' : _EXPROAMPICINFO, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.ExpRoamPicInfo) + }) +_sym_db.RegisterMessage(ExpRoamPicInfo) + +ExtensionCommPicTryUp = _reflection.GeneratedProtocolMessageType('ExtensionCommPicTryUp', (_message.Message,), { + 'DESCRIPTOR' : _EXTENSIONCOMMPICTRYUP, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.ExtensionCommPicTryUp) + }) +_sym_db.RegisterMessage(ExtensionCommPicTryUp) + +ExtensionExpRoamTryUp = _reflection.GeneratedProtocolMessageType('ExtensionExpRoamTryUp', (_message.Message,), { + 'DESCRIPTOR' : _EXTENSIONEXPROAMTRYUP, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.ExtensionExpRoamTryUp) + }) +_sym_db.RegisterMessage(ExtensionExpRoamTryUp) + +GetImgUrlReq = _reflection.GeneratedProtocolMessageType('GetImgUrlReq', (_message.Message,), { + 'DESCRIPTOR' : _GETIMGURLREQ, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.GetImgUrlReq) + }) +_sym_db.RegisterMessage(GetImgUrlReq) + +GetImgUrlRsp = _reflection.GeneratedProtocolMessageType('GetImgUrlRsp', (_message.Message,), { + 'DESCRIPTOR' : _GETIMGURLRSP, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.GetImgUrlRsp) + }) +_sym_db.RegisterMessage(GetImgUrlRsp) + +GetPttUrlReq = _reflection.GeneratedProtocolMessageType('GetPttUrlReq', (_message.Message,), { + 'DESCRIPTOR' : _GETPTTURLREQ, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.GetPttUrlReq) + }) +_sym_db.RegisterMessage(GetPttUrlReq) + +GetPttUrlRsp = _reflection.GeneratedProtocolMessageType('GetPttUrlRsp', (_message.Message,), { + 'DESCRIPTOR' : _GETPTTURLRSP, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.GetPttUrlRsp) + }) +_sym_db.RegisterMessage(GetPttUrlRsp) + +IPv6Info = _reflection.GeneratedProtocolMessageType('IPv6Info', (_message.Message,), { + 'DESCRIPTOR' : _IPV6INFO, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.IPv6Info) + }) +_sym_db.RegisterMessage(IPv6Info) + +ImgInfo = _reflection.GeneratedProtocolMessageType('ImgInfo', (_message.Message,), { + 'DESCRIPTOR' : _IMGINFO, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.ImgInfo) + }) +_sym_db.RegisterMessage(ImgInfo) + +PicSize = _reflection.GeneratedProtocolMessageType('PicSize', (_message.Message,), { + 'DESCRIPTOR' : _PICSIZE, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.PicSize) + }) +_sym_db.RegisterMessage(PicSize) + +ReqBody = _reflection.GeneratedProtocolMessageType('ReqBody', (_message.Message,), { + 'DESCRIPTOR' : _REQBODY, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.ReqBody) + }) +_sym_db.RegisterMessage(ReqBody) + +RspBody = _reflection.GeneratedProtocolMessageType('RspBody', (_message.Message,), { + 'DESCRIPTOR' : _RSPBODY, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.RspBody) + }) +_sym_db.RegisterMessage(RspBody) + +TryUpImgReq = _reflection.GeneratedProtocolMessageType('TryUpImgReq', (_message.Message,), { + 'DESCRIPTOR' : _TRYUPIMGREQ, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.TryUpImgReq) + }) +_sym_db.RegisterMessage(TryUpImgReq) + +TryUpImgRsp = _reflection.GeneratedProtocolMessageType('TryUpImgRsp', (_message.Message,), { + 'DESCRIPTOR' : _TRYUPIMGRSP, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.TryUpImgRsp) + }) +_sym_db.RegisterMessage(TryUpImgRsp) + +TryUpInfo4Busi = _reflection.GeneratedProtocolMessageType('TryUpInfo4Busi', (_message.Message,), { + 'DESCRIPTOR' : _TRYUPINFO4BUSI, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.TryUpInfo4Busi) + }) +_sym_db.RegisterMessage(TryUpInfo4Busi) + +TryUpPttReq = _reflection.GeneratedProtocolMessageType('TryUpPttReq', (_message.Message,), { + 'DESCRIPTOR' : _TRYUPPTTREQ, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.TryUpPttReq) + }) +_sym_db.RegisterMessage(TryUpPttReq) + +TryUpPttRsp = _reflection.GeneratedProtocolMessageType('TryUpPttRsp', (_message.Message,), { + 'DESCRIPTOR' : _TRYUPPTTRSP, + '__module__' : 'cai.pb.im.cs.cmd0x388.cmd0x388_pb2' + # @@protoc_insertion_point(class_scope:im.cs.cmd0x388.TryUpPttRsp) + }) +_sym_db.RegisterMessage(TryUpPttRsp) + +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _DELIMGREQ._serialized_start=57 + _DELIMGREQ._serialized_end=242 + _DELIMGRSP._serialized_start=244 + _DELIMGRSP._serialized_end=309 + _EXPROAMEXTENDINFO._serialized_start=311 + _EXPROAMEXTENDINFO._serialized_end=345 + _EXPROAMPICINFO._serialized_start=347 + _EXPROAMPICINFO._serialized_end=414 + _EXTENSIONCOMMPICTRYUP._serialized_start=416 + _EXTENSIONCOMMPICTRYUP._serialized_end=456 + _EXTENSIONEXPROAMTRYUP._serialized_start=458 + _EXTENSIONEXPROAMTRYUP._serialized_end=539 + _GETIMGURLREQ._serialized_start=542 + _GETIMGURLREQ._serialized_end=1027 + _GETIMGURLRSP._serialized_start=1030 + _GETIMGURLRSP._serialized_end=1544 + _GETPTTURLREQ._serialized_start=1547 + _GETPTTURLREQ._serialized_end=1840 + _GETPTTURLRSP._serialized_start=1843 + _GETPTTURLRSP._serialized_end=2160 + _IPV6INFO._serialized_start=2162 + _IPV6INFO._serialized_end=2199 + _IMGINFO._serialized_start=2201 + _IMGINFO._serialized_end=2307 + _PICSIZE._serialized_start=2309 + _PICSIZE._serialized_end=2365 + _REQBODY._serialized_start=2368 + _REQBODY._serialized_end=2711 + _RSPBODY._serialized_start=2714 + _RSPBODY._serialized_end=3018 + _TRYUPIMGREQ._serialized_start=3021 + _TRYUPIMGREQ._serialized_end=3471 + _TRYUPIMGRSP._serialized_start=3474 + _TRYUPIMGRSP._serialized_end=3865 + _TRYUPINFO4BUSI._serialized_start=3868 + _TRYUPINFO4BUSI._serialized_end=3998 + _TRYUPPTTREQ._serialized_start=4001 + _TRYUPPTTREQ._serialized_end=4312 + _TRYUPPTTRSP._serialized_start=4315 + _TRYUPPTTRSP._serialized_end=4604 +# @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/cs/cmd0x388/cmd0x388_pb2.pyi b/cai/pb/im/cs/cmd0x388/cmd0x388_pb2.pyi new file mode 100644 index 00000000..9ac4c16f --- /dev/null +++ b/cai/pb/im/cs/cmd0x388/cmd0x388_pb2.pyi @@ -0,0 +1,802 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +from builtins import ( + bool, + bytes, + int, +) + +from google.protobuf.descriptor import ( + Descriptor, + FileDescriptor, +) + +from google.protobuf.internal.containers import ( + RepeatedCompositeFieldContainer, + RepeatedScalarFieldContainer, +) + +from google.protobuf.message import ( + Message, +) + +from typing import ( + Iterable, + Optional, + Text, +) + +from typing_extensions import ( + Literal, +) + + +DESCRIPTOR: FileDescriptor + +class DelImgReq(Message): + """tencent/im/cs/cmd0x388/cmd0x388.java + + """ + DESCRIPTOR: Descriptor + SRC_UIN_FIELD_NUMBER: int + DST_UIN_FIELD_NUMBER: int + REQ_TERM_FIELD_NUMBER: int + REQ_PLATFORM_TYPE_FIELD_NUMBER: int + BU_TYPE_FIELD_NUMBER: int + BUILD_VER_FIELD_NUMBER: int + FILE_RESID_FIELD_NUMBER: int + PIC_WIDTH_FIELD_NUMBER: int + PIC_HEIGHT_FIELD_NUMBER: int + src_uin: int + dst_uin: int + req_term: int + req_platform_type: int + bu_type: int + build_ver: bytes + file_resid: bytes + pic_width: int + pic_height: int + def __init__(self, + *, + src_uin: Optional[int] = ..., + dst_uin: Optional[int] = ..., + req_term: Optional[int] = ..., + req_platform_type: Optional[int] = ..., + bu_type: Optional[int] = ..., + build_ver: Optional[bytes] = ..., + file_resid: Optional[bytes] = ..., + pic_width: Optional[int] = ..., + pic_height: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["bu_type",b"bu_type","build_ver",b"build_ver","dst_uin",b"dst_uin","file_resid",b"file_resid","pic_height",b"pic_height","pic_width",b"pic_width","req_platform_type",b"req_platform_type","req_term",b"req_term","src_uin",b"src_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["bu_type",b"bu_type","build_ver",b"build_ver","dst_uin",b"dst_uin","file_resid",b"file_resid","pic_height",b"pic_height","pic_width",b"pic_width","req_platform_type",b"req_platform_type","req_term",b"req_term","src_uin",b"src_uin"]) -> None: ... + +class DelImgRsp(Message): + DESCRIPTOR: Descriptor + RESULT_FIELD_NUMBER: int + FAIL_MSG_FIELD_NUMBER: int + FILE_RESID_FIELD_NUMBER: int + result: int + fail_msg: bytes + file_resid: bytes + def __init__(self, + *, + result: Optional[int] = ..., + fail_msg: Optional[bytes] = ..., + file_resid: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["fail_msg",b"fail_msg","file_resid",b"file_resid","result",b"result"]) -> bool: ... + def ClearField(self, field_name: Literal["fail_msg",b"fail_msg","file_resid",b"file_resid","result",b"result"]) -> None: ... + +class ExpRoamExtendInfo(Message): + DESCRIPTOR: Descriptor + RESID_FIELD_NUMBER: int + resid: bytes + def __init__(self, + *, + resid: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["resid",b"resid"]) -> bool: ... + def ClearField(self, field_name: Literal["resid",b"resid"]) -> None: ... + +class ExpRoamPicInfo(Message): + DESCRIPTOR: Descriptor + SHOP_FLAG_FIELD_NUMBER: int + PKG_ID_FIELD_NUMBER: int + PIC_ID_FIELD_NUMBER: int + shop_flag: int + pkg_id: int + pic_id: bytes + def __init__(self, + *, + shop_flag: Optional[int] = ..., + pkg_id: Optional[int] = ..., + pic_id: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["pic_id",b"pic_id","pkg_id",b"pkg_id","shop_flag",b"shop_flag"]) -> bool: ... + def ClearField(self, field_name: Literal["pic_id",b"pic_id","pkg_id",b"pkg_id","shop_flag",b"shop_flag"]) -> None: ... + +class ExtensionCommPicTryUp(Message): + DESCRIPTOR: Descriptor + EXTINFO_FIELD_NUMBER: int + @property + def extinfo(self) -> RepeatedScalarFieldContainer[bytes]: ... + def __init__(self, + *, + extinfo: Optional[Iterable[bytes]] = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["extinfo",b"extinfo"]) -> None: ... + +class ExtensionExpRoamTryUp(Message): + DESCRIPTOR: Descriptor + EXPROAM_PIC_INFO_FIELD_NUMBER: int + @property + def exproam_pic_info(self) -> RepeatedCompositeFieldContainer[ExpRoamPicInfo]: ... + def __init__(self, + *, + exproam_pic_info: Optional[Iterable[ExpRoamPicInfo]] = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["exproam_pic_info",b"exproam_pic_info"]) -> None: ... + +class GetImgUrlReq(Message): + DESCRIPTOR: Descriptor + GROUP_CODE_FIELD_NUMBER: int + DST_UIN_FIELD_NUMBER: int + FILEID_FIELD_NUMBER: int + FILE_MD5_FIELD_NUMBER: int + URL_FLAG_FIELD_NUMBER: int + URL_TYPE_FIELD_NUMBER: int + REQ_TERM_FIELD_NUMBER: int + REQ_PLATFORM_TYPE_FIELD_NUMBER: int + INNER_IP_FIELD_NUMBER: int + BU_TYPE_FIELD_NUMBER: int + BUILD_VER_FIELD_NUMBER: int + FILE_ID_FIELD_NUMBER: int + FILE_SIZE_FIELD_NUMBER: int + ORIGINAL_PIC_FIELD_NUMBER: int + RETRY_REQ_FIELD_NUMBER: int + FILE_HEIGHT_FIELD_NUMBER: int + FILE_WIDTH_FIELD_NUMBER: int + PIC_TYPE_FIELD_NUMBER: int + PIC_UP_TIMESTAMP_FIELD_NUMBER: int + REQ_TRANSFER_TYPE_FIELD_NUMBER: int + QQMEET_GUILD_ID_FIELD_NUMBER: int + QQMEET_CHANNEL_ID_FIELD_NUMBER: int + DOWNLOAD_INDEX_FIELD_NUMBER: int + group_code: int + dst_uin: int + fileid: int + file_md5: bytes + url_flag: int + url_type: int + req_term: int + req_platform_type: int + inner_ip: int + bu_type: int + build_ver: bytes + file_id: int + file_size: int + original_pic: int + retry_req: int + file_height: int + file_width: int + pic_type: int + pic_up_timestamp: int + req_transfer_type: int + qqmeet_guild_id: int + qqmeet_channel_id: int + download_index: bytes + def __init__(self, + *, + group_code: Optional[int] = ..., + dst_uin: Optional[int] = ..., + fileid: Optional[int] = ..., + file_md5: Optional[bytes] = ..., + url_flag: Optional[int] = ..., + url_type: Optional[int] = ..., + req_term: Optional[int] = ..., + req_platform_type: Optional[int] = ..., + inner_ip: Optional[int] = ..., + bu_type: Optional[int] = ..., + build_ver: Optional[bytes] = ..., + file_id: Optional[int] = ..., + file_size: Optional[int] = ..., + original_pic: Optional[int] = ..., + retry_req: Optional[int] = ..., + file_height: Optional[int] = ..., + file_width: Optional[int] = ..., + pic_type: Optional[int] = ..., + pic_up_timestamp: Optional[int] = ..., + req_transfer_type: Optional[int] = ..., + qqmeet_guild_id: Optional[int] = ..., + qqmeet_channel_id: Optional[int] = ..., + download_index: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["bu_type",b"bu_type","build_ver",b"build_ver","download_index",b"download_index","dst_uin",b"dst_uin","file_height",b"file_height","file_id",b"file_id","file_md5",b"file_md5","file_size",b"file_size","file_width",b"file_width","fileid",b"fileid","group_code",b"group_code","inner_ip",b"inner_ip","original_pic",b"original_pic","pic_type",b"pic_type","pic_up_timestamp",b"pic_up_timestamp","qqmeet_channel_id",b"qqmeet_channel_id","qqmeet_guild_id",b"qqmeet_guild_id","req_platform_type",b"req_platform_type","req_term",b"req_term","req_transfer_type",b"req_transfer_type","retry_req",b"retry_req","url_flag",b"url_flag","url_type",b"url_type"]) -> bool: ... + def ClearField(self, field_name: Literal["bu_type",b"bu_type","build_ver",b"build_ver","download_index",b"download_index","dst_uin",b"dst_uin","file_height",b"file_height","file_id",b"file_id","file_md5",b"file_md5","file_size",b"file_size","file_width",b"file_width","fileid",b"fileid","group_code",b"group_code","inner_ip",b"inner_ip","original_pic",b"original_pic","pic_type",b"pic_type","pic_up_timestamp",b"pic_up_timestamp","qqmeet_channel_id",b"qqmeet_channel_id","qqmeet_guild_id",b"qqmeet_guild_id","req_platform_type",b"req_platform_type","req_term",b"req_term","req_transfer_type",b"req_transfer_type","retry_req",b"retry_req","url_flag",b"url_flag","url_type",b"url_type"]) -> None: ... + +class GetImgUrlRsp(Message): + DESCRIPTOR: Descriptor + FILEID_FIELD_NUMBER: int + FILE_MD5_FIELD_NUMBER: int + RESULT_FIELD_NUMBER: int + FAIL_MSG_FIELD_NUMBER: int + IMG_INFO_FIELD_NUMBER: int + THUMB_DOWN_URL_FIELD_NUMBER: int + ORIGINAL_DOWN_URL_FIELD_NUMBER: int + BIG_DOWN_URL_FIELD_NUMBER: int + DOWN_IP_FIELD_NUMBER: int + DOWN_PORT_FIELD_NUMBER: int + DOWN_DOMAIN_FIELD_NUMBER: int + THUMB_DOWN_PARA_FIELD_NUMBER: int + ORIGINAL_DOWN_PARA_FIELD_NUMBER: int + BIG_DOWN_PARA_FIELD_NUMBER: int + FILE_ID_FIELD_NUMBER: int + AUTO_DOWN_TYPE_FIELD_NUMBER: int + ORDER_DOWN_TYPE_FIELD_NUMBER: int + BIG_THUMB_DOWN_PARA_FIELD_NUMBER: int + HTTPS_URL_FLAG_FIELD_NUMBER: int + DOWN_IP6_FIELD_NUMBER: int + CLIENT_IP6_FIELD_NUMBER: int + fileid: int + file_md5: bytes + result: int + fail_msg: bytes + @property + def img_info(self) -> ImgInfo: ... + @property + def thumb_down_url(self) -> RepeatedScalarFieldContainer[bytes]: ... + @property + def original_down_url(self) -> RepeatedScalarFieldContainer[bytes]: ... + @property + def big_down_url(self) -> RepeatedScalarFieldContainer[bytes]: ... + @property + def down_ip(self) -> RepeatedScalarFieldContainer[int]: ... + @property + def down_port(self) -> RepeatedScalarFieldContainer[int]: ... + down_domain: bytes + thumb_down_para: bytes + original_down_para: bytes + big_down_para: bytes + file_id: int + auto_down_type: int + @property + def order_down_type(self) -> RepeatedScalarFieldContainer[int]: ... + big_thumb_down_para: bytes + https_url_flag: int + @property + def down_ip6(self) -> RepeatedCompositeFieldContainer[IPv6Info]: ... + client_ip6: bytes + def __init__(self, + *, + fileid: Optional[int] = ..., + file_md5: Optional[bytes] = ..., + result: Optional[int] = ..., + fail_msg: Optional[bytes] = ..., + img_info: Optional[ImgInfo] = ..., + thumb_down_url: Optional[Iterable[bytes]] = ..., + original_down_url: Optional[Iterable[bytes]] = ..., + big_down_url: Optional[Iterable[bytes]] = ..., + down_ip: Optional[Iterable[int]] = ..., + down_port: Optional[Iterable[int]] = ..., + down_domain: Optional[bytes] = ..., + thumb_down_para: Optional[bytes] = ..., + original_down_para: Optional[bytes] = ..., + big_down_para: Optional[bytes] = ..., + file_id: Optional[int] = ..., + auto_down_type: Optional[int] = ..., + order_down_type: Optional[Iterable[int]] = ..., + big_thumb_down_para: Optional[bytes] = ..., + https_url_flag: Optional[int] = ..., + down_ip6: Optional[Iterable[IPv6Info]] = ..., + client_ip6: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["auto_down_type",b"auto_down_type","big_down_para",b"big_down_para","big_thumb_down_para",b"big_thumb_down_para","client_ip6",b"client_ip6","down_domain",b"down_domain","fail_msg",b"fail_msg","file_id",b"file_id","file_md5",b"file_md5","fileid",b"fileid","https_url_flag",b"https_url_flag","img_info",b"img_info","original_down_para",b"original_down_para","result",b"result","thumb_down_para",b"thumb_down_para"]) -> bool: ... + def ClearField(self, field_name: Literal["auto_down_type",b"auto_down_type","big_down_para",b"big_down_para","big_down_url",b"big_down_url","big_thumb_down_para",b"big_thumb_down_para","client_ip6",b"client_ip6","down_domain",b"down_domain","down_ip",b"down_ip","down_ip6",b"down_ip6","down_port",b"down_port","fail_msg",b"fail_msg","file_id",b"file_id","file_md5",b"file_md5","fileid",b"fileid","https_url_flag",b"https_url_flag","img_info",b"img_info","order_down_type",b"order_down_type","original_down_para",b"original_down_para","original_down_url",b"original_down_url","result",b"result","thumb_down_para",b"thumb_down_para","thumb_down_url",b"thumb_down_url"]) -> None: ... + +class GetPttUrlReq(Message): + DESCRIPTOR: Descriptor + GROUP_CODE_FIELD_NUMBER: int + DST_UIN_FIELD_NUMBER: int + FILEID_FIELD_NUMBER: int + FILE_MD5_FIELD_NUMBER: int + REQ_TERM_FIELD_NUMBER: int + REQ_PLATFORM_TYPE_FIELD_NUMBER: int + INNER_IP_FIELD_NUMBER: int + BU_TYPE_FIELD_NUMBER: int + BUILD_VER_FIELD_NUMBER: int + FILE_ID_FIELD_NUMBER: int + FILE_KEY_FIELD_NUMBER: int + CODEC_FIELD_NUMBER: int + BU_ID_FIELD_NUMBER: int + REQ_TRANSFER_TYPE_FIELD_NUMBER: int + IS_AUTO_FIELD_NUMBER: int + group_code: int + dst_uin: int + fileid: int + file_md5: bytes + req_term: int + req_platform_type: int + inner_ip: int + bu_type: int + build_ver: bytes + file_id: int + file_key: bytes + codec: int + bu_id: int + req_transfer_type: int + is_auto: int + def __init__(self, + *, + group_code: Optional[int] = ..., + dst_uin: Optional[int] = ..., + fileid: Optional[int] = ..., + file_md5: Optional[bytes] = ..., + req_term: Optional[int] = ..., + req_platform_type: Optional[int] = ..., + inner_ip: Optional[int] = ..., + bu_type: Optional[int] = ..., + build_ver: Optional[bytes] = ..., + file_id: Optional[int] = ..., + file_key: Optional[bytes] = ..., + codec: Optional[int] = ..., + bu_id: Optional[int] = ..., + req_transfer_type: Optional[int] = ..., + is_auto: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["bu_id",b"bu_id","bu_type",b"bu_type","build_ver",b"build_ver","codec",b"codec","dst_uin",b"dst_uin","file_id",b"file_id","file_key",b"file_key","file_md5",b"file_md5","fileid",b"fileid","group_code",b"group_code","inner_ip",b"inner_ip","is_auto",b"is_auto","req_platform_type",b"req_platform_type","req_term",b"req_term","req_transfer_type",b"req_transfer_type"]) -> bool: ... + def ClearField(self, field_name: Literal["bu_id",b"bu_id","bu_type",b"bu_type","build_ver",b"build_ver","codec",b"codec","dst_uin",b"dst_uin","file_id",b"file_id","file_key",b"file_key","file_md5",b"file_md5","fileid",b"fileid","group_code",b"group_code","inner_ip",b"inner_ip","is_auto",b"is_auto","req_platform_type",b"req_platform_type","req_term",b"req_term","req_transfer_type",b"req_transfer_type"]) -> None: ... + +class GetPttUrlRsp(Message): + DESCRIPTOR: Descriptor + FILEID_FIELD_NUMBER: int + FILE_MD5_FIELD_NUMBER: int + RESULT_FIELD_NUMBER: int + FAIL_MSG_FIELD_NUMBER: int + DOWN_URL_FIELD_NUMBER: int + DOWN_IP_FIELD_NUMBER: int + DOWN_PORT_FIELD_NUMBER: int + DOWN_DOMAIN_FIELD_NUMBER: int + DOWN_PARA_FIELD_NUMBER: int + FILE_ID_FIELD_NUMBER: int + TRANSFER_TYPE_FIELD_NUMBER: int + ALLOW_RETRY_FIELD_NUMBER: int + DOWN_IP6_FIELD_NUMBER: int + CLIENT_IP6_FIELD_NUMBER: int + DOMAIN_FIELD_NUMBER: int + fileid: int + file_md5: bytes + result: int + fail_msg: bytes + @property + def down_url(self) -> RepeatedScalarFieldContainer[bytes]: ... + @property + def down_ip(self) -> RepeatedScalarFieldContainer[int]: ... + @property + def down_port(self) -> RepeatedScalarFieldContainer[int]: ... + down_domain: bytes + down_para: bytes + file_id: int + transfer_type: int + allow_retry: int + @property + def down_ip6(self) -> RepeatedCompositeFieldContainer[IPv6Info]: ... + client_ip6: bytes + domain: Text + def __init__(self, + *, + fileid: Optional[int] = ..., + file_md5: Optional[bytes] = ..., + result: Optional[int] = ..., + fail_msg: Optional[bytes] = ..., + down_url: Optional[Iterable[bytes]] = ..., + down_ip: Optional[Iterable[int]] = ..., + down_port: Optional[Iterable[int]] = ..., + down_domain: Optional[bytes] = ..., + down_para: Optional[bytes] = ..., + file_id: Optional[int] = ..., + transfer_type: Optional[int] = ..., + allow_retry: Optional[int] = ..., + down_ip6: Optional[Iterable[IPv6Info]] = ..., + client_ip6: Optional[bytes] = ..., + domain: Optional[Text] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["allow_retry",b"allow_retry","client_ip6",b"client_ip6","domain",b"domain","down_domain",b"down_domain","down_para",b"down_para","fail_msg",b"fail_msg","file_id",b"file_id","file_md5",b"file_md5","fileid",b"fileid","result",b"result","transfer_type",b"transfer_type"]) -> bool: ... + def ClearField(self, field_name: Literal["allow_retry",b"allow_retry","client_ip6",b"client_ip6","domain",b"domain","down_domain",b"down_domain","down_ip",b"down_ip","down_ip6",b"down_ip6","down_para",b"down_para","down_port",b"down_port","down_url",b"down_url","fail_msg",b"fail_msg","file_id",b"file_id","file_md5",b"file_md5","fileid",b"fileid","result",b"result","transfer_type",b"transfer_type"]) -> None: ... + +class IPv6Info(Message): + DESCRIPTOR: Descriptor + IP6_FIELD_NUMBER: int + PORT_FIELD_NUMBER: int + ip6: bytes + port: int + def __init__(self, + *, + ip6: Optional[bytes] = ..., + port: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["ip6",b"ip6","port",b"port"]) -> bool: ... + def ClearField(self, field_name: Literal["ip6",b"ip6","port",b"port"]) -> None: ... + +class ImgInfo(Message): + DESCRIPTOR: Descriptor + FILE_MD5_FIELD_NUMBER: int + FILE_TYPE_FIELD_NUMBER: int + FILE_SIZE_FIELD_NUMBER: int + FILE_WIDTH_FIELD_NUMBER: int + FILE_HEIGHT_FIELD_NUMBER: int + file_md5: bytes + file_type: int + file_size: int + file_width: int + file_height: int + def __init__(self, + *, + file_md5: Optional[bytes] = ..., + file_type: Optional[int] = ..., + file_size: Optional[int] = ..., + file_width: Optional[int] = ..., + file_height: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["file_height",b"file_height","file_md5",b"file_md5","file_size",b"file_size","file_type",b"file_type","file_width",b"file_width"]) -> bool: ... + def ClearField(self, field_name: Literal["file_height",b"file_height","file_md5",b"file_md5","file_size",b"file_size","file_type",b"file_type","file_width",b"file_width"]) -> None: ... + +class PicSize(Message): + DESCRIPTOR: Descriptor + ORIGINAL_FIELD_NUMBER: int + THUMB_FIELD_NUMBER: int + HIGH_FIELD_NUMBER: int + original: int + thumb: int + high: int + def __init__(self, + *, + original: Optional[int] = ..., + thumb: Optional[int] = ..., + high: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["high",b"high","original",b"original","thumb",b"thumb"]) -> bool: ... + def ClearField(self, field_name: Literal["high",b"high","original",b"original","thumb",b"thumb"]) -> None: ... + +class ReqBody(Message): + DESCRIPTOR: Descriptor + NET_TYPE_FIELD_NUMBER: int + SUBCMD_FIELD_NUMBER: int + TRYUP_IMG_REQ_FIELD_NUMBER: int + GETIMG_URL_REQ_FIELD_NUMBER: int + TRYUP_PTT_REQ_FIELD_NUMBER: int + GETPTT_URL_REQ_FIELD_NUMBER: int + COMMAND_ID_FIELD_NUMBER: int + DEL_IMG_REQ_FIELD_NUMBER: int + EXTENSION_FIELD_NUMBER: int + net_type: int + subcmd: int + @property + def tryup_img_req(self) -> RepeatedCompositeFieldContainer[TryUpImgReq]: ... + @property + def getimg_url_req(self) -> RepeatedCompositeFieldContainer[GetImgUrlReq]: ... + @property + def tryup_ptt_req(self) -> RepeatedCompositeFieldContainer[TryUpPttReq]: ... + @property + def getptt_url_req(self) -> RepeatedCompositeFieldContainer[GetPttUrlReq]: ... + command_id: int + @property + def del_img_req(self) -> RepeatedCompositeFieldContainer[DelImgReq]: ... + extension: bytes + def __init__(self, + *, + net_type: Optional[int] = ..., + subcmd: Optional[int] = ..., + tryup_img_req: Optional[Iterable[TryUpImgReq]] = ..., + getimg_url_req: Optional[Iterable[GetImgUrlReq]] = ..., + tryup_ptt_req: Optional[Iterable[TryUpPttReq]] = ..., + getptt_url_req: Optional[Iterable[GetPttUrlReq]] = ..., + command_id: Optional[int] = ..., + del_img_req: Optional[Iterable[DelImgReq]] = ..., + extension: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["command_id",b"command_id","extension",b"extension","net_type",b"net_type","subcmd",b"subcmd"]) -> bool: ... + def ClearField(self, field_name: Literal["command_id",b"command_id","del_img_req",b"del_img_req","extension",b"extension","getimg_url_req",b"getimg_url_req","getptt_url_req",b"getptt_url_req","net_type",b"net_type","subcmd",b"subcmd","tryup_img_req",b"tryup_img_req","tryup_ptt_req",b"tryup_ptt_req"]) -> None: ... + +class RspBody(Message): + DESCRIPTOR: Descriptor + CLIENT_IP_FIELD_NUMBER: int + SUBCMD_FIELD_NUMBER: int + TRYUP_IMG_RSP_FIELD_NUMBER: int + GETIMG_URL_RSP_FIELD_NUMBER: int + TRYUP_PTT_RSP_FIELD_NUMBER: int + GETPTT_URL_RSP_FIELD_NUMBER: int + DEL_IMG_RSP_FIELD_NUMBER: int + client_ip: int + subcmd: int + @property + def tryup_img_rsp(self) -> RepeatedCompositeFieldContainer[TryUpImgRsp]: ... + @property + def getimg_url_rsp(self) -> RepeatedCompositeFieldContainer[GetImgUrlRsp]: ... + @property + def tryup_ptt_rsp(self) -> RepeatedCompositeFieldContainer[TryUpPttRsp]: ... + @property + def getptt_url_rsp(self) -> RepeatedCompositeFieldContainer[GetPttUrlRsp]: ... + @property + def del_img_rsp(self) -> RepeatedCompositeFieldContainer[DelImgRsp]: ... + def __init__(self, + *, + client_ip: Optional[int] = ..., + subcmd: Optional[int] = ..., + tryup_img_rsp: Optional[Iterable[TryUpImgRsp]] = ..., + getimg_url_rsp: Optional[Iterable[GetImgUrlRsp]] = ..., + tryup_ptt_rsp: Optional[Iterable[TryUpPttRsp]] = ..., + getptt_url_rsp: Optional[Iterable[GetPttUrlRsp]] = ..., + del_img_rsp: Optional[Iterable[DelImgRsp]] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["client_ip",b"client_ip","subcmd",b"subcmd"]) -> bool: ... + def ClearField(self, field_name: Literal["client_ip",b"client_ip","del_img_rsp",b"del_img_rsp","getimg_url_rsp",b"getimg_url_rsp","getptt_url_rsp",b"getptt_url_rsp","subcmd",b"subcmd","tryup_img_rsp",b"tryup_img_rsp","tryup_ptt_rsp",b"tryup_ptt_rsp"]) -> None: ... + +class TryUpImgReq(Message): + DESCRIPTOR: Descriptor + GROUP_CODE_FIELD_NUMBER: int + SRC_UIN_FIELD_NUMBER: int + FILE_ID_FIELD_NUMBER: int + FILE_MD5_FIELD_NUMBER: int + FILE_SIZE_FIELD_NUMBER: int + FILE_NAME_FIELD_NUMBER: int + SRC_TERM_FIELD_NUMBER: int + PLATFORM_TYPE_FIELD_NUMBER: int + BU_TYPE_FIELD_NUMBER: int + PIC_WIDTH_FIELD_NUMBER: int + PIC_HEIGHT_FIELD_NUMBER: int + PIC_TYPE_FIELD_NUMBER: int + BUILD_VER_FIELD_NUMBER: int + INNER_IP_FIELD_NUMBER: int + APP_PIC_TYPE_FIELD_NUMBER: int + ORIGINAL_PIC_FIELD_NUMBER: int + FILE_INDEX_FIELD_NUMBER: int + DST_UIN_FIELD_NUMBER: int + SRV_UPLOAD_FIELD_NUMBER: int + TRANSFER_URL_FIELD_NUMBER: int + QQMEET_GUILD_ID_FIELD_NUMBER: int + QQMEET_CHANNEL_ID_FIELD_NUMBER: int + group_code: int + src_uin: int + file_id: int + file_md5: bytes + file_size: int + file_name: bytes + src_term: int + platform_type: int + bu_type: int + pic_width: int + pic_height: int + pic_type: int + build_ver: bytes + inner_ip: int + app_pic_type: int + original_pic: int + file_index: bytes + dst_uin: int + srv_upload: int + transfer_url: bytes + qqmeet_guild_id: int + qqmeet_channel_id: int + def __init__(self, + *, + group_code: Optional[int] = ..., + src_uin: Optional[int] = ..., + file_id: Optional[int] = ..., + file_md5: Optional[bytes] = ..., + file_size: Optional[int] = ..., + file_name: Optional[bytes] = ..., + src_term: Optional[int] = ..., + platform_type: Optional[int] = ..., + bu_type: Optional[int] = ..., + pic_width: Optional[int] = ..., + pic_height: Optional[int] = ..., + pic_type: Optional[int] = ..., + build_ver: Optional[bytes] = ..., + inner_ip: Optional[int] = ..., + app_pic_type: Optional[int] = ..., + original_pic: Optional[int] = ..., + file_index: Optional[bytes] = ..., + dst_uin: Optional[int] = ..., + srv_upload: Optional[int] = ..., + transfer_url: Optional[bytes] = ..., + qqmeet_guild_id: Optional[int] = ..., + qqmeet_channel_id: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["app_pic_type",b"app_pic_type","bu_type",b"bu_type","build_ver",b"build_ver","dst_uin",b"dst_uin","file_id",b"file_id","file_index",b"file_index","file_md5",b"file_md5","file_name",b"file_name","file_size",b"file_size","group_code",b"group_code","inner_ip",b"inner_ip","original_pic",b"original_pic","pic_height",b"pic_height","pic_type",b"pic_type","pic_width",b"pic_width","platform_type",b"platform_type","qqmeet_channel_id",b"qqmeet_channel_id","qqmeet_guild_id",b"qqmeet_guild_id","src_term",b"src_term","src_uin",b"src_uin","srv_upload",b"srv_upload","transfer_url",b"transfer_url"]) -> bool: ... + def ClearField(self, field_name: Literal["app_pic_type",b"app_pic_type","bu_type",b"bu_type","build_ver",b"build_ver","dst_uin",b"dst_uin","file_id",b"file_id","file_index",b"file_index","file_md5",b"file_md5","file_name",b"file_name","file_size",b"file_size","group_code",b"group_code","inner_ip",b"inner_ip","original_pic",b"original_pic","pic_height",b"pic_height","pic_type",b"pic_type","pic_width",b"pic_width","platform_type",b"platform_type","qqmeet_channel_id",b"qqmeet_channel_id","qqmeet_guild_id",b"qqmeet_guild_id","src_term",b"src_term","src_uin",b"src_uin","srv_upload",b"srv_upload","transfer_url",b"transfer_url"]) -> None: ... + +class TryUpImgRsp(Message): + DESCRIPTOR: Descriptor + FILE_ID_FIELD_NUMBER: int + RESULT_FIELD_NUMBER: int + FAIL_MSG_FIELD_NUMBER: int + FILE_EXIT_FIELD_NUMBER: int + IMG_INFO_FIELD_NUMBER: int + UP_IP_FIELD_NUMBER: int + UP_PORT_FIELD_NUMBER: int + UP_UKEY_FIELD_NUMBER: int + FILEID_FIELD_NUMBER: int + UP_OFFSET_FIELD_NUMBER: int + BLOCK_SIZE_FIELD_NUMBER: int + NEW_BIG_CHAN_FIELD_NUMBER: int + UP_IP6_FIELD_NUMBER: int + CLIENT_IP6_FIELD_NUMBER: int + DOWNLOAD_INDEX_FIELD_NUMBER: int + INFO4_BUSI_FIELD_NUMBER: int + file_id: int + result: int + fail_msg: bytes + file_exit: bool + @property + def img_info(self) -> ImgInfo: ... + @property + def up_ip(self) -> RepeatedScalarFieldContainer[int]: ... + @property + def up_port(self) -> RepeatedScalarFieldContainer[int]: ... + up_ukey: bytes + fileid: int + up_offset: int + block_size: int + new_big_chan: bool + @property + def up_ip6(self) -> RepeatedCompositeFieldContainer[IPv6Info]: ... + client_ip6: bytes + download_index: bytes + @property + def info4_busi(self) -> TryUpInfo4Busi: ... + def __init__(self, + *, + file_id: Optional[int] = ..., + result: Optional[int] = ..., + fail_msg: Optional[bytes] = ..., + file_exit: Optional[bool] = ..., + img_info: Optional[ImgInfo] = ..., + up_ip: Optional[Iterable[int]] = ..., + up_port: Optional[Iterable[int]] = ..., + up_ukey: Optional[bytes] = ..., + fileid: Optional[int] = ..., + up_offset: Optional[int] = ..., + block_size: Optional[int] = ..., + new_big_chan: Optional[bool] = ..., + up_ip6: Optional[Iterable[IPv6Info]] = ..., + client_ip6: Optional[bytes] = ..., + download_index: Optional[bytes] = ..., + info4_busi: Optional[TryUpInfo4Busi] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["block_size",b"block_size","client_ip6",b"client_ip6","download_index",b"download_index","fail_msg",b"fail_msg","file_exit",b"file_exit","file_id",b"file_id","fileid",b"fileid","img_info",b"img_info","info4_busi",b"info4_busi","new_big_chan",b"new_big_chan","result",b"result","up_offset",b"up_offset","up_ukey",b"up_ukey"]) -> bool: ... + def ClearField(self, field_name: Literal["block_size",b"block_size","client_ip6",b"client_ip6","download_index",b"download_index","fail_msg",b"fail_msg","file_exit",b"file_exit","file_id",b"file_id","fileid",b"fileid","img_info",b"img_info","info4_busi",b"info4_busi","new_big_chan",b"new_big_chan","result",b"result","up_ip",b"up_ip","up_ip6",b"up_ip6","up_offset",b"up_offset","up_port",b"up_port","up_ukey",b"up_ukey"]) -> None: ... + +class TryUpInfo4Busi(Message): + DESCRIPTOR: Descriptor + DOWN_DOMAIN_FIELD_NUMBER: int + THUMB_DOWN_URL_FIELD_NUMBER: int + ORIGINAL_DOWN_URL_FIELD_NUMBER: int + BIG_DOWN_URL_FIELD_NUMBER: int + FILE_RESID_FIELD_NUMBER: int + down_domain: bytes + thumb_down_url: bytes + original_down_url: bytes + big_down_url: bytes + file_resid: bytes + def __init__(self, + *, + down_domain: Optional[bytes] = ..., + thumb_down_url: Optional[bytes] = ..., + original_down_url: Optional[bytes] = ..., + big_down_url: Optional[bytes] = ..., + file_resid: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["big_down_url",b"big_down_url","down_domain",b"down_domain","file_resid",b"file_resid","original_down_url",b"original_down_url","thumb_down_url",b"thumb_down_url"]) -> bool: ... + def ClearField(self, field_name: Literal["big_down_url",b"big_down_url","down_domain",b"down_domain","file_resid",b"file_resid","original_down_url",b"original_down_url","thumb_down_url",b"thumb_down_url"]) -> None: ... + +class TryUpPttReq(Message): + DESCRIPTOR: Descriptor + GROUP_CODE_FIELD_NUMBER: int + SRC_UIN_FIELD_NUMBER: int + FILE_ID_FIELD_NUMBER: int + FILE_MD5_FIELD_NUMBER: int + FILE_SIZE_FIELD_NUMBER: int + FILE_NAME_FIELD_NUMBER: int + SRC_TERM_FIELD_NUMBER: int + PLATFORM_TYPE_FIELD_NUMBER: int + BU_TYPE_FIELD_NUMBER: int + BUILD_VER_FIELD_NUMBER: int + INNER_IP_FIELD_NUMBER: int + VOICE_LENGTH_FIELD_NUMBER: int + NEW_UP_CHAN_FIELD_NUMBER: int + CODEC_FIELD_NUMBER: int + VOICE_TYPE_FIELD_NUMBER: int + BU_ID_FIELD_NUMBER: int + group_code: int + src_uin: int + file_id: int + file_md5: bytes + file_size: int + file_name: bytes + src_term: int + platform_type: int + bu_type: int + build_ver: bytes + inner_ip: int + voice_length: int + new_up_chan: bool + codec: int + voice_type: int + bu_id: int + def __init__(self, + *, + group_code: Optional[int] = ..., + src_uin: Optional[int] = ..., + file_id: Optional[int] = ..., + file_md5: Optional[bytes] = ..., + file_size: Optional[int] = ..., + file_name: Optional[bytes] = ..., + src_term: Optional[int] = ..., + platform_type: Optional[int] = ..., + bu_type: Optional[int] = ..., + build_ver: Optional[bytes] = ..., + inner_ip: Optional[int] = ..., + voice_length: Optional[int] = ..., + new_up_chan: Optional[bool] = ..., + codec: Optional[int] = ..., + voice_type: Optional[int] = ..., + bu_id: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["bu_id",b"bu_id","bu_type",b"bu_type","build_ver",b"build_ver","codec",b"codec","file_id",b"file_id","file_md5",b"file_md5","file_name",b"file_name","file_size",b"file_size","group_code",b"group_code","inner_ip",b"inner_ip","new_up_chan",b"new_up_chan","platform_type",b"platform_type","src_term",b"src_term","src_uin",b"src_uin","voice_length",b"voice_length","voice_type",b"voice_type"]) -> bool: ... + def ClearField(self, field_name: Literal["bu_id",b"bu_id","bu_type",b"bu_type","build_ver",b"build_ver","codec",b"codec","file_id",b"file_id","file_md5",b"file_md5","file_name",b"file_name","file_size",b"file_size","group_code",b"group_code","inner_ip",b"inner_ip","new_up_chan",b"new_up_chan","platform_type",b"platform_type","src_term",b"src_term","src_uin",b"src_uin","voice_length",b"voice_length","voice_type",b"voice_type"]) -> None: ... + +class TryUpPttRsp(Message): + DESCRIPTOR: Descriptor + FILE_ID_FIELD_NUMBER: int + RESULT_FIELD_NUMBER: int + FAIL_MSG_FIELD_NUMBER: int + FILE_EXIT_FIELD_NUMBER: int + UP_IP_FIELD_NUMBER: int + UP_PORT_FIELD_NUMBER: int + UP_UKEY_FIELD_NUMBER: int + FILEID_FIELD_NUMBER: int + UP_OFFSET_FIELD_NUMBER: int + BLOCK_SIZE_FIELD_NUMBER: int + FILE_KEY_FIELD_NUMBER: int + CHANNEL_TYPE_FIELD_NUMBER: int + UP_IP6_FIELD_NUMBER: int + CLIENT_IP6_FIELD_NUMBER: int + file_id: int + result: int + fail_msg: bytes + file_exit: bool + @property + def up_ip(self) -> RepeatedScalarFieldContainer[int]: ... + @property + def up_port(self) -> RepeatedScalarFieldContainer[int]: ... + up_ukey: bytes + fileid: int + up_offset: int + block_size: int + file_key: bytes + channel_type: int + @property + def up_ip6(self) -> RepeatedCompositeFieldContainer[IPv6Info]: ... + client_ip6: bytes + def __init__(self, + *, + file_id: Optional[int] = ..., + result: Optional[int] = ..., + fail_msg: Optional[bytes] = ..., + file_exit: Optional[bool] = ..., + up_ip: Optional[Iterable[int]] = ..., + up_port: Optional[Iterable[int]] = ..., + up_ukey: Optional[bytes] = ..., + fileid: Optional[int] = ..., + up_offset: Optional[int] = ..., + block_size: Optional[int] = ..., + file_key: Optional[bytes] = ..., + channel_type: Optional[int] = ..., + up_ip6: Optional[Iterable[IPv6Info]] = ..., + client_ip6: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["block_size",b"block_size","channel_type",b"channel_type","client_ip6",b"client_ip6","fail_msg",b"fail_msg","file_exit",b"file_exit","file_id",b"file_id","file_key",b"file_key","fileid",b"fileid","result",b"result","up_offset",b"up_offset","up_ukey",b"up_ukey"]) -> bool: ... + def ClearField(self, field_name: Literal["block_size",b"block_size","channel_type",b"channel_type","client_ip6",b"client_ip6","fail_msg",b"fail_msg","file_exit",b"file_exit","file_id",b"file_id","file_key",b"file_key","fileid",b"fileid","result",b"result","up_ip",b"up_ip","up_ip6",b"up_ip6","up_offset",b"up_offset","up_port",b"up_port","up_ukey",b"up_ukey"]) -> None: ... diff --git a/cai/pb/im/msg/common/common_pb2.py b/cai/pb/im/msg/common/common_pb2.py index c36a1de8..d7db7645 100644 --- a/cai/pb/im/msg/common/common_pb2.py +++ b/cai/pb/im/msg/common/common_pb2.py @@ -3,6 +3,7 @@ # source: cai/pb/im/msg/common/common.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -13,249 +14,14 @@ -DESCRIPTOR = _descriptor.FileDescriptor( - name='cai/pb/im/msg/common/common.proto', - package='im.msg.common', - syntax='proto2', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n!cai/pb/im/msg/common/common.proto\x12\rim.msg.common\"1\n\tGroupInfo\x12\x10\n\x08group_id\x18\x01 \x01(\x04\x12\x12\n\ngroup_type\x18\x02 \x01(\r\"J\n\tSignature\x12\x10\n\x08key_type\x18\x01 \x01(\r\x12\x16\n\x0esession_app_id\x18\x02 \x01(\r\x12\x13\n\x0bsession_key\x18\x03 \x01(\x0c\"<\n\x05Token\x12\x0b\n\x03\x62uf\x18\x01 \x01(\x0c\x12\x10\n\x08\x63\x32\x63_type\x18\x02 \x01(\r\x12\x14\n\x0cservice_type\x18\x03 \x01(\r\"\xbe\x01\n\x04User\x12\x0b\n\x03uin\x18\x01 \x01(\x04\x12\x0e\n\x06\x61pp_id\x18\x02 \x01(\r\x12\x13\n\x0binstance_id\x18\x03 \x01(\r\x12\x10\n\x08\x61pp_type\x18\x04 \x01(\r\x12\x11\n\tclient_ip\x18\x05 \x01(\x07\x12\x0f\n\x07version\x18\x06 \x01(\r\x12\x14\n\x0cphone_number\x18\x07 \x01(\t\x12\x13\n\x0bplatform_id\x18\x08 \x01(\r\x12\x10\n\x08language\x18\t \x01(\r\x12\x11\n\tequip_key\x18\n \x01(\x0c' -) +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!cai/pb/im/msg/common/common.proto\x12\rim.msg.common\"1\n\tGroupInfo\x12\x10\n\x08group_id\x18\x01 \x01(\x04\x12\x12\n\ngroup_type\x18\x02 \x01(\r\"J\n\tSignature\x12\x10\n\x08key_type\x18\x01 \x01(\r\x12\x16\n\x0esession_app_id\x18\x02 \x01(\r\x12\x13\n\x0bsession_key\x18\x03 \x01(\x0c\"<\n\x05Token\x12\x0b\n\x03\x62uf\x18\x01 \x01(\x0c\x12\x10\n\x08\x63\x32\x63_type\x18\x02 \x01(\r\x12\x14\n\x0cservice_type\x18\x03 \x01(\r\"\xbe\x01\n\x04User\x12\x0b\n\x03uin\x18\x01 \x01(\x04\x12\x0e\n\x06\x61pp_id\x18\x02 \x01(\r\x12\x13\n\x0binstance_id\x18\x03 \x01(\r\x12\x10\n\x08\x61pp_type\x18\x04 \x01(\r\x12\x11\n\tclient_ip\x18\x05 \x01(\x07\x12\x0f\n\x07version\x18\x06 \x01(\r\x12\x14\n\x0cphone_number\x18\x07 \x01(\t\x12\x13\n\x0bplatform_id\x18\x08 \x01(\r\x12\x10\n\x08language\x18\t \x01(\r\x12\x11\n\tequip_key\x18\n \x01(\x0c') - -_GROUPINFO = _descriptor.Descriptor( - name='GroupInfo', - full_name='im.msg.common.GroupInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='group_id', full_name='im.msg.common.GroupInfo.group_id', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_type', full_name='im.msg.common.GroupInfo.group_type', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=52, - serialized_end=101, -) - - -_SIGNATURE = _descriptor.Descriptor( - name='Signature', - full_name='im.msg.common.Signature', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='key_type', full_name='im.msg.common.Signature.key_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='session_app_id', full_name='im.msg.common.Signature.session_app_id', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='session_key', full_name='im.msg.common.Signature.session_key', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=103, - serialized_end=177, -) - - -_TOKEN = _descriptor.Descriptor( - name='Token', - full_name='im.msg.common.Token', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='buf', full_name='im.msg.common.Token.buf', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='c2c_type', full_name='im.msg.common.Token.c2c_type', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='service_type', full_name='im.msg.common.Token.service_type', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=179, - serialized_end=239, -) - - -_USER = _descriptor.Descriptor( - name='User', - full_name='im.msg.common.User', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='uin', full_name='im.msg.common.User.uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='app_id', full_name='im.msg.common.User.app_id', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='instance_id', full_name='im.msg.common.User.instance_id', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='app_type', full_name='im.msg.common.User.app_type', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='client_ip', full_name='im.msg.common.User.client_ip', index=4, - number=5, type=7, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='version', full_name='im.msg.common.User.version', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='phone_number', full_name='im.msg.common.User.phone_number', index=6, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='platform_id', full_name='im.msg.common.User.platform_id', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='language', full_name='im.msg.common.User.language', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='equip_key', full_name='im.msg.common.User.equip_key', index=9, - number=10, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=242, - serialized_end=432, -) - -DESCRIPTOR.message_types_by_name['GroupInfo'] = _GROUPINFO -DESCRIPTOR.message_types_by_name['Signature'] = _SIGNATURE -DESCRIPTOR.message_types_by_name['Token'] = _TOKEN -DESCRIPTOR.message_types_by_name['User'] = _USER -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - +_GROUPINFO = DESCRIPTOR.message_types_by_name['GroupInfo'] +_SIGNATURE = DESCRIPTOR.message_types_by_name['Signature'] +_TOKEN = DESCRIPTOR.message_types_by_name['Token'] +_USER = DESCRIPTOR.message_types_by_name['User'] GroupInfo = _reflection.GeneratedProtocolMessageType('GroupInfo', (_message.Message,), { 'DESCRIPTOR' : _GROUPINFO, '__module__' : 'cai.pb.im.msg.common.common_pb2' @@ -284,5 +50,15 @@ }) _sym_db.RegisterMessage(User) - +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _GROUPINFO._serialized_start=52 + _GROUPINFO._serialized_end=101 + _SIGNATURE._serialized_start=103 + _SIGNATURE._serialized_end=177 + _TOKEN._serialized_start=179 + _TOKEN._serialized_end=239 + _USER._serialized_start=242 + _USER._serialized_end=432 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/msg/common/common_pb2.pyi b/cai/pb/im/msg/common/common_pb2.pyi index f27c8021..e4e58b11 100644 --- a/cai/pb/im/msg/common/common_pb2.pyi +++ b/cai/pb/im/msg/common/common_pb2.pyi @@ -27,61 +27,61 @@ from typing_extensions import ( ) -DESCRIPTOR: FileDescriptor = ... +DESCRIPTOR: FileDescriptor class GroupInfo(Message): - DESCRIPTOR: Descriptor = ... + """tencent/im/msg/im_common.java + + """ + DESCRIPTOR: Descriptor GROUP_ID_FIELD_NUMBER: int GROUP_TYPE_FIELD_NUMBER: int - group_id: int = ... - group_type: int = ... - + group_id: int + group_type: int def __init__(self, *, - group_id : Optional[int] = ..., - group_type : Optional[int] = ..., + group_id: Optional[int] = ..., + group_type: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"group_id",b"group_id",u"group_type",b"group_type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"group_id",b"group_id",u"group_type",b"group_type"]) -> None: ... + def HasField(self, field_name: Literal["group_id",b"group_id","group_type",b"group_type"]) -> bool: ... + def ClearField(self, field_name: Literal["group_id",b"group_id","group_type",b"group_type"]) -> None: ... class Signature(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor KEY_TYPE_FIELD_NUMBER: int SESSION_APP_ID_FIELD_NUMBER: int SESSION_KEY_FIELD_NUMBER: int - key_type: int = ... - session_app_id: int = ... - session_key: bytes = ... - + key_type: int + session_app_id: int + session_key: bytes def __init__(self, *, - key_type : Optional[int] = ..., - session_app_id : Optional[int] = ..., - session_key : Optional[bytes] = ..., + key_type: Optional[int] = ..., + session_app_id: Optional[int] = ..., + session_key: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"key_type",b"key_type",u"session_app_id",b"session_app_id",u"session_key",b"session_key"]) -> bool: ... - def ClearField(self, field_name: Literal[u"key_type",b"key_type",u"session_app_id",b"session_app_id",u"session_key",b"session_key"]) -> None: ... + def HasField(self, field_name: Literal["key_type",b"key_type","session_app_id",b"session_app_id","session_key",b"session_key"]) -> bool: ... + def ClearField(self, field_name: Literal["key_type",b"key_type","session_app_id",b"session_app_id","session_key",b"session_key"]) -> None: ... class Token(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor BUF_FIELD_NUMBER: int C2C_TYPE_FIELD_NUMBER: int SERVICE_TYPE_FIELD_NUMBER: int - buf: bytes = ... - c2c_type: int = ... - service_type: int = ... - + buf: bytes + c2c_type: int + service_type: int def __init__(self, *, - buf : Optional[bytes] = ..., - c2c_type : Optional[int] = ..., - service_type : Optional[int] = ..., + buf: Optional[bytes] = ..., + c2c_type: Optional[int] = ..., + service_type: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"buf",b"buf",u"c2c_type",b"c2c_type",u"service_type",b"service_type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"buf",b"buf",u"c2c_type",b"c2c_type",u"service_type",b"service_type"]) -> None: ... + def HasField(self, field_name: Literal["buf",b"buf","c2c_type",b"c2c_type","service_type",b"service_type"]) -> bool: ... + def ClearField(self, field_name: Literal["buf",b"buf","c2c_type",b"c2c_type","service_type",b"service_type"]) -> None: ... class User(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor UIN_FIELD_NUMBER: int APP_ID_FIELD_NUMBER: int INSTANCE_ID_FIELD_NUMBER: int @@ -92,29 +92,28 @@ class User(Message): PLATFORM_ID_FIELD_NUMBER: int LANGUAGE_FIELD_NUMBER: int EQUIP_KEY_FIELD_NUMBER: int - uin: int = ... - app_id: int = ... - instance_id: int = ... - app_type: int = ... - client_ip: int = ... - version: int = ... - phone_number: Text = ... - platform_id: int = ... - language: int = ... - equip_key: bytes = ... - + uin: int + app_id: int + instance_id: int + app_type: int + client_ip: int + version: int + phone_number: Text + platform_id: int + language: int + equip_key: bytes def __init__(self, *, - uin : Optional[int] = ..., - app_id : Optional[int] = ..., - instance_id : Optional[int] = ..., - app_type : Optional[int] = ..., - client_ip : Optional[int] = ..., - version : Optional[int] = ..., - phone_number : Optional[Text] = ..., - platform_id : Optional[int] = ..., - language : Optional[int] = ..., - equip_key : Optional[bytes] = ..., + uin: Optional[int] = ..., + app_id: Optional[int] = ..., + instance_id: Optional[int] = ..., + app_type: Optional[int] = ..., + client_ip: Optional[int] = ..., + version: Optional[int] = ..., + phone_number: Optional[Text] = ..., + platform_id: Optional[int] = ..., + language: Optional[int] = ..., + equip_key: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"app_id",b"app_id",u"app_type",b"app_type",u"client_ip",b"client_ip",u"equip_key",b"equip_key",u"instance_id",b"instance_id",u"language",b"language",u"phone_number",b"phone_number",u"platform_id",b"platform_id",u"uin",b"uin",u"version",b"version"]) -> bool: ... - def ClearField(self, field_name: Literal[u"app_id",b"app_id",u"app_type",b"app_type",u"client_ip",b"client_ip",u"equip_key",b"equip_key",u"instance_id",b"instance_id",u"language",b"language",u"phone_number",b"phone_number",u"platform_id",b"platform_id",u"uin",b"uin",u"version",b"version"]) -> None: ... + def HasField(self, field_name: Literal["app_id",b"app_id","app_type",b"app_type","client_ip",b"client_ip","equip_key",b"equip_key","instance_id",b"instance_id","language",b"language","phone_number",b"phone_number","platform_id",b"platform_id","uin",b"uin","version",b"version"]) -> bool: ... + def ClearField(self, field_name: Literal["app_id",b"app_id","app_type",b"app_type","client_ip",b"client_ip","equip_key",b"equip_key","instance_id",b"instance_id","language",b"language","phone_number",b"phone_number","platform_id",b"platform_id","uin",b"uin","version",b"version"]) -> None: ... diff --git a/cai/pb/im/msg/msg/msg_pb2.py b/cai/pb/im/msg/msg/msg_pb2.py index 23b1d189..d18dee4d 100644 --- a/cai/pb/im/msg/msg/msg_pb2.py +++ b/cai/pb/im/msg/msg/msg_pb2.py @@ -3,6 +3,7 @@ # source: cai/pb/im/msg/msg/msg.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -15,486 +16,19 @@ from cai.pb.im.msg.msg_body import msg_body_pb2 as cai_dot_pb_dot_im_dot_msg_dot_msg__body_dot_msg__body__pb2 -DESCRIPTOR = _descriptor.FileDescriptor( - name='cai/pb/im/msg/msg/msg.proto', - package='im.msg.msg', - syntax='proto2', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x1b\x63\x61i/pb/im/msg/msg/msg.proto\x12\nim.msg.msg\x1a!cai/pb/im/msg/common/common.proto\x1a%cai/pb/im/msg/msg_body/msg_body.proto\"\x80\x01\n\x03\x43\x32\x43\x12#\n\x06sender\x18\x01 \x01(\x0b\x32\x13.im.msg.common.User\x12%\n\x08receiver\x18\x02 \x01(\x0b\x32\x13.im.msg.common.User\x12-\n\x0c\x63\x32\x63_relation\x18\x03 \x01(\x0b\x32\x17.im.msg.msg.C2CRelation\"r\n\x0b\x43\x32\x43Relation\x12\x10\n\x08\x63\x32\x63_type\x18\x01 \x01(\r\x12,\n\ngroup_info\x18\x02 \x01(\x0b\x32\x18.im.msg.common.GroupInfo\x12#\n\x05token\x18\x03 \x01(\x0b\x32\x14.im.msg.common.Token\"\xba\x01\n\x0b\x43ontentHead\x12\x0f\n\x07pkg_num\x18\x01 \x01(\r\x12\x11\n\tpkg_index\x18\x02 \x01(\r\x12\x0b\n\x03seq\x18\x03 \x01(\r\x12\x11\n\tdate_time\x18\x04 \x01(\r\x12\x0c\n\x04type\x18\x05 \x01(\r\x12\x0f\n\x07\x64iv_seq\x18\x06 \x01(\r\x12\x11\n\tmsgdb_uin\x18\x07 \x01(\x04\x12\x11\n\tmsgdb_seq\x18\x08 \x01(\r\x12\x14\n\x0cword_msg_seq\x18\t \x01(\r\x12\x0c\n\x04rand\x18\n \x01(\r\"\x81\x01\n\x05Group\x12#\n\x06sender\x18\x01 \x01(\x0b\x32\x13.im.msg.common.User\x12%\n\x08receiver\x18\x02 \x01(\x0b\x32\x13.im.msg.common.User\x12,\n\ngroup_info\x18\x03 \x01(\x0b\x32\x18.im.msg.common.GroupInfo\"P\n\x03Msg\x12!\n\x04head\x18\x01 \x01(\x0b\x32\x13.im.msg.msg.MsgHead\x12&\n\x04\x62ody\x18\x02 \x01(\x0b\x32\x18.im.msg.msg_body.MsgBody\"\x81\x01\n\x07MsgHead\x12-\n\x0crouting_head\x18\x01 \x01(\x0b\x32\x17.im.msg.msg.RoutingHead\x12-\n\x0c\x63ontent_head\x18\x02 \x01(\x0b\x32\x17.im.msg.msg.ContentHead\x12\x18\n\x10gbk_tmp_msg_body\x18\x03 \x01(\x0c\"r\n\nMsgSendReq\x12\x1c\n\x03msg\x18\x01 \x01(\x0b\x32\x0f.im.msg.msg.Msg\x12\x0e\n\x06\x62u_msg\x18\x02 \x01(\x0c\x12\x0f\n\x07tail_id\x18\x03 \x01(\r\x12\x15\n\rconn_msg_flag\x18\x04 \x01(\r\x12\x0e\n\x06\x63ookie\x18\x05 \x01(\x0c\"\r\n\x0bMsgSendResp\"N\n\x0bRoutingHead\x12\x1d\n\x04\x63\x32_c\x18\x01 \x01(\x0b\x32\x0f.im.msg.msg.C2C\x12 \n\x05group\x18\x02 \x01(\x0b\x32\x11.im.msg.msg.Group' - , - dependencies=[cai_dot_pb_dot_im_dot_msg_dot_common_dot_common__pb2.DESCRIPTOR,cai_dot_pb_dot_im_dot_msg_dot_msg__body_dot_msg__body__pb2.DESCRIPTOR,]) +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x63\x61i/pb/im/msg/msg/msg.proto\x12\nim.msg.msg\x1a!cai/pb/im/msg/common/common.proto\x1a%cai/pb/im/msg/msg_body/msg_body.proto\"\x80\x01\n\x03\x43\x32\x43\x12#\n\x06sender\x18\x01 \x01(\x0b\x32\x13.im.msg.common.User\x12%\n\x08receiver\x18\x02 \x01(\x0b\x32\x13.im.msg.common.User\x12-\n\x0c\x63\x32\x63_relation\x18\x03 \x01(\x0b\x32\x17.im.msg.msg.C2CRelation\"r\n\x0b\x43\x32\x43Relation\x12\x10\n\x08\x63\x32\x63_type\x18\x01 \x01(\r\x12,\n\ngroup_info\x18\x02 \x01(\x0b\x32\x18.im.msg.common.GroupInfo\x12#\n\x05token\x18\x03 \x01(\x0b\x32\x14.im.msg.common.Token\"\xba\x01\n\x0b\x43ontentHead\x12\x0f\n\x07pkg_num\x18\x01 \x01(\r\x12\x11\n\tpkg_index\x18\x02 \x01(\r\x12\x0b\n\x03seq\x18\x03 \x01(\r\x12\x11\n\tdate_time\x18\x04 \x01(\r\x12\x0c\n\x04type\x18\x05 \x01(\r\x12\x0f\n\x07\x64iv_seq\x18\x06 \x01(\r\x12\x11\n\tmsgdb_uin\x18\x07 \x01(\x04\x12\x11\n\tmsgdb_seq\x18\x08 \x01(\r\x12\x14\n\x0cword_msg_seq\x18\t \x01(\r\x12\x0c\n\x04rand\x18\n \x01(\r\"\x81\x01\n\x05Group\x12#\n\x06sender\x18\x01 \x01(\x0b\x32\x13.im.msg.common.User\x12%\n\x08receiver\x18\x02 \x01(\x0b\x32\x13.im.msg.common.User\x12,\n\ngroup_info\x18\x03 \x01(\x0b\x32\x18.im.msg.common.GroupInfo\"P\n\x03Msg\x12!\n\x04head\x18\x01 \x01(\x0b\x32\x13.im.msg.msg.MsgHead\x12&\n\x04\x62ody\x18\x02 \x01(\x0b\x32\x18.im.msg.msg_body.MsgBody\"\x81\x01\n\x07MsgHead\x12-\n\x0crouting_head\x18\x01 \x01(\x0b\x32\x17.im.msg.msg.RoutingHead\x12-\n\x0c\x63ontent_head\x18\x02 \x01(\x0b\x32\x17.im.msg.msg.ContentHead\x12\x18\n\x10gbk_tmp_msg_body\x18\x03 \x01(\x0c\"r\n\nMsgSendReq\x12\x1c\n\x03msg\x18\x01 \x01(\x0b\x32\x0f.im.msg.msg.Msg\x12\x0e\n\x06\x62u_msg\x18\x02 \x01(\x0c\x12\x0f\n\x07tail_id\x18\x03 \x01(\r\x12\x15\n\rconn_msg_flag\x18\x04 \x01(\r\x12\x0e\n\x06\x63ookie\x18\x05 \x01(\x0c\"\r\n\x0bMsgSendResp\"N\n\x0bRoutingHead\x12\x1d\n\x04\x63\x32_c\x18\x01 \x01(\x0b\x32\x0f.im.msg.msg.C2C\x12 \n\x05group\x18\x02 \x01(\x0b\x32\x11.im.msg.msg.Group') - -_C2C = _descriptor.Descriptor( - name='C2C', - full_name='im.msg.msg.C2C', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='sender', full_name='im.msg.msg.C2C.sender', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='receiver', full_name='im.msg.msg.C2C.receiver', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='c2c_relation', full_name='im.msg.msg.C2C.c2c_relation', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=118, - serialized_end=246, -) - - -_C2CRELATION = _descriptor.Descriptor( - name='C2CRelation', - full_name='im.msg.msg.C2CRelation', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='c2c_type', full_name='im.msg.msg.C2CRelation.c2c_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_info', full_name='im.msg.msg.C2CRelation.group_info', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='token', full_name='im.msg.msg.C2CRelation.token', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=248, - serialized_end=362, -) - - -_CONTENTHEAD = _descriptor.Descriptor( - name='ContentHead', - full_name='im.msg.msg.ContentHead', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='pkg_num', full_name='im.msg.msg.ContentHead.pkg_num', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pkg_index', full_name='im.msg.msg.ContentHead.pkg_index', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='seq', full_name='im.msg.msg.ContentHead.seq', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='date_time', full_name='im.msg.msg.ContentHead.date_time', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='type', full_name='im.msg.msg.ContentHead.type', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='div_seq', full_name='im.msg.msg.ContentHead.div_seq', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msgdb_uin', full_name='im.msg.msg.ContentHead.msgdb_uin', index=6, - number=7, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msgdb_seq', full_name='im.msg.msg.ContentHead.msgdb_seq', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='word_msg_seq', full_name='im.msg.msg.ContentHead.word_msg_seq', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rand', full_name='im.msg.msg.ContentHead.rand', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=365, - serialized_end=551, -) - - -_GROUP = _descriptor.Descriptor( - name='Group', - full_name='im.msg.msg.Group', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='sender', full_name='im.msg.msg.Group.sender', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='receiver', full_name='im.msg.msg.Group.receiver', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_info', full_name='im.msg.msg.Group.group_info', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=554, - serialized_end=683, -) - - -_MSG = _descriptor.Descriptor( - name='Msg', - full_name='im.msg.msg.Msg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='head', full_name='im.msg.msg.Msg.head', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='body', full_name='im.msg.msg.Msg.body', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=685, - serialized_end=765, -) - - -_MSGHEAD = _descriptor.Descriptor( - name='MsgHead', - full_name='im.msg.msg.MsgHead', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='routing_head', full_name='im.msg.msg.MsgHead.routing_head', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='content_head', full_name='im.msg.msg.MsgHead.content_head', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='gbk_tmp_msg_body', full_name='im.msg.msg.MsgHead.gbk_tmp_msg_body', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=768, - serialized_end=897, -) - - -_MSGSENDREQ = _descriptor.Descriptor( - name='MsgSendReq', - full_name='im.msg.msg.MsgSendReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='msg', full_name='im.msg.msg.MsgSendReq.msg', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bu_msg', full_name='im.msg.msg.MsgSendReq.bu_msg', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='tail_id', full_name='im.msg.msg.MsgSendReq.tail_id', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='conn_msg_flag', full_name='im.msg.msg.MsgSendReq.conn_msg_flag', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cookie', full_name='im.msg.msg.MsgSendReq.cookie', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=899, - serialized_end=1013, -) - - -_MSGSENDRESP = _descriptor.Descriptor( - name='MsgSendResp', - full_name='im.msg.msg.MsgSendResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1015, - serialized_end=1028, -) - - -_ROUTINGHEAD = _descriptor.Descriptor( - name='RoutingHead', - full_name='im.msg.msg.RoutingHead', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='c2_c', full_name='im.msg.msg.RoutingHead.c2_c', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group', full_name='im.msg.msg.RoutingHead.group', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1030, - serialized_end=1108, -) - -_C2C.fields_by_name['sender'].message_type = cai_dot_pb_dot_im_dot_msg_dot_common_dot_common__pb2._USER -_C2C.fields_by_name['receiver'].message_type = cai_dot_pb_dot_im_dot_msg_dot_common_dot_common__pb2._USER -_C2C.fields_by_name['c2c_relation'].message_type = _C2CRELATION -_C2CRELATION.fields_by_name['group_info'].message_type = cai_dot_pb_dot_im_dot_msg_dot_common_dot_common__pb2._GROUPINFO -_C2CRELATION.fields_by_name['token'].message_type = cai_dot_pb_dot_im_dot_msg_dot_common_dot_common__pb2._TOKEN -_GROUP.fields_by_name['sender'].message_type = cai_dot_pb_dot_im_dot_msg_dot_common_dot_common__pb2._USER -_GROUP.fields_by_name['receiver'].message_type = cai_dot_pb_dot_im_dot_msg_dot_common_dot_common__pb2._USER -_GROUP.fields_by_name['group_info'].message_type = cai_dot_pb_dot_im_dot_msg_dot_common_dot_common__pb2._GROUPINFO -_MSG.fields_by_name['head'].message_type = _MSGHEAD -_MSG.fields_by_name['body'].message_type = cai_dot_pb_dot_im_dot_msg_dot_msg__body_dot_msg__body__pb2._MSGBODY -_MSGHEAD.fields_by_name['routing_head'].message_type = _ROUTINGHEAD -_MSGHEAD.fields_by_name['content_head'].message_type = _CONTENTHEAD -_MSGSENDREQ.fields_by_name['msg'].message_type = _MSG -_ROUTINGHEAD.fields_by_name['c2_c'].message_type = _C2C -_ROUTINGHEAD.fields_by_name['group'].message_type = _GROUP -DESCRIPTOR.message_types_by_name['C2C'] = _C2C -DESCRIPTOR.message_types_by_name['C2CRelation'] = _C2CRELATION -DESCRIPTOR.message_types_by_name['ContentHead'] = _CONTENTHEAD -DESCRIPTOR.message_types_by_name['Group'] = _GROUP -DESCRIPTOR.message_types_by_name['Msg'] = _MSG -DESCRIPTOR.message_types_by_name['MsgHead'] = _MSGHEAD -DESCRIPTOR.message_types_by_name['MsgSendReq'] = _MSGSENDREQ -DESCRIPTOR.message_types_by_name['MsgSendResp'] = _MSGSENDRESP -DESCRIPTOR.message_types_by_name['RoutingHead'] = _ROUTINGHEAD -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - +_C2C = DESCRIPTOR.message_types_by_name['C2C'] +_C2CRELATION = DESCRIPTOR.message_types_by_name['C2CRelation'] +_CONTENTHEAD = DESCRIPTOR.message_types_by_name['ContentHead'] +_GROUP = DESCRIPTOR.message_types_by_name['Group'] +_MSG = DESCRIPTOR.message_types_by_name['Msg'] +_MSGHEAD = DESCRIPTOR.message_types_by_name['MsgHead'] +_MSGSENDREQ = DESCRIPTOR.message_types_by_name['MsgSendReq'] +_MSGSENDRESP = DESCRIPTOR.message_types_by_name['MsgSendResp'] +_ROUTINGHEAD = DESCRIPTOR.message_types_by_name['RoutingHead'] C2C = _reflection.GeneratedProtocolMessageType('C2C', (_message.Message,), { 'DESCRIPTOR' : _C2C, '__module__' : 'cai.pb.im.msg.msg.msg_pb2' @@ -558,5 +92,25 @@ }) _sym_db.RegisterMessage(RoutingHead) - +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _C2C._serialized_start=118 + _C2C._serialized_end=246 + _C2CRELATION._serialized_start=248 + _C2CRELATION._serialized_end=362 + _CONTENTHEAD._serialized_start=365 + _CONTENTHEAD._serialized_end=551 + _GROUP._serialized_start=554 + _GROUP._serialized_end=683 + _MSG._serialized_start=685 + _MSG._serialized_end=765 + _MSGHEAD._serialized_start=768 + _MSGHEAD._serialized_end=897 + _MSGSENDREQ._serialized_start=899 + _MSGSENDREQ._serialized_end=1013 + _MSGSENDRESP._serialized_start=1015 + _MSGSENDRESP._serialized_end=1028 + _ROUTINGHEAD._serialized_start=1030 + _ROUTINGHEAD._serialized_end=1108 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/msg/msg/msg_pb2.pyi b/cai/pb/im/msg/msg/msg_pb2.pyi index 743b2b75..1b7557e9 100644 --- a/cai/pb/im/msg/msg/msg_pb2.pyi +++ b/cai/pb/im/msg/msg/msg_pb2.pyi @@ -36,56 +36,49 @@ from typing_extensions import ( ) -DESCRIPTOR: FileDescriptor = ... +DESCRIPTOR: FileDescriptor class C2C(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SENDER_FIELD_NUMBER: int RECEIVER_FIELD_NUMBER: int C2C_RELATION_FIELD_NUMBER: int - @property def sender(self) -> User: ... - @property def receiver(self) -> User: ... - @property def c2c_relation(self) -> C2CRelation: ... - def __init__(self, *, - sender : Optional[User] = ..., - receiver : Optional[User] = ..., - c2c_relation : Optional[C2CRelation] = ..., + sender: Optional[User] = ..., + receiver: Optional[User] = ..., + c2c_relation: Optional[C2CRelation] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"c2c_relation",b"c2c_relation",u"receiver",b"receiver",u"sender",b"sender"]) -> bool: ... - def ClearField(self, field_name: Literal[u"c2c_relation",b"c2c_relation",u"receiver",b"receiver",u"sender",b"sender"]) -> None: ... + def HasField(self, field_name: Literal["c2c_relation",b"c2c_relation","receiver",b"receiver","sender",b"sender"]) -> bool: ... + def ClearField(self, field_name: Literal["c2c_relation",b"c2c_relation","receiver",b"receiver","sender",b"sender"]) -> None: ... class C2CRelation(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor C2C_TYPE_FIELD_NUMBER: int GROUP_INFO_FIELD_NUMBER: int TOKEN_FIELD_NUMBER: int - c2c_type: int = ... - + c2c_type: int @property def group_info(self) -> GroupInfo: ... - @property def token(self) -> Token: ... - def __init__(self, *, - c2c_type : Optional[int] = ..., - group_info : Optional[GroupInfo] = ..., - token : Optional[Token] = ..., + c2c_type: Optional[int] = ..., + group_info: Optional[GroupInfo] = ..., + token: Optional[Token] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"c2c_type",b"c2c_type",u"group_info",b"group_info",u"token",b"token"]) -> bool: ... - def ClearField(self, field_name: Literal[u"c2c_type",b"c2c_type",u"group_info",b"group_info",u"token",b"token"]) -> None: ... + def HasField(self, field_name: Literal["c2c_type",b"c2c_type","group_info",b"group_info","token",b"token"]) -> bool: ... + def ClearField(self, field_name: Literal["c2c_type",b"c2c_type","group_info",b"group_info","token",b"token"]) -> None: ... class ContentHead(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor PKG_NUM_FIELD_NUMBER: int PKG_INDEX_FIELD_NUMBER: int SEQ_FIELD_NUMBER: int @@ -96,145 +89,128 @@ class ContentHead(Message): MSGDB_SEQ_FIELD_NUMBER: int WORD_MSG_SEQ_FIELD_NUMBER: int RAND_FIELD_NUMBER: int - pkg_num: int = ... - pkg_index: int = ... - seq: int = ... - date_time: int = ... - type: int = ... - div_seq: int = ... - msgdb_uin: int = ... - msgdb_seq: int = ... - word_msg_seq: int = ... - rand: int = ... - + pkg_num: int + pkg_index: int + seq: int + date_time: int + type: int + div_seq: int + msgdb_uin: int + msgdb_seq: int + word_msg_seq: int + rand: int def __init__(self, *, - pkg_num : Optional[int] = ..., - pkg_index : Optional[int] = ..., - seq : Optional[int] = ..., - date_time : Optional[int] = ..., - type : Optional[int] = ..., - div_seq : Optional[int] = ..., - msgdb_uin : Optional[int] = ..., - msgdb_seq : Optional[int] = ..., - word_msg_seq : Optional[int] = ..., - rand : Optional[int] = ..., + pkg_num: Optional[int] = ..., + pkg_index: Optional[int] = ..., + seq: Optional[int] = ..., + date_time: Optional[int] = ..., + type: Optional[int] = ..., + div_seq: Optional[int] = ..., + msgdb_uin: Optional[int] = ..., + msgdb_seq: Optional[int] = ..., + word_msg_seq: Optional[int] = ..., + rand: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"date_time",b"date_time",u"div_seq",b"div_seq",u"msgdb_seq",b"msgdb_seq",u"msgdb_uin",b"msgdb_uin",u"pkg_index",b"pkg_index",u"pkg_num",b"pkg_num",u"rand",b"rand",u"seq",b"seq",u"type",b"type",u"word_msg_seq",b"word_msg_seq"]) -> bool: ... - def ClearField(self, field_name: Literal[u"date_time",b"date_time",u"div_seq",b"div_seq",u"msgdb_seq",b"msgdb_seq",u"msgdb_uin",b"msgdb_uin",u"pkg_index",b"pkg_index",u"pkg_num",b"pkg_num",u"rand",b"rand",u"seq",b"seq",u"type",b"type",u"word_msg_seq",b"word_msg_seq"]) -> None: ... + def HasField(self, field_name: Literal["date_time",b"date_time","div_seq",b"div_seq","msgdb_seq",b"msgdb_seq","msgdb_uin",b"msgdb_uin","pkg_index",b"pkg_index","pkg_num",b"pkg_num","rand",b"rand","seq",b"seq","type",b"type","word_msg_seq",b"word_msg_seq"]) -> bool: ... + def ClearField(self, field_name: Literal["date_time",b"date_time","div_seq",b"div_seq","msgdb_seq",b"msgdb_seq","msgdb_uin",b"msgdb_uin","pkg_index",b"pkg_index","pkg_num",b"pkg_num","rand",b"rand","seq",b"seq","type",b"type","word_msg_seq",b"word_msg_seq"]) -> None: ... class Group(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SENDER_FIELD_NUMBER: int RECEIVER_FIELD_NUMBER: int GROUP_INFO_FIELD_NUMBER: int - @property def sender(self) -> User: ... - @property def receiver(self) -> User: ... - @property def group_info(self) -> GroupInfo: ... - def __init__(self, *, - sender : Optional[User] = ..., - receiver : Optional[User] = ..., - group_info : Optional[GroupInfo] = ..., + sender: Optional[User] = ..., + receiver: Optional[User] = ..., + group_info: Optional[GroupInfo] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"group_info",b"group_info",u"receiver",b"receiver",u"sender",b"sender"]) -> bool: ... - def ClearField(self, field_name: Literal[u"group_info",b"group_info",u"receiver",b"receiver",u"sender",b"sender"]) -> None: ... + def HasField(self, field_name: Literal["group_info",b"group_info","receiver",b"receiver","sender",b"sender"]) -> bool: ... + def ClearField(self, field_name: Literal["group_info",b"group_info","receiver",b"receiver","sender",b"sender"]) -> None: ... class Msg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor HEAD_FIELD_NUMBER: int BODY_FIELD_NUMBER: int - @property def head(self) -> MsgHead: ... - @property def body(self) -> MsgBody: ... - def __init__(self, *, - head : Optional[MsgHead] = ..., - body : Optional[MsgBody] = ..., + head: Optional[MsgHead] = ..., + body: Optional[MsgBody] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"body",b"body",u"head",b"head"]) -> bool: ... - def ClearField(self, field_name: Literal[u"body",b"body",u"head",b"head"]) -> None: ... + def HasField(self, field_name: Literal["body",b"body","head",b"head"]) -> bool: ... + def ClearField(self, field_name: Literal["body",b"body","head",b"head"]) -> None: ... class MsgHead(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor ROUTING_HEAD_FIELD_NUMBER: int CONTENT_HEAD_FIELD_NUMBER: int GBK_TMP_MSG_BODY_FIELD_NUMBER: int - gbk_tmp_msg_body: bytes = ... - @property def routing_head(self) -> RoutingHead: ... - @property def content_head(self) -> ContentHead: ... - + gbk_tmp_msg_body: bytes def __init__(self, *, - routing_head : Optional[RoutingHead] = ..., - content_head : Optional[ContentHead] = ..., - gbk_tmp_msg_body : Optional[bytes] = ..., + routing_head: Optional[RoutingHead] = ..., + content_head: Optional[ContentHead] = ..., + gbk_tmp_msg_body: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"content_head",b"content_head",u"gbk_tmp_msg_body",b"gbk_tmp_msg_body",u"routing_head",b"routing_head"]) -> bool: ... - def ClearField(self, field_name: Literal[u"content_head",b"content_head",u"gbk_tmp_msg_body",b"gbk_tmp_msg_body",u"routing_head",b"routing_head"]) -> None: ... + def HasField(self, field_name: Literal["content_head",b"content_head","gbk_tmp_msg_body",b"gbk_tmp_msg_body","routing_head",b"routing_head"]) -> bool: ... + def ClearField(self, field_name: Literal["content_head",b"content_head","gbk_tmp_msg_body",b"gbk_tmp_msg_body","routing_head",b"routing_head"]) -> None: ... class MsgSendReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor MSG_FIELD_NUMBER: int BU_MSG_FIELD_NUMBER: int TAIL_ID_FIELD_NUMBER: int CONN_MSG_FLAG_FIELD_NUMBER: int COOKIE_FIELD_NUMBER: int - bu_msg: bytes = ... - tail_id: int = ... - conn_msg_flag: int = ... - cookie: bytes = ... - @property def msg(self) -> Msg: ... - + bu_msg: bytes + tail_id: int + conn_msg_flag: int + cookie: bytes def __init__(self, *, - msg : Optional[Msg] = ..., - bu_msg : Optional[bytes] = ..., - tail_id : Optional[int] = ..., - conn_msg_flag : Optional[int] = ..., - cookie : Optional[bytes] = ..., + msg: Optional[Msg] = ..., + bu_msg: Optional[bytes] = ..., + tail_id: Optional[int] = ..., + conn_msg_flag: Optional[int] = ..., + cookie: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"bu_msg",b"bu_msg",u"conn_msg_flag",b"conn_msg_flag",u"cookie",b"cookie",u"msg",b"msg",u"tail_id",b"tail_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"bu_msg",b"bu_msg",u"conn_msg_flag",b"conn_msg_flag",u"cookie",b"cookie",u"msg",b"msg",u"tail_id",b"tail_id"]) -> None: ... + def HasField(self, field_name: Literal["bu_msg",b"bu_msg","conn_msg_flag",b"conn_msg_flag","cookie",b"cookie","msg",b"msg","tail_id",b"tail_id"]) -> bool: ... + def ClearField(self, field_name: Literal["bu_msg",b"bu_msg","conn_msg_flag",b"conn_msg_flag","cookie",b"cookie","msg",b"msg","tail_id",b"tail_id"]) -> None: ... class MsgSendResp(Message): - DESCRIPTOR: Descriptor = ... - + DESCRIPTOR: Descriptor def __init__(self, ) -> None: ... class RoutingHead(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor C2_C_FIELD_NUMBER: int GROUP_FIELD_NUMBER: int - @property def c2_c(self) -> C2C: ... - @property def group(self) -> Group: ... - def __init__(self, *, - c2_c : Optional[C2C] = ..., - group : Optional[Group] = ..., + c2_c: Optional[C2C] = ..., + group: Optional[Group] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"c2_c",b"c2_c",u"group",b"group"]) -> bool: ... - def ClearField(self, field_name: Literal[u"c2_c",b"c2_c",u"group",b"group"]) -> None: ... + def HasField(self, field_name: Literal["c2_c",b"c2_c","group",b"group"]) -> bool: ... + def ClearField(self, field_name: Literal["c2_c",b"c2_c","group",b"group"]) -> None: ... diff --git a/cai/pb/im/msg/msg_body/msg_body_pb2.py b/cai/pb/im/msg/msg_body/msg_body_pb2.py index f3b1d979..f3090910 100644 --- a/cai/pb/im/msg/msg_body/msg_body_pb2.py +++ b/cai/pb/im/msg/msg_body/msg_body_pb2.py @@ -3,6 +3,7 @@ # source: cai/pb/im/msg/msg_body/msg_body.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -13,5495 +14,76 @@ -DESCRIPTOR = _descriptor.FileDescriptor( - name='cai/pb/im/msg/msg_body/msg_body.proto', - package='im.msg.msg_body', - syntax='proto2', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n%cai/pb/im/msg/msg_body/msg_body.proto\x12\x0fim.msg.msg_body\"\x99\x01\n\x11\x41nonymousGroupMsg\x12\r\n\x05\x66lags\x18\x01 \x01(\r\x12\x0f\n\x07\x61non_id\x18\x02 \x01(\x0c\x12\x11\n\tanon_nick\x18\x03 \x01(\x0c\x12\x15\n\rhead_portrait\x18\x04 \x01(\r\x12\x13\n\x0b\x65xpire_time\x18\x05 \x01(\r\x12\x11\n\tbubble_id\x18\x06 \x01(\r\x12\x12\n\nrank_color\x18\x07 \x01(\x0c\"\x90\x02\n\x0c\x41polloActMsg\x12\x11\n\taction_id\x18\x01 \x01(\r\x12\x13\n\x0b\x61\x63tion_name\x18\x02 \x01(\x0c\x12\x13\n\x0b\x61\x63tion_text\x18\x03 \x01(\x0c\x12\x0c\n\x04\x66lag\x18\x04 \x01(\r\x12\x10\n\x08peer_uin\x18\x05 \x01(\r\x12\x11\n\tsender_ts\x18\x06 \x01(\r\x12\x0f\n\x07peer_ts\x18\x07 \x01(\r\x12\x15\n\rsender_status\x18\x08 \x01(\x05\x12\x13\n\x0bpeer_status\x18\t \x01(\x05\x12\x12\n\ndiytext_id\x18\n \x01(\r\x12\x17\n\x0f\x64iytext_content\x18\x0b \x01(\x0c\x12\x12\n\ninput_text\x18\x0c \x01(\x0c\x12\x12\n\npb_reserve\x18\r \x01(\x0c\"W\n\nArkAppElem\x12\x10\n\x08\x61pp_name\x18\x01 \x01(\t\x12\x13\n\x0bmin_version\x18\x02 \x01(\t\x12\x14\n\x0cxml_template\x18\x03 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\"\xb9\x01\n\x04\x41ttr\x12\x11\n\tcode_page\x18\x01 \x01(\x11\x12\x0c\n\x04time\x18\x02 \x01(\r\x12\x0e\n\x06random\x18\x03 \x01(\r\x12\r\n\x05\x63olor\x18\x04 \x01(\r\x12\x0c\n\x04size\x18\x05 \x01(\r\x12\x0e\n\x06\x65\x66\x66\x65\x63t\x18\x06 \x01(\r\x12\x10\n\x08\x63har_set\x18\x07 \x01(\r\x12\x18\n\x10pitch_and_family\x18\x08 \x01(\r\x12\x11\n\tfont_name\x18\t \x01(\t\x12\x14\n\x0creserve_data\x18\n \x01(\x0c\"\x18\n\tBitAppMsg\x12\x0b\n\x03\x62uf\x18\x01 \x01(\x0c\"4\n\x0f\x42lessingMessage\x12\x10\n\x08msg_type\x18\x01 \x01(\r\x12\x0f\n\x07\x65x_flag\x18\x02 \x01(\r\"J\n\nCommonElem\x12\x14\n\x0cservice_type\x18\x01 \x01(\r\x12\x0f\n\x07pb_elem\x18\x02 \x01(\x0c\x12\x15\n\rbusiness_type\x18\x03 \x01(\r\"M\n\x12\x43onferenceTipsInfo\x12\x14\n\x0csession_type\x18\x01 \x01(\r\x12\x13\n\x0bsession_uin\x18\x02 \x01(\x04\x12\x0c\n\x04text\x18\x03 \x01(\t\"i\n\x07\x43rmElem\x12\x0f\n\x07\x63rm_buf\x18\x01 \x01(\x0c\x12\x11\n\tmsg_resid\x18\x02 \x01(\x0c\x12\x13\n\x0bqidian_flag\x18\x03 \x01(\r\x12\x11\n\tpush_flag\x18\x04 \x01(\r\x12\x12\n\ncount_flag\x18\x05 \x01(\r\"W\n\nCustomElem\x12\x0c\n\x04\x64\x65sc\x18\x01 \x01(\x0c\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12\x11\n\tenum_type\x18\x03 \x01(\r\x12\x0b\n\x03\x65xt\x18\x04 \x01(\x0c\x12\r\n\x05sound\x18\x05 \x01(\x0c\"\xf1\x04\n\nCustomFace\x12\x0c\n\x04guid\x18\x01 \x01(\x0c\x12\x11\n\tfile_path\x18\x02 \x01(\t\x12\x10\n\x08shortcut\x18\x03 \x01(\t\x12\x0e\n\x06\x62uffer\x18\x04 \x01(\x0c\x12\x0c\n\x04\x66lag\x18\x05 \x01(\x0c\x12\x10\n\x08old_data\x18\x06 \x01(\x0c\x12\x0f\n\x07\x66ile_id\x18\x07 \x01(\r\x12\x11\n\tserver_ip\x18\x08 \x01(\r\x12\x13\n\x0bserver_port\x18\t \x01(\r\x12\x11\n\tfile_type\x18\n \x01(\r\x12\x11\n\tsignature\x18\x0b \x01(\x0c\x12\x0e\n\x06useful\x18\x0c \x01(\r\x12\x0b\n\x03md5\x18\r \x01(\x0c\x12\x11\n\tthumb_url\x18\x0e \x01(\t\x12\x0f\n\x07\x62ig_url\x18\x0f \x01(\t\x12\x10\n\x08orig_url\x18\x10 \x01(\t\x12\x10\n\x08\x62iz_type\x18\x11 \x01(\r\x12\x14\n\x0crepeat_index\x18\x12 \x01(\r\x12\x14\n\x0crepeat_image\x18\x13 \x01(\r\x12\x12\n\nimage_type\x18\x14 \x01(\r\x12\r\n\x05index\x18\x15 \x01(\r\x12\r\n\x05width\x18\x16 \x01(\r\x12\x0e\n\x06height\x18\x17 \x01(\r\x12\x0e\n\x06source\x18\x18 \x01(\r\x12\x0c\n\x04size\x18\x19 \x01(\r\x12\x0e\n\x06origin\x18\x1a \x01(\r\x12\x13\n\x0bthumb_width\x18\x1b \x01(\r\x12\x14\n\x0cthumb_height\x18\x1c \x01(\r\x12\x10\n\x08show_len\x18\x1d \x01(\r\x12\x14\n\x0c\x64ownload_len\x18\x1e \x01(\r\x12\x10\n\x08_400_url\x18\x1f \x01(\t\x12\x12\n\n_400_width\x18 \x01(\r\x12\x13\n\x0b_400_height\x18! \x01(\r\x12\x12\n\npb_reserve\x18\" \x01(\x0c\"\xb6\x04\n\x0e\x44\x65liverGiftMsg\x12\x18\n\x10gray_tip_content\x18\x01 \x01(\x0c\x12\x1c\n\x14\x61nimation_package_id\x18\x02 \x01(\r\x12\x1f\n\x17\x61nimation_package_url_a\x18\x03 \x01(\x0c\x12\x1f\n\x17\x61nimation_package_url_i\x18\x04 \x01(\x0c\x12\x14\n\x0cremind_brief\x18\x05 \x01(\x0c\x12\x0f\n\x07gift_id\x18\x06 \x01(\r\x12\x12\n\ngift_count\x18\x07 \x01(\r\x12\x17\n\x0f\x61nimation_brief\x18\x08 \x01(\x0c\x12\x12\n\nsender_uin\x18\t \x01(\x04\x12\x14\n\x0creceiver_uin\x18\n \x01(\x04\x12\x17\n\x0fstmessage_title\x18\x0b \x01(\x0c\x12\x1a\n\x12stmessage_subtitle\x18\x0c \x01(\x0c\x12\x19\n\x11stmessage_message\x18\r \x01(\x0c\x12\x1b\n\x13stmessage_giftpicid\x18\x0e \x01(\r\x12\x1a\n\x12stmessage_comefrom\x18\x0f \x01(\x0c\x12\x18\n\x10stmessage_exflag\x18\x10 \x01(\r\x12\x16\n\x0eto_all_gift_id\x18\x11 \x01(\x0c\x12\x15\n\rcomefrom_link\x18\x12 \x01(\x0c\x12\x12\n\npb_reserve\x18\x13 \x01(\x0c\x12\x15\n\rreceiver_name\x18\x14 \x01(\x0c\x12\x14\n\x0creceiver_pic\x18\x15 \x01(\x0c\x12\x19\n\x11stmessage_gifturl\x18\x16 \x01(\x0c\"(\n\x07\x45IMInfo\x12\x0f\n\x07root_id\x18\x01 \x01(\x04\x12\x0c\n\x04\x66lag\x18\x02 \x01(\r\"\x8b\x15\n\x04\x45lem\x12(\n\x04text\x18\x01 \x01(\x0b\x32\x1a.im.msg.msg_body.PlainText\x12#\n\x04\x66\x61\x63\x65\x18\x02 \x01(\x0b\x32\x15.im.msg.msg_body.Face\x12\x32\n\x0conline_image\x18\x03 \x01(\x0b\x32\x1c.im.msg.msg_body.OnlineImage\x12\x39\n\x10not_online_image\x18\x04 \x01(\x0b\x32\x1f.im.msg.msg_body.NotOnlineImage\x12\x33\n\x0ftrans_elem_info\x18\x05 \x01(\x0b\x32\x1a.im.msg.msg_body.TransElem\x12\x30\n\x0bmarket_face\x18\x06 \x01(\x0b\x32\x1b.im.msg.msg_body.MarketFace\x12.\n\nelem_flags\x18\x07 \x01(\x0b\x32\x1a.im.msg.msg_body.ElemFlags\x12\x30\n\x0b\x63ustom_face\x18\x08 \x01(\x0b\x32\x1b.im.msg.msg_body.CustomFace\x12\x30\n\x0b\x65lem_flags2\x18\t \x01(\x0b\x32\x1b.im.msg.msg_body.ElemFlags2\x12*\n\x08\x66un_face\x18\n \x01(\x0b\x32\x18.im.msg.msg_body.FunFace\x12\x33\n\x0bsecret_file\x18\x0b \x01(\x0b\x32\x1e.im.msg.msg_body.SecretFileMsg\x12*\n\x08rich_msg\x18\x0c \x01(\x0b\x32\x18.im.msg.msg_body.RichMsg\x12.\n\ngroup_file\x18\r \x01(\x0b\x32\x1a.im.msg.msg_body.GroupFile\x12,\n\tpub_group\x18\x0e \x01(\x0b\x32\x19.im.msg.msg_body.PubGroup\x12\x32\n\x0cmarket_trans\x18\x0f \x01(\x0b\x32\x1c.im.msg.msg_body.MarketTrans\x12.\n\nextra_info\x18\x10 \x01(\x0b\x32\x1a.im.msg.msg_body.ExtraInfo\x12\x32\n\x0cshake_window\x18\x11 \x01(\x0b\x32\x1c.im.msg.msg_body.ShakeWindow\x12\x30\n\x0bpub_account\x18\x12 \x01(\x0b\x32\x1b.im.msg.msg_body.PubAccount\x12.\n\nvideo_file\x18\x13 \x01(\x0b\x32\x1a.im.msg.msg_body.VideoFile\x12,\n\ttips_info\x18\x14 \x01(\x0b\x32\x19.im.msg.msg_body.TipsInfo\x12:\n\x0e\x61non_group_msg\x18\x15 \x01(\x0b\x32\".im.msg.msg_body.AnonymousGroupMsg\x12/\n\x0bqq_live_old\x18\x16 \x01(\x0b\x32\x1a.im.msg.msg_body.QQLiveOld\x12\x37\n\x0blife_online\x18\x17 \x01(\x0b\x32\".im.msg.msg_body.LifeOnlineAccount\x12\x32\n\x0cqqwallet_msg\x18\x18 \x01(\x0b\x32\x1c.im.msg.msg_body.QQWalletMsg\x12*\n\x08\x63rm_elem\x18\x19 \x01(\x0b\x32\x18.im.msg.msg_body.CrmElem\x12\x41\n\x14\x63onference_tips_info\x18\x1a \x01(\x0b\x32#.im.msg.msg_body.ConferenceTipsInfo\x12\x30\n\x0bredbag_info\x18\x1b \x01(\x0b\x32\x1b.im.msg.msg_body.RedBagInfo\x12\x39\n\x10low_version_tips\x18\x1c \x01(\x0b\x32\x1f.im.msg.msg_body.LowVersionTips\x12\x1a\n\x12\x62\x61nkcode_ctrl_info\x18\x1d \x01(\x0c\x12\x37\n\x0bnear_by_msg\x18\x1e \x01(\x0b\x32\".im.msg.msg_body.NearByMessageType\x12\x30\n\x0b\x63ustom_elem\x18\x1f \x01(\x0b\x32\x1b.im.msg.msg_body.CustomElem\x12\x34\n\rlocation_info\x18 \x01(\x0b\x32\x1d.im.msg.msg_body.LocationInfo\x12\x31\n\x0cpub_acc_info\x18! \x01(\x0b\x32\x1b.im.msg.msg_body.PubAccInfo\x12\x30\n\x0bsmall_emoji\x18\" \x01(\x0b\x32\x1b.im.msg.msg_body.SmallEmoji\x12\x35\n\x0c\x66sj_msg_elem\x18# \x01(\x0b\x32\x1f.im.msg.msg_body.FSJMessageElem\x12,\n\x07\x61rk_app\x18$ \x01(\x0b\x32\x1b.im.msg.msg_body.ArkAppElem\x12\x34\n\rgeneral_flags\x18% \x01(\x0b\x32\x1d.im.msg.msg_body.GeneralFlags\x12\x31\n\x0chc_flash_pic\x18& \x01(\x0b\x32\x1b.im.msg.msg_body.CustomFace\x12\x39\n\x10\x64\x65liver_gift_msg\x18\' \x01(\x0b\x32\x1f.im.msg.msg_body.DeliverGiftMsg\x12.\n\nbitapp_msg\x18( \x01(\x0b\x32\x1a.im.msg.msg_body.BitAppMsg\x12\x31\n\x0copen_qq_data\x18) \x01(\x0b\x32\x1b.im.msg.msg_body.OpenQQData\x12\x31\n\napollo_msg\x18* \x01(\x0b\x32\x1d.im.msg.msg_body.ApolloActMsg\x12@\n\x12group_pub_acc_info\x18+ \x01(\x0b\x32$.im.msg.msg_body.GroupPubAccountInfo\x12\x33\n\tbless_msg\x18, \x01(\x0b\x32 .im.msg.msg_body.BlessingMessage\x12+\n\x07src_msg\x18- \x01(\x0b\x32\x1a.im.msg.msg_body.SourceMsg\x12*\n\x08lola_msg\x18. \x01(\x0b\x32\x18.im.msg.msg_body.LolaMsg\x12=\n\x12group_business_msg\x18/ \x01(\x0b\x32!.im.msg.msg_body.GroupBusinessMsg\x12;\n\x0fworkflow_notify\x18\x30 \x01(\x0b\x32\".im.msg.msg_body.WorkflowNotifyMsg\x12+\n\x08pat_elem\x18\x31 \x01(\x0b\x32\x19.im.msg.msg_body.PatsElem\x12\x37\n\x0fgroup_post_elem\x18\x32 \x01(\x0b\x32\x1e.im.msg.msg_body.GroupPostElem\x12\x30\n\tlight_app\x18\x33 \x01(\x0b\x32\x1d.im.msg.msg_body.LightAppElem\x12*\n\x08\x65im_info\x18\x34 \x01(\x0b\x32\x18.im.msg.msg_body.EIMInfo\x12\x30\n\x0b\x63ommon_elem\x18\x35 \x01(\x0b\x32\x1b.im.msg.msg_body.CommonElem\"2\n\tElemFlags\x12\x0e\n\x06\x66lags1\x18\x01 \x01(\x0c\x12\x15\n\rbusiness_data\x18\x02 \x01(\x0c\"\xfb\x02\n\nElemFlags2\x12\x15\n\rcolor_text_id\x18\x01 \x01(\r\x12\x0e\n\x06msg_id\x18\x02 \x01(\x04\x12\x1a\n\x12whisper_session_id\x18\x03 \x01(\r\x12\x16\n\x0eptt_change_bit\x18\x04 \x01(\r\x12\x12\n\nvip_status\x18\x05 \x01(\r\x12\x15\n\rcompatible_id\x18\x06 \x01(\r\x12$\n\x05insts\x18\x07 \x03(\x0b\x32\x15.im.msg.msg_body.Inst\x12\x13\n\x0bmsg_rpt_cnt\x18\x08 \x01(\r\x12\'\n\x08src_inst\x18\t \x01(\x0b\x32\x15.im.msg.msg_body.Inst\x12\x12\n\nlongtitude\x18\n \x01(\r\x12\x10\n\x08latitude\x18\x0b \x01(\r\x12\x13\n\x0b\x63ustom_font\x18\x0c \x01(\r\x12\x35\n\x0epc_support_def\x18\r \x01(\x0b\x32\x1d.im.msg.msg_body.PcSupportDef\x12\x11\n\tcrm_flags\x18\x0e \x01(\r\"\'\n\x04Inst\x12\x0e\n\x06\x61pp_id\x18\x01 \x01(\r\x12\x0f\n\x07inst_id\x18\x02 \x01(\r\"\xf3\x01\n\tExtraInfo\x12\x0c\n\x04nick\x18\x01 \x01(\x0c\x12\x12\n\ngroup_card\x18\x02 \x01(\x0c\x12\r\n\x05level\x18\x03 \x01(\r\x12\r\n\x05\x66lags\x18\x04 \x01(\r\x12\x12\n\ngroup_mask\x18\x05 \x01(\r\x12\x13\n\x0bmsg_tail_id\x18\x06 \x01(\r\x12\x14\n\x0csender_title\x18\x07 \x01(\x0c\x12\x11\n\tapns_tips\x18\x08 \x01(\x0c\x12\x0b\n\x03uin\x18\t \x01(\x04\x12\x16\n\x0emsg_state_flag\x18\n \x01(\r\x12\x17\n\x0f\x61pns_sound_type\x18\x0b \x01(\r\x12\x16\n\x0enew_group_flag\x18\x0c \x01(\r\"\"\n\x0e\x46SJMessageElem\x12\x10\n\x08msg_type\x18\x01 \x01(\r\"/\n\x04\x46\x61\x63\x65\x12\r\n\x05index\x18\x01 \x01(\r\x12\x0b\n\x03old\x18\x02 \x01(\x0c\x12\x0b\n\x03\x62uf\x18\x0b \x01(\x0c\"]\n\x07\x46unFace\x12-\n\tturntable\x18\x01 \x01(\x0b\x32\x1a.im.msg.msg_body.Turntable\x12#\n\x04\x62omb\x18\x02 \x01(\x0b\x32\x15.im.msg.msg_body.Bomb\"\x15\n\x04\x42omb\x12\r\n\x05\x62urst\x18\x01 \x01(\x08\"D\n\tTurntable\x12\x10\n\x08uin_list\x18\x01 \x03(\x04\x12\x0f\n\x07hit_uin\x18\x02 \x01(\x04\x12\x14\n\x0chit_uin_nick\x18\x03 \x01(\t\"\xb2\x03\n\x0cGeneralFlags\x12\x1a\n\x12\x62ubble_diy_text_id\x18\x01 \x01(\r\x12\x16\n\x0egroup_flag_new\x18\x02 \x01(\r\x12\x0b\n\x03uin\x18\x03 \x01(\x04\x12\r\n\x05rp_id\x18\x04 \x01(\x0c\x12\x10\n\x08prp_fold\x18\x05 \x01(\r\x12\x16\n\x0elong_text_flag\x18\x06 \x01(\r\x12\x17\n\x0flong_text_resid\x18\x07 \x01(\x0c\x12\x12\n\ngroup_type\x18\x08 \x01(\r\x12\x13\n\x0bto_uin_flag\x18\t \x01(\r\x12\x15\n\rglamour_level\x18\n \x01(\r\x12\x14\n\x0cmember_level\x18\x0b \x01(\r\x12\x16\n\x0egroup_rank_seq\x18\x0c \x01(\x04\x12\x15\n\rolympic_torch\x18\r \x01(\r\x12\x1e\n\x16\x62\x61\x62yq_guide_msg_cookie\x18\x0e \x01(\x0c\x12\x19\n\x11uin32_expert_flag\x18\x0f \x01(\r\x12\x15\n\rbubble_sub_id\x18\x10 \x01(\r\x12\x12\n\npendant_id\x18\x11 \x01(\x04\x12\x10\n\x08rp_index\x18\x12 \x01(\x0c\x12\x12\n\npb_reserve\x18\x13 \x01(\x0c\"\xa3\x01\n\x10GroupBusinessMsg\x12\r\n\x05\x66lags\x18\x01 \x01(\r\x12\x10\n\x08head_url\x18\x02 \x01(\x0c\x12\x14\n\x0chead_clk_url\x18\x03 \x01(\x0c\x12\x0c\n\x04nick\x18\x04 \x01(\x0c\x12\x12\n\nnick_color\x18\x05 \x01(\x0c\x12\x0c\n\x04rank\x18\x06 \x01(\x0c\x12\x12\n\nrank_color\x18\x07 \x01(\x0c\x12\x14\n\x0crank_bgcolor\x18\x08 \x01(\x0c\"\xc7\x01\n\tGroupFile\x12\x10\n\x08\x66ilename\x18\x01 \x01(\x0c\x12\x11\n\tfile_size\x18\x02 \x01(\x04\x12\x0f\n\x07\x66ile_id\x18\x03 \x01(\x0c\x12\x10\n\x08\x62\x61tch_id\x18\x04 \x01(\x0c\x12\x10\n\x08\x66ile_key\x18\x05 \x01(\x0c\x12\x0c\n\x04mark\x18\x06 \x01(\x0c\x12\x10\n\x08sequence\x18\x07 \x01(\x04\x12\x15\n\rbatch_item_id\x18\x08 \x01(\x0c\x12\x15\n\rfeed_msg_time\x18\t \x01(\r\x12\x12\n\npb_reserve\x18\n \x01(\x0c\"6\n\rGroupPostElem\x12\x12\n\ntrans_type\x18\x01 \x01(\r\x12\x11\n\ttrans_msg\x18\x02 \x01(\x0c\"*\n\x13GroupPubAccountInfo\x12\x13\n\x0bpub_account\x18\x01 \x01(\x04\"\xaf\x01\n\x11LifeOnlineAccount\x12\x11\n\tunique_id\x18\x01 \x01(\x04\x12\n\n\x02op\x18\x02 \x01(\r\x12\x11\n\tshow_time\x18\x03 \x01(\r\x12\x0e\n\x06report\x18\x04 \x01(\r\x12\x0b\n\x03\x61\x63k\x18\x05 \x01(\r\x12\x0e\n\x06\x62itmap\x18\x06 \x01(\x04\x12\x14\n\x0cgdt_imp_data\x18\x07 \x01(\x0c\x12\x14\n\x0cgdt_cli_data\x18\x08 \x01(\x0c\x12\x0f\n\x07view_id\x18\t \x01(\x0c\"/\n\x0cLightAppElem\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\x11\n\tmsg_resid\x18\x02 \x01(\x0c\"`\n\x07LolaMsg\x12\x11\n\tmsg_resid\x18\x01 \x01(\x0c\x12\x16\n\x0e\x65ncode_content\x18\x02 \x01(\x0c\x12\x14\n\x0clong_msg_url\x18\x03 \x01(\x0c\x12\x14\n\x0c\x64ownload_key\x18\x04 \x01(\x0c\"r\n\x0eLowVersionTips\x12\x13\n\x0b\x62usiness_id\x18\x01 \x01(\r\x12\x14\n\x0csession_type\x18\x02 \x01(\r\x12\x13\n\x0bsession_uin\x18\x03 \x01(\x04\x12\x12\n\nsender_uin\x18\x04 \x01(\x04\x12\x0c\n\x04text\x18\x05 \x01(\t\"\xfc\x01\n\nMarketFace\x12\x11\n\tface_name\x18\x01 \x01(\x0c\x12\x11\n\titem_type\x18\x02 \x01(\r\x12\x11\n\tface_info\x18\x03 \x01(\r\x12\x0f\n\x07\x66\x61\x63\x65_id\x18\x04 \x01(\x0c\x12\x0e\n\x06tab_id\x18\x05 \x01(\r\x12\x10\n\x08sub_type\x18\x06 \x01(\r\x12\x0b\n\x03key\x18\x07 \x01(\x0c\x12\r\n\x05param\x18\x08 \x01(\x0c\x12\x12\n\nmedia_type\x18\t \x01(\r\x12\x13\n\x0bimage_width\x18\n \x01(\r\x12\x14\n\x0cimage_height\x18\x0b \x01(\r\x12\x13\n\x0bmobileparam\x18\x0c \x01(\x0c\x12\x12\n\npb_reserve\x18\r \x01(\x0c\"a\n\x0bMarketTrans\x12\x0c\n\x04\x66lag\x18\x01 \x01(\x05\x12\x0b\n\x03xml\x18\x02 \x01(\x0c\x12\x11\n\tmsg_resid\x18\x03 \x01(\x0c\x12\x0f\n\x07\x61\x62ility\x18\x04 \x01(\r\x12\x13\n\x0bmin_ability\x18\x05 \x01(\r\"a\n\x07MsgBody\x12,\n\trich_text\x18\x01 \x01(\x0b\x32\x19.im.msg.msg_body.RichText\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\x12\x17\n\x0f\x65ncrypt_content\x18\x03 \x01(\x0c\"]\n\x10MsgBody_subtype4\x12\x37\n\x0fnot_online_file\x18\x01 \x01(\x0b\x32\x1e.im.msg.msg_body.NotOnlineFile\x12\x10\n\x08msg_time\x18\x02 \x01(\r\"8\n\x11NearByMessageType\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x15\n\ridentify_type\x18\x02 \x01(\r\"\x94\x03\n\rNotOnlineFile\x12\x11\n\tfile_type\x18\x01 \x01(\r\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\x12\x11\n\tfile_uuid\x18\x03 \x01(\x0c\x12\x10\n\x08\x66ile_md5\x18\x04 \x01(\x0c\x12\x11\n\tfile_name\x18\x05 \x01(\x0c\x12\x11\n\tfile_size\x18\x06 \x01(\x04\x12\x0c\n\x04note\x18\x07 \x01(\x0c\x12\x10\n\x08reserved\x18\x08 \x01(\r\x12\x0e\n\x06subcmd\x18\t \x01(\r\x12\x13\n\x0bmicro_cloud\x18\n \x01(\r\x12\x11\n\tfile_urls\x18\x0b \x03(\x0c\x12\x15\n\rdownload_flag\x18\x0c \x01(\r\x12\x13\n\x0b\x64\x61nger_evel\x18\x32 \x01(\r\x12\x11\n\tlife_time\x18\x33 \x01(\r\x12\x13\n\x0bupload_time\x18\x34 \x01(\r\x12\x15\n\rabs_file_type\x18\x35 \x01(\r\x12\x13\n\x0b\x63lient_type\x18\x36 \x01(\r\x12\x13\n\x0b\x65xpire_time\x18\x37 \x01(\r\x12\x12\n\npb_reserve\x18\x38 \x01(\x0c\x12\x17\n\x0f\x66ileidcrc_media\x18\x39 \x01(\t\"\xbd\x04\n\x0eNotOnlineImage\x12\x11\n\tfile_path\x18\x01 \x01(\x0c\x12\x10\n\x08\x66ile_len\x18\x02 \x01(\r\x12\x15\n\rdownload_path\x18\x03 \x01(\x0c\x12\x19\n\x11old_ver_send_file\x18\x04 \x01(\x0c\x12\x10\n\x08img_type\x18\x05 \x01(\r\x12\x16\n\x0epreviews_image\x18\x06 \x01(\x0c\x12\x0f\n\x07pic_md5\x18\x07 \x01(\x0c\x12\x12\n\npic_height\x18\x08 \x01(\r\x12\x11\n\tpic_width\x18\t \x01(\r\x12\x0e\n\x06res_id\x18\n \x01(\x0c\x12\x0c\n\x04\x66lag\x18\x0b \x01(\x0c\x12\x11\n\tthumb_url\x18\x0c \x01(\t\x12\x10\n\x08original\x18\r \x01(\r\x12\x0f\n\x07\x62ig_url\x18\x0e \x01(\t\x12\x10\n\x08orig_url\x18\x0f \x01(\t\x12\x10\n\x08\x62iz_type\x18\x10 \x01(\r\x12\x0e\n\x06result\x18\x11 \x01(\r\x12\r\n\x05index\x18\x12 \x01(\r\x12\x13\n\x0bop_face_buf\x18\x13 \x01(\x0c\x12\x13\n\x0bold_pic_md5\x18\x14 \x01(\x08\x12\x13\n\x0bthumb_width\x18\x15 \x01(\r\x12\x14\n\x0cthumb_height\x18\x16 \x01(\r\x12\x0f\n\x07\x66ile_id\x18\x17 \x01(\r\x12\x10\n\x08show_len\x18\x18 \x01(\r\x12\x14\n\x0c\x64ownload_len\x18\x19 \x01(\r\x12\x10\n\x08_400_url\x18\x1a \x01(\t\x12\x12\n\n_400_width\x18\x1b \x01(\r\x12\x13\n\x0b_400_height\x18\x1c \x01(\r\x12\x12\n\npb_reserve\x18\x1d \x01(\x0c\"I\n\x0bOnlineImage\x12\x0c\n\x04guid\x18\x01 \x01(\x0c\x12\x11\n\tfile_path\x18\x02 \x01(\x0c\x12\x19\n\x11old_ver_send_file\x18\x03 \x01(\x0c\"!\n\nOpenQQData\x12\x13\n\x0b\x63\x61r_qq_data\x18\x01 \x01(\x0c\"/\n\x08PatsElem\x12\x10\n\x08pat_type\x18\x01 \x01(\r\x12\x11\n\tpat_count\x18\x02 \x01(\r\"\x94\x01\n\x0cPcSupportDef\x12\x14\n\x0cpc_ptl_begin\x18\x01 \x01(\r\x12\x12\n\npc_ptl_end\x18\x02 \x01(\r\x12\x15\n\rmac_ptl_begin\x18\x03 \x01(\r\x12\x13\n\x0bmac_ptl_end\x18\x04 \x01(\r\x12\x14\n\x0cptls_support\x18\x05 \x03(\r\x12\x18\n\x10ptls_not_support\x18\x06 \x03(\r\"\xca\x03\n\x03Ptt\x12\x11\n\tfile_type\x18\x01 \x01(\r\x12\x0f\n\x07src_uin\x18\x02 \x01(\x04\x12\x11\n\tfile_uuid\x18\x03 \x01(\x0c\x12\x10\n\x08\x66ile_md5\x18\x04 \x01(\x0c\x12\x11\n\tfile_name\x18\x05 \x01(\x0c\x12\x11\n\tfile_size\x18\x06 \x01(\r\x12\x0f\n\x07reserve\x18\x07 \x01(\x0c\x12\x0f\n\x07\x66ile_id\x18\x08 \x01(\r\x12\x11\n\tserver_ip\x18\t \x01(\r\x12\x13\n\x0bserver_port\x18\n \x01(\r\x12\r\n\x05valid\x18\x0b \x01(\x08\x12\x11\n\tsignature\x18\x0c \x01(\x0c\x12\x10\n\x08shortcut\x18\r \x01(\x0c\x12\x10\n\x08\x66ile_key\x18\x0e \x01(\x0c\x12\x17\n\x0fmagic_ptt_index\x18\x0f \x01(\r\x12\x14\n\x0cvoice_switch\x18\x10 \x01(\r\x12\x0f\n\x07ptt_url\x18\x11 \x01(\x0c\x12\x16\n\x0egroup_file_key\x18\x12 \x01(\x0c\x12\x0c\n\x04time\x18\x13 \x01(\r\x12\x11\n\tdown_para\x18\x14 \x01(\x0c\x12\x0e\n\x06\x66ormat\x18\x1d \x01(\r\x12\x12\n\npb_reserve\x18\x1e \x01(\x0c\x12\x10\n\x08ptt_urls\x18\x1f \x03(\x0c\x12\x15\n\rdownload_flag\x18 \x01(\r\"g\n\nPubAccInfo\x12\x14\n\x0cis_inter_num\x18\x01 \x01(\r\x12\x17\n\x0fmsg_template_id\x18\x02 \x01(\t\x12\x14\n\x0clong_msg_url\x18\x03 \x01(\t\x12\x14\n\x0c\x64ownload_key\x18\x04 \x01(\x0c\"2\n\nPubAccount\x12\x0b\n\x03\x62uf\x18\x01 \x01(\x0c\x12\x17\n\x0fpub_account_uin\x18\x02 \x01(\x04\"K\n\x08PubGroup\x12\x10\n\x08nickname\x18\x01 \x01(\x0c\x12\x0e\n\x06gender\x18\x02 \x01(\r\x12\x0b\n\x03\x61ge\x18\x03 \x01(\r\x12\x10\n\x08\x64istance\x18\x04 \x01(\r\"Q\n\tQQLiveOld\x12\x0f\n\x07sub_cmd\x18\x01 \x01(\r\x12\x11\n\tshow_text\x18\x02 \x01(\x0c\x12\r\n\x05param\x18\x03 \x01(\x0c\x12\x11\n\tintroduce\x18\x04 \x01(\x0c\"\xcd\x03\n\x0fQQWalletAioBody\x12\x0f\n\x07senduin\x18\x01 \x01(\x04\x12\x30\n\x06sender\x18\x02 \x01(\x0b\x32 .im.msg.msg_body.QQWalletAioElem\x12\x32\n\x08receiver\x18\x03 \x01(\x0b\x32 .im.msg.msg_body.QQWalletAioElem\x12\x11\n\tchannelid\x18\x04 \x01(\x11\x12\x12\n\ntemplateid\x18\x05 \x01(\x11\x12\x0e\n\x06resend\x18\x06 \x01(\r\x12\x14\n\x0cmsg_priority\x18\x07 \x01(\r\x12\x0f\n\x07redtype\x18\x08 \x01(\x11\x12\x0e\n\x06\x62illno\x18\t \x01(\x0c\x12\x0f\n\x07\x61uthkey\x18\n \x01(\x0c\x12\x13\n\x0bsessiontype\x18\x0b \x01(\x11\x12\x0f\n\x07msgtype\x18\x0c \x01(\x11\x12\x12\n\nenvelopeid\x18\r \x01(\x11\x12\x0c\n\x04name\x18\x0e \x01(\x0c\x12\x10\n\x08\x63onftype\x18\x0f \x01(\x11\x12\x10\n\x08msg_from\x18\x10 \x01(\x11\x12\x0f\n\x07pc_body\x18\x11 \x01(\x0c\x12\r\n\x05index\x18\x12 \x01(\x0c\x12\x12\n\nredchannel\x18\x13 \x01(\r\x12\x10\n\x08grap_uin\x18\x14 \x03(\x04\x12\x12\n\npb_reserve\x18\x15 \x01(\x0c\"\xb9\x03\n\x0fQQWalletAioElem\x12\x12\n\nbackground\x18\x01 \x01(\r\x12\x0c\n\x04icon\x18\x02 \x01(\r\x12\r\n\x05title\x18\x03 \x01(\x0c\x12\x10\n\x08subtitle\x18\x04 \x01(\x0c\x12\x0f\n\x07\x63ontent\x18\x05 \x01(\x0c\x12\x0f\n\x07linkurl\x18\x06 \x01(\x0c\x12\x13\n\x0b\x62lackstripe\x18\x07 \x01(\x0c\x12\x0e\n\x06notice\x18\x08 \x01(\x0c\x12\x13\n\x0btitle_color\x18\t \x01(\r\x12\x16\n\x0esubtitle_color\x18\n \x01(\r\x12\x18\n\x10\x61\x63tions_priority\x18\x0b \x01(\x0c\x12\x10\n\x08jump_url\x18\x0c \x01(\x0c\x12\x12\n\nnative_ios\x18\r \x01(\x0c\x12\x16\n\x0enative_android\x18\x0e \x01(\x0c\x12\x0f\n\x07iconurl\x18\x0f \x01(\x0c\x12\x15\n\rcontent_color\x18\x10 \x01(\r\x12\x17\n\x0f\x63ontent_bgcolor\x18\x11 \x01(\r\x12\x16\n\x0e\x61io_image_left\x18\x12 \x01(\x0c\x12\x17\n\x0f\x61io_image_right\x18\x13 \x01(\x0c\x12\x11\n\tcft_image\x18\x14 \x01(\x0c\x12\x12\n\npb_reserve\x18\x15 \x01(\x0c\"A\n\x0bQQWalletMsg\x12\x32\n\x08\x61io_body\x18\x01 \x01(\x0b\x32 .im.msg.msg_body.QQWalletAioBody\"!\n\nRedBagInfo\x12\x13\n\x0bredbag_type\x18\x01 \x01(\r\"n\n\x07RichMsg\x12\x12\n\ntemplate_1\x18\x01 \x01(\x0c\x12\x12\n\nservice_id\x18\x02 \x01(\r\x12\x11\n\tmsg_resid\x18\x03 \x01(\x0c\x12\x0c\n\x04rand\x18\x04 \x01(\r\x12\x0b\n\x03seq\x18\x05 \x01(\r\x12\r\n\x05\x66lags\x18\x06 \x01(\r\"\x97\x02\n\x08RichText\x12#\n\x04\x61ttr\x18\x01 \x01(\x0b\x32\x15.im.msg.msg_body.Attr\x12$\n\x05\x65lems\x18\x02 \x03(\x0b\x32\x15.im.msg.msg_body.Elem\x12\x37\n\x0fnot_online_file\x18\x03 \x01(\x0b\x32\x1e.im.msg.msg_body.NotOnlineFile\x12!\n\x03ptt\x18\x04 \x01(\x0b\x32\x14.im.msg.msg_body.Ptt\x12(\n\x07tmp_ptt\x18\x05 \x01(\x0b\x32\x17.im.msg.msg_body.TmpPtt\x12:\n\x11trans_211_tmp_msg\x18\x06 \x01(\x0b\x32\x1f.im.msg.msg_body.Trans211TmpMsg\"\xf5\x02\n\rSecretFileMsg\x12\x10\n\x08\x66ile_key\x18\x01 \x01(\x0c\x12\x10\n\x08\x66rom_uin\x18\x02 \x01(\x04\x12\x0e\n\x06to_uin\x18\x03 \x01(\x04\x12\x0e\n\x06status\x18\x04 \x01(\r\x12\x0b\n\x03ttl\x18\x05 \x01(\r\x12\x0c\n\x04type\x18\x06 \x01(\r\x12\x1e\n\x16\x65ncrypt_prehead_length\x18\x07 \x01(\r\x12\x14\n\x0c\x65ncrypt_type\x18\x08 \x01(\r\x12\x13\n\x0b\x65ncrypt_key\x18\t \x01(\x0c\x12\x12\n\nread_times\x18\n \x01(\r\x12\x11\n\tleft_time\x18\x0b \x01(\r\x12\x39\n\x10not_online_image\x18\x0c \x01(\x0b\x32\x1f.im.msg.msg_body.NotOnlineImage\x12\x30\n\x0b\x65lem_flags2\x18\r \x01(\x0b\x32\x1b.im.msg.msg_body.ElemFlags2\x12\x10\n\x08opertype\x18\x0e \x01(\r\x12\x14\n\x0c\x66romphonenum\x18\x0f \x01(\t\"9\n\x0bShakeWindow\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x0f\n\x07reserve\x18\x02 \x01(\r\x12\x0b\n\x03uin\x18\x03 \x01(\x04\"5\n\nSmallEmoji\x12\x13\n\x0bpack_id_sum\x18\x01 \x01(\r\x12\x12\n\nimage_type\x18\x02 \x01(\r\"\xdd\x01\n\tSourceMsg\x12\x11\n\torig_seqs\x18\x01 \x03(\r\x12\x12\n\nsender_uin\x18\x02 \x01(\x04\x12\x0c\n\x04time\x18\x03 \x01(\r\x12\x0c\n\x04\x66lag\x18\x04 \x01(\r\x12$\n\x05\x65lems\x18\x05 \x03(\x0b\x32\x15.im.msg.msg_body.Elem\x12\x0c\n\x04type\x18\x06 \x01(\r\x12\x10\n\x08rich_msg\x18\x07 \x01(\x0c\x12\x12\n\npb_reserve\x18\x08 \x01(\x0c\x12\x0f\n\x07src_msg\x18\t \x01(\x0c\x12\x0e\n\x06to_uin\x18\n \x01(\x04\x12\x12\n\ntroop_name\x18\x0b \x01(\x0c\"o\n\tPlainText\x12\x0b\n\x03str\x18\x01 \x01(\x0c\x12\x0c\n\x04link\x18\x02 \x01(\t\x12\x12\n\nattr_6_buf\x18\x03 \x01(\x0c\x12\x12\n\nattr_7_buf\x18\x04 \x01(\x0c\x12\x0b\n\x03\x62uf\x18\x0b \x01(\x0c\x12\x12\n\npb_reserve\x18\x0c \x01(\x0c\"\x18\n\x08TipsInfo\x12\x0c\n\x04text\x18\x01 \x01(\t\"\xf3\x01\n\x06TmpPtt\x12\x11\n\tfile_type\x18\x01 \x01(\r\x12\x11\n\tfile_uuid\x18\x02 \x01(\x0c\x12\x10\n\x08\x66ile_md5\x18\x03 \x01(\x0c\x12\x11\n\tfile_name\x18\x04 \x01(\x0c\x12\x11\n\tfile_size\x18\x05 \x01(\r\x12\x11\n\tptt_times\x18\x06 \x01(\r\x12\x11\n\tuser_type\x18\x07 \x01(\r\x12\x15\n\rptttrans_flag\x18\x08 \x01(\r\x12\x11\n\tbusi_type\x18\t \x01(\r\x12\x0e\n\x06msg_id\x18\n \x01(\x04\x12\x12\n\npb_reserve\x18\x1e \x01(\x0c\x12\x17\n\x0fptt_encode_data\x18\x1f \x01(\x0c\"3\n\x0eTrans211TmpMsg\x12\x10\n\x08msg_body\x18\x01 \x01(\x0c\x12\x0f\n\x07\x63\x32\x63_cmd\x18\x02 \x01(\r\"2\n\tTransElem\x12\x11\n\telem_type\x18\x01 \x01(\r\x12\x12\n\nelem_value\x18\x02 \x01(\x0c\"\x9c\x04\n\tVideoFile\x12\x11\n\tfile_uuid\x18\x01 \x01(\x0c\x12\x10\n\x08\x66ile_md5\x18\x02 \x01(\x0c\x12\x11\n\tfile_name\x18\x03 \x01(\x0c\x12\x13\n\x0b\x66ile_format\x18\x04 \x01(\r\x12\x11\n\tfile_time\x18\x05 \x01(\r\x12\x11\n\tfile_size\x18\x06 \x01(\r\x12\x13\n\x0bthumb_width\x18\x07 \x01(\r\x12\x14\n\x0cthumb_height\x18\x08 \x01(\r\x12\x16\n\x0ethumb_file_md5\x18\t \x01(\x0c\x12\x0e\n\x06source\x18\n \x01(\x0c\x12\x17\n\x0fthumb_file_size\x18\x0b \x01(\r\x12\x11\n\tbusi_type\x18\x0c \x01(\r\x12\x16\n\x0e\x66rom_chat_type\x18\r \x01(\r\x12\x14\n\x0cto_chat_type\x18\x0e \x01(\r\x12\x1b\n\x13support_progressive\x18\x0f \x01(\x08\x12\x12\n\nfile_width\x18\x10 \x01(\r\x12\x13\n\x0b\x66ile_height\x18\x11 \x01(\r\x12\x15\n\rsub_busi_type\x18\x12 \x01(\r\x12\x12\n\nvideo_attr\x18\x13 \x01(\r\x12\x17\n\x0fthumb_file_urls\x18\x14 \x03(\x0c\x12\x17\n\x0fvideo_file_urls\x18\x15 \x03(\x0c\x12\x1b\n\x13thumb_download_flag\x18\x16 \x01(\r\x12\x1b\n\x13video_download_flag\x18\x17 \x01(\r\x12\x12\n\npb_reserve\x18\x18 \x01(\x0c\"8\n\x11WorkflowNotifyMsg\x12\x0f\n\x07\x65xt_msg\x18\x01 \x01(\x0c\x12\x12\n\ncreate_uin\x18\x02 \x01(\x04\"A\n\x0cLocationInfo\x12\x11\n\tlongitude\x18\x01 \x01(\x01\x12\x10\n\x08latitude\x18\x02 \x01(\x01\x12\x0c\n\x04\x64\x65sc\x18\x03 \x01(\x0c' -) - - - - -_ANONYMOUSGROUPMSG = _descriptor.Descriptor( - name='AnonymousGroupMsg', - full_name='im.msg.msg_body.AnonymousGroupMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='flags', full_name='im.msg.msg_body.AnonymousGroupMsg.flags', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='anon_id', full_name='im.msg.msg_body.AnonymousGroupMsg.anon_id', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='anon_nick', full_name='im.msg.msg_body.AnonymousGroupMsg.anon_nick', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='head_portrait', full_name='im.msg.msg_body.AnonymousGroupMsg.head_portrait', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='expire_time', full_name='im.msg.msg_body.AnonymousGroupMsg.expire_time', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bubble_id', full_name='im.msg.msg_body.AnonymousGroupMsg.bubble_id', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rank_color', full_name='im.msg.msg_body.AnonymousGroupMsg.rank_color', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=59, - serialized_end=212, -) - - -_APOLLOACTMSG = _descriptor.Descriptor( - name='ApolloActMsg', - full_name='im.msg.msg_body.ApolloActMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='action_id', full_name='im.msg.msg_body.ApolloActMsg.action_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='action_name', full_name='im.msg.msg_body.ApolloActMsg.action_name', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='action_text', full_name='im.msg.msg_body.ApolloActMsg.action_text', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='flag', full_name='im.msg.msg_body.ApolloActMsg.flag', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='peer_uin', full_name='im.msg.msg_body.ApolloActMsg.peer_uin', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sender_ts', full_name='im.msg.msg_body.ApolloActMsg.sender_ts', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='peer_ts', full_name='im.msg.msg_body.ApolloActMsg.peer_ts', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sender_status', full_name='im.msg.msg_body.ApolloActMsg.sender_status', index=7, - number=8, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='peer_status', full_name='im.msg.msg_body.ApolloActMsg.peer_status', index=8, - number=9, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='diytext_id', full_name='im.msg.msg_body.ApolloActMsg.diytext_id', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='diytext_content', full_name='im.msg.msg_body.ApolloActMsg.diytext_content', index=10, - number=11, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='input_text', full_name='im.msg.msg_body.ApolloActMsg.input_text', index=11, - number=12, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='im.msg.msg_body.ApolloActMsg.pb_reserve', index=12, - number=13, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=215, - serialized_end=487, -) - - -_ARKAPPELEM = _descriptor.Descriptor( - name='ArkAppElem', - full_name='im.msg.msg_body.ArkAppElem', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='app_name', full_name='im.msg.msg_body.ArkAppElem.app_name', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='min_version', full_name='im.msg.msg_body.ArkAppElem.min_version', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='xml_template', full_name='im.msg.msg_body.ArkAppElem.xml_template', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data', full_name='im.msg.msg_body.ArkAppElem.data', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=489, - serialized_end=576, -) - - -_ATTR = _descriptor.Descriptor( - name='Attr', - full_name='im.msg.msg_body.Attr', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='code_page', full_name='im.msg.msg_body.Attr.code_page', index=0, - number=1, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='time', full_name='im.msg.msg_body.Attr.time', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='random', full_name='im.msg.msg_body.Attr.random', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='color', full_name='im.msg.msg_body.Attr.color', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='size', full_name='im.msg.msg_body.Attr.size', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='effect', full_name='im.msg.msg_body.Attr.effect', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='char_set', full_name='im.msg.msg_body.Attr.char_set', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pitch_and_family', full_name='im.msg.msg_body.Attr.pitch_and_family', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='font_name', full_name='im.msg.msg_body.Attr.font_name', index=8, - number=9, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reserve_data', full_name='im.msg.msg_body.Attr.reserve_data', index=9, - number=10, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=579, - serialized_end=764, -) - - -_BITAPPMSG = _descriptor.Descriptor( - name='BitAppMsg', - full_name='im.msg.msg_body.BitAppMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='buf', full_name='im.msg.msg_body.BitAppMsg.buf', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=766, - serialized_end=790, -) - - -_BLESSINGMESSAGE = _descriptor.Descriptor( - name='BlessingMessage', - full_name='im.msg.msg_body.BlessingMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='msg_type', full_name='im.msg.msg_body.BlessingMessage.msg_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ex_flag', full_name='im.msg.msg_body.BlessingMessage.ex_flag', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=792, - serialized_end=844, -) - - -_COMMONELEM = _descriptor.Descriptor( - name='CommonElem', - full_name='im.msg.msg_body.CommonElem', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='service_type', full_name='im.msg.msg_body.CommonElem.service_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_elem', full_name='im.msg.msg_body.CommonElem.pb_elem', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='business_type', full_name='im.msg.msg_body.CommonElem.business_type', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=846, - serialized_end=920, -) - - -_CONFERENCETIPSINFO = _descriptor.Descriptor( - name='ConferenceTipsInfo', - full_name='im.msg.msg_body.ConferenceTipsInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='session_type', full_name='im.msg.msg_body.ConferenceTipsInfo.session_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='session_uin', full_name='im.msg.msg_body.ConferenceTipsInfo.session_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='text', full_name='im.msg.msg_body.ConferenceTipsInfo.text', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=922, - serialized_end=999, -) - - -_CRMELEM = _descriptor.Descriptor( - name='CrmElem', - full_name='im.msg.msg_body.CrmElem', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='crm_buf', full_name='im.msg.msg_body.CrmElem.crm_buf', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_resid', full_name='im.msg.msg_body.CrmElem.msg_resid', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='qidian_flag', full_name='im.msg.msg_body.CrmElem.qidian_flag', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='push_flag', full_name='im.msg.msg_body.CrmElem.push_flag', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='count_flag', full_name='im.msg.msg_body.CrmElem.count_flag', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1001, - serialized_end=1106, -) - - -_CUSTOMELEM = _descriptor.Descriptor( - name='CustomElem', - full_name='im.msg.msg_body.CustomElem', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='desc', full_name='im.msg.msg_body.CustomElem.desc', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data', full_name='im.msg.msg_body.CustomElem.data', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='enum_type', full_name='im.msg.msg_body.CustomElem.enum_type', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ext', full_name='im.msg.msg_body.CustomElem.ext', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sound', full_name='im.msg.msg_body.CustomElem.sound', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1108, - serialized_end=1195, -) - - -_CUSTOMFACE = _descriptor.Descriptor( - name='CustomFace', - full_name='im.msg.msg_body.CustomFace', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='guid', full_name='im.msg.msg_body.CustomFace.guid', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_path', full_name='im.msg.msg_body.CustomFace.file_path', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='shortcut', full_name='im.msg.msg_body.CustomFace.shortcut', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='buffer', full_name='im.msg.msg_body.CustomFace.buffer', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='flag', full_name='im.msg.msg_body.CustomFace.flag', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='old_data', full_name='im.msg.msg_body.CustomFace.old_data', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_id', full_name='im.msg.msg_body.CustomFace.file_id', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='server_ip', full_name='im.msg.msg_body.CustomFace.server_ip', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='server_port', full_name='im.msg.msg_body.CustomFace.server_port', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_type', full_name='im.msg.msg_body.CustomFace.file_type', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='signature', full_name='im.msg.msg_body.CustomFace.signature', index=10, - number=11, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='useful', full_name='im.msg.msg_body.CustomFace.useful', index=11, - number=12, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='md5', full_name='im.msg.msg_body.CustomFace.md5', index=12, - number=13, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='thumb_url', full_name='im.msg.msg_body.CustomFace.thumb_url', index=13, - number=14, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='big_url', full_name='im.msg.msg_body.CustomFace.big_url', index=14, - number=15, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='orig_url', full_name='im.msg.msg_body.CustomFace.orig_url', index=15, - number=16, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='biz_type', full_name='im.msg.msg_body.CustomFace.biz_type', index=16, - number=17, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='repeat_index', full_name='im.msg.msg_body.CustomFace.repeat_index', index=17, - number=18, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='repeat_image', full_name='im.msg.msg_body.CustomFace.repeat_image', index=18, - number=19, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='image_type', full_name='im.msg.msg_body.CustomFace.image_type', index=19, - number=20, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='index', full_name='im.msg.msg_body.CustomFace.index', index=20, - number=21, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='width', full_name='im.msg.msg_body.CustomFace.width', index=21, - number=22, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='height', full_name='im.msg.msg_body.CustomFace.height', index=22, - number=23, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='source', full_name='im.msg.msg_body.CustomFace.source', index=23, - number=24, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='size', full_name='im.msg.msg_body.CustomFace.size', index=24, - number=25, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='origin', full_name='im.msg.msg_body.CustomFace.origin', index=25, - number=26, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='thumb_width', full_name='im.msg.msg_body.CustomFace.thumb_width', index=26, - number=27, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='thumb_height', full_name='im.msg.msg_body.CustomFace.thumb_height', index=27, - number=28, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='show_len', full_name='im.msg.msg_body.CustomFace.show_len', index=28, - number=29, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='download_len', full_name='im.msg.msg_body.CustomFace.download_len', index=29, - number=30, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='_400_url', full_name='im.msg.msg_body.CustomFace._400_url', index=30, - number=31, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='_400_width', full_name='im.msg.msg_body.CustomFace._400_width', index=31, - number=32, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='_400_height', full_name='im.msg.msg_body.CustomFace._400_height', index=32, - number=33, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='im.msg.msg_body.CustomFace.pb_reserve', index=33, - number=34, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1198, - serialized_end=1823, -) - - -_DELIVERGIFTMSG = _descriptor.Descriptor( - name='DeliverGiftMsg', - full_name='im.msg.msg_body.DeliverGiftMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='gray_tip_content', full_name='im.msg.msg_body.DeliverGiftMsg.gray_tip_content', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='animation_package_id', full_name='im.msg.msg_body.DeliverGiftMsg.animation_package_id', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='animation_package_url_a', full_name='im.msg.msg_body.DeliverGiftMsg.animation_package_url_a', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='animation_package_url_i', full_name='im.msg.msg_body.DeliverGiftMsg.animation_package_url_i', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='remind_brief', full_name='im.msg.msg_body.DeliverGiftMsg.remind_brief', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='gift_id', full_name='im.msg.msg_body.DeliverGiftMsg.gift_id', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='gift_count', full_name='im.msg.msg_body.DeliverGiftMsg.gift_count', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='animation_brief', full_name='im.msg.msg_body.DeliverGiftMsg.animation_brief', index=7, - number=8, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sender_uin', full_name='im.msg.msg_body.DeliverGiftMsg.sender_uin', index=8, - number=9, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='receiver_uin', full_name='im.msg.msg_body.DeliverGiftMsg.receiver_uin', index=9, - number=10, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='stmessage_title', full_name='im.msg.msg_body.DeliverGiftMsg.stmessage_title', index=10, - number=11, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='stmessage_subtitle', full_name='im.msg.msg_body.DeliverGiftMsg.stmessage_subtitle', index=11, - number=12, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='stmessage_message', full_name='im.msg.msg_body.DeliverGiftMsg.stmessage_message', index=12, - number=13, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='stmessage_giftpicid', full_name='im.msg.msg_body.DeliverGiftMsg.stmessage_giftpicid', index=13, - number=14, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='stmessage_comefrom', full_name='im.msg.msg_body.DeliverGiftMsg.stmessage_comefrom', index=14, - number=15, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='stmessage_exflag', full_name='im.msg.msg_body.DeliverGiftMsg.stmessage_exflag', index=15, - number=16, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_all_gift_id', full_name='im.msg.msg_body.DeliverGiftMsg.to_all_gift_id', index=16, - number=17, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='comefrom_link', full_name='im.msg.msg_body.DeliverGiftMsg.comefrom_link', index=17, - number=18, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='im.msg.msg_body.DeliverGiftMsg.pb_reserve', index=18, - number=19, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='receiver_name', full_name='im.msg.msg_body.DeliverGiftMsg.receiver_name', index=19, - number=20, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='receiver_pic', full_name='im.msg.msg_body.DeliverGiftMsg.receiver_pic', index=20, - number=21, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='stmessage_gifturl', full_name='im.msg.msg_body.DeliverGiftMsg.stmessage_gifturl', index=21, - number=22, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1826, - serialized_end=2392, -) - - -_EIMINFO = _descriptor.Descriptor( - name='EIMInfo', - full_name='im.msg.msg_body.EIMInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='root_id', full_name='im.msg.msg_body.EIMInfo.root_id', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='flag', full_name='im.msg.msg_body.EIMInfo.flag', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2394, - serialized_end=2434, -) - - -_ELEM = _descriptor.Descriptor( - name='Elem', - full_name='im.msg.msg_body.Elem', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='text', full_name='im.msg.msg_body.Elem.text', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='face', full_name='im.msg.msg_body.Elem.face', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='online_image', full_name='im.msg.msg_body.Elem.online_image', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='not_online_image', full_name='im.msg.msg_body.Elem.not_online_image', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='trans_elem_info', full_name='im.msg.msg_body.Elem.trans_elem_info', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='market_face', full_name='im.msg.msg_body.Elem.market_face', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='elem_flags', full_name='im.msg.msg_body.Elem.elem_flags', index=6, - number=7, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='custom_face', full_name='im.msg.msg_body.Elem.custom_face', index=7, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='elem_flags2', full_name='im.msg.msg_body.Elem.elem_flags2', index=8, - number=9, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='fun_face', full_name='im.msg.msg_body.Elem.fun_face', index=9, - number=10, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='secret_file', full_name='im.msg.msg_body.Elem.secret_file', index=10, - number=11, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rich_msg', full_name='im.msg.msg_body.Elem.rich_msg', index=11, - number=12, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_file', full_name='im.msg.msg_body.Elem.group_file', index=12, - number=13, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pub_group', full_name='im.msg.msg_body.Elem.pub_group', index=13, - number=14, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='market_trans', full_name='im.msg.msg_body.Elem.market_trans', index=14, - number=15, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extra_info', full_name='im.msg.msg_body.Elem.extra_info', index=15, - number=16, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='shake_window', full_name='im.msg.msg_body.Elem.shake_window', index=16, - number=17, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pub_account', full_name='im.msg.msg_body.Elem.pub_account', index=17, - number=18, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='video_file', full_name='im.msg.msg_body.Elem.video_file', index=18, - number=19, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='tips_info', full_name='im.msg.msg_body.Elem.tips_info', index=19, - number=20, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='anon_group_msg', full_name='im.msg.msg_body.Elem.anon_group_msg', index=20, - number=21, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='qq_live_old', full_name='im.msg.msg_body.Elem.qq_live_old', index=21, - number=22, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='life_online', full_name='im.msg.msg_body.Elem.life_online', index=22, - number=23, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='qqwallet_msg', full_name='im.msg.msg_body.Elem.qqwallet_msg', index=23, - number=24, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='crm_elem', full_name='im.msg.msg_body.Elem.crm_elem', index=24, - number=25, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='conference_tips_info', full_name='im.msg.msg_body.Elem.conference_tips_info', index=25, - number=26, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='redbag_info', full_name='im.msg.msg_body.Elem.redbag_info', index=26, - number=27, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='low_version_tips', full_name='im.msg.msg_body.Elem.low_version_tips', index=27, - number=28, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bankcode_ctrl_info', full_name='im.msg.msg_body.Elem.bankcode_ctrl_info', index=28, - number=29, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='near_by_msg', full_name='im.msg.msg_body.Elem.near_by_msg', index=29, - number=30, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='custom_elem', full_name='im.msg.msg_body.Elem.custom_elem', index=30, - number=31, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='location_info', full_name='im.msg.msg_body.Elem.location_info', index=31, - number=32, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pub_acc_info', full_name='im.msg.msg_body.Elem.pub_acc_info', index=32, - number=33, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='small_emoji', full_name='im.msg.msg_body.Elem.small_emoji', index=33, - number=34, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='fsj_msg_elem', full_name='im.msg.msg_body.Elem.fsj_msg_elem', index=34, - number=35, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ark_app', full_name='im.msg.msg_body.Elem.ark_app', index=35, - number=36, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='general_flags', full_name='im.msg.msg_body.Elem.general_flags', index=36, - number=37, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='hc_flash_pic', full_name='im.msg.msg_body.Elem.hc_flash_pic', index=37, - number=38, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='deliver_gift_msg', full_name='im.msg.msg_body.Elem.deliver_gift_msg', index=38, - number=39, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bitapp_msg', full_name='im.msg.msg_body.Elem.bitapp_msg', index=39, - number=40, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='open_qq_data', full_name='im.msg.msg_body.Elem.open_qq_data', index=40, - number=41, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='apollo_msg', full_name='im.msg.msg_body.Elem.apollo_msg', index=41, - number=42, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_pub_acc_info', full_name='im.msg.msg_body.Elem.group_pub_acc_info', index=42, - number=43, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bless_msg', full_name='im.msg.msg_body.Elem.bless_msg', index=43, - number=44, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='src_msg', full_name='im.msg.msg_body.Elem.src_msg', index=44, - number=45, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='lola_msg', full_name='im.msg.msg_body.Elem.lola_msg', index=45, - number=46, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_business_msg', full_name='im.msg.msg_body.Elem.group_business_msg', index=46, - number=47, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='workflow_notify', full_name='im.msg.msg_body.Elem.workflow_notify', index=47, - number=48, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pat_elem', full_name='im.msg.msg_body.Elem.pat_elem', index=48, - number=49, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_post_elem', full_name='im.msg.msg_body.Elem.group_post_elem', index=49, - number=50, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='light_app', full_name='im.msg.msg_body.Elem.light_app', index=50, - number=51, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='eim_info', full_name='im.msg.msg_body.Elem.eim_info', index=51, - number=52, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='common_elem', full_name='im.msg.msg_body.Elem.common_elem', index=52, - number=53, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2437, - serialized_end=5136, -) - - -_ELEMFLAGS = _descriptor.Descriptor( - name='ElemFlags', - full_name='im.msg.msg_body.ElemFlags', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='flags1', full_name='im.msg.msg_body.ElemFlags.flags1', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='business_data', full_name='im.msg.msg_body.ElemFlags.business_data', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5138, - serialized_end=5188, -) - - -_ELEMFLAGS2 = _descriptor.Descriptor( - name='ElemFlags2', - full_name='im.msg.msg_body.ElemFlags2', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='color_text_id', full_name='im.msg.msg_body.ElemFlags2.color_text_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_id', full_name='im.msg.msg_body.ElemFlags2.msg_id', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='whisper_session_id', full_name='im.msg.msg_body.ElemFlags2.whisper_session_id', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ptt_change_bit', full_name='im.msg.msg_body.ElemFlags2.ptt_change_bit', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='vip_status', full_name='im.msg.msg_body.ElemFlags2.vip_status', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='compatible_id', full_name='im.msg.msg_body.ElemFlags2.compatible_id', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='insts', full_name='im.msg.msg_body.ElemFlags2.insts', index=6, - number=7, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_rpt_cnt', full_name='im.msg.msg_body.ElemFlags2.msg_rpt_cnt', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='src_inst', full_name='im.msg.msg_body.ElemFlags2.src_inst', index=8, - number=9, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='longtitude', full_name='im.msg.msg_body.ElemFlags2.longtitude', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='latitude', full_name='im.msg.msg_body.ElemFlags2.latitude', index=10, - number=11, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='custom_font', full_name='im.msg.msg_body.ElemFlags2.custom_font', index=11, - number=12, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pc_support_def', full_name='im.msg.msg_body.ElemFlags2.pc_support_def', index=12, - number=13, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='crm_flags', full_name='im.msg.msg_body.ElemFlags2.crm_flags', index=13, - number=14, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5191, - serialized_end=5570, -) - - -_INST = _descriptor.Descriptor( - name='Inst', - full_name='im.msg.msg_body.Inst', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='app_id', full_name='im.msg.msg_body.Inst.app_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='inst_id', full_name='im.msg.msg_body.Inst.inst_id', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5572, - serialized_end=5611, -) - - -_EXTRAINFO = _descriptor.Descriptor( - name='ExtraInfo', - full_name='im.msg.msg_body.ExtraInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='nick', full_name='im.msg.msg_body.ExtraInfo.nick', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_card', full_name='im.msg.msg_body.ExtraInfo.group_card', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='level', full_name='im.msg.msg_body.ExtraInfo.level', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='flags', full_name='im.msg.msg_body.ExtraInfo.flags', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_mask', full_name='im.msg.msg_body.ExtraInfo.group_mask', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_tail_id', full_name='im.msg.msg_body.ExtraInfo.msg_tail_id', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sender_title', full_name='im.msg.msg_body.ExtraInfo.sender_title', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='apns_tips', full_name='im.msg.msg_body.ExtraInfo.apns_tips', index=7, - number=8, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='uin', full_name='im.msg.msg_body.ExtraInfo.uin', index=8, - number=9, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_state_flag', full_name='im.msg.msg_body.ExtraInfo.msg_state_flag', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='apns_sound_type', full_name='im.msg.msg_body.ExtraInfo.apns_sound_type', index=10, - number=11, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='new_group_flag', full_name='im.msg.msg_body.ExtraInfo.new_group_flag', index=11, - number=12, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5614, - serialized_end=5857, -) - - -_FSJMESSAGEELEM = _descriptor.Descriptor( - name='FSJMessageElem', - full_name='im.msg.msg_body.FSJMessageElem', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='msg_type', full_name='im.msg.msg_body.FSJMessageElem.msg_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5859, - serialized_end=5893, -) - - -_FACE = _descriptor.Descriptor( - name='Face', - full_name='im.msg.msg_body.Face', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='index', full_name='im.msg.msg_body.Face.index', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='old', full_name='im.msg.msg_body.Face.old', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='buf', full_name='im.msg.msg_body.Face.buf', index=2, - number=11, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5895, - serialized_end=5942, -) - - -_FUNFACE = _descriptor.Descriptor( - name='FunFace', - full_name='im.msg.msg_body.FunFace', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='turntable', full_name='im.msg.msg_body.FunFace.turntable', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bomb', full_name='im.msg.msg_body.FunFace.bomb', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5944, - serialized_end=6037, -) - - -_BOMB = _descriptor.Descriptor( - name='Bomb', - full_name='im.msg.msg_body.Bomb', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='burst', full_name='im.msg.msg_body.Bomb.burst', index=0, - number=1, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6039, - serialized_end=6060, -) - - -_TURNTABLE = _descriptor.Descriptor( - name='Turntable', - full_name='im.msg.msg_body.Turntable', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='uin_list', full_name='im.msg.msg_body.Turntable.uin_list', index=0, - number=1, type=4, cpp_type=4, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='hit_uin', full_name='im.msg.msg_body.Turntable.hit_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='hit_uin_nick', full_name='im.msg.msg_body.Turntable.hit_uin_nick', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6062, - serialized_end=6130, -) - - -_GENERALFLAGS = _descriptor.Descriptor( - name='GeneralFlags', - full_name='im.msg.msg_body.GeneralFlags', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='bubble_diy_text_id', full_name='im.msg.msg_body.GeneralFlags.bubble_diy_text_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_flag_new', full_name='im.msg.msg_body.GeneralFlags.group_flag_new', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='uin', full_name='im.msg.msg_body.GeneralFlags.uin', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rp_id', full_name='im.msg.msg_body.GeneralFlags.rp_id', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='prp_fold', full_name='im.msg.msg_body.GeneralFlags.prp_fold', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='long_text_flag', full_name='im.msg.msg_body.GeneralFlags.long_text_flag', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='long_text_resid', full_name='im.msg.msg_body.GeneralFlags.long_text_resid', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_type', full_name='im.msg.msg_body.GeneralFlags.group_type', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_uin_flag', full_name='im.msg.msg_body.GeneralFlags.to_uin_flag', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='glamour_level', full_name='im.msg.msg_body.GeneralFlags.glamour_level', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='member_level', full_name='im.msg.msg_body.GeneralFlags.member_level', index=10, - number=11, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_rank_seq', full_name='im.msg.msg_body.GeneralFlags.group_rank_seq', index=11, - number=12, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='olympic_torch', full_name='im.msg.msg_body.GeneralFlags.olympic_torch', index=12, - number=13, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='babyq_guide_msg_cookie', full_name='im.msg.msg_body.GeneralFlags.babyq_guide_msg_cookie', index=13, - number=14, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='uin32_expert_flag', full_name='im.msg.msg_body.GeneralFlags.uin32_expert_flag', index=14, - number=15, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bubble_sub_id', full_name='im.msg.msg_body.GeneralFlags.bubble_sub_id', index=15, - number=16, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pendant_id', full_name='im.msg.msg_body.GeneralFlags.pendant_id', index=16, - number=17, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rp_index', full_name='im.msg.msg_body.GeneralFlags.rp_index', index=17, - number=18, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='im.msg.msg_body.GeneralFlags.pb_reserve', index=18, - number=19, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6133, - serialized_end=6567, -) - - -_GROUPBUSINESSMSG = _descriptor.Descriptor( - name='GroupBusinessMsg', - full_name='im.msg.msg_body.GroupBusinessMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='flags', full_name='im.msg.msg_body.GroupBusinessMsg.flags', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='head_url', full_name='im.msg.msg_body.GroupBusinessMsg.head_url', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='head_clk_url', full_name='im.msg.msg_body.GroupBusinessMsg.head_clk_url', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='nick', full_name='im.msg.msg_body.GroupBusinessMsg.nick', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='nick_color', full_name='im.msg.msg_body.GroupBusinessMsg.nick_color', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rank', full_name='im.msg.msg_body.GroupBusinessMsg.rank', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rank_color', full_name='im.msg.msg_body.GroupBusinessMsg.rank_color', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rank_bgcolor', full_name='im.msg.msg_body.GroupBusinessMsg.rank_bgcolor', index=7, - number=8, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6570, - serialized_end=6733, -) - - -_GROUPFILE = _descriptor.Descriptor( - name='GroupFile', - full_name='im.msg.msg_body.GroupFile', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='filename', full_name='im.msg.msg_body.GroupFile.filename', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_size', full_name='im.msg.msg_body.GroupFile.file_size', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_id', full_name='im.msg.msg_body.GroupFile.file_id', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='batch_id', full_name='im.msg.msg_body.GroupFile.batch_id', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_key', full_name='im.msg.msg_body.GroupFile.file_key', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='mark', full_name='im.msg.msg_body.GroupFile.mark', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sequence', full_name='im.msg.msg_body.GroupFile.sequence', index=6, - number=7, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='batch_item_id', full_name='im.msg.msg_body.GroupFile.batch_item_id', index=7, - number=8, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='feed_msg_time', full_name='im.msg.msg_body.GroupFile.feed_msg_time', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='im.msg.msg_body.GroupFile.pb_reserve', index=9, - number=10, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6736, - serialized_end=6935, -) - - -_GROUPPOSTELEM = _descriptor.Descriptor( - name='GroupPostElem', - full_name='im.msg.msg_body.GroupPostElem', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='trans_type', full_name='im.msg.msg_body.GroupPostElem.trans_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='trans_msg', full_name='im.msg.msg_body.GroupPostElem.trans_msg', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6937, - serialized_end=6991, -) - - -_GROUPPUBACCOUNTINFO = _descriptor.Descriptor( - name='GroupPubAccountInfo', - full_name='im.msg.msg_body.GroupPubAccountInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='pub_account', full_name='im.msg.msg_body.GroupPubAccountInfo.pub_account', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6993, - serialized_end=7035, -) - - -_LIFEONLINEACCOUNT = _descriptor.Descriptor( - name='LifeOnlineAccount', - full_name='im.msg.msg_body.LifeOnlineAccount', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='unique_id', full_name='im.msg.msg_body.LifeOnlineAccount.unique_id', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='op', full_name='im.msg.msg_body.LifeOnlineAccount.op', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='show_time', full_name='im.msg.msg_body.LifeOnlineAccount.show_time', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='report', full_name='im.msg.msg_body.LifeOnlineAccount.report', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ack', full_name='im.msg.msg_body.LifeOnlineAccount.ack', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bitmap', full_name='im.msg.msg_body.LifeOnlineAccount.bitmap', index=5, - number=6, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='gdt_imp_data', full_name='im.msg.msg_body.LifeOnlineAccount.gdt_imp_data', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='gdt_cli_data', full_name='im.msg.msg_body.LifeOnlineAccount.gdt_cli_data', index=7, - number=8, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='view_id', full_name='im.msg.msg_body.LifeOnlineAccount.view_id', index=8, - number=9, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7038, - serialized_end=7213, -) - - -_LIGHTAPPELEM = _descriptor.Descriptor( - name='LightAppElem', - full_name='im.msg.msg_body.LightAppElem', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='data', full_name='im.msg.msg_body.LightAppElem.data', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_resid', full_name='im.msg.msg_body.LightAppElem.msg_resid', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7215, - serialized_end=7262, -) - - -_LOLAMSG = _descriptor.Descriptor( - name='LolaMsg', - full_name='im.msg.msg_body.LolaMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='msg_resid', full_name='im.msg.msg_body.LolaMsg.msg_resid', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='encode_content', full_name='im.msg.msg_body.LolaMsg.encode_content', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='long_msg_url', full_name='im.msg.msg_body.LolaMsg.long_msg_url', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='download_key', full_name='im.msg.msg_body.LolaMsg.download_key', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7264, - serialized_end=7360, -) - - -_LOWVERSIONTIPS = _descriptor.Descriptor( - name='LowVersionTips', - full_name='im.msg.msg_body.LowVersionTips', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='business_id', full_name='im.msg.msg_body.LowVersionTips.business_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='session_type', full_name='im.msg.msg_body.LowVersionTips.session_type', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='session_uin', full_name='im.msg.msg_body.LowVersionTips.session_uin', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sender_uin', full_name='im.msg.msg_body.LowVersionTips.sender_uin', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='text', full_name='im.msg.msg_body.LowVersionTips.text', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7362, - serialized_end=7476, -) - - -_MARKETFACE = _descriptor.Descriptor( - name='MarketFace', - full_name='im.msg.msg_body.MarketFace', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='face_name', full_name='im.msg.msg_body.MarketFace.face_name', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='item_type', full_name='im.msg.msg_body.MarketFace.item_type', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='face_info', full_name='im.msg.msg_body.MarketFace.face_info', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='face_id', full_name='im.msg.msg_body.MarketFace.face_id', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='tab_id', full_name='im.msg.msg_body.MarketFace.tab_id', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sub_type', full_name='im.msg.msg_body.MarketFace.sub_type', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='key', full_name='im.msg.msg_body.MarketFace.key', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='param', full_name='im.msg.msg_body.MarketFace.param', index=7, - number=8, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='media_type', full_name='im.msg.msg_body.MarketFace.media_type', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='image_width', full_name='im.msg.msg_body.MarketFace.image_width', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='image_height', full_name='im.msg.msg_body.MarketFace.image_height', index=10, - number=11, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='mobileparam', full_name='im.msg.msg_body.MarketFace.mobileparam', index=11, - number=12, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='im.msg.msg_body.MarketFace.pb_reserve', index=12, - number=13, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7479, - serialized_end=7731, -) - - -_MARKETTRANS = _descriptor.Descriptor( - name='MarketTrans', - full_name='im.msg.msg_body.MarketTrans', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='flag', full_name='im.msg.msg_body.MarketTrans.flag', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='xml', full_name='im.msg.msg_body.MarketTrans.xml', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_resid', full_name='im.msg.msg_body.MarketTrans.msg_resid', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ability', full_name='im.msg.msg_body.MarketTrans.ability', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='min_ability', full_name='im.msg.msg_body.MarketTrans.min_ability', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7733, - serialized_end=7830, -) - - -_MSGBODY = _descriptor.Descriptor( - name='MsgBody', - full_name='im.msg.msg_body.MsgBody', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='rich_text', full_name='im.msg.msg_body.MsgBody.rich_text', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='content', full_name='im.msg.msg_body.MsgBody.content', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='encrypt_content', full_name='im.msg.msg_body.MsgBody.encrypt_content', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7832, - serialized_end=7929, -) - - -_MSGBODY_SUBTYPE4 = _descriptor.Descriptor( - name='MsgBody_subtype4', - full_name='im.msg.msg_body.MsgBody_subtype4', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='not_online_file', full_name='im.msg.msg_body.MsgBody_subtype4.not_online_file', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_time', full_name='im.msg.msg_body.MsgBody_subtype4.msg_time', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7931, - serialized_end=8024, -) - - -_NEARBYMESSAGETYPE = _descriptor.Descriptor( - name='NearByMessageType', - full_name='im.msg.msg_body.NearByMessageType', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='type', full_name='im.msg.msg_body.NearByMessageType.type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='identify_type', full_name='im.msg.msg_body.NearByMessageType.identify_type', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=8026, - serialized_end=8082, -) - - -_NOTONLINEFILE = _descriptor.Descriptor( - name='NotOnlineFile', - full_name='im.msg.msg_body.NotOnlineFile', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='file_type', full_name='im.msg.msg_body.NotOnlineFile.file_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='im.msg.msg_body.NotOnlineFile.sig', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_uuid', full_name='im.msg.msg_body.NotOnlineFile.file_uuid', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_md5', full_name='im.msg.msg_body.NotOnlineFile.file_md5', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_name', full_name='im.msg.msg_body.NotOnlineFile.file_name', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_size', full_name='im.msg.msg_body.NotOnlineFile.file_size', index=5, - number=6, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='note', full_name='im.msg.msg_body.NotOnlineFile.note', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reserved', full_name='im.msg.msg_body.NotOnlineFile.reserved', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='subcmd', full_name='im.msg.msg_body.NotOnlineFile.subcmd', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='micro_cloud', full_name='im.msg.msg_body.NotOnlineFile.micro_cloud', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_urls', full_name='im.msg.msg_body.NotOnlineFile.file_urls', index=10, - number=11, type=12, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='download_flag', full_name='im.msg.msg_body.NotOnlineFile.download_flag', index=11, - number=12, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='danger_evel', full_name='im.msg.msg_body.NotOnlineFile.danger_evel', index=12, - number=50, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='life_time', full_name='im.msg.msg_body.NotOnlineFile.life_time', index=13, - number=51, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='upload_time', full_name='im.msg.msg_body.NotOnlineFile.upload_time', index=14, - number=52, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='abs_file_type', full_name='im.msg.msg_body.NotOnlineFile.abs_file_type', index=15, - number=53, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='client_type', full_name='im.msg.msg_body.NotOnlineFile.client_type', index=16, - number=54, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='expire_time', full_name='im.msg.msg_body.NotOnlineFile.expire_time', index=17, - number=55, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='im.msg.msg_body.NotOnlineFile.pb_reserve', index=18, - number=56, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='fileidcrc_media', full_name='im.msg.msg_body.NotOnlineFile.fileidcrc_media', index=19, - number=57, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=8085, - serialized_end=8489, -) - - -_NOTONLINEIMAGE = _descriptor.Descriptor( - name='NotOnlineImage', - full_name='im.msg.msg_body.NotOnlineImage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='file_path', full_name='im.msg.msg_body.NotOnlineImage.file_path', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_len', full_name='im.msg.msg_body.NotOnlineImage.file_len', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='download_path', full_name='im.msg.msg_body.NotOnlineImage.download_path', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='old_ver_send_file', full_name='im.msg.msg_body.NotOnlineImage.old_ver_send_file', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='img_type', full_name='im.msg.msg_body.NotOnlineImage.img_type', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='previews_image', full_name='im.msg.msg_body.NotOnlineImage.previews_image', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pic_md5', full_name='im.msg.msg_body.NotOnlineImage.pic_md5', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pic_height', full_name='im.msg.msg_body.NotOnlineImage.pic_height', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pic_width', full_name='im.msg.msg_body.NotOnlineImage.pic_width', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='res_id', full_name='im.msg.msg_body.NotOnlineImage.res_id', index=9, - number=10, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='flag', full_name='im.msg.msg_body.NotOnlineImage.flag', index=10, - number=11, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='thumb_url', full_name='im.msg.msg_body.NotOnlineImage.thumb_url', index=11, - number=12, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='original', full_name='im.msg.msg_body.NotOnlineImage.original', index=12, - number=13, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='big_url', full_name='im.msg.msg_body.NotOnlineImage.big_url', index=13, - number=14, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='orig_url', full_name='im.msg.msg_body.NotOnlineImage.orig_url', index=14, - number=15, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='biz_type', full_name='im.msg.msg_body.NotOnlineImage.biz_type', index=15, - number=16, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='result', full_name='im.msg.msg_body.NotOnlineImage.result', index=16, - number=17, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='index', full_name='im.msg.msg_body.NotOnlineImage.index', index=17, - number=18, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='op_face_buf', full_name='im.msg.msg_body.NotOnlineImage.op_face_buf', index=18, - number=19, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='old_pic_md5', full_name='im.msg.msg_body.NotOnlineImage.old_pic_md5', index=19, - number=20, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='thumb_width', full_name='im.msg.msg_body.NotOnlineImage.thumb_width', index=20, - number=21, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='thumb_height', full_name='im.msg.msg_body.NotOnlineImage.thumb_height', index=21, - number=22, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_id', full_name='im.msg.msg_body.NotOnlineImage.file_id', index=22, - number=23, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='show_len', full_name='im.msg.msg_body.NotOnlineImage.show_len', index=23, - number=24, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='download_len', full_name='im.msg.msg_body.NotOnlineImage.download_len', index=24, - number=25, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='_400_url', full_name='im.msg.msg_body.NotOnlineImage._400_url', index=25, - number=26, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='_400_width', full_name='im.msg.msg_body.NotOnlineImage._400_width', index=26, - number=27, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='_400_height', full_name='im.msg.msg_body.NotOnlineImage._400_height', index=27, - number=28, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='im.msg.msg_body.NotOnlineImage.pb_reserve', index=28, - number=29, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=8492, - serialized_end=9065, -) - - -_ONLINEIMAGE = _descriptor.Descriptor( - name='OnlineImage', - full_name='im.msg.msg_body.OnlineImage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='guid', full_name='im.msg.msg_body.OnlineImage.guid', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_path', full_name='im.msg.msg_body.OnlineImage.file_path', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='old_ver_send_file', full_name='im.msg.msg_body.OnlineImage.old_ver_send_file', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=9067, - serialized_end=9140, -) - - -_OPENQQDATA = _descriptor.Descriptor( - name='OpenQQData', - full_name='im.msg.msg_body.OpenQQData', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='car_qq_data', full_name='im.msg.msg_body.OpenQQData.car_qq_data', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=9142, - serialized_end=9175, -) - - -_PATSELEM = _descriptor.Descriptor( - name='PatsElem', - full_name='im.msg.msg_body.PatsElem', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='pat_type', full_name='im.msg.msg_body.PatsElem.pat_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pat_count', full_name='im.msg.msg_body.PatsElem.pat_count', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=9177, - serialized_end=9224, -) - - -_PCSUPPORTDEF = _descriptor.Descriptor( - name='PcSupportDef', - full_name='im.msg.msg_body.PcSupportDef', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='pc_ptl_begin', full_name='im.msg.msg_body.PcSupportDef.pc_ptl_begin', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pc_ptl_end', full_name='im.msg.msg_body.PcSupportDef.pc_ptl_end', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='mac_ptl_begin', full_name='im.msg.msg_body.PcSupportDef.mac_ptl_begin', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='mac_ptl_end', full_name='im.msg.msg_body.PcSupportDef.mac_ptl_end', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ptls_support', full_name='im.msg.msg_body.PcSupportDef.ptls_support', index=4, - number=5, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ptls_not_support', full_name='im.msg.msg_body.PcSupportDef.ptls_not_support', index=5, - number=6, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=9227, - serialized_end=9375, -) - - -_PTT = _descriptor.Descriptor( - name='Ptt', - full_name='im.msg.msg_body.Ptt', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='file_type', full_name='im.msg.msg_body.Ptt.file_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='src_uin', full_name='im.msg.msg_body.Ptt.src_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_uuid', full_name='im.msg.msg_body.Ptt.file_uuid', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_md5', full_name='im.msg.msg_body.Ptt.file_md5', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_name', full_name='im.msg.msg_body.Ptt.file_name', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_size', full_name='im.msg.msg_body.Ptt.file_size', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reserve', full_name='im.msg.msg_body.Ptt.reserve', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_id', full_name='im.msg.msg_body.Ptt.file_id', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='server_ip', full_name='im.msg.msg_body.Ptt.server_ip', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='server_port', full_name='im.msg.msg_body.Ptt.server_port', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='valid', full_name='im.msg.msg_body.Ptt.valid', index=10, - number=11, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='signature', full_name='im.msg.msg_body.Ptt.signature', index=11, - number=12, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='shortcut', full_name='im.msg.msg_body.Ptt.shortcut', index=12, - number=13, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_key', full_name='im.msg.msg_body.Ptt.file_key', index=13, - number=14, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='magic_ptt_index', full_name='im.msg.msg_body.Ptt.magic_ptt_index', index=14, - number=15, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='voice_switch', full_name='im.msg.msg_body.Ptt.voice_switch', index=15, - number=16, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ptt_url', full_name='im.msg.msg_body.Ptt.ptt_url', index=16, - number=17, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_file_key', full_name='im.msg.msg_body.Ptt.group_file_key', index=17, - number=18, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='time', full_name='im.msg.msg_body.Ptt.time', index=18, - number=19, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='down_para', full_name='im.msg.msg_body.Ptt.down_para', index=19, - number=20, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='format', full_name='im.msg.msg_body.Ptt.format', index=20, - number=29, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='im.msg.msg_body.Ptt.pb_reserve', index=21, - number=30, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ptt_urls', full_name='im.msg.msg_body.Ptt.ptt_urls', index=22, - number=31, type=12, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='download_flag', full_name='im.msg.msg_body.Ptt.download_flag', index=23, - number=32, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=9378, - serialized_end=9836, -) - - -_PUBACCINFO = _descriptor.Descriptor( - name='PubAccInfo', - full_name='im.msg.msg_body.PubAccInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='is_inter_num', full_name='im.msg.msg_body.PubAccInfo.is_inter_num', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_template_id', full_name='im.msg.msg_body.PubAccInfo.msg_template_id', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='long_msg_url', full_name='im.msg.msg_body.PubAccInfo.long_msg_url', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='download_key', full_name='im.msg.msg_body.PubAccInfo.download_key', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=9838, - serialized_end=9941, -) - - -_PUBACCOUNT = _descriptor.Descriptor( - name='PubAccount', - full_name='im.msg.msg_body.PubAccount', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='buf', full_name='im.msg.msg_body.PubAccount.buf', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pub_account_uin', full_name='im.msg.msg_body.PubAccount.pub_account_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=9943, - serialized_end=9993, -) - - -_PUBGROUP = _descriptor.Descriptor( - name='PubGroup', - full_name='im.msg.msg_body.PubGroup', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='nickname', full_name='im.msg.msg_body.PubGroup.nickname', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='gender', full_name='im.msg.msg_body.PubGroup.gender', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='age', full_name='im.msg.msg_body.PubGroup.age', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='distance', full_name='im.msg.msg_body.PubGroup.distance', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=9995, - serialized_end=10070, -) - - -_QQLIVEOLD = _descriptor.Descriptor( - name='QQLiveOld', - full_name='im.msg.msg_body.QQLiveOld', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='sub_cmd', full_name='im.msg.msg_body.QQLiveOld.sub_cmd', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='show_text', full_name='im.msg.msg_body.QQLiveOld.show_text', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='param', full_name='im.msg.msg_body.QQLiveOld.param', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='introduce', full_name='im.msg.msg_body.QQLiveOld.introduce', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=10072, - serialized_end=10153, -) - - -_QQWALLETAIOBODY = _descriptor.Descriptor( - name='QQWalletAioBody', - full_name='im.msg.msg_body.QQWalletAioBody', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='senduin', full_name='im.msg.msg_body.QQWalletAioBody.senduin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sender', full_name='im.msg.msg_body.QQWalletAioBody.sender', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='receiver', full_name='im.msg.msg_body.QQWalletAioBody.receiver', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='channelid', full_name='im.msg.msg_body.QQWalletAioBody.channelid', index=3, - number=4, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='templateid', full_name='im.msg.msg_body.QQWalletAioBody.templateid', index=4, - number=5, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='resend', full_name='im.msg.msg_body.QQWalletAioBody.resend', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_priority', full_name='im.msg.msg_body.QQWalletAioBody.msg_priority', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='redtype', full_name='im.msg.msg_body.QQWalletAioBody.redtype', index=7, - number=8, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='billno', full_name='im.msg.msg_body.QQWalletAioBody.billno', index=8, - number=9, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='authkey', full_name='im.msg.msg_body.QQWalletAioBody.authkey', index=9, - number=10, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sessiontype', full_name='im.msg.msg_body.QQWalletAioBody.sessiontype', index=10, - number=11, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msgtype', full_name='im.msg.msg_body.QQWalletAioBody.msgtype', index=11, - number=12, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='envelopeid', full_name='im.msg.msg_body.QQWalletAioBody.envelopeid', index=12, - number=13, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='name', full_name='im.msg.msg_body.QQWalletAioBody.name', index=13, - number=14, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='conftype', full_name='im.msg.msg_body.QQWalletAioBody.conftype', index=14, - number=15, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_from', full_name='im.msg.msg_body.QQWalletAioBody.msg_from', index=15, - number=16, type=17, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pc_body', full_name='im.msg.msg_body.QQWalletAioBody.pc_body', index=16, - number=17, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='index', full_name='im.msg.msg_body.QQWalletAioBody.index', index=17, - number=18, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='redchannel', full_name='im.msg.msg_body.QQWalletAioBody.redchannel', index=18, - number=19, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='grap_uin', full_name='im.msg.msg_body.QQWalletAioBody.grap_uin', index=19, - number=20, type=4, cpp_type=4, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='im.msg.msg_body.QQWalletAioBody.pb_reserve', index=20, - number=21, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=10156, - serialized_end=10617, -) - - -_QQWALLETAIOELEM = _descriptor.Descriptor( - name='QQWalletAioElem', - full_name='im.msg.msg_body.QQWalletAioElem', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='background', full_name='im.msg.msg_body.QQWalletAioElem.background', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='icon', full_name='im.msg.msg_body.QQWalletAioElem.icon', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='title', full_name='im.msg.msg_body.QQWalletAioElem.title', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='subtitle', full_name='im.msg.msg_body.QQWalletAioElem.subtitle', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='content', full_name='im.msg.msg_body.QQWalletAioElem.content', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='linkurl', full_name='im.msg.msg_body.QQWalletAioElem.linkurl', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='blackstripe', full_name='im.msg.msg_body.QQWalletAioElem.blackstripe', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='notice', full_name='im.msg.msg_body.QQWalletAioElem.notice', index=7, - number=8, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='title_color', full_name='im.msg.msg_body.QQWalletAioElem.title_color', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='subtitle_color', full_name='im.msg.msg_body.QQWalletAioElem.subtitle_color', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='actions_priority', full_name='im.msg.msg_body.QQWalletAioElem.actions_priority', index=10, - number=11, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='jump_url', full_name='im.msg.msg_body.QQWalletAioElem.jump_url', index=11, - number=12, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='native_ios', full_name='im.msg.msg_body.QQWalletAioElem.native_ios', index=12, - number=13, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='native_android', full_name='im.msg.msg_body.QQWalletAioElem.native_android', index=13, - number=14, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='iconurl', full_name='im.msg.msg_body.QQWalletAioElem.iconurl', index=14, - number=15, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='content_color', full_name='im.msg.msg_body.QQWalletAioElem.content_color', index=15, - number=16, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='content_bgcolor', full_name='im.msg.msg_body.QQWalletAioElem.content_bgcolor', index=16, - number=17, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='aio_image_left', full_name='im.msg.msg_body.QQWalletAioElem.aio_image_left', index=17, - number=18, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='aio_image_right', full_name='im.msg.msg_body.QQWalletAioElem.aio_image_right', index=18, - number=19, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cft_image', full_name='im.msg.msg_body.QQWalletAioElem.cft_image', index=19, - number=20, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='im.msg.msg_body.QQWalletAioElem.pb_reserve', index=20, - number=21, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=10620, - serialized_end=11061, -) - - -_QQWALLETMSG = _descriptor.Descriptor( - name='QQWalletMsg', - full_name='im.msg.msg_body.QQWalletMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='aio_body', full_name='im.msg.msg_body.QQWalletMsg.aio_body', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11063, - serialized_end=11128, -) - - -_REDBAGINFO = _descriptor.Descriptor( - name='RedBagInfo', - full_name='im.msg.msg_body.RedBagInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='redbag_type', full_name='im.msg.msg_body.RedBagInfo.redbag_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11130, - serialized_end=11163, -) - - -_RICHMSG = _descriptor.Descriptor( - name='RichMsg', - full_name='im.msg.msg_body.RichMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='template_1', full_name='im.msg.msg_body.RichMsg.template_1', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='service_id', full_name='im.msg.msg_body.RichMsg.service_id', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_resid', full_name='im.msg.msg_body.RichMsg.msg_resid', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rand', full_name='im.msg.msg_body.RichMsg.rand', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='seq', full_name='im.msg.msg_body.RichMsg.seq', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='flags', full_name='im.msg.msg_body.RichMsg.flags', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11165, - serialized_end=11275, -) - - -_RICHTEXT = _descriptor.Descriptor( - name='RichText', - full_name='im.msg.msg_body.RichText', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='attr', full_name='im.msg.msg_body.RichText.attr', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='elems', full_name='im.msg.msg_body.RichText.elems', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='not_online_file', full_name='im.msg.msg_body.RichText.not_online_file', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ptt', full_name='im.msg.msg_body.RichText.ptt', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='tmp_ptt', full_name='im.msg.msg_body.RichText.tmp_ptt', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='trans_211_tmp_msg', full_name='im.msg.msg_body.RichText.trans_211_tmp_msg', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11278, - serialized_end=11557, -) - - -_SECRETFILEMSG = _descriptor.Descriptor( - name='SecretFileMsg', - full_name='im.msg.msg_body.SecretFileMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='file_key', full_name='im.msg.msg_body.SecretFileMsg.file_key', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='from_uin', full_name='im.msg.msg_body.SecretFileMsg.from_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_uin', full_name='im.msg.msg_body.SecretFileMsg.to_uin', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='status', full_name='im.msg.msg_body.SecretFileMsg.status', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ttl', full_name='im.msg.msg_body.SecretFileMsg.ttl', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='type', full_name='im.msg.msg_body.SecretFileMsg.type', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='encrypt_prehead_length', full_name='im.msg.msg_body.SecretFileMsg.encrypt_prehead_length', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='encrypt_type', full_name='im.msg.msg_body.SecretFileMsg.encrypt_type', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='encrypt_key', full_name='im.msg.msg_body.SecretFileMsg.encrypt_key', index=8, - number=9, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='read_times', full_name='im.msg.msg_body.SecretFileMsg.read_times', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='left_time', full_name='im.msg.msg_body.SecretFileMsg.left_time', index=10, - number=11, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='not_online_image', full_name='im.msg.msg_body.SecretFileMsg.not_online_image', index=11, - number=12, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='elem_flags2', full_name='im.msg.msg_body.SecretFileMsg.elem_flags2', index=12, - number=13, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='opertype', full_name='im.msg.msg_body.SecretFileMsg.opertype', index=13, - number=14, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='fromphonenum', full_name='im.msg.msg_body.SecretFileMsg.fromphonenum', index=14, - number=15, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11560, - serialized_end=11933, -) - - -_SHAKEWINDOW = _descriptor.Descriptor( - name='ShakeWindow', - full_name='im.msg.msg_body.ShakeWindow', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='type', full_name='im.msg.msg_body.ShakeWindow.type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reserve', full_name='im.msg.msg_body.ShakeWindow.reserve', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='uin', full_name='im.msg.msg_body.ShakeWindow.uin', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11935, - serialized_end=11992, -) - - -_SMALLEMOJI = _descriptor.Descriptor( - name='SmallEmoji', - full_name='im.msg.msg_body.SmallEmoji', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='pack_id_sum', full_name='im.msg.msg_body.SmallEmoji.pack_id_sum', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='image_type', full_name='im.msg.msg_body.SmallEmoji.image_type', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11994, - serialized_end=12047, -) - - -_SOURCEMSG = _descriptor.Descriptor( - name='SourceMsg', - full_name='im.msg.msg_body.SourceMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='orig_seqs', full_name='im.msg.msg_body.SourceMsg.orig_seqs', index=0, - number=1, type=13, cpp_type=3, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sender_uin', full_name='im.msg.msg_body.SourceMsg.sender_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='time', full_name='im.msg.msg_body.SourceMsg.time', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='flag', full_name='im.msg.msg_body.SourceMsg.flag', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='elems', full_name='im.msg.msg_body.SourceMsg.elems', index=4, - number=5, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='type', full_name='im.msg.msg_body.SourceMsg.type', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rich_msg', full_name='im.msg.msg_body.SourceMsg.rich_msg', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='im.msg.msg_body.SourceMsg.pb_reserve', index=7, - number=8, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='src_msg', full_name='im.msg.msg_body.SourceMsg.src_msg', index=8, - number=9, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_uin', full_name='im.msg.msg_body.SourceMsg.to_uin', index=9, - number=10, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='troop_name', full_name='im.msg.msg_body.SourceMsg.troop_name', index=10, - number=11, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=12050, - serialized_end=12271, -) - - -_PLAINTEXT = _descriptor.Descriptor( - name='PlainText', - full_name='im.msg.msg_body.PlainText', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='str', full_name='im.msg.msg_body.PlainText.str', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='link', full_name='im.msg.msg_body.PlainText.link', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='attr_6_buf', full_name='im.msg.msg_body.PlainText.attr_6_buf', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='attr_7_buf', full_name='im.msg.msg_body.PlainText.attr_7_buf', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='buf', full_name='im.msg.msg_body.PlainText.buf', index=4, - number=11, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='im.msg.msg_body.PlainText.pb_reserve', index=5, - number=12, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=12273, - serialized_end=12384, -) - - -_TIPSINFO = _descriptor.Descriptor( - name='TipsInfo', - full_name='im.msg.msg_body.TipsInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='text', full_name='im.msg.msg_body.TipsInfo.text', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=12386, - serialized_end=12410, -) - - -_TMPPTT = _descriptor.Descriptor( - name='TmpPtt', - full_name='im.msg.msg_body.TmpPtt', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='file_type', full_name='im.msg.msg_body.TmpPtt.file_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_uuid', full_name='im.msg.msg_body.TmpPtt.file_uuid', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_md5', full_name='im.msg.msg_body.TmpPtt.file_md5', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_name', full_name='im.msg.msg_body.TmpPtt.file_name', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_size', full_name='im.msg.msg_body.TmpPtt.file_size', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ptt_times', full_name='im.msg.msg_body.TmpPtt.ptt_times', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='user_type', full_name='im.msg.msg_body.TmpPtt.user_type', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ptttrans_flag', full_name='im.msg.msg_body.TmpPtt.ptttrans_flag', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='busi_type', full_name='im.msg.msg_body.TmpPtt.busi_type', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_id', full_name='im.msg.msg_body.TmpPtt.msg_id', index=9, - number=10, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='im.msg.msg_body.TmpPtt.pb_reserve', index=10, - number=30, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ptt_encode_data', full_name='im.msg.msg_body.TmpPtt.ptt_encode_data', index=11, - number=31, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=12413, - serialized_end=12656, -) - - -_TRANS211TMPMSG = _descriptor.Descriptor( - name='Trans211TmpMsg', - full_name='im.msg.msg_body.Trans211TmpMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='msg_body', full_name='im.msg.msg_body.Trans211TmpMsg.msg_body', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='c2c_cmd', full_name='im.msg.msg_body.Trans211TmpMsg.c2c_cmd', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=12658, - serialized_end=12709, -) - - -_TRANSELEM = _descriptor.Descriptor( - name='TransElem', - full_name='im.msg.msg_body.TransElem', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='elem_type', full_name='im.msg.msg_body.TransElem.elem_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='elem_value', full_name='im.msg.msg_body.TransElem.elem_value', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=12711, - serialized_end=12761, -) - - -_VIDEOFILE = _descriptor.Descriptor( - name='VideoFile', - full_name='im.msg.msg_body.VideoFile', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='file_uuid', full_name='im.msg.msg_body.VideoFile.file_uuid', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_md5', full_name='im.msg.msg_body.VideoFile.file_md5', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_name', full_name='im.msg.msg_body.VideoFile.file_name', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_format', full_name='im.msg.msg_body.VideoFile.file_format', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_time', full_name='im.msg.msg_body.VideoFile.file_time', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_size', full_name='im.msg.msg_body.VideoFile.file_size', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='thumb_width', full_name='im.msg.msg_body.VideoFile.thumb_width', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='thumb_height', full_name='im.msg.msg_body.VideoFile.thumb_height', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='thumb_file_md5', full_name='im.msg.msg_body.VideoFile.thumb_file_md5', index=8, - number=9, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='source', full_name='im.msg.msg_body.VideoFile.source', index=9, - number=10, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='thumb_file_size', full_name='im.msg.msg_body.VideoFile.thumb_file_size', index=10, - number=11, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='busi_type', full_name='im.msg.msg_body.VideoFile.busi_type', index=11, - number=12, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='from_chat_type', full_name='im.msg.msg_body.VideoFile.from_chat_type', index=12, - number=13, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_chat_type', full_name='im.msg.msg_body.VideoFile.to_chat_type', index=13, - number=14, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='support_progressive', full_name='im.msg.msg_body.VideoFile.support_progressive', index=14, - number=15, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_width', full_name='im.msg.msg_body.VideoFile.file_width', index=15, - number=16, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_height', full_name='im.msg.msg_body.VideoFile.file_height', index=16, - number=17, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sub_busi_type', full_name='im.msg.msg_body.VideoFile.sub_busi_type', index=17, - number=18, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='video_attr', full_name='im.msg.msg_body.VideoFile.video_attr', index=18, - number=19, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='thumb_file_urls', full_name='im.msg.msg_body.VideoFile.thumb_file_urls', index=19, - number=20, type=12, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='video_file_urls', full_name='im.msg.msg_body.VideoFile.video_file_urls', index=20, - number=21, type=12, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='thumb_download_flag', full_name='im.msg.msg_body.VideoFile.thumb_download_flag', index=21, - number=22, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='video_download_flag', full_name='im.msg.msg_body.VideoFile.video_download_flag', index=22, - number=23, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='im.msg.msg_body.VideoFile.pb_reserve', index=23, - number=24, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=12764, - serialized_end=13304, -) - - -_WORKFLOWNOTIFYMSG = _descriptor.Descriptor( - name='WorkflowNotifyMsg', - full_name='im.msg.msg_body.WorkflowNotifyMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='ext_msg', full_name='im.msg.msg_body.WorkflowNotifyMsg.ext_msg', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='create_uin', full_name='im.msg.msg_body.WorkflowNotifyMsg.create_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=13306, - serialized_end=13362, -) - - -_LOCATIONINFO = _descriptor.Descriptor( - name='LocationInfo', - full_name='im.msg.msg_body.LocationInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='longitude', full_name='im.msg.msg_body.LocationInfo.longitude', index=0, - number=1, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='latitude', full_name='im.msg.msg_body.LocationInfo.latitude', index=1, - number=2, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='desc', full_name='im.msg.msg_body.LocationInfo.desc', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=13364, - serialized_end=13429, -) - -_ELEM.fields_by_name['text'].message_type = _PLAINTEXT -_ELEM.fields_by_name['face'].message_type = _FACE -_ELEM.fields_by_name['online_image'].message_type = _ONLINEIMAGE -_ELEM.fields_by_name['not_online_image'].message_type = _NOTONLINEIMAGE -_ELEM.fields_by_name['trans_elem_info'].message_type = _TRANSELEM -_ELEM.fields_by_name['market_face'].message_type = _MARKETFACE -_ELEM.fields_by_name['elem_flags'].message_type = _ELEMFLAGS -_ELEM.fields_by_name['custom_face'].message_type = _CUSTOMFACE -_ELEM.fields_by_name['elem_flags2'].message_type = _ELEMFLAGS2 -_ELEM.fields_by_name['fun_face'].message_type = _FUNFACE -_ELEM.fields_by_name['secret_file'].message_type = _SECRETFILEMSG -_ELEM.fields_by_name['rich_msg'].message_type = _RICHMSG -_ELEM.fields_by_name['group_file'].message_type = _GROUPFILE -_ELEM.fields_by_name['pub_group'].message_type = _PUBGROUP -_ELEM.fields_by_name['market_trans'].message_type = _MARKETTRANS -_ELEM.fields_by_name['extra_info'].message_type = _EXTRAINFO -_ELEM.fields_by_name['shake_window'].message_type = _SHAKEWINDOW -_ELEM.fields_by_name['pub_account'].message_type = _PUBACCOUNT -_ELEM.fields_by_name['video_file'].message_type = _VIDEOFILE -_ELEM.fields_by_name['tips_info'].message_type = _TIPSINFO -_ELEM.fields_by_name['anon_group_msg'].message_type = _ANONYMOUSGROUPMSG -_ELEM.fields_by_name['qq_live_old'].message_type = _QQLIVEOLD -_ELEM.fields_by_name['life_online'].message_type = _LIFEONLINEACCOUNT -_ELEM.fields_by_name['qqwallet_msg'].message_type = _QQWALLETMSG -_ELEM.fields_by_name['crm_elem'].message_type = _CRMELEM -_ELEM.fields_by_name['conference_tips_info'].message_type = _CONFERENCETIPSINFO -_ELEM.fields_by_name['redbag_info'].message_type = _REDBAGINFO -_ELEM.fields_by_name['low_version_tips'].message_type = _LOWVERSIONTIPS -_ELEM.fields_by_name['near_by_msg'].message_type = _NEARBYMESSAGETYPE -_ELEM.fields_by_name['custom_elem'].message_type = _CUSTOMELEM -_ELEM.fields_by_name['location_info'].message_type = _LOCATIONINFO -_ELEM.fields_by_name['pub_acc_info'].message_type = _PUBACCINFO -_ELEM.fields_by_name['small_emoji'].message_type = _SMALLEMOJI -_ELEM.fields_by_name['fsj_msg_elem'].message_type = _FSJMESSAGEELEM -_ELEM.fields_by_name['ark_app'].message_type = _ARKAPPELEM -_ELEM.fields_by_name['general_flags'].message_type = _GENERALFLAGS -_ELEM.fields_by_name['hc_flash_pic'].message_type = _CUSTOMFACE -_ELEM.fields_by_name['deliver_gift_msg'].message_type = _DELIVERGIFTMSG -_ELEM.fields_by_name['bitapp_msg'].message_type = _BITAPPMSG -_ELEM.fields_by_name['open_qq_data'].message_type = _OPENQQDATA -_ELEM.fields_by_name['apollo_msg'].message_type = _APOLLOACTMSG -_ELEM.fields_by_name['group_pub_acc_info'].message_type = _GROUPPUBACCOUNTINFO -_ELEM.fields_by_name['bless_msg'].message_type = _BLESSINGMESSAGE -_ELEM.fields_by_name['src_msg'].message_type = _SOURCEMSG -_ELEM.fields_by_name['lola_msg'].message_type = _LOLAMSG -_ELEM.fields_by_name['group_business_msg'].message_type = _GROUPBUSINESSMSG -_ELEM.fields_by_name['workflow_notify'].message_type = _WORKFLOWNOTIFYMSG -_ELEM.fields_by_name['pat_elem'].message_type = _PATSELEM -_ELEM.fields_by_name['group_post_elem'].message_type = _GROUPPOSTELEM -_ELEM.fields_by_name['light_app'].message_type = _LIGHTAPPELEM -_ELEM.fields_by_name['eim_info'].message_type = _EIMINFO -_ELEM.fields_by_name['common_elem'].message_type = _COMMONELEM -_ELEMFLAGS2.fields_by_name['insts'].message_type = _INST -_ELEMFLAGS2.fields_by_name['src_inst'].message_type = _INST -_ELEMFLAGS2.fields_by_name['pc_support_def'].message_type = _PCSUPPORTDEF -_FUNFACE.fields_by_name['turntable'].message_type = _TURNTABLE -_FUNFACE.fields_by_name['bomb'].message_type = _BOMB -_MSGBODY.fields_by_name['rich_text'].message_type = _RICHTEXT -_MSGBODY_SUBTYPE4.fields_by_name['not_online_file'].message_type = _NOTONLINEFILE -_QQWALLETAIOBODY.fields_by_name['sender'].message_type = _QQWALLETAIOELEM -_QQWALLETAIOBODY.fields_by_name['receiver'].message_type = _QQWALLETAIOELEM -_QQWALLETMSG.fields_by_name['aio_body'].message_type = _QQWALLETAIOBODY -_RICHTEXT.fields_by_name['attr'].message_type = _ATTR -_RICHTEXT.fields_by_name['elems'].message_type = _ELEM -_RICHTEXT.fields_by_name['not_online_file'].message_type = _NOTONLINEFILE -_RICHTEXT.fields_by_name['ptt'].message_type = _PTT -_RICHTEXT.fields_by_name['tmp_ptt'].message_type = _TMPPTT -_RICHTEXT.fields_by_name['trans_211_tmp_msg'].message_type = _TRANS211TMPMSG -_SECRETFILEMSG.fields_by_name['not_online_image'].message_type = _NOTONLINEIMAGE -_SECRETFILEMSG.fields_by_name['elem_flags2'].message_type = _ELEMFLAGS2 -_SOURCEMSG.fields_by_name['elems'].message_type = _ELEM -DESCRIPTOR.message_types_by_name['AnonymousGroupMsg'] = _ANONYMOUSGROUPMSG -DESCRIPTOR.message_types_by_name['ApolloActMsg'] = _APOLLOACTMSG -DESCRIPTOR.message_types_by_name['ArkAppElem'] = _ARKAPPELEM -DESCRIPTOR.message_types_by_name['Attr'] = _ATTR -DESCRIPTOR.message_types_by_name['BitAppMsg'] = _BITAPPMSG -DESCRIPTOR.message_types_by_name['BlessingMessage'] = _BLESSINGMESSAGE -DESCRIPTOR.message_types_by_name['CommonElem'] = _COMMONELEM -DESCRIPTOR.message_types_by_name['ConferenceTipsInfo'] = _CONFERENCETIPSINFO -DESCRIPTOR.message_types_by_name['CrmElem'] = _CRMELEM -DESCRIPTOR.message_types_by_name['CustomElem'] = _CUSTOMELEM -DESCRIPTOR.message_types_by_name['CustomFace'] = _CUSTOMFACE -DESCRIPTOR.message_types_by_name['DeliverGiftMsg'] = _DELIVERGIFTMSG -DESCRIPTOR.message_types_by_name['EIMInfo'] = _EIMINFO -DESCRIPTOR.message_types_by_name['Elem'] = _ELEM -DESCRIPTOR.message_types_by_name['ElemFlags'] = _ELEMFLAGS -DESCRIPTOR.message_types_by_name['ElemFlags2'] = _ELEMFLAGS2 -DESCRIPTOR.message_types_by_name['Inst'] = _INST -DESCRIPTOR.message_types_by_name['ExtraInfo'] = _EXTRAINFO -DESCRIPTOR.message_types_by_name['FSJMessageElem'] = _FSJMESSAGEELEM -DESCRIPTOR.message_types_by_name['Face'] = _FACE -DESCRIPTOR.message_types_by_name['FunFace'] = _FUNFACE -DESCRIPTOR.message_types_by_name['Bomb'] = _BOMB -DESCRIPTOR.message_types_by_name['Turntable'] = _TURNTABLE -DESCRIPTOR.message_types_by_name['GeneralFlags'] = _GENERALFLAGS -DESCRIPTOR.message_types_by_name['GroupBusinessMsg'] = _GROUPBUSINESSMSG -DESCRIPTOR.message_types_by_name['GroupFile'] = _GROUPFILE -DESCRIPTOR.message_types_by_name['GroupPostElem'] = _GROUPPOSTELEM -DESCRIPTOR.message_types_by_name['GroupPubAccountInfo'] = _GROUPPUBACCOUNTINFO -DESCRIPTOR.message_types_by_name['LifeOnlineAccount'] = _LIFEONLINEACCOUNT -DESCRIPTOR.message_types_by_name['LightAppElem'] = _LIGHTAPPELEM -DESCRIPTOR.message_types_by_name['LolaMsg'] = _LOLAMSG -DESCRIPTOR.message_types_by_name['LowVersionTips'] = _LOWVERSIONTIPS -DESCRIPTOR.message_types_by_name['MarketFace'] = _MARKETFACE -DESCRIPTOR.message_types_by_name['MarketTrans'] = _MARKETTRANS -DESCRIPTOR.message_types_by_name['MsgBody'] = _MSGBODY -DESCRIPTOR.message_types_by_name['MsgBody_subtype4'] = _MSGBODY_SUBTYPE4 -DESCRIPTOR.message_types_by_name['NearByMessageType'] = _NEARBYMESSAGETYPE -DESCRIPTOR.message_types_by_name['NotOnlineFile'] = _NOTONLINEFILE -DESCRIPTOR.message_types_by_name['NotOnlineImage'] = _NOTONLINEIMAGE -DESCRIPTOR.message_types_by_name['OnlineImage'] = _ONLINEIMAGE -DESCRIPTOR.message_types_by_name['OpenQQData'] = _OPENQQDATA -DESCRIPTOR.message_types_by_name['PatsElem'] = _PATSELEM -DESCRIPTOR.message_types_by_name['PcSupportDef'] = _PCSUPPORTDEF -DESCRIPTOR.message_types_by_name['Ptt'] = _PTT -DESCRIPTOR.message_types_by_name['PubAccInfo'] = _PUBACCINFO -DESCRIPTOR.message_types_by_name['PubAccount'] = _PUBACCOUNT -DESCRIPTOR.message_types_by_name['PubGroup'] = _PUBGROUP -DESCRIPTOR.message_types_by_name['QQLiveOld'] = _QQLIVEOLD -DESCRIPTOR.message_types_by_name['QQWalletAioBody'] = _QQWALLETAIOBODY -DESCRIPTOR.message_types_by_name['QQWalletAioElem'] = _QQWALLETAIOELEM -DESCRIPTOR.message_types_by_name['QQWalletMsg'] = _QQWALLETMSG -DESCRIPTOR.message_types_by_name['RedBagInfo'] = _REDBAGINFO -DESCRIPTOR.message_types_by_name['RichMsg'] = _RICHMSG -DESCRIPTOR.message_types_by_name['RichText'] = _RICHTEXT -DESCRIPTOR.message_types_by_name['SecretFileMsg'] = _SECRETFILEMSG -DESCRIPTOR.message_types_by_name['ShakeWindow'] = _SHAKEWINDOW -DESCRIPTOR.message_types_by_name['SmallEmoji'] = _SMALLEMOJI -DESCRIPTOR.message_types_by_name['SourceMsg'] = _SOURCEMSG -DESCRIPTOR.message_types_by_name['PlainText'] = _PLAINTEXT -DESCRIPTOR.message_types_by_name['TipsInfo'] = _TIPSINFO -DESCRIPTOR.message_types_by_name['TmpPtt'] = _TMPPTT -DESCRIPTOR.message_types_by_name['Trans211TmpMsg'] = _TRANS211TMPMSG -DESCRIPTOR.message_types_by_name['TransElem'] = _TRANSELEM -DESCRIPTOR.message_types_by_name['VideoFile'] = _VIDEOFILE -DESCRIPTOR.message_types_by_name['WorkflowNotifyMsg'] = _WORKFLOWNOTIFYMSG -DESCRIPTOR.message_types_by_name['LocationInfo'] = _LOCATIONINFO -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%cai/pb/im/msg/msg_body/msg_body.proto\x12\x0fim.msg.msg_body\"\x99\x01\n\x11\x41nonymousGroupMsg\x12\r\n\x05\x66lags\x18\x01 \x01(\r\x12\x0f\n\x07\x61non_id\x18\x02 \x01(\x0c\x12\x11\n\tanon_nick\x18\x03 \x01(\x0c\x12\x15\n\rhead_portrait\x18\x04 \x01(\r\x12\x13\n\x0b\x65xpire_time\x18\x05 \x01(\r\x12\x11\n\tbubble_id\x18\x06 \x01(\r\x12\x12\n\nrank_color\x18\x07 \x01(\x0c\"\x90\x02\n\x0c\x41polloActMsg\x12\x11\n\taction_id\x18\x01 \x01(\r\x12\x13\n\x0b\x61\x63tion_name\x18\x02 \x01(\x0c\x12\x13\n\x0b\x61\x63tion_text\x18\x03 \x01(\x0c\x12\x0c\n\x04\x66lag\x18\x04 \x01(\r\x12\x10\n\x08peer_uin\x18\x05 \x01(\r\x12\x11\n\tsender_ts\x18\x06 \x01(\r\x12\x0f\n\x07peer_ts\x18\x07 \x01(\r\x12\x15\n\rsender_status\x18\x08 \x01(\x05\x12\x13\n\x0bpeer_status\x18\t \x01(\x05\x12\x12\n\ndiytext_id\x18\n \x01(\r\x12\x17\n\x0f\x64iytext_content\x18\x0b \x01(\x0c\x12\x12\n\ninput_text\x18\x0c \x01(\x0c\x12\x12\n\npb_reserve\x18\r \x01(\x0c\"W\n\nArkAppElem\x12\x10\n\x08\x61pp_name\x18\x01 \x01(\t\x12\x13\n\x0bmin_version\x18\x02 \x01(\t\x12\x14\n\x0cxml_template\x18\x03 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\"\xb9\x01\n\x04\x41ttr\x12\x11\n\tcode_page\x18\x01 \x01(\x11\x12\x0c\n\x04time\x18\x02 \x01(\r\x12\x0e\n\x06random\x18\x03 \x01(\r\x12\r\n\x05\x63olor\x18\x04 \x01(\r\x12\x0c\n\x04size\x18\x05 \x01(\r\x12\x0e\n\x06\x65\x66\x66\x65\x63t\x18\x06 \x01(\r\x12\x10\n\x08\x63har_set\x18\x07 \x01(\r\x12\x18\n\x10pitch_and_family\x18\x08 \x01(\r\x12\x11\n\tfont_name\x18\t \x01(\t\x12\x14\n\x0creserve_data\x18\n \x01(\x0c\"\x18\n\tBitAppMsg\x12\x0b\n\x03\x62uf\x18\x01 \x01(\x0c\"4\n\x0f\x42lessingMessage\x12\x10\n\x08msg_type\x18\x01 \x01(\r\x12\x0f\n\x07\x65x_flag\x18\x02 \x01(\r\"J\n\nCommonElem\x12\x14\n\x0cservice_type\x18\x01 \x01(\r\x12\x0f\n\x07pb_elem\x18\x02 \x01(\x0c\x12\x15\n\rbusiness_type\x18\x03 \x01(\r\"M\n\x12\x43onferenceTipsInfo\x12\x14\n\x0csession_type\x18\x01 \x01(\r\x12\x13\n\x0bsession_uin\x18\x02 \x01(\x04\x12\x0c\n\x04text\x18\x03 \x01(\t\"i\n\x07\x43rmElem\x12\x0f\n\x07\x63rm_buf\x18\x01 \x01(\x0c\x12\x11\n\tmsg_resid\x18\x02 \x01(\x0c\x12\x13\n\x0bqidian_flag\x18\x03 \x01(\r\x12\x11\n\tpush_flag\x18\x04 \x01(\r\x12\x12\n\ncount_flag\x18\x05 \x01(\r\"W\n\nCustomElem\x12\x0c\n\x04\x64\x65sc\x18\x01 \x01(\x0c\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12\x11\n\tenum_type\x18\x03 \x01(\r\x12\x0b\n\x03\x65xt\x18\x04 \x01(\x0c\x12\r\n\x05sound\x18\x05 \x01(\x0c\"\xf1\x04\n\nCustomFace\x12\x0c\n\x04guid\x18\x01 \x01(\x0c\x12\x11\n\tfile_path\x18\x02 \x01(\t\x12\x10\n\x08shortcut\x18\x03 \x01(\t\x12\x0e\n\x06\x62uffer\x18\x04 \x01(\x0c\x12\x0c\n\x04\x66lag\x18\x05 \x01(\x0c\x12\x10\n\x08old_data\x18\x06 \x01(\x0c\x12\x0f\n\x07\x66ile_id\x18\x07 \x01(\r\x12\x11\n\tserver_ip\x18\x08 \x01(\r\x12\x13\n\x0bserver_port\x18\t \x01(\r\x12\x11\n\tfile_type\x18\n \x01(\r\x12\x11\n\tsignature\x18\x0b \x01(\x0c\x12\x0e\n\x06useful\x18\x0c \x01(\r\x12\x0b\n\x03md5\x18\r \x01(\x0c\x12\x11\n\tthumb_url\x18\x0e \x01(\t\x12\x0f\n\x07\x62ig_url\x18\x0f \x01(\t\x12\x10\n\x08orig_url\x18\x10 \x01(\t\x12\x10\n\x08\x62iz_type\x18\x11 \x01(\r\x12\x14\n\x0crepeat_index\x18\x12 \x01(\r\x12\x14\n\x0crepeat_image\x18\x13 \x01(\r\x12\x12\n\nimage_type\x18\x14 \x01(\r\x12\r\n\x05index\x18\x15 \x01(\r\x12\r\n\x05width\x18\x16 \x01(\r\x12\x0e\n\x06height\x18\x17 \x01(\r\x12\x0e\n\x06source\x18\x18 \x01(\r\x12\x0c\n\x04size\x18\x19 \x01(\r\x12\x0e\n\x06origin\x18\x1a \x01(\r\x12\x13\n\x0bthumb_width\x18\x1b \x01(\r\x12\x14\n\x0cthumb_height\x18\x1c \x01(\r\x12\x10\n\x08show_len\x18\x1d \x01(\r\x12\x14\n\x0c\x64ownload_len\x18\x1e \x01(\r\x12\x10\n\x08_400_url\x18\x1f \x01(\t\x12\x12\n\n_400_width\x18 \x01(\r\x12\x13\n\x0b_400_height\x18! \x01(\r\x12\x12\n\npb_reserve\x18\" \x01(\x0c\"\xb6\x04\n\x0e\x44\x65liverGiftMsg\x12\x18\n\x10gray_tip_content\x18\x01 \x01(\x0c\x12\x1c\n\x14\x61nimation_package_id\x18\x02 \x01(\r\x12\x1f\n\x17\x61nimation_package_url_a\x18\x03 \x01(\x0c\x12\x1f\n\x17\x61nimation_package_url_i\x18\x04 \x01(\x0c\x12\x14\n\x0cremind_brief\x18\x05 \x01(\x0c\x12\x0f\n\x07gift_id\x18\x06 \x01(\r\x12\x12\n\ngift_count\x18\x07 \x01(\r\x12\x17\n\x0f\x61nimation_brief\x18\x08 \x01(\x0c\x12\x12\n\nsender_uin\x18\t \x01(\x04\x12\x14\n\x0creceiver_uin\x18\n \x01(\x04\x12\x17\n\x0fstmessage_title\x18\x0b \x01(\x0c\x12\x1a\n\x12stmessage_subtitle\x18\x0c \x01(\x0c\x12\x19\n\x11stmessage_message\x18\r \x01(\x0c\x12\x1b\n\x13stmessage_giftpicid\x18\x0e \x01(\r\x12\x1a\n\x12stmessage_comefrom\x18\x0f \x01(\x0c\x12\x18\n\x10stmessage_exflag\x18\x10 \x01(\r\x12\x16\n\x0eto_all_gift_id\x18\x11 \x01(\x0c\x12\x15\n\rcomefrom_link\x18\x12 \x01(\x0c\x12\x12\n\npb_reserve\x18\x13 \x01(\x0c\x12\x15\n\rreceiver_name\x18\x14 \x01(\x0c\x12\x14\n\x0creceiver_pic\x18\x15 \x01(\x0c\x12\x19\n\x11stmessage_gifturl\x18\x16 \x01(\x0c\"(\n\x07\x45IMInfo\x12\x0f\n\x07root_id\x18\x01 \x01(\x04\x12\x0c\n\x04\x66lag\x18\x02 \x01(\r\"\x8b\x15\n\x04\x45lem\x12(\n\x04text\x18\x01 \x01(\x0b\x32\x1a.im.msg.msg_body.PlainText\x12#\n\x04\x66\x61\x63\x65\x18\x02 \x01(\x0b\x32\x15.im.msg.msg_body.Face\x12\x32\n\x0conline_image\x18\x03 \x01(\x0b\x32\x1c.im.msg.msg_body.OnlineImage\x12\x39\n\x10not_online_image\x18\x04 \x01(\x0b\x32\x1f.im.msg.msg_body.NotOnlineImage\x12\x33\n\x0ftrans_elem_info\x18\x05 \x01(\x0b\x32\x1a.im.msg.msg_body.TransElem\x12\x30\n\x0bmarket_face\x18\x06 \x01(\x0b\x32\x1b.im.msg.msg_body.MarketFace\x12.\n\nelem_flags\x18\x07 \x01(\x0b\x32\x1a.im.msg.msg_body.ElemFlags\x12\x30\n\x0b\x63ustom_face\x18\x08 \x01(\x0b\x32\x1b.im.msg.msg_body.CustomFace\x12\x30\n\x0b\x65lem_flags2\x18\t \x01(\x0b\x32\x1b.im.msg.msg_body.ElemFlags2\x12*\n\x08\x66un_face\x18\n \x01(\x0b\x32\x18.im.msg.msg_body.FunFace\x12\x33\n\x0bsecret_file\x18\x0b \x01(\x0b\x32\x1e.im.msg.msg_body.SecretFileMsg\x12*\n\x08rich_msg\x18\x0c \x01(\x0b\x32\x18.im.msg.msg_body.RichMsg\x12.\n\ngroup_file\x18\r \x01(\x0b\x32\x1a.im.msg.msg_body.GroupFile\x12,\n\tpub_group\x18\x0e \x01(\x0b\x32\x19.im.msg.msg_body.PubGroup\x12\x32\n\x0cmarket_trans\x18\x0f \x01(\x0b\x32\x1c.im.msg.msg_body.MarketTrans\x12.\n\nextra_info\x18\x10 \x01(\x0b\x32\x1a.im.msg.msg_body.ExtraInfo\x12\x32\n\x0cshake_window\x18\x11 \x01(\x0b\x32\x1c.im.msg.msg_body.ShakeWindow\x12\x30\n\x0bpub_account\x18\x12 \x01(\x0b\x32\x1b.im.msg.msg_body.PubAccount\x12.\n\nvideo_file\x18\x13 \x01(\x0b\x32\x1a.im.msg.msg_body.VideoFile\x12,\n\ttips_info\x18\x14 \x01(\x0b\x32\x19.im.msg.msg_body.TipsInfo\x12:\n\x0e\x61non_group_msg\x18\x15 \x01(\x0b\x32\".im.msg.msg_body.AnonymousGroupMsg\x12/\n\x0bqq_live_old\x18\x16 \x01(\x0b\x32\x1a.im.msg.msg_body.QQLiveOld\x12\x37\n\x0blife_online\x18\x17 \x01(\x0b\x32\".im.msg.msg_body.LifeOnlineAccount\x12\x32\n\x0cqqwallet_msg\x18\x18 \x01(\x0b\x32\x1c.im.msg.msg_body.QQWalletMsg\x12*\n\x08\x63rm_elem\x18\x19 \x01(\x0b\x32\x18.im.msg.msg_body.CrmElem\x12\x41\n\x14\x63onference_tips_info\x18\x1a \x01(\x0b\x32#.im.msg.msg_body.ConferenceTipsInfo\x12\x30\n\x0bredbag_info\x18\x1b \x01(\x0b\x32\x1b.im.msg.msg_body.RedBagInfo\x12\x39\n\x10low_version_tips\x18\x1c \x01(\x0b\x32\x1f.im.msg.msg_body.LowVersionTips\x12\x1a\n\x12\x62\x61nkcode_ctrl_info\x18\x1d \x01(\x0c\x12\x37\n\x0bnear_by_msg\x18\x1e \x01(\x0b\x32\".im.msg.msg_body.NearByMessageType\x12\x30\n\x0b\x63ustom_elem\x18\x1f \x01(\x0b\x32\x1b.im.msg.msg_body.CustomElem\x12\x34\n\rlocation_info\x18 \x01(\x0b\x32\x1d.im.msg.msg_body.LocationInfo\x12\x31\n\x0cpub_acc_info\x18! \x01(\x0b\x32\x1b.im.msg.msg_body.PubAccInfo\x12\x30\n\x0bsmall_emoji\x18\" \x01(\x0b\x32\x1b.im.msg.msg_body.SmallEmoji\x12\x35\n\x0c\x66sj_msg_elem\x18# \x01(\x0b\x32\x1f.im.msg.msg_body.FSJMessageElem\x12,\n\x07\x61rk_app\x18$ \x01(\x0b\x32\x1b.im.msg.msg_body.ArkAppElem\x12\x34\n\rgeneral_flags\x18% \x01(\x0b\x32\x1d.im.msg.msg_body.GeneralFlags\x12\x31\n\x0chc_flash_pic\x18& \x01(\x0b\x32\x1b.im.msg.msg_body.CustomFace\x12\x39\n\x10\x64\x65liver_gift_msg\x18\' \x01(\x0b\x32\x1f.im.msg.msg_body.DeliverGiftMsg\x12.\n\nbitapp_msg\x18( \x01(\x0b\x32\x1a.im.msg.msg_body.BitAppMsg\x12\x31\n\x0copen_qq_data\x18) \x01(\x0b\x32\x1b.im.msg.msg_body.OpenQQData\x12\x31\n\napollo_msg\x18* \x01(\x0b\x32\x1d.im.msg.msg_body.ApolloActMsg\x12@\n\x12group_pub_acc_info\x18+ \x01(\x0b\x32$.im.msg.msg_body.GroupPubAccountInfo\x12\x33\n\tbless_msg\x18, \x01(\x0b\x32 .im.msg.msg_body.BlessingMessage\x12+\n\x07src_msg\x18- \x01(\x0b\x32\x1a.im.msg.msg_body.SourceMsg\x12*\n\x08lola_msg\x18. \x01(\x0b\x32\x18.im.msg.msg_body.LolaMsg\x12=\n\x12group_business_msg\x18/ \x01(\x0b\x32!.im.msg.msg_body.GroupBusinessMsg\x12;\n\x0fworkflow_notify\x18\x30 \x01(\x0b\x32\".im.msg.msg_body.WorkflowNotifyMsg\x12+\n\x08pat_elem\x18\x31 \x01(\x0b\x32\x19.im.msg.msg_body.PatsElem\x12\x37\n\x0fgroup_post_elem\x18\x32 \x01(\x0b\x32\x1e.im.msg.msg_body.GroupPostElem\x12\x30\n\tlight_app\x18\x33 \x01(\x0b\x32\x1d.im.msg.msg_body.LightAppElem\x12*\n\x08\x65im_info\x18\x34 \x01(\x0b\x32\x18.im.msg.msg_body.EIMInfo\x12\x30\n\x0b\x63ommon_elem\x18\x35 \x01(\x0b\x32\x1b.im.msg.msg_body.CommonElem\"2\n\tElemFlags\x12\x0e\n\x06\x66lags1\x18\x01 \x01(\x0c\x12\x15\n\rbusiness_data\x18\x02 \x01(\x0c\"\xfb\x02\n\nElemFlags2\x12\x15\n\rcolor_text_id\x18\x01 \x01(\r\x12\x0e\n\x06msg_id\x18\x02 \x01(\x04\x12\x1a\n\x12whisper_session_id\x18\x03 \x01(\r\x12\x16\n\x0eptt_change_bit\x18\x04 \x01(\r\x12\x12\n\nvip_status\x18\x05 \x01(\r\x12\x15\n\rcompatible_id\x18\x06 \x01(\r\x12$\n\x05insts\x18\x07 \x03(\x0b\x32\x15.im.msg.msg_body.Inst\x12\x13\n\x0bmsg_rpt_cnt\x18\x08 \x01(\r\x12\'\n\x08src_inst\x18\t \x01(\x0b\x32\x15.im.msg.msg_body.Inst\x12\x12\n\nlongtitude\x18\n \x01(\r\x12\x10\n\x08latitude\x18\x0b \x01(\r\x12\x13\n\x0b\x63ustom_font\x18\x0c \x01(\r\x12\x35\n\x0epc_support_def\x18\r \x01(\x0b\x32\x1d.im.msg.msg_body.PcSupportDef\x12\x11\n\tcrm_flags\x18\x0e \x01(\r\"\'\n\x04Inst\x12\x0e\n\x06\x61pp_id\x18\x01 \x01(\r\x12\x0f\n\x07inst_id\x18\x02 \x01(\r\"\xf3\x01\n\tExtraInfo\x12\x0c\n\x04nick\x18\x01 \x01(\x0c\x12\x12\n\ngroup_card\x18\x02 \x01(\x0c\x12\r\n\x05level\x18\x03 \x01(\r\x12\r\n\x05\x66lags\x18\x04 \x01(\r\x12\x12\n\ngroup_mask\x18\x05 \x01(\r\x12\x13\n\x0bmsg_tail_id\x18\x06 \x01(\r\x12\x14\n\x0csender_title\x18\x07 \x01(\x0c\x12\x11\n\tapns_tips\x18\x08 \x01(\x0c\x12\x0b\n\x03uin\x18\t \x01(\x04\x12\x16\n\x0emsg_state_flag\x18\n \x01(\r\x12\x17\n\x0f\x61pns_sound_type\x18\x0b \x01(\r\x12\x16\n\x0enew_group_flag\x18\x0c \x01(\r\"\"\n\x0e\x46SJMessageElem\x12\x10\n\x08msg_type\x18\x01 \x01(\r\"/\n\x04\x46\x61\x63\x65\x12\r\n\x05index\x18\x01 \x01(\r\x12\x0b\n\x03old\x18\x02 \x01(\x0c\x12\x0b\n\x03\x62uf\x18\x0b \x01(\x0c\"]\n\x07\x46unFace\x12-\n\tturntable\x18\x01 \x01(\x0b\x32\x1a.im.msg.msg_body.Turntable\x12#\n\x04\x62omb\x18\x02 \x01(\x0b\x32\x15.im.msg.msg_body.Bomb\"\x15\n\x04\x42omb\x12\r\n\x05\x62urst\x18\x01 \x01(\x08\"D\n\tTurntable\x12\x10\n\x08uin_list\x18\x01 \x03(\x04\x12\x0f\n\x07hit_uin\x18\x02 \x01(\x04\x12\x14\n\x0chit_uin_nick\x18\x03 \x01(\t\"\xb2\x03\n\x0cGeneralFlags\x12\x1a\n\x12\x62ubble_diy_text_id\x18\x01 \x01(\r\x12\x16\n\x0egroup_flag_new\x18\x02 \x01(\r\x12\x0b\n\x03uin\x18\x03 \x01(\x04\x12\r\n\x05rp_id\x18\x04 \x01(\x0c\x12\x10\n\x08prp_fold\x18\x05 \x01(\r\x12\x16\n\x0elong_text_flag\x18\x06 \x01(\r\x12\x17\n\x0flong_text_resid\x18\x07 \x01(\x0c\x12\x12\n\ngroup_type\x18\x08 \x01(\r\x12\x13\n\x0bto_uin_flag\x18\t \x01(\r\x12\x15\n\rglamour_level\x18\n \x01(\r\x12\x14\n\x0cmember_level\x18\x0b \x01(\r\x12\x16\n\x0egroup_rank_seq\x18\x0c \x01(\x04\x12\x15\n\rolympic_torch\x18\r \x01(\r\x12\x1e\n\x16\x62\x61\x62yq_guide_msg_cookie\x18\x0e \x01(\x0c\x12\x19\n\x11uin32_expert_flag\x18\x0f \x01(\r\x12\x15\n\rbubble_sub_id\x18\x10 \x01(\r\x12\x12\n\npendant_id\x18\x11 \x01(\x04\x12\x10\n\x08rp_index\x18\x12 \x01(\x0c\x12\x12\n\npb_reserve\x18\x13 \x01(\x0c\"\xa3\x01\n\x10GroupBusinessMsg\x12\r\n\x05\x66lags\x18\x01 \x01(\r\x12\x10\n\x08head_url\x18\x02 \x01(\x0c\x12\x14\n\x0chead_clk_url\x18\x03 \x01(\x0c\x12\x0c\n\x04nick\x18\x04 \x01(\x0c\x12\x12\n\nnick_color\x18\x05 \x01(\x0c\x12\x0c\n\x04rank\x18\x06 \x01(\x0c\x12\x12\n\nrank_color\x18\x07 \x01(\x0c\x12\x14\n\x0crank_bgcolor\x18\x08 \x01(\x0c\"\xc7\x01\n\tGroupFile\x12\x10\n\x08\x66ilename\x18\x01 \x01(\x0c\x12\x11\n\tfile_size\x18\x02 \x01(\x04\x12\x0f\n\x07\x66ile_id\x18\x03 \x01(\x0c\x12\x10\n\x08\x62\x61tch_id\x18\x04 \x01(\x0c\x12\x10\n\x08\x66ile_key\x18\x05 \x01(\x0c\x12\x0c\n\x04mark\x18\x06 \x01(\x0c\x12\x10\n\x08sequence\x18\x07 \x01(\x04\x12\x15\n\rbatch_item_id\x18\x08 \x01(\x0c\x12\x15\n\rfeed_msg_time\x18\t \x01(\r\x12\x12\n\npb_reserve\x18\n \x01(\x0c\"6\n\rGroupPostElem\x12\x12\n\ntrans_type\x18\x01 \x01(\r\x12\x11\n\ttrans_msg\x18\x02 \x01(\x0c\"*\n\x13GroupPubAccountInfo\x12\x13\n\x0bpub_account\x18\x01 \x01(\x04\"\xaf\x01\n\x11LifeOnlineAccount\x12\x11\n\tunique_id\x18\x01 \x01(\x04\x12\n\n\x02op\x18\x02 \x01(\r\x12\x11\n\tshow_time\x18\x03 \x01(\r\x12\x0e\n\x06report\x18\x04 \x01(\r\x12\x0b\n\x03\x61\x63k\x18\x05 \x01(\r\x12\x0e\n\x06\x62itmap\x18\x06 \x01(\x04\x12\x14\n\x0cgdt_imp_data\x18\x07 \x01(\x0c\x12\x14\n\x0cgdt_cli_data\x18\x08 \x01(\x0c\x12\x0f\n\x07view_id\x18\t \x01(\x0c\"/\n\x0cLightAppElem\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\x11\n\tmsg_resid\x18\x02 \x01(\x0c\"`\n\x07LolaMsg\x12\x11\n\tmsg_resid\x18\x01 \x01(\x0c\x12\x16\n\x0e\x65ncode_content\x18\x02 \x01(\x0c\x12\x14\n\x0clong_msg_url\x18\x03 \x01(\x0c\x12\x14\n\x0c\x64ownload_key\x18\x04 \x01(\x0c\"r\n\x0eLowVersionTips\x12\x13\n\x0b\x62usiness_id\x18\x01 \x01(\r\x12\x14\n\x0csession_type\x18\x02 \x01(\r\x12\x13\n\x0bsession_uin\x18\x03 \x01(\x04\x12\x12\n\nsender_uin\x18\x04 \x01(\x04\x12\x0c\n\x04text\x18\x05 \x01(\t\"\xfc\x01\n\nMarketFace\x12\x11\n\tface_name\x18\x01 \x01(\x0c\x12\x11\n\titem_type\x18\x02 \x01(\r\x12\x11\n\tface_info\x18\x03 \x01(\r\x12\x0f\n\x07\x66\x61\x63\x65_id\x18\x04 \x01(\x0c\x12\x0e\n\x06tab_id\x18\x05 \x01(\r\x12\x10\n\x08sub_type\x18\x06 \x01(\r\x12\x0b\n\x03key\x18\x07 \x01(\x0c\x12\r\n\x05param\x18\x08 \x01(\x0c\x12\x12\n\nmedia_type\x18\t \x01(\r\x12\x13\n\x0bimage_width\x18\n \x01(\r\x12\x14\n\x0cimage_height\x18\x0b \x01(\r\x12\x13\n\x0bmobileparam\x18\x0c \x01(\x0c\x12\x12\n\npb_reserve\x18\r \x01(\x0c\"a\n\x0bMarketTrans\x12\x0c\n\x04\x66lag\x18\x01 \x01(\x05\x12\x0b\n\x03xml\x18\x02 \x01(\x0c\x12\x11\n\tmsg_resid\x18\x03 \x01(\x0c\x12\x0f\n\x07\x61\x62ility\x18\x04 \x01(\r\x12\x13\n\x0bmin_ability\x18\x05 \x01(\r\"a\n\x07MsgBody\x12,\n\trich_text\x18\x01 \x01(\x0b\x32\x19.im.msg.msg_body.RichText\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\x12\x17\n\x0f\x65ncrypt_content\x18\x03 \x01(\x0c\"]\n\x10MsgBody_subtype4\x12\x37\n\x0fnot_online_file\x18\x01 \x01(\x0b\x32\x1e.im.msg.msg_body.NotOnlineFile\x12\x10\n\x08msg_time\x18\x02 \x01(\r\"8\n\x11NearByMessageType\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x15\n\ridentify_type\x18\x02 \x01(\r\"\x94\x03\n\rNotOnlineFile\x12\x11\n\tfile_type\x18\x01 \x01(\r\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\x12\x11\n\tfile_uuid\x18\x03 \x01(\x0c\x12\x10\n\x08\x66ile_md5\x18\x04 \x01(\x0c\x12\x11\n\tfile_name\x18\x05 \x01(\x0c\x12\x11\n\tfile_size\x18\x06 \x01(\x04\x12\x0c\n\x04note\x18\x07 \x01(\x0c\x12\x10\n\x08reserved\x18\x08 \x01(\r\x12\x0e\n\x06subcmd\x18\t \x01(\r\x12\x13\n\x0bmicro_cloud\x18\n \x01(\r\x12\x11\n\tfile_urls\x18\x0b \x03(\x0c\x12\x15\n\rdownload_flag\x18\x0c \x01(\r\x12\x13\n\x0b\x64\x61nger_evel\x18\x32 \x01(\r\x12\x11\n\tlife_time\x18\x33 \x01(\r\x12\x13\n\x0bupload_time\x18\x34 \x01(\r\x12\x15\n\rabs_file_type\x18\x35 \x01(\r\x12\x13\n\x0b\x63lient_type\x18\x36 \x01(\r\x12\x13\n\x0b\x65xpire_time\x18\x37 \x01(\r\x12\x12\n\npb_reserve\x18\x38 \x01(\x0c\x12\x17\n\x0f\x66ileidcrc_media\x18\x39 \x01(\t\"\xbd\x04\n\x0eNotOnlineImage\x12\x11\n\tfile_path\x18\x01 \x01(\x0c\x12\x10\n\x08\x66ile_len\x18\x02 \x01(\r\x12\x15\n\rdownload_path\x18\x03 \x01(\x0c\x12\x19\n\x11old_ver_send_file\x18\x04 \x01(\x0c\x12\x10\n\x08img_type\x18\x05 \x01(\r\x12\x16\n\x0epreviews_image\x18\x06 \x01(\x0c\x12\x0f\n\x07pic_md5\x18\x07 \x01(\x0c\x12\x12\n\npic_height\x18\x08 \x01(\r\x12\x11\n\tpic_width\x18\t \x01(\r\x12\x0e\n\x06res_id\x18\n \x01(\x0c\x12\x0c\n\x04\x66lag\x18\x0b \x01(\x0c\x12\x11\n\tthumb_url\x18\x0c \x01(\t\x12\x10\n\x08original\x18\r \x01(\r\x12\x0f\n\x07\x62ig_url\x18\x0e \x01(\t\x12\x10\n\x08orig_url\x18\x0f \x01(\t\x12\x10\n\x08\x62iz_type\x18\x10 \x01(\r\x12\x0e\n\x06result\x18\x11 \x01(\r\x12\r\n\x05index\x18\x12 \x01(\r\x12\x13\n\x0bop_face_buf\x18\x13 \x01(\x0c\x12\x13\n\x0bold_pic_md5\x18\x14 \x01(\x08\x12\x13\n\x0bthumb_width\x18\x15 \x01(\r\x12\x14\n\x0cthumb_height\x18\x16 \x01(\r\x12\x0f\n\x07\x66ile_id\x18\x17 \x01(\r\x12\x10\n\x08show_len\x18\x18 \x01(\r\x12\x14\n\x0c\x64ownload_len\x18\x19 \x01(\r\x12\x10\n\x08_400_url\x18\x1a \x01(\t\x12\x12\n\n_400_width\x18\x1b \x01(\r\x12\x13\n\x0b_400_height\x18\x1c \x01(\r\x12\x12\n\npb_reserve\x18\x1d \x01(\x0c\"I\n\x0bOnlineImage\x12\x0c\n\x04guid\x18\x01 \x01(\x0c\x12\x11\n\tfile_path\x18\x02 \x01(\x0c\x12\x19\n\x11old_ver_send_file\x18\x03 \x01(\x0c\"!\n\nOpenQQData\x12\x13\n\x0b\x63\x61r_qq_data\x18\x01 \x01(\x0c\"/\n\x08PatsElem\x12\x10\n\x08pat_type\x18\x01 \x01(\r\x12\x11\n\tpat_count\x18\x02 \x01(\r\"\x94\x01\n\x0cPcSupportDef\x12\x14\n\x0cpc_ptl_begin\x18\x01 \x01(\r\x12\x12\n\npc_ptl_end\x18\x02 \x01(\r\x12\x15\n\rmac_ptl_begin\x18\x03 \x01(\r\x12\x13\n\x0bmac_ptl_end\x18\x04 \x01(\r\x12\x14\n\x0cptls_support\x18\x05 \x03(\r\x12\x18\n\x10ptls_not_support\x18\x06 \x03(\r\"\xca\x03\n\x03Ptt\x12\x11\n\tfile_type\x18\x01 \x01(\r\x12\x0f\n\x07src_uin\x18\x02 \x01(\x04\x12\x11\n\tfile_uuid\x18\x03 \x01(\x0c\x12\x10\n\x08\x66ile_md5\x18\x04 \x01(\x0c\x12\x11\n\tfile_name\x18\x05 \x01(\x0c\x12\x11\n\tfile_size\x18\x06 \x01(\r\x12\x0f\n\x07reserve\x18\x07 \x01(\x0c\x12\x0f\n\x07\x66ile_id\x18\x08 \x01(\r\x12\x11\n\tserver_ip\x18\t \x01(\r\x12\x13\n\x0bserver_port\x18\n \x01(\r\x12\r\n\x05valid\x18\x0b \x01(\x08\x12\x11\n\tsignature\x18\x0c \x01(\x0c\x12\x10\n\x08shortcut\x18\r \x01(\x0c\x12\x10\n\x08\x66ile_key\x18\x0e \x01(\x0c\x12\x17\n\x0fmagic_ptt_index\x18\x0f \x01(\r\x12\x14\n\x0cvoice_switch\x18\x10 \x01(\r\x12\x0f\n\x07ptt_url\x18\x11 \x01(\x0c\x12\x16\n\x0egroup_file_key\x18\x12 \x01(\x0c\x12\x0c\n\x04time\x18\x13 \x01(\r\x12\x11\n\tdown_para\x18\x14 \x01(\x0c\x12\x0e\n\x06\x66ormat\x18\x1d \x01(\r\x12\x12\n\npb_reserve\x18\x1e \x01(\x0c\x12\x10\n\x08ptt_urls\x18\x1f \x03(\x0c\x12\x15\n\rdownload_flag\x18 \x01(\r\"g\n\nPubAccInfo\x12\x14\n\x0cis_inter_num\x18\x01 \x01(\r\x12\x17\n\x0fmsg_template_id\x18\x02 \x01(\t\x12\x14\n\x0clong_msg_url\x18\x03 \x01(\t\x12\x14\n\x0c\x64ownload_key\x18\x04 \x01(\x0c\"2\n\nPubAccount\x12\x0b\n\x03\x62uf\x18\x01 \x01(\x0c\x12\x17\n\x0fpub_account_uin\x18\x02 \x01(\x04\"K\n\x08PubGroup\x12\x10\n\x08nickname\x18\x01 \x01(\x0c\x12\x0e\n\x06gender\x18\x02 \x01(\r\x12\x0b\n\x03\x61ge\x18\x03 \x01(\r\x12\x10\n\x08\x64istance\x18\x04 \x01(\r\"Q\n\tQQLiveOld\x12\x0f\n\x07sub_cmd\x18\x01 \x01(\r\x12\x11\n\tshow_text\x18\x02 \x01(\x0c\x12\r\n\x05param\x18\x03 \x01(\x0c\x12\x11\n\tintroduce\x18\x04 \x01(\x0c\"\xcd\x03\n\x0fQQWalletAioBody\x12\x0f\n\x07senduin\x18\x01 \x01(\x04\x12\x30\n\x06sender\x18\x02 \x01(\x0b\x32 .im.msg.msg_body.QQWalletAioElem\x12\x32\n\x08receiver\x18\x03 \x01(\x0b\x32 .im.msg.msg_body.QQWalletAioElem\x12\x11\n\tchannelid\x18\x04 \x01(\x11\x12\x12\n\ntemplateid\x18\x05 \x01(\x11\x12\x0e\n\x06resend\x18\x06 \x01(\r\x12\x14\n\x0cmsg_priority\x18\x07 \x01(\r\x12\x0f\n\x07redtype\x18\x08 \x01(\x11\x12\x0e\n\x06\x62illno\x18\t \x01(\x0c\x12\x0f\n\x07\x61uthkey\x18\n \x01(\x0c\x12\x13\n\x0bsessiontype\x18\x0b \x01(\x11\x12\x0f\n\x07msgtype\x18\x0c \x01(\x11\x12\x12\n\nenvelopeid\x18\r \x01(\x11\x12\x0c\n\x04name\x18\x0e \x01(\x0c\x12\x10\n\x08\x63onftype\x18\x0f \x01(\x11\x12\x10\n\x08msg_from\x18\x10 \x01(\x11\x12\x0f\n\x07pc_body\x18\x11 \x01(\x0c\x12\r\n\x05index\x18\x12 \x01(\x0c\x12\x12\n\nredchannel\x18\x13 \x01(\r\x12\x10\n\x08grap_uin\x18\x14 \x03(\x04\x12\x12\n\npb_reserve\x18\x15 \x01(\x0c\"\xb9\x03\n\x0fQQWalletAioElem\x12\x12\n\nbackground\x18\x01 \x01(\r\x12\x0c\n\x04icon\x18\x02 \x01(\r\x12\r\n\x05title\x18\x03 \x01(\x0c\x12\x10\n\x08subtitle\x18\x04 \x01(\x0c\x12\x0f\n\x07\x63ontent\x18\x05 \x01(\x0c\x12\x0f\n\x07linkurl\x18\x06 \x01(\x0c\x12\x13\n\x0b\x62lackstripe\x18\x07 \x01(\x0c\x12\x0e\n\x06notice\x18\x08 \x01(\x0c\x12\x13\n\x0btitle_color\x18\t \x01(\r\x12\x16\n\x0esubtitle_color\x18\n \x01(\r\x12\x18\n\x10\x61\x63tions_priority\x18\x0b \x01(\x0c\x12\x10\n\x08jump_url\x18\x0c \x01(\x0c\x12\x12\n\nnative_ios\x18\r \x01(\x0c\x12\x16\n\x0enative_android\x18\x0e \x01(\x0c\x12\x0f\n\x07iconurl\x18\x0f \x01(\x0c\x12\x15\n\rcontent_color\x18\x10 \x01(\r\x12\x17\n\x0f\x63ontent_bgcolor\x18\x11 \x01(\r\x12\x16\n\x0e\x61io_image_left\x18\x12 \x01(\x0c\x12\x17\n\x0f\x61io_image_right\x18\x13 \x01(\x0c\x12\x11\n\tcft_image\x18\x14 \x01(\x0c\x12\x12\n\npb_reserve\x18\x15 \x01(\x0c\"A\n\x0bQQWalletMsg\x12\x32\n\x08\x61io_body\x18\x01 \x01(\x0b\x32 .im.msg.msg_body.QQWalletAioBody\"!\n\nRedBagInfo\x12\x13\n\x0bredbag_type\x18\x01 \x01(\r\"n\n\x07RichMsg\x12\x12\n\ntemplate_1\x18\x01 \x01(\x0c\x12\x12\n\nservice_id\x18\x02 \x01(\r\x12\x11\n\tmsg_resid\x18\x03 \x01(\x0c\x12\x0c\n\x04rand\x18\x04 \x01(\r\x12\x0b\n\x03seq\x18\x05 \x01(\r\x12\r\n\x05\x66lags\x18\x06 \x01(\r\"\x97\x02\n\x08RichText\x12#\n\x04\x61ttr\x18\x01 \x01(\x0b\x32\x15.im.msg.msg_body.Attr\x12$\n\x05\x65lems\x18\x02 \x03(\x0b\x32\x15.im.msg.msg_body.Elem\x12\x37\n\x0fnot_online_file\x18\x03 \x01(\x0b\x32\x1e.im.msg.msg_body.NotOnlineFile\x12!\n\x03ptt\x18\x04 \x01(\x0b\x32\x14.im.msg.msg_body.Ptt\x12(\n\x07tmp_ptt\x18\x05 \x01(\x0b\x32\x17.im.msg.msg_body.TmpPtt\x12:\n\x11trans_211_tmp_msg\x18\x06 \x01(\x0b\x32\x1f.im.msg.msg_body.Trans211TmpMsg\"\xf5\x02\n\rSecretFileMsg\x12\x10\n\x08\x66ile_key\x18\x01 \x01(\x0c\x12\x10\n\x08\x66rom_uin\x18\x02 \x01(\x04\x12\x0e\n\x06to_uin\x18\x03 \x01(\x04\x12\x0e\n\x06status\x18\x04 \x01(\r\x12\x0b\n\x03ttl\x18\x05 \x01(\r\x12\x0c\n\x04type\x18\x06 \x01(\r\x12\x1e\n\x16\x65ncrypt_prehead_length\x18\x07 \x01(\r\x12\x14\n\x0c\x65ncrypt_type\x18\x08 \x01(\r\x12\x13\n\x0b\x65ncrypt_key\x18\t \x01(\x0c\x12\x12\n\nread_times\x18\n \x01(\r\x12\x11\n\tleft_time\x18\x0b \x01(\r\x12\x39\n\x10not_online_image\x18\x0c \x01(\x0b\x32\x1f.im.msg.msg_body.NotOnlineImage\x12\x30\n\x0b\x65lem_flags2\x18\r \x01(\x0b\x32\x1b.im.msg.msg_body.ElemFlags2\x12\x10\n\x08opertype\x18\x0e \x01(\r\x12\x14\n\x0c\x66romphonenum\x18\x0f \x01(\t\"9\n\x0bShakeWindow\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x0f\n\x07reserve\x18\x02 \x01(\r\x12\x0b\n\x03uin\x18\x03 \x01(\x04\"5\n\nSmallEmoji\x12\x13\n\x0bpack_id_sum\x18\x01 \x01(\r\x12\x12\n\nimage_type\x18\x02 \x01(\r\"\xdd\x01\n\tSourceMsg\x12\x11\n\torig_seqs\x18\x01 \x03(\r\x12\x12\n\nsender_uin\x18\x02 \x01(\x04\x12\x0c\n\x04time\x18\x03 \x01(\r\x12\x0c\n\x04\x66lag\x18\x04 \x01(\r\x12$\n\x05\x65lems\x18\x05 \x03(\x0b\x32\x15.im.msg.msg_body.Elem\x12\x0c\n\x04type\x18\x06 \x01(\r\x12\x10\n\x08rich_msg\x18\x07 \x01(\x0c\x12\x12\n\npb_reserve\x18\x08 \x01(\x0c\x12\x0f\n\x07src_msg\x18\t \x01(\x0c\x12\x0e\n\x06to_uin\x18\n \x01(\x04\x12\x12\n\ntroop_name\x18\x0b \x01(\x0c\"o\n\tPlainText\x12\x0b\n\x03str\x18\x01 \x01(\x0c\x12\x0c\n\x04link\x18\x02 \x01(\t\x12\x12\n\nattr_6_buf\x18\x03 \x01(\x0c\x12\x12\n\nattr_7_buf\x18\x04 \x01(\x0c\x12\x0b\n\x03\x62uf\x18\x0b \x01(\x0c\x12\x12\n\npb_reserve\x18\x0c \x01(\x0c\"\x18\n\x08TipsInfo\x12\x0c\n\x04text\x18\x01 \x01(\t\"\xf3\x01\n\x06TmpPtt\x12\x11\n\tfile_type\x18\x01 \x01(\r\x12\x11\n\tfile_uuid\x18\x02 \x01(\x0c\x12\x10\n\x08\x66ile_md5\x18\x03 \x01(\x0c\x12\x11\n\tfile_name\x18\x04 \x01(\x0c\x12\x11\n\tfile_size\x18\x05 \x01(\r\x12\x11\n\tptt_times\x18\x06 \x01(\r\x12\x11\n\tuser_type\x18\x07 \x01(\r\x12\x15\n\rptttrans_flag\x18\x08 \x01(\r\x12\x11\n\tbusi_type\x18\t \x01(\r\x12\x0e\n\x06msg_id\x18\n \x01(\x04\x12\x12\n\npb_reserve\x18\x1e \x01(\x0c\x12\x17\n\x0fptt_encode_data\x18\x1f \x01(\x0c\"3\n\x0eTrans211TmpMsg\x12\x10\n\x08msg_body\x18\x01 \x01(\x0c\x12\x0f\n\x07\x63\x32\x63_cmd\x18\x02 \x01(\r\"2\n\tTransElem\x12\x11\n\telem_type\x18\x01 \x01(\r\x12\x12\n\nelem_value\x18\x02 \x01(\x0c\"\x9c\x04\n\tVideoFile\x12\x11\n\tfile_uuid\x18\x01 \x01(\x0c\x12\x10\n\x08\x66ile_md5\x18\x02 \x01(\x0c\x12\x11\n\tfile_name\x18\x03 \x01(\x0c\x12\x13\n\x0b\x66ile_format\x18\x04 \x01(\r\x12\x11\n\tfile_time\x18\x05 \x01(\r\x12\x11\n\tfile_size\x18\x06 \x01(\r\x12\x13\n\x0bthumb_width\x18\x07 \x01(\r\x12\x14\n\x0cthumb_height\x18\x08 \x01(\r\x12\x16\n\x0ethumb_file_md5\x18\t \x01(\x0c\x12\x0e\n\x06source\x18\n \x01(\x0c\x12\x17\n\x0fthumb_file_size\x18\x0b \x01(\r\x12\x11\n\tbusi_type\x18\x0c \x01(\r\x12\x16\n\x0e\x66rom_chat_type\x18\r \x01(\r\x12\x14\n\x0cto_chat_type\x18\x0e \x01(\r\x12\x1b\n\x13support_progressive\x18\x0f \x01(\x08\x12\x12\n\nfile_width\x18\x10 \x01(\r\x12\x13\n\x0b\x66ile_height\x18\x11 \x01(\r\x12\x15\n\rsub_busi_type\x18\x12 \x01(\r\x12\x12\n\nvideo_attr\x18\x13 \x01(\r\x12\x17\n\x0fthumb_file_urls\x18\x14 \x03(\x0c\x12\x17\n\x0fvideo_file_urls\x18\x15 \x03(\x0c\x12\x1b\n\x13thumb_download_flag\x18\x16 \x01(\r\x12\x1b\n\x13video_download_flag\x18\x17 \x01(\r\x12\x12\n\npb_reserve\x18\x18 \x01(\x0c\"8\n\x11WorkflowNotifyMsg\x12\x0f\n\x07\x65xt_msg\x18\x01 \x01(\x0c\x12\x12\n\ncreate_uin\x18\x02 \x01(\x04\"A\n\x0cLocationInfo\x12\x11\n\tlongitude\x18\x01 \x01(\x01\x12\x10\n\x08latitude\x18\x02 \x01(\x01\x12\x0c\n\x04\x64\x65sc\x18\x03 \x01(\x0c') + + + +_ANONYMOUSGROUPMSG = DESCRIPTOR.message_types_by_name['AnonymousGroupMsg'] +_APOLLOACTMSG = DESCRIPTOR.message_types_by_name['ApolloActMsg'] +_ARKAPPELEM = DESCRIPTOR.message_types_by_name['ArkAppElem'] +_ATTR = DESCRIPTOR.message_types_by_name['Attr'] +_BITAPPMSG = DESCRIPTOR.message_types_by_name['BitAppMsg'] +_BLESSINGMESSAGE = DESCRIPTOR.message_types_by_name['BlessingMessage'] +_COMMONELEM = DESCRIPTOR.message_types_by_name['CommonElem'] +_CONFERENCETIPSINFO = DESCRIPTOR.message_types_by_name['ConferenceTipsInfo'] +_CRMELEM = DESCRIPTOR.message_types_by_name['CrmElem'] +_CUSTOMELEM = DESCRIPTOR.message_types_by_name['CustomElem'] +_CUSTOMFACE = DESCRIPTOR.message_types_by_name['CustomFace'] +_DELIVERGIFTMSG = DESCRIPTOR.message_types_by_name['DeliverGiftMsg'] +_EIMINFO = DESCRIPTOR.message_types_by_name['EIMInfo'] +_ELEM = DESCRIPTOR.message_types_by_name['Elem'] +_ELEMFLAGS = DESCRIPTOR.message_types_by_name['ElemFlags'] +_ELEMFLAGS2 = DESCRIPTOR.message_types_by_name['ElemFlags2'] +_INST = DESCRIPTOR.message_types_by_name['Inst'] +_EXTRAINFO = DESCRIPTOR.message_types_by_name['ExtraInfo'] +_FSJMESSAGEELEM = DESCRIPTOR.message_types_by_name['FSJMessageElem'] +_FACE = DESCRIPTOR.message_types_by_name['Face'] +_FUNFACE = DESCRIPTOR.message_types_by_name['FunFace'] +_BOMB = DESCRIPTOR.message_types_by_name['Bomb'] +_TURNTABLE = DESCRIPTOR.message_types_by_name['Turntable'] +_GENERALFLAGS = DESCRIPTOR.message_types_by_name['GeneralFlags'] +_GROUPBUSINESSMSG = DESCRIPTOR.message_types_by_name['GroupBusinessMsg'] +_GROUPFILE = DESCRIPTOR.message_types_by_name['GroupFile'] +_GROUPPOSTELEM = DESCRIPTOR.message_types_by_name['GroupPostElem'] +_GROUPPUBACCOUNTINFO = DESCRIPTOR.message_types_by_name['GroupPubAccountInfo'] +_LIFEONLINEACCOUNT = DESCRIPTOR.message_types_by_name['LifeOnlineAccount'] +_LIGHTAPPELEM = DESCRIPTOR.message_types_by_name['LightAppElem'] +_LOLAMSG = DESCRIPTOR.message_types_by_name['LolaMsg'] +_LOWVERSIONTIPS = DESCRIPTOR.message_types_by_name['LowVersionTips'] +_MARKETFACE = DESCRIPTOR.message_types_by_name['MarketFace'] +_MARKETTRANS = DESCRIPTOR.message_types_by_name['MarketTrans'] +_MSGBODY = DESCRIPTOR.message_types_by_name['MsgBody'] +_MSGBODY_SUBTYPE4 = DESCRIPTOR.message_types_by_name['MsgBody_subtype4'] +_NEARBYMESSAGETYPE = DESCRIPTOR.message_types_by_name['NearByMessageType'] +_NOTONLINEFILE = DESCRIPTOR.message_types_by_name['NotOnlineFile'] +_NOTONLINEIMAGE = DESCRIPTOR.message_types_by_name['NotOnlineImage'] +_ONLINEIMAGE = DESCRIPTOR.message_types_by_name['OnlineImage'] +_OPENQQDATA = DESCRIPTOR.message_types_by_name['OpenQQData'] +_PATSELEM = DESCRIPTOR.message_types_by_name['PatsElem'] +_PCSUPPORTDEF = DESCRIPTOR.message_types_by_name['PcSupportDef'] +_PTT = DESCRIPTOR.message_types_by_name['Ptt'] +_PUBACCINFO = DESCRIPTOR.message_types_by_name['PubAccInfo'] +_PUBACCOUNT = DESCRIPTOR.message_types_by_name['PubAccount'] +_PUBGROUP = DESCRIPTOR.message_types_by_name['PubGroup'] +_QQLIVEOLD = DESCRIPTOR.message_types_by_name['QQLiveOld'] +_QQWALLETAIOBODY = DESCRIPTOR.message_types_by_name['QQWalletAioBody'] +_QQWALLETAIOELEM = DESCRIPTOR.message_types_by_name['QQWalletAioElem'] +_QQWALLETMSG = DESCRIPTOR.message_types_by_name['QQWalletMsg'] +_REDBAGINFO = DESCRIPTOR.message_types_by_name['RedBagInfo'] +_RICHMSG = DESCRIPTOR.message_types_by_name['RichMsg'] +_RICHTEXT = DESCRIPTOR.message_types_by_name['RichText'] +_SECRETFILEMSG = DESCRIPTOR.message_types_by_name['SecretFileMsg'] +_SHAKEWINDOW = DESCRIPTOR.message_types_by_name['ShakeWindow'] +_SMALLEMOJI = DESCRIPTOR.message_types_by_name['SmallEmoji'] +_SOURCEMSG = DESCRIPTOR.message_types_by_name['SourceMsg'] +_PLAINTEXT = DESCRIPTOR.message_types_by_name['PlainText'] +_TIPSINFO = DESCRIPTOR.message_types_by_name['TipsInfo'] +_TMPPTT = DESCRIPTOR.message_types_by_name['TmpPtt'] +_TRANS211TMPMSG = DESCRIPTOR.message_types_by_name['Trans211TmpMsg'] +_TRANSELEM = DESCRIPTOR.message_types_by_name['TransElem'] +_VIDEOFILE = DESCRIPTOR.message_types_by_name['VideoFile'] +_WORKFLOWNOTIFYMSG = DESCRIPTOR.message_types_by_name['WorkflowNotifyMsg'] +_LOCATIONINFO = DESCRIPTOR.message_types_by_name['LocationInfo'] AnonymousGroupMsg = _reflection.GeneratedProtocolMessageType('AnonymousGroupMsg', (_message.Message,), { 'DESCRIPTOR' : _ANONYMOUSGROUPMSG, '__module__' : 'cai.pb.im.msg.msg_body.msg_body_pb2' @@ -5964,5 +546,139 @@ }) _sym_db.RegisterMessage(LocationInfo) - +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _ANONYMOUSGROUPMSG._serialized_start=59 + _ANONYMOUSGROUPMSG._serialized_end=212 + _APOLLOACTMSG._serialized_start=215 + _APOLLOACTMSG._serialized_end=487 + _ARKAPPELEM._serialized_start=489 + _ARKAPPELEM._serialized_end=576 + _ATTR._serialized_start=579 + _ATTR._serialized_end=764 + _BITAPPMSG._serialized_start=766 + _BITAPPMSG._serialized_end=790 + _BLESSINGMESSAGE._serialized_start=792 + _BLESSINGMESSAGE._serialized_end=844 + _COMMONELEM._serialized_start=846 + _COMMONELEM._serialized_end=920 + _CONFERENCETIPSINFO._serialized_start=922 + _CONFERENCETIPSINFO._serialized_end=999 + _CRMELEM._serialized_start=1001 + _CRMELEM._serialized_end=1106 + _CUSTOMELEM._serialized_start=1108 + _CUSTOMELEM._serialized_end=1195 + _CUSTOMFACE._serialized_start=1198 + _CUSTOMFACE._serialized_end=1823 + _DELIVERGIFTMSG._serialized_start=1826 + _DELIVERGIFTMSG._serialized_end=2392 + _EIMINFO._serialized_start=2394 + _EIMINFO._serialized_end=2434 + _ELEM._serialized_start=2437 + _ELEM._serialized_end=5136 + _ELEMFLAGS._serialized_start=5138 + _ELEMFLAGS._serialized_end=5188 + _ELEMFLAGS2._serialized_start=5191 + _ELEMFLAGS2._serialized_end=5570 + _INST._serialized_start=5572 + _INST._serialized_end=5611 + _EXTRAINFO._serialized_start=5614 + _EXTRAINFO._serialized_end=5857 + _FSJMESSAGEELEM._serialized_start=5859 + _FSJMESSAGEELEM._serialized_end=5893 + _FACE._serialized_start=5895 + _FACE._serialized_end=5942 + _FUNFACE._serialized_start=5944 + _FUNFACE._serialized_end=6037 + _BOMB._serialized_start=6039 + _BOMB._serialized_end=6060 + _TURNTABLE._serialized_start=6062 + _TURNTABLE._serialized_end=6130 + _GENERALFLAGS._serialized_start=6133 + _GENERALFLAGS._serialized_end=6567 + _GROUPBUSINESSMSG._serialized_start=6570 + _GROUPBUSINESSMSG._serialized_end=6733 + _GROUPFILE._serialized_start=6736 + _GROUPFILE._serialized_end=6935 + _GROUPPOSTELEM._serialized_start=6937 + _GROUPPOSTELEM._serialized_end=6991 + _GROUPPUBACCOUNTINFO._serialized_start=6993 + _GROUPPUBACCOUNTINFO._serialized_end=7035 + _LIFEONLINEACCOUNT._serialized_start=7038 + _LIFEONLINEACCOUNT._serialized_end=7213 + _LIGHTAPPELEM._serialized_start=7215 + _LIGHTAPPELEM._serialized_end=7262 + _LOLAMSG._serialized_start=7264 + _LOLAMSG._serialized_end=7360 + _LOWVERSIONTIPS._serialized_start=7362 + _LOWVERSIONTIPS._serialized_end=7476 + _MARKETFACE._serialized_start=7479 + _MARKETFACE._serialized_end=7731 + _MARKETTRANS._serialized_start=7733 + _MARKETTRANS._serialized_end=7830 + _MSGBODY._serialized_start=7832 + _MSGBODY._serialized_end=7929 + _MSGBODY_SUBTYPE4._serialized_start=7931 + _MSGBODY_SUBTYPE4._serialized_end=8024 + _NEARBYMESSAGETYPE._serialized_start=8026 + _NEARBYMESSAGETYPE._serialized_end=8082 + _NOTONLINEFILE._serialized_start=8085 + _NOTONLINEFILE._serialized_end=8489 + _NOTONLINEIMAGE._serialized_start=8492 + _NOTONLINEIMAGE._serialized_end=9065 + _ONLINEIMAGE._serialized_start=9067 + _ONLINEIMAGE._serialized_end=9140 + _OPENQQDATA._serialized_start=9142 + _OPENQQDATA._serialized_end=9175 + _PATSELEM._serialized_start=9177 + _PATSELEM._serialized_end=9224 + _PCSUPPORTDEF._serialized_start=9227 + _PCSUPPORTDEF._serialized_end=9375 + _PTT._serialized_start=9378 + _PTT._serialized_end=9836 + _PUBACCINFO._serialized_start=9838 + _PUBACCINFO._serialized_end=9941 + _PUBACCOUNT._serialized_start=9943 + _PUBACCOUNT._serialized_end=9993 + _PUBGROUP._serialized_start=9995 + _PUBGROUP._serialized_end=10070 + _QQLIVEOLD._serialized_start=10072 + _QQLIVEOLD._serialized_end=10153 + _QQWALLETAIOBODY._serialized_start=10156 + _QQWALLETAIOBODY._serialized_end=10617 + _QQWALLETAIOELEM._serialized_start=10620 + _QQWALLETAIOELEM._serialized_end=11061 + _QQWALLETMSG._serialized_start=11063 + _QQWALLETMSG._serialized_end=11128 + _REDBAGINFO._serialized_start=11130 + _REDBAGINFO._serialized_end=11163 + _RICHMSG._serialized_start=11165 + _RICHMSG._serialized_end=11275 + _RICHTEXT._serialized_start=11278 + _RICHTEXT._serialized_end=11557 + _SECRETFILEMSG._serialized_start=11560 + _SECRETFILEMSG._serialized_end=11933 + _SHAKEWINDOW._serialized_start=11935 + _SHAKEWINDOW._serialized_end=11992 + _SMALLEMOJI._serialized_start=11994 + _SMALLEMOJI._serialized_end=12047 + _SOURCEMSG._serialized_start=12050 + _SOURCEMSG._serialized_end=12271 + _PLAINTEXT._serialized_start=12273 + _PLAINTEXT._serialized_end=12384 + _TIPSINFO._serialized_start=12386 + _TIPSINFO._serialized_end=12410 + _TMPPTT._serialized_start=12413 + _TMPPTT._serialized_end=12656 + _TRANS211TMPMSG._serialized_start=12658 + _TRANS211TMPMSG._serialized_end=12709 + _TRANSELEM._serialized_start=12711 + _TRANSELEM._serialized_end=12761 + _VIDEOFILE._serialized_start=12764 + _VIDEOFILE._serialized_end=13304 + _WORKFLOWNOTIFYMSG._serialized_start=13306 + _WORKFLOWNOTIFYMSG._serialized_end=13362 + _LOCATIONINFO._serialized_start=13364 + _LOCATIONINFO._serialized_end=13429 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/msg/msg_body/msg_body_pb2.pyi b/cai/pb/im/msg/msg_body/msg_body_pb2.pyi index 108ccef3..ec73f80f 100644 --- a/cai/pb/im/msg/msg_body/msg_body_pb2.pyi +++ b/cai/pb/im/msg/msg_body/msg_body_pb2.pyi @@ -34,10 +34,13 @@ from typing_extensions import ( ) -DESCRIPTOR: FileDescriptor = ... +DESCRIPTOR: FileDescriptor class AnonymousGroupMsg(Message): - DESCRIPTOR: Descriptor = ... + """tencent/im/msg/im_msg_body.java + + """ + DESCRIPTOR: Descriptor FLAGS_FIELD_NUMBER: int ANON_ID_FIELD_NUMBER: int ANON_NICK_FIELD_NUMBER: int @@ -45,29 +48,28 @@ class AnonymousGroupMsg(Message): EXPIRE_TIME_FIELD_NUMBER: int BUBBLE_ID_FIELD_NUMBER: int RANK_COLOR_FIELD_NUMBER: int - flags: int = ... - anon_id: bytes = ... - anon_nick: bytes = ... - head_portrait: int = ... - expire_time: int = ... - bubble_id: int = ... - rank_color: bytes = ... - - def __init__(self, - *, - flags : Optional[int] = ..., - anon_id : Optional[bytes] = ..., - anon_nick : Optional[bytes] = ..., - head_portrait : Optional[int] = ..., - expire_time : Optional[int] = ..., - bubble_id : Optional[int] = ..., - rank_color : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"anon_id",b"anon_id",u"anon_nick",b"anon_nick",u"bubble_id",b"bubble_id",u"expire_time",b"expire_time",u"flags",b"flags",u"head_portrait",b"head_portrait",u"rank_color",b"rank_color"]) -> bool: ... - def ClearField(self, field_name: Literal[u"anon_id",b"anon_id",u"anon_nick",b"anon_nick",u"bubble_id",b"bubble_id",u"expire_time",b"expire_time",u"flags",b"flags",u"head_portrait",b"head_portrait",u"rank_color",b"rank_color"]) -> None: ... + flags: int + anon_id: bytes + anon_nick: bytes + head_portrait: int + expire_time: int + bubble_id: int + rank_color: bytes + def __init__(self, + *, + flags: Optional[int] = ..., + anon_id: Optional[bytes] = ..., + anon_nick: Optional[bytes] = ..., + head_portrait: Optional[int] = ..., + expire_time: Optional[int] = ..., + bubble_id: Optional[int] = ..., + rank_color: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["anon_id",b"anon_id","anon_nick",b"anon_nick","bubble_id",b"bubble_id","expire_time",b"expire_time","flags",b"flags","head_portrait",b"head_portrait","rank_color",b"rank_color"]) -> bool: ... + def ClearField(self, field_name: Literal["anon_id",b"anon_id","anon_nick",b"anon_nick","bubble_id",b"bubble_id","expire_time",b"expire_time","flags",b"flags","head_portrait",b"head_portrait","rank_color",b"rank_color"]) -> None: ... class ApolloActMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor ACTION_ID_FIELD_NUMBER: int ACTION_NAME_FIELD_NUMBER: int ACTION_TEXT_FIELD_NUMBER: int @@ -81,62 +83,60 @@ class ApolloActMsg(Message): DIYTEXT_CONTENT_FIELD_NUMBER: int INPUT_TEXT_FIELD_NUMBER: int PB_RESERVE_FIELD_NUMBER: int - action_id: int = ... - action_name: bytes = ... - action_text: bytes = ... - flag: int = ... - peer_uin: int = ... - sender_ts: int = ... - peer_ts: int = ... - sender_status: int = ... - peer_status: int = ... - diytext_id: int = ... - diytext_content: bytes = ... - input_text: bytes = ... - pb_reserve: bytes = ... - - def __init__(self, - *, - action_id : Optional[int] = ..., - action_name : Optional[bytes] = ..., - action_text : Optional[bytes] = ..., - flag : Optional[int] = ..., - peer_uin : Optional[int] = ..., - sender_ts : Optional[int] = ..., - peer_ts : Optional[int] = ..., - sender_status : Optional[int] = ..., - peer_status : Optional[int] = ..., - diytext_id : Optional[int] = ..., - diytext_content : Optional[bytes] = ..., - input_text : Optional[bytes] = ..., - pb_reserve : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"action_id",b"action_id",u"action_name",b"action_name",u"action_text",b"action_text",u"diytext_content",b"diytext_content",u"diytext_id",b"diytext_id",u"flag",b"flag",u"input_text",b"input_text",u"pb_reserve",b"pb_reserve",u"peer_status",b"peer_status",u"peer_ts",b"peer_ts",u"peer_uin",b"peer_uin",u"sender_status",b"sender_status",u"sender_ts",b"sender_ts"]) -> bool: ... - def ClearField(self, field_name: Literal[u"action_id",b"action_id",u"action_name",b"action_name",u"action_text",b"action_text",u"diytext_content",b"diytext_content",u"diytext_id",b"diytext_id",u"flag",b"flag",u"input_text",b"input_text",u"pb_reserve",b"pb_reserve",u"peer_status",b"peer_status",u"peer_ts",b"peer_ts",u"peer_uin",b"peer_uin",u"sender_status",b"sender_status",u"sender_ts",b"sender_ts"]) -> None: ... + action_id: int + action_name: bytes + action_text: bytes + flag: int + peer_uin: int + sender_ts: int + peer_ts: int + sender_status: int + peer_status: int + diytext_id: int + diytext_content: bytes + input_text: bytes + pb_reserve: bytes + def __init__(self, + *, + action_id: Optional[int] = ..., + action_name: Optional[bytes] = ..., + action_text: Optional[bytes] = ..., + flag: Optional[int] = ..., + peer_uin: Optional[int] = ..., + sender_ts: Optional[int] = ..., + peer_ts: Optional[int] = ..., + sender_status: Optional[int] = ..., + peer_status: Optional[int] = ..., + diytext_id: Optional[int] = ..., + diytext_content: Optional[bytes] = ..., + input_text: Optional[bytes] = ..., + pb_reserve: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["action_id",b"action_id","action_name",b"action_name","action_text",b"action_text","diytext_content",b"diytext_content","diytext_id",b"diytext_id","flag",b"flag","input_text",b"input_text","pb_reserve",b"pb_reserve","peer_status",b"peer_status","peer_ts",b"peer_ts","peer_uin",b"peer_uin","sender_status",b"sender_status","sender_ts",b"sender_ts"]) -> bool: ... + def ClearField(self, field_name: Literal["action_id",b"action_id","action_name",b"action_name","action_text",b"action_text","diytext_content",b"diytext_content","diytext_id",b"diytext_id","flag",b"flag","input_text",b"input_text","pb_reserve",b"pb_reserve","peer_status",b"peer_status","peer_ts",b"peer_ts","peer_uin",b"peer_uin","sender_status",b"sender_status","sender_ts",b"sender_ts"]) -> None: ... class ArkAppElem(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor APP_NAME_FIELD_NUMBER: int MIN_VERSION_FIELD_NUMBER: int XML_TEMPLATE_FIELD_NUMBER: int DATA_FIELD_NUMBER: int - app_name: Text = ... - min_version: Text = ... - xml_template: Text = ... - data: bytes = ... - + app_name: Text + min_version: Text + xml_template: Text + data: bytes def __init__(self, *, - app_name : Optional[Text] = ..., - min_version : Optional[Text] = ..., - xml_template : Optional[Text] = ..., - data : Optional[bytes] = ..., + app_name: Optional[Text] = ..., + min_version: Optional[Text] = ..., + xml_template: Optional[Text] = ..., + data: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"app_name",b"app_name",u"data",b"data",u"min_version",b"min_version",u"xml_template",b"xml_template"]) -> bool: ... - def ClearField(self, field_name: Literal[u"app_name",b"app_name",u"data",b"data",u"min_version",b"min_version",u"xml_template",b"xml_template"]) -> None: ... + def HasField(self, field_name: Literal["app_name",b"app_name","data",b"data","min_version",b"min_version","xml_template",b"xml_template"]) -> bool: ... + def ClearField(self, field_name: Literal["app_name",b"app_name","data",b"data","min_version",b"min_version","xml_template",b"xml_template"]) -> None: ... class Attr(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor CODE_PAGE_FIELD_NUMBER: int TIME_FIELD_NUMBER: int RANDOM_FIELD_NUMBER: int @@ -147,146 +147,139 @@ class Attr(Message): PITCH_AND_FAMILY_FIELD_NUMBER: int FONT_NAME_FIELD_NUMBER: int RESERVE_DATA_FIELD_NUMBER: int - code_page: int = ... - time: int = ... - random: int = ... - color: int = ... - size: int = ... - effect: int = ... - char_set: int = ... - pitch_and_family: int = ... - font_name: Text = ... - reserve_data: bytes = ... - - def __init__(self, - *, - code_page : Optional[int] = ..., - time : Optional[int] = ..., - random : Optional[int] = ..., - color : Optional[int] = ..., - size : Optional[int] = ..., - effect : Optional[int] = ..., - char_set : Optional[int] = ..., - pitch_and_family : Optional[int] = ..., - font_name : Optional[Text] = ..., - reserve_data : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"char_set",b"char_set",u"code_page",b"code_page",u"color",b"color",u"effect",b"effect",u"font_name",b"font_name",u"pitch_and_family",b"pitch_and_family",u"random",b"random",u"reserve_data",b"reserve_data",u"size",b"size",u"time",b"time"]) -> bool: ... - def ClearField(self, field_name: Literal[u"char_set",b"char_set",u"code_page",b"code_page",u"color",b"color",u"effect",b"effect",u"font_name",b"font_name",u"pitch_and_family",b"pitch_and_family",u"random",b"random",u"reserve_data",b"reserve_data",u"size",b"size",u"time",b"time"]) -> None: ... + code_page: int + time: int + random: int + color: int + size: int + effect: int + char_set: int + pitch_and_family: int + font_name: Text + reserve_data: bytes + def __init__(self, + *, + code_page: Optional[int] = ..., + time: Optional[int] = ..., + random: Optional[int] = ..., + color: Optional[int] = ..., + size: Optional[int] = ..., + effect: Optional[int] = ..., + char_set: Optional[int] = ..., + pitch_and_family: Optional[int] = ..., + font_name: Optional[Text] = ..., + reserve_data: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["char_set",b"char_set","code_page",b"code_page","color",b"color","effect",b"effect","font_name",b"font_name","pitch_and_family",b"pitch_and_family","random",b"random","reserve_data",b"reserve_data","size",b"size","time",b"time"]) -> bool: ... + def ClearField(self, field_name: Literal["char_set",b"char_set","code_page",b"code_page","color",b"color","effect",b"effect","font_name",b"font_name","pitch_and_family",b"pitch_and_family","random",b"random","reserve_data",b"reserve_data","size",b"size","time",b"time"]) -> None: ... class BitAppMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor BUF_FIELD_NUMBER: int - buf: bytes = ... - + buf: bytes def __init__(self, *, - buf : Optional[bytes] = ..., + buf: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"buf",b"buf"]) -> bool: ... - def ClearField(self, field_name: Literal[u"buf",b"buf"]) -> None: ... + def HasField(self, field_name: Literal["buf",b"buf"]) -> bool: ... + def ClearField(self, field_name: Literal["buf",b"buf"]) -> None: ... class BlessingMessage(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor MSG_TYPE_FIELD_NUMBER: int EX_FLAG_FIELD_NUMBER: int - msg_type: int = ... - ex_flag: int = ... - + msg_type: int + ex_flag: int def __init__(self, *, - msg_type : Optional[int] = ..., - ex_flag : Optional[int] = ..., + msg_type: Optional[int] = ..., + ex_flag: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"ex_flag",b"ex_flag",u"msg_type",b"msg_type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"ex_flag",b"ex_flag",u"msg_type",b"msg_type"]) -> None: ... + def HasField(self, field_name: Literal["ex_flag",b"ex_flag","msg_type",b"msg_type"]) -> bool: ... + def ClearField(self, field_name: Literal["ex_flag",b"ex_flag","msg_type",b"msg_type"]) -> None: ... class CommonElem(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SERVICE_TYPE_FIELD_NUMBER: int PB_ELEM_FIELD_NUMBER: int BUSINESS_TYPE_FIELD_NUMBER: int - service_type: int = ... - pb_elem: bytes = ... - business_type: int = ... - + service_type: int + pb_elem: bytes + business_type: int def __init__(self, *, - service_type : Optional[int] = ..., - pb_elem : Optional[bytes] = ..., - business_type : Optional[int] = ..., + service_type: Optional[int] = ..., + pb_elem: Optional[bytes] = ..., + business_type: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"business_type",b"business_type",u"pb_elem",b"pb_elem",u"service_type",b"service_type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"business_type",b"business_type",u"pb_elem",b"pb_elem",u"service_type",b"service_type"]) -> None: ... + def HasField(self, field_name: Literal["business_type",b"business_type","pb_elem",b"pb_elem","service_type",b"service_type"]) -> bool: ... + def ClearField(self, field_name: Literal["business_type",b"business_type","pb_elem",b"pb_elem","service_type",b"service_type"]) -> None: ... class ConferenceTipsInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SESSION_TYPE_FIELD_NUMBER: int SESSION_UIN_FIELD_NUMBER: int TEXT_FIELD_NUMBER: int - session_type: int = ... - session_uin: int = ... - text: Text = ... - + session_type: int + session_uin: int + text: Text def __init__(self, *, - session_type : Optional[int] = ..., - session_uin : Optional[int] = ..., - text : Optional[Text] = ..., + session_type: Optional[int] = ..., + session_uin: Optional[int] = ..., + text: Optional[Text] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"session_type",b"session_type",u"session_uin",b"session_uin",u"text",b"text"]) -> bool: ... - def ClearField(self, field_name: Literal[u"session_type",b"session_type",u"session_uin",b"session_uin",u"text",b"text"]) -> None: ... + def HasField(self, field_name: Literal["session_type",b"session_type","session_uin",b"session_uin","text",b"text"]) -> bool: ... + def ClearField(self, field_name: Literal["session_type",b"session_type","session_uin",b"session_uin","text",b"text"]) -> None: ... class CrmElem(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor CRM_BUF_FIELD_NUMBER: int MSG_RESID_FIELD_NUMBER: int QIDIAN_FLAG_FIELD_NUMBER: int PUSH_FLAG_FIELD_NUMBER: int COUNT_FLAG_FIELD_NUMBER: int - crm_buf: bytes = ... - msg_resid: bytes = ... - qidian_flag: int = ... - push_flag: int = ... - count_flag: int = ... - + crm_buf: bytes + msg_resid: bytes + qidian_flag: int + push_flag: int + count_flag: int def __init__(self, *, - crm_buf : Optional[bytes] = ..., - msg_resid : Optional[bytes] = ..., - qidian_flag : Optional[int] = ..., - push_flag : Optional[int] = ..., - count_flag : Optional[int] = ..., + crm_buf: Optional[bytes] = ..., + msg_resid: Optional[bytes] = ..., + qidian_flag: Optional[int] = ..., + push_flag: Optional[int] = ..., + count_flag: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"count_flag",b"count_flag",u"crm_buf",b"crm_buf",u"msg_resid",b"msg_resid",u"push_flag",b"push_flag",u"qidian_flag",b"qidian_flag"]) -> bool: ... - def ClearField(self, field_name: Literal[u"count_flag",b"count_flag",u"crm_buf",b"crm_buf",u"msg_resid",b"msg_resid",u"push_flag",b"push_flag",u"qidian_flag",b"qidian_flag"]) -> None: ... + def HasField(self, field_name: Literal["count_flag",b"count_flag","crm_buf",b"crm_buf","msg_resid",b"msg_resid","push_flag",b"push_flag","qidian_flag",b"qidian_flag"]) -> bool: ... + def ClearField(self, field_name: Literal["count_flag",b"count_flag","crm_buf",b"crm_buf","msg_resid",b"msg_resid","push_flag",b"push_flag","qidian_flag",b"qidian_flag"]) -> None: ... class CustomElem(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor DESC_FIELD_NUMBER: int DATA_FIELD_NUMBER: int ENUM_TYPE_FIELD_NUMBER: int EXT_FIELD_NUMBER: int SOUND_FIELD_NUMBER: int - desc: bytes = ... - data: bytes = ... - enum_type: int = ... - ext: bytes = ... - sound: bytes = ... - + desc: bytes + data: bytes + enum_type: int + ext: bytes + sound: bytes def __init__(self, *, - desc : Optional[bytes] = ..., - data : Optional[bytes] = ..., - enum_type : Optional[int] = ..., - ext : Optional[bytes] = ..., - sound : Optional[bytes] = ..., + desc: Optional[bytes] = ..., + data: Optional[bytes] = ..., + enum_type: Optional[int] = ..., + ext: Optional[bytes] = ..., + sound: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"data",b"data",u"desc",b"desc",u"enum_type",b"enum_type",u"ext",b"ext",u"sound",b"sound"]) -> bool: ... - def ClearField(self, field_name: Literal[u"data",b"data",u"desc",b"desc",u"enum_type",b"enum_type",u"ext",b"ext",u"sound",b"sound"]) -> None: ... + def HasField(self, field_name: Literal["data",b"data","desc",b"desc","enum_type",b"enum_type","ext",b"ext","sound",b"sound"]) -> bool: ... + def ClearField(self, field_name: Literal["data",b"data","desc",b"desc","enum_type",b"enum_type","ext",b"ext","sound",b"sound"]) -> None: ... class CustomFace(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor GUID_FIELD_NUMBER: int FILE_PATH_FIELD_NUMBER: int SHORTCUT_FIELD_NUMBER: int @@ -321,83 +314,82 @@ class CustomFace(Message): _400_WIDTH_FIELD_NUMBER: int _400_HEIGHT_FIELD_NUMBER: int PB_RESERVE_FIELD_NUMBER: int - guid: bytes = ... - file_path: Text = ... - shortcut: Text = ... - buffer: bytes = ... - flag: bytes = ... - old_data: bytes = ... - file_id: int = ... - server_ip: int = ... - server_port: int = ... - file_type: int = ... - signature: bytes = ... - useful: int = ... - md5: bytes = ... - thumb_url: Text = ... - big_url: Text = ... - orig_url: Text = ... - biz_type: int = ... - repeat_index: int = ... - repeat_image: int = ... - image_type: int = ... - index: int = ... - width: int = ... - height: int = ... - source: int = ... - size: int = ... - origin: int = ... - thumb_width: int = ... - thumb_height: int = ... - show_len: int = ... - download_len: int = ... - _400_url: Text = ... - _400_width: int = ... - _400_height: int = ... - pb_reserve: bytes = ... - - def __init__(self, - *, - guid : Optional[bytes] = ..., - file_path : Optional[Text] = ..., - shortcut : Optional[Text] = ..., - buffer : Optional[bytes] = ..., - flag : Optional[bytes] = ..., - old_data : Optional[bytes] = ..., - file_id : Optional[int] = ..., - server_ip : Optional[int] = ..., - server_port : Optional[int] = ..., - file_type : Optional[int] = ..., - signature : Optional[bytes] = ..., - useful : Optional[int] = ..., - md5 : Optional[bytes] = ..., - thumb_url : Optional[Text] = ..., - big_url : Optional[Text] = ..., - orig_url : Optional[Text] = ..., - biz_type : Optional[int] = ..., - repeat_index : Optional[int] = ..., - repeat_image : Optional[int] = ..., - image_type : Optional[int] = ..., - index : Optional[int] = ..., - width : Optional[int] = ..., - height : Optional[int] = ..., - source : Optional[int] = ..., - size : Optional[int] = ..., - origin : Optional[int] = ..., - thumb_width : Optional[int] = ..., - thumb_height : Optional[int] = ..., - show_len : Optional[int] = ..., - download_len : Optional[int] = ..., - _400_url : Optional[Text] = ..., - _400_width : Optional[int] = ..., - _400_height : Optional[int] = ..., - pb_reserve : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"_400_height",b"_400_height",u"_400_url",b"_400_url",u"_400_width",b"_400_width",u"big_url",b"big_url",u"biz_type",b"biz_type",u"buffer",b"buffer",u"download_len",b"download_len",u"file_id",b"file_id",u"file_path",b"file_path",u"file_type",b"file_type",u"flag",b"flag",u"guid",b"guid",u"height",b"height",u"image_type",b"image_type",u"index",b"index",u"md5",b"md5",u"old_data",b"old_data",u"orig_url",b"orig_url",u"origin",b"origin",u"pb_reserve",b"pb_reserve",u"repeat_image",b"repeat_image",u"repeat_index",b"repeat_index",u"server_ip",b"server_ip",u"server_port",b"server_port",u"shortcut",b"shortcut",u"show_len",b"show_len",u"signature",b"signature",u"size",b"size",u"source",b"source",u"thumb_height",b"thumb_height",u"thumb_url",b"thumb_url",u"thumb_width",b"thumb_width",u"useful",b"useful",u"width",b"width"]) -> bool: ... - def ClearField(self, field_name: Literal[u"_400_height",b"_400_height",u"_400_url",b"_400_url",u"_400_width",b"_400_width",u"big_url",b"big_url",u"biz_type",b"biz_type",u"buffer",b"buffer",u"download_len",b"download_len",u"file_id",b"file_id",u"file_path",b"file_path",u"file_type",b"file_type",u"flag",b"flag",u"guid",b"guid",u"height",b"height",u"image_type",b"image_type",u"index",b"index",u"md5",b"md5",u"old_data",b"old_data",u"orig_url",b"orig_url",u"origin",b"origin",u"pb_reserve",b"pb_reserve",u"repeat_image",b"repeat_image",u"repeat_index",b"repeat_index",u"server_ip",b"server_ip",u"server_port",b"server_port",u"shortcut",b"shortcut",u"show_len",b"show_len",u"signature",b"signature",u"size",b"size",u"source",b"source",u"thumb_height",b"thumb_height",u"thumb_url",b"thumb_url",u"thumb_width",b"thumb_width",u"useful",b"useful",u"width",b"width"]) -> None: ... + guid: bytes + file_path: Text + shortcut: Text + buffer: bytes + flag: bytes + old_data: bytes + file_id: int + server_ip: int + server_port: int + file_type: int + signature: bytes + useful: int + md5: bytes + thumb_url: Text + big_url: Text + orig_url: Text + biz_type: int + repeat_index: int + repeat_image: int + image_type: int + index: int + width: int + height: int + source: int + size: int + origin: int + thumb_width: int + thumb_height: int + show_len: int + download_len: int + _400_url: Text + _400_width: int + _400_height: int + pb_reserve: bytes + def __init__(self, + *, + guid: Optional[bytes] = ..., + file_path: Optional[Text] = ..., + shortcut: Optional[Text] = ..., + buffer: Optional[bytes] = ..., + flag: Optional[bytes] = ..., + old_data: Optional[bytes] = ..., + file_id: Optional[int] = ..., + server_ip: Optional[int] = ..., + server_port: Optional[int] = ..., + file_type: Optional[int] = ..., + signature: Optional[bytes] = ..., + useful: Optional[int] = ..., + md5: Optional[bytes] = ..., + thumb_url: Optional[Text] = ..., + big_url: Optional[Text] = ..., + orig_url: Optional[Text] = ..., + biz_type: Optional[int] = ..., + repeat_index: Optional[int] = ..., + repeat_image: Optional[int] = ..., + image_type: Optional[int] = ..., + index: Optional[int] = ..., + width: Optional[int] = ..., + height: Optional[int] = ..., + source: Optional[int] = ..., + size: Optional[int] = ..., + origin: Optional[int] = ..., + thumb_width: Optional[int] = ..., + thumb_height: Optional[int] = ..., + show_len: Optional[int] = ..., + download_len: Optional[int] = ..., + _400_url: Optional[Text] = ..., + _400_width: Optional[int] = ..., + _400_height: Optional[int] = ..., + pb_reserve: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["_400_height",b"_400_height","_400_url",b"_400_url","_400_width",b"_400_width","big_url",b"big_url","biz_type",b"biz_type","buffer",b"buffer","download_len",b"download_len","file_id",b"file_id","file_path",b"file_path","file_type",b"file_type","flag",b"flag","guid",b"guid","height",b"height","image_type",b"image_type","index",b"index","md5",b"md5","old_data",b"old_data","orig_url",b"orig_url","origin",b"origin","pb_reserve",b"pb_reserve","repeat_image",b"repeat_image","repeat_index",b"repeat_index","server_ip",b"server_ip","server_port",b"server_port","shortcut",b"shortcut","show_len",b"show_len","signature",b"signature","size",b"size","source",b"source","thumb_height",b"thumb_height","thumb_url",b"thumb_url","thumb_width",b"thumb_width","useful",b"useful","width",b"width"]) -> bool: ... + def ClearField(self, field_name: Literal["_400_height",b"_400_height","_400_url",b"_400_url","_400_width",b"_400_width","big_url",b"big_url","biz_type",b"biz_type","buffer",b"buffer","download_len",b"download_len","file_id",b"file_id","file_path",b"file_path","file_type",b"file_type","flag",b"flag","guid",b"guid","height",b"height","image_type",b"image_type","index",b"index","md5",b"md5","old_data",b"old_data","orig_url",b"orig_url","origin",b"origin","pb_reserve",b"pb_reserve","repeat_image",b"repeat_image","repeat_index",b"repeat_index","server_ip",b"server_ip","server_port",b"server_port","shortcut",b"shortcut","show_len",b"show_len","signature",b"signature","size",b"size","source",b"source","thumb_height",b"thumb_height","thumb_url",b"thumb_url","thumb_width",b"thumb_width","useful",b"useful","width",b"width"]) -> None: ... class DeliverGiftMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor GRAY_TIP_CONTENT_FIELD_NUMBER: int ANIMATION_PACKAGE_ID_FIELD_NUMBER: int ANIMATION_PACKAGE_URL_A_FIELD_NUMBER: int @@ -420,74 +412,72 @@ class DeliverGiftMsg(Message): RECEIVER_NAME_FIELD_NUMBER: int RECEIVER_PIC_FIELD_NUMBER: int STMESSAGE_GIFTURL_FIELD_NUMBER: int - gray_tip_content: bytes = ... - animation_package_id: int = ... - animation_package_url_a: bytes = ... - animation_package_url_i: bytes = ... - remind_brief: bytes = ... - gift_id: int = ... - gift_count: int = ... - animation_brief: bytes = ... - sender_uin: int = ... - receiver_uin: int = ... - stmessage_title: bytes = ... - stmessage_subtitle: bytes = ... - stmessage_message: bytes = ... - stmessage_giftpicid: int = ... - stmessage_comefrom: bytes = ... - stmessage_exflag: int = ... - to_all_gift_id: bytes = ... - comefrom_link: bytes = ... - pb_reserve: bytes = ... - receiver_name: bytes = ... - receiver_pic: bytes = ... - stmessage_gifturl: bytes = ... - - def __init__(self, - *, - gray_tip_content : Optional[bytes] = ..., - animation_package_id : Optional[int] = ..., - animation_package_url_a : Optional[bytes] = ..., - animation_package_url_i : Optional[bytes] = ..., - remind_brief : Optional[bytes] = ..., - gift_id : Optional[int] = ..., - gift_count : Optional[int] = ..., - animation_brief : Optional[bytes] = ..., - sender_uin : Optional[int] = ..., - receiver_uin : Optional[int] = ..., - stmessage_title : Optional[bytes] = ..., - stmessage_subtitle : Optional[bytes] = ..., - stmessage_message : Optional[bytes] = ..., - stmessage_giftpicid : Optional[int] = ..., - stmessage_comefrom : Optional[bytes] = ..., - stmessage_exflag : Optional[int] = ..., - to_all_gift_id : Optional[bytes] = ..., - comefrom_link : Optional[bytes] = ..., - pb_reserve : Optional[bytes] = ..., - receiver_name : Optional[bytes] = ..., - receiver_pic : Optional[bytes] = ..., - stmessage_gifturl : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"animation_brief",b"animation_brief",u"animation_package_id",b"animation_package_id",u"animation_package_url_a",b"animation_package_url_a",u"animation_package_url_i",b"animation_package_url_i",u"comefrom_link",b"comefrom_link",u"gift_count",b"gift_count",u"gift_id",b"gift_id",u"gray_tip_content",b"gray_tip_content",u"pb_reserve",b"pb_reserve",u"receiver_name",b"receiver_name",u"receiver_pic",b"receiver_pic",u"receiver_uin",b"receiver_uin",u"remind_brief",b"remind_brief",u"sender_uin",b"sender_uin",u"stmessage_comefrom",b"stmessage_comefrom",u"stmessage_exflag",b"stmessage_exflag",u"stmessage_giftpicid",b"stmessage_giftpicid",u"stmessage_gifturl",b"stmessage_gifturl",u"stmessage_message",b"stmessage_message",u"stmessage_subtitle",b"stmessage_subtitle",u"stmessage_title",b"stmessage_title",u"to_all_gift_id",b"to_all_gift_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"animation_brief",b"animation_brief",u"animation_package_id",b"animation_package_id",u"animation_package_url_a",b"animation_package_url_a",u"animation_package_url_i",b"animation_package_url_i",u"comefrom_link",b"comefrom_link",u"gift_count",b"gift_count",u"gift_id",b"gift_id",u"gray_tip_content",b"gray_tip_content",u"pb_reserve",b"pb_reserve",u"receiver_name",b"receiver_name",u"receiver_pic",b"receiver_pic",u"receiver_uin",b"receiver_uin",u"remind_brief",b"remind_brief",u"sender_uin",b"sender_uin",u"stmessage_comefrom",b"stmessage_comefrom",u"stmessage_exflag",b"stmessage_exflag",u"stmessage_giftpicid",b"stmessage_giftpicid",u"stmessage_gifturl",b"stmessage_gifturl",u"stmessage_message",b"stmessage_message",u"stmessage_subtitle",b"stmessage_subtitle",u"stmessage_title",b"stmessage_title",u"to_all_gift_id",b"to_all_gift_id"]) -> None: ... + gray_tip_content: bytes + animation_package_id: int + animation_package_url_a: bytes + animation_package_url_i: bytes + remind_brief: bytes + gift_id: int + gift_count: int + animation_brief: bytes + sender_uin: int + receiver_uin: int + stmessage_title: bytes + stmessage_subtitle: bytes + stmessage_message: bytes + stmessage_giftpicid: int + stmessage_comefrom: bytes + stmessage_exflag: int + to_all_gift_id: bytes + comefrom_link: bytes + pb_reserve: bytes + receiver_name: bytes + receiver_pic: bytes + stmessage_gifturl: bytes + def __init__(self, + *, + gray_tip_content: Optional[bytes] = ..., + animation_package_id: Optional[int] = ..., + animation_package_url_a: Optional[bytes] = ..., + animation_package_url_i: Optional[bytes] = ..., + remind_brief: Optional[bytes] = ..., + gift_id: Optional[int] = ..., + gift_count: Optional[int] = ..., + animation_brief: Optional[bytes] = ..., + sender_uin: Optional[int] = ..., + receiver_uin: Optional[int] = ..., + stmessage_title: Optional[bytes] = ..., + stmessage_subtitle: Optional[bytes] = ..., + stmessage_message: Optional[bytes] = ..., + stmessage_giftpicid: Optional[int] = ..., + stmessage_comefrom: Optional[bytes] = ..., + stmessage_exflag: Optional[int] = ..., + to_all_gift_id: Optional[bytes] = ..., + comefrom_link: Optional[bytes] = ..., + pb_reserve: Optional[bytes] = ..., + receiver_name: Optional[bytes] = ..., + receiver_pic: Optional[bytes] = ..., + stmessage_gifturl: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["animation_brief",b"animation_brief","animation_package_id",b"animation_package_id","animation_package_url_a",b"animation_package_url_a","animation_package_url_i",b"animation_package_url_i","comefrom_link",b"comefrom_link","gift_count",b"gift_count","gift_id",b"gift_id","gray_tip_content",b"gray_tip_content","pb_reserve",b"pb_reserve","receiver_name",b"receiver_name","receiver_pic",b"receiver_pic","receiver_uin",b"receiver_uin","remind_brief",b"remind_brief","sender_uin",b"sender_uin","stmessage_comefrom",b"stmessage_comefrom","stmessage_exflag",b"stmessage_exflag","stmessage_giftpicid",b"stmessage_giftpicid","stmessage_gifturl",b"stmessage_gifturl","stmessage_message",b"stmessage_message","stmessage_subtitle",b"stmessage_subtitle","stmessage_title",b"stmessage_title","to_all_gift_id",b"to_all_gift_id"]) -> bool: ... + def ClearField(self, field_name: Literal["animation_brief",b"animation_brief","animation_package_id",b"animation_package_id","animation_package_url_a",b"animation_package_url_a","animation_package_url_i",b"animation_package_url_i","comefrom_link",b"comefrom_link","gift_count",b"gift_count","gift_id",b"gift_id","gray_tip_content",b"gray_tip_content","pb_reserve",b"pb_reserve","receiver_name",b"receiver_name","receiver_pic",b"receiver_pic","receiver_uin",b"receiver_uin","remind_brief",b"remind_brief","sender_uin",b"sender_uin","stmessage_comefrom",b"stmessage_comefrom","stmessage_exflag",b"stmessage_exflag","stmessage_giftpicid",b"stmessage_giftpicid","stmessage_gifturl",b"stmessage_gifturl","stmessage_message",b"stmessage_message","stmessage_subtitle",b"stmessage_subtitle","stmessage_title",b"stmessage_title","to_all_gift_id",b"to_all_gift_id"]) -> None: ... class EIMInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor ROOT_ID_FIELD_NUMBER: int FLAG_FIELD_NUMBER: int - root_id: int = ... - flag: int = ... - + root_id: int + flag: int def __init__(self, *, - root_id : Optional[int] = ..., - flag : Optional[int] = ..., + root_id: Optional[int] = ..., + flag: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"flag",b"flag",u"root_id",b"root_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"flag",b"flag",u"root_id",b"root_id"]) -> None: ... + def HasField(self, field_name: Literal["flag",b"flag","root_id",b"root_id"]) -> bool: ... + def ClearField(self, field_name: Literal["flag",b"flag","root_id",b"root_id"]) -> None: ... class Elem(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TEXT_FIELD_NUMBER: int FACE_FIELD_NUMBER: int ONLINE_IMAGE_FIELD_NUMBER: int @@ -541,240 +531,186 @@ class Elem(Message): LIGHT_APP_FIELD_NUMBER: int EIM_INFO_FIELD_NUMBER: int COMMON_ELEM_FIELD_NUMBER: int - bankcode_ctrl_info: bytes = ... - @property def text(self) -> PlainText: ... - @property def face(self) -> Face: ... - @property def online_image(self) -> OnlineImage: ... - @property def not_online_image(self) -> NotOnlineImage: ... - @property def trans_elem_info(self) -> TransElem: ... - @property def market_face(self) -> MarketFace: ... - @property def elem_flags(self) -> ElemFlags: ... - @property def custom_face(self) -> CustomFace: ... - @property def elem_flags2(self) -> ElemFlags2: ... - @property def fun_face(self) -> FunFace: ... - @property def secret_file(self) -> SecretFileMsg: ... - @property def rich_msg(self) -> RichMsg: ... - @property def group_file(self) -> GroupFile: ... - @property def pub_group(self) -> PubGroup: ... - @property def market_trans(self) -> MarketTrans: ... - @property def extra_info(self) -> ExtraInfo: ... - @property def shake_window(self) -> ShakeWindow: ... - @property def pub_account(self) -> PubAccount: ... - @property def video_file(self) -> VideoFile: ... - @property def tips_info(self) -> TipsInfo: ... - @property def anon_group_msg(self) -> AnonymousGroupMsg: ... - @property def qq_live_old(self) -> QQLiveOld: ... - @property def life_online(self) -> LifeOnlineAccount: ... - @property def qqwallet_msg(self) -> QQWalletMsg: ... - @property def crm_elem(self) -> CrmElem: ... - @property def conference_tips_info(self) -> ConferenceTipsInfo: ... - @property def redbag_info(self) -> RedBagInfo: ... - @property def low_version_tips(self) -> LowVersionTips: ... - + bankcode_ctrl_info: bytes @property def near_by_msg(self) -> NearByMessageType: ... - @property def custom_elem(self) -> CustomElem: ... - @property def location_info(self) -> LocationInfo: ... - @property def pub_acc_info(self) -> PubAccInfo: ... - @property def small_emoji(self) -> SmallEmoji: ... - @property def fsj_msg_elem(self) -> FSJMessageElem: ... - @property def ark_app(self) -> ArkAppElem: ... - @property def general_flags(self) -> GeneralFlags: ... - @property def hc_flash_pic(self) -> CustomFace: ... - @property def deliver_gift_msg(self) -> DeliverGiftMsg: ... - @property def bitapp_msg(self) -> BitAppMsg: ... - @property def open_qq_data(self) -> OpenQQData: ... - @property def apollo_msg(self) -> ApolloActMsg: ... - @property def group_pub_acc_info(self) -> GroupPubAccountInfo: ... - @property def bless_msg(self) -> BlessingMessage: ... - @property def src_msg(self) -> SourceMsg: ... - @property def lola_msg(self) -> LolaMsg: ... - @property def group_business_msg(self) -> GroupBusinessMsg: ... - @property def workflow_notify(self) -> WorkflowNotifyMsg: ... - @property def pat_elem(self) -> PatsElem: ... - @property def group_post_elem(self) -> GroupPostElem: ... - @property def light_app(self) -> LightAppElem: ... - @property def eim_info(self) -> EIMInfo: ... - @property def common_elem(self) -> CommonElem: ... - def __init__(self, *, - text : Optional[PlainText] = ..., - face : Optional[Face] = ..., - online_image : Optional[OnlineImage] = ..., - not_online_image : Optional[NotOnlineImage] = ..., - trans_elem_info : Optional[TransElem] = ..., - market_face : Optional[MarketFace] = ..., - elem_flags : Optional[ElemFlags] = ..., - custom_face : Optional[CustomFace] = ..., - elem_flags2 : Optional[ElemFlags2] = ..., - fun_face : Optional[FunFace] = ..., - secret_file : Optional[SecretFileMsg] = ..., - rich_msg : Optional[RichMsg] = ..., - group_file : Optional[GroupFile] = ..., - pub_group : Optional[PubGroup] = ..., - market_trans : Optional[MarketTrans] = ..., - extra_info : Optional[ExtraInfo] = ..., - shake_window : Optional[ShakeWindow] = ..., - pub_account : Optional[PubAccount] = ..., - video_file : Optional[VideoFile] = ..., - tips_info : Optional[TipsInfo] = ..., - anon_group_msg : Optional[AnonymousGroupMsg] = ..., - qq_live_old : Optional[QQLiveOld] = ..., - life_online : Optional[LifeOnlineAccount] = ..., - qqwallet_msg : Optional[QQWalletMsg] = ..., - crm_elem : Optional[CrmElem] = ..., - conference_tips_info : Optional[ConferenceTipsInfo] = ..., - redbag_info : Optional[RedBagInfo] = ..., - low_version_tips : Optional[LowVersionTips] = ..., - bankcode_ctrl_info : Optional[bytes] = ..., - near_by_msg : Optional[NearByMessageType] = ..., - custom_elem : Optional[CustomElem] = ..., - location_info : Optional[LocationInfo] = ..., - pub_acc_info : Optional[PubAccInfo] = ..., - small_emoji : Optional[SmallEmoji] = ..., - fsj_msg_elem : Optional[FSJMessageElem] = ..., - ark_app : Optional[ArkAppElem] = ..., - general_flags : Optional[GeneralFlags] = ..., - hc_flash_pic : Optional[CustomFace] = ..., - deliver_gift_msg : Optional[DeliverGiftMsg] = ..., - bitapp_msg : Optional[BitAppMsg] = ..., - open_qq_data : Optional[OpenQQData] = ..., - apollo_msg : Optional[ApolloActMsg] = ..., - group_pub_acc_info : Optional[GroupPubAccountInfo] = ..., - bless_msg : Optional[BlessingMessage] = ..., - src_msg : Optional[SourceMsg] = ..., - lola_msg : Optional[LolaMsg] = ..., - group_business_msg : Optional[GroupBusinessMsg] = ..., - workflow_notify : Optional[WorkflowNotifyMsg] = ..., - pat_elem : Optional[PatsElem] = ..., - group_post_elem : Optional[GroupPostElem] = ..., - light_app : Optional[LightAppElem] = ..., - eim_info : Optional[EIMInfo] = ..., - common_elem : Optional[CommonElem] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"anon_group_msg",b"anon_group_msg",u"apollo_msg",b"apollo_msg",u"ark_app",b"ark_app",u"bankcode_ctrl_info",b"bankcode_ctrl_info",u"bitapp_msg",b"bitapp_msg",u"bless_msg",b"bless_msg",u"common_elem",b"common_elem",u"conference_tips_info",b"conference_tips_info",u"crm_elem",b"crm_elem",u"custom_elem",b"custom_elem",u"custom_face",b"custom_face",u"deliver_gift_msg",b"deliver_gift_msg",u"eim_info",b"eim_info",u"elem_flags",b"elem_flags",u"elem_flags2",b"elem_flags2",u"extra_info",b"extra_info",u"face",b"face",u"fsj_msg_elem",b"fsj_msg_elem",u"fun_face",b"fun_face",u"general_flags",b"general_flags",u"group_business_msg",b"group_business_msg",u"group_file",b"group_file",u"group_post_elem",b"group_post_elem",u"group_pub_acc_info",b"group_pub_acc_info",u"hc_flash_pic",b"hc_flash_pic",u"life_online",b"life_online",u"light_app",b"light_app",u"location_info",b"location_info",u"lola_msg",b"lola_msg",u"low_version_tips",b"low_version_tips",u"market_face",b"market_face",u"market_trans",b"market_trans",u"near_by_msg",b"near_by_msg",u"not_online_image",b"not_online_image",u"online_image",b"online_image",u"open_qq_data",b"open_qq_data",u"pat_elem",b"pat_elem",u"pub_acc_info",b"pub_acc_info",u"pub_account",b"pub_account",u"pub_group",b"pub_group",u"qq_live_old",b"qq_live_old",u"qqwallet_msg",b"qqwallet_msg",u"redbag_info",b"redbag_info",u"rich_msg",b"rich_msg",u"secret_file",b"secret_file",u"shake_window",b"shake_window",u"small_emoji",b"small_emoji",u"src_msg",b"src_msg",u"text",b"text",u"tips_info",b"tips_info",u"trans_elem_info",b"trans_elem_info",u"video_file",b"video_file",u"workflow_notify",b"workflow_notify"]) -> bool: ... - def ClearField(self, field_name: Literal[u"anon_group_msg",b"anon_group_msg",u"apollo_msg",b"apollo_msg",u"ark_app",b"ark_app",u"bankcode_ctrl_info",b"bankcode_ctrl_info",u"bitapp_msg",b"bitapp_msg",u"bless_msg",b"bless_msg",u"common_elem",b"common_elem",u"conference_tips_info",b"conference_tips_info",u"crm_elem",b"crm_elem",u"custom_elem",b"custom_elem",u"custom_face",b"custom_face",u"deliver_gift_msg",b"deliver_gift_msg",u"eim_info",b"eim_info",u"elem_flags",b"elem_flags",u"elem_flags2",b"elem_flags2",u"extra_info",b"extra_info",u"face",b"face",u"fsj_msg_elem",b"fsj_msg_elem",u"fun_face",b"fun_face",u"general_flags",b"general_flags",u"group_business_msg",b"group_business_msg",u"group_file",b"group_file",u"group_post_elem",b"group_post_elem",u"group_pub_acc_info",b"group_pub_acc_info",u"hc_flash_pic",b"hc_flash_pic",u"life_online",b"life_online",u"light_app",b"light_app",u"location_info",b"location_info",u"lola_msg",b"lola_msg",u"low_version_tips",b"low_version_tips",u"market_face",b"market_face",u"market_trans",b"market_trans",u"near_by_msg",b"near_by_msg",u"not_online_image",b"not_online_image",u"online_image",b"online_image",u"open_qq_data",b"open_qq_data",u"pat_elem",b"pat_elem",u"pub_acc_info",b"pub_acc_info",u"pub_account",b"pub_account",u"pub_group",b"pub_group",u"qq_live_old",b"qq_live_old",u"qqwallet_msg",b"qqwallet_msg",u"redbag_info",b"redbag_info",u"rich_msg",b"rich_msg",u"secret_file",b"secret_file",u"shake_window",b"shake_window",u"small_emoji",b"small_emoji",u"src_msg",b"src_msg",u"text",b"text",u"tips_info",b"tips_info",u"trans_elem_info",b"trans_elem_info",u"video_file",b"video_file",u"workflow_notify",b"workflow_notify"]) -> None: ... + text: Optional[PlainText] = ..., + face: Optional[Face] = ..., + online_image: Optional[OnlineImage] = ..., + not_online_image: Optional[NotOnlineImage] = ..., + trans_elem_info: Optional[TransElem] = ..., + market_face: Optional[MarketFace] = ..., + elem_flags: Optional[ElemFlags] = ..., + custom_face: Optional[CustomFace] = ..., + elem_flags2: Optional[ElemFlags2] = ..., + fun_face: Optional[FunFace] = ..., + secret_file: Optional[SecretFileMsg] = ..., + rich_msg: Optional[RichMsg] = ..., + group_file: Optional[GroupFile] = ..., + pub_group: Optional[PubGroup] = ..., + market_trans: Optional[MarketTrans] = ..., + extra_info: Optional[ExtraInfo] = ..., + shake_window: Optional[ShakeWindow] = ..., + pub_account: Optional[PubAccount] = ..., + video_file: Optional[VideoFile] = ..., + tips_info: Optional[TipsInfo] = ..., + anon_group_msg: Optional[AnonymousGroupMsg] = ..., + qq_live_old: Optional[QQLiveOld] = ..., + life_online: Optional[LifeOnlineAccount] = ..., + qqwallet_msg: Optional[QQWalletMsg] = ..., + crm_elem: Optional[CrmElem] = ..., + conference_tips_info: Optional[ConferenceTipsInfo] = ..., + redbag_info: Optional[RedBagInfo] = ..., + low_version_tips: Optional[LowVersionTips] = ..., + bankcode_ctrl_info: Optional[bytes] = ..., + near_by_msg: Optional[NearByMessageType] = ..., + custom_elem: Optional[CustomElem] = ..., + location_info: Optional[LocationInfo] = ..., + pub_acc_info: Optional[PubAccInfo] = ..., + small_emoji: Optional[SmallEmoji] = ..., + fsj_msg_elem: Optional[FSJMessageElem] = ..., + ark_app: Optional[ArkAppElem] = ..., + general_flags: Optional[GeneralFlags] = ..., + hc_flash_pic: Optional[CustomFace] = ..., + deliver_gift_msg: Optional[DeliverGiftMsg] = ..., + bitapp_msg: Optional[BitAppMsg] = ..., + open_qq_data: Optional[OpenQQData] = ..., + apollo_msg: Optional[ApolloActMsg] = ..., + group_pub_acc_info: Optional[GroupPubAccountInfo] = ..., + bless_msg: Optional[BlessingMessage] = ..., + src_msg: Optional[SourceMsg] = ..., + lola_msg: Optional[LolaMsg] = ..., + group_business_msg: Optional[GroupBusinessMsg] = ..., + workflow_notify: Optional[WorkflowNotifyMsg] = ..., + pat_elem: Optional[PatsElem] = ..., + group_post_elem: Optional[GroupPostElem] = ..., + light_app: Optional[LightAppElem] = ..., + eim_info: Optional[EIMInfo] = ..., + common_elem: Optional[CommonElem] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["anon_group_msg",b"anon_group_msg","apollo_msg",b"apollo_msg","ark_app",b"ark_app","bankcode_ctrl_info",b"bankcode_ctrl_info","bitapp_msg",b"bitapp_msg","bless_msg",b"bless_msg","common_elem",b"common_elem","conference_tips_info",b"conference_tips_info","crm_elem",b"crm_elem","custom_elem",b"custom_elem","custom_face",b"custom_face","deliver_gift_msg",b"deliver_gift_msg","eim_info",b"eim_info","elem_flags",b"elem_flags","elem_flags2",b"elem_flags2","extra_info",b"extra_info","face",b"face","fsj_msg_elem",b"fsj_msg_elem","fun_face",b"fun_face","general_flags",b"general_flags","group_business_msg",b"group_business_msg","group_file",b"group_file","group_post_elem",b"group_post_elem","group_pub_acc_info",b"group_pub_acc_info","hc_flash_pic",b"hc_flash_pic","life_online",b"life_online","light_app",b"light_app","location_info",b"location_info","lola_msg",b"lola_msg","low_version_tips",b"low_version_tips","market_face",b"market_face","market_trans",b"market_trans","near_by_msg",b"near_by_msg","not_online_image",b"not_online_image","online_image",b"online_image","open_qq_data",b"open_qq_data","pat_elem",b"pat_elem","pub_acc_info",b"pub_acc_info","pub_account",b"pub_account","pub_group",b"pub_group","qq_live_old",b"qq_live_old","qqwallet_msg",b"qqwallet_msg","redbag_info",b"redbag_info","rich_msg",b"rich_msg","secret_file",b"secret_file","shake_window",b"shake_window","small_emoji",b"small_emoji","src_msg",b"src_msg","text",b"text","tips_info",b"tips_info","trans_elem_info",b"trans_elem_info","video_file",b"video_file","workflow_notify",b"workflow_notify"]) -> bool: ... + def ClearField(self, field_name: Literal["anon_group_msg",b"anon_group_msg","apollo_msg",b"apollo_msg","ark_app",b"ark_app","bankcode_ctrl_info",b"bankcode_ctrl_info","bitapp_msg",b"bitapp_msg","bless_msg",b"bless_msg","common_elem",b"common_elem","conference_tips_info",b"conference_tips_info","crm_elem",b"crm_elem","custom_elem",b"custom_elem","custom_face",b"custom_face","deliver_gift_msg",b"deliver_gift_msg","eim_info",b"eim_info","elem_flags",b"elem_flags","elem_flags2",b"elem_flags2","extra_info",b"extra_info","face",b"face","fsj_msg_elem",b"fsj_msg_elem","fun_face",b"fun_face","general_flags",b"general_flags","group_business_msg",b"group_business_msg","group_file",b"group_file","group_post_elem",b"group_post_elem","group_pub_acc_info",b"group_pub_acc_info","hc_flash_pic",b"hc_flash_pic","life_online",b"life_online","light_app",b"light_app","location_info",b"location_info","lola_msg",b"lola_msg","low_version_tips",b"low_version_tips","market_face",b"market_face","market_trans",b"market_trans","near_by_msg",b"near_by_msg","not_online_image",b"not_online_image","online_image",b"online_image","open_qq_data",b"open_qq_data","pat_elem",b"pat_elem","pub_acc_info",b"pub_acc_info","pub_account",b"pub_account","pub_group",b"pub_group","qq_live_old",b"qq_live_old","qqwallet_msg",b"qqwallet_msg","redbag_info",b"redbag_info","rich_msg",b"rich_msg","secret_file",b"secret_file","shake_window",b"shake_window","small_emoji",b"small_emoji","src_msg",b"src_msg","text",b"text","tips_info",b"tips_info","trans_elem_info",b"trans_elem_info","video_file",b"video_file","workflow_notify",b"workflow_notify"]) -> None: ... class ElemFlags(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FLAGS1_FIELD_NUMBER: int BUSINESS_DATA_FIELD_NUMBER: int - flags1: bytes = ... - business_data: bytes = ... - + flags1: bytes + business_data: bytes def __init__(self, *, - flags1 : Optional[bytes] = ..., - business_data : Optional[bytes] = ..., + flags1: Optional[bytes] = ..., + business_data: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"business_data",b"business_data",u"flags1",b"flags1"]) -> bool: ... - def ClearField(self, field_name: Literal[u"business_data",b"business_data",u"flags1",b"flags1"]) -> None: ... + def HasField(self, field_name: Literal["business_data",b"business_data","flags1",b"flags1"]) -> bool: ... + def ClearField(self, field_name: Literal["business_data",b"business_data","flags1",b"flags1"]) -> None: ... class ElemFlags2(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor COLOR_TEXT_ID_FIELD_NUMBER: int MSG_ID_FIELD_NUMBER: int WHISPER_SESSION_ID_FIELD_NUMBER: int @@ -789,64 +725,59 @@ class ElemFlags2(Message): CUSTOM_FONT_FIELD_NUMBER: int PC_SUPPORT_DEF_FIELD_NUMBER: int CRM_FLAGS_FIELD_NUMBER: int - color_text_id: int = ... - msg_id: int = ... - whisper_session_id: int = ... - ptt_change_bit: int = ... - vip_status: int = ... - compatible_id: int = ... - msg_rpt_cnt: int = ... - longtitude: int = ... - latitude: int = ... - custom_font: int = ... - crm_flags: int = ... - + color_text_id: int + msg_id: int + whisper_session_id: int + ptt_change_bit: int + vip_status: int + compatible_id: int @property def insts(self) -> RepeatedCompositeFieldContainer[Inst]: ... - + msg_rpt_cnt: int @property def src_inst(self) -> Inst: ... - + longtitude: int + latitude: int + custom_font: int @property def pc_support_def(self) -> PcSupportDef: ... - - def __init__(self, - *, - color_text_id : Optional[int] = ..., - msg_id : Optional[int] = ..., - whisper_session_id : Optional[int] = ..., - ptt_change_bit : Optional[int] = ..., - vip_status : Optional[int] = ..., - compatible_id : Optional[int] = ..., - insts : Optional[Iterable[Inst]] = ..., - msg_rpt_cnt : Optional[int] = ..., - src_inst : Optional[Inst] = ..., - longtitude : Optional[int] = ..., - latitude : Optional[int] = ..., - custom_font : Optional[int] = ..., - pc_support_def : Optional[PcSupportDef] = ..., - crm_flags : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"color_text_id",b"color_text_id",u"compatible_id",b"compatible_id",u"crm_flags",b"crm_flags",u"custom_font",b"custom_font",u"latitude",b"latitude",u"longtitude",b"longtitude",u"msg_id",b"msg_id",u"msg_rpt_cnt",b"msg_rpt_cnt",u"pc_support_def",b"pc_support_def",u"ptt_change_bit",b"ptt_change_bit",u"src_inst",b"src_inst",u"vip_status",b"vip_status",u"whisper_session_id",b"whisper_session_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"color_text_id",b"color_text_id",u"compatible_id",b"compatible_id",u"crm_flags",b"crm_flags",u"custom_font",b"custom_font",u"insts",b"insts",u"latitude",b"latitude",u"longtitude",b"longtitude",u"msg_id",b"msg_id",u"msg_rpt_cnt",b"msg_rpt_cnt",u"pc_support_def",b"pc_support_def",u"ptt_change_bit",b"ptt_change_bit",u"src_inst",b"src_inst",u"vip_status",b"vip_status",u"whisper_session_id",b"whisper_session_id"]) -> None: ... + crm_flags: int + def __init__(self, + *, + color_text_id: Optional[int] = ..., + msg_id: Optional[int] = ..., + whisper_session_id: Optional[int] = ..., + ptt_change_bit: Optional[int] = ..., + vip_status: Optional[int] = ..., + compatible_id: Optional[int] = ..., + insts: Optional[Iterable[Inst]] = ..., + msg_rpt_cnt: Optional[int] = ..., + src_inst: Optional[Inst] = ..., + longtitude: Optional[int] = ..., + latitude: Optional[int] = ..., + custom_font: Optional[int] = ..., + pc_support_def: Optional[PcSupportDef] = ..., + crm_flags: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["color_text_id",b"color_text_id","compatible_id",b"compatible_id","crm_flags",b"crm_flags","custom_font",b"custom_font","latitude",b"latitude","longtitude",b"longtitude","msg_id",b"msg_id","msg_rpt_cnt",b"msg_rpt_cnt","pc_support_def",b"pc_support_def","ptt_change_bit",b"ptt_change_bit","src_inst",b"src_inst","vip_status",b"vip_status","whisper_session_id",b"whisper_session_id"]) -> bool: ... + def ClearField(self, field_name: Literal["color_text_id",b"color_text_id","compatible_id",b"compatible_id","crm_flags",b"crm_flags","custom_font",b"custom_font","insts",b"insts","latitude",b"latitude","longtitude",b"longtitude","msg_id",b"msg_id","msg_rpt_cnt",b"msg_rpt_cnt","pc_support_def",b"pc_support_def","ptt_change_bit",b"ptt_change_bit","src_inst",b"src_inst","vip_status",b"vip_status","whisper_session_id",b"whisper_session_id"]) -> None: ... class Inst(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor APP_ID_FIELD_NUMBER: int INST_ID_FIELD_NUMBER: int - app_id: int = ... - inst_id: int = ... - + app_id: int + inst_id: int def __init__(self, *, - app_id : Optional[int] = ..., - inst_id : Optional[int] = ..., + app_id: Optional[int] = ..., + inst_id: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"app_id",b"app_id",u"inst_id",b"inst_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"app_id",b"app_id",u"inst_id",b"inst_id"]) -> None: ... + def HasField(self, field_name: Literal["app_id",b"app_id","inst_id",b"inst_id"]) -> bool: ... + def ClearField(self, field_name: Literal["app_id",b"app_id","inst_id",b"inst_id"]) -> None: ... class ExtraInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor NICK_FIELD_NUMBER: int GROUP_CARD_FIELD_NUMBER: int LEVEL_FIELD_NUMBER: int @@ -859,118 +790,111 @@ class ExtraInfo(Message): MSG_STATE_FLAG_FIELD_NUMBER: int APNS_SOUND_TYPE_FIELD_NUMBER: int NEW_GROUP_FLAG_FIELD_NUMBER: int - nick: bytes = ... - group_card: bytes = ... - level: int = ... - flags: int = ... - group_mask: int = ... - msg_tail_id: int = ... - sender_title: bytes = ... - apns_tips: bytes = ... - uin: int = ... - msg_state_flag: int = ... - apns_sound_type: int = ... - new_group_flag: int = ... - - def __init__(self, - *, - nick : Optional[bytes] = ..., - group_card : Optional[bytes] = ..., - level : Optional[int] = ..., - flags : Optional[int] = ..., - group_mask : Optional[int] = ..., - msg_tail_id : Optional[int] = ..., - sender_title : Optional[bytes] = ..., - apns_tips : Optional[bytes] = ..., - uin : Optional[int] = ..., - msg_state_flag : Optional[int] = ..., - apns_sound_type : Optional[int] = ..., - new_group_flag : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"apns_sound_type",b"apns_sound_type",u"apns_tips",b"apns_tips",u"flags",b"flags",u"group_card",b"group_card",u"group_mask",b"group_mask",u"level",b"level",u"msg_state_flag",b"msg_state_flag",u"msg_tail_id",b"msg_tail_id",u"new_group_flag",b"new_group_flag",u"nick",b"nick",u"sender_title",b"sender_title",u"uin",b"uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"apns_sound_type",b"apns_sound_type",u"apns_tips",b"apns_tips",u"flags",b"flags",u"group_card",b"group_card",u"group_mask",b"group_mask",u"level",b"level",u"msg_state_flag",b"msg_state_flag",u"msg_tail_id",b"msg_tail_id",u"new_group_flag",b"new_group_flag",u"nick",b"nick",u"sender_title",b"sender_title",u"uin",b"uin"]) -> None: ... + nick: bytes + group_card: bytes + level: int + flags: int + group_mask: int + msg_tail_id: int + sender_title: bytes + apns_tips: bytes + uin: int + msg_state_flag: int + apns_sound_type: int + new_group_flag: int + def __init__(self, + *, + nick: Optional[bytes] = ..., + group_card: Optional[bytes] = ..., + level: Optional[int] = ..., + flags: Optional[int] = ..., + group_mask: Optional[int] = ..., + msg_tail_id: Optional[int] = ..., + sender_title: Optional[bytes] = ..., + apns_tips: Optional[bytes] = ..., + uin: Optional[int] = ..., + msg_state_flag: Optional[int] = ..., + apns_sound_type: Optional[int] = ..., + new_group_flag: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["apns_sound_type",b"apns_sound_type","apns_tips",b"apns_tips","flags",b"flags","group_card",b"group_card","group_mask",b"group_mask","level",b"level","msg_state_flag",b"msg_state_flag","msg_tail_id",b"msg_tail_id","new_group_flag",b"new_group_flag","nick",b"nick","sender_title",b"sender_title","uin",b"uin"]) -> bool: ... + def ClearField(self, field_name: Literal["apns_sound_type",b"apns_sound_type","apns_tips",b"apns_tips","flags",b"flags","group_card",b"group_card","group_mask",b"group_mask","level",b"level","msg_state_flag",b"msg_state_flag","msg_tail_id",b"msg_tail_id","new_group_flag",b"new_group_flag","nick",b"nick","sender_title",b"sender_title","uin",b"uin"]) -> None: ... class FSJMessageElem(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor MSG_TYPE_FIELD_NUMBER: int - msg_type: int = ... - + msg_type: int def __init__(self, *, - msg_type : Optional[int] = ..., + msg_type: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"msg_type",b"msg_type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"msg_type",b"msg_type"]) -> None: ... + def HasField(self, field_name: Literal["msg_type",b"msg_type"]) -> bool: ... + def ClearField(self, field_name: Literal["msg_type",b"msg_type"]) -> None: ... class Face(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor INDEX_FIELD_NUMBER: int OLD_FIELD_NUMBER: int BUF_FIELD_NUMBER: int - index: int = ... - old: bytes = ... - buf: bytes = ... - + index: int + old: bytes + buf: bytes def __init__(self, *, - index : Optional[int] = ..., - old : Optional[bytes] = ..., - buf : Optional[bytes] = ..., + index: Optional[int] = ..., + old: Optional[bytes] = ..., + buf: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"buf",b"buf",u"index",b"index",u"old",b"old"]) -> bool: ... - def ClearField(self, field_name: Literal[u"buf",b"buf",u"index",b"index",u"old",b"old"]) -> None: ... + def HasField(self, field_name: Literal["buf",b"buf","index",b"index","old",b"old"]) -> bool: ... + def ClearField(self, field_name: Literal["buf",b"buf","index",b"index","old",b"old"]) -> None: ... class FunFace(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TURNTABLE_FIELD_NUMBER: int BOMB_FIELD_NUMBER: int - @property def turntable(self) -> Turntable: ... - @property def bomb(self) -> Bomb: ... - def __init__(self, *, - turntable : Optional[Turntable] = ..., - bomb : Optional[Bomb] = ..., + turntable: Optional[Turntable] = ..., + bomb: Optional[Bomb] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"bomb",b"bomb",u"turntable",b"turntable"]) -> bool: ... - def ClearField(self, field_name: Literal[u"bomb",b"bomb",u"turntable",b"turntable"]) -> None: ... + def HasField(self, field_name: Literal["bomb",b"bomb","turntable",b"turntable"]) -> bool: ... + def ClearField(self, field_name: Literal["bomb",b"bomb","turntable",b"turntable"]) -> None: ... class Bomb(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor BURST_FIELD_NUMBER: int - burst: bool = ... - + burst: bool def __init__(self, *, - burst : Optional[bool] = ..., + burst: Optional[bool] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"burst",b"burst"]) -> bool: ... - def ClearField(self, field_name: Literal[u"burst",b"burst"]) -> None: ... + def HasField(self, field_name: Literal["burst",b"burst"]) -> bool: ... + def ClearField(self, field_name: Literal["burst",b"burst"]) -> None: ... class Turntable(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor UIN_LIST_FIELD_NUMBER: int HIT_UIN_FIELD_NUMBER: int HIT_UIN_NICK_FIELD_NUMBER: int - uin_list: RepeatedScalarFieldContainer[int] = ... - hit_uin: int = ... - hit_uin_nick: Text = ... - + @property + def uin_list(self) -> RepeatedScalarFieldContainer[int]: ... + hit_uin: int + hit_uin_nick: Text def __init__(self, *, - uin_list : Optional[Iterable[int]] = ..., - hit_uin : Optional[int] = ..., - hit_uin_nick : Optional[Text] = ..., + uin_list: Optional[Iterable[int]] = ..., + hit_uin: Optional[int] = ..., + hit_uin_nick: Optional[Text] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"hit_uin",b"hit_uin",u"hit_uin_nick",b"hit_uin_nick"]) -> bool: ... - def ClearField(self, field_name: Literal[u"hit_uin",b"hit_uin",u"hit_uin_nick",b"hit_uin_nick",u"uin_list",b"uin_list"]) -> None: ... + def HasField(self, field_name: Literal["hit_uin",b"hit_uin","hit_uin_nick",b"hit_uin_nick"]) -> bool: ... + def ClearField(self, field_name: Literal["hit_uin",b"hit_uin","hit_uin_nick",b"hit_uin_nick","uin_list",b"uin_list"]) -> None: ... class GeneralFlags(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor BUBBLE_DIY_TEXT_ID_FIELD_NUMBER: int GROUP_FLAG_NEW_FIELD_NUMBER: int UIN_FIELD_NUMBER: int @@ -990,53 +914,52 @@ class GeneralFlags(Message): PENDANT_ID_FIELD_NUMBER: int RP_INDEX_FIELD_NUMBER: int PB_RESERVE_FIELD_NUMBER: int - bubble_diy_text_id: int = ... - group_flag_new: int = ... - uin: int = ... - rp_id: bytes = ... - prp_fold: int = ... - long_text_flag: int = ... - long_text_resid: bytes = ... - group_type: int = ... - to_uin_flag: int = ... - glamour_level: int = ... - member_level: int = ... - group_rank_seq: int = ... - olympic_torch: int = ... - babyq_guide_msg_cookie: bytes = ... - uin32_expert_flag: int = ... - bubble_sub_id: int = ... - pendant_id: int = ... - rp_index: bytes = ... - pb_reserve: bytes = ... - - def __init__(self, - *, - bubble_diy_text_id : Optional[int] = ..., - group_flag_new : Optional[int] = ..., - uin : Optional[int] = ..., - rp_id : Optional[bytes] = ..., - prp_fold : Optional[int] = ..., - long_text_flag : Optional[int] = ..., - long_text_resid : Optional[bytes] = ..., - group_type : Optional[int] = ..., - to_uin_flag : Optional[int] = ..., - glamour_level : Optional[int] = ..., - member_level : Optional[int] = ..., - group_rank_seq : Optional[int] = ..., - olympic_torch : Optional[int] = ..., - babyq_guide_msg_cookie : Optional[bytes] = ..., - uin32_expert_flag : Optional[int] = ..., - bubble_sub_id : Optional[int] = ..., - pendant_id : Optional[int] = ..., - rp_index : Optional[bytes] = ..., - pb_reserve : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"babyq_guide_msg_cookie",b"babyq_guide_msg_cookie",u"bubble_diy_text_id",b"bubble_diy_text_id",u"bubble_sub_id",b"bubble_sub_id",u"glamour_level",b"glamour_level",u"group_flag_new",b"group_flag_new",u"group_rank_seq",b"group_rank_seq",u"group_type",b"group_type",u"long_text_flag",b"long_text_flag",u"long_text_resid",b"long_text_resid",u"member_level",b"member_level",u"olympic_torch",b"olympic_torch",u"pb_reserve",b"pb_reserve",u"pendant_id",b"pendant_id",u"prp_fold",b"prp_fold",u"rp_id",b"rp_id",u"rp_index",b"rp_index",u"to_uin_flag",b"to_uin_flag",u"uin",b"uin",u"uin32_expert_flag",b"uin32_expert_flag"]) -> bool: ... - def ClearField(self, field_name: Literal[u"babyq_guide_msg_cookie",b"babyq_guide_msg_cookie",u"bubble_diy_text_id",b"bubble_diy_text_id",u"bubble_sub_id",b"bubble_sub_id",u"glamour_level",b"glamour_level",u"group_flag_new",b"group_flag_new",u"group_rank_seq",b"group_rank_seq",u"group_type",b"group_type",u"long_text_flag",b"long_text_flag",u"long_text_resid",b"long_text_resid",u"member_level",b"member_level",u"olympic_torch",b"olympic_torch",u"pb_reserve",b"pb_reserve",u"pendant_id",b"pendant_id",u"prp_fold",b"prp_fold",u"rp_id",b"rp_id",u"rp_index",b"rp_index",u"to_uin_flag",b"to_uin_flag",u"uin",b"uin",u"uin32_expert_flag",b"uin32_expert_flag"]) -> None: ... + bubble_diy_text_id: int + group_flag_new: int + uin: int + rp_id: bytes + prp_fold: int + long_text_flag: int + long_text_resid: bytes + group_type: int + to_uin_flag: int + glamour_level: int + member_level: int + group_rank_seq: int + olympic_torch: int + babyq_guide_msg_cookie: bytes + uin32_expert_flag: int + bubble_sub_id: int + pendant_id: int + rp_index: bytes + pb_reserve: bytes + def __init__(self, + *, + bubble_diy_text_id: Optional[int] = ..., + group_flag_new: Optional[int] = ..., + uin: Optional[int] = ..., + rp_id: Optional[bytes] = ..., + prp_fold: Optional[int] = ..., + long_text_flag: Optional[int] = ..., + long_text_resid: Optional[bytes] = ..., + group_type: Optional[int] = ..., + to_uin_flag: Optional[int] = ..., + glamour_level: Optional[int] = ..., + member_level: Optional[int] = ..., + group_rank_seq: Optional[int] = ..., + olympic_torch: Optional[int] = ..., + babyq_guide_msg_cookie: Optional[bytes] = ..., + uin32_expert_flag: Optional[int] = ..., + bubble_sub_id: Optional[int] = ..., + pendant_id: Optional[int] = ..., + rp_index: Optional[bytes] = ..., + pb_reserve: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["babyq_guide_msg_cookie",b"babyq_guide_msg_cookie","bubble_diy_text_id",b"bubble_diy_text_id","bubble_sub_id",b"bubble_sub_id","glamour_level",b"glamour_level","group_flag_new",b"group_flag_new","group_rank_seq",b"group_rank_seq","group_type",b"group_type","long_text_flag",b"long_text_flag","long_text_resid",b"long_text_resid","member_level",b"member_level","olympic_torch",b"olympic_torch","pb_reserve",b"pb_reserve","pendant_id",b"pendant_id","prp_fold",b"prp_fold","rp_id",b"rp_id","rp_index",b"rp_index","to_uin_flag",b"to_uin_flag","uin",b"uin","uin32_expert_flag",b"uin32_expert_flag"]) -> bool: ... + def ClearField(self, field_name: Literal["babyq_guide_msg_cookie",b"babyq_guide_msg_cookie","bubble_diy_text_id",b"bubble_diy_text_id","bubble_sub_id",b"bubble_sub_id","glamour_level",b"glamour_level","group_flag_new",b"group_flag_new","group_rank_seq",b"group_rank_seq","group_type",b"group_type","long_text_flag",b"long_text_flag","long_text_resid",b"long_text_resid","member_level",b"member_level","olympic_torch",b"olympic_torch","pb_reserve",b"pb_reserve","pendant_id",b"pendant_id","prp_fold",b"prp_fold","rp_id",b"rp_id","rp_index",b"rp_index","to_uin_flag",b"to_uin_flag","uin",b"uin","uin32_expert_flag",b"uin32_expert_flag"]) -> None: ... class GroupBusinessMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FLAGS_FIELD_NUMBER: int HEAD_URL_FIELD_NUMBER: int HEAD_CLK_URL_FIELD_NUMBER: int @@ -1045,31 +968,30 @@ class GroupBusinessMsg(Message): RANK_FIELD_NUMBER: int RANK_COLOR_FIELD_NUMBER: int RANK_BGCOLOR_FIELD_NUMBER: int - flags: int = ... - head_url: bytes = ... - head_clk_url: bytes = ... - nick: bytes = ... - nick_color: bytes = ... - rank: bytes = ... - rank_color: bytes = ... - rank_bgcolor: bytes = ... - - def __init__(self, - *, - flags : Optional[int] = ..., - head_url : Optional[bytes] = ..., - head_clk_url : Optional[bytes] = ..., - nick : Optional[bytes] = ..., - nick_color : Optional[bytes] = ..., - rank : Optional[bytes] = ..., - rank_color : Optional[bytes] = ..., - rank_bgcolor : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"flags",b"flags",u"head_clk_url",b"head_clk_url",u"head_url",b"head_url",u"nick",b"nick",u"nick_color",b"nick_color",u"rank",b"rank",u"rank_bgcolor",b"rank_bgcolor",u"rank_color",b"rank_color"]) -> bool: ... - def ClearField(self, field_name: Literal[u"flags",b"flags",u"head_clk_url",b"head_clk_url",u"head_url",b"head_url",u"nick",b"nick",u"nick_color",b"nick_color",u"rank",b"rank",u"rank_bgcolor",b"rank_bgcolor",u"rank_color",b"rank_color"]) -> None: ... + flags: int + head_url: bytes + head_clk_url: bytes + nick: bytes + nick_color: bytes + rank: bytes + rank_color: bytes + rank_bgcolor: bytes + def __init__(self, + *, + flags: Optional[int] = ..., + head_url: Optional[bytes] = ..., + head_clk_url: Optional[bytes] = ..., + nick: Optional[bytes] = ..., + nick_color: Optional[bytes] = ..., + rank: Optional[bytes] = ..., + rank_color: Optional[bytes] = ..., + rank_bgcolor: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["flags",b"flags","head_clk_url",b"head_clk_url","head_url",b"head_url","nick",b"nick","nick_color",b"nick_color","rank",b"rank","rank_bgcolor",b"rank_bgcolor","rank_color",b"rank_color"]) -> bool: ... + def ClearField(self, field_name: Literal["flags",b"flags","head_clk_url",b"head_clk_url","head_url",b"head_url","nick",b"nick","nick_color",b"nick_color","rank",b"rank","rank_bgcolor",b"rank_bgcolor","rank_color",b"rank_color"]) -> None: ... class GroupFile(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FILENAME_FIELD_NUMBER: int FILE_SIZE_FIELD_NUMBER: int FILE_ID_FIELD_NUMBER: int @@ -1080,62 +1002,59 @@ class GroupFile(Message): BATCH_ITEM_ID_FIELD_NUMBER: int FEED_MSG_TIME_FIELD_NUMBER: int PB_RESERVE_FIELD_NUMBER: int - filename: bytes = ... - file_size: int = ... - file_id: bytes = ... - batch_id: bytes = ... - file_key: bytes = ... - mark: bytes = ... - sequence: int = ... - batch_item_id: bytes = ... - feed_msg_time: int = ... - pb_reserve: bytes = ... - - def __init__(self, - *, - filename : Optional[bytes] = ..., - file_size : Optional[int] = ..., - file_id : Optional[bytes] = ..., - batch_id : Optional[bytes] = ..., - file_key : Optional[bytes] = ..., - mark : Optional[bytes] = ..., - sequence : Optional[int] = ..., - batch_item_id : Optional[bytes] = ..., - feed_msg_time : Optional[int] = ..., - pb_reserve : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"batch_id",b"batch_id",u"batch_item_id",b"batch_item_id",u"feed_msg_time",b"feed_msg_time",u"file_id",b"file_id",u"file_key",b"file_key",u"file_size",b"file_size",u"filename",b"filename",u"mark",b"mark",u"pb_reserve",b"pb_reserve",u"sequence",b"sequence"]) -> bool: ... - def ClearField(self, field_name: Literal[u"batch_id",b"batch_id",u"batch_item_id",b"batch_item_id",u"feed_msg_time",b"feed_msg_time",u"file_id",b"file_id",u"file_key",b"file_key",u"file_size",b"file_size",u"filename",b"filename",u"mark",b"mark",u"pb_reserve",b"pb_reserve",u"sequence",b"sequence"]) -> None: ... + filename: bytes + file_size: int + file_id: bytes + batch_id: bytes + file_key: bytes + mark: bytes + sequence: int + batch_item_id: bytes + feed_msg_time: int + pb_reserve: bytes + def __init__(self, + *, + filename: Optional[bytes] = ..., + file_size: Optional[int] = ..., + file_id: Optional[bytes] = ..., + batch_id: Optional[bytes] = ..., + file_key: Optional[bytes] = ..., + mark: Optional[bytes] = ..., + sequence: Optional[int] = ..., + batch_item_id: Optional[bytes] = ..., + feed_msg_time: Optional[int] = ..., + pb_reserve: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["batch_id",b"batch_id","batch_item_id",b"batch_item_id","feed_msg_time",b"feed_msg_time","file_id",b"file_id","file_key",b"file_key","file_size",b"file_size","filename",b"filename","mark",b"mark","pb_reserve",b"pb_reserve","sequence",b"sequence"]) -> bool: ... + def ClearField(self, field_name: Literal["batch_id",b"batch_id","batch_item_id",b"batch_item_id","feed_msg_time",b"feed_msg_time","file_id",b"file_id","file_key",b"file_key","file_size",b"file_size","filename",b"filename","mark",b"mark","pb_reserve",b"pb_reserve","sequence",b"sequence"]) -> None: ... class GroupPostElem(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TRANS_TYPE_FIELD_NUMBER: int TRANS_MSG_FIELD_NUMBER: int - trans_type: int = ... - trans_msg: bytes = ... - + trans_type: int + trans_msg: bytes def __init__(self, *, - trans_type : Optional[int] = ..., - trans_msg : Optional[bytes] = ..., + trans_type: Optional[int] = ..., + trans_msg: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"trans_msg",b"trans_msg",u"trans_type",b"trans_type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"trans_msg",b"trans_msg",u"trans_type",b"trans_type"]) -> None: ... + def HasField(self, field_name: Literal["trans_msg",b"trans_msg","trans_type",b"trans_type"]) -> bool: ... + def ClearField(self, field_name: Literal["trans_msg",b"trans_msg","trans_type",b"trans_type"]) -> None: ... class GroupPubAccountInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor PUB_ACCOUNT_FIELD_NUMBER: int - pub_account: int = ... - + pub_account: int def __init__(self, *, - pub_account : Optional[int] = ..., + pub_account: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"pub_account",b"pub_account"]) -> bool: ... - def ClearField(self, field_name: Literal[u"pub_account",b"pub_account"]) -> None: ... + def HasField(self, field_name: Literal["pub_account",b"pub_account"]) -> bool: ... + def ClearField(self, field_name: Literal["pub_account",b"pub_account"]) -> None: ... class LifeOnlineAccount(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor UNIQUE_ID_FIELD_NUMBER: int OP_FIELD_NUMBER: int SHOW_TIME_FIELD_NUMBER: int @@ -1145,93 +1064,89 @@ class LifeOnlineAccount(Message): GDT_IMP_DATA_FIELD_NUMBER: int GDT_CLI_DATA_FIELD_NUMBER: int VIEW_ID_FIELD_NUMBER: int - unique_id: int = ... - op: int = ... - show_time: int = ... - report: int = ... - ack: int = ... - bitmap: int = ... - gdt_imp_data: bytes = ... - gdt_cli_data: bytes = ... - view_id: bytes = ... - - def __init__(self, - *, - unique_id : Optional[int] = ..., - op : Optional[int] = ..., - show_time : Optional[int] = ..., - report : Optional[int] = ..., - ack : Optional[int] = ..., - bitmap : Optional[int] = ..., - gdt_imp_data : Optional[bytes] = ..., - gdt_cli_data : Optional[bytes] = ..., - view_id : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"ack",b"ack",u"bitmap",b"bitmap",u"gdt_cli_data",b"gdt_cli_data",u"gdt_imp_data",b"gdt_imp_data",u"op",b"op",u"report",b"report",u"show_time",b"show_time",u"unique_id",b"unique_id",u"view_id",b"view_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"ack",b"ack",u"bitmap",b"bitmap",u"gdt_cli_data",b"gdt_cli_data",u"gdt_imp_data",b"gdt_imp_data",u"op",b"op",u"report",b"report",u"show_time",b"show_time",u"unique_id",b"unique_id",u"view_id",b"view_id"]) -> None: ... + unique_id: int + op: int + show_time: int + report: int + ack: int + bitmap: int + gdt_imp_data: bytes + gdt_cli_data: bytes + view_id: bytes + def __init__(self, + *, + unique_id: Optional[int] = ..., + op: Optional[int] = ..., + show_time: Optional[int] = ..., + report: Optional[int] = ..., + ack: Optional[int] = ..., + bitmap: Optional[int] = ..., + gdt_imp_data: Optional[bytes] = ..., + gdt_cli_data: Optional[bytes] = ..., + view_id: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["ack",b"ack","bitmap",b"bitmap","gdt_cli_data",b"gdt_cli_data","gdt_imp_data",b"gdt_imp_data","op",b"op","report",b"report","show_time",b"show_time","unique_id",b"unique_id","view_id",b"view_id"]) -> bool: ... + def ClearField(self, field_name: Literal["ack",b"ack","bitmap",b"bitmap","gdt_cli_data",b"gdt_cli_data","gdt_imp_data",b"gdt_imp_data","op",b"op","report",b"report","show_time",b"show_time","unique_id",b"unique_id","view_id",b"view_id"]) -> None: ... class LightAppElem(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor DATA_FIELD_NUMBER: int MSG_RESID_FIELD_NUMBER: int - data: bytes = ... - msg_resid: bytes = ... - + data: bytes + msg_resid: bytes def __init__(self, *, - data : Optional[bytes] = ..., - msg_resid : Optional[bytes] = ..., + data: Optional[bytes] = ..., + msg_resid: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"data",b"data",u"msg_resid",b"msg_resid"]) -> bool: ... - def ClearField(self, field_name: Literal[u"data",b"data",u"msg_resid",b"msg_resid"]) -> None: ... + def HasField(self, field_name: Literal["data",b"data","msg_resid",b"msg_resid"]) -> bool: ... + def ClearField(self, field_name: Literal["data",b"data","msg_resid",b"msg_resid"]) -> None: ... class LolaMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor MSG_RESID_FIELD_NUMBER: int ENCODE_CONTENT_FIELD_NUMBER: int LONG_MSG_URL_FIELD_NUMBER: int DOWNLOAD_KEY_FIELD_NUMBER: int - msg_resid: bytes = ... - encode_content: bytes = ... - long_msg_url: bytes = ... - download_key: bytes = ... - + msg_resid: bytes + encode_content: bytes + long_msg_url: bytes + download_key: bytes def __init__(self, *, - msg_resid : Optional[bytes] = ..., - encode_content : Optional[bytes] = ..., - long_msg_url : Optional[bytes] = ..., - download_key : Optional[bytes] = ..., + msg_resid: Optional[bytes] = ..., + encode_content: Optional[bytes] = ..., + long_msg_url: Optional[bytes] = ..., + download_key: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"download_key",b"download_key",u"encode_content",b"encode_content",u"long_msg_url",b"long_msg_url",u"msg_resid",b"msg_resid"]) -> bool: ... - def ClearField(self, field_name: Literal[u"download_key",b"download_key",u"encode_content",b"encode_content",u"long_msg_url",b"long_msg_url",u"msg_resid",b"msg_resid"]) -> None: ... + def HasField(self, field_name: Literal["download_key",b"download_key","encode_content",b"encode_content","long_msg_url",b"long_msg_url","msg_resid",b"msg_resid"]) -> bool: ... + def ClearField(self, field_name: Literal["download_key",b"download_key","encode_content",b"encode_content","long_msg_url",b"long_msg_url","msg_resid",b"msg_resid"]) -> None: ... class LowVersionTips(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor BUSINESS_ID_FIELD_NUMBER: int SESSION_TYPE_FIELD_NUMBER: int SESSION_UIN_FIELD_NUMBER: int SENDER_UIN_FIELD_NUMBER: int TEXT_FIELD_NUMBER: int - business_id: int = ... - session_type: int = ... - session_uin: int = ... - sender_uin: int = ... - text: Text = ... - + business_id: int + session_type: int + session_uin: int + sender_uin: int + text: Text def __init__(self, *, - business_id : Optional[int] = ..., - session_type : Optional[int] = ..., - session_uin : Optional[int] = ..., - sender_uin : Optional[int] = ..., - text : Optional[Text] = ..., + business_id: Optional[int] = ..., + session_type: Optional[int] = ..., + session_uin: Optional[int] = ..., + sender_uin: Optional[int] = ..., + text: Optional[Text] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"business_id",b"business_id",u"sender_uin",b"sender_uin",u"session_type",b"session_type",u"session_uin",b"session_uin",u"text",b"text"]) -> bool: ... - def ClearField(self, field_name: Literal[u"business_id",b"business_id",u"sender_uin",b"sender_uin",u"session_type",b"session_type",u"session_uin",b"session_uin",u"text",b"text"]) -> None: ... + def HasField(self, field_name: Literal["business_id",b"business_id","sender_uin",b"sender_uin","session_type",b"session_type","session_uin",b"session_uin","text",b"text"]) -> bool: ... + def ClearField(self, field_name: Literal["business_id",b"business_id","sender_uin",b"sender_uin","session_type",b"session_type","session_uin",b"session_uin","text",b"text"]) -> None: ... class MarketFace(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FACE_NAME_FIELD_NUMBER: int ITEM_TYPE_FIELD_NUMBER: int FACE_INFO_FIELD_NUMBER: int @@ -1245,117 +1160,110 @@ class MarketFace(Message): IMAGE_HEIGHT_FIELD_NUMBER: int MOBILEPARAM_FIELD_NUMBER: int PB_RESERVE_FIELD_NUMBER: int - face_name: bytes = ... - item_type: int = ... - face_info: int = ... - face_id: bytes = ... - tab_id: int = ... - sub_type: int = ... - key: bytes = ... - param: bytes = ... - media_type: int = ... - image_width: int = ... - image_height: int = ... - mobileparam: bytes = ... - pb_reserve: bytes = ... - - def __init__(self, - *, - face_name : Optional[bytes] = ..., - item_type : Optional[int] = ..., - face_info : Optional[int] = ..., - face_id : Optional[bytes] = ..., - tab_id : Optional[int] = ..., - sub_type : Optional[int] = ..., - key : Optional[bytes] = ..., - param : Optional[bytes] = ..., - media_type : Optional[int] = ..., - image_width : Optional[int] = ..., - image_height : Optional[int] = ..., - mobileparam : Optional[bytes] = ..., - pb_reserve : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"face_id",b"face_id",u"face_info",b"face_info",u"face_name",b"face_name",u"image_height",b"image_height",u"image_width",b"image_width",u"item_type",b"item_type",u"key",b"key",u"media_type",b"media_type",u"mobileparam",b"mobileparam",u"param",b"param",u"pb_reserve",b"pb_reserve",u"sub_type",b"sub_type",u"tab_id",b"tab_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"face_id",b"face_id",u"face_info",b"face_info",u"face_name",b"face_name",u"image_height",b"image_height",u"image_width",b"image_width",u"item_type",b"item_type",u"key",b"key",u"media_type",b"media_type",u"mobileparam",b"mobileparam",u"param",b"param",u"pb_reserve",b"pb_reserve",u"sub_type",b"sub_type",u"tab_id",b"tab_id"]) -> None: ... + face_name: bytes + item_type: int + face_info: int + face_id: bytes + tab_id: int + sub_type: int + key: bytes + param: bytes + media_type: int + image_width: int + image_height: int + mobileparam: bytes + pb_reserve: bytes + def __init__(self, + *, + face_name: Optional[bytes] = ..., + item_type: Optional[int] = ..., + face_info: Optional[int] = ..., + face_id: Optional[bytes] = ..., + tab_id: Optional[int] = ..., + sub_type: Optional[int] = ..., + key: Optional[bytes] = ..., + param: Optional[bytes] = ..., + media_type: Optional[int] = ..., + image_width: Optional[int] = ..., + image_height: Optional[int] = ..., + mobileparam: Optional[bytes] = ..., + pb_reserve: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["face_id",b"face_id","face_info",b"face_info","face_name",b"face_name","image_height",b"image_height","image_width",b"image_width","item_type",b"item_type","key",b"key","media_type",b"media_type","mobileparam",b"mobileparam","param",b"param","pb_reserve",b"pb_reserve","sub_type",b"sub_type","tab_id",b"tab_id"]) -> bool: ... + def ClearField(self, field_name: Literal["face_id",b"face_id","face_info",b"face_info","face_name",b"face_name","image_height",b"image_height","image_width",b"image_width","item_type",b"item_type","key",b"key","media_type",b"media_type","mobileparam",b"mobileparam","param",b"param","pb_reserve",b"pb_reserve","sub_type",b"sub_type","tab_id",b"tab_id"]) -> None: ... class MarketTrans(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FLAG_FIELD_NUMBER: int XML_FIELD_NUMBER: int MSG_RESID_FIELD_NUMBER: int ABILITY_FIELD_NUMBER: int MIN_ABILITY_FIELD_NUMBER: int - flag: int = ... - xml: bytes = ... - msg_resid: bytes = ... - ability: int = ... - min_ability: int = ... - + flag: int + xml: bytes + msg_resid: bytes + ability: int + min_ability: int def __init__(self, *, - flag : Optional[int] = ..., - xml : Optional[bytes] = ..., - msg_resid : Optional[bytes] = ..., - ability : Optional[int] = ..., - min_ability : Optional[int] = ..., + flag: Optional[int] = ..., + xml: Optional[bytes] = ..., + msg_resid: Optional[bytes] = ..., + ability: Optional[int] = ..., + min_ability: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"ability",b"ability",u"flag",b"flag",u"min_ability",b"min_ability",u"msg_resid",b"msg_resid",u"xml",b"xml"]) -> bool: ... - def ClearField(self, field_name: Literal[u"ability",b"ability",u"flag",b"flag",u"min_ability",b"min_ability",u"msg_resid",b"msg_resid",u"xml",b"xml"]) -> None: ... + def HasField(self, field_name: Literal["ability",b"ability","flag",b"flag","min_ability",b"min_ability","msg_resid",b"msg_resid","xml",b"xml"]) -> bool: ... + def ClearField(self, field_name: Literal["ability",b"ability","flag",b"flag","min_ability",b"min_ability","msg_resid",b"msg_resid","xml",b"xml"]) -> None: ... class MsgBody(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RICH_TEXT_FIELD_NUMBER: int CONTENT_FIELD_NUMBER: int ENCRYPT_CONTENT_FIELD_NUMBER: int - content: bytes = ... - encrypt_content: bytes = ... - @property def rich_text(self) -> RichText: ... - + content: bytes + encrypt_content: bytes def __init__(self, *, - rich_text : Optional[RichText] = ..., - content : Optional[bytes] = ..., - encrypt_content : Optional[bytes] = ..., + rich_text: Optional[RichText] = ..., + content: Optional[bytes] = ..., + encrypt_content: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"content",b"content",u"encrypt_content",b"encrypt_content",u"rich_text",b"rich_text"]) -> bool: ... - def ClearField(self, field_name: Literal[u"content",b"content",u"encrypt_content",b"encrypt_content",u"rich_text",b"rich_text"]) -> None: ... + def HasField(self, field_name: Literal["content",b"content","encrypt_content",b"encrypt_content","rich_text",b"rich_text"]) -> bool: ... + def ClearField(self, field_name: Literal["content",b"content","encrypt_content",b"encrypt_content","rich_text",b"rich_text"]) -> None: ... class MsgBody_subtype4(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor NOT_ONLINE_FILE_FIELD_NUMBER: int MSG_TIME_FIELD_NUMBER: int - msg_time: int = ... - @property def not_online_file(self) -> NotOnlineFile: ... - + msg_time: int def __init__(self, *, - not_online_file : Optional[NotOnlineFile] = ..., - msg_time : Optional[int] = ..., + not_online_file: Optional[NotOnlineFile] = ..., + msg_time: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"msg_time",b"msg_time",u"not_online_file",b"not_online_file"]) -> bool: ... - def ClearField(self, field_name: Literal[u"msg_time",b"msg_time",u"not_online_file",b"not_online_file"]) -> None: ... + def HasField(self, field_name: Literal["msg_time",b"msg_time","not_online_file",b"not_online_file"]) -> bool: ... + def ClearField(self, field_name: Literal["msg_time",b"msg_time","not_online_file",b"not_online_file"]) -> None: ... class NearByMessageType(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TYPE_FIELD_NUMBER: int IDENTIFY_TYPE_FIELD_NUMBER: int - type: int = ... - identify_type: int = ... - + type: int + identify_type: int def __init__(self, *, - type : Optional[int] = ..., - identify_type : Optional[int] = ..., + type: Optional[int] = ..., + identify_type: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"identify_type",b"identify_type",u"type",b"type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"identify_type",b"identify_type",u"type",b"type"]) -> None: ... + def HasField(self, field_name: Literal["identify_type",b"identify_type","type",b"type"]) -> bool: ... + def ClearField(self, field_name: Literal["identify_type",b"identify_type","type",b"type"]) -> None: ... class NotOnlineFile(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FILE_TYPE_FIELD_NUMBER: int SIG_FIELD_NUMBER: int FILE_UUID_FIELD_NUMBER: int @@ -1376,55 +1284,55 @@ class NotOnlineFile(Message): EXPIRE_TIME_FIELD_NUMBER: int PB_RESERVE_FIELD_NUMBER: int FILEIDCRC_MEDIA_FIELD_NUMBER: int - file_type: int = ... - sig: bytes = ... - file_uuid: bytes = ... - file_md5: bytes = ... - file_name: bytes = ... - file_size: int = ... - note: bytes = ... - reserved: int = ... - subcmd: int = ... - micro_cloud: int = ... - file_urls: RepeatedScalarFieldContainer[bytes] = ... - download_flag: int = ... - danger_evel: int = ... - life_time: int = ... - upload_time: int = ... - abs_file_type: int = ... - client_type: int = ... - expire_time: int = ... - pb_reserve: bytes = ... - fileidcrc_media: Text = ... - - def __init__(self, - *, - file_type : Optional[int] = ..., - sig : Optional[bytes] = ..., - file_uuid : Optional[bytes] = ..., - file_md5 : Optional[bytes] = ..., - file_name : Optional[bytes] = ..., - file_size : Optional[int] = ..., - note : Optional[bytes] = ..., - reserved : Optional[int] = ..., - subcmd : Optional[int] = ..., - micro_cloud : Optional[int] = ..., - file_urls : Optional[Iterable[bytes]] = ..., - download_flag : Optional[int] = ..., - danger_evel : Optional[int] = ..., - life_time : Optional[int] = ..., - upload_time : Optional[int] = ..., - abs_file_type : Optional[int] = ..., - client_type : Optional[int] = ..., - expire_time : Optional[int] = ..., - pb_reserve : Optional[bytes] = ..., - fileidcrc_media : Optional[Text] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"abs_file_type",b"abs_file_type",u"client_type",b"client_type",u"danger_evel",b"danger_evel",u"download_flag",b"download_flag",u"expire_time",b"expire_time",u"file_md5",b"file_md5",u"file_name",b"file_name",u"file_size",b"file_size",u"file_type",b"file_type",u"file_uuid",b"file_uuid",u"fileidcrc_media",b"fileidcrc_media",u"life_time",b"life_time",u"micro_cloud",b"micro_cloud",u"note",b"note",u"pb_reserve",b"pb_reserve",u"reserved",b"reserved",u"sig",b"sig",u"subcmd",b"subcmd",u"upload_time",b"upload_time"]) -> bool: ... - def ClearField(self, field_name: Literal[u"abs_file_type",b"abs_file_type",u"client_type",b"client_type",u"danger_evel",b"danger_evel",u"download_flag",b"download_flag",u"expire_time",b"expire_time",u"file_md5",b"file_md5",u"file_name",b"file_name",u"file_size",b"file_size",u"file_type",b"file_type",u"file_urls",b"file_urls",u"file_uuid",b"file_uuid",u"fileidcrc_media",b"fileidcrc_media",u"life_time",b"life_time",u"micro_cloud",b"micro_cloud",u"note",b"note",u"pb_reserve",b"pb_reserve",u"reserved",b"reserved",u"sig",b"sig",u"subcmd",b"subcmd",u"upload_time",b"upload_time"]) -> None: ... + file_type: int + sig: bytes + file_uuid: bytes + file_md5: bytes + file_name: bytes + file_size: int + note: bytes + reserved: int + subcmd: int + micro_cloud: int + @property + def file_urls(self) -> RepeatedScalarFieldContainer[bytes]: ... + download_flag: int + danger_evel: int + life_time: int + upload_time: int + abs_file_type: int + client_type: int + expire_time: int + pb_reserve: bytes + fileidcrc_media: Text + def __init__(self, + *, + file_type: Optional[int] = ..., + sig: Optional[bytes] = ..., + file_uuid: Optional[bytes] = ..., + file_md5: Optional[bytes] = ..., + file_name: Optional[bytes] = ..., + file_size: Optional[int] = ..., + note: Optional[bytes] = ..., + reserved: Optional[int] = ..., + subcmd: Optional[int] = ..., + micro_cloud: Optional[int] = ..., + file_urls: Optional[Iterable[bytes]] = ..., + download_flag: Optional[int] = ..., + danger_evel: Optional[int] = ..., + life_time: Optional[int] = ..., + upload_time: Optional[int] = ..., + abs_file_type: Optional[int] = ..., + client_type: Optional[int] = ..., + expire_time: Optional[int] = ..., + pb_reserve: Optional[bytes] = ..., + fileidcrc_media: Optional[Text] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["abs_file_type",b"abs_file_type","client_type",b"client_type","danger_evel",b"danger_evel","download_flag",b"download_flag","expire_time",b"expire_time","file_md5",b"file_md5","file_name",b"file_name","file_size",b"file_size","file_type",b"file_type","file_uuid",b"file_uuid","fileidcrc_media",b"fileidcrc_media","life_time",b"life_time","micro_cloud",b"micro_cloud","note",b"note","pb_reserve",b"pb_reserve","reserved",b"reserved","sig",b"sig","subcmd",b"subcmd","upload_time",b"upload_time"]) -> bool: ... + def ClearField(self, field_name: Literal["abs_file_type",b"abs_file_type","client_type",b"client_type","danger_evel",b"danger_evel","download_flag",b"download_flag","expire_time",b"expire_time","file_md5",b"file_md5","file_name",b"file_name","file_size",b"file_size","file_type",b"file_type","file_urls",b"file_urls","file_uuid",b"file_uuid","fileidcrc_media",b"fileidcrc_media","life_time",b"life_time","micro_cloud",b"micro_cloud","note",b"note","pb_reserve",b"pb_reserve","reserved",b"reserved","sig",b"sig","subcmd",b"subcmd","upload_time",b"upload_time"]) -> None: ... class NotOnlineImage(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FILE_PATH_FIELD_NUMBER: int FILE_LEN_FIELD_NUMBER: int DOWNLOAD_PATH_FIELD_NUMBER: int @@ -1454,145 +1362,142 @@ class NotOnlineImage(Message): _400_WIDTH_FIELD_NUMBER: int _400_HEIGHT_FIELD_NUMBER: int PB_RESERVE_FIELD_NUMBER: int - file_path: bytes = ... - file_len: int = ... - download_path: bytes = ... - old_ver_send_file: bytes = ... - img_type: int = ... - previews_image: bytes = ... - pic_md5: bytes = ... - pic_height: int = ... - pic_width: int = ... - res_id: bytes = ... - flag: bytes = ... - thumb_url: Text = ... - original: int = ... - big_url: Text = ... - orig_url: Text = ... - biz_type: int = ... - result: int = ... - index: int = ... - op_face_buf: bytes = ... - old_pic_md5: bool = ... - thumb_width: int = ... - thumb_height: int = ... - file_id: int = ... - show_len: int = ... - download_len: int = ... - _400_url: Text = ... - _400_width: int = ... - _400_height: int = ... - pb_reserve: bytes = ... - - def __init__(self, - *, - file_path : Optional[bytes] = ..., - file_len : Optional[int] = ..., - download_path : Optional[bytes] = ..., - old_ver_send_file : Optional[bytes] = ..., - img_type : Optional[int] = ..., - previews_image : Optional[bytes] = ..., - pic_md5 : Optional[bytes] = ..., - pic_height : Optional[int] = ..., - pic_width : Optional[int] = ..., - res_id : Optional[bytes] = ..., - flag : Optional[bytes] = ..., - thumb_url : Optional[Text] = ..., - original : Optional[int] = ..., - big_url : Optional[Text] = ..., - orig_url : Optional[Text] = ..., - biz_type : Optional[int] = ..., - result : Optional[int] = ..., - index : Optional[int] = ..., - op_face_buf : Optional[bytes] = ..., - old_pic_md5 : Optional[bool] = ..., - thumb_width : Optional[int] = ..., - thumb_height : Optional[int] = ..., - file_id : Optional[int] = ..., - show_len : Optional[int] = ..., - download_len : Optional[int] = ..., - _400_url : Optional[Text] = ..., - _400_width : Optional[int] = ..., - _400_height : Optional[int] = ..., - pb_reserve : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"_400_height",b"_400_height",u"_400_url",b"_400_url",u"_400_width",b"_400_width",u"big_url",b"big_url",u"biz_type",b"biz_type",u"download_len",b"download_len",u"download_path",b"download_path",u"file_id",b"file_id",u"file_len",b"file_len",u"file_path",b"file_path",u"flag",b"flag",u"img_type",b"img_type",u"index",b"index",u"old_pic_md5",b"old_pic_md5",u"old_ver_send_file",b"old_ver_send_file",u"op_face_buf",b"op_face_buf",u"orig_url",b"orig_url",u"original",b"original",u"pb_reserve",b"pb_reserve",u"pic_height",b"pic_height",u"pic_md5",b"pic_md5",u"pic_width",b"pic_width",u"previews_image",b"previews_image",u"res_id",b"res_id",u"result",b"result",u"show_len",b"show_len",u"thumb_height",b"thumb_height",u"thumb_url",b"thumb_url",u"thumb_width",b"thumb_width"]) -> bool: ... - def ClearField(self, field_name: Literal[u"_400_height",b"_400_height",u"_400_url",b"_400_url",u"_400_width",b"_400_width",u"big_url",b"big_url",u"biz_type",b"biz_type",u"download_len",b"download_len",u"download_path",b"download_path",u"file_id",b"file_id",u"file_len",b"file_len",u"file_path",b"file_path",u"flag",b"flag",u"img_type",b"img_type",u"index",b"index",u"old_pic_md5",b"old_pic_md5",u"old_ver_send_file",b"old_ver_send_file",u"op_face_buf",b"op_face_buf",u"orig_url",b"orig_url",u"original",b"original",u"pb_reserve",b"pb_reserve",u"pic_height",b"pic_height",u"pic_md5",b"pic_md5",u"pic_width",b"pic_width",u"previews_image",b"previews_image",u"res_id",b"res_id",u"result",b"result",u"show_len",b"show_len",u"thumb_height",b"thumb_height",u"thumb_url",b"thumb_url",u"thumb_width",b"thumb_width"]) -> None: ... + file_path: bytes + file_len: int + download_path: bytes + old_ver_send_file: bytes + img_type: int + previews_image: bytes + pic_md5: bytes + pic_height: int + pic_width: int + res_id: bytes + flag: bytes + thumb_url: Text + original: int + big_url: Text + orig_url: Text + biz_type: int + result: int + index: int + op_face_buf: bytes + old_pic_md5: bool + thumb_width: int + thumb_height: int + file_id: int + show_len: int + download_len: int + _400_url: Text + _400_width: int + _400_height: int + pb_reserve: bytes + def __init__(self, + *, + file_path: Optional[bytes] = ..., + file_len: Optional[int] = ..., + download_path: Optional[bytes] = ..., + old_ver_send_file: Optional[bytes] = ..., + img_type: Optional[int] = ..., + previews_image: Optional[bytes] = ..., + pic_md5: Optional[bytes] = ..., + pic_height: Optional[int] = ..., + pic_width: Optional[int] = ..., + res_id: Optional[bytes] = ..., + flag: Optional[bytes] = ..., + thumb_url: Optional[Text] = ..., + original: Optional[int] = ..., + big_url: Optional[Text] = ..., + orig_url: Optional[Text] = ..., + biz_type: Optional[int] = ..., + result: Optional[int] = ..., + index: Optional[int] = ..., + op_face_buf: Optional[bytes] = ..., + old_pic_md5: Optional[bool] = ..., + thumb_width: Optional[int] = ..., + thumb_height: Optional[int] = ..., + file_id: Optional[int] = ..., + show_len: Optional[int] = ..., + download_len: Optional[int] = ..., + _400_url: Optional[Text] = ..., + _400_width: Optional[int] = ..., + _400_height: Optional[int] = ..., + pb_reserve: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["_400_height",b"_400_height","_400_url",b"_400_url","_400_width",b"_400_width","big_url",b"big_url","biz_type",b"biz_type","download_len",b"download_len","download_path",b"download_path","file_id",b"file_id","file_len",b"file_len","file_path",b"file_path","flag",b"flag","img_type",b"img_type","index",b"index","old_pic_md5",b"old_pic_md5","old_ver_send_file",b"old_ver_send_file","op_face_buf",b"op_face_buf","orig_url",b"orig_url","original",b"original","pb_reserve",b"pb_reserve","pic_height",b"pic_height","pic_md5",b"pic_md5","pic_width",b"pic_width","previews_image",b"previews_image","res_id",b"res_id","result",b"result","show_len",b"show_len","thumb_height",b"thumb_height","thumb_url",b"thumb_url","thumb_width",b"thumb_width"]) -> bool: ... + def ClearField(self, field_name: Literal["_400_height",b"_400_height","_400_url",b"_400_url","_400_width",b"_400_width","big_url",b"big_url","biz_type",b"biz_type","download_len",b"download_len","download_path",b"download_path","file_id",b"file_id","file_len",b"file_len","file_path",b"file_path","flag",b"flag","img_type",b"img_type","index",b"index","old_pic_md5",b"old_pic_md5","old_ver_send_file",b"old_ver_send_file","op_face_buf",b"op_face_buf","orig_url",b"orig_url","original",b"original","pb_reserve",b"pb_reserve","pic_height",b"pic_height","pic_md5",b"pic_md5","pic_width",b"pic_width","previews_image",b"previews_image","res_id",b"res_id","result",b"result","show_len",b"show_len","thumb_height",b"thumb_height","thumb_url",b"thumb_url","thumb_width",b"thumb_width"]) -> None: ... class OnlineImage(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor GUID_FIELD_NUMBER: int FILE_PATH_FIELD_NUMBER: int OLD_VER_SEND_FILE_FIELD_NUMBER: int - guid: bytes = ... - file_path: bytes = ... - old_ver_send_file: bytes = ... - + guid: bytes + file_path: bytes + old_ver_send_file: bytes def __init__(self, *, - guid : Optional[bytes] = ..., - file_path : Optional[bytes] = ..., - old_ver_send_file : Optional[bytes] = ..., + guid: Optional[bytes] = ..., + file_path: Optional[bytes] = ..., + old_ver_send_file: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"file_path",b"file_path",u"guid",b"guid",u"old_ver_send_file",b"old_ver_send_file"]) -> bool: ... - def ClearField(self, field_name: Literal[u"file_path",b"file_path",u"guid",b"guid",u"old_ver_send_file",b"old_ver_send_file"]) -> None: ... + def HasField(self, field_name: Literal["file_path",b"file_path","guid",b"guid","old_ver_send_file",b"old_ver_send_file"]) -> bool: ... + def ClearField(self, field_name: Literal["file_path",b"file_path","guid",b"guid","old_ver_send_file",b"old_ver_send_file"]) -> None: ... class OpenQQData(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor CAR_QQ_DATA_FIELD_NUMBER: int - car_qq_data: bytes = ... - + car_qq_data: bytes def __init__(self, *, - car_qq_data : Optional[bytes] = ..., + car_qq_data: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"car_qq_data",b"car_qq_data"]) -> bool: ... - def ClearField(self, field_name: Literal[u"car_qq_data",b"car_qq_data"]) -> None: ... + def HasField(self, field_name: Literal["car_qq_data",b"car_qq_data"]) -> bool: ... + def ClearField(self, field_name: Literal["car_qq_data",b"car_qq_data"]) -> None: ... class PatsElem(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor PAT_TYPE_FIELD_NUMBER: int PAT_COUNT_FIELD_NUMBER: int - pat_type: int = ... - pat_count: int = ... - + pat_type: int + pat_count: int def __init__(self, *, - pat_type : Optional[int] = ..., - pat_count : Optional[int] = ..., + pat_type: Optional[int] = ..., + pat_count: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"pat_count",b"pat_count",u"pat_type",b"pat_type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"pat_count",b"pat_count",u"pat_type",b"pat_type"]) -> None: ... + def HasField(self, field_name: Literal["pat_count",b"pat_count","pat_type",b"pat_type"]) -> bool: ... + def ClearField(self, field_name: Literal["pat_count",b"pat_count","pat_type",b"pat_type"]) -> None: ... class PcSupportDef(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor PC_PTL_BEGIN_FIELD_NUMBER: int PC_PTL_END_FIELD_NUMBER: int MAC_PTL_BEGIN_FIELD_NUMBER: int MAC_PTL_END_FIELD_NUMBER: int PTLS_SUPPORT_FIELD_NUMBER: int PTLS_NOT_SUPPORT_FIELD_NUMBER: int - pc_ptl_begin: int = ... - pc_ptl_end: int = ... - mac_ptl_begin: int = ... - mac_ptl_end: int = ... - ptls_support: RepeatedScalarFieldContainer[int] = ... - ptls_not_support: RepeatedScalarFieldContainer[int] = ... - + pc_ptl_begin: int + pc_ptl_end: int + mac_ptl_begin: int + mac_ptl_end: int + @property + def ptls_support(self) -> RepeatedScalarFieldContainer[int]: ... + @property + def ptls_not_support(self) -> RepeatedScalarFieldContainer[int]: ... def __init__(self, *, - pc_ptl_begin : Optional[int] = ..., - pc_ptl_end : Optional[int] = ..., - mac_ptl_begin : Optional[int] = ..., - mac_ptl_end : Optional[int] = ..., - ptls_support : Optional[Iterable[int]] = ..., - ptls_not_support : Optional[Iterable[int]] = ..., + pc_ptl_begin: Optional[int] = ..., + pc_ptl_end: Optional[int] = ..., + mac_ptl_begin: Optional[int] = ..., + mac_ptl_end: Optional[int] = ..., + ptls_support: Optional[Iterable[int]] = ..., + ptls_not_support: Optional[Iterable[int]] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"mac_ptl_begin",b"mac_ptl_begin",u"mac_ptl_end",b"mac_ptl_end",u"pc_ptl_begin",b"pc_ptl_begin",u"pc_ptl_end",b"pc_ptl_end"]) -> bool: ... - def ClearField(self, field_name: Literal[u"mac_ptl_begin",b"mac_ptl_begin",u"mac_ptl_end",b"mac_ptl_end",u"pc_ptl_begin",b"pc_ptl_begin",u"pc_ptl_end",b"pc_ptl_end",u"ptls_not_support",b"ptls_not_support",u"ptls_support",b"ptls_support"]) -> None: ... + def HasField(self, field_name: Literal["mac_ptl_begin",b"mac_ptl_begin","mac_ptl_end",b"mac_ptl_end","pc_ptl_begin",b"pc_ptl_begin","pc_ptl_end",b"pc_ptl_end"]) -> bool: ... + def ClearField(self, field_name: Literal["mac_ptl_begin",b"mac_ptl_begin","mac_ptl_end",b"mac_ptl_end","pc_ptl_begin",b"pc_ptl_begin","pc_ptl_end",b"pc_ptl_end","ptls_not_support",b"ptls_not_support","ptls_support",b"ptls_support"]) -> None: ... class Ptt(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FILE_TYPE_FIELD_NUMBER: int SRC_UIN_FIELD_NUMBER: int FILE_UUID_FIELD_NUMBER: int @@ -1617,141 +1522,137 @@ class Ptt(Message): PB_RESERVE_FIELD_NUMBER: int PTT_URLS_FIELD_NUMBER: int DOWNLOAD_FLAG_FIELD_NUMBER: int - file_type: int = ... - src_uin: int = ... - file_uuid: bytes = ... - file_md5: bytes = ... - file_name: bytes = ... - file_size: int = ... - reserve: bytes = ... - file_id: int = ... - server_ip: int = ... - server_port: int = ... - valid: bool = ... - signature: bytes = ... - shortcut: bytes = ... - file_key: bytes = ... - magic_ptt_index: int = ... - voice_switch: int = ... - ptt_url: bytes = ... - group_file_key: bytes = ... - time: int = ... - down_para: bytes = ... - format: int = ... - pb_reserve: bytes = ... - ptt_urls: RepeatedScalarFieldContainer[bytes] = ... - download_flag: int = ... - - def __init__(self, - *, - file_type : Optional[int] = ..., - src_uin : Optional[int] = ..., - file_uuid : Optional[bytes] = ..., - file_md5 : Optional[bytes] = ..., - file_name : Optional[bytes] = ..., - file_size : Optional[int] = ..., - reserve : Optional[bytes] = ..., - file_id : Optional[int] = ..., - server_ip : Optional[int] = ..., - server_port : Optional[int] = ..., - valid : Optional[bool] = ..., - signature : Optional[bytes] = ..., - shortcut : Optional[bytes] = ..., - file_key : Optional[bytes] = ..., - magic_ptt_index : Optional[int] = ..., - voice_switch : Optional[int] = ..., - ptt_url : Optional[bytes] = ..., - group_file_key : Optional[bytes] = ..., - time : Optional[int] = ..., - down_para : Optional[bytes] = ..., - format : Optional[int] = ..., - pb_reserve : Optional[bytes] = ..., - ptt_urls : Optional[Iterable[bytes]] = ..., - download_flag : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"down_para",b"down_para",u"download_flag",b"download_flag",u"file_id",b"file_id",u"file_key",b"file_key",u"file_md5",b"file_md5",u"file_name",b"file_name",u"file_size",b"file_size",u"file_type",b"file_type",u"file_uuid",b"file_uuid",u"format",b"format",u"group_file_key",b"group_file_key",u"magic_ptt_index",b"magic_ptt_index",u"pb_reserve",b"pb_reserve",u"ptt_url",b"ptt_url",u"reserve",b"reserve",u"server_ip",b"server_ip",u"server_port",b"server_port",u"shortcut",b"shortcut",u"signature",b"signature",u"src_uin",b"src_uin",u"time",b"time",u"valid",b"valid",u"voice_switch",b"voice_switch"]) -> bool: ... - def ClearField(self, field_name: Literal[u"down_para",b"down_para",u"download_flag",b"download_flag",u"file_id",b"file_id",u"file_key",b"file_key",u"file_md5",b"file_md5",u"file_name",b"file_name",u"file_size",b"file_size",u"file_type",b"file_type",u"file_uuid",b"file_uuid",u"format",b"format",u"group_file_key",b"group_file_key",u"magic_ptt_index",b"magic_ptt_index",u"pb_reserve",b"pb_reserve",u"ptt_url",b"ptt_url",u"ptt_urls",b"ptt_urls",u"reserve",b"reserve",u"server_ip",b"server_ip",u"server_port",b"server_port",u"shortcut",b"shortcut",u"signature",b"signature",u"src_uin",b"src_uin",u"time",b"time",u"valid",b"valid",u"voice_switch",b"voice_switch"]) -> None: ... + file_type: int + src_uin: int + file_uuid: bytes + file_md5: bytes + file_name: bytes + file_size: int + reserve: bytes + file_id: int + server_ip: int + server_port: int + valid: bool + signature: bytes + shortcut: bytes + file_key: bytes + magic_ptt_index: int + voice_switch: int + ptt_url: bytes + group_file_key: bytes + time: int + down_para: bytes + format: int + pb_reserve: bytes + @property + def ptt_urls(self) -> RepeatedScalarFieldContainer[bytes]: ... + download_flag: int + def __init__(self, + *, + file_type: Optional[int] = ..., + src_uin: Optional[int] = ..., + file_uuid: Optional[bytes] = ..., + file_md5: Optional[bytes] = ..., + file_name: Optional[bytes] = ..., + file_size: Optional[int] = ..., + reserve: Optional[bytes] = ..., + file_id: Optional[int] = ..., + server_ip: Optional[int] = ..., + server_port: Optional[int] = ..., + valid: Optional[bool] = ..., + signature: Optional[bytes] = ..., + shortcut: Optional[bytes] = ..., + file_key: Optional[bytes] = ..., + magic_ptt_index: Optional[int] = ..., + voice_switch: Optional[int] = ..., + ptt_url: Optional[bytes] = ..., + group_file_key: Optional[bytes] = ..., + time: Optional[int] = ..., + down_para: Optional[bytes] = ..., + format: Optional[int] = ..., + pb_reserve: Optional[bytes] = ..., + ptt_urls: Optional[Iterable[bytes]] = ..., + download_flag: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["down_para",b"down_para","download_flag",b"download_flag","file_id",b"file_id","file_key",b"file_key","file_md5",b"file_md5","file_name",b"file_name","file_size",b"file_size","file_type",b"file_type","file_uuid",b"file_uuid","format",b"format","group_file_key",b"group_file_key","magic_ptt_index",b"magic_ptt_index","pb_reserve",b"pb_reserve","ptt_url",b"ptt_url","reserve",b"reserve","server_ip",b"server_ip","server_port",b"server_port","shortcut",b"shortcut","signature",b"signature","src_uin",b"src_uin","time",b"time","valid",b"valid","voice_switch",b"voice_switch"]) -> bool: ... + def ClearField(self, field_name: Literal["down_para",b"down_para","download_flag",b"download_flag","file_id",b"file_id","file_key",b"file_key","file_md5",b"file_md5","file_name",b"file_name","file_size",b"file_size","file_type",b"file_type","file_uuid",b"file_uuid","format",b"format","group_file_key",b"group_file_key","magic_ptt_index",b"magic_ptt_index","pb_reserve",b"pb_reserve","ptt_url",b"ptt_url","ptt_urls",b"ptt_urls","reserve",b"reserve","server_ip",b"server_ip","server_port",b"server_port","shortcut",b"shortcut","signature",b"signature","src_uin",b"src_uin","time",b"time","valid",b"valid","voice_switch",b"voice_switch"]) -> None: ... class PubAccInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor IS_INTER_NUM_FIELD_NUMBER: int MSG_TEMPLATE_ID_FIELD_NUMBER: int LONG_MSG_URL_FIELD_NUMBER: int DOWNLOAD_KEY_FIELD_NUMBER: int - is_inter_num: int = ... - msg_template_id: Text = ... - long_msg_url: Text = ... - download_key: bytes = ... - + is_inter_num: int + msg_template_id: Text + long_msg_url: Text + download_key: bytes def __init__(self, *, - is_inter_num : Optional[int] = ..., - msg_template_id : Optional[Text] = ..., - long_msg_url : Optional[Text] = ..., - download_key : Optional[bytes] = ..., + is_inter_num: Optional[int] = ..., + msg_template_id: Optional[Text] = ..., + long_msg_url: Optional[Text] = ..., + download_key: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"download_key",b"download_key",u"is_inter_num",b"is_inter_num",u"long_msg_url",b"long_msg_url",u"msg_template_id",b"msg_template_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"download_key",b"download_key",u"is_inter_num",b"is_inter_num",u"long_msg_url",b"long_msg_url",u"msg_template_id",b"msg_template_id"]) -> None: ... + def HasField(self, field_name: Literal["download_key",b"download_key","is_inter_num",b"is_inter_num","long_msg_url",b"long_msg_url","msg_template_id",b"msg_template_id"]) -> bool: ... + def ClearField(self, field_name: Literal["download_key",b"download_key","is_inter_num",b"is_inter_num","long_msg_url",b"long_msg_url","msg_template_id",b"msg_template_id"]) -> None: ... class PubAccount(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor BUF_FIELD_NUMBER: int PUB_ACCOUNT_UIN_FIELD_NUMBER: int - buf: bytes = ... - pub_account_uin: int = ... - + buf: bytes + pub_account_uin: int def __init__(self, *, - buf : Optional[bytes] = ..., - pub_account_uin : Optional[int] = ..., + buf: Optional[bytes] = ..., + pub_account_uin: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"buf",b"buf",u"pub_account_uin",b"pub_account_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"buf",b"buf",u"pub_account_uin",b"pub_account_uin"]) -> None: ... + def HasField(self, field_name: Literal["buf",b"buf","pub_account_uin",b"pub_account_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["buf",b"buf","pub_account_uin",b"pub_account_uin"]) -> None: ... class PubGroup(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor NICKNAME_FIELD_NUMBER: int GENDER_FIELD_NUMBER: int AGE_FIELD_NUMBER: int DISTANCE_FIELD_NUMBER: int - nickname: bytes = ... - gender: int = ... - age: int = ... - distance: int = ... - + nickname: bytes + gender: int + age: int + distance: int def __init__(self, *, - nickname : Optional[bytes] = ..., - gender : Optional[int] = ..., - age : Optional[int] = ..., - distance : Optional[int] = ..., + nickname: Optional[bytes] = ..., + gender: Optional[int] = ..., + age: Optional[int] = ..., + distance: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"age",b"age",u"distance",b"distance",u"gender",b"gender",u"nickname",b"nickname"]) -> bool: ... - def ClearField(self, field_name: Literal[u"age",b"age",u"distance",b"distance",u"gender",b"gender",u"nickname",b"nickname"]) -> None: ... + def HasField(self, field_name: Literal["age",b"age","distance",b"distance","gender",b"gender","nickname",b"nickname"]) -> bool: ... + def ClearField(self, field_name: Literal["age",b"age","distance",b"distance","gender",b"gender","nickname",b"nickname"]) -> None: ... class QQLiveOld(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SUB_CMD_FIELD_NUMBER: int SHOW_TEXT_FIELD_NUMBER: int PARAM_FIELD_NUMBER: int INTRODUCE_FIELD_NUMBER: int - sub_cmd: int = ... - show_text: bytes = ... - param: bytes = ... - introduce: bytes = ... - + sub_cmd: int + show_text: bytes + param: bytes + introduce: bytes def __init__(self, *, - sub_cmd : Optional[int] = ..., - show_text : Optional[bytes] = ..., - param : Optional[bytes] = ..., - introduce : Optional[bytes] = ..., + sub_cmd: Optional[int] = ..., + show_text: Optional[bytes] = ..., + param: Optional[bytes] = ..., + introduce: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"introduce",b"introduce",u"param",b"param",u"show_text",b"show_text",u"sub_cmd",b"sub_cmd"]) -> bool: ... - def ClearField(self, field_name: Literal[u"introduce",b"introduce",u"param",b"param",u"show_text",b"show_text",u"sub_cmd",b"sub_cmd"]) -> None: ... + def HasField(self, field_name: Literal["introduce",b"introduce","param",b"param","show_text",b"show_text","sub_cmd",b"sub_cmd"]) -> bool: ... + def ClearField(self, field_name: Literal["introduce",b"introduce","param",b"param","show_text",b"show_text","sub_cmd",b"sub_cmd"]) -> None: ... class QQWalletAioBody(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SENDUIN_FIELD_NUMBER: int SENDER_FIELD_NUMBER: int RECEIVER_FIELD_NUMBER: int @@ -1773,61 +1674,59 @@ class QQWalletAioBody(Message): REDCHANNEL_FIELD_NUMBER: int GRAP_UIN_FIELD_NUMBER: int PB_RESERVE_FIELD_NUMBER: int - senduin: int = ... - channelid: int = ... - templateid: int = ... - resend: int = ... - msg_priority: int = ... - redtype: int = ... - billno: bytes = ... - authkey: bytes = ... - sessiontype: int = ... - msgtype: int = ... - envelopeid: int = ... - name: bytes = ... - conftype: int = ... - msg_from: int = ... - pc_body: bytes = ... - index: bytes = ... - redchannel: int = ... - grap_uin: RepeatedScalarFieldContainer[int] = ... - pb_reserve: bytes = ... - + senduin: int @property def sender(self) -> QQWalletAioElem: ... - @property def receiver(self) -> QQWalletAioElem: ... - - def __init__(self, - *, - senduin : Optional[int] = ..., - sender : Optional[QQWalletAioElem] = ..., - receiver : Optional[QQWalletAioElem] = ..., - channelid : Optional[int] = ..., - templateid : Optional[int] = ..., - resend : Optional[int] = ..., - msg_priority : Optional[int] = ..., - redtype : Optional[int] = ..., - billno : Optional[bytes] = ..., - authkey : Optional[bytes] = ..., - sessiontype : Optional[int] = ..., - msgtype : Optional[int] = ..., - envelopeid : Optional[int] = ..., - name : Optional[bytes] = ..., - conftype : Optional[int] = ..., - msg_from : Optional[int] = ..., - pc_body : Optional[bytes] = ..., - index : Optional[bytes] = ..., - redchannel : Optional[int] = ..., - grap_uin : Optional[Iterable[int]] = ..., - pb_reserve : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"authkey",b"authkey",u"billno",b"billno",u"channelid",b"channelid",u"conftype",b"conftype",u"envelopeid",b"envelopeid",u"index",b"index",u"msg_from",b"msg_from",u"msg_priority",b"msg_priority",u"msgtype",b"msgtype",u"name",b"name",u"pb_reserve",b"pb_reserve",u"pc_body",b"pc_body",u"receiver",b"receiver",u"redchannel",b"redchannel",u"redtype",b"redtype",u"resend",b"resend",u"sender",b"sender",u"senduin",b"senduin",u"sessiontype",b"sessiontype",u"templateid",b"templateid"]) -> bool: ... - def ClearField(self, field_name: Literal[u"authkey",b"authkey",u"billno",b"billno",u"channelid",b"channelid",u"conftype",b"conftype",u"envelopeid",b"envelopeid",u"grap_uin",b"grap_uin",u"index",b"index",u"msg_from",b"msg_from",u"msg_priority",b"msg_priority",u"msgtype",b"msgtype",u"name",b"name",u"pb_reserve",b"pb_reserve",u"pc_body",b"pc_body",u"receiver",b"receiver",u"redchannel",b"redchannel",u"redtype",b"redtype",u"resend",b"resend",u"sender",b"sender",u"senduin",b"senduin",u"sessiontype",b"sessiontype",u"templateid",b"templateid"]) -> None: ... + channelid: int + templateid: int + resend: int + msg_priority: int + redtype: int + billno: bytes + authkey: bytes + sessiontype: int + msgtype: int + envelopeid: int + name: bytes + conftype: int + msg_from: int + pc_body: bytes + index: bytes + redchannel: int + @property + def grap_uin(self) -> RepeatedScalarFieldContainer[int]: ... + pb_reserve: bytes + def __init__(self, + *, + senduin: Optional[int] = ..., + sender: Optional[QQWalletAioElem] = ..., + receiver: Optional[QQWalletAioElem] = ..., + channelid: Optional[int] = ..., + templateid: Optional[int] = ..., + resend: Optional[int] = ..., + msg_priority: Optional[int] = ..., + redtype: Optional[int] = ..., + billno: Optional[bytes] = ..., + authkey: Optional[bytes] = ..., + sessiontype: Optional[int] = ..., + msgtype: Optional[int] = ..., + envelopeid: Optional[int] = ..., + name: Optional[bytes] = ..., + conftype: Optional[int] = ..., + msg_from: Optional[int] = ..., + pc_body: Optional[bytes] = ..., + index: Optional[bytes] = ..., + redchannel: Optional[int] = ..., + grap_uin: Optional[Iterable[int]] = ..., + pb_reserve: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["authkey",b"authkey","billno",b"billno","channelid",b"channelid","conftype",b"conftype","envelopeid",b"envelopeid","index",b"index","msg_from",b"msg_from","msg_priority",b"msg_priority","msgtype",b"msgtype","name",b"name","pb_reserve",b"pb_reserve","pc_body",b"pc_body","receiver",b"receiver","redchannel",b"redchannel","redtype",b"redtype","resend",b"resend","sender",b"sender","senduin",b"senduin","sessiontype",b"sessiontype","templateid",b"templateid"]) -> bool: ... + def ClearField(self, field_name: Literal["authkey",b"authkey","billno",b"billno","channelid",b"channelid","conftype",b"conftype","envelopeid",b"envelopeid","grap_uin",b"grap_uin","index",b"index","msg_from",b"msg_from","msg_priority",b"msg_priority","msgtype",b"msgtype","name",b"name","pb_reserve",b"pb_reserve","pc_body",b"pc_body","receiver",b"receiver","redchannel",b"redchannel","redtype",b"redtype","resend",b"resend","sender",b"sender","senduin",b"senduin","sessiontype",b"sessiontype","templateid",b"templateid"]) -> None: ... class QQWalletAioElem(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor BACKGROUND_FIELD_NUMBER: int ICON_FIELD_NUMBER: int TITLE_FIELD_NUMBER: int @@ -1849,149 +1748,137 @@ class QQWalletAioElem(Message): AIO_IMAGE_RIGHT_FIELD_NUMBER: int CFT_IMAGE_FIELD_NUMBER: int PB_RESERVE_FIELD_NUMBER: int - background: int = ... - icon: int = ... - title: bytes = ... - subtitle: bytes = ... - content: bytes = ... - linkurl: bytes = ... - blackstripe: bytes = ... - notice: bytes = ... - title_color: int = ... - subtitle_color: int = ... - actions_priority: bytes = ... - jump_url: bytes = ... - native_ios: bytes = ... - native_android: bytes = ... - iconurl: bytes = ... - content_color: int = ... - content_bgcolor: int = ... - aio_image_left: bytes = ... - aio_image_right: bytes = ... - cft_image: bytes = ... - pb_reserve: bytes = ... - - def __init__(self, - *, - background : Optional[int] = ..., - icon : Optional[int] = ..., - title : Optional[bytes] = ..., - subtitle : Optional[bytes] = ..., - content : Optional[bytes] = ..., - linkurl : Optional[bytes] = ..., - blackstripe : Optional[bytes] = ..., - notice : Optional[bytes] = ..., - title_color : Optional[int] = ..., - subtitle_color : Optional[int] = ..., - actions_priority : Optional[bytes] = ..., - jump_url : Optional[bytes] = ..., - native_ios : Optional[bytes] = ..., - native_android : Optional[bytes] = ..., - iconurl : Optional[bytes] = ..., - content_color : Optional[int] = ..., - content_bgcolor : Optional[int] = ..., - aio_image_left : Optional[bytes] = ..., - aio_image_right : Optional[bytes] = ..., - cft_image : Optional[bytes] = ..., - pb_reserve : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"actions_priority",b"actions_priority",u"aio_image_left",b"aio_image_left",u"aio_image_right",b"aio_image_right",u"background",b"background",u"blackstripe",b"blackstripe",u"cft_image",b"cft_image",u"content",b"content",u"content_bgcolor",b"content_bgcolor",u"content_color",b"content_color",u"icon",b"icon",u"iconurl",b"iconurl",u"jump_url",b"jump_url",u"linkurl",b"linkurl",u"native_android",b"native_android",u"native_ios",b"native_ios",u"notice",b"notice",u"pb_reserve",b"pb_reserve",u"subtitle",b"subtitle",u"subtitle_color",b"subtitle_color",u"title",b"title",u"title_color",b"title_color"]) -> bool: ... - def ClearField(self, field_name: Literal[u"actions_priority",b"actions_priority",u"aio_image_left",b"aio_image_left",u"aio_image_right",b"aio_image_right",u"background",b"background",u"blackstripe",b"blackstripe",u"cft_image",b"cft_image",u"content",b"content",u"content_bgcolor",b"content_bgcolor",u"content_color",b"content_color",u"icon",b"icon",u"iconurl",b"iconurl",u"jump_url",b"jump_url",u"linkurl",b"linkurl",u"native_android",b"native_android",u"native_ios",b"native_ios",u"notice",b"notice",u"pb_reserve",b"pb_reserve",u"subtitle",b"subtitle",u"subtitle_color",b"subtitle_color",u"title",b"title",u"title_color",b"title_color"]) -> None: ... + background: int + icon: int + title: bytes + subtitle: bytes + content: bytes + linkurl: bytes + blackstripe: bytes + notice: bytes + title_color: int + subtitle_color: int + actions_priority: bytes + jump_url: bytes + native_ios: bytes + native_android: bytes + iconurl: bytes + content_color: int + content_bgcolor: int + aio_image_left: bytes + aio_image_right: bytes + cft_image: bytes + pb_reserve: bytes + def __init__(self, + *, + background: Optional[int] = ..., + icon: Optional[int] = ..., + title: Optional[bytes] = ..., + subtitle: Optional[bytes] = ..., + content: Optional[bytes] = ..., + linkurl: Optional[bytes] = ..., + blackstripe: Optional[bytes] = ..., + notice: Optional[bytes] = ..., + title_color: Optional[int] = ..., + subtitle_color: Optional[int] = ..., + actions_priority: Optional[bytes] = ..., + jump_url: Optional[bytes] = ..., + native_ios: Optional[bytes] = ..., + native_android: Optional[bytes] = ..., + iconurl: Optional[bytes] = ..., + content_color: Optional[int] = ..., + content_bgcolor: Optional[int] = ..., + aio_image_left: Optional[bytes] = ..., + aio_image_right: Optional[bytes] = ..., + cft_image: Optional[bytes] = ..., + pb_reserve: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["actions_priority",b"actions_priority","aio_image_left",b"aio_image_left","aio_image_right",b"aio_image_right","background",b"background","blackstripe",b"blackstripe","cft_image",b"cft_image","content",b"content","content_bgcolor",b"content_bgcolor","content_color",b"content_color","icon",b"icon","iconurl",b"iconurl","jump_url",b"jump_url","linkurl",b"linkurl","native_android",b"native_android","native_ios",b"native_ios","notice",b"notice","pb_reserve",b"pb_reserve","subtitle",b"subtitle","subtitle_color",b"subtitle_color","title",b"title","title_color",b"title_color"]) -> bool: ... + def ClearField(self, field_name: Literal["actions_priority",b"actions_priority","aio_image_left",b"aio_image_left","aio_image_right",b"aio_image_right","background",b"background","blackstripe",b"blackstripe","cft_image",b"cft_image","content",b"content","content_bgcolor",b"content_bgcolor","content_color",b"content_color","icon",b"icon","iconurl",b"iconurl","jump_url",b"jump_url","linkurl",b"linkurl","native_android",b"native_android","native_ios",b"native_ios","notice",b"notice","pb_reserve",b"pb_reserve","subtitle",b"subtitle","subtitle_color",b"subtitle_color","title",b"title","title_color",b"title_color"]) -> None: ... class QQWalletMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor AIO_BODY_FIELD_NUMBER: int - @property def aio_body(self) -> QQWalletAioBody: ... - def __init__(self, *, - aio_body : Optional[QQWalletAioBody] = ..., + aio_body: Optional[QQWalletAioBody] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"aio_body",b"aio_body"]) -> bool: ... - def ClearField(self, field_name: Literal[u"aio_body",b"aio_body"]) -> None: ... + def HasField(self, field_name: Literal["aio_body",b"aio_body"]) -> bool: ... + def ClearField(self, field_name: Literal["aio_body",b"aio_body"]) -> None: ... class RedBagInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor REDBAG_TYPE_FIELD_NUMBER: int - redbag_type: int = ... - + redbag_type: int def __init__(self, *, - redbag_type : Optional[int] = ..., + redbag_type: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"redbag_type",b"redbag_type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"redbag_type",b"redbag_type"]) -> None: ... + def HasField(self, field_name: Literal["redbag_type",b"redbag_type"]) -> bool: ... + def ClearField(self, field_name: Literal["redbag_type",b"redbag_type"]) -> None: ... class RichMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TEMPLATE_1_FIELD_NUMBER: int SERVICE_ID_FIELD_NUMBER: int MSG_RESID_FIELD_NUMBER: int RAND_FIELD_NUMBER: int SEQ_FIELD_NUMBER: int FLAGS_FIELD_NUMBER: int - template_1: bytes = ... - service_id: int = ... - msg_resid: bytes = ... - rand: int = ... - seq: int = ... - flags: int = ... - + template_1: bytes + service_id: int + msg_resid: bytes + rand: int + seq: int + flags: int def __init__(self, *, - template_1 : Optional[bytes] = ..., - service_id : Optional[int] = ..., - msg_resid : Optional[bytes] = ..., - rand : Optional[int] = ..., - seq : Optional[int] = ..., - flags : Optional[int] = ..., + template_1: Optional[bytes] = ..., + service_id: Optional[int] = ..., + msg_resid: Optional[bytes] = ..., + rand: Optional[int] = ..., + seq: Optional[int] = ..., + flags: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"flags",b"flags",u"msg_resid",b"msg_resid",u"rand",b"rand",u"seq",b"seq",u"service_id",b"service_id",u"template_1",b"template_1"]) -> bool: ... - def ClearField(self, field_name: Literal[u"flags",b"flags",u"msg_resid",b"msg_resid",u"rand",b"rand",u"seq",b"seq",u"service_id",b"service_id",u"template_1",b"template_1"]) -> None: ... + def HasField(self, field_name: Literal["flags",b"flags","msg_resid",b"msg_resid","rand",b"rand","seq",b"seq","service_id",b"service_id","template_1",b"template_1"]) -> bool: ... + def ClearField(self, field_name: Literal["flags",b"flags","msg_resid",b"msg_resid","rand",b"rand","seq",b"seq","service_id",b"service_id","template_1",b"template_1"]) -> None: ... class RichText(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor ATTR_FIELD_NUMBER: int ELEMS_FIELD_NUMBER: int NOT_ONLINE_FILE_FIELD_NUMBER: int PTT_FIELD_NUMBER: int TMP_PTT_FIELD_NUMBER: int TRANS_211_TMP_MSG_FIELD_NUMBER: int - @property def attr(self) -> Attr: ... - @property def elems(self) -> RepeatedCompositeFieldContainer[Elem]: ... - @property def not_online_file(self) -> NotOnlineFile: ... - @property def ptt(self) -> Ptt: ... - @property def tmp_ptt(self) -> TmpPtt: ... - @property def trans_211_tmp_msg(self) -> Trans211TmpMsg: ... - def __init__(self, *, - attr : Optional[Attr] = ..., - elems : Optional[Iterable[Elem]] = ..., - not_online_file : Optional[NotOnlineFile] = ..., - ptt : Optional[Ptt] = ..., - tmp_ptt : Optional[TmpPtt] = ..., - trans_211_tmp_msg : Optional[Trans211TmpMsg] = ..., + attr: Optional[Attr] = ..., + elems: Optional[Iterable[Elem]] = ..., + not_online_file: Optional[NotOnlineFile] = ..., + ptt: Optional[Ptt] = ..., + tmp_ptt: Optional[TmpPtt] = ..., + trans_211_tmp_msg: Optional[Trans211TmpMsg] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"attr",b"attr",u"not_online_file",b"not_online_file",u"ptt",b"ptt",u"tmp_ptt",b"tmp_ptt",u"trans_211_tmp_msg",b"trans_211_tmp_msg"]) -> bool: ... - def ClearField(self, field_name: Literal[u"attr",b"attr",u"elems",b"elems",u"not_online_file",b"not_online_file",u"ptt",b"ptt",u"tmp_ptt",b"tmp_ptt",u"trans_211_tmp_msg",b"trans_211_tmp_msg"]) -> None: ... + def HasField(self, field_name: Literal["attr",b"attr","not_online_file",b"not_online_file","ptt",b"ptt","tmp_ptt",b"tmp_ptt","trans_211_tmp_msg",b"trans_211_tmp_msg"]) -> bool: ... + def ClearField(self, field_name: Literal["attr",b"attr","elems",b"elems","not_online_file",b"not_online_file","ptt",b"ptt","tmp_ptt",b"tmp_ptt","trans_211_tmp_msg",b"trans_211_tmp_msg"]) -> None: ... class SecretFileMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FILE_KEY_FIELD_NUMBER: int FROM_UIN_FIELD_NUMBER: int TO_UIN_FIELD_NUMBER: int @@ -2007,82 +1894,77 @@ class SecretFileMsg(Message): ELEM_FLAGS2_FIELD_NUMBER: int OPERTYPE_FIELD_NUMBER: int FROMPHONENUM_FIELD_NUMBER: int - file_key: bytes = ... - from_uin: int = ... - to_uin: int = ... - status: int = ... - ttl: int = ... - type: int = ... - encrypt_prehead_length: int = ... - encrypt_type: int = ... - encrypt_key: bytes = ... - read_times: int = ... - left_time: int = ... - opertype: int = ... - fromphonenum: Text = ... - + file_key: bytes + from_uin: int + to_uin: int + status: int + ttl: int + type: int + encrypt_prehead_length: int + encrypt_type: int + encrypt_key: bytes + read_times: int + left_time: int @property def not_online_image(self) -> NotOnlineImage: ... - @property def elem_flags2(self) -> ElemFlags2: ... - - def __init__(self, - *, - file_key : Optional[bytes] = ..., - from_uin : Optional[int] = ..., - to_uin : Optional[int] = ..., - status : Optional[int] = ..., - ttl : Optional[int] = ..., - type : Optional[int] = ..., - encrypt_prehead_length : Optional[int] = ..., - encrypt_type : Optional[int] = ..., - encrypt_key : Optional[bytes] = ..., - read_times : Optional[int] = ..., - left_time : Optional[int] = ..., - not_online_image : Optional[NotOnlineImage] = ..., - elem_flags2 : Optional[ElemFlags2] = ..., - opertype : Optional[int] = ..., - fromphonenum : Optional[Text] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"elem_flags2",b"elem_flags2",u"encrypt_key",b"encrypt_key",u"encrypt_prehead_length",b"encrypt_prehead_length",u"encrypt_type",b"encrypt_type",u"file_key",b"file_key",u"from_uin",b"from_uin",u"fromphonenum",b"fromphonenum",u"left_time",b"left_time",u"not_online_image",b"not_online_image",u"opertype",b"opertype",u"read_times",b"read_times",u"status",b"status",u"to_uin",b"to_uin",u"ttl",b"ttl",u"type",b"type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"elem_flags2",b"elem_flags2",u"encrypt_key",b"encrypt_key",u"encrypt_prehead_length",b"encrypt_prehead_length",u"encrypt_type",b"encrypt_type",u"file_key",b"file_key",u"from_uin",b"from_uin",u"fromphonenum",b"fromphonenum",u"left_time",b"left_time",u"not_online_image",b"not_online_image",u"opertype",b"opertype",u"read_times",b"read_times",u"status",b"status",u"to_uin",b"to_uin",u"ttl",b"ttl",u"type",b"type"]) -> None: ... + opertype: int + fromphonenum: Text + def __init__(self, + *, + file_key: Optional[bytes] = ..., + from_uin: Optional[int] = ..., + to_uin: Optional[int] = ..., + status: Optional[int] = ..., + ttl: Optional[int] = ..., + type: Optional[int] = ..., + encrypt_prehead_length: Optional[int] = ..., + encrypt_type: Optional[int] = ..., + encrypt_key: Optional[bytes] = ..., + read_times: Optional[int] = ..., + left_time: Optional[int] = ..., + not_online_image: Optional[NotOnlineImage] = ..., + elem_flags2: Optional[ElemFlags2] = ..., + opertype: Optional[int] = ..., + fromphonenum: Optional[Text] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["elem_flags2",b"elem_flags2","encrypt_key",b"encrypt_key","encrypt_prehead_length",b"encrypt_prehead_length","encrypt_type",b"encrypt_type","file_key",b"file_key","from_uin",b"from_uin","fromphonenum",b"fromphonenum","left_time",b"left_time","not_online_image",b"not_online_image","opertype",b"opertype","read_times",b"read_times","status",b"status","to_uin",b"to_uin","ttl",b"ttl","type",b"type"]) -> bool: ... + def ClearField(self, field_name: Literal["elem_flags2",b"elem_flags2","encrypt_key",b"encrypt_key","encrypt_prehead_length",b"encrypt_prehead_length","encrypt_type",b"encrypt_type","file_key",b"file_key","from_uin",b"from_uin","fromphonenum",b"fromphonenum","left_time",b"left_time","not_online_image",b"not_online_image","opertype",b"opertype","read_times",b"read_times","status",b"status","to_uin",b"to_uin","ttl",b"ttl","type",b"type"]) -> None: ... class ShakeWindow(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TYPE_FIELD_NUMBER: int RESERVE_FIELD_NUMBER: int UIN_FIELD_NUMBER: int - type: int = ... - reserve: int = ... - uin: int = ... - + type: int + reserve: int + uin: int def __init__(self, *, - type : Optional[int] = ..., - reserve : Optional[int] = ..., - uin : Optional[int] = ..., + type: Optional[int] = ..., + reserve: Optional[int] = ..., + uin: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"reserve",b"reserve",u"type",b"type",u"uin",b"uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"reserve",b"reserve",u"type",b"type",u"uin",b"uin"]) -> None: ... + def HasField(self, field_name: Literal["reserve",b"reserve","type",b"type","uin",b"uin"]) -> bool: ... + def ClearField(self, field_name: Literal["reserve",b"reserve","type",b"type","uin",b"uin"]) -> None: ... class SmallEmoji(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor PACK_ID_SUM_FIELD_NUMBER: int IMAGE_TYPE_FIELD_NUMBER: int - pack_id_sum: int = ... - image_type: int = ... - + pack_id_sum: int + image_type: int def __init__(self, *, - pack_id_sum : Optional[int] = ..., - image_type : Optional[int] = ..., + pack_id_sum: Optional[int] = ..., + image_type: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"image_type",b"image_type",u"pack_id_sum",b"pack_id_sum"]) -> bool: ... - def ClearField(self, field_name: Literal[u"image_type",b"image_type",u"pack_id_sum",b"pack_id_sum"]) -> None: ... + def HasField(self, field_name: Literal["image_type",b"image_type","pack_id_sum",b"pack_id_sum"]) -> bool: ... + def ClearField(self, field_name: Literal["image_type",b"image_type","pack_id_sum",b"pack_id_sum"]) -> None: ... class SourceMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor ORIG_SEQS_FIELD_NUMBER: int SENDER_UIN_FIELD_NUMBER: int TIME_FIELD_NUMBER: int @@ -2094,78 +1976,75 @@ class SourceMsg(Message): SRC_MSG_FIELD_NUMBER: int TO_UIN_FIELD_NUMBER: int TROOP_NAME_FIELD_NUMBER: int - orig_seqs: RepeatedScalarFieldContainer[int] = ... - sender_uin: int = ... - time: int = ... - flag: int = ... - type: int = ... - rich_msg: bytes = ... - pb_reserve: bytes = ... - src_msg: bytes = ... - to_uin: int = ... - troop_name: bytes = ... - + @property + def orig_seqs(self) -> RepeatedScalarFieldContainer[int]: ... + sender_uin: int + time: int + flag: int @property def elems(self) -> RepeatedCompositeFieldContainer[Elem]: ... - - def __init__(self, - *, - orig_seqs : Optional[Iterable[int]] = ..., - sender_uin : Optional[int] = ..., - time : Optional[int] = ..., - flag : Optional[int] = ..., - elems : Optional[Iterable[Elem]] = ..., - type : Optional[int] = ..., - rich_msg : Optional[bytes] = ..., - pb_reserve : Optional[bytes] = ..., - src_msg : Optional[bytes] = ..., - to_uin : Optional[int] = ..., - troop_name : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"flag",b"flag",u"pb_reserve",b"pb_reserve",u"rich_msg",b"rich_msg",u"sender_uin",b"sender_uin",u"src_msg",b"src_msg",u"time",b"time",u"to_uin",b"to_uin",u"troop_name",b"troop_name",u"type",b"type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"elems",b"elems",u"flag",b"flag",u"orig_seqs",b"orig_seqs",u"pb_reserve",b"pb_reserve",u"rich_msg",b"rich_msg",u"sender_uin",b"sender_uin",u"src_msg",b"src_msg",u"time",b"time",u"to_uin",b"to_uin",u"troop_name",b"troop_name",u"type",b"type"]) -> None: ... + type: int + rich_msg: bytes + pb_reserve: bytes + src_msg: bytes + to_uin: int + troop_name: bytes + def __init__(self, + *, + orig_seqs: Optional[Iterable[int]] = ..., + sender_uin: Optional[int] = ..., + time: Optional[int] = ..., + flag: Optional[int] = ..., + elems: Optional[Iterable[Elem]] = ..., + type: Optional[int] = ..., + rich_msg: Optional[bytes] = ..., + pb_reserve: Optional[bytes] = ..., + src_msg: Optional[bytes] = ..., + to_uin: Optional[int] = ..., + troop_name: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["flag",b"flag","pb_reserve",b"pb_reserve","rich_msg",b"rich_msg","sender_uin",b"sender_uin","src_msg",b"src_msg","time",b"time","to_uin",b"to_uin","troop_name",b"troop_name","type",b"type"]) -> bool: ... + def ClearField(self, field_name: Literal["elems",b"elems","flag",b"flag","orig_seqs",b"orig_seqs","pb_reserve",b"pb_reserve","rich_msg",b"rich_msg","sender_uin",b"sender_uin","src_msg",b"src_msg","time",b"time","to_uin",b"to_uin","troop_name",b"troop_name","type",b"type"]) -> None: ... class PlainText(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor STR_FIELD_NUMBER: int LINK_FIELD_NUMBER: int ATTR_6_BUF_FIELD_NUMBER: int ATTR_7_BUF_FIELD_NUMBER: int BUF_FIELD_NUMBER: int PB_RESERVE_FIELD_NUMBER: int - str: bytes = ... - link: Text = ... - attr_6_buf: bytes = ... - attr_7_buf: bytes = ... - buf: bytes = ... - pb_reserve: bytes = ... - + str: bytes + link: Text + attr_6_buf: bytes + attr_7_buf: bytes + buf: bytes + pb_reserve: bytes def __init__(self, *, - str : Optional[bytes] = ..., - link : Optional[Text] = ..., - attr_6_buf : Optional[bytes] = ..., - attr_7_buf : Optional[bytes] = ..., - buf : Optional[bytes] = ..., - pb_reserve : Optional[bytes] = ..., + str: Optional[bytes] = ..., + link: Optional[Text] = ..., + attr_6_buf: Optional[bytes] = ..., + attr_7_buf: Optional[bytes] = ..., + buf: Optional[bytes] = ..., + pb_reserve: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"attr_6_buf",b"attr_6_buf",u"attr_7_buf",b"attr_7_buf",u"buf",b"buf",u"link",b"link",u"pb_reserve",b"pb_reserve",u"str",b"str"]) -> bool: ... - def ClearField(self, field_name: Literal[u"attr_6_buf",b"attr_6_buf",u"attr_7_buf",b"attr_7_buf",u"buf",b"buf",u"link",b"link",u"pb_reserve",b"pb_reserve",u"str",b"str"]) -> None: ... + def HasField(self, field_name: Literal["attr_6_buf",b"attr_6_buf","attr_7_buf",b"attr_7_buf","buf",b"buf","link",b"link","pb_reserve",b"pb_reserve","str",b"str"]) -> bool: ... + def ClearField(self, field_name: Literal["attr_6_buf",b"attr_6_buf","attr_7_buf",b"attr_7_buf","buf",b"buf","link",b"link","pb_reserve",b"pb_reserve","str",b"str"]) -> None: ... class TipsInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TEXT_FIELD_NUMBER: int - text: Text = ... - + text: Text def __init__(self, *, - text : Optional[Text] = ..., + text: Optional[Text] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"text",b"text"]) -> bool: ... - def ClearField(self, field_name: Literal[u"text",b"text"]) -> None: ... + def HasField(self, field_name: Literal["text",b"text"]) -> bool: ... + def ClearField(self, field_name: Literal["text",b"text"]) -> None: ... class TmpPtt(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FILE_TYPE_FIELD_NUMBER: int FILE_UUID_FIELD_NUMBER: int FILE_MD5_FIELD_NUMBER: int @@ -2178,69 +2057,66 @@ class TmpPtt(Message): MSG_ID_FIELD_NUMBER: int PB_RESERVE_FIELD_NUMBER: int PTT_ENCODE_DATA_FIELD_NUMBER: int - file_type: int = ... - file_uuid: bytes = ... - file_md5: bytes = ... - file_name: bytes = ... - file_size: int = ... - ptt_times: int = ... - user_type: int = ... - ptttrans_flag: int = ... - busi_type: int = ... - msg_id: int = ... - pb_reserve: bytes = ... - ptt_encode_data: bytes = ... - - def __init__(self, - *, - file_type : Optional[int] = ..., - file_uuid : Optional[bytes] = ..., - file_md5 : Optional[bytes] = ..., - file_name : Optional[bytes] = ..., - file_size : Optional[int] = ..., - ptt_times : Optional[int] = ..., - user_type : Optional[int] = ..., - ptttrans_flag : Optional[int] = ..., - busi_type : Optional[int] = ..., - msg_id : Optional[int] = ..., - pb_reserve : Optional[bytes] = ..., - ptt_encode_data : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"busi_type",b"busi_type",u"file_md5",b"file_md5",u"file_name",b"file_name",u"file_size",b"file_size",u"file_type",b"file_type",u"file_uuid",b"file_uuid",u"msg_id",b"msg_id",u"pb_reserve",b"pb_reserve",u"ptt_encode_data",b"ptt_encode_data",u"ptt_times",b"ptt_times",u"ptttrans_flag",b"ptttrans_flag",u"user_type",b"user_type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"busi_type",b"busi_type",u"file_md5",b"file_md5",u"file_name",b"file_name",u"file_size",b"file_size",u"file_type",b"file_type",u"file_uuid",b"file_uuid",u"msg_id",b"msg_id",u"pb_reserve",b"pb_reserve",u"ptt_encode_data",b"ptt_encode_data",u"ptt_times",b"ptt_times",u"ptttrans_flag",b"ptttrans_flag",u"user_type",b"user_type"]) -> None: ... + file_type: int + file_uuid: bytes + file_md5: bytes + file_name: bytes + file_size: int + ptt_times: int + user_type: int + ptttrans_flag: int + busi_type: int + msg_id: int + pb_reserve: bytes + ptt_encode_data: bytes + def __init__(self, + *, + file_type: Optional[int] = ..., + file_uuid: Optional[bytes] = ..., + file_md5: Optional[bytes] = ..., + file_name: Optional[bytes] = ..., + file_size: Optional[int] = ..., + ptt_times: Optional[int] = ..., + user_type: Optional[int] = ..., + ptttrans_flag: Optional[int] = ..., + busi_type: Optional[int] = ..., + msg_id: Optional[int] = ..., + pb_reserve: Optional[bytes] = ..., + ptt_encode_data: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["busi_type",b"busi_type","file_md5",b"file_md5","file_name",b"file_name","file_size",b"file_size","file_type",b"file_type","file_uuid",b"file_uuid","msg_id",b"msg_id","pb_reserve",b"pb_reserve","ptt_encode_data",b"ptt_encode_data","ptt_times",b"ptt_times","ptttrans_flag",b"ptttrans_flag","user_type",b"user_type"]) -> bool: ... + def ClearField(self, field_name: Literal["busi_type",b"busi_type","file_md5",b"file_md5","file_name",b"file_name","file_size",b"file_size","file_type",b"file_type","file_uuid",b"file_uuid","msg_id",b"msg_id","pb_reserve",b"pb_reserve","ptt_encode_data",b"ptt_encode_data","ptt_times",b"ptt_times","ptttrans_flag",b"ptttrans_flag","user_type",b"user_type"]) -> None: ... class Trans211TmpMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor MSG_BODY_FIELD_NUMBER: int C2C_CMD_FIELD_NUMBER: int - msg_body: bytes = ... - c2c_cmd: int = ... - + msg_body: bytes + c2c_cmd: int def __init__(self, *, - msg_body : Optional[bytes] = ..., - c2c_cmd : Optional[int] = ..., + msg_body: Optional[bytes] = ..., + c2c_cmd: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"c2c_cmd",b"c2c_cmd",u"msg_body",b"msg_body"]) -> bool: ... - def ClearField(self, field_name: Literal[u"c2c_cmd",b"c2c_cmd",u"msg_body",b"msg_body"]) -> None: ... + def HasField(self, field_name: Literal["c2c_cmd",b"c2c_cmd","msg_body",b"msg_body"]) -> bool: ... + def ClearField(self, field_name: Literal["c2c_cmd",b"c2c_cmd","msg_body",b"msg_body"]) -> None: ... class TransElem(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor ELEM_TYPE_FIELD_NUMBER: int ELEM_VALUE_FIELD_NUMBER: int - elem_type: int = ... - elem_value: bytes = ... - + elem_type: int + elem_value: bytes def __init__(self, *, - elem_type : Optional[int] = ..., - elem_value : Optional[bytes] = ..., + elem_type: Optional[int] = ..., + elem_value: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"elem_type",b"elem_type",u"elem_value",b"elem_value"]) -> bool: ... - def ClearField(self, field_name: Literal[u"elem_type",b"elem_type",u"elem_value",b"elem_value"]) -> None: ... + def HasField(self, field_name: Literal["elem_type",b"elem_type","elem_value",b"elem_value"]) -> bool: ... + def ClearField(self, field_name: Literal["elem_type",b"elem_type","elem_value",b"elem_value"]) -> None: ... class VideoFile(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FILE_UUID_FIELD_NUMBER: int FILE_MD5_FIELD_NUMBER: int FILE_NAME_FIELD_NUMBER: int @@ -2265,90 +2141,89 @@ class VideoFile(Message): THUMB_DOWNLOAD_FLAG_FIELD_NUMBER: int VIDEO_DOWNLOAD_FLAG_FIELD_NUMBER: int PB_RESERVE_FIELD_NUMBER: int - file_uuid: bytes = ... - file_md5: bytes = ... - file_name: bytes = ... - file_format: int = ... - file_time: int = ... - file_size: int = ... - thumb_width: int = ... - thumb_height: int = ... - thumb_file_md5: bytes = ... - source: bytes = ... - thumb_file_size: int = ... - busi_type: int = ... - from_chat_type: int = ... - to_chat_type: int = ... - support_progressive: bool = ... - file_width: int = ... - file_height: int = ... - sub_busi_type: int = ... - video_attr: int = ... - thumb_file_urls: RepeatedScalarFieldContainer[bytes] = ... - video_file_urls: RepeatedScalarFieldContainer[bytes] = ... - thumb_download_flag: int = ... - video_download_flag: int = ... - pb_reserve: bytes = ... - - def __init__(self, - *, - file_uuid : Optional[bytes] = ..., - file_md5 : Optional[bytes] = ..., - file_name : Optional[bytes] = ..., - file_format : Optional[int] = ..., - file_time : Optional[int] = ..., - file_size : Optional[int] = ..., - thumb_width : Optional[int] = ..., - thumb_height : Optional[int] = ..., - thumb_file_md5 : Optional[bytes] = ..., - source : Optional[bytes] = ..., - thumb_file_size : Optional[int] = ..., - busi_type : Optional[int] = ..., - from_chat_type : Optional[int] = ..., - to_chat_type : Optional[int] = ..., - support_progressive : Optional[bool] = ..., - file_width : Optional[int] = ..., - file_height : Optional[int] = ..., - sub_busi_type : Optional[int] = ..., - video_attr : Optional[int] = ..., - thumb_file_urls : Optional[Iterable[bytes]] = ..., - video_file_urls : Optional[Iterable[bytes]] = ..., - thumb_download_flag : Optional[int] = ..., - video_download_flag : Optional[int] = ..., - pb_reserve : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"busi_type",b"busi_type",u"file_format",b"file_format",u"file_height",b"file_height",u"file_md5",b"file_md5",u"file_name",b"file_name",u"file_size",b"file_size",u"file_time",b"file_time",u"file_uuid",b"file_uuid",u"file_width",b"file_width",u"from_chat_type",b"from_chat_type",u"pb_reserve",b"pb_reserve",u"source",b"source",u"sub_busi_type",b"sub_busi_type",u"support_progressive",b"support_progressive",u"thumb_download_flag",b"thumb_download_flag",u"thumb_file_md5",b"thumb_file_md5",u"thumb_file_size",b"thumb_file_size",u"thumb_height",b"thumb_height",u"thumb_width",b"thumb_width",u"to_chat_type",b"to_chat_type",u"video_attr",b"video_attr",u"video_download_flag",b"video_download_flag"]) -> bool: ... - def ClearField(self, field_name: Literal[u"busi_type",b"busi_type",u"file_format",b"file_format",u"file_height",b"file_height",u"file_md5",b"file_md5",u"file_name",b"file_name",u"file_size",b"file_size",u"file_time",b"file_time",u"file_uuid",b"file_uuid",u"file_width",b"file_width",u"from_chat_type",b"from_chat_type",u"pb_reserve",b"pb_reserve",u"source",b"source",u"sub_busi_type",b"sub_busi_type",u"support_progressive",b"support_progressive",u"thumb_download_flag",b"thumb_download_flag",u"thumb_file_md5",b"thumb_file_md5",u"thumb_file_size",b"thumb_file_size",u"thumb_file_urls",b"thumb_file_urls",u"thumb_height",b"thumb_height",u"thumb_width",b"thumb_width",u"to_chat_type",b"to_chat_type",u"video_attr",b"video_attr",u"video_download_flag",b"video_download_flag",u"video_file_urls",b"video_file_urls"]) -> None: ... + file_uuid: bytes + file_md5: bytes + file_name: bytes + file_format: int + file_time: int + file_size: int + thumb_width: int + thumb_height: int + thumb_file_md5: bytes + source: bytes + thumb_file_size: int + busi_type: int + from_chat_type: int + to_chat_type: int + support_progressive: bool + file_width: int + file_height: int + sub_busi_type: int + video_attr: int + @property + def thumb_file_urls(self) -> RepeatedScalarFieldContainer[bytes]: ... + @property + def video_file_urls(self) -> RepeatedScalarFieldContainer[bytes]: ... + thumb_download_flag: int + video_download_flag: int + pb_reserve: bytes + def __init__(self, + *, + file_uuid: Optional[bytes] = ..., + file_md5: Optional[bytes] = ..., + file_name: Optional[bytes] = ..., + file_format: Optional[int] = ..., + file_time: Optional[int] = ..., + file_size: Optional[int] = ..., + thumb_width: Optional[int] = ..., + thumb_height: Optional[int] = ..., + thumb_file_md5: Optional[bytes] = ..., + source: Optional[bytes] = ..., + thumb_file_size: Optional[int] = ..., + busi_type: Optional[int] = ..., + from_chat_type: Optional[int] = ..., + to_chat_type: Optional[int] = ..., + support_progressive: Optional[bool] = ..., + file_width: Optional[int] = ..., + file_height: Optional[int] = ..., + sub_busi_type: Optional[int] = ..., + video_attr: Optional[int] = ..., + thumb_file_urls: Optional[Iterable[bytes]] = ..., + video_file_urls: Optional[Iterable[bytes]] = ..., + thumb_download_flag: Optional[int] = ..., + video_download_flag: Optional[int] = ..., + pb_reserve: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["busi_type",b"busi_type","file_format",b"file_format","file_height",b"file_height","file_md5",b"file_md5","file_name",b"file_name","file_size",b"file_size","file_time",b"file_time","file_uuid",b"file_uuid","file_width",b"file_width","from_chat_type",b"from_chat_type","pb_reserve",b"pb_reserve","source",b"source","sub_busi_type",b"sub_busi_type","support_progressive",b"support_progressive","thumb_download_flag",b"thumb_download_flag","thumb_file_md5",b"thumb_file_md5","thumb_file_size",b"thumb_file_size","thumb_height",b"thumb_height","thumb_width",b"thumb_width","to_chat_type",b"to_chat_type","video_attr",b"video_attr","video_download_flag",b"video_download_flag"]) -> bool: ... + def ClearField(self, field_name: Literal["busi_type",b"busi_type","file_format",b"file_format","file_height",b"file_height","file_md5",b"file_md5","file_name",b"file_name","file_size",b"file_size","file_time",b"file_time","file_uuid",b"file_uuid","file_width",b"file_width","from_chat_type",b"from_chat_type","pb_reserve",b"pb_reserve","source",b"source","sub_busi_type",b"sub_busi_type","support_progressive",b"support_progressive","thumb_download_flag",b"thumb_download_flag","thumb_file_md5",b"thumb_file_md5","thumb_file_size",b"thumb_file_size","thumb_file_urls",b"thumb_file_urls","thumb_height",b"thumb_height","thumb_width",b"thumb_width","to_chat_type",b"to_chat_type","video_attr",b"video_attr","video_download_flag",b"video_download_flag","video_file_urls",b"video_file_urls"]) -> None: ... class WorkflowNotifyMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor EXT_MSG_FIELD_NUMBER: int CREATE_UIN_FIELD_NUMBER: int - ext_msg: bytes = ... - create_uin: int = ... - + ext_msg: bytes + create_uin: int def __init__(self, *, - ext_msg : Optional[bytes] = ..., - create_uin : Optional[int] = ..., + ext_msg: Optional[bytes] = ..., + create_uin: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"create_uin",b"create_uin",u"ext_msg",b"ext_msg"]) -> bool: ... - def ClearField(self, field_name: Literal[u"create_uin",b"create_uin",u"ext_msg",b"ext_msg"]) -> None: ... + def HasField(self, field_name: Literal["create_uin",b"create_uin","ext_msg",b"ext_msg"]) -> bool: ... + def ClearField(self, field_name: Literal["create_uin",b"create_uin","ext_msg",b"ext_msg"]) -> None: ... class LocationInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor LONGITUDE_FIELD_NUMBER: int LATITUDE_FIELD_NUMBER: int DESC_FIELD_NUMBER: int - longitude: float = ... - latitude: float = ... - desc: bytes = ... - + longitude: float + latitude: float + desc: bytes def __init__(self, *, - longitude : Optional[float] = ..., - latitude : Optional[float] = ..., - desc : Optional[bytes] = ..., + longitude: Optional[float] = ..., + latitude: Optional[float] = ..., + desc: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"desc",b"desc",u"latitude",b"latitude",u"longitude",b"longitude"]) -> bool: ... - def ClearField(self, field_name: Literal[u"desc",b"desc",u"latitude",b"latitude",u"longitude",b"longitude"]) -> None: ... + def HasField(self, field_name: Literal["desc",b"desc","latitude",b"latitude","longitude",b"longitude"]) -> bool: ... + def ClearField(self, field_name: Literal["desc",b"desc","latitude",b"latitude","longitude",b"longitude"]) -> None: ... diff --git a/cai/pb/im/msg/msg_head/msg_head_pb2.py b/cai/pb/im/msg/msg_head/msg_head_pb2.py index f55330e0..840f1bc3 100644 --- a/cai/pb/im/msg/msg_head/msg_head_pb2.py +++ b/cai/pb/im/msg/msg_head/msg_head_pb2.py @@ -3,6 +3,7 @@ # source: cai/pb/im/msg/msg_head/msg_head.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -13,1058 +14,22 @@ -DESCRIPTOR = _descriptor.FileDescriptor( - name='cai/pb/im/msg/msg_head/msg_head.proto', - package='im.msg.msg_head', - syntax='proto2', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n%cai/pb/im/msg/msg_head/msg_head.proto\x12\x0fim.msg.msg_head\"\xd4\x01\n\x07\x43\x32\x43Head\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x10\n\x08\x66rom_uin\x18\x02 \x01(\x04\x12\x0f\n\x07\x63\x63_type\x18\x03 \x01(\r\x12\x0e\n\x06\x63\x63_cmd\x18\x04 \x01(\r\x12\x14\n\x0c\x61uth_pic_sig\x18\x05 \x01(\x0c\x12\x10\n\x08\x61uth_sig\x18\x06 \x01(\x0c\x12\x10\n\x08\x61uth_buf\x18\x07 \x01(\x0c\x12\x13\n\x0bserver_time\x18\x08 \x01(\r\x12\x13\n\x0b\x63lient_time\x18\t \x01(\r\x12\x0c\n\x04rand\x18\n \x01(\r\x12\x14\n\x0cphone_number\x18\x0b \x01(\t\"\xb7\x03\n\x06\x43SHead\x12\x0b\n\x03uin\x18\x01 \x01(\x04\x12\x0f\n\x07\x63ommand\x18\x02 \x01(\r\x12\x0b\n\x03seq\x18\x03 \x01(\r\x12\x0f\n\x07version\x18\x04 \x01(\r\x12\x13\n\x0bretry_times\x18\x05 \x01(\r\x12\x13\n\x0b\x63lient_type\x18\x06 \x01(\r\x12\r\n\x05pubno\x18\x07 \x01(\r\x12\x0f\n\x07localid\x18\x08 \x01(\r\x12\x10\n\x08timezone\x18\t \x01(\r\x12\x11\n\tclient_ip\x18\n \x01(\x07\x12\x13\n\x0b\x63lient_port\x18\x0b \x01(\r\x12\x0f\n\x07\x63onn_ip\x18\x0c \x01(\x07\x12\x11\n\tconn_port\x18\r \x01(\r\x12\x14\n\x0cinterface_ip\x18\x0e \x01(\x07\x12\x16\n\x0einterface_port\x18\x0f \x01(\r\x12\x11\n\tactual_ip\x18\x10 \x01(\x07\x12\x0c\n\x04\x66lag\x18\x11 \x01(\r\x12\x11\n\ttimestamp\x18\x12 \x01(\x07\x12\x0e\n\x06subcmd\x18\x13 \x01(\r\x12\x0e\n\x06result\x18\x14 \x01(\r\x12\x0e\n\x06\x61pp_id\x18\x15 \x01(\r\x12\x13\n\x0binstance_id\x18\x16 \x01(\r\x12\x12\n\nsession_id\x18\x17 \x01(\x04\x12\x0e\n\x06idc_id\x18\x18 \x01(\r\"\x85\x01\n\tDeltaHead\x12\x11\n\ttotal_len\x18\x01 \x01(\x04\x12\x0e\n\x06offset\x18\x02 \x01(\x04\x12\x12\n\nack_offset\x18\x03 \x01(\x04\x12\x0e\n\x06\x63ookie\x18\x04 \x01(\x0c\x12\x12\n\nack_cookie\x18\x05 \x01(\x0c\x12\x0e\n\x06result\x18\x06 \x01(\r\x12\r\n\x05\x66lags\x18\x07 \x01(\r\"\xa1\x03\n\x04Head\x12\x11\n\thead_type\x18\x01 \x01(\r\x12(\n\x07\x63s_head\x18\x02 \x01(\x0b\x32\x17.im.msg.msg_head.CSHead\x12*\n\x08s2c_head\x18\x03 \x01(\x0b\x32\x18.im.msg.msg_head.S2CHead\x12\x34\n\rhttpconn_head\x18\x04 \x01(\x0b\x32\x1d.im.msg.msg_head.HttpConnHead\x12\x12\n\npaint_flag\x18\x05 \x01(\r\x12,\n\tlogin_sig\x18\x06 \x01(\x0b\x32\x19.im.msg.msg_head.LoginSig\x12.\n\ndelta_head\x18\x07 \x01(\x0b\x32\x1a.im.msg.msg_head.DeltaHead\x12*\n\x08\x63\x32\x63_head\x18\x08 \x01(\x0b\x32\x18.im.msg.msg_head.C2CHead\x12.\n\nsconn_head\x18\t \x01(\x0b\x32\x1a.im.msg.msg_head.SConnHead\x12,\n\tinst_ctrl\x18\n \x01(\x0b\x32\x19.im.msg.msg_head.InstCtrl\"\x98\x04\n\x0cHttpConnHead\x12\x0b\n\x03uin\x18\x01 \x01(\x04\x12\x0f\n\x07\x63ommand\x18\x02 \x01(\r\x12\x13\n\x0bsub_command\x18\x03 \x01(\r\x12\x0b\n\x03seq\x18\x04 \x01(\r\x12\x0f\n\x07version\x18\x05 \x01(\r\x12\x13\n\x0bretry_times\x18\x06 \x01(\r\x12\x13\n\x0b\x63lient_type\x18\x07 \x01(\r\x12\x0e\n\x06pub_no\x18\x08 \x01(\r\x12\x10\n\x08local_id\x18\t \x01(\r\x12\x11\n\ttime_zone\x18\n \x01(\r\x12\x11\n\tclient_ip\x18\x0b \x01(\x07\x12\x13\n\x0b\x63lient_port\x18\x0c \x01(\r\x12\x11\n\tqzhttp_ip\x18\r \x01(\x07\x12\x13\n\x0bqzhttp_port\x18\x0e \x01(\r\x12\x0e\n\x06spp_ip\x18\x0f \x01(\x07\x12\x10\n\x08spp_port\x18\x10 \x01(\r\x12\x0c\n\x04\x66lag\x18\x11 \x01(\r\x12\x0b\n\x03key\x18\x12 \x01(\x0c\x12\x15\n\rcompress_type\x18\x13 \x01(\r\x12\x13\n\x0borigin_size\x18\x14 \x01(\r\x12\x12\n\nerror_code\x18\x15 \x01(\r\x12.\n\x08redirect\x18\x16 \x01(\x0b\x32\x1c.im.msg.msg_head.RedirectMsg\x12\x12\n\ncommand_id\x18\x17 \x01(\r\x12\x15\n\rservice_cmdid\x18\x18 \x01(\r\x12\x30\n\x08oidbhead\x18\x19 \x01(\x0b\x32\x1e.im.msg.msg_head.TransOidbHead\"\x9a\x01\n\x08InstCtrl\x12/\n\x0csend_to_inst\x18\x01 \x03(\x0b\x32\x19.im.msg.msg_head.InstInfo\x12/\n\x0c\x65xclude_inst\x18\x02 \x03(\x0b\x32\x19.im.msg.msg_head.InstInfo\x12,\n\tfrom_inst\x18\x03 \x01(\x0b\x32\x19.im.msg.msg_head.InstInfo\"V\n\x08InstInfo\x12\x0e\n\x06\x61pppid\x18\x01 \x01(\r\x12\x0e\n\x06instid\x18\x02 \x01(\r\x12\x10\n\x08platform\x18\x03 \x01(\r\x12\x18\n\x10\x65num_device_type\x18\n \x01(\r\"%\n\x08LoginSig\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\"\x87\x01\n\x0bRedirectMsg\x12\x18\n\x10last_redirect_ip\x18\x01 \x01(\x07\x12\x1a\n\x12last_redirect_port\x18\x02 \x01(\r\x12\x13\n\x0bredirect_ip\x18\x03 \x01(\x07\x12\x15\n\rredirect_port\x18\x04 \x01(\r\x12\x16\n\x0eredirect_count\x18\x05 \x01(\r\"\x88\x01\n\x07S2CHead\x12\x13\n\x0bsub_msgtype\x18\x01 \x01(\r\x12\x10\n\x08msg_type\x18\x02 \x01(\r\x12\x10\n\x08\x66rom_uin\x18\x03 \x01(\x04\x12\x0e\n\x06msg_id\x18\x04 \x01(\r\x12\x10\n\x08relay_ip\x18\x05 \x01(\x07\x12\x12\n\nrelay_port\x18\x06 \x01(\r\x12\x0e\n\x06to_uin\x18\x07 \x01(\x04\"\x0b\n\tSConnHead\"Y\n\rTransOidbHead\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\r\x12\x14\n\x0cservice_type\x18\x02 \x01(\r\x12\x0e\n\x06result\x18\x03 \x01(\r\x12\x11\n\terror_msg\x18\x04 \x01(\t' -) +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%cai/pb/im/msg/msg_head/msg_head.proto\x12\x0fim.msg.msg_head\"\xd4\x01\n\x07\x43\x32\x43Head\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x10\n\x08\x66rom_uin\x18\x02 \x01(\x04\x12\x0f\n\x07\x63\x63_type\x18\x03 \x01(\r\x12\x0e\n\x06\x63\x63_cmd\x18\x04 \x01(\r\x12\x14\n\x0c\x61uth_pic_sig\x18\x05 \x01(\x0c\x12\x10\n\x08\x61uth_sig\x18\x06 \x01(\x0c\x12\x10\n\x08\x61uth_buf\x18\x07 \x01(\x0c\x12\x13\n\x0bserver_time\x18\x08 \x01(\r\x12\x13\n\x0b\x63lient_time\x18\t \x01(\r\x12\x0c\n\x04rand\x18\n \x01(\r\x12\x14\n\x0cphone_number\x18\x0b \x01(\t\"\xb7\x03\n\x06\x43SHead\x12\x0b\n\x03uin\x18\x01 \x01(\x04\x12\x0f\n\x07\x63ommand\x18\x02 \x01(\r\x12\x0b\n\x03seq\x18\x03 \x01(\r\x12\x0f\n\x07version\x18\x04 \x01(\r\x12\x13\n\x0bretry_times\x18\x05 \x01(\r\x12\x13\n\x0b\x63lient_type\x18\x06 \x01(\r\x12\r\n\x05pubno\x18\x07 \x01(\r\x12\x0f\n\x07localid\x18\x08 \x01(\r\x12\x10\n\x08timezone\x18\t \x01(\r\x12\x11\n\tclient_ip\x18\n \x01(\x07\x12\x13\n\x0b\x63lient_port\x18\x0b \x01(\r\x12\x0f\n\x07\x63onn_ip\x18\x0c \x01(\x07\x12\x11\n\tconn_port\x18\r \x01(\r\x12\x14\n\x0cinterface_ip\x18\x0e \x01(\x07\x12\x16\n\x0einterface_port\x18\x0f \x01(\r\x12\x11\n\tactual_ip\x18\x10 \x01(\x07\x12\x0c\n\x04\x66lag\x18\x11 \x01(\r\x12\x11\n\ttimestamp\x18\x12 \x01(\x07\x12\x0e\n\x06subcmd\x18\x13 \x01(\r\x12\x0e\n\x06result\x18\x14 \x01(\r\x12\x0e\n\x06\x61pp_id\x18\x15 \x01(\r\x12\x13\n\x0binstance_id\x18\x16 \x01(\r\x12\x12\n\nsession_id\x18\x17 \x01(\x04\x12\x0e\n\x06idc_id\x18\x18 \x01(\r\"\x85\x01\n\tDeltaHead\x12\x11\n\ttotal_len\x18\x01 \x01(\x04\x12\x0e\n\x06offset\x18\x02 \x01(\x04\x12\x12\n\nack_offset\x18\x03 \x01(\x04\x12\x0e\n\x06\x63ookie\x18\x04 \x01(\x0c\x12\x12\n\nack_cookie\x18\x05 \x01(\x0c\x12\x0e\n\x06result\x18\x06 \x01(\r\x12\r\n\x05\x66lags\x18\x07 \x01(\r\"\xa1\x03\n\x04Head\x12\x11\n\thead_type\x18\x01 \x01(\r\x12(\n\x07\x63s_head\x18\x02 \x01(\x0b\x32\x17.im.msg.msg_head.CSHead\x12*\n\x08s2c_head\x18\x03 \x01(\x0b\x32\x18.im.msg.msg_head.S2CHead\x12\x34\n\rhttpconn_head\x18\x04 \x01(\x0b\x32\x1d.im.msg.msg_head.HttpConnHead\x12\x12\n\npaint_flag\x18\x05 \x01(\r\x12,\n\tlogin_sig\x18\x06 \x01(\x0b\x32\x19.im.msg.msg_head.LoginSig\x12.\n\ndelta_head\x18\x07 \x01(\x0b\x32\x1a.im.msg.msg_head.DeltaHead\x12*\n\x08\x63\x32\x63_head\x18\x08 \x01(\x0b\x32\x18.im.msg.msg_head.C2CHead\x12.\n\nsconn_head\x18\t \x01(\x0b\x32\x1a.im.msg.msg_head.SConnHead\x12,\n\tinst_ctrl\x18\n \x01(\x0b\x32\x19.im.msg.msg_head.InstCtrl\"\x98\x04\n\x0cHttpConnHead\x12\x0b\n\x03uin\x18\x01 \x01(\x04\x12\x0f\n\x07\x63ommand\x18\x02 \x01(\r\x12\x13\n\x0bsub_command\x18\x03 \x01(\r\x12\x0b\n\x03seq\x18\x04 \x01(\r\x12\x0f\n\x07version\x18\x05 \x01(\r\x12\x13\n\x0bretry_times\x18\x06 \x01(\r\x12\x13\n\x0b\x63lient_type\x18\x07 \x01(\r\x12\x0e\n\x06pub_no\x18\x08 \x01(\r\x12\x10\n\x08local_id\x18\t \x01(\r\x12\x11\n\ttime_zone\x18\n \x01(\r\x12\x11\n\tclient_ip\x18\x0b \x01(\x07\x12\x13\n\x0b\x63lient_port\x18\x0c \x01(\r\x12\x11\n\tqzhttp_ip\x18\r \x01(\x07\x12\x13\n\x0bqzhttp_port\x18\x0e \x01(\r\x12\x0e\n\x06spp_ip\x18\x0f \x01(\x07\x12\x10\n\x08spp_port\x18\x10 \x01(\r\x12\x0c\n\x04\x66lag\x18\x11 \x01(\r\x12\x0b\n\x03key\x18\x12 \x01(\x0c\x12\x15\n\rcompress_type\x18\x13 \x01(\r\x12\x13\n\x0borigin_size\x18\x14 \x01(\r\x12\x12\n\nerror_code\x18\x15 \x01(\r\x12.\n\x08redirect\x18\x16 \x01(\x0b\x32\x1c.im.msg.msg_head.RedirectMsg\x12\x12\n\ncommand_id\x18\x17 \x01(\r\x12\x15\n\rservice_cmdid\x18\x18 \x01(\r\x12\x30\n\x08oidbhead\x18\x19 \x01(\x0b\x32\x1e.im.msg.msg_head.TransOidbHead\"\x9a\x01\n\x08InstCtrl\x12/\n\x0csend_to_inst\x18\x01 \x03(\x0b\x32\x19.im.msg.msg_head.InstInfo\x12/\n\x0c\x65xclude_inst\x18\x02 \x03(\x0b\x32\x19.im.msg.msg_head.InstInfo\x12,\n\tfrom_inst\x18\x03 \x01(\x0b\x32\x19.im.msg.msg_head.InstInfo\"V\n\x08InstInfo\x12\x0e\n\x06\x61pppid\x18\x01 \x01(\r\x12\x0e\n\x06instid\x18\x02 \x01(\r\x12\x10\n\x08platform\x18\x03 \x01(\r\x12\x18\n\x10\x65num_device_type\x18\n \x01(\r\"%\n\x08LoginSig\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\"\x87\x01\n\x0bRedirectMsg\x12\x18\n\x10last_redirect_ip\x18\x01 \x01(\x07\x12\x1a\n\x12last_redirect_port\x18\x02 \x01(\r\x12\x13\n\x0bredirect_ip\x18\x03 \x01(\x07\x12\x15\n\rredirect_port\x18\x04 \x01(\r\x12\x16\n\x0eredirect_count\x18\x05 \x01(\r\"\x88\x01\n\x07S2CHead\x12\x13\n\x0bsub_msgtype\x18\x01 \x01(\r\x12\x10\n\x08msg_type\x18\x02 \x01(\r\x12\x10\n\x08\x66rom_uin\x18\x03 \x01(\x04\x12\x0e\n\x06msg_id\x18\x04 \x01(\r\x12\x10\n\x08relay_ip\x18\x05 \x01(\x07\x12\x12\n\nrelay_port\x18\x06 \x01(\r\x12\x0e\n\x06to_uin\x18\x07 \x01(\x04\"\x0b\n\tSConnHead\"Y\n\rTransOidbHead\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\r\x12\x14\n\x0cservice_type\x18\x02 \x01(\r\x12\x0e\n\x06result\x18\x03 \x01(\r\x12\x11\n\terror_msg\x18\x04 \x01(\t') - -_C2CHEAD = _descriptor.Descriptor( - name='C2CHead', - full_name='im.msg.msg_head.C2CHead', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='im.msg.msg_head.C2CHead.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='from_uin', full_name='im.msg.msg_head.C2CHead.from_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cc_type', full_name='im.msg.msg_head.C2CHead.cc_type', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cc_cmd', full_name='im.msg.msg_head.C2CHead.cc_cmd', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='auth_pic_sig', full_name='im.msg.msg_head.C2CHead.auth_pic_sig', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='auth_sig', full_name='im.msg.msg_head.C2CHead.auth_sig', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='auth_buf', full_name='im.msg.msg_head.C2CHead.auth_buf', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='server_time', full_name='im.msg.msg_head.C2CHead.server_time', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='client_time', full_name='im.msg.msg_head.C2CHead.client_time', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rand', full_name='im.msg.msg_head.C2CHead.rand', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='phone_number', full_name='im.msg.msg_head.C2CHead.phone_number', index=10, - number=11, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=59, - serialized_end=271, -) - - -_CSHEAD = _descriptor.Descriptor( - name='CSHead', - full_name='im.msg.msg_head.CSHead', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='uin', full_name='im.msg.msg_head.CSHead.uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='command', full_name='im.msg.msg_head.CSHead.command', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='seq', full_name='im.msg.msg_head.CSHead.seq', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='version', full_name='im.msg.msg_head.CSHead.version', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='retry_times', full_name='im.msg.msg_head.CSHead.retry_times', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='client_type', full_name='im.msg.msg_head.CSHead.client_type', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pubno', full_name='im.msg.msg_head.CSHead.pubno', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='localid', full_name='im.msg.msg_head.CSHead.localid', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='timezone', full_name='im.msg.msg_head.CSHead.timezone', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='client_ip', full_name='im.msg.msg_head.CSHead.client_ip', index=9, - number=10, type=7, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='client_port', full_name='im.msg.msg_head.CSHead.client_port', index=10, - number=11, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='conn_ip', full_name='im.msg.msg_head.CSHead.conn_ip', index=11, - number=12, type=7, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='conn_port', full_name='im.msg.msg_head.CSHead.conn_port', index=12, - number=13, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='interface_ip', full_name='im.msg.msg_head.CSHead.interface_ip', index=13, - number=14, type=7, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='interface_port', full_name='im.msg.msg_head.CSHead.interface_port', index=14, - number=15, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='actual_ip', full_name='im.msg.msg_head.CSHead.actual_ip', index=15, - number=16, type=7, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='flag', full_name='im.msg.msg_head.CSHead.flag', index=16, - number=17, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='timestamp', full_name='im.msg.msg_head.CSHead.timestamp', index=17, - number=18, type=7, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='subcmd', full_name='im.msg.msg_head.CSHead.subcmd', index=18, - number=19, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='result', full_name='im.msg.msg_head.CSHead.result', index=19, - number=20, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='app_id', full_name='im.msg.msg_head.CSHead.app_id', index=20, - number=21, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='instance_id', full_name='im.msg.msg_head.CSHead.instance_id', index=21, - number=22, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='session_id', full_name='im.msg.msg_head.CSHead.session_id', index=22, - number=23, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='idc_id', full_name='im.msg.msg_head.CSHead.idc_id', index=23, - number=24, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=274, - serialized_end=713, -) - - -_DELTAHEAD = _descriptor.Descriptor( - name='DeltaHead', - full_name='im.msg.msg_head.DeltaHead', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='total_len', full_name='im.msg.msg_head.DeltaHead.total_len', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='offset', full_name='im.msg.msg_head.DeltaHead.offset', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ack_offset', full_name='im.msg.msg_head.DeltaHead.ack_offset', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cookie', full_name='im.msg.msg_head.DeltaHead.cookie', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ack_cookie', full_name='im.msg.msg_head.DeltaHead.ack_cookie', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='result', full_name='im.msg.msg_head.DeltaHead.result', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='flags', full_name='im.msg.msg_head.DeltaHead.flags', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=716, - serialized_end=849, -) - - -_HEAD = _descriptor.Descriptor( - name='Head', - full_name='im.msg.msg_head.Head', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='head_type', full_name='im.msg.msg_head.Head.head_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cs_head', full_name='im.msg.msg_head.Head.cs_head', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='s2c_head', full_name='im.msg.msg_head.Head.s2c_head', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='httpconn_head', full_name='im.msg.msg_head.Head.httpconn_head', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='paint_flag', full_name='im.msg.msg_head.Head.paint_flag', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='login_sig', full_name='im.msg.msg_head.Head.login_sig', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='delta_head', full_name='im.msg.msg_head.Head.delta_head', index=6, - number=7, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='c2c_head', full_name='im.msg.msg_head.Head.c2c_head', index=7, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sconn_head', full_name='im.msg.msg_head.Head.sconn_head', index=8, - number=9, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='inst_ctrl', full_name='im.msg.msg_head.Head.inst_ctrl', index=9, - number=10, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=852, - serialized_end=1269, -) - - -_HTTPCONNHEAD = _descriptor.Descriptor( - name='HttpConnHead', - full_name='im.msg.msg_head.HttpConnHead', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='uin', full_name='im.msg.msg_head.HttpConnHead.uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='command', full_name='im.msg.msg_head.HttpConnHead.command', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sub_command', full_name='im.msg.msg_head.HttpConnHead.sub_command', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='seq', full_name='im.msg.msg_head.HttpConnHead.seq', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='version', full_name='im.msg.msg_head.HttpConnHead.version', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='retry_times', full_name='im.msg.msg_head.HttpConnHead.retry_times', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='client_type', full_name='im.msg.msg_head.HttpConnHead.client_type', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pub_no', full_name='im.msg.msg_head.HttpConnHead.pub_no', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='local_id', full_name='im.msg.msg_head.HttpConnHead.local_id', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='time_zone', full_name='im.msg.msg_head.HttpConnHead.time_zone', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='client_ip', full_name='im.msg.msg_head.HttpConnHead.client_ip', index=10, - number=11, type=7, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='client_port', full_name='im.msg.msg_head.HttpConnHead.client_port', index=11, - number=12, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='qzhttp_ip', full_name='im.msg.msg_head.HttpConnHead.qzhttp_ip', index=12, - number=13, type=7, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='qzhttp_port', full_name='im.msg.msg_head.HttpConnHead.qzhttp_port', index=13, - number=14, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='spp_ip', full_name='im.msg.msg_head.HttpConnHead.spp_ip', index=14, - number=15, type=7, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='spp_port', full_name='im.msg.msg_head.HttpConnHead.spp_port', index=15, - number=16, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='flag', full_name='im.msg.msg_head.HttpConnHead.flag', index=16, - number=17, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='key', full_name='im.msg.msg_head.HttpConnHead.key', index=17, - number=18, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='compress_type', full_name='im.msg.msg_head.HttpConnHead.compress_type', index=18, - number=19, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='origin_size', full_name='im.msg.msg_head.HttpConnHead.origin_size', index=19, - number=20, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='error_code', full_name='im.msg.msg_head.HttpConnHead.error_code', index=20, - number=21, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='redirect', full_name='im.msg.msg_head.HttpConnHead.redirect', index=21, - number=22, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='command_id', full_name='im.msg.msg_head.HttpConnHead.command_id', index=22, - number=23, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='service_cmdid', full_name='im.msg.msg_head.HttpConnHead.service_cmdid', index=23, - number=24, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='oidbhead', full_name='im.msg.msg_head.HttpConnHead.oidbhead', index=24, - number=25, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1272, - serialized_end=1808, -) - - -_INSTCTRL = _descriptor.Descriptor( - name='InstCtrl', - full_name='im.msg.msg_head.InstCtrl', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='send_to_inst', full_name='im.msg.msg_head.InstCtrl.send_to_inst', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='exclude_inst', full_name='im.msg.msg_head.InstCtrl.exclude_inst', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='from_inst', full_name='im.msg.msg_head.InstCtrl.from_inst', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1811, - serialized_end=1965, -) - - -_INSTINFO = _descriptor.Descriptor( - name='InstInfo', - full_name='im.msg.msg_head.InstInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='apppid', full_name='im.msg.msg_head.InstInfo.apppid', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='instid', full_name='im.msg.msg_head.InstInfo.instid', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='platform', full_name='im.msg.msg_head.InstInfo.platform', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='enum_device_type', full_name='im.msg.msg_head.InstInfo.enum_device_type', index=3, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1967, - serialized_end=2053, -) - - -_LOGINSIG = _descriptor.Descriptor( - name='LoginSig', - full_name='im.msg.msg_head.LoginSig', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='type', full_name='im.msg.msg_head.LoginSig.type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='im.msg.msg_head.LoginSig.sig', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2055, - serialized_end=2092, -) - - -_REDIRECTMSG = _descriptor.Descriptor( - name='RedirectMsg', - full_name='im.msg.msg_head.RedirectMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='last_redirect_ip', full_name='im.msg.msg_head.RedirectMsg.last_redirect_ip', index=0, - number=1, type=7, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_redirect_port', full_name='im.msg.msg_head.RedirectMsg.last_redirect_port', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='redirect_ip', full_name='im.msg.msg_head.RedirectMsg.redirect_ip', index=2, - number=3, type=7, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='redirect_port', full_name='im.msg.msg_head.RedirectMsg.redirect_port', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='redirect_count', full_name='im.msg.msg_head.RedirectMsg.redirect_count', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2095, - serialized_end=2230, -) - - -_S2CHEAD = _descriptor.Descriptor( - name='S2CHead', - full_name='im.msg.msg_head.S2CHead', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='sub_msgtype', full_name='im.msg.msg_head.S2CHead.sub_msgtype', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_type', full_name='im.msg.msg_head.S2CHead.msg_type', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='from_uin', full_name='im.msg.msg_head.S2CHead.from_uin', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_id', full_name='im.msg.msg_head.S2CHead.msg_id', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='relay_ip', full_name='im.msg.msg_head.S2CHead.relay_ip', index=4, - number=5, type=7, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='relay_port', full_name='im.msg.msg_head.S2CHead.relay_port', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_uin', full_name='im.msg.msg_head.S2CHead.to_uin', index=6, - number=7, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2233, - serialized_end=2369, -) - - -_SCONNHEAD = _descriptor.Descriptor( - name='SConnHead', - full_name='im.msg.msg_head.SConnHead', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2371, - serialized_end=2382, -) - - -_TRANSOIDBHEAD = _descriptor.Descriptor( - name='TransOidbHead', - full_name='im.msg.msg_head.TransOidbHead', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='command', full_name='im.msg.msg_head.TransOidbHead.command', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='service_type', full_name='im.msg.msg_head.TransOidbHead.service_type', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='result', full_name='im.msg.msg_head.TransOidbHead.result', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='error_msg', full_name='im.msg.msg_head.TransOidbHead.error_msg', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2384, - serialized_end=2473, -) - -_HEAD.fields_by_name['cs_head'].message_type = _CSHEAD -_HEAD.fields_by_name['s2c_head'].message_type = _S2CHEAD -_HEAD.fields_by_name['httpconn_head'].message_type = _HTTPCONNHEAD -_HEAD.fields_by_name['login_sig'].message_type = _LOGINSIG -_HEAD.fields_by_name['delta_head'].message_type = _DELTAHEAD -_HEAD.fields_by_name['c2c_head'].message_type = _C2CHEAD -_HEAD.fields_by_name['sconn_head'].message_type = _SCONNHEAD -_HEAD.fields_by_name['inst_ctrl'].message_type = _INSTCTRL -_HTTPCONNHEAD.fields_by_name['redirect'].message_type = _REDIRECTMSG -_HTTPCONNHEAD.fields_by_name['oidbhead'].message_type = _TRANSOIDBHEAD -_INSTCTRL.fields_by_name['send_to_inst'].message_type = _INSTINFO -_INSTCTRL.fields_by_name['exclude_inst'].message_type = _INSTINFO -_INSTCTRL.fields_by_name['from_inst'].message_type = _INSTINFO -DESCRIPTOR.message_types_by_name['C2CHead'] = _C2CHEAD -DESCRIPTOR.message_types_by_name['CSHead'] = _CSHEAD -DESCRIPTOR.message_types_by_name['DeltaHead'] = _DELTAHEAD -DESCRIPTOR.message_types_by_name['Head'] = _HEAD -DESCRIPTOR.message_types_by_name['HttpConnHead'] = _HTTPCONNHEAD -DESCRIPTOR.message_types_by_name['InstCtrl'] = _INSTCTRL -DESCRIPTOR.message_types_by_name['InstInfo'] = _INSTINFO -DESCRIPTOR.message_types_by_name['LoginSig'] = _LOGINSIG -DESCRIPTOR.message_types_by_name['RedirectMsg'] = _REDIRECTMSG -DESCRIPTOR.message_types_by_name['S2CHead'] = _S2CHEAD -DESCRIPTOR.message_types_by_name['SConnHead'] = _SCONNHEAD -DESCRIPTOR.message_types_by_name['TransOidbHead'] = _TRANSOIDBHEAD -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - +_C2CHEAD = DESCRIPTOR.message_types_by_name['C2CHead'] +_CSHEAD = DESCRIPTOR.message_types_by_name['CSHead'] +_DELTAHEAD = DESCRIPTOR.message_types_by_name['DeltaHead'] +_HEAD = DESCRIPTOR.message_types_by_name['Head'] +_HTTPCONNHEAD = DESCRIPTOR.message_types_by_name['HttpConnHead'] +_INSTCTRL = DESCRIPTOR.message_types_by_name['InstCtrl'] +_INSTINFO = DESCRIPTOR.message_types_by_name['InstInfo'] +_LOGINSIG = DESCRIPTOR.message_types_by_name['LoginSig'] +_REDIRECTMSG = DESCRIPTOR.message_types_by_name['RedirectMsg'] +_S2CHEAD = DESCRIPTOR.message_types_by_name['S2CHead'] +_SCONNHEAD = DESCRIPTOR.message_types_by_name['SConnHead'] +_TRANSOIDBHEAD = DESCRIPTOR.message_types_by_name['TransOidbHead'] C2CHead = _reflection.GeneratedProtocolMessageType('C2CHead', (_message.Message,), { 'DESCRIPTOR' : _C2CHEAD, '__module__' : 'cai.pb.im.msg.msg_head.msg_head_pb2' @@ -1149,5 +114,31 @@ }) _sym_db.RegisterMessage(TransOidbHead) - +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _C2CHEAD._serialized_start=59 + _C2CHEAD._serialized_end=271 + _CSHEAD._serialized_start=274 + _CSHEAD._serialized_end=713 + _DELTAHEAD._serialized_start=716 + _DELTAHEAD._serialized_end=849 + _HEAD._serialized_start=852 + _HEAD._serialized_end=1269 + _HTTPCONNHEAD._serialized_start=1272 + _HTTPCONNHEAD._serialized_end=1808 + _INSTCTRL._serialized_start=1811 + _INSTCTRL._serialized_end=1965 + _INSTINFO._serialized_start=1967 + _INSTINFO._serialized_end=2053 + _LOGINSIG._serialized_start=2055 + _LOGINSIG._serialized_end=2092 + _REDIRECTMSG._serialized_start=2095 + _REDIRECTMSG._serialized_end=2230 + _S2CHEAD._serialized_start=2233 + _S2CHEAD._serialized_end=2369 + _SCONNHEAD._serialized_start=2371 + _SCONNHEAD._serialized_end=2382 + _TRANSOIDBHEAD._serialized_start=2384 + _TRANSOIDBHEAD._serialized_end=2473 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/msg/msg_head/msg_head_pb2.pyi b/cai/pb/im/msg/msg_head/msg_head_pb2.pyi index 8288d243..24b94614 100644 --- a/cai/pb/im/msg/msg_head/msg_head_pb2.pyi +++ b/cai/pb/im/msg/msg_head/msg_head_pb2.pyi @@ -32,10 +32,13 @@ from typing_extensions import ( ) -DESCRIPTOR: FileDescriptor = ... +DESCRIPTOR: FileDescriptor class C2CHead(Message): - DESCRIPTOR: Descriptor = ... + """tencent/im/msg/im_msg_head.java + + """ + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int FROM_UIN_FIELD_NUMBER: int CC_TYPE_FIELD_NUMBER: int @@ -47,37 +50,36 @@ class C2CHead(Message): CLIENT_TIME_FIELD_NUMBER: int RAND_FIELD_NUMBER: int PHONE_NUMBER_FIELD_NUMBER: int - to_uin: int = ... - from_uin: int = ... - cc_type: int = ... - cc_cmd: int = ... - auth_pic_sig: bytes = ... - auth_sig: bytes = ... - auth_buf: bytes = ... - server_time: int = ... - client_time: int = ... - rand: int = ... - phone_number: Text = ... - + to_uin: int + from_uin: int + cc_type: int + cc_cmd: int + auth_pic_sig: bytes + auth_sig: bytes + auth_buf: bytes + server_time: int + client_time: int + rand: int + phone_number: Text def __init__(self, *, - to_uin : Optional[int] = ..., - from_uin : Optional[int] = ..., - cc_type : Optional[int] = ..., - cc_cmd : Optional[int] = ..., - auth_pic_sig : Optional[bytes] = ..., - auth_sig : Optional[bytes] = ..., - auth_buf : Optional[bytes] = ..., - server_time : Optional[int] = ..., - client_time : Optional[int] = ..., - rand : Optional[int] = ..., - phone_number : Optional[Text] = ..., + to_uin: Optional[int] = ..., + from_uin: Optional[int] = ..., + cc_type: Optional[int] = ..., + cc_cmd: Optional[int] = ..., + auth_pic_sig: Optional[bytes] = ..., + auth_sig: Optional[bytes] = ..., + auth_buf: Optional[bytes] = ..., + server_time: Optional[int] = ..., + client_time: Optional[int] = ..., + rand: Optional[int] = ..., + phone_number: Optional[Text] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"auth_buf",b"auth_buf",u"auth_pic_sig",b"auth_pic_sig",u"auth_sig",b"auth_sig",u"cc_cmd",b"cc_cmd",u"cc_type",b"cc_type",u"client_time",b"client_time",u"from_uin",b"from_uin",u"phone_number",b"phone_number",u"rand",b"rand",u"server_time",b"server_time",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"auth_buf",b"auth_buf",u"auth_pic_sig",b"auth_pic_sig",u"auth_sig",b"auth_sig",u"cc_cmd",b"cc_cmd",u"cc_type",b"cc_type",u"client_time",b"client_time",u"from_uin",b"from_uin",u"phone_number",b"phone_number",u"rand",b"rand",u"server_time",b"server_time",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["auth_buf",b"auth_buf","auth_pic_sig",b"auth_pic_sig","auth_sig",b"auth_sig","cc_cmd",b"cc_cmd","cc_type",b"cc_type","client_time",b"client_time","from_uin",b"from_uin","phone_number",b"phone_number","rand",b"rand","server_time",b"server_time","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["auth_buf",b"auth_buf","auth_pic_sig",b"auth_pic_sig","auth_sig",b"auth_sig","cc_cmd",b"cc_cmd","cc_type",b"cc_type","client_time",b"client_time","from_uin",b"from_uin","phone_number",b"phone_number","rand",b"rand","server_time",b"server_time","to_uin",b"to_uin"]) -> None: ... class CSHead(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor UIN_FIELD_NUMBER: int COMMAND_FIELD_NUMBER: int SEQ_FIELD_NUMBER: int @@ -102,63 +104,62 @@ class CSHead(Message): INSTANCE_ID_FIELD_NUMBER: int SESSION_ID_FIELD_NUMBER: int IDC_ID_FIELD_NUMBER: int - uin: int = ... - command: int = ... - seq: int = ... - version: int = ... - retry_times: int = ... - client_type: int = ... - pubno: int = ... - localid: int = ... - timezone: int = ... - client_ip: int = ... - client_port: int = ... - conn_ip: int = ... - conn_port: int = ... - interface_ip: int = ... - interface_port: int = ... - actual_ip: int = ... - flag: int = ... - timestamp: int = ... - subcmd: int = ... - result: int = ... - app_id: int = ... - instance_id: int = ... - session_id: int = ... - idc_id: int = ... - + uin: int + command: int + seq: int + version: int + retry_times: int + client_type: int + pubno: int + localid: int + timezone: int + client_ip: int + client_port: int + conn_ip: int + conn_port: int + interface_ip: int + interface_port: int + actual_ip: int + flag: int + timestamp: int + subcmd: int + result: int + app_id: int + instance_id: int + session_id: int + idc_id: int def __init__(self, *, - uin : Optional[int] = ..., - command : Optional[int] = ..., - seq : Optional[int] = ..., - version : Optional[int] = ..., - retry_times : Optional[int] = ..., - client_type : Optional[int] = ..., - pubno : Optional[int] = ..., - localid : Optional[int] = ..., - timezone : Optional[int] = ..., - client_ip : Optional[int] = ..., - client_port : Optional[int] = ..., - conn_ip : Optional[int] = ..., - conn_port : Optional[int] = ..., - interface_ip : Optional[int] = ..., - interface_port : Optional[int] = ..., - actual_ip : Optional[int] = ..., - flag : Optional[int] = ..., - timestamp : Optional[int] = ..., - subcmd : Optional[int] = ..., - result : Optional[int] = ..., - app_id : Optional[int] = ..., - instance_id : Optional[int] = ..., - session_id : Optional[int] = ..., - idc_id : Optional[int] = ..., + uin: Optional[int] = ..., + command: Optional[int] = ..., + seq: Optional[int] = ..., + version: Optional[int] = ..., + retry_times: Optional[int] = ..., + client_type: Optional[int] = ..., + pubno: Optional[int] = ..., + localid: Optional[int] = ..., + timezone: Optional[int] = ..., + client_ip: Optional[int] = ..., + client_port: Optional[int] = ..., + conn_ip: Optional[int] = ..., + conn_port: Optional[int] = ..., + interface_ip: Optional[int] = ..., + interface_port: Optional[int] = ..., + actual_ip: Optional[int] = ..., + flag: Optional[int] = ..., + timestamp: Optional[int] = ..., + subcmd: Optional[int] = ..., + result: Optional[int] = ..., + app_id: Optional[int] = ..., + instance_id: Optional[int] = ..., + session_id: Optional[int] = ..., + idc_id: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"actual_ip",b"actual_ip",u"app_id",b"app_id",u"client_ip",b"client_ip",u"client_port",b"client_port",u"client_type",b"client_type",u"command",b"command",u"conn_ip",b"conn_ip",u"conn_port",b"conn_port",u"flag",b"flag",u"idc_id",b"idc_id",u"instance_id",b"instance_id",u"interface_ip",b"interface_ip",u"interface_port",b"interface_port",u"localid",b"localid",u"pubno",b"pubno",u"result",b"result",u"retry_times",b"retry_times",u"seq",b"seq",u"session_id",b"session_id",u"subcmd",b"subcmd",u"timestamp",b"timestamp",u"timezone",b"timezone",u"uin",b"uin",u"version",b"version"]) -> bool: ... - def ClearField(self, field_name: Literal[u"actual_ip",b"actual_ip",u"app_id",b"app_id",u"client_ip",b"client_ip",u"client_port",b"client_port",u"client_type",b"client_type",u"command",b"command",u"conn_ip",b"conn_ip",u"conn_port",b"conn_port",u"flag",b"flag",u"idc_id",b"idc_id",u"instance_id",b"instance_id",u"interface_ip",b"interface_ip",u"interface_port",b"interface_port",u"localid",b"localid",u"pubno",b"pubno",u"result",b"result",u"retry_times",b"retry_times",u"seq",b"seq",u"session_id",b"session_id",u"subcmd",b"subcmd",u"timestamp",b"timestamp",u"timezone",b"timezone",u"uin",b"uin",u"version",b"version"]) -> None: ... + def HasField(self, field_name: Literal["actual_ip",b"actual_ip","app_id",b"app_id","client_ip",b"client_ip","client_port",b"client_port","client_type",b"client_type","command",b"command","conn_ip",b"conn_ip","conn_port",b"conn_port","flag",b"flag","idc_id",b"idc_id","instance_id",b"instance_id","interface_ip",b"interface_ip","interface_port",b"interface_port","localid",b"localid","pubno",b"pubno","result",b"result","retry_times",b"retry_times","seq",b"seq","session_id",b"session_id","subcmd",b"subcmd","timestamp",b"timestamp","timezone",b"timezone","uin",b"uin","version",b"version"]) -> bool: ... + def ClearField(self, field_name: Literal["actual_ip",b"actual_ip","app_id",b"app_id","client_ip",b"client_ip","client_port",b"client_port","client_type",b"client_type","command",b"command","conn_ip",b"conn_ip","conn_port",b"conn_port","flag",b"flag","idc_id",b"idc_id","instance_id",b"instance_id","interface_ip",b"interface_ip","interface_port",b"interface_port","localid",b"localid","pubno",b"pubno","result",b"result","retry_times",b"retry_times","seq",b"seq","session_id",b"session_id","subcmd",b"subcmd","timestamp",b"timestamp","timezone",b"timezone","uin",b"uin","version",b"version"]) -> None: ... class DeltaHead(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TOTAL_LEN_FIELD_NUMBER: int OFFSET_FIELD_NUMBER: int ACK_OFFSET_FIELD_NUMBER: int @@ -166,29 +167,28 @@ class DeltaHead(Message): ACK_COOKIE_FIELD_NUMBER: int RESULT_FIELD_NUMBER: int FLAGS_FIELD_NUMBER: int - total_len: int = ... - offset: int = ... - ack_offset: int = ... - cookie: bytes = ... - ack_cookie: bytes = ... - result: int = ... - flags: int = ... - + total_len: int + offset: int + ack_offset: int + cookie: bytes + ack_cookie: bytes + result: int + flags: int def __init__(self, *, - total_len : Optional[int] = ..., - offset : Optional[int] = ..., - ack_offset : Optional[int] = ..., - cookie : Optional[bytes] = ..., - ack_cookie : Optional[bytes] = ..., - result : Optional[int] = ..., - flags : Optional[int] = ..., + total_len: Optional[int] = ..., + offset: Optional[int] = ..., + ack_offset: Optional[int] = ..., + cookie: Optional[bytes] = ..., + ack_cookie: Optional[bytes] = ..., + result: Optional[int] = ..., + flags: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"ack_cookie",b"ack_cookie",u"ack_offset",b"ack_offset",u"cookie",b"cookie",u"flags",b"flags",u"offset",b"offset",u"result",b"result",u"total_len",b"total_len"]) -> bool: ... - def ClearField(self, field_name: Literal[u"ack_cookie",b"ack_cookie",u"ack_offset",b"ack_offset",u"cookie",b"cookie",u"flags",b"flags",u"offset",b"offset",u"result",b"result",u"total_len",b"total_len"]) -> None: ... + def HasField(self, field_name: Literal["ack_cookie",b"ack_cookie","ack_offset",b"ack_offset","cookie",b"cookie","flags",b"flags","offset",b"offset","result",b"result","total_len",b"total_len"]) -> bool: ... + def ClearField(self, field_name: Literal["ack_cookie",b"ack_cookie","ack_offset",b"ack_offset","cookie",b"cookie","flags",b"flags","offset",b"offset","result",b"result","total_len",b"total_len"]) -> None: ... class Head(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor HEAD_TYPE_FIELD_NUMBER: int CS_HEAD_FIELD_NUMBER: int S2C_HEAD_FIELD_NUMBER: int @@ -199,51 +199,42 @@ class Head(Message): C2C_HEAD_FIELD_NUMBER: int SCONN_HEAD_FIELD_NUMBER: int INST_CTRL_FIELD_NUMBER: int - head_type: int = ... - paint_flag: int = ... - + head_type: int @property def cs_head(self) -> CSHead: ... - @property def s2c_head(self) -> S2CHead: ... - @property def httpconn_head(self) -> HttpConnHead: ... - + paint_flag: int @property def login_sig(self) -> LoginSig: ... - @property def delta_head(self) -> DeltaHead: ... - @property def c2c_head(self) -> C2CHead: ... - @property def sconn_head(self) -> SConnHead: ... - @property def inst_ctrl(self) -> InstCtrl: ... - def __init__(self, *, - head_type : Optional[int] = ..., - cs_head : Optional[CSHead] = ..., - s2c_head : Optional[S2CHead] = ..., - httpconn_head : Optional[HttpConnHead] = ..., - paint_flag : Optional[int] = ..., - login_sig : Optional[LoginSig] = ..., - delta_head : Optional[DeltaHead] = ..., - c2c_head : Optional[C2CHead] = ..., - sconn_head : Optional[SConnHead] = ..., - inst_ctrl : Optional[InstCtrl] = ..., + head_type: Optional[int] = ..., + cs_head: Optional[CSHead] = ..., + s2c_head: Optional[S2CHead] = ..., + httpconn_head: Optional[HttpConnHead] = ..., + paint_flag: Optional[int] = ..., + login_sig: Optional[LoginSig] = ..., + delta_head: Optional[DeltaHead] = ..., + c2c_head: Optional[C2CHead] = ..., + sconn_head: Optional[SConnHead] = ..., + inst_ctrl: Optional[InstCtrl] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"c2c_head",b"c2c_head",u"cs_head",b"cs_head",u"delta_head",b"delta_head",u"head_type",b"head_type",u"httpconn_head",b"httpconn_head",u"inst_ctrl",b"inst_ctrl",u"login_sig",b"login_sig",u"paint_flag",b"paint_flag",u"s2c_head",b"s2c_head",u"sconn_head",b"sconn_head"]) -> bool: ... - def ClearField(self, field_name: Literal[u"c2c_head",b"c2c_head",u"cs_head",b"cs_head",u"delta_head",b"delta_head",u"head_type",b"head_type",u"httpconn_head",b"httpconn_head",u"inst_ctrl",b"inst_ctrl",u"login_sig",b"login_sig",u"paint_flag",b"paint_flag",u"s2c_head",b"s2c_head",u"sconn_head",b"sconn_head"]) -> None: ... + def HasField(self, field_name: Literal["c2c_head",b"c2c_head","cs_head",b"cs_head","delta_head",b"delta_head","head_type",b"head_type","httpconn_head",b"httpconn_head","inst_ctrl",b"inst_ctrl","login_sig",b"login_sig","paint_flag",b"paint_flag","s2c_head",b"s2c_head","sconn_head",b"sconn_head"]) -> bool: ... + def ClearField(self, field_name: Literal["c2c_head",b"c2c_head","cs_head",b"cs_head","delta_head",b"delta_head","head_type",b"head_type","httpconn_head",b"httpconn_head","inst_ctrl",b"inst_ctrl","login_sig",b"login_sig","paint_flag",b"paint_flag","s2c_head",b"s2c_head","sconn_head",b"sconn_head"]) -> None: ... class HttpConnHead(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor UIN_FIELD_NUMBER: int COMMAND_FIELD_NUMBER: int SUB_COMMAND_FIELD_NUMBER: int @@ -269,153 +260,143 @@ class HttpConnHead(Message): COMMAND_ID_FIELD_NUMBER: int SERVICE_CMDID_FIELD_NUMBER: int OIDBHEAD_FIELD_NUMBER: int - uin: int = ... - command: int = ... - sub_command: int = ... - seq: int = ... - version: int = ... - retry_times: int = ... - client_type: int = ... - pub_no: int = ... - local_id: int = ... - time_zone: int = ... - client_ip: int = ... - client_port: int = ... - qzhttp_ip: int = ... - qzhttp_port: int = ... - spp_ip: int = ... - spp_port: int = ... - flag: int = ... - key: bytes = ... - compress_type: int = ... - origin_size: int = ... - error_code: int = ... - command_id: int = ... - service_cmdid: int = ... - + uin: int + command: int + sub_command: int + seq: int + version: int + retry_times: int + client_type: int + pub_no: int + local_id: int + time_zone: int + client_ip: int + client_port: int + qzhttp_ip: int + qzhttp_port: int + spp_ip: int + spp_port: int + flag: int + key: bytes + compress_type: int + origin_size: int + error_code: int @property def redirect(self) -> RedirectMsg: ... - + command_id: int + service_cmdid: int @property def oidbhead(self) -> TransOidbHead: ... - def __init__(self, *, - uin : Optional[int] = ..., - command : Optional[int] = ..., - sub_command : Optional[int] = ..., - seq : Optional[int] = ..., - version : Optional[int] = ..., - retry_times : Optional[int] = ..., - client_type : Optional[int] = ..., - pub_no : Optional[int] = ..., - local_id : Optional[int] = ..., - time_zone : Optional[int] = ..., - client_ip : Optional[int] = ..., - client_port : Optional[int] = ..., - qzhttp_ip : Optional[int] = ..., - qzhttp_port : Optional[int] = ..., - spp_ip : Optional[int] = ..., - spp_port : Optional[int] = ..., - flag : Optional[int] = ..., - key : Optional[bytes] = ..., - compress_type : Optional[int] = ..., - origin_size : Optional[int] = ..., - error_code : Optional[int] = ..., - redirect : Optional[RedirectMsg] = ..., - command_id : Optional[int] = ..., - service_cmdid : Optional[int] = ..., - oidbhead : Optional[TransOidbHead] = ..., + uin: Optional[int] = ..., + command: Optional[int] = ..., + sub_command: Optional[int] = ..., + seq: Optional[int] = ..., + version: Optional[int] = ..., + retry_times: Optional[int] = ..., + client_type: Optional[int] = ..., + pub_no: Optional[int] = ..., + local_id: Optional[int] = ..., + time_zone: Optional[int] = ..., + client_ip: Optional[int] = ..., + client_port: Optional[int] = ..., + qzhttp_ip: Optional[int] = ..., + qzhttp_port: Optional[int] = ..., + spp_ip: Optional[int] = ..., + spp_port: Optional[int] = ..., + flag: Optional[int] = ..., + key: Optional[bytes] = ..., + compress_type: Optional[int] = ..., + origin_size: Optional[int] = ..., + error_code: Optional[int] = ..., + redirect: Optional[RedirectMsg] = ..., + command_id: Optional[int] = ..., + service_cmdid: Optional[int] = ..., + oidbhead: Optional[TransOidbHead] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"client_ip",b"client_ip",u"client_port",b"client_port",u"client_type",b"client_type",u"command",b"command",u"command_id",b"command_id",u"compress_type",b"compress_type",u"error_code",b"error_code",u"flag",b"flag",u"key",b"key",u"local_id",b"local_id",u"oidbhead",b"oidbhead",u"origin_size",b"origin_size",u"pub_no",b"pub_no",u"qzhttp_ip",b"qzhttp_ip",u"qzhttp_port",b"qzhttp_port",u"redirect",b"redirect",u"retry_times",b"retry_times",u"seq",b"seq",u"service_cmdid",b"service_cmdid",u"spp_ip",b"spp_ip",u"spp_port",b"spp_port",u"sub_command",b"sub_command",u"time_zone",b"time_zone",u"uin",b"uin",u"version",b"version"]) -> bool: ... - def ClearField(self, field_name: Literal[u"client_ip",b"client_ip",u"client_port",b"client_port",u"client_type",b"client_type",u"command",b"command",u"command_id",b"command_id",u"compress_type",b"compress_type",u"error_code",b"error_code",u"flag",b"flag",u"key",b"key",u"local_id",b"local_id",u"oidbhead",b"oidbhead",u"origin_size",b"origin_size",u"pub_no",b"pub_no",u"qzhttp_ip",b"qzhttp_ip",u"qzhttp_port",b"qzhttp_port",u"redirect",b"redirect",u"retry_times",b"retry_times",u"seq",b"seq",u"service_cmdid",b"service_cmdid",u"spp_ip",b"spp_ip",u"spp_port",b"spp_port",u"sub_command",b"sub_command",u"time_zone",b"time_zone",u"uin",b"uin",u"version",b"version"]) -> None: ... + def HasField(self, field_name: Literal["client_ip",b"client_ip","client_port",b"client_port","client_type",b"client_type","command",b"command","command_id",b"command_id","compress_type",b"compress_type","error_code",b"error_code","flag",b"flag","key",b"key","local_id",b"local_id","oidbhead",b"oidbhead","origin_size",b"origin_size","pub_no",b"pub_no","qzhttp_ip",b"qzhttp_ip","qzhttp_port",b"qzhttp_port","redirect",b"redirect","retry_times",b"retry_times","seq",b"seq","service_cmdid",b"service_cmdid","spp_ip",b"spp_ip","spp_port",b"spp_port","sub_command",b"sub_command","time_zone",b"time_zone","uin",b"uin","version",b"version"]) -> bool: ... + def ClearField(self, field_name: Literal["client_ip",b"client_ip","client_port",b"client_port","client_type",b"client_type","command",b"command","command_id",b"command_id","compress_type",b"compress_type","error_code",b"error_code","flag",b"flag","key",b"key","local_id",b"local_id","oidbhead",b"oidbhead","origin_size",b"origin_size","pub_no",b"pub_no","qzhttp_ip",b"qzhttp_ip","qzhttp_port",b"qzhttp_port","redirect",b"redirect","retry_times",b"retry_times","seq",b"seq","service_cmdid",b"service_cmdid","spp_ip",b"spp_ip","spp_port",b"spp_port","sub_command",b"sub_command","time_zone",b"time_zone","uin",b"uin","version",b"version"]) -> None: ... class InstCtrl(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SEND_TO_INST_FIELD_NUMBER: int EXCLUDE_INST_FIELD_NUMBER: int FROM_INST_FIELD_NUMBER: int - @property def send_to_inst(self) -> RepeatedCompositeFieldContainer[InstInfo]: ... - @property def exclude_inst(self) -> RepeatedCompositeFieldContainer[InstInfo]: ... - @property def from_inst(self) -> InstInfo: ... - def __init__(self, *, - send_to_inst : Optional[Iterable[InstInfo]] = ..., - exclude_inst : Optional[Iterable[InstInfo]] = ..., - from_inst : Optional[InstInfo] = ..., + send_to_inst: Optional[Iterable[InstInfo]] = ..., + exclude_inst: Optional[Iterable[InstInfo]] = ..., + from_inst: Optional[InstInfo] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"from_inst",b"from_inst"]) -> bool: ... - def ClearField(self, field_name: Literal[u"exclude_inst",b"exclude_inst",u"from_inst",b"from_inst",u"send_to_inst",b"send_to_inst"]) -> None: ... + def HasField(self, field_name: Literal["from_inst",b"from_inst"]) -> bool: ... + def ClearField(self, field_name: Literal["exclude_inst",b"exclude_inst","from_inst",b"from_inst","send_to_inst",b"send_to_inst"]) -> None: ... class InstInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor APPPID_FIELD_NUMBER: int INSTID_FIELD_NUMBER: int PLATFORM_FIELD_NUMBER: int ENUM_DEVICE_TYPE_FIELD_NUMBER: int - apppid: int = ... - instid: int = ... - platform: int = ... - enum_device_type: int = ... - + apppid: int + instid: int + platform: int + enum_device_type: int def __init__(self, *, - apppid : Optional[int] = ..., - instid : Optional[int] = ..., - platform : Optional[int] = ..., - enum_device_type : Optional[int] = ..., + apppid: Optional[int] = ..., + instid: Optional[int] = ..., + platform: Optional[int] = ..., + enum_device_type: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"apppid",b"apppid",u"enum_device_type",b"enum_device_type",u"instid",b"instid",u"platform",b"platform"]) -> bool: ... - def ClearField(self, field_name: Literal[u"apppid",b"apppid",u"enum_device_type",b"enum_device_type",u"instid",b"instid",u"platform",b"platform"]) -> None: ... + def HasField(self, field_name: Literal["apppid",b"apppid","enum_device_type",b"enum_device_type","instid",b"instid","platform",b"platform"]) -> bool: ... + def ClearField(self, field_name: Literal["apppid",b"apppid","enum_device_type",b"enum_device_type","instid",b"instid","platform",b"platform"]) -> None: ... class LoginSig(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TYPE_FIELD_NUMBER: int SIG_FIELD_NUMBER: int - type: int = ... - sig: bytes = ... - + type: int + sig: bytes def __init__(self, *, - type : Optional[int] = ..., - sig : Optional[bytes] = ..., + type: Optional[int] = ..., + sig: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"sig",b"sig",u"type",b"type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"sig",b"sig",u"type",b"type"]) -> None: ... + def HasField(self, field_name: Literal["sig",b"sig","type",b"type"]) -> bool: ... + def ClearField(self, field_name: Literal["sig",b"sig","type",b"type"]) -> None: ... class RedirectMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor LAST_REDIRECT_IP_FIELD_NUMBER: int LAST_REDIRECT_PORT_FIELD_NUMBER: int REDIRECT_IP_FIELD_NUMBER: int REDIRECT_PORT_FIELD_NUMBER: int REDIRECT_COUNT_FIELD_NUMBER: int - last_redirect_ip: int = ... - last_redirect_port: int = ... - redirect_ip: int = ... - redirect_port: int = ... - redirect_count: int = ... - + last_redirect_ip: int + last_redirect_port: int + redirect_ip: int + redirect_port: int + redirect_count: int def __init__(self, *, - last_redirect_ip : Optional[int] = ..., - last_redirect_port : Optional[int] = ..., - redirect_ip : Optional[int] = ..., - redirect_port : Optional[int] = ..., - redirect_count : Optional[int] = ..., + last_redirect_ip: Optional[int] = ..., + last_redirect_port: Optional[int] = ..., + redirect_ip: Optional[int] = ..., + redirect_port: Optional[int] = ..., + redirect_count: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"last_redirect_ip",b"last_redirect_ip",u"last_redirect_port",b"last_redirect_port",u"redirect_count",b"redirect_count",u"redirect_ip",b"redirect_ip",u"redirect_port",b"redirect_port"]) -> bool: ... - def ClearField(self, field_name: Literal[u"last_redirect_ip",b"last_redirect_ip",u"last_redirect_port",b"last_redirect_port",u"redirect_count",b"redirect_count",u"redirect_ip",b"redirect_ip",u"redirect_port",b"redirect_port"]) -> None: ... + def HasField(self, field_name: Literal["last_redirect_ip",b"last_redirect_ip","last_redirect_port",b"last_redirect_port","redirect_count",b"redirect_count","redirect_ip",b"redirect_ip","redirect_port",b"redirect_port"]) -> bool: ... + def ClearField(self, field_name: Literal["last_redirect_ip",b"last_redirect_ip","last_redirect_port",b"last_redirect_port","redirect_count",b"redirect_count","redirect_ip",b"redirect_ip","redirect_port",b"redirect_port"]) -> None: ... class S2CHead(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SUB_MSGTYPE_FIELD_NUMBER: int MSG_TYPE_FIELD_NUMBER: int FROM_UIN_FIELD_NUMBER: int @@ -423,50 +404,47 @@ class S2CHead(Message): RELAY_IP_FIELD_NUMBER: int RELAY_PORT_FIELD_NUMBER: int TO_UIN_FIELD_NUMBER: int - sub_msgtype: int = ... - msg_type: int = ... - from_uin: int = ... - msg_id: int = ... - relay_ip: int = ... - relay_port: int = ... - to_uin: int = ... - + sub_msgtype: int + msg_type: int + from_uin: int + msg_id: int + relay_ip: int + relay_port: int + to_uin: int def __init__(self, *, - sub_msgtype : Optional[int] = ..., - msg_type : Optional[int] = ..., - from_uin : Optional[int] = ..., - msg_id : Optional[int] = ..., - relay_ip : Optional[int] = ..., - relay_port : Optional[int] = ..., - to_uin : Optional[int] = ..., + sub_msgtype: Optional[int] = ..., + msg_type: Optional[int] = ..., + from_uin: Optional[int] = ..., + msg_id: Optional[int] = ..., + relay_ip: Optional[int] = ..., + relay_port: Optional[int] = ..., + to_uin: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"from_uin",b"from_uin",u"msg_id",b"msg_id",u"msg_type",b"msg_type",u"relay_ip",b"relay_ip",u"relay_port",b"relay_port",u"sub_msgtype",b"sub_msgtype",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"from_uin",b"from_uin",u"msg_id",b"msg_id",u"msg_type",b"msg_type",u"relay_ip",b"relay_ip",u"relay_port",b"relay_port",u"sub_msgtype",b"sub_msgtype",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["from_uin",b"from_uin","msg_id",b"msg_id","msg_type",b"msg_type","relay_ip",b"relay_ip","relay_port",b"relay_port","sub_msgtype",b"sub_msgtype","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["from_uin",b"from_uin","msg_id",b"msg_id","msg_type",b"msg_type","relay_ip",b"relay_ip","relay_port",b"relay_port","sub_msgtype",b"sub_msgtype","to_uin",b"to_uin"]) -> None: ... class SConnHead(Message): - DESCRIPTOR: Descriptor = ... - + DESCRIPTOR: Descriptor def __init__(self, ) -> None: ... class TransOidbHead(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor COMMAND_FIELD_NUMBER: int SERVICE_TYPE_FIELD_NUMBER: int RESULT_FIELD_NUMBER: int ERROR_MSG_FIELD_NUMBER: int - command: int = ... - service_type: int = ... - result: int = ... - error_msg: Text = ... - + command: int + service_type: int + result: int + error_msg: Text def __init__(self, *, - command : Optional[int] = ..., - service_type : Optional[int] = ..., - result : Optional[int] = ..., - error_msg : Optional[Text] = ..., + command: Optional[int] = ..., + service_type: Optional[int] = ..., + result: Optional[int] = ..., + error_msg: Optional[Text] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"command",b"command",u"error_msg",b"error_msg",u"result",b"result",u"service_type",b"service_type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"command",b"command",u"error_msg",b"error_msg",u"result",b"result",u"service_type",b"service_type"]) -> None: ... + def HasField(self, field_name: Literal["command",b"command","error_msg",b"error_msg","result",b"result","service_type",b"service_type"]) -> bool: ... + def ClearField(self, field_name: Literal["command",b"command","error_msg",b"error_msg","result",b"result","service_type",b"service_type"]) -> None: ... diff --git a/cai/pb/im/msg/obj_msg/obj_msg_pb2.py b/cai/pb/im/msg/obj_msg/obj_msg_pb2.py index 4bfe3466..0f8de275 100644 --- a/cai/pb/im/msg/obj_msg/obj_msg_pb2.py +++ b/cai/pb/im/msg/obj_msg/obj_msg_pb2.py @@ -3,6 +3,7 @@ # source: cai/pb/im/msg/obj_msg/obj_msg.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -13,266 +14,14 @@ -DESCRIPTOR = _descriptor.FileDescriptor( - name='cai/pb/im/msg/obj_msg/obj_msg.proto', - package='im.msg.obj_msg', - syntax='proto2', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n#cai/pb/im/msg/obj_msg/obj_msg.proto\x12\x0eim.msg.obj_msg\"P\n\x0eMsgContentInfo\x12\x17\n\x0f\x63ontent_info_id\x18\x01 \x01(\x0c\x12%\n\x04\x66ile\x18\x02 \x01(\x0b\x32\x17.im.msg.obj_msg.MsgFile\"\x97\x01\n\x07MsgFile\x12\x0e\n\x06\x62us_id\x18\x01 \x01(\r\x12\x11\n\tfile_path\x18\x02 \x01(\x0c\x12\x11\n\tfile_size\x18\x03 \x01(\x04\x12\x11\n\tfile_name\x18\x04 \x01(\t\x12\x11\n\tdead_time\x18\x05 \x01(\x03\x12\x11\n\tfile_sha1\x18\x06 \x01(\x0c\x12\x0b\n\x03\x65xt\x18\x07 \x01(\x0c\x12\x10\n\x08\x66ile_md5\x18\x08 \x01(\x0c\"O\n\x06MsgPic\x12\x15\n\rsmall_pic_url\x18\x01 \x01(\x0c\x12\x18\n\x10original_pic_url\x18\x02 \x01(\x0c\x12\x14\n\x0clocal_pic_id\x18\x03 \x01(\r\"\xc0\x01\n\x06ObjMsg\x12\x10\n\x08msg_type\x18\x01 \x01(\r\x12\r\n\x05title\x18\x02 \x01(\x0c\x12\x0f\n\x07\x61\x62stact\x18\x03 \x03(\x0c\x12\x11\n\ttitle_ext\x18\x05 \x01(\x0c\x12#\n\x03pic\x18\x06 \x03(\x0b\x32\x16.im.msg.obj_msg.MsgPic\x12\x34\n\x0c\x63ontent_info\x18\x07 \x03(\x0b\x32\x1e.im.msg.obj_msg.MsgContentInfo\x12\x16\n\x0ereport_id_show\x18\x08 \x01(\r' -) +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#cai/pb/im/msg/obj_msg/obj_msg.proto\x12\x0eim.msg.obj_msg\"P\n\x0eMsgContentInfo\x12\x17\n\x0f\x63ontent_info_id\x18\x01 \x01(\x0c\x12%\n\x04\x66ile\x18\x02 \x01(\x0b\x32\x17.im.msg.obj_msg.MsgFile\"\x97\x01\n\x07MsgFile\x12\x0e\n\x06\x62us_id\x18\x01 \x01(\r\x12\x11\n\tfile_path\x18\x02 \x01(\x0c\x12\x11\n\tfile_size\x18\x03 \x01(\x04\x12\x11\n\tfile_name\x18\x04 \x01(\t\x12\x11\n\tdead_time\x18\x05 \x01(\x03\x12\x11\n\tfile_sha1\x18\x06 \x01(\x0c\x12\x0b\n\x03\x65xt\x18\x07 \x01(\x0c\x12\x10\n\x08\x66ile_md5\x18\x08 \x01(\x0c\"O\n\x06MsgPic\x12\x15\n\rsmall_pic_url\x18\x01 \x01(\x0c\x12\x18\n\x10original_pic_url\x18\x02 \x01(\x0c\x12\x14\n\x0clocal_pic_id\x18\x03 \x01(\r\"\xc0\x01\n\x06ObjMsg\x12\x10\n\x08msg_type\x18\x01 \x01(\r\x12\r\n\x05title\x18\x02 \x01(\x0c\x12\x0f\n\x07\x61\x62stact\x18\x03 \x03(\x0c\x12\x11\n\ttitle_ext\x18\x05 \x01(\x0c\x12#\n\x03pic\x18\x06 \x03(\x0b\x32\x16.im.msg.obj_msg.MsgPic\x12\x34\n\x0c\x63ontent_info\x18\x07 \x03(\x0b\x32\x1e.im.msg.obj_msg.MsgContentInfo\x12\x16\n\x0ereport_id_show\x18\x08 \x01(\r') - -_MSGCONTENTINFO = _descriptor.Descriptor( - name='MsgContentInfo', - full_name='im.msg.obj_msg.MsgContentInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='content_info_id', full_name='im.msg.obj_msg.MsgContentInfo.content_info_id', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file', full_name='im.msg.obj_msg.MsgContentInfo.file', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=55, - serialized_end=135, -) - - -_MSGFILE = _descriptor.Descriptor( - name='MsgFile', - full_name='im.msg.obj_msg.MsgFile', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='bus_id', full_name='im.msg.obj_msg.MsgFile.bus_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_path', full_name='im.msg.obj_msg.MsgFile.file_path', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_size', full_name='im.msg.obj_msg.MsgFile.file_size', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_name', full_name='im.msg.obj_msg.MsgFile.file_name', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='dead_time', full_name='im.msg.obj_msg.MsgFile.dead_time', index=4, - number=5, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_sha1', full_name='im.msg.obj_msg.MsgFile.file_sha1', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ext', full_name='im.msg.obj_msg.MsgFile.ext', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_md5', full_name='im.msg.obj_msg.MsgFile.file_md5', index=7, - number=8, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=138, - serialized_end=289, -) - - -_MSGPIC = _descriptor.Descriptor( - name='MsgPic', - full_name='im.msg.obj_msg.MsgPic', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='small_pic_url', full_name='im.msg.obj_msg.MsgPic.small_pic_url', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='original_pic_url', full_name='im.msg.obj_msg.MsgPic.original_pic_url', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='local_pic_id', full_name='im.msg.obj_msg.MsgPic.local_pic_id', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=291, - serialized_end=370, -) - - -_OBJMSG = _descriptor.Descriptor( - name='ObjMsg', - full_name='im.msg.obj_msg.ObjMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='msg_type', full_name='im.msg.obj_msg.ObjMsg.msg_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='title', full_name='im.msg.obj_msg.ObjMsg.title', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='abstact', full_name='im.msg.obj_msg.ObjMsg.abstact', index=2, - number=3, type=12, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='title_ext', full_name='im.msg.obj_msg.ObjMsg.title_ext', index=3, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pic', full_name='im.msg.obj_msg.ObjMsg.pic', index=4, - number=6, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='content_info', full_name='im.msg.obj_msg.ObjMsg.content_info', index=5, - number=7, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='report_id_show', full_name='im.msg.obj_msg.ObjMsg.report_id_show', index=6, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=373, - serialized_end=565, -) - -_MSGCONTENTINFO.fields_by_name['file'].message_type = _MSGFILE -_OBJMSG.fields_by_name['pic'].message_type = _MSGPIC -_OBJMSG.fields_by_name['content_info'].message_type = _MSGCONTENTINFO -DESCRIPTOR.message_types_by_name['MsgContentInfo'] = _MSGCONTENTINFO -DESCRIPTOR.message_types_by_name['MsgFile'] = _MSGFILE -DESCRIPTOR.message_types_by_name['MsgPic'] = _MSGPIC -DESCRIPTOR.message_types_by_name['ObjMsg'] = _OBJMSG -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - +_MSGCONTENTINFO = DESCRIPTOR.message_types_by_name['MsgContentInfo'] +_MSGFILE = DESCRIPTOR.message_types_by_name['MsgFile'] +_MSGPIC = DESCRIPTOR.message_types_by_name['MsgPic'] +_OBJMSG = DESCRIPTOR.message_types_by_name['ObjMsg'] MsgContentInfo = _reflection.GeneratedProtocolMessageType('MsgContentInfo', (_message.Message,), { 'DESCRIPTOR' : _MSGCONTENTINFO, '__module__' : 'cai.pb.im.msg.obj_msg.obj_msg_pb2' @@ -301,5 +50,15 @@ }) _sym_db.RegisterMessage(ObjMsg) - +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _MSGCONTENTINFO._serialized_start=55 + _MSGCONTENTINFO._serialized_end=135 + _MSGFILE._serialized_start=138 + _MSGFILE._serialized_end=289 + _MSGPIC._serialized_start=291 + _MSGPIC._serialized_end=370 + _OBJMSG._serialized_start=373 + _OBJMSG._serialized_end=565 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/msg/obj_msg/obj_msg_pb2.pyi b/cai/pb/im/msg/obj_msg/obj_msg_pb2.pyi index 660c9b8f..d02df1cf 100644 --- a/cai/pb/im/msg/obj_msg/obj_msg_pb2.pyi +++ b/cai/pb/im/msg/obj_msg/obj_msg_pb2.pyi @@ -33,27 +33,28 @@ from typing_extensions import ( ) -DESCRIPTOR: FileDescriptor = ... +DESCRIPTOR: FileDescriptor class MsgContentInfo(Message): - DESCRIPTOR: Descriptor = ... + """tencent/im/msg/obj_msg.java + + """ + DESCRIPTOR: Descriptor CONTENT_INFO_ID_FIELD_NUMBER: int FILE_FIELD_NUMBER: int - content_info_id: bytes = ... - + content_info_id: bytes @property def file(self) -> MsgFile: ... - def __init__(self, *, - content_info_id : Optional[bytes] = ..., - file : Optional[MsgFile] = ..., + content_info_id: Optional[bytes] = ..., + file: Optional[MsgFile] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"content_info_id",b"content_info_id",u"file",b"file"]) -> bool: ... - def ClearField(self, field_name: Literal[u"content_info_id",b"content_info_id",u"file",b"file"]) -> None: ... + def HasField(self, field_name: Literal["content_info_id",b"content_info_id","file",b"file"]) -> bool: ... + def ClearField(self, field_name: Literal["content_info_id",b"content_info_id","file",b"file"]) -> None: ... class MsgFile(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor BUS_ID_FIELD_NUMBER: int FILE_PATH_FIELD_NUMBER: int FILE_SIZE_FIELD_NUMBER: int @@ -62,49 +63,47 @@ class MsgFile(Message): FILE_SHA1_FIELD_NUMBER: int EXT_FIELD_NUMBER: int FILE_MD5_FIELD_NUMBER: int - bus_id: int = ... - file_path: bytes = ... - file_size: int = ... - file_name: Text = ... - dead_time: int = ... - file_sha1: bytes = ... - ext: bytes = ... - file_md5: bytes = ... - + bus_id: int + file_path: bytes + file_size: int + file_name: Text + dead_time: int + file_sha1: bytes + ext: bytes + file_md5: bytes def __init__(self, *, - bus_id : Optional[int] = ..., - file_path : Optional[bytes] = ..., - file_size : Optional[int] = ..., - file_name : Optional[Text] = ..., - dead_time : Optional[int] = ..., - file_sha1 : Optional[bytes] = ..., - ext : Optional[bytes] = ..., - file_md5 : Optional[bytes] = ..., + bus_id: Optional[int] = ..., + file_path: Optional[bytes] = ..., + file_size: Optional[int] = ..., + file_name: Optional[Text] = ..., + dead_time: Optional[int] = ..., + file_sha1: Optional[bytes] = ..., + ext: Optional[bytes] = ..., + file_md5: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"bus_id",b"bus_id",u"dead_time",b"dead_time",u"ext",b"ext",u"file_md5",b"file_md5",u"file_name",b"file_name",u"file_path",b"file_path",u"file_sha1",b"file_sha1",u"file_size",b"file_size"]) -> bool: ... - def ClearField(self, field_name: Literal[u"bus_id",b"bus_id",u"dead_time",b"dead_time",u"ext",b"ext",u"file_md5",b"file_md5",u"file_name",b"file_name",u"file_path",b"file_path",u"file_sha1",b"file_sha1",u"file_size",b"file_size"]) -> None: ... + def HasField(self, field_name: Literal["bus_id",b"bus_id","dead_time",b"dead_time","ext",b"ext","file_md5",b"file_md5","file_name",b"file_name","file_path",b"file_path","file_sha1",b"file_sha1","file_size",b"file_size"]) -> bool: ... + def ClearField(self, field_name: Literal["bus_id",b"bus_id","dead_time",b"dead_time","ext",b"ext","file_md5",b"file_md5","file_name",b"file_name","file_path",b"file_path","file_sha1",b"file_sha1","file_size",b"file_size"]) -> None: ... class MsgPic(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SMALL_PIC_URL_FIELD_NUMBER: int ORIGINAL_PIC_URL_FIELD_NUMBER: int LOCAL_PIC_ID_FIELD_NUMBER: int - small_pic_url: bytes = ... - original_pic_url: bytes = ... - local_pic_id: int = ... - + small_pic_url: bytes + original_pic_url: bytes + local_pic_id: int def __init__(self, *, - small_pic_url : Optional[bytes] = ..., - original_pic_url : Optional[bytes] = ..., - local_pic_id : Optional[int] = ..., + small_pic_url: Optional[bytes] = ..., + original_pic_url: Optional[bytes] = ..., + local_pic_id: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"local_pic_id",b"local_pic_id",u"original_pic_url",b"original_pic_url",u"small_pic_url",b"small_pic_url"]) -> bool: ... - def ClearField(self, field_name: Literal[u"local_pic_id",b"local_pic_id",u"original_pic_url",b"original_pic_url",u"small_pic_url",b"small_pic_url"]) -> None: ... + def HasField(self, field_name: Literal["local_pic_id",b"local_pic_id","original_pic_url",b"original_pic_url","small_pic_url",b"small_pic_url"]) -> bool: ... + def ClearField(self, field_name: Literal["local_pic_id",b"local_pic_id","original_pic_url",b"original_pic_url","small_pic_url",b"small_pic_url"]) -> None: ... class ObjMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor MSG_TYPE_FIELD_NUMBER: int TITLE_FIELD_NUMBER: int ABSTACT_FIELD_NUMBER: int @@ -112,27 +111,25 @@ class ObjMsg(Message): PIC_FIELD_NUMBER: int CONTENT_INFO_FIELD_NUMBER: int REPORT_ID_SHOW_FIELD_NUMBER: int - msg_type: int = ... - title: bytes = ... - abstact: RepeatedScalarFieldContainer[bytes] = ... - title_ext: bytes = ... - report_id_show: int = ... - + msg_type: int + title: bytes + @property + def abstact(self) -> RepeatedScalarFieldContainer[bytes]: ... + title_ext: bytes @property def pic(self) -> RepeatedCompositeFieldContainer[MsgPic]: ... - @property def content_info(self) -> RepeatedCompositeFieldContainer[MsgContentInfo]: ... - + report_id_show: int def __init__(self, *, - msg_type : Optional[int] = ..., - title : Optional[bytes] = ..., - abstact : Optional[Iterable[bytes]] = ..., - title_ext : Optional[bytes] = ..., - pic : Optional[Iterable[MsgPic]] = ..., - content_info : Optional[Iterable[MsgContentInfo]] = ..., - report_id_show : Optional[int] = ..., + msg_type: Optional[int] = ..., + title: Optional[bytes] = ..., + abstact: Optional[Iterable[bytes]] = ..., + title_ext: Optional[bytes] = ..., + pic: Optional[Iterable[MsgPic]] = ..., + content_info: Optional[Iterable[MsgContentInfo]] = ..., + report_id_show: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"msg_type",b"msg_type",u"report_id_show",b"report_id_show",u"title",b"title",u"title_ext",b"title_ext"]) -> bool: ... - def ClearField(self, field_name: Literal[u"abstact",b"abstact",u"content_info",b"content_info",u"msg_type",b"msg_type",u"pic",b"pic",u"report_id_show",b"report_id_show",u"title",b"title",u"title_ext",b"title_ext"]) -> None: ... + def HasField(self, field_name: Literal["msg_type",b"msg_type","report_id_show",b"report_id_show","title",b"title","title_ext",b"title_ext"]) -> bool: ... + def ClearField(self, field_name: Literal["abstact",b"abstact","content_info",b"content_info","msg_type",b"msg_type","pic",b"pic","report_id_show",b"report_id_show","title",b"title","title_ext",b"title_ext"]) -> None: ... diff --git a/cai/pb/im/msg/receipt/receipt_pb2.py b/cai/pb/im/msg/receipt/receipt_pb2.py index 883847d9..ac741f0a 100644 --- a/cai/pb/im/msg/receipt/receipt_pb2.py +++ b/cai/pb/im/msg/receipt/receipt_pb2.py @@ -3,6 +3,7 @@ # source: cai/pb/im/msg/receipt/receipt.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -13,188 +14,14 @@ -DESCRIPTOR = _descriptor.FileDescriptor( - name='cai/pb/im/msg/receipt/receipt.proto', - package='im.msg.receipt', - syntax='proto2', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n#cai/pb/im/msg/receipt/receipt.proto\x12\x0eim.msg.receipt\"P\n\x07MsgInfo\x12\x10\n\x08\x66rom_uin\x18\x01 \x01(\x04\x12\x0e\n\x06to_uin\x18\x02 \x01(\x04\x12\x0f\n\x07msg_seq\x18\x03 \x01(\r\x12\x12\n\nmsg_random\x18\x04 \x01(\r\" \n\x0bReceiptInfo\x12\x11\n\tread_time\x18\x01 \x01(\x04\"D\n\nReceiptReq\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\r\x12%\n\x04info\x18\x02 \x01(\x0b\x32\x17.im.msg.receipt.MsgInfo\"Q\n\x0bReceiptResp\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\r\x12\x31\n\x0creceipt_info\x18\x02 \x01(\x0b\x32\x1b.im.msg.receipt.ReceiptInfo' -) +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#cai/pb/im/msg/receipt/receipt.proto\x12\x0eim.msg.receipt\"P\n\x07MsgInfo\x12\x10\n\x08\x66rom_uin\x18\x01 \x01(\x04\x12\x0e\n\x06to_uin\x18\x02 \x01(\x04\x12\x0f\n\x07msg_seq\x18\x03 \x01(\r\x12\x12\n\nmsg_random\x18\x04 \x01(\r\" \n\x0bReceiptInfo\x12\x11\n\tread_time\x18\x01 \x01(\x04\"D\n\nReceiptReq\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\r\x12%\n\x04info\x18\x02 \x01(\x0b\x32\x17.im.msg.receipt.MsgInfo\"Q\n\x0bReceiptResp\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\r\x12\x31\n\x0creceipt_info\x18\x02 \x01(\x0b\x32\x1b.im.msg.receipt.ReceiptInfo') - -_MSGINFO = _descriptor.Descriptor( - name='MsgInfo', - full_name='im.msg.receipt.MsgInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='from_uin', full_name='im.msg.receipt.MsgInfo.from_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_uin', full_name='im.msg.receipt.MsgInfo.to_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_seq', full_name='im.msg.receipt.MsgInfo.msg_seq', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_random', full_name='im.msg.receipt.MsgInfo.msg_random', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=55, - serialized_end=135, -) - - -_RECEIPTINFO = _descriptor.Descriptor( - name='ReceiptInfo', - full_name='im.msg.receipt.ReceiptInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='read_time', full_name='im.msg.receipt.ReceiptInfo.read_time', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=137, - serialized_end=169, -) - - -_RECEIPTREQ = _descriptor.Descriptor( - name='ReceiptReq', - full_name='im.msg.receipt.ReceiptReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='command', full_name='im.msg.receipt.ReceiptReq.command', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='info', full_name='im.msg.receipt.ReceiptReq.info', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=171, - serialized_end=239, -) - - -_RECEIPTRESP = _descriptor.Descriptor( - name='ReceiptResp', - full_name='im.msg.receipt.ReceiptResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='command', full_name='im.msg.receipt.ReceiptResp.command', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='receipt_info', full_name='im.msg.receipt.ReceiptResp.receipt_info', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=241, - serialized_end=322, -) - -_RECEIPTREQ.fields_by_name['info'].message_type = _MSGINFO -_RECEIPTRESP.fields_by_name['receipt_info'].message_type = _RECEIPTINFO -DESCRIPTOR.message_types_by_name['MsgInfo'] = _MSGINFO -DESCRIPTOR.message_types_by_name['ReceiptInfo'] = _RECEIPTINFO -DESCRIPTOR.message_types_by_name['ReceiptReq'] = _RECEIPTREQ -DESCRIPTOR.message_types_by_name['ReceiptResp'] = _RECEIPTRESP -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - +_MSGINFO = DESCRIPTOR.message_types_by_name['MsgInfo'] +_RECEIPTINFO = DESCRIPTOR.message_types_by_name['ReceiptInfo'] +_RECEIPTREQ = DESCRIPTOR.message_types_by_name['ReceiptReq'] +_RECEIPTRESP = DESCRIPTOR.message_types_by_name['ReceiptResp'] MsgInfo = _reflection.GeneratedProtocolMessageType('MsgInfo', (_message.Message,), { 'DESCRIPTOR' : _MSGINFO, '__module__' : 'cai.pb.im.msg.receipt.receipt_pb2' @@ -223,5 +50,15 @@ }) _sym_db.RegisterMessage(ReceiptResp) - +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _MSGINFO._serialized_start=55 + _MSGINFO._serialized_end=135 + _RECEIPTINFO._serialized_start=137 + _RECEIPTINFO._serialized_end=169 + _RECEIPTREQ._serialized_start=171 + _RECEIPTREQ._serialized_end=239 + _RECEIPTRESP._serialized_start=241 + _RECEIPTRESP._serialized_end=322 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/msg/receipt/receipt_pb2.pyi b/cai/pb/im/msg/receipt/receipt_pb2.pyi index 6c1a289f..b92646f1 100644 --- a/cai/pb/im/msg/receipt/receipt_pb2.pyi +++ b/cai/pb/im/msg/receipt/receipt_pb2.pyi @@ -25,71 +25,65 @@ from typing_extensions import ( ) -DESCRIPTOR: FileDescriptor = ... +DESCRIPTOR: FileDescriptor class MsgInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FROM_UIN_FIELD_NUMBER: int TO_UIN_FIELD_NUMBER: int MSG_SEQ_FIELD_NUMBER: int MSG_RANDOM_FIELD_NUMBER: int - from_uin: int = ... - to_uin: int = ... - msg_seq: int = ... - msg_random: int = ... - + from_uin: int + to_uin: int + msg_seq: int + msg_random: int def __init__(self, *, - from_uin : Optional[int] = ..., - to_uin : Optional[int] = ..., - msg_seq : Optional[int] = ..., - msg_random : Optional[int] = ..., + from_uin: Optional[int] = ..., + to_uin: Optional[int] = ..., + msg_seq: Optional[int] = ..., + msg_random: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"from_uin",b"from_uin",u"msg_random",b"msg_random",u"msg_seq",b"msg_seq",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"from_uin",b"from_uin",u"msg_random",b"msg_random",u"msg_seq",b"msg_seq",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["from_uin",b"from_uin","msg_random",b"msg_random","msg_seq",b"msg_seq","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["from_uin",b"from_uin","msg_random",b"msg_random","msg_seq",b"msg_seq","to_uin",b"to_uin"]) -> None: ... class ReceiptInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor READ_TIME_FIELD_NUMBER: int - read_time: int = ... - + read_time: int def __init__(self, *, - read_time : Optional[int] = ..., + read_time: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"read_time",b"read_time"]) -> bool: ... - def ClearField(self, field_name: Literal[u"read_time",b"read_time"]) -> None: ... + def HasField(self, field_name: Literal["read_time",b"read_time"]) -> bool: ... + def ClearField(self, field_name: Literal["read_time",b"read_time"]) -> None: ... class ReceiptReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor COMMAND_FIELD_NUMBER: int INFO_FIELD_NUMBER: int - command: int = ... - + command: int @property def info(self) -> MsgInfo: ... - def __init__(self, *, - command : Optional[int] = ..., - info : Optional[MsgInfo] = ..., + command: Optional[int] = ..., + info: Optional[MsgInfo] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"command",b"command",u"info",b"info"]) -> bool: ... - def ClearField(self, field_name: Literal[u"command",b"command",u"info",b"info"]) -> None: ... + def HasField(self, field_name: Literal["command",b"command","info",b"info"]) -> bool: ... + def ClearField(self, field_name: Literal["command",b"command","info",b"info"]) -> None: ... class ReceiptResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor COMMAND_FIELD_NUMBER: int RECEIPT_INFO_FIELD_NUMBER: int - command: int = ... - + command: int @property def receipt_info(self) -> ReceiptInfo: ... - def __init__(self, *, - command : Optional[int] = ..., - receipt_info : Optional[ReceiptInfo] = ..., + command: Optional[int] = ..., + receipt_info: Optional[ReceiptInfo] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"command",b"command",u"receipt_info",b"receipt_info"]) -> bool: ... - def ClearField(self, field_name: Literal[u"command",b"command",u"receipt_info",b"receipt_info"]) -> None: ... + def HasField(self, field_name: Literal["command",b"command","receipt_info",b"receipt_info"]) -> bool: ... + def ClearField(self, field_name: Literal["command",b"command","receipt_info",b"receipt_info"]) -> None: ... diff --git a/cai/pb/im/msg/service/comm_elem/comm_elem_pb2.py b/cai/pb/im/msg/service/comm_elem/comm_elem_pb2.py index 46bc7d8e..e0a5c960 100644 --- a/cai/pb/im/msg/service/comm_elem/comm_elem_pb2.py +++ b/cai/pb/im/msg/service/comm_elem/comm_elem_pb2.py @@ -3,6 +3,7 @@ # source: cai/pb/im/msg/service/comm_elem/comm_elem.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -14,2006 +15,42 @@ from cai.pb.im.msg.msg_body import msg_body_pb2 as cai_dot_pb_dot_im_dot_msg_dot_msg__body_dot_msg__body__pb2 -DESCRIPTOR = _descriptor.FileDescriptor( - name='cai/pb/im/msg/service/comm_elem/comm_elem.proto', - package='im.msg.service.comm_elem', - syntax='proto2', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n/cai/pb/im/msg/service/comm_elem/comm_elem.proto\x12\x18im.msg.service.comm_elem\x1a%cai/pb/im/msg/msg_body/msg_body.proto\"\xfa\x01\n\x15MsgElemInfo_servtype1\x12\x11\n\treward_id\x18\x01 \x01(\x0c\x12\x12\n\nsender_uin\x18\x02 \x01(\x04\x12\x10\n\x08pic_type\x18\x03 \x01(\r\x12\x14\n\x0creward_money\x18\x04 \x01(\r\x12\x0b\n\x03url\x18\x05 \x01(\x0c\x12\x0f\n\x07\x63ontent\x18\x06 \x01(\x0c\x12\x18\n\x10\x63reate_timestamp\x18\x07 \x01(\r\x12\x0e\n\x06status\x18\x08 \x01(\r\x12\x0c\n\x04size\x18\t \x01(\r\x12\x16\n\x0evideo_duration\x18\n \x01(\r\x12\x0b\n\x03seq\x18\x0b \x01(\x04\x12\x17\n\x0freward_type_ext\x18\x0c \x01(\r\"\xc2\x01\n\x16MsgElemInfo_servtype11\x12\x0e\n\x06res_id\x18\x01 \x01(\x0c\x12\x0f\n\x07res_md5\x18\x02 \x01(\x0c\x12\x15\n\rreserve_info1\x18\x03 \x01(\x0c\x12\x15\n\rreserve_info2\x18\x04 \x01(\x0c\x12\x1a\n\x12\x64oodle_data_offset\x18\x05 \x01(\r\x12\x15\n\rdoodle_gif_id\x18\x06 \x01(\r\x12\x12\n\ndoodle_url\x18\x07 \x01(\x0c\x12\x12\n\ndoodle_md5\x18\x08 \x01(\x0c\"@\n\x16MsgElemInfo_servtype13\x12\x13\n\x0bsys_head_id\x18\x01 \x01(\r\x12\x11\n\thead_flag\x18\x02 \x01(\r\":\n\x16MsgElemInfo_servtype14\x12\n\n\x02id\x18\x01 \x01(\r\x12\x14\n\x0creserve_info\x18\x02 \x01(\x0c\"\xa7\x01\n\x16MsgElemInfo_servtype15\x12\x0b\n\x03vid\x18\x01 \x01(\x0c\x12\r\n\x05\x63over\x18\x02 \x01(\x0c\x12\r\n\x05title\x18\x03 \x01(\x0c\x12\x0f\n\x07summary\x18\x04 \x01(\x0c\x12\x13\n\x0b\x63reate_time\x18\x05 \x01(\x04\x12\x17\n\x0f\x63omment_content\x18\x06 \x01(\x0c\x12\x0e\n\x06\x61uthor\x18\x07 \x01(\x04\x12\x13\n\x0b\x63tr_version\x18\x08 \x01(\r\"\x8a\x02\n\x16MsgElemInfo_servtype16\x12\x0b\n\x03uid\x18\x01 \x01(\x04\x12\x10\n\x08union_id\x18\x02 \x01(\x0c\x12\x10\n\x08story_id\x18\x03 \x01(\x0c\x12\x0b\n\x03md5\x18\x04 \x01(\x0c\x12\x11\n\tthumb_url\x18\x05 \x01(\x0c\x12\x12\n\ndoodle_url\x18\x06 \x01(\x0c\x12\x13\n\x0bvideo_width\x18\x07 \x01(\r\x12\x14\n\x0cvideo_height\x18\x08 \x01(\r\x12\x13\n\x0bsource_name\x18\t \x01(\x0c\x12\x1a\n\x12source_action_type\x18\n \x01(\x0c\x12\x1a\n\x12source_action_data\x18\x0b \x01(\x0c\x12\x13\n\x0b\x63tr_version\x18\x0c \x01(\r\"x\n\x16MsgElemInfo_servtype18\x12\x16\n\x0e\x63urrent_amount\x18\x01 \x01(\x04\x12\x14\n\x0ctotal_amount\x18\x02 \x01(\x04\x12\x0e\n\x06listid\x18\x03 \x01(\x0c\x12\x10\n\x08\x61uth_key\x18\x04 \x01(\x0c\x12\x0e\n\x06number\x18\x05 \x01(\r\"&\n\x16MsgElemInfo_servtype19\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"\xed\x01\n\x15MsgElemInfo_servtype2\x12\x11\n\tpoke_type\x18\x01 \x01(\r\x12\x14\n\x0cpoke_summary\x18\x02 \x01(\x0c\x12\x12\n\ndouble_hit\x18\x03 \x01(\r\x12\x12\n\nvaspoke_id\x18\x04 \x01(\r\x12\x14\n\x0cvaspoke_name\x18\x05 \x01(\x0c\x12\x16\n\x0evaspoke_minver\x18\x06 \x01(\x0c\x12\x15\n\rpoke_strength\x18\x07 \x01(\r\x12\x10\n\x08msg_type\x18\x08 \x01(\r\x12\x19\n\x11\x66\x61\x63\x65_bubble_count\x18\t \x01(\r\x12\x11\n\tpoke_flag\x18\n \x01(\r\"&\n\x16MsgElemInfo_servtype20\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"\x81\x03\n\x16MsgElemInfo_servtype21\x12\x10\n\x08topic_id\x18\x01 \x01(\r\x12\x15\n\rconfessor_uin\x18\x02 \x01(\x04\x12\x16\n\x0e\x63onfessor_nick\x18\x03 \x01(\x0c\x12\x15\n\rconfessor_sex\x18\x04 \x01(\r\x12\x13\n\x0bsysmsg_flag\x18\x05 \x01(\r\x12\x45\n\x10\x63\x32_c_confess_ctx\x18\x06 \x01(\x0b\x32+.im.msg.service.comm_elem.C2CConfessContext\x12\r\n\x05topic\x18\x07 \x01(\x0c\x12\x14\n\x0c\x63onfess_time\x18\x08 \x01(\x04\x12\x44\n\x11group_confess_msg\x18\t \x01(\x0b\x32).im.msg.service.comm_elem.GroupConfessMsg\x12H\n\x11group_confess_ctx\x18\n \x01(\x0b\x32-.im.msg.service.comm_elem.GroupConfessContext\"\x8c\x02\n\x11\x43\x32\x43\x43onfessContext\x12\x15\n\rconfessor_uin\x18\x01 \x01(\x04\x12\x16\n\x0e\x63onfess_to_uin\x18\x02 \x01(\x04\x12\x10\n\x08send_uin\x18\x03 \x01(\x04\x12\x16\n\x0e\x63onfessor_nick\x18\x04 \x01(\x0c\x12\x0f\n\x07\x63onfess\x18\x05 \x01(\x0c\x12\x0f\n\x07\x62g_type\x18\x06 \x01(\r\x12\x10\n\x08topic_id\x18\x07 \x01(\r\x12\x14\n\x0c\x63onfess_time\x18\x08 \x01(\x04\x12\x15\n\rconfessor_sex\x18\t \x01(\r\x12\x10\n\x08\x62iz_type\x18\n \x01(\r\x12\x13\n\x0b\x63onfess_num\x18\x0b \x01(\r\x12\x16\n\x0e\x63onfess_to_sex\x18\x0c \x01(\r\"\xf3\x01\n\x13GroupConfessContext\x12\x15\n\rconfessor_uin\x18\x01 \x01(\x04\x12\x16\n\x0e\x63onfess_to_uin\x18\x02 \x01(\x04\x12\x10\n\x08send_uin\x18\x03 \x01(\x04\x12\x15\n\rconfessor_sex\x18\x04 \x01(\r\x12\x17\n\x0f\x63onfess_to_nick\x18\x05 \x01(\x0c\x12\r\n\x05topic\x18\x06 \x01(\x0c\x12\x10\n\x08topic_id\x18\x07 \x01(\r\x12\x14\n\x0c\x63onfess_time\x18\x08 \x01(\x04\x12\x1c\n\x14\x63onfess_to_nick_type\x18\t \x01(\r\x12\x16\n\x0e\x63onfessor_nick\x18\n \x01(\x0c\"\x82\x01\n\x10GroupConfessItem\x12\x10\n\x08topic_id\x18\x01 \x01(\r\x12\x16\n\x0e\x63onfess_to_uin\x18\x02 \x01(\x04\x12\x17\n\x0f\x63onfess_to_nick\x18\x03 \x01(\x0c\x12\r\n\x05topic\x18\x04 \x01(\x0c\x12\x1c\n\x14\x63onfess_to_nick_type\x18\x05 \x01(\r\"\xc8\x01\n\x0fGroupConfessMsg\x12\x14\n\x0c\x63onfess_time\x18\x01 \x01(\x04\x12\x15\n\rconfessor_uin\x18\x02 \x01(\x04\x12\x15\n\rconfessor_sex\x18\x03 \x01(\r\x12\x13\n\x0bsysmsg_flag\x18\x04 \x01(\r\x12\x41\n\rconfess_items\x18\x05 \x03(\x0b\x32*.im.msg.service.comm_elem.GroupConfessItem\x12\x19\n\x11total_topic_count\x18\x06 \x01(\r\"\xc1\x01\n\x16MsgElemInfo_servtype23\x12\x11\n\tface_type\x18\x01 \x01(\r\x12\x19\n\x11\x66\x61\x63\x65_bubble_count\x18\x02 \x01(\r\x12\x14\n\x0c\x66\x61\x63\x65_summary\x18\x03 \x01(\x0c\x12\x0c\n\x04\x66lag\x18\x04 \x01(\r\x12\x0e\n\x06others\x18\x05 \x01(\x0c\x12\x45\n\x0byellow_face\x18\x06 \x01(\x0b\x32\x30.im.msg.service.comm_elem.MsgElemInfo_servtype33\"\x9e\x01\n\x16MsgElemInfo_servtype24\x12\x42\n\x10limit_chat_enter\x18\x01 \x01(\x0b\x32(.im.msg.service.comm_elem.LimitChatEnter\x12@\n\x0flimit_chat_exit\x18\x02 \x01(\x0b\x32\'.im.msg.service.comm_elem.LimitChatExit\"\xad\x01\n\x0eLimitChatEnter\x12\x14\n\x0ctips_wording\x18\x01 \x01(\x0c\x12\x16\n\x0eleft_chat_time\x18\x02 \x01(\r\x12\x10\n\x08match_ts\x18\x03 \x01(\x04\x12\x1a\n\x12match_expired_time\x18\x04 \x01(\r\x12\x19\n\x11\x63\x32_c_expired_time\x18\x05 \x01(\r\x12\x10\n\x08ready_ts\x18\x06 \x01(\x04\x12\x12\n\nmatch_nick\x18\x07 \x01(\x0c\"6\n\rLimitChatExit\x12\x13\n\x0b\x65xit_method\x18\x01 \x01(\r\x12\x10\n\x08match_ts\x18\x02 \x01(\x04\"H\n\x16MsgElemInfo_servtype27\x12.\n\nvideo_file\x18\x01 \x01(\x0b\x32\x1a.im.msg.msg_body.VideoFile\".\n\x16MsgElemInfo_servtype29\x12\x14\n\x0cluckybag_msg\x18\x01 \x01(\x0c\"\x86\x01\n\x15MsgElemInfo_servtype3\x12\x34\n\x0f\x66lash_troop_pic\x18\x01 \x01(\x0b\x32\x1b.im.msg.msg_body.CustomFace\x12\x37\n\x0e\x66lash_c2_c_pic\x18\x02 \x01(\x0b\x32\x1f.im.msg.msg_body.NotOnlineImage\"3\n\x16MsgElemInfo_servtype31\x12\x0c\n\x04text\x18\x01 \x01(\x0c\x12\x0b\n\x03\x65xt\x18\x02 \x01(\x0c\"R\n\x16MsgElemInfo_servtype33\x12\r\n\x05index\x18\x01 \x01(\r\x12\x0c\n\x04text\x18\x02 \x01(\x0c\x12\x0e\n\x06\x63ompat\x18\x03 \x01(\x0c\x12\x0b\n\x03\x62uf\x18\x04 \x01(\x0c\"\x93\x01\n\x16MsgElemInfo_servtype34\x12\x15\n\rfrom_nickname\x18\x01 \x01(\x0c\x12\x18\n\x10push_window_flag\x18\x02 \x01(\r\x12;\n\x0cgame_session\x18\x03 \x01(\x0b\x32%.im.msg.service.comm_elem.GameSession\x12\x0b\n\x03\x65xt\x18\x04 \x01(\x0c\"\x9f\x01\n\x0bGameSession\x12\x14\n\x0c\x66rom_role_id\x18\x01 \x01(\x0c\x12\x14\n\x0c\x66rom_open_id\x18\x02 \x01(\x0c\x12\x12\n\nto_role_id\x18\x03 \x01(\x0c\x12\x12\n\nto_open_id\x18\x04 \x01(\x0c\x12\x12\n\ngame_appid\x18\x05 \x01(\x04\x12\x14\n\x0c\x66rom_tiny_id\x18\x06 \x01(\x04\x12\x12\n\nto_tiny_id\x18\x07 \x01(\x04\"h\n\x16MsgElemInfo_servtype35\x12\r\n\x05token\x18\x01 \x01(\x0c\x12\x14\n\x0cglobal_padid\x18\x02 \x01(\x0c\x12\x0f\n\x07get_rev\x18\x03 \x01(\r\x12\x18\n\x10his_edit_uin_num\x18\x04 \x01(\r\"r\n\x15MsgElemInfo_servtype4\x12\x11\n\timsg_type\x18\x01 \x01(\r\x12\x46\n\x14st_story_aio_obj_msg\x18\x04 \x01(\x0b\x32(.im.msg.service.comm_elem.StoryAioObjMsg\"\x91\x01\n\x15MsgElemInfo_servtype5\x12\x0b\n\x03vid\x18\x01 \x01(\x0c\x12\r\n\x05\x63over\x18\x02 \x01(\x0c\x12\r\n\x05title\x18\x03 \x01(\x0c\x12\x0f\n\x07summary\x18\x04 \x01(\x0c\x12\x13\n\x0b\x63reate_time\x18\x05 \x01(\x04\x12\x17\n\x0f\x63omment_content\x18\x06 \x01(\x0c\x12\x0e\n\x06\x61uthor\x18\x07 \x01(\x04\"W\n\x15MsgElemInfo_servtype8\x12>\n\x15wifi_deliver_gift_msg\x18\x01 \x01(\x0b\x32\x1f.im.msg.msg_body.DeliverGiftMsg\"\x89\x01\n\x15MsgElemInfo_servtype9\x12\x15\n\ranchor_status\x18\x01 \x01(\r\x12\x13\n\x0bjump_schema\x18\x02 \x01(\x0c\x12\x17\n\x0f\x61nchor_nickname\x18\x03 \x01(\t\x12\x17\n\x0f\x61nchor_head_url\x18\x04 \x01(\x0c\x12\x12\n\nlive_title\x18\x05 \x01(\t\"1\n\x0eStoryAioObjMsg\x12\x0e\n\x06ui_url\x18\x01 \x01(\t\x12\x0f\n\x07jmp_url\x18\x02 \x01(\t' - , - dependencies=[cai_dot_pb_dot_im_dot_msg_dot_msg__body_dot_msg__body__pb2.DESCRIPTOR,]) - - - - -_MSGELEMINFO_SERVTYPE1 = _descriptor.Descriptor( - name='MsgElemInfo_servtype1', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype1', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='reward_id', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype1.reward_id', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sender_uin', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype1.sender_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pic_type', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype1.pic_type', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reward_money', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype1.reward_money', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='url', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype1.url', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='content', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype1.content', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='create_timestamp', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype1.create_timestamp', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='status', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype1.status', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='size', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype1.size', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='video_duration', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype1.video_duration', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='seq', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype1.seq', index=10, - number=11, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reward_type_ext', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype1.reward_type_ext', index=11, - number=12, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=117, - serialized_end=367, -) - - -_MSGELEMINFO_SERVTYPE11 = _descriptor.Descriptor( - name='MsgElemInfo_servtype11', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype11', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='res_id', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype11.res_id', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='res_md5', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype11.res_md5', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reserve_info1', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype11.reserve_info1', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reserve_info2', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype11.reserve_info2', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='doodle_data_offset', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype11.doodle_data_offset', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='doodle_gif_id', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype11.doodle_gif_id', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='doodle_url', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype11.doodle_url', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='doodle_md5', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype11.doodle_md5', index=7, - number=8, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=370, - serialized_end=564, -) - - -_MSGELEMINFO_SERVTYPE13 = _descriptor.Descriptor( - name='MsgElemInfo_servtype13', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype13', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='sys_head_id', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype13.sys_head_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='head_flag', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype13.head_flag', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=566, - serialized_end=630, -) - - -_MSGELEMINFO_SERVTYPE14 = _descriptor.Descriptor( - name='MsgElemInfo_servtype14', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype14', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='id', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype14.id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reserve_info', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype14.reserve_info', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=632, - serialized_end=690, -) - - -_MSGELEMINFO_SERVTYPE15 = _descriptor.Descriptor( - name='MsgElemInfo_servtype15', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype15', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='vid', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype15.vid', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cover', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype15.cover', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='title', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype15.title', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='summary', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype15.summary', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='create_time', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype15.create_time', index=4, - number=5, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='comment_content', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype15.comment_content', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='author', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype15.author', index=6, - number=7, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ctr_version', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype15.ctr_version', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=693, - serialized_end=860, -) - - -_MSGELEMINFO_SERVTYPE16 = _descriptor.Descriptor( - name='MsgElemInfo_servtype16', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype16', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='uid', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype16.uid', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='union_id', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype16.union_id', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='story_id', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype16.story_id', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='md5', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype16.md5', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='thumb_url', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype16.thumb_url', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='doodle_url', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype16.doodle_url', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='video_width', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype16.video_width', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='video_height', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype16.video_height', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='source_name', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype16.source_name', index=8, - number=9, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='source_action_type', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype16.source_action_type', index=9, - number=10, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='source_action_data', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype16.source_action_data', index=10, - number=11, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ctr_version', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype16.ctr_version', index=11, - number=12, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=863, - serialized_end=1129, -) - - -_MSGELEMINFO_SERVTYPE18 = _descriptor.Descriptor( - name='MsgElemInfo_servtype18', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype18', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='current_amount', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype18.current_amount', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='total_amount', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype18.total_amount', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='listid', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype18.listid', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='auth_key', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype18.auth_key', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='number', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype18.number', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1131, - serialized_end=1251, -) - - -_MSGELEMINFO_SERVTYPE19 = _descriptor.Descriptor( - name='MsgElemInfo_servtype19', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype19', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='data', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype19.data', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1253, - serialized_end=1291, -) - - -_MSGELEMINFO_SERVTYPE2 = _descriptor.Descriptor( - name='MsgElemInfo_servtype2', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype2', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='poke_type', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype2.poke_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='poke_summary', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype2.poke_summary', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='double_hit', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype2.double_hit', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='vaspoke_id', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype2.vaspoke_id', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='vaspoke_name', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype2.vaspoke_name', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='vaspoke_minver', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype2.vaspoke_minver', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='poke_strength', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype2.poke_strength', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_type', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype2.msg_type', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='face_bubble_count', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype2.face_bubble_count', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='poke_flag', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype2.poke_flag', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1294, - serialized_end=1531, -) - - -_MSGELEMINFO_SERVTYPE20 = _descriptor.Descriptor( - name='MsgElemInfo_servtype20', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype20', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='data', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype20.data', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1533, - serialized_end=1571, -) - - -_MSGELEMINFO_SERVTYPE21 = _descriptor.Descriptor( - name='MsgElemInfo_servtype21', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype21', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='topic_id', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype21.topic_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confessor_uin', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype21.confessor_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confessor_nick', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype21.confessor_nick', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confessor_sex', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype21.confessor_sex', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sysmsg_flag', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype21.sysmsg_flag', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='c2_c_confess_ctx', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype21.c2_c_confess_ctx', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='topic', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype21.topic', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confess_time', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype21.confess_time', index=7, - number=8, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_confess_msg', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype21.group_confess_msg', index=8, - number=9, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_confess_ctx', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype21.group_confess_ctx', index=9, - number=10, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1574, - serialized_end=1959, -) - - -_C2CCONFESSCONTEXT = _descriptor.Descriptor( - name='C2CConfessContext', - full_name='im.msg.service.comm_elem.C2CConfessContext', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='confessor_uin', full_name='im.msg.service.comm_elem.C2CConfessContext.confessor_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confess_to_uin', full_name='im.msg.service.comm_elem.C2CConfessContext.confess_to_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='send_uin', full_name='im.msg.service.comm_elem.C2CConfessContext.send_uin', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confessor_nick', full_name='im.msg.service.comm_elem.C2CConfessContext.confessor_nick', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confess', full_name='im.msg.service.comm_elem.C2CConfessContext.confess', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bg_type', full_name='im.msg.service.comm_elem.C2CConfessContext.bg_type', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='topic_id', full_name='im.msg.service.comm_elem.C2CConfessContext.topic_id', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confess_time', full_name='im.msg.service.comm_elem.C2CConfessContext.confess_time', index=7, - number=8, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confessor_sex', full_name='im.msg.service.comm_elem.C2CConfessContext.confessor_sex', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='biz_type', full_name='im.msg.service.comm_elem.C2CConfessContext.biz_type', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confess_num', full_name='im.msg.service.comm_elem.C2CConfessContext.confess_num', index=10, - number=11, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confess_to_sex', full_name='im.msg.service.comm_elem.C2CConfessContext.confess_to_sex', index=11, - number=12, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1962, - serialized_end=2230, -) - - -_GROUPCONFESSCONTEXT = _descriptor.Descriptor( - name='GroupConfessContext', - full_name='im.msg.service.comm_elem.GroupConfessContext', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='confessor_uin', full_name='im.msg.service.comm_elem.GroupConfessContext.confessor_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confess_to_uin', full_name='im.msg.service.comm_elem.GroupConfessContext.confess_to_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='send_uin', full_name='im.msg.service.comm_elem.GroupConfessContext.send_uin', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confessor_sex', full_name='im.msg.service.comm_elem.GroupConfessContext.confessor_sex', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confess_to_nick', full_name='im.msg.service.comm_elem.GroupConfessContext.confess_to_nick', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='topic', full_name='im.msg.service.comm_elem.GroupConfessContext.topic', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='topic_id', full_name='im.msg.service.comm_elem.GroupConfessContext.topic_id', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confess_time', full_name='im.msg.service.comm_elem.GroupConfessContext.confess_time', index=7, - number=8, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confess_to_nick_type', full_name='im.msg.service.comm_elem.GroupConfessContext.confess_to_nick_type', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confessor_nick', full_name='im.msg.service.comm_elem.GroupConfessContext.confessor_nick', index=9, - number=10, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2233, - serialized_end=2476, -) - - -_GROUPCONFESSITEM = _descriptor.Descriptor( - name='GroupConfessItem', - full_name='im.msg.service.comm_elem.GroupConfessItem', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='topic_id', full_name='im.msg.service.comm_elem.GroupConfessItem.topic_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confess_to_uin', full_name='im.msg.service.comm_elem.GroupConfessItem.confess_to_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confess_to_nick', full_name='im.msg.service.comm_elem.GroupConfessItem.confess_to_nick', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='topic', full_name='im.msg.service.comm_elem.GroupConfessItem.topic', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confess_to_nick_type', full_name='im.msg.service.comm_elem.GroupConfessItem.confess_to_nick_type', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2479, - serialized_end=2609, -) - - -_GROUPCONFESSMSG = _descriptor.Descriptor( - name='GroupConfessMsg', - full_name='im.msg.service.comm_elem.GroupConfessMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='confess_time', full_name='im.msg.service.comm_elem.GroupConfessMsg.confess_time', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confessor_uin', full_name='im.msg.service.comm_elem.GroupConfessMsg.confessor_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confessor_sex', full_name='im.msg.service.comm_elem.GroupConfessMsg.confessor_sex', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sysmsg_flag', full_name='im.msg.service.comm_elem.GroupConfessMsg.sysmsg_flag', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confess_items', full_name='im.msg.service.comm_elem.GroupConfessMsg.confess_items', index=4, - number=5, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='total_topic_count', full_name='im.msg.service.comm_elem.GroupConfessMsg.total_topic_count', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2612, - serialized_end=2812, -) - - -_MSGELEMINFO_SERVTYPE23 = _descriptor.Descriptor( - name='MsgElemInfo_servtype23', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype23', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='face_type', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype23.face_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='face_bubble_count', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype23.face_bubble_count', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='face_summary', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype23.face_summary', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='flag', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype23.flag', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='others', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype23.others', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='yellow_face', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype23.yellow_face', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2815, - serialized_end=3008, -) - - -_MSGELEMINFO_SERVTYPE24 = _descriptor.Descriptor( - name='MsgElemInfo_servtype24', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype24', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='limit_chat_enter', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype24.limit_chat_enter', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='limit_chat_exit', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype24.limit_chat_exit', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3011, - serialized_end=3169, -) - - -_LIMITCHATENTER = _descriptor.Descriptor( - name='LimitChatEnter', - full_name='im.msg.service.comm_elem.LimitChatEnter', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='tips_wording', full_name='im.msg.service.comm_elem.LimitChatEnter.tips_wording', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='left_chat_time', full_name='im.msg.service.comm_elem.LimitChatEnter.left_chat_time', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='match_ts', full_name='im.msg.service.comm_elem.LimitChatEnter.match_ts', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='match_expired_time', full_name='im.msg.service.comm_elem.LimitChatEnter.match_expired_time', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='c2_c_expired_time', full_name='im.msg.service.comm_elem.LimitChatEnter.c2_c_expired_time', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ready_ts', full_name='im.msg.service.comm_elem.LimitChatEnter.ready_ts', index=5, - number=6, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='match_nick', full_name='im.msg.service.comm_elem.LimitChatEnter.match_nick', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3172, - serialized_end=3345, -) - - -_LIMITCHATEXIT = _descriptor.Descriptor( - name='LimitChatExit', - full_name='im.msg.service.comm_elem.LimitChatExit', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='exit_method', full_name='im.msg.service.comm_elem.LimitChatExit.exit_method', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='match_ts', full_name='im.msg.service.comm_elem.LimitChatExit.match_ts', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3347, - serialized_end=3401, -) - - -_MSGELEMINFO_SERVTYPE27 = _descriptor.Descriptor( - name='MsgElemInfo_servtype27', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype27', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='video_file', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype27.video_file', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3403, - serialized_end=3475, -) - - -_MSGELEMINFO_SERVTYPE29 = _descriptor.Descriptor( - name='MsgElemInfo_servtype29', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype29', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='luckybag_msg', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype29.luckybag_msg', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3477, - serialized_end=3523, -) - - -_MSGELEMINFO_SERVTYPE3 = _descriptor.Descriptor( - name='MsgElemInfo_servtype3', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype3', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='flash_troop_pic', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype3.flash_troop_pic', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='flash_c2_c_pic', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype3.flash_c2_c_pic', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3526, - serialized_end=3660, -) - - -_MSGELEMINFO_SERVTYPE31 = _descriptor.Descriptor( - name='MsgElemInfo_servtype31', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype31', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='text', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype31.text', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ext', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype31.ext', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3662, - serialized_end=3713, -) - - -_MSGELEMINFO_SERVTYPE33 = _descriptor.Descriptor( - name='MsgElemInfo_servtype33', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype33', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='index', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype33.index', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='text', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype33.text', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='compat', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype33.compat', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='buf', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype33.buf', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3715, - serialized_end=3797, -) - - -_MSGELEMINFO_SERVTYPE34 = _descriptor.Descriptor( - name='MsgElemInfo_servtype34', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype34', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='from_nickname', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype34.from_nickname', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='push_window_flag', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype34.push_window_flag', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='game_session', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype34.game_session', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ext', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype34.ext', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3800, - serialized_end=3947, -) - - -_GAMESESSION = _descriptor.Descriptor( - name='GameSession', - full_name='im.msg.service.comm_elem.GameSession', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='from_role_id', full_name='im.msg.service.comm_elem.GameSession.from_role_id', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='from_open_id', full_name='im.msg.service.comm_elem.GameSession.from_open_id', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_role_id', full_name='im.msg.service.comm_elem.GameSession.to_role_id', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_open_id', full_name='im.msg.service.comm_elem.GameSession.to_open_id', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='game_appid', full_name='im.msg.service.comm_elem.GameSession.game_appid', index=4, - number=5, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='from_tiny_id', full_name='im.msg.service.comm_elem.GameSession.from_tiny_id', index=5, - number=6, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_tiny_id', full_name='im.msg.service.comm_elem.GameSession.to_tiny_id', index=6, - number=7, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3950, - serialized_end=4109, -) - - -_MSGELEMINFO_SERVTYPE35 = _descriptor.Descriptor( - name='MsgElemInfo_servtype35', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype35', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='token', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype35.token', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='global_padid', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype35.global_padid', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='get_rev', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype35.get_rev', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='his_edit_uin_num', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype35.his_edit_uin_num', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4111, - serialized_end=4215, -) - - -_MSGELEMINFO_SERVTYPE4 = _descriptor.Descriptor( - name='MsgElemInfo_servtype4', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype4', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='imsg_type', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype4.imsg_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='st_story_aio_obj_msg', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype4.st_story_aio_obj_msg', index=1, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4217, - serialized_end=4331, -) - - -_MSGELEMINFO_SERVTYPE5 = _descriptor.Descriptor( - name='MsgElemInfo_servtype5', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype5', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='vid', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype5.vid', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cover', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype5.cover', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='title', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype5.title', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='summary', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype5.summary', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='create_time', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype5.create_time', index=4, - number=5, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='comment_content', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype5.comment_content', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='author', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype5.author', index=6, - number=7, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4334, - serialized_end=4479, -) - - -_MSGELEMINFO_SERVTYPE8 = _descriptor.Descriptor( - name='MsgElemInfo_servtype8', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype8', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='wifi_deliver_gift_msg', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype8.wifi_deliver_gift_msg', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4481, - serialized_end=4568, -) - - -_MSGELEMINFO_SERVTYPE9 = _descriptor.Descriptor( - name='MsgElemInfo_servtype9', - full_name='im.msg.service.comm_elem.MsgElemInfo_servtype9', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='anchor_status', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype9.anchor_status', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='jump_schema', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype9.jump_schema', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='anchor_nickname', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype9.anchor_nickname', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='anchor_head_url', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype9.anchor_head_url', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='live_title', full_name='im.msg.service.comm_elem.MsgElemInfo_servtype9.live_title', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4571, - serialized_end=4708, -) - - -_STORYAIOOBJMSG = _descriptor.Descriptor( - name='StoryAioObjMsg', - full_name='im.msg.service.comm_elem.StoryAioObjMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='ui_url', full_name='im.msg.service.comm_elem.StoryAioObjMsg.ui_url', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='jmp_url', full_name='im.msg.service.comm_elem.StoryAioObjMsg.jmp_url', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4710, - serialized_end=4759, -) - -_MSGELEMINFO_SERVTYPE21.fields_by_name['c2_c_confess_ctx'].message_type = _C2CCONFESSCONTEXT -_MSGELEMINFO_SERVTYPE21.fields_by_name['group_confess_msg'].message_type = _GROUPCONFESSMSG -_MSGELEMINFO_SERVTYPE21.fields_by_name['group_confess_ctx'].message_type = _GROUPCONFESSCONTEXT -_GROUPCONFESSMSG.fields_by_name['confess_items'].message_type = _GROUPCONFESSITEM -_MSGELEMINFO_SERVTYPE23.fields_by_name['yellow_face'].message_type = _MSGELEMINFO_SERVTYPE33 -_MSGELEMINFO_SERVTYPE24.fields_by_name['limit_chat_enter'].message_type = _LIMITCHATENTER -_MSGELEMINFO_SERVTYPE24.fields_by_name['limit_chat_exit'].message_type = _LIMITCHATEXIT -_MSGELEMINFO_SERVTYPE27.fields_by_name['video_file'].message_type = cai_dot_pb_dot_im_dot_msg_dot_msg__body_dot_msg__body__pb2._VIDEOFILE -_MSGELEMINFO_SERVTYPE3.fields_by_name['flash_troop_pic'].message_type = cai_dot_pb_dot_im_dot_msg_dot_msg__body_dot_msg__body__pb2._CUSTOMFACE -_MSGELEMINFO_SERVTYPE3.fields_by_name['flash_c2_c_pic'].message_type = cai_dot_pb_dot_im_dot_msg_dot_msg__body_dot_msg__body__pb2._NOTONLINEIMAGE -_MSGELEMINFO_SERVTYPE34.fields_by_name['game_session'].message_type = _GAMESESSION -_MSGELEMINFO_SERVTYPE4.fields_by_name['st_story_aio_obj_msg'].message_type = _STORYAIOOBJMSG -_MSGELEMINFO_SERVTYPE8.fields_by_name['wifi_deliver_gift_msg'].message_type = cai_dot_pb_dot_im_dot_msg_dot_msg__body_dot_msg__body__pb2._DELIVERGIFTMSG -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype1'] = _MSGELEMINFO_SERVTYPE1 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype11'] = _MSGELEMINFO_SERVTYPE11 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype13'] = _MSGELEMINFO_SERVTYPE13 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype14'] = _MSGELEMINFO_SERVTYPE14 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype15'] = _MSGELEMINFO_SERVTYPE15 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype16'] = _MSGELEMINFO_SERVTYPE16 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype18'] = _MSGELEMINFO_SERVTYPE18 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype19'] = _MSGELEMINFO_SERVTYPE19 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype2'] = _MSGELEMINFO_SERVTYPE2 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype20'] = _MSGELEMINFO_SERVTYPE20 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype21'] = _MSGELEMINFO_SERVTYPE21 -DESCRIPTOR.message_types_by_name['C2CConfessContext'] = _C2CCONFESSCONTEXT -DESCRIPTOR.message_types_by_name['GroupConfessContext'] = _GROUPCONFESSCONTEXT -DESCRIPTOR.message_types_by_name['GroupConfessItem'] = _GROUPCONFESSITEM -DESCRIPTOR.message_types_by_name['GroupConfessMsg'] = _GROUPCONFESSMSG -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype23'] = _MSGELEMINFO_SERVTYPE23 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype24'] = _MSGELEMINFO_SERVTYPE24 -DESCRIPTOR.message_types_by_name['LimitChatEnter'] = _LIMITCHATENTER -DESCRIPTOR.message_types_by_name['LimitChatExit'] = _LIMITCHATEXIT -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype27'] = _MSGELEMINFO_SERVTYPE27 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype29'] = _MSGELEMINFO_SERVTYPE29 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype3'] = _MSGELEMINFO_SERVTYPE3 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype31'] = _MSGELEMINFO_SERVTYPE31 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype33'] = _MSGELEMINFO_SERVTYPE33 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype34'] = _MSGELEMINFO_SERVTYPE34 -DESCRIPTOR.message_types_by_name['GameSession'] = _GAMESESSION -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype35'] = _MSGELEMINFO_SERVTYPE35 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype4'] = _MSGELEMINFO_SERVTYPE4 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype5'] = _MSGELEMINFO_SERVTYPE5 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype8'] = _MSGELEMINFO_SERVTYPE8 -DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype9'] = _MSGELEMINFO_SERVTYPE9 -DESCRIPTOR.message_types_by_name['StoryAioObjMsg'] = _STORYAIOOBJMSG -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n/cai/pb/im/msg/service/comm_elem/comm_elem.proto\x12\x18im.msg.service.comm_elem\x1a%cai/pb/im/msg/msg_body/msg_body.proto\"\xfa\x01\n\x15MsgElemInfo_servtype1\x12\x11\n\treward_id\x18\x01 \x01(\x0c\x12\x12\n\nsender_uin\x18\x02 \x01(\x04\x12\x10\n\x08pic_type\x18\x03 \x01(\r\x12\x14\n\x0creward_money\x18\x04 \x01(\r\x12\x0b\n\x03url\x18\x05 \x01(\x0c\x12\x0f\n\x07\x63ontent\x18\x06 \x01(\x0c\x12\x18\n\x10\x63reate_timestamp\x18\x07 \x01(\r\x12\x0e\n\x06status\x18\x08 \x01(\r\x12\x0c\n\x04size\x18\t \x01(\r\x12\x16\n\x0evideo_duration\x18\n \x01(\r\x12\x0b\n\x03seq\x18\x0b \x01(\x04\x12\x17\n\x0freward_type_ext\x18\x0c \x01(\r\"\xc2\x01\n\x16MsgElemInfo_servtype11\x12\x0e\n\x06res_id\x18\x01 \x01(\x0c\x12\x0f\n\x07res_md5\x18\x02 \x01(\x0c\x12\x15\n\rreserve_info1\x18\x03 \x01(\x0c\x12\x15\n\rreserve_info2\x18\x04 \x01(\x0c\x12\x1a\n\x12\x64oodle_data_offset\x18\x05 \x01(\r\x12\x15\n\rdoodle_gif_id\x18\x06 \x01(\r\x12\x12\n\ndoodle_url\x18\x07 \x01(\x0c\x12\x12\n\ndoodle_md5\x18\x08 \x01(\x0c\"@\n\x16MsgElemInfo_servtype13\x12\x13\n\x0bsys_head_id\x18\x01 \x01(\r\x12\x11\n\thead_flag\x18\x02 \x01(\r\":\n\x16MsgElemInfo_servtype14\x12\n\n\x02id\x18\x01 \x01(\r\x12\x14\n\x0creserve_info\x18\x02 \x01(\x0c\"\xa7\x01\n\x16MsgElemInfo_servtype15\x12\x0b\n\x03vid\x18\x01 \x01(\x0c\x12\r\n\x05\x63over\x18\x02 \x01(\x0c\x12\r\n\x05title\x18\x03 \x01(\x0c\x12\x0f\n\x07summary\x18\x04 \x01(\x0c\x12\x13\n\x0b\x63reate_time\x18\x05 \x01(\x04\x12\x17\n\x0f\x63omment_content\x18\x06 \x01(\x0c\x12\x0e\n\x06\x61uthor\x18\x07 \x01(\x04\x12\x13\n\x0b\x63tr_version\x18\x08 \x01(\r\"\x8a\x02\n\x16MsgElemInfo_servtype16\x12\x0b\n\x03uid\x18\x01 \x01(\x04\x12\x10\n\x08union_id\x18\x02 \x01(\x0c\x12\x10\n\x08story_id\x18\x03 \x01(\x0c\x12\x0b\n\x03md5\x18\x04 \x01(\x0c\x12\x11\n\tthumb_url\x18\x05 \x01(\x0c\x12\x12\n\ndoodle_url\x18\x06 \x01(\x0c\x12\x13\n\x0bvideo_width\x18\x07 \x01(\r\x12\x14\n\x0cvideo_height\x18\x08 \x01(\r\x12\x13\n\x0bsource_name\x18\t \x01(\x0c\x12\x1a\n\x12source_action_type\x18\n \x01(\x0c\x12\x1a\n\x12source_action_data\x18\x0b \x01(\x0c\x12\x13\n\x0b\x63tr_version\x18\x0c \x01(\r\"x\n\x16MsgElemInfo_servtype18\x12\x16\n\x0e\x63urrent_amount\x18\x01 \x01(\x04\x12\x14\n\x0ctotal_amount\x18\x02 \x01(\x04\x12\x0e\n\x06listid\x18\x03 \x01(\x0c\x12\x10\n\x08\x61uth_key\x18\x04 \x01(\x0c\x12\x0e\n\x06number\x18\x05 \x01(\r\"&\n\x16MsgElemInfo_servtype19\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"\xed\x01\n\x15MsgElemInfo_servtype2\x12\x11\n\tpoke_type\x18\x01 \x01(\r\x12\x14\n\x0cpoke_summary\x18\x02 \x01(\x0c\x12\x12\n\ndouble_hit\x18\x03 \x01(\r\x12\x12\n\nvaspoke_id\x18\x04 \x01(\r\x12\x14\n\x0cvaspoke_name\x18\x05 \x01(\x0c\x12\x16\n\x0evaspoke_minver\x18\x06 \x01(\x0c\x12\x15\n\rpoke_strength\x18\x07 \x01(\r\x12\x10\n\x08msg_type\x18\x08 \x01(\r\x12\x19\n\x11\x66\x61\x63\x65_bubble_count\x18\t \x01(\r\x12\x11\n\tpoke_flag\x18\n \x01(\r\"&\n\x16MsgElemInfo_servtype20\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"\x81\x03\n\x16MsgElemInfo_servtype21\x12\x10\n\x08topic_id\x18\x01 \x01(\r\x12\x15\n\rconfessor_uin\x18\x02 \x01(\x04\x12\x16\n\x0e\x63onfessor_nick\x18\x03 \x01(\x0c\x12\x15\n\rconfessor_sex\x18\x04 \x01(\r\x12\x13\n\x0bsysmsg_flag\x18\x05 \x01(\r\x12\x45\n\x10\x63\x32_c_confess_ctx\x18\x06 \x01(\x0b\x32+.im.msg.service.comm_elem.C2CConfessContext\x12\r\n\x05topic\x18\x07 \x01(\x0c\x12\x14\n\x0c\x63onfess_time\x18\x08 \x01(\x04\x12\x44\n\x11group_confess_msg\x18\t \x01(\x0b\x32).im.msg.service.comm_elem.GroupConfessMsg\x12H\n\x11group_confess_ctx\x18\n \x01(\x0b\x32-.im.msg.service.comm_elem.GroupConfessContext\"\x8c\x02\n\x11\x43\x32\x43\x43onfessContext\x12\x15\n\rconfessor_uin\x18\x01 \x01(\x04\x12\x16\n\x0e\x63onfess_to_uin\x18\x02 \x01(\x04\x12\x10\n\x08send_uin\x18\x03 \x01(\x04\x12\x16\n\x0e\x63onfessor_nick\x18\x04 \x01(\x0c\x12\x0f\n\x07\x63onfess\x18\x05 \x01(\x0c\x12\x0f\n\x07\x62g_type\x18\x06 \x01(\r\x12\x10\n\x08topic_id\x18\x07 \x01(\r\x12\x14\n\x0c\x63onfess_time\x18\x08 \x01(\x04\x12\x15\n\rconfessor_sex\x18\t \x01(\r\x12\x10\n\x08\x62iz_type\x18\n \x01(\r\x12\x13\n\x0b\x63onfess_num\x18\x0b \x01(\r\x12\x16\n\x0e\x63onfess_to_sex\x18\x0c \x01(\r\"\xf3\x01\n\x13GroupConfessContext\x12\x15\n\rconfessor_uin\x18\x01 \x01(\x04\x12\x16\n\x0e\x63onfess_to_uin\x18\x02 \x01(\x04\x12\x10\n\x08send_uin\x18\x03 \x01(\x04\x12\x15\n\rconfessor_sex\x18\x04 \x01(\r\x12\x17\n\x0f\x63onfess_to_nick\x18\x05 \x01(\x0c\x12\r\n\x05topic\x18\x06 \x01(\x0c\x12\x10\n\x08topic_id\x18\x07 \x01(\r\x12\x14\n\x0c\x63onfess_time\x18\x08 \x01(\x04\x12\x1c\n\x14\x63onfess_to_nick_type\x18\t \x01(\r\x12\x16\n\x0e\x63onfessor_nick\x18\n \x01(\x0c\"\x82\x01\n\x10GroupConfessItem\x12\x10\n\x08topic_id\x18\x01 \x01(\r\x12\x16\n\x0e\x63onfess_to_uin\x18\x02 \x01(\x04\x12\x17\n\x0f\x63onfess_to_nick\x18\x03 \x01(\x0c\x12\r\n\x05topic\x18\x04 \x01(\x0c\x12\x1c\n\x14\x63onfess_to_nick_type\x18\x05 \x01(\r\"\xc8\x01\n\x0fGroupConfessMsg\x12\x14\n\x0c\x63onfess_time\x18\x01 \x01(\x04\x12\x15\n\rconfessor_uin\x18\x02 \x01(\x04\x12\x15\n\rconfessor_sex\x18\x03 \x01(\r\x12\x13\n\x0bsysmsg_flag\x18\x04 \x01(\r\x12\x41\n\rconfess_items\x18\x05 \x03(\x0b\x32*.im.msg.service.comm_elem.GroupConfessItem\x12\x19\n\x11total_topic_count\x18\x06 \x01(\r\"\xc1\x01\n\x16MsgElemInfo_servtype23\x12\x11\n\tface_type\x18\x01 \x01(\r\x12\x19\n\x11\x66\x61\x63\x65_bubble_count\x18\x02 \x01(\r\x12\x14\n\x0c\x66\x61\x63\x65_summary\x18\x03 \x01(\x0c\x12\x0c\n\x04\x66lag\x18\x04 \x01(\r\x12\x0e\n\x06others\x18\x05 \x01(\x0c\x12\x45\n\x0byellow_face\x18\x06 \x01(\x0b\x32\x30.im.msg.service.comm_elem.MsgElemInfo_servtype33\"\x9e\x01\n\x16MsgElemInfo_servtype24\x12\x42\n\x10limit_chat_enter\x18\x01 \x01(\x0b\x32(.im.msg.service.comm_elem.LimitChatEnter\x12@\n\x0flimit_chat_exit\x18\x02 \x01(\x0b\x32\'.im.msg.service.comm_elem.LimitChatExit\"\xad\x01\n\x0eLimitChatEnter\x12\x14\n\x0ctips_wording\x18\x01 \x01(\x0c\x12\x16\n\x0eleft_chat_time\x18\x02 \x01(\r\x12\x10\n\x08match_ts\x18\x03 \x01(\x04\x12\x1a\n\x12match_expired_time\x18\x04 \x01(\r\x12\x19\n\x11\x63\x32_c_expired_time\x18\x05 \x01(\r\x12\x10\n\x08ready_ts\x18\x06 \x01(\x04\x12\x12\n\nmatch_nick\x18\x07 \x01(\x0c\"6\n\rLimitChatExit\x12\x13\n\x0b\x65xit_method\x18\x01 \x01(\r\x12\x10\n\x08match_ts\x18\x02 \x01(\x04\"H\n\x16MsgElemInfo_servtype27\x12.\n\nvideo_file\x18\x01 \x01(\x0b\x32\x1a.im.msg.msg_body.VideoFile\".\n\x16MsgElemInfo_servtype29\x12\x14\n\x0cluckybag_msg\x18\x01 \x01(\x0c\"\x86\x01\n\x15MsgElemInfo_servtype3\x12\x34\n\x0f\x66lash_troop_pic\x18\x01 \x01(\x0b\x32\x1b.im.msg.msg_body.CustomFace\x12\x37\n\x0e\x66lash_c2_c_pic\x18\x02 \x01(\x0b\x32\x1f.im.msg.msg_body.NotOnlineImage\"3\n\x16MsgElemInfo_servtype31\x12\x0c\n\x04text\x18\x01 \x01(\x0c\x12\x0b\n\x03\x65xt\x18\x02 \x01(\x0c\"R\n\x16MsgElemInfo_servtype33\x12\r\n\x05index\x18\x01 \x01(\r\x12\x0c\n\x04text\x18\x02 \x01(\x0c\x12\x0e\n\x06\x63ompat\x18\x03 \x01(\x0c\x12\x0b\n\x03\x62uf\x18\x04 \x01(\x0c\"\x93\x01\n\x16MsgElemInfo_servtype34\x12\x15\n\rfrom_nickname\x18\x01 \x01(\x0c\x12\x18\n\x10push_window_flag\x18\x02 \x01(\r\x12;\n\x0cgame_session\x18\x03 \x01(\x0b\x32%.im.msg.service.comm_elem.GameSession\x12\x0b\n\x03\x65xt\x18\x04 \x01(\x0c\"\x9f\x01\n\x0bGameSession\x12\x14\n\x0c\x66rom_role_id\x18\x01 \x01(\x0c\x12\x14\n\x0c\x66rom_open_id\x18\x02 \x01(\x0c\x12\x12\n\nto_role_id\x18\x03 \x01(\x0c\x12\x12\n\nto_open_id\x18\x04 \x01(\x0c\x12\x12\n\ngame_appid\x18\x05 \x01(\x04\x12\x14\n\x0c\x66rom_tiny_id\x18\x06 \x01(\x04\x12\x12\n\nto_tiny_id\x18\x07 \x01(\x04\"h\n\x16MsgElemInfo_servtype35\x12\r\n\x05token\x18\x01 \x01(\x0c\x12\x14\n\x0cglobal_padid\x18\x02 \x01(\x0c\x12\x0f\n\x07get_rev\x18\x03 \x01(\r\x12\x18\n\x10his_edit_uin_num\x18\x04 \x01(\r\"r\n\x15MsgElemInfo_servtype4\x12\x11\n\timsg_type\x18\x01 \x01(\r\x12\x46\n\x14st_story_aio_obj_msg\x18\x04 \x01(\x0b\x32(.im.msg.service.comm_elem.StoryAioObjMsg\"\x91\x01\n\x15MsgElemInfo_servtype5\x12\x0b\n\x03vid\x18\x01 \x01(\x0c\x12\r\n\x05\x63over\x18\x02 \x01(\x0c\x12\r\n\x05title\x18\x03 \x01(\x0c\x12\x0f\n\x07summary\x18\x04 \x01(\x0c\x12\x13\n\x0b\x63reate_time\x18\x05 \x01(\x04\x12\x17\n\x0f\x63omment_content\x18\x06 \x01(\x0c\x12\x0e\n\x06\x61uthor\x18\x07 \x01(\x04\"W\n\x15MsgElemInfo_servtype8\x12>\n\x15wifi_deliver_gift_msg\x18\x01 \x01(\x0b\x32\x1f.im.msg.msg_body.DeliverGiftMsg\"\x89\x01\n\x15MsgElemInfo_servtype9\x12\x15\n\ranchor_status\x18\x01 \x01(\r\x12\x13\n\x0bjump_schema\x18\x02 \x01(\x0c\x12\x17\n\x0f\x61nchor_nickname\x18\x03 \x01(\t\x12\x17\n\x0f\x61nchor_head_url\x18\x04 \x01(\x0c\x12\x12\n\nlive_title\x18\x05 \x01(\t\"1\n\x0eStoryAioObjMsg\x12\x0e\n\x06ui_url\x18\x01 \x01(\t\x12\x0f\n\x07jmp_url\x18\x02 \x01(\t') + + + +_MSGELEMINFO_SERVTYPE1 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype1'] +_MSGELEMINFO_SERVTYPE11 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype11'] +_MSGELEMINFO_SERVTYPE13 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype13'] +_MSGELEMINFO_SERVTYPE14 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype14'] +_MSGELEMINFO_SERVTYPE15 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype15'] +_MSGELEMINFO_SERVTYPE16 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype16'] +_MSGELEMINFO_SERVTYPE18 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype18'] +_MSGELEMINFO_SERVTYPE19 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype19'] +_MSGELEMINFO_SERVTYPE2 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype2'] +_MSGELEMINFO_SERVTYPE20 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype20'] +_MSGELEMINFO_SERVTYPE21 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype21'] +_C2CCONFESSCONTEXT = DESCRIPTOR.message_types_by_name['C2CConfessContext'] +_GROUPCONFESSCONTEXT = DESCRIPTOR.message_types_by_name['GroupConfessContext'] +_GROUPCONFESSITEM = DESCRIPTOR.message_types_by_name['GroupConfessItem'] +_GROUPCONFESSMSG = DESCRIPTOR.message_types_by_name['GroupConfessMsg'] +_MSGELEMINFO_SERVTYPE23 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype23'] +_MSGELEMINFO_SERVTYPE24 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype24'] +_LIMITCHATENTER = DESCRIPTOR.message_types_by_name['LimitChatEnter'] +_LIMITCHATEXIT = DESCRIPTOR.message_types_by_name['LimitChatExit'] +_MSGELEMINFO_SERVTYPE27 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype27'] +_MSGELEMINFO_SERVTYPE29 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype29'] +_MSGELEMINFO_SERVTYPE3 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype3'] +_MSGELEMINFO_SERVTYPE31 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype31'] +_MSGELEMINFO_SERVTYPE33 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype33'] +_MSGELEMINFO_SERVTYPE34 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype34'] +_GAMESESSION = DESCRIPTOR.message_types_by_name['GameSession'] +_MSGELEMINFO_SERVTYPE35 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype35'] +_MSGELEMINFO_SERVTYPE4 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype4'] +_MSGELEMINFO_SERVTYPE5 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype5'] +_MSGELEMINFO_SERVTYPE8 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype8'] +_MSGELEMINFO_SERVTYPE9 = DESCRIPTOR.message_types_by_name['MsgElemInfo_servtype9'] +_STORYAIOOBJMSG = DESCRIPTOR.message_types_by_name['StoryAioObjMsg'] MsgElemInfo_servtype1 = _reflection.GeneratedProtocolMessageType('MsgElemInfo_servtype1', (_message.Message,), { 'DESCRIPTOR' : _MSGELEMINFO_SERVTYPE1, '__module__' : 'cai.pb.im.msg.service.comm_elem.comm_elem_pb2' @@ -2238,5 +275,71 @@ }) _sym_db.RegisterMessage(StoryAioObjMsg) - +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _MSGELEMINFO_SERVTYPE1._serialized_start=117 + _MSGELEMINFO_SERVTYPE1._serialized_end=367 + _MSGELEMINFO_SERVTYPE11._serialized_start=370 + _MSGELEMINFO_SERVTYPE11._serialized_end=564 + _MSGELEMINFO_SERVTYPE13._serialized_start=566 + _MSGELEMINFO_SERVTYPE13._serialized_end=630 + _MSGELEMINFO_SERVTYPE14._serialized_start=632 + _MSGELEMINFO_SERVTYPE14._serialized_end=690 + _MSGELEMINFO_SERVTYPE15._serialized_start=693 + _MSGELEMINFO_SERVTYPE15._serialized_end=860 + _MSGELEMINFO_SERVTYPE16._serialized_start=863 + _MSGELEMINFO_SERVTYPE16._serialized_end=1129 + _MSGELEMINFO_SERVTYPE18._serialized_start=1131 + _MSGELEMINFO_SERVTYPE18._serialized_end=1251 + _MSGELEMINFO_SERVTYPE19._serialized_start=1253 + _MSGELEMINFO_SERVTYPE19._serialized_end=1291 + _MSGELEMINFO_SERVTYPE2._serialized_start=1294 + _MSGELEMINFO_SERVTYPE2._serialized_end=1531 + _MSGELEMINFO_SERVTYPE20._serialized_start=1533 + _MSGELEMINFO_SERVTYPE20._serialized_end=1571 + _MSGELEMINFO_SERVTYPE21._serialized_start=1574 + _MSGELEMINFO_SERVTYPE21._serialized_end=1959 + _C2CCONFESSCONTEXT._serialized_start=1962 + _C2CCONFESSCONTEXT._serialized_end=2230 + _GROUPCONFESSCONTEXT._serialized_start=2233 + _GROUPCONFESSCONTEXT._serialized_end=2476 + _GROUPCONFESSITEM._serialized_start=2479 + _GROUPCONFESSITEM._serialized_end=2609 + _GROUPCONFESSMSG._serialized_start=2612 + _GROUPCONFESSMSG._serialized_end=2812 + _MSGELEMINFO_SERVTYPE23._serialized_start=2815 + _MSGELEMINFO_SERVTYPE23._serialized_end=3008 + _MSGELEMINFO_SERVTYPE24._serialized_start=3011 + _MSGELEMINFO_SERVTYPE24._serialized_end=3169 + _LIMITCHATENTER._serialized_start=3172 + _LIMITCHATENTER._serialized_end=3345 + _LIMITCHATEXIT._serialized_start=3347 + _LIMITCHATEXIT._serialized_end=3401 + _MSGELEMINFO_SERVTYPE27._serialized_start=3403 + _MSGELEMINFO_SERVTYPE27._serialized_end=3475 + _MSGELEMINFO_SERVTYPE29._serialized_start=3477 + _MSGELEMINFO_SERVTYPE29._serialized_end=3523 + _MSGELEMINFO_SERVTYPE3._serialized_start=3526 + _MSGELEMINFO_SERVTYPE3._serialized_end=3660 + _MSGELEMINFO_SERVTYPE31._serialized_start=3662 + _MSGELEMINFO_SERVTYPE31._serialized_end=3713 + _MSGELEMINFO_SERVTYPE33._serialized_start=3715 + _MSGELEMINFO_SERVTYPE33._serialized_end=3797 + _MSGELEMINFO_SERVTYPE34._serialized_start=3800 + _MSGELEMINFO_SERVTYPE34._serialized_end=3947 + _GAMESESSION._serialized_start=3950 + _GAMESESSION._serialized_end=4109 + _MSGELEMINFO_SERVTYPE35._serialized_start=4111 + _MSGELEMINFO_SERVTYPE35._serialized_end=4215 + _MSGELEMINFO_SERVTYPE4._serialized_start=4217 + _MSGELEMINFO_SERVTYPE4._serialized_end=4331 + _MSGELEMINFO_SERVTYPE5._serialized_start=4334 + _MSGELEMINFO_SERVTYPE5._serialized_end=4479 + _MSGELEMINFO_SERVTYPE8._serialized_start=4481 + _MSGELEMINFO_SERVTYPE8._serialized_end=4568 + _MSGELEMINFO_SERVTYPE9._serialized_start=4571 + _MSGELEMINFO_SERVTYPE9._serialized_end=4708 + _STORYAIOOBJMSG._serialized_start=4710 + _STORYAIOOBJMSG._serialized_end=4759 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/msg/service/comm_elem/comm_elem_pb2.pyi b/cai/pb/im/msg/service/comm_elem/comm_elem_pb2.pyi index 2c4f00ae..62fe8f33 100644 --- a/cai/pb/im/msg/service/comm_elem/comm_elem_pb2.pyi +++ b/cai/pb/im/msg/service/comm_elem/comm_elem_pb2.pyi @@ -39,10 +39,10 @@ from typing_extensions import ( ) -DESCRIPTOR: FileDescriptor = ... +DESCRIPTOR: FileDescriptor class MsgElemInfo_servtype1(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor REWARD_ID_FIELD_NUMBER: int SENDER_UIN_FIELD_NUMBER: int PIC_TYPE_FIELD_NUMBER: int @@ -55,39 +55,38 @@ class MsgElemInfo_servtype1(Message): VIDEO_DURATION_FIELD_NUMBER: int SEQ_FIELD_NUMBER: int REWARD_TYPE_EXT_FIELD_NUMBER: int - reward_id: bytes = ... - sender_uin: int = ... - pic_type: int = ... - reward_money: int = ... - url: bytes = ... - content: bytes = ... - create_timestamp: int = ... - status: int = ... - size: int = ... - video_duration: int = ... - seq: int = ... - reward_type_ext: int = ... - - def __init__(self, - *, - reward_id : Optional[bytes] = ..., - sender_uin : Optional[int] = ..., - pic_type : Optional[int] = ..., - reward_money : Optional[int] = ..., - url : Optional[bytes] = ..., - content : Optional[bytes] = ..., - create_timestamp : Optional[int] = ..., - status : Optional[int] = ..., - size : Optional[int] = ..., - video_duration : Optional[int] = ..., - seq : Optional[int] = ..., - reward_type_ext : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"content",b"content",u"create_timestamp",b"create_timestamp",u"pic_type",b"pic_type",u"reward_id",b"reward_id",u"reward_money",b"reward_money",u"reward_type_ext",b"reward_type_ext",u"sender_uin",b"sender_uin",u"seq",b"seq",u"size",b"size",u"status",b"status",u"url",b"url",u"video_duration",b"video_duration"]) -> bool: ... - def ClearField(self, field_name: Literal[u"content",b"content",u"create_timestamp",b"create_timestamp",u"pic_type",b"pic_type",u"reward_id",b"reward_id",u"reward_money",b"reward_money",u"reward_type_ext",b"reward_type_ext",u"sender_uin",b"sender_uin",u"seq",b"seq",u"size",b"size",u"status",b"status",u"url",b"url",u"video_duration",b"video_duration"]) -> None: ... + reward_id: bytes + sender_uin: int + pic_type: int + reward_money: int + url: bytes + content: bytes + create_timestamp: int + status: int + size: int + video_duration: int + seq: int + reward_type_ext: int + def __init__(self, + *, + reward_id: Optional[bytes] = ..., + sender_uin: Optional[int] = ..., + pic_type: Optional[int] = ..., + reward_money: Optional[int] = ..., + url: Optional[bytes] = ..., + content: Optional[bytes] = ..., + create_timestamp: Optional[int] = ..., + status: Optional[int] = ..., + size: Optional[int] = ..., + video_duration: Optional[int] = ..., + seq: Optional[int] = ..., + reward_type_ext: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["content",b"content","create_timestamp",b"create_timestamp","pic_type",b"pic_type","reward_id",b"reward_id","reward_money",b"reward_money","reward_type_ext",b"reward_type_ext","sender_uin",b"sender_uin","seq",b"seq","size",b"size","status",b"status","url",b"url","video_duration",b"video_duration"]) -> bool: ... + def ClearField(self, field_name: Literal["content",b"content","create_timestamp",b"create_timestamp","pic_type",b"pic_type","reward_id",b"reward_id","reward_money",b"reward_money","reward_type_ext",b"reward_type_ext","sender_uin",b"sender_uin","seq",b"seq","size",b"size","status",b"status","url",b"url","video_duration",b"video_duration"]) -> None: ... class MsgElemInfo_servtype11(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RES_ID_FIELD_NUMBER: int RES_MD5_FIELD_NUMBER: int RESERVE_INFO1_FIELD_NUMBER: int @@ -96,61 +95,58 @@ class MsgElemInfo_servtype11(Message): DOODLE_GIF_ID_FIELD_NUMBER: int DOODLE_URL_FIELD_NUMBER: int DOODLE_MD5_FIELD_NUMBER: int - res_id: bytes = ... - res_md5: bytes = ... - reserve_info1: bytes = ... - reserve_info2: bytes = ... - doodle_data_offset: int = ... - doodle_gif_id: int = ... - doodle_url: bytes = ... - doodle_md5: bytes = ... - - def __init__(self, - *, - res_id : Optional[bytes] = ..., - res_md5 : Optional[bytes] = ..., - reserve_info1 : Optional[bytes] = ..., - reserve_info2 : Optional[bytes] = ..., - doodle_data_offset : Optional[int] = ..., - doodle_gif_id : Optional[int] = ..., - doodle_url : Optional[bytes] = ..., - doodle_md5 : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"doodle_data_offset",b"doodle_data_offset",u"doodle_gif_id",b"doodle_gif_id",u"doodle_md5",b"doodle_md5",u"doodle_url",b"doodle_url",u"res_id",b"res_id",u"res_md5",b"res_md5",u"reserve_info1",b"reserve_info1",u"reserve_info2",b"reserve_info2"]) -> bool: ... - def ClearField(self, field_name: Literal[u"doodle_data_offset",b"doodle_data_offset",u"doodle_gif_id",b"doodle_gif_id",u"doodle_md5",b"doodle_md5",u"doodle_url",b"doodle_url",u"res_id",b"res_id",u"res_md5",b"res_md5",u"reserve_info1",b"reserve_info1",u"reserve_info2",b"reserve_info2"]) -> None: ... + res_id: bytes + res_md5: bytes + reserve_info1: bytes + reserve_info2: bytes + doodle_data_offset: int + doodle_gif_id: int + doodle_url: bytes + doodle_md5: bytes + def __init__(self, + *, + res_id: Optional[bytes] = ..., + res_md5: Optional[bytes] = ..., + reserve_info1: Optional[bytes] = ..., + reserve_info2: Optional[bytes] = ..., + doodle_data_offset: Optional[int] = ..., + doodle_gif_id: Optional[int] = ..., + doodle_url: Optional[bytes] = ..., + doodle_md5: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["doodle_data_offset",b"doodle_data_offset","doodle_gif_id",b"doodle_gif_id","doodle_md5",b"doodle_md5","doodle_url",b"doodle_url","res_id",b"res_id","res_md5",b"res_md5","reserve_info1",b"reserve_info1","reserve_info2",b"reserve_info2"]) -> bool: ... + def ClearField(self, field_name: Literal["doodle_data_offset",b"doodle_data_offset","doodle_gif_id",b"doodle_gif_id","doodle_md5",b"doodle_md5","doodle_url",b"doodle_url","res_id",b"res_id","res_md5",b"res_md5","reserve_info1",b"reserve_info1","reserve_info2",b"reserve_info2"]) -> None: ... class MsgElemInfo_servtype13(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SYS_HEAD_ID_FIELD_NUMBER: int HEAD_FLAG_FIELD_NUMBER: int - sys_head_id: int = ... - head_flag: int = ... - + sys_head_id: int + head_flag: int def __init__(self, *, - sys_head_id : Optional[int] = ..., - head_flag : Optional[int] = ..., + sys_head_id: Optional[int] = ..., + head_flag: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"head_flag",b"head_flag",u"sys_head_id",b"sys_head_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"head_flag",b"head_flag",u"sys_head_id",b"sys_head_id"]) -> None: ... + def HasField(self, field_name: Literal["head_flag",b"head_flag","sys_head_id",b"sys_head_id"]) -> bool: ... + def ClearField(self, field_name: Literal["head_flag",b"head_flag","sys_head_id",b"sys_head_id"]) -> None: ... class MsgElemInfo_servtype14(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor ID_FIELD_NUMBER: int RESERVE_INFO_FIELD_NUMBER: int - id: int = ... - reserve_info: bytes = ... - + id: int + reserve_info: bytes def __init__(self, *, - id : Optional[int] = ..., - reserve_info : Optional[bytes] = ..., + id: Optional[int] = ..., + reserve_info: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"id",b"id",u"reserve_info",b"reserve_info"]) -> bool: ... - def ClearField(self, field_name: Literal[u"id",b"id",u"reserve_info",b"reserve_info"]) -> None: ... + def HasField(self, field_name: Literal["id",b"id","reserve_info",b"reserve_info"]) -> bool: ... + def ClearField(self, field_name: Literal["id",b"id","reserve_info",b"reserve_info"]) -> None: ... class MsgElemInfo_servtype15(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor VID_FIELD_NUMBER: int COVER_FIELD_NUMBER: int TITLE_FIELD_NUMBER: int @@ -159,31 +155,30 @@ class MsgElemInfo_servtype15(Message): COMMENT_CONTENT_FIELD_NUMBER: int AUTHOR_FIELD_NUMBER: int CTR_VERSION_FIELD_NUMBER: int - vid: bytes = ... - cover: bytes = ... - title: bytes = ... - summary: bytes = ... - create_time: int = ... - comment_content: bytes = ... - author: int = ... - ctr_version: int = ... - - def __init__(self, - *, - vid : Optional[bytes] = ..., - cover : Optional[bytes] = ..., - title : Optional[bytes] = ..., - summary : Optional[bytes] = ..., - create_time : Optional[int] = ..., - comment_content : Optional[bytes] = ..., - author : Optional[int] = ..., - ctr_version : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"author",b"author",u"comment_content",b"comment_content",u"cover",b"cover",u"create_time",b"create_time",u"ctr_version",b"ctr_version",u"summary",b"summary",u"title",b"title",u"vid",b"vid"]) -> bool: ... - def ClearField(self, field_name: Literal[u"author",b"author",u"comment_content",b"comment_content",u"cover",b"cover",u"create_time",b"create_time",u"ctr_version",b"ctr_version",u"summary",b"summary",u"title",b"title",u"vid",b"vid"]) -> None: ... + vid: bytes + cover: bytes + title: bytes + summary: bytes + create_time: int + comment_content: bytes + author: int + ctr_version: int + def __init__(self, + *, + vid: Optional[bytes] = ..., + cover: Optional[bytes] = ..., + title: Optional[bytes] = ..., + summary: Optional[bytes] = ..., + create_time: Optional[int] = ..., + comment_content: Optional[bytes] = ..., + author: Optional[int] = ..., + ctr_version: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["author",b"author","comment_content",b"comment_content","cover",b"cover","create_time",b"create_time","ctr_version",b"ctr_version","summary",b"summary","title",b"title","vid",b"vid"]) -> bool: ... + def ClearField(self, field_name: Literal["author",b"author","comment_content",b"comment_content","cover",b"cover","create_time",b"create_time","ctr_version",b"ctr_version","summary",b"summary","title",b"title","vid",b"vid"]) -> None: ... class MsgElemInfo_servtype16(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor UID_FIELD_NUMBER: int UNION_ID_FIELD_NUMBER: int STORY_ID_FIELD_NUMBER: int @@ -196,75 +191,72 @@ class MsgElemInfo_servtype16(Message): SOURCE_ACTION_TYPE_FIELD_NUMBER: int SOURCE_ACTION_DATA_FIELD_NUMBER: int CTR_VERSION_FIELD_NUMBER: int - uid: int = ... - union_id: bytes = ... - story_id: bytes = ... - md5: bytes = ... - thumb_url: bytes = ... - doodle_url: bytes = ... - video_width: int = ... - video_height: int = ... - source_name: bytes = ... - source_action_type: bytes = ... - source_action_data: bytes = ... - ctr_version: int = ... - - def __init__(self, - *, - uid : Optional[int] = ..., - union_id : Optional[bytes] = ..., - story_id : Optional[bytes] = ..., - md5 : Optional[bytes] = ..., - thumb_url : Optional[bytes] = ..., - doodle_url : Optional[bytes] = ..., - video_width : Optional[int] = ..., - video_height : Optional[int] = ..., - source_name : Optional[bytes] = ..., - source_action_type : Optional[bytes] = ..., - source_action_data : Optional[bytes] = ..., - ctr_version : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"ctr_version",b"ctr_version",u"doodle_url",b"doodle_url",u"md5",b"md5",u"source_action_data",b"source_action_data",u"source_action_type",b"source_action_type",u"source_name",b"source_name",u"story_id",b"story_id",u"thumb_url",b"thumb_url",u"uid",b"uid",u"union_id",b"union_id",u"video_height",b"video_height",u"video_width",b"video_width"]) -> bool: ... - def ClearField(self, field_name: Literal[u"ctr_version",b"ctr_version",u"doodle_url",b"doodle_url",u"md5",b"md5",u"source_action_data",b"source_action_data",u"source_action_type",b"source_action_type",u"source_name",b"source_name",u"story_id",b"story_id",u"thumb_url",b"thumb_url",u"uid",b"uid",u"union_id",b"union_id",u"video_height",b"video_height",u"video_width",b"video_width"]) -> None: ... + uid: int + union_id: bytes + story_id: bytes + md5: bytes + thumb_url: bytes + doodle_url: bytes + video_width: int + video_height: int + source_name: bytes + source_action_type: bytes + source_action_data: bytes + ctr_version: int + def __init__(self, + *, + uid: Optional[int] = ..., + union_id: Optional[bytes] = ..., + story_id: Optional[bytes] = ..., + md5: Optional[bytes] = ..., + thumb_url: Optional[bytes] = ..., + doodle_url: Optional[bytes] = ..., + video_width: Optional[int] = ..., + video_height: Optional[int] = ..., + source_name: Optional[bytes] = ..., + source_action_type: Optional[bytes] = ..., + source_action_data: Optional[bytes] = ..., + ctr_version: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["ctr_version",b"ctr_version","doodle_url",b"doodle_url","md5",b"md5","source_action_data",b"source_action_data","source_action_type",b"source_action_type","source_name",b"source_name","story_id",b"story_id","thumb_url",b"thumb_url","uid",b"uid","union_id",b"union_id","video_height",b"video_height","video_width",b"video_width"]) -> bool: ... + def ClearField(self, field_name: Literal["ctr_version",b"ctr_version","doodle_url",b"doodle_url","md5",b"md5","source_action_data",b"source_action_data","source_action_type",b"source_action_type","source_name",b"source_name","story_id",b"story_id","thumb_url",b"thumb_url","uid",b"uid","union_id",b"union_id","video_height",b"video_height","video_width",b"video_width"]) -> None: ... class MsgElemInfo_servtype18(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor CURRENT_AMOUNT_FIELD_NUMBER: int TOTAL_AMOUNT_FIELD_NUMBER: int LISTID_FIELD_NUMBER: int AUTH_KEY_FIELD_NUMBER: int NUMBER_FIELD_NUMBER: int - current_amount: int = ... - total_amount: int = ... - listid: bytes = ... - auth_key: bytes = ... - number: int = ... - + current_amount: int + total_amount: int + listid: bytes + auth_key: bytes + number: int def __init__(self, *, - current_amount : Optional[int] = ..., - total_amount : Optional[int] = ..., - listid : Optional[bytes] = ..., - auth_key : Optional[bytes] = ..., - number : Optional[int] = ..., + current_amount: Optional[int] = ..., + total_amount: Optional[int] = ..., + listid: Optional[bytes] = ..., + auth_key: Optional[bytes] = ..., + number: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"auth_key",b"auth_key",u"current_amount",b"current_amount",u"listid",b"listid",u"number",b"number",u"total_amount",b"total_amount"]) -> bool: ... - def ClearField(self, field_name: Literal[u"auth_key",b"auth_key",u"current_amount",b"current_amount",u"listid",b"listid",u"number",b"number",u"total_amount",b"total_amount"]) -> None: ... + def HasField(self, field_name: Literal["auth_key",b"auth_key","current_amount",b"current_amount","listid",b"listid","number",b"number","total_amount",b"total_amount"]) -> bool: ... + def ClearField(self, field_name: Literal["auth_key",b"auth_key","current_amount",b"current_amount","listid",b"listid","number",b"number","total_amount",b"total_amount"]) -> None: ... class MsgElemInfo_servtype19(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor DATA_FIELD_NUMBER: int - data: bytes = ... - + data: bytes def __init__(self, *, - data : Optional[bytes] = ..., + data: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"data",b"data"]) -> bool: ... - def ClearField(self, field_name: Literal[u"data",b"data"]) -> None: ... + def HasField(self, field_name: Literal["data",b"data"]) -> bool: ... + def ClearField(self, field_name: Literal["data",b"data"]) -> None: ... class MsgElemInfo_servtype2(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor POKE_TYPE_FIELD_NUMBER: int POKE_SUMMARY_FIELD_NUMBER: int DOUBLE_HIT_FIELD_NUMBER: int @@ -275,47 +267,45 @@ class MsgElemInfo_servtype2(Message): MSG_TYPE_FIELD_NUMBER: int FACE_BUBBLE_COUNT_FIELD_NUMBER: int POKE_FLAG_FIELD_NUMBER: int - poke_type: int = ... - poke_summary: bytes = ... - double_hit: int = ... - vaspoke_id: int = ... - vaspoke_name: bytes = ... - vaspoke_minver: bytes = ... - poke_strength: int = ... - msg_type: int = ... - face_bubble_count: int = ... - poke_flag: int = ... - - def __init__(self, - *, - poke_type : Optional[int] = ..., - poke_summary : Optional[bytes] = ..., - double_hit : Optional[int] = ..., - vaspoke_id : Optional[int] = ..., - vaspoke_name : Optional[bytes] = ..., - vaspoke_minver : Optional[bytes] = ..., - poke_strength : Optional[int] = ..., - msg_type : Optional[int] = ..., - face_bubble_count : Optional[int] = ..., - poke_flag : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"double_hit",b"double_hit",u"face_bubble_count",b"face_bubble_count",u"msg_type",b"msg_type",u"poke_flag",b"poke_flag",u"poke_strength",b"poke_strength",u"poke_summary",b"poke_summary",u"poke_type",b"poke_type",u"vaspoke_id",b"vaspoke_id",u"vaspoke_minver",b"vaspoke_minver",u"vaspoke_name",b"vaspoke_name"]) -> bool: ... - def ClearField(self, field_name: Literal[u"double_hit",b"double_hit",u"face_bubble_count",b"face_bubble_count",u"msg_type",b"msg_type",u"poke_flag",b"poke_flag",u"poke_strength",b"poke_strength",u"poke_summary",b"poke_summary",u"poke_type",b"poke_type",u"vaspoke_id",b"vaspoke_id",u"vaspoke_minver",b"vaspoke_minver",u"vaspoke_name",b"vaspoke_name"]) -> None: ... + poke_type: int + poke_summary: bytes + double_hit: int + vaspoke_id: int + vaspoke_name: bytes + vaspoke_minver: bytes + poke_strength: int + msg_type: int + face_bubble_count: int + poke_flag: int + def __init__(self, + *, + poke_type: Optional[int] = ..., + poke_summary: Optional[bytes] = ..., + double_hit: Optional[int] = ..., + vaspoke_id: Optional[int] = ..., + vaspoke_name: Optional[bytes] = ..., + vaspoke_minver: Optional[bytes] = ..., + poke_strength: Optional[int] = ..., + msg_type: Optional[int] = ..., + face_bubble_count: Optional[int] = ..., + poke_flag: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["double_hit",b"double_hit","face_bubble_count",b"face_bubble_count","msg_type",b"msg_type","poke_flag",b"poke_flag","poke_strength",b"poke_strength","poke_summary",b"poke_summary","poke_type",b"poke_type","vaspoke_id",b"vaspoke_id","vaspoke_minver",b"vaspoke_minver","vaspoke_name",b"vaspoke_name"]) -> bool: ... + def ClearField(self, field_name: Literal["double_hit",b"double_hit","face_bubble_count",b"face_bubble_count","msg_type",b"msg_type","poke_flag",b"poke_flag","poke_strength",b"poke_strength","poke_summary",b"poke_summary","poke_type",b"poke_type","vaspoke_id",b"vaspoke_id","vaspoke_minver",b"vaspoke_minver","vaspoke_name",b"vaspoke_name"]) -> None: ... class MsgElemInfo_servtype20(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor DATA_FIELD_NUMBER: int - data: bytes = ... - + data: bytes def __init__(self, *, - data : Optional[bytes] = ..., + data: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"data",b"data"]) -> bool: ... - def ClearField(self, field_name: Literal[u"data",b"data"]) -> None: ... + def HasField(self, field_name: Literal["data",b"data"]) -> bool: ... + def ClearField(self, field_name: Literal["data",b"data"]) -> None: ... class MsgElemInfo_servtype21(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TOPIC_ID_FIELD_NUMBER: int CONFESSOR_UIN_FIELD_NUMBER: int CONFESSOR_NICK_FIELD_NUMBER: int @@ -326,41 +316,37 @@ class MsgElemInfo_servtype21(Message): CONFESS_TIME_FIELD_NUMBER: int GROUP_CONFESS_MSG_FIELD_NUMBER: int GROUP_CONFESS_CTX_FIELD_NUMBER: int - topic_id: int = ... - confessor_uin: int = ... - confessor_nick: bytes = ... - confessor_sex: int = ... - sysmsg_flag: int = ... - topic: bytes = ... - confess_time: int = ... - + topic_id: int + confessor_uin: int + confessor_nick: bytes + confessor_sex: int + sysmsg_flag: int @property def c2_c_confess_ctx(self) -> C2CConfessContext: ... - + topic: bytes + confess_time: int @property def group_confess_msg(self) -> GroupConfessMsg: ... - @property def group_confess_ctx(self) -> GroupConfessContext: ... - def __init__(self, *, - topic_id : Optional[int] = ..., - confessor_uin : Optional[int] = ..., - confessor_nick : Optional[bytes] = ..., - confessor_sex : Optional[int] = ..., - sysmsg_flag : Optional[int] = ..., - c2_c_confess_ctx : Optional[C2CConfessContext] = ..., - topic : Optional[bytes] = ..., - confess_time : Optional[int] = ..., - group_confess_msg : Optional[GroupConfessMsg] = ..., - group_confess_ctx : Optional[GroupConfessContext] = ..., + topic_id: Optional[int] = ..., + confessor_uin: Optional[int] = ..., + confessor_nick: Optional[bytes] = ..., + confessor_sex: Optional[int] = ..., + sysmsg_flag: Optional[int] = ..., + c2_c_confess_ctx: Optional[C2CConfessContext] = ..., + topic: Optional[bytes] = ..., + confess_time: Optional[int] = ..., + group_confess_msg: Optional[GroupConfessMsg] = ..., + group_confess_ctx: Optional[GroupConfessContext] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"c2_c_confess_ctx",b"c2_c_confess_ctx",u"confess_time",b"confess_time",u"confessor_nick",b"confessor_nick",u"confessor_sex",b"confessor_sex",u"confessor_uin",b"confessor_uin",u"group_confess_ctx",b"group_confess_ctx",u"group_confess_msg",b"group_confess_msg",u"sysmsg_flag",b"sysmsg_flag",u"topic",b"topic",u"topic_id",b"topic_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"c2_c_confess_ctx",b"c2_c_confess_ctx",u"confess_time",b"confess_time",u"confessor_nick",b"confessor_nick",u"confessor_sex",b"confessor_sex",u"confessor_uin",b"confessor_uin",u"group_confess_ctx",b"group_confess_ctx",u"group_confess_msg",b"group_confess_msg",u"sysmsg_flag",b"sysmsg_flag",u"topic",b"topic",u"topic_id",b"topic_id"]) -> None: ... + def HasField(self, field_name: Literal["c2_c_confess_ctx",b"c2_c_confess_ctx","confess_time",b"confess_time","confessor_nick",b"confessor_nick","confessor_sex",b"confessor_sex","confessor_uin",b"confessor_uin","group_confess_ctx",b"group_confess_ctx","group_confess_msg",b"group_confess_msg","sysmsg_flag",b"sysmsg_flag","topic",b"topic","topic_id",b"topic_id"]) -> bool: ... + def ClearField(self, field_name: Literal["c2_c_confess_ctx",b"c2_c_confess_ctx","confess_time",b"confess_time","confessor_nick",b"confessor_nick","confessor_sex",b"confessor_sex","confessor_uin",b"confessor_uin","group_confess_ctx",b"group_confess_ctx","group_confess_msg",b"group_confess_msg","sysmsg_flag",b"sysmsg_flag","topic",b"topic","topic_id",b"topic_id"]) -> None: ... class C2CConfessContext(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor CONFESSOR_UIN_FIELD_NUMBER: int CONFESS_TO_UIN_FIELD_NUMBER: int SEND_UIN_FIELD_NUMBER: int @@ -373,39 +359,38 @@ class C2CConfessContext(Message): BIZ_TYPE_FIELD_NUMBER: int CONFESS_NUM_FIELD_NUMBER: int CONFESS_TO_SEX_FIELD_NUMBER: int - confessor_uin: int = ... - confess_to_uin: int = ... - send_uin: int = ... - confessor_nick: bytes = ... - confess: bytes = ... - bg_type: int = ... - topic_id: int = ... - confess_time: int = ... - confessor_sex: int = ... - biz_type: int = ... - confess_num: int = ... - confess_to_sex: int = ... - - def __init__(self, - *, - confessor_uin : Optional[int] = ..., - confess_to_uin : Optional[int] = ..., - send_uin : Optional[int] = ..., - confessor_nick : Optional[bytes] = ..., - confess : Optional[bytes] = ..., - bg_type : Optional[int] = ..., - topic_id : Optional[int] = ..., - confess_time : Optional[int] = ..., - confessor_sex : Optional[int] = ..., - biz_type : Optional[int] = ..., - confess_num : Optional[int] = ..., - confess_to_sex : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"bg_type",b"bg_type",u"biz_type",b"biz_type",u"confess",b"confess",u"confess_num",b"confess_num",u"confess_time",b"confess_time",u"confess_to_sex",b"confess_to_sex",u"confess_to_uin",b"confess_to_uin",u"confessor_nick",b"confessor_nick",u"confessor_sex",b"confessor_sex",u"confessor_uin",b"confessor_uin",u"send_uin",b"send_uin",u"topic_id",b"topic_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"bg_type",b"bg_type",u"biz_type",b"biz_type",u"confess",b"confess",u"confess_num",b"confess_num",u"confess_time",b"confess_time",u"confess_to_sex",b"confess_to_sex",u"confess_to_uin",b"confess_to_uin",u"confessor_nick",b"confessor_nick",u"confessor_sex",b"confessor_sex",u"confessor_uin",b"confessor_uin",u"send_uin",b"send_uin",u"topic_id",b"topic_id"]) -> None: ... + confessor_uin: int + confess_to_uin: int + send_uin: int + confessor_nick: bytes + confess: bytes + bg_type: int + topic_id: int + confess_time: int + confessor_sex: int + biz_type: int + confess_num: int + confess_to_sex: int + def __init__(self, + *, + confessor_uin: Optional[int] = ..., + confess_to_uin: Optional[int] = ..., + send_uin: Optional[int] = ..., + confessor_nick: Optional[bytes] = ..., + confess: Optional[bytes] = ..., + bg_type: Optional[int] = ..., + topic_id: Optional[int] = ..., + confess_time: Optional[int] = ..., + confessor_sex: Optional[int] = ..., + biz_type: Optional[int] = ..., + confess_num: Optional[int] = ..., + confess_to_sex: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["bg_type",b"bg_type","biz_type",b"biz_type","confess",b"confess","confess_num",b"confess_num","confess_time",b"confess_time","confess_to_sex",b"confess_to_sex","confess_to_uin",b"confess_to_uin","confessor_nick",b"confessor_nick","confessor_sex",b"confessor_sex","confessor_uin",b"confessor_uin","send_uin",b"send_uin","topic_id",b"topic_id"]) -> bool: ... + def ClearField(self, field_name: Literal["bg_type",b"bg_type","biz_type",b"biz_type","confess",b"confess","confess_num",b"confess_num","confess_time",b"confess_time","confess_to_sex",b"confess_to_sex","confess_to_uin",b"confess_to_uin","confessor_nick",b"confessor_nick","confessor_sex",b"confessor_sex","confessor_uin",b"confessor_uin","send_uin",b"send_uin","topic_id",b"topic_id"]) -> None: ... class GroupConfessContext(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor CONFESSOR_UIN_FIELD_NUMBER: int CONFESS_TO_UIN_FIELD_NUMBER: int SEND_UIN_FIELD_NUMBER: int @@ -416,136 +401,127 @@ class GroupConfessContext(Message): CONFESS_TIME_FIELD_NUMBER: int CONFESS_TO_NICK_TYPE_FIELD_NUMBER: int CONFESSOR_NICK_FIELD_NUMBER: int - confessor_uin: int = ... - confess_to_uin: int = ... - send_uin: int = ... - confessor_sex: int = ... - confess_to_nick: bytes = ... - topic: bytes = ... - topic_id: int = ... - confess_time: int = ... - confess_to_nick_type: int = ... - confessor_nick: bytes = ... - - def __init__(self, - *, - confessor_uin : Optional[int] = ..., - confess_to_uin : Optional[int] = ..., - send_uin : Optional[int] = ..., - confessor_sex : Optional[int] = ..., - confess_to_nick : Optional[bytes] = ..., - topic : Optional[bytes] = ..., - topic_id : Optional[int] = ..., - confess_time : Optional[int] = ..., - confess_to_nick_type : Optional[int] = ..., - confessor_nick : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"confess_time",b"confess_time",u"confess_to_nick",b"confess_to_nick",u"confess_to_nick_type",b"confess_to_nick_type",u"confess_to_uin",b"confess_to_uin",u"confessor_nick",b"confessor_nick",u"confessor_sex",b"confessor_sex",u"confessor_uin",b"confessor_uin",u"send_uin",b"send_uin",u"topic",b"topic",u"topic_id",b"topic_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"confess_time",b"confess_time",u"confess_to_nick",b"confess_to_nick",u"confess_to_nick_type",b"confess_to_nick_type",u"confess_to_uin",b"confess_to_uin",u"confessor_nick",b"confessor_nick",u"confessor_sex",b"confessor_sex",u"confessor_uin",b"confessor_uin",u"send_uin",b"send_uin",u"topic",b"topic",u"topic_id",b"topic_id"]) -> None: ... + confessor_uin: int + confess_to_uin: int + send_uin: int + confessor_sex: int + confess_to_nick: bytes + topic: bytes + topic_id: int + confess_time: int + confess_to_nick_type: int + confessor_nick: bytes + def __init__(self, + *, + confessor_uin: Optional[int] = ..., + confess_to_uin: Optional[int] = ..., + send_uin: Optional[int] = ..., + confessor_sex: Optional[int] = ..., + confess_to_nick: Optional[bytes] = ..., + topic: Optional[bytes] = ..., + topic_id: Optional[int] = ..., + confess_time: Optional[int] = ..., + confess_to_nick_type: Optional[int] = ..., + confessor_nick: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["confess_time",b"confess_time","confess_to_nick",b"confess_to_nick","confess_to_nick_type",b"confess_to_nick_type","confess_to_uin",b"confess_to_uin","confessor_nick",b"confessor_nick","confessor_sex",b"confessor_sex","confessor_uin",b"confessor_uin","send_uin",b"send_uin","topic",b"topic","topic_id",b"topic_id"]) -> bool: ... + def ClearField(self, field_name: Literal["confess_time",b"confess_time","confess_to_nick",b"confess_to_nick","confess_to_nick_type",b"confess_to_nick_type","confess_to_uin",b"confess_to_uin","confessor_nick",b"confessor_nick","confessor_sex",b"confessor_sex","confessor_uin",b"confessor_uin","send_uin",b"send_uin","topic",b"topic","topic_id",b"topic_id"]) -> None: ... class GroupConfessItem(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TOPIC_ID_FIELD_NUMBER: int CONFESS_TO_UIN_FIELD_NUMBER: int CONFESS_TO_NICK_FIELD_NUMBER: int TOPIC_FIELD_NUMBER: int CONFESS_TO_NICK_TYPE_FIELD_NUMBER: int - topic_id: int = ... - confess_to_uin: int = ... - confess_to_nick: bytes = ... - topic: bytes = ... - confess_to_nick_type: int = ... - + topic_id: int + confess_to_uin: int + confess_to_nick: bytes + topic: bytes + confess_to_nick_type: int def __init__(self, *, - topic_id : Optional[int] = ..., - confess_to_uin : Optional[int] = ..., - confess_to_nick : Optional[bytes] = ..., - topic : Optional[bytes] = ..., - confess_to_nick_type : Optional[int] = ..., + topic_id: Optional[int] = ..., + confess_to_uin: Optional[int] = ..., + confess_to_nick: Optional[bytes] = ..., + topic: Optional[bytes] = ..., + confess_to_nick_type: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"confess_to_nick",b"confess_to_nick",u"confess_to_nick_type",b"confess_to_nick_type",u"confess_to_uin",b"confess_to_uin",u"topic",b"topic",u"topic_id",b"topic_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"confess_to_nick",b"confess_to_nick",u"confess_to_nick_type",b"confess_to_nick_type",u"confess_to_uin",b"confess_to_uin",u"topic",b"topic",u"topic_id",b"topic_id"]) -> None: ... + def HasField(self, field_name: Literal["confess_to_nick",b"confess_to_nick","confess_to_nick_type",b"confess_to_nick_type","confess_to_uin",b"confess_to_uin","topic",b"topic","topic_id",b"topic_id"]) -> bool: ... + def ClearField(self, field_name: Literal["confess_to_nick",b"confess_to_nick","confess_to_nick_type",b"confess_to_nick_type","confess_to_uin",b"confess_to_uin","topic",b"topic","topic_id",b"topic_id"]) -> None: ... class GroupConfessMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor CONFESS_TIME_FIELD_NUMBER: int CONFESSOR_UIN_FIELD_NUMBER: int CONFESSOR_SEX_FIELD_NUMBER: int SYSMSG_FLAG_FIELD_NUMBER: int CONFESS_ITEMS_FIELD_NUMBER: int TOTAL_TOPIC_COUNT_FIELD_NUMBER: int - confess_time: int = ... - confessor_uin: int = ... - confessor_sex: int = ... - sysmsg_flag: int = ... - total_topic_count: int = ... - + confess_time: int + confessor_uin: int + confessor_sex: int + sysmsg_flag: int @property def confess_items(self) -> RepeatedCompositeFieldContainer[GroupConfessItem]: ... - + total_topic_count: int def __init__(self, *, - confess_time : Optional[int] = ..., - confessor_uin : Optional[int] = ..., - confessor_sex : Optional[int] = ..., - sysmsg_flag : Optional[int] = ..., - confess_items : Optional[Iterable[GroupConfessItem]] = ..., - total_topic_count : Optional[int] = ..., + confess_time: Optional[int] = ..., + confessor_uin: Optional[int] = ..., + confessor_sex: Optional[int] = ..., + sysmsg_flag: Optional[int] = ..., + confess_items: Optional[Iterable[GroupConfessItem]] = ..., + total_topic_count: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"confess_time",b"confess_time",u"confessor_sex",b"confessor_sex",u"confessor_uin",b"confessor_uin",u"sysmsg_flag",b"sysmsg_flag",u"total_topic_count",b"total_topic_count"]) -> bool: ... - def ClearField(self, field_name: Literal[u"confess_items",b"confess_items",u"confess_time",b"confess_time",u"confessor_sex",b"confessor_sex",u"confessor_uin",b"confessor_uin",u"sysmsg_flag",b"sysmsg_flag",u"total_topic_count",b"total_topic_count"]) -> None: ... + def HasField(self, field_name: Literal["confess_time",b"confess_time","confessor_sex",b"confessor_sex","confessor_uin",b"confessor_uin","sysmsg_flag",b"sysmsg_flag","total_topic_count",b"total_topic_count"]) -> bool: ... + def ClearField(self, field_name: Literal["confess_items",b"confess_items","confess_time",b"confess_time","confessor_sex",b"confessor_sex","confessor_uin",b"confessor_uin","sysmsg_flag",b"sysmsg_flag","total_topic_count",b"total_topic_count"]) -> None: ... class MsgElemInfo_servtype23(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FACE_TYPE_FIELD_NUMBER: int FACE_BUBBLE_COUNT_FIELD_NUMBER: int FACE_SUMMARY_FIELD_NUMBER: int FLAG_FIELD_NUMBER: int OTHERS_FIELD_NUMBER: int YELLOW_FACE_FIELD_NUMBER: int - face_type: int = ... - face_bubble_count: int = ... - face_summary: bytes = ... - flag: int = ... - others: bytes = ... - + face_type: int + face_bubble_count: int + face_summary: bytes + flag: int + others: bytes @property def yellow_face(self) -> MsgElemInfo_servtype33: ... - def __init__(self, *, - face_type : Optional[int] = ..., - face_bubble_count : Optional[int] = ..., - face_summary : Optional[bytes] = ..., - flag : Optional[int] = ..., - others : Optional[bytes] = ..., - yellow_face : Optional[MsgElemInfo_servtype33] = ..., + face_type: Optional[int] = ..., + face_bubble_count: Optional[int] = ..., + face_summary: Optional[bytes] = ..., + flag: Optional[int] = ..., + others: Optional[bytes] = ..., + yellow_face: Optional[MsgElemInfo_servtype33] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"face_bubble_count",b"face_bubble_count",u"face_summary",b"face_summary",u"face_type",b"face_type",u"flag",b"flag",u"others",b"others",u"yellow_face",b"yellow_face"]) -> bool: ... - def ClearField(self, field_name: Literal[u"face_bubble_count",b"face_bubble_count",u"face_summary",b"face_summary",u"face_type",b"face_type",u"flag",b"flag",u"others",b"others",u"yellow_face",b"yellow_face"]) -> None: ... + def HasField(self, field_name: Literal["face_bubble_count",b"face_bubble_count","face_summary",b"face_summary","face_type",b"face_type","flag",b"flag","others",b"others","yellow_face",b"yellow_face"]) -> bool: ... + def ClearField(self, field_name: Literal["face_bubble_count",b"face_bubble_count","face_summary",b"face_summary","face_type",b"face_type","flag",b"flag","others",b"others","yellow_face",b"yellow_face"]) -> None: ... class MsgElemInfo_servtype24(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor LIMIT_CHAT_ENTER_FIELD_NUMBER: int LIMIT_CHAT_EXIT_FIELD_NUMBER: int - @property def limit_chat_enter(self) -> LimitChatEnter: ... - @property def limit_chat_exit(self) -> LimitChatExit: ... - def __init__(self, *, - limit_chat_enter : Optional[LimitChatEnter] = ..., - limit_chat_exit : Optional[LimitChatExit] = ..., + limit_chat_enter: Optional[LimitChatEnter] = ..., + limit_chat_exit: Optional[LimitChatExit] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"limit_chat_enter",b"limit_chat_enter",u"limit_chat_exit",b"limit_chat_exit"]) -> bool: ... - def ClearField(self, field_name: Literal[u"limit_chat_enter",b"limit_chat_enter",u"limit_chat_exit",b"limit_chat_exit"]) -> None: ... + def HasField(self, field_name: Literal["limit_chat_enter",b"limit_chat_enter","limit_chat_exit",b"limit_chat_exit"]) -> bool: ... + def ClearField(self, field_name: Literal["limit_chat_enter",b"limit_chat_enter","limit_chat_exit",b"limit_chat_exit"]) -> None: ... class LimitChatEnter(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TIPS_WORDING_FIELD_NUMBER: int LEFT_CHAT_TIME_FIELD_NUMBER: int MATCH_TS_FIELD_NUMBER: int @@ -553,148 +529,136 @@ class LimitChatEnter(Message): C2_C_EXPIRED_TIME_FIELD_NUMBER: int READY_TS_FIELD_NUMBER: int MATCH_NICK_FIELD_NUMBER: int - tips_wording: bytes = ... - left_chat_time: int = ... - match_ts: int = ... - match_expired_time: int = ... - c2_c_expired_time: int = ... - ready_ts: int = ... - match_nick: bytes = ... - - def __init__(self, - *, - tips_wording : Optional[bytes] = ..., - left_chat_time : Optional[int] = ..., - match_ts : Optional[int] = ..., - match_expired_time : Optional[int] = ..., - c2_c_expired_time : Optional[int] = ..., - ready_ts : Optional[int] = ..., - match_nick : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"c2_c_expired_time",b"c2_c_expired_time",u"left_chat_time",b"left_chat_time",u"match_expired_time",b"match_expired_time",u"match_nick",b"match_nick",u"match_ts",b"match_ts",u"ready_ts",b"ready_ts",u"tips_wording",b"tips_wording"]) -> bool: ... - def ClearField(self, field_name: Literal[u"c2_c_expired_time",b"c2_c_expired_time",u"left_chat_time",b"left_chat_time",u"match_expired_time",b"match_expired_time",u"match_nick",b"match_nick",u"match_ts",b"match_ts",u"ready_ts",b"ready_ts",u"tips_wording",b"tips_wording"]) -> None: ... + tips_wording: bytes + left_chat_time: int + match_ts: int + match_expired_time: int + c2_c_expired_time: int + ready_ts: int + match_nick: bytes + def __init__(self, + *, + tips_wording: Optional[bytes] = ..., + left_chat_time: Optional[int] = ..., + match_ts: Optional[int] = ..., + match_expired_time: Optional[int] = ..., + c2_c_expired_time: Optional[int] = ..., + ready_ts: Optional[int] = ..., + match_nick: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["c2_c_expired_time",b"c2_c_expired_time","left_chat_time",b"left_chat_time","match_expired_time",b"match_expired_time","match_nick",b"match_nick","match_ts",b"match_ts","ready_ts",b"ready_ts","tips_wording",b"tips_wording"]) -> bool: ... + def ClearField(self, field_name: Literal["c2_c_expired_time",b"c2_c_expired_time","left_chat_time",b"left_chat_time","match_expired_time",b"match_expired_time","match_nick",b"match_nick","match_ts",b"match_ts","ready_ts",b"ready_ts","tips_wording",b"tips_wording"]) -> None: ... class LimitChatExit(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor EXIT_METHOD_FIELD_NUMBER: int MATCH_TS_FIELD_NUMBER: int - exit_method: int = ... - match_ts: int = ... - + exit_method: int + match_ts: int def __init__(self, *, - exit_method : Optional[int] = ..., - match_ts : Optional[int] = ..., + exit_method: Optional[int] = ..., + match_ts: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"exit_method",b"exit_method",u"match_ts",b"match_ts"]) -> bool: ... - def ClearField(self, field_name: Literal[u"exit_method",b"exit_method",u"match_ts",b"match_ts"]) -> None: ... + def HasField(self, field_name: Literal["exit_method",b"exit_method","match_ts",b"match_ts"]) -> bool: ... + def ClearField(self, field_name: Literal["exit_method",b"exit_method","match_ts",b"match_ts"]) -> None: ... class MsgElemInfo_servtype27(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor VIDEO_FILE_FIELD_NUMBER: int - @property def video_file(self) -> VideoFile: ... - def __init__(self, *, - video_file : Optional[VideoFile] = ..., + video_file: Optional[VideoFile] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"video_file",b"video_file"]) -> bool: ... - def ClearField(self, field_name: Literal[u"video_file",b"video_file"]) -> None: ... + def HasField(self, field_name: Literal["video_file",b"video_file"]) -> bool: ... + def ClearField(self, field_name: Literal["video_file",b"video_file"]) -> None: ... class MsgElemInfo_servtype29(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor LUCKYBAG_MSG_FIELD_NUMBER: int - luckybag_msg: bytes = ... - + luckybag_msg: bytes def __init__(self, *, - luckybag_msg : Optional[bytes] = ..., + luckybag_msg: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"luckybag_msg",b"luckybag_msg"]) -> bool: ... - def ClearField(self, field_name: Literal[u"luckybag_msg",b"luckybag_msg"]) -> None: ... + def HasField(self, field_name: Literal["luckybag_msg",b"luckybag_msg"]) -> bool: ... + def ClearField(self, field_name: Literal["luckybag_msg",b"luckybag_msg"]) -> None: ... class MsgElemInfo_servtype3(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FLASH_TROOP_PIC_FIELD_NUMBER: int FLASH_C2_C_PIC_FIELD_NUMBER: int - @property def flash_troop_pic(self) -> CustomFace: ... - @property def flash_c2_c_pic(self) -> NotOnlineImage: ... - def __init__(self, *, - flash_troop_pic : Optional[CustomFace] = ..., - flash_c2_c_pic : Optional[NotOnlineImage] = ..., + flash_troop_pic: Optional[CustomFace] = ..., + flash_c2_c_pic: Optional[NotOnlineImage] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"flash_c2_c_pic",b"flash_c2_c_pic",u"flash_troop_pic",b"flash_troop_pic"]) -> bool: ... - def ClearField(self, field_name: Literal[u"flash_c2_c_pic",b"flash_c2_c_pic",u"flash_troop_pic",b"flash_troop_pic"]) -> None: ... + def HasField(self, field_name: Literal["flash_c2_c_pic",b"flash_c2_c_pic","flash_troop_pic",b"flash_troop_pic"]) -> bool: ... + def ClearField(self, field_name: Literal["flash_c2_c_pic",b"flash_c2_c_pic","flash_troop_pic",b"flash_troop_pic"]) -> None: ... class MsgElemInfo_servtype31(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TEXT_FIELD_NUMBER: int EXT_FIELD_NUMBER: int - text: bytes = ... - ext: bytes = ... - + text: bytes + ext: bytes def __init__(self, *, - text : Optional[bytes] = ..., - ext : Optional[bytes] = ..., + text: Optional[bytes] = ..., + ext: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"ext",b"ext",u"text",b"text"]) -> bool: ... - def ClearField(self, field_name: Literal[u"ext",b"ext",u"text",b"text"]) -> None: ... + def HasField(self, field_name: Literal["ext",b"ext","text",b"text"]) -> bool: ... + def ClearField(self, field_name: Literal["ext",b"ext","text",b"text"]) -> None: ... class MsgElemInfo_servtype33(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor INDEX_FIELD_NUMBER: int TEXT_FIELD_NUMBER: int COMPAT_FIELD_NUMBER: int BUF_FIELD_NUMBER: int - index: int = ... - text: bytes = ... - compat: bytes = ... - buf: bytes = ... - + index: int + text: bytes + compat: bytes + buf: bytes def __init__(self, *, - index : Optional[int] = ..., - text : Optional[bytes] = ..., - compat : Optional[bytes] = ..., - buf : Optional[bytes] = ..., + index: Optional[int] = ..., + text: Optional[bytes] = ..., + compat: Optional[bytes] = ..., + buf: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"buf",b"buf",u"compat",b"compat",u"index",b"index",u"text",b"text"]) -> bool: ... - def ClearField(self, field_name: Literal[u"buf",b"buf",u"compat",b"compat",u"index",b"index",u"text",b"text"]) -> None: ... + def HasField(self, field_name: Literal["buf",b"buf","compat",b"compat","index",b"index","text",b"text"]) -> bool: ... + def ClearField(self, field_name: Literal["buf",b"buf","compat",b"compat","index",b"index","text",b"text"]) -> None: ... class MsgElemInfo_servtype34(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FROM_NICKNAME_FIELD_NUMBER: int PUSH_WINDOW_FLAG_FIELD_NUMBER: int GAME_SESSION_FIELD_NUMBER: int EXT_FIELD_NUMBER: int - from_nickname: bytes = ... - push_window_flag: int = ... - ext: bytes = ... - + from_nickname: bytes + push_window_flag: int @property def game_session(self) -> GameSession: ... - + ext: bytes def __init__(self, *, - from_nickname : Optional[bytes] = ..., - push_window_flag : Optional[int] = ..., - game_session : Optional[GameSession] = ..., - ext : Optional[bytes] = ..., + from_nickname: Optional[bytes] = ..., + push_window_flag: Optional[int] = ..., + game_session: Optional[GameSession] = ..., + ext: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"ext",b"ext",u"from_nickname",b"from_nickname",u"game_session",b"game_session",u"push_window_flag",b"push_window_flag"]) -> bool: ... - def ClearField(self, field_name: Literal[u"ext",b"ext",u"from_nickname",b"from_nickname",u"game_session",b"game_session",u"push_window_flag",b"push_window_flag"]) -> None: ... + def HasField(self, field_name: Literal["ext",b"ext","from_nickname",b"from_nickname","game_session",b"game_session","push_window_flag",b"push_window_flag"]) -> bool: ... + def ClearField(self, field_name: Literal["ext",b"ext","from_nickname",b"from_nickname","game_session",b"game_session","push_window_flag",b"push_window_flag"]) -> None: ... class GameSession(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FROM_ROLE_ID_FIELD_NUMBER: int FROM_OPEN_ID_FIELD_NUMBER: int TO_ROLE_ID_FIELD_NUMBER: int @@ -702,67 +666,63 @@ class GameSession(Message): GAME_APPID_FIELD_NUMBER: int FROM_TINY_ID_FIELD_NUMBER: int TO_TINY_ID_FIELD_NUMBER: int - from_role_id: bytes = ... - from_open_id: bytes = ... - to_role_id: bytes = ... - to_open_id: bytes = ... - game_appid: int = ... - from_tiny_id: int = ... - to_tiny_id: int = ... - - def __init__(self, - *, - from_role_id : Optional[bytes] = ..., - from_open_id : Optional[bytes] = ..., - to_role_id : Optional[bytes] = ..., - to_open_id : Optional[bytes] = ..., - game_appid : Optional[int] = ..., - from_tiny_id : Optional[int] = ..., - to_tiny_id : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"from_open_id",b"from_open_id",u"from_role_id",b"from_role_id",u"from_tiny_id",b"from_tiny_id",u"game_appid",b"game_appid",u"to_open_id",b"to_open_id",u"to_role_id",b"to_role_id",u"to_tiny_id",b"to_tiny_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"from_open_id",b"from_open_id",u"from_role_id",b"from_role_id",u"from_tiny_id",b"from_tiny_id",u"game_appid",b"game_appid",u"to_open_id",b"to_open_id",u"to_role_id",b"to_role_id",u"to_tiny_id",b"to_tiny_id"]) -> None: ... + from_role_id: bytes + from_open_id: bytes + to_role_id: bytes + to_open_id: bytes + game_appid: int + from_tiny_id: int + to_tiny_id: int + def __init__(self, + *, + from_role_id: Optional[bytes] = ..., + from_open_id: Optional[bytes] = ..., + to_role_id: Optional[bytes] = ..., + to_open_id: Optional[bytes] = ..., + game_appid: Optional[int] = ..., + from_tiny_id: Optional[int] = ..., + to_tiny_id: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["from_open_id",b"from_open_id","from_role_id",b"from_role_id","from_tiny_id",b"from_tiny_id","game_appid",b"game_appid","to_open_id",b"to_open_id","to_role_id",b"to_role_id","to_tiny_id",b"to_tiny_id"]) -> bool: ... + def ClearField(self, field_name: Literal["from_open_id",b"from_open_id","from_role_id",b"from_role_id","from_tiny_id",b"from_tiny_id","game_appid",b"game_appid","to_open_id",b"to_open_id","to_role_id",b"to_role_id","to_tiny_id",b"to_tiny_id"]) -> None: ... class MsgElemInfo_servtype35(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TOKEN_FIELD_NUMBER: int GLOBAL_PADID_FIELD_NUMBER: int GET_REV_FIELD_NUMBER: int HIS_EDIT_UIN_NUM_FIELD_NUMBER: int - token: bytes = ... - global_padid: bytes = ... - get_rev: int = ... - his_edit_uin_num: int = ... - + token: bytes + global_padid: bytes + get_rev: int + his_edit_uin_num: int def __init__(self, *, - token : Optional[bytes] = ..., - global_padid : Optional[bytes] = ..., - get_rev : Optional[int] = ..., - his_edit_uin_num : Optional[int] = ..., + token: Optional[bytes] = ..., + global_padid: Optional[bytes] = ..., + get_rev: Optional[int] = ..., + his_edit_uin_num: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"get_rev",b"get_rev",u"global_padid",b"global_padid",u"his_edit_uin_num",b"his_edit_uin_num",u"token",b"token"]) -> bool: ... - def ClearField(self, field_name: Literal[u"get_rev",b"get_rev",u"global_padid",b"global_padid",u"his_edit_uin_num",b"his_edit_uin_num",u"token",b"token"]) -> None: ... + def HasField(self, field_name: Literal["get_rev",b"get_rev","global_padid",b"global_padid","his_edit_uin_num",b"his_edit_uin_num","token",b"token"]) -> bool: ... + def ClearField(self, field_name: Literal["get_rev",b"get_rev","global_padid",b"global_padid","his_edit_uin_num",b"his_edit_uin_num","token",b"token"]) -> None: ... class MsgElemInfo_servtype4(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor IMSG_TYPE_FIELD_NUMBER: int ST_STORY_AIO_OBJ_MSG_FIELD_NUMBER: int - imsg_type: int = ... - + imsg_type: int @property def st_story_aio_obj_msg(self) -> StoryAioObjMsg: ... - def __init__(self, *, - imsg_type : Optional[int] = ..., - st_story_aio_obj_msg : Optional[StoryAioObjMsg] = ..., + imsg_type: Optional[int] = ..., + st_story_aio_obj_msg: Optional[StoryAioObjMsg] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"imsg_type",b"imsg_type",u"st_story_aio_obj_msg",b"st_story_aio_obj_msg"]) -> bool: ... - def ClearField(self, field_name: Literal[u"imsg_type",b"imsg_type",u"st_story_aio_obj_msg",b"st_story_aio_obj_msg"]) -> None: ... + def HasField(self, field_name: Literal["imsg_type",b"imsg_type","st_story_aio_obj_msg",b"st_story_aio_obj_msg"]) -> bool: ... + def ClearField(self, field_name: Literal["imsg_type",b"imsg_type","st_story_aio_obj_msg",b"st_story_aio_obj_msg"]) -> None: ... class MsgElemInfo_servtype5(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor VID_FIELD_NUMBER: int COVER_FIELD_NUMBER: int TITLE_FIELD_NUMBER: int @@ -770,76 +730,71 @@ class MsgElemInfo_servtype5(Message): CREATE_TIME_FIELD_NUMBER: int COMMENT_CONTENT_FIELD_NUMBER: int AUTHOR_FIELD_NUMBER: int - vid: bytes = ... - cover: bytes = ... - title: bytes = ... - summary: bytes = ... - create_time: int = ... - comment_content: bytes = ... - author: int = ... - - def __init__(self, - *, - vid : Optional[bytes] = ..., - cover : Optional[bytes] = ..., - title : Optional[bytes] = ..., - summary : Optional[bytes] = ..., - create_time : Optional[int] = ..., - comment_content : Optional[bytes] = ..., - author : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"author",b"author",u"comment_content",b"comment_content",u"cover",b"cover",u"create_time",b"create_time",u"summary",b"summary",u"title",b"title",u"vid",b"vid"]) -> bool: ... - def ClearField(self, field_name: Literal[u"author",b"author",u"comment_content",b"comment_content",u"cover",b"cover",u"create_time",b"create_time",u"summary",b"summary",u"title",b"title",u"vid",b"vid"]) -> None: ... + vid: bytes + cover: bytes + title: bytes + summary: bytes + create_time: int + comment_content: bytes + author: int + def __init__(self, + *, + vid: Optional[bytes] = ..., + cover: Optional[bytes] = ..., + title: Optional[bytes] = ..., + summary: Optional[bytes] = ..., + create_time: Optional[int] = ..., + comment_content: Optional[bytes] = ..., + author: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["author",b"author","comment_content",b"comment_content","cover",b"cover","create_time",b"create_time","summary",b"summary","title",b"title","vid",b"vid"]) -> bool: ... + def ClearField(self, field_name: Literal["author",b"author","comment_content",b"comment_content","cover",b"cover","create_time",b"create_time","summary",b"summary","title",b"title","vid",b"vid"]) -> None: ... class MsgElemInfo_servtype8(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor WIFI_DELIVER_GIFT_MSG_FIELD_NUMBER: int - @property def wifi_deliver_gift_msg(self) -> DeliverGiftMsg: ... - def __init__(self, *, - wifi_deliver_gift_msg : Optional[DeliverGiftMsg] = ..., + wifi_deliver_gift_msg: Optional[DeliverGiftMsg] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"wifi_deliver_gift_msg",b"wifi_deliver_gift_msg"]) -> bool: ... - def ClearField(self, field_name: Literal[u"wifi_deliver_gift_msg",b"wifi_deliver_gift_msg"]) -> None: ... + def HasField(self, field_name: Literal["wifi_deliver_gift_msg",b"wifi_deliver_gift_msg"]) -> bool: ... + def ClearField(self, field_name: Literal["wifi_deliver_gift_msg",b"wifi_deliver_gift_msg"]) -> None: ... class MsgElemInfo_servtype9(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor ANCHOR_STATUS_FIELD_NUMBER: int JUMP_SCHEMA_FIELD_NUMBER: int ANCHOR_NICKNAME_FIELD_NUMBER: int ANCHOR_HEAD_URL_FIELD_NUMBER: int LIVE_TITLE_FIELD_NUMBER: int - anchor_status: int = ... - jump_schema: bytes = ... - anchor_nickname: Text = ... - anchor_head_url: bytes = ... - live_title: Text = ... - + anchor_status: int + jump_schema: bytes + anchor_nickname: Text + anchor_head_url: bytes + live_title: Text def __init__(self, *, - anchor_status : Optional[int] = ..., - jump_schema : Optional[bytes] = ..., - anchor_nickname : Optional[Text] = ..., - anchor_head_url : Optional[bytes] = ..., - live_title : Optional[Text] = ..., + anchor_status: Optional[int] = ..., + jump_schema: Optional[bytes] = ..., + anchor_nickname: Optional[Text] = ..., + anchor_head_url: Optional[bytes] = ..., + live_title: Optional[Text] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"anchor_head_url",b"anchor_head_url",u"anchor_nickname",b"anchor_nickname",u"anchor_status",b"anchor_status",u"jump_schema",b"jump_schema",u"live_title",b"live_title"]) -> bool: ... - def ClearField(self, field_name: Literal[u"anchor_head_url",b"anchor_head_url",u"anchor_nickname",b"anchor_nickname",u"anchor_status",b"anchor_status",u"jump_schema",b"jump_schema",u"live_title",b"live_title"]) -> None: ... + def HasField(self, field_name: Literal["anchor_head_url",b"anchor_head_url","anchor_nickname",b"anchor_nickname","anchor_status",b"anchor_status","jump_schema",b"jump_schema","live_title",b"live_title"]) -> bool: ... + def ClearField(self, field_name: Literal["anchor_head_url",b"anchor_head_url","anchor_nickname",b"anchor_nickname","anchor_status",b"anchor_status","jump_schema",b"jump_schema","live_title",b"live_title"]) -> None: ... class StoryAioObjMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor UI_URL_FIELD_NUMBER: int JMP_URL_FIELD_NUMBER: int - ui_url: Text = ... - jmp_url: Text = ... - + ui_url: Text + jmp_url: Text def __init__(self, *, - ui_url : Optional[Text] = ..., - jmp_url : Optional[Text] = ..., + ui_url: Optional[Text] = ..., + jmp_url: Optional[Text] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"jmp_url",b"jmp_url",u"ui_url",b"ui_url"]) -> bool: ... - def ClearField(self, field_name: Literal[u"jmp_url",b"jmp_url",u"ui_url",b"ui_url"]) -> None: ... + def HasField(self, field_name: Literal["jmp_url",b"jmp_url","ui_url",b"ui_url"]) -> bool: ... + def ClearField(self, field_name: Literal["jmp_url",b"jmp_url","ui_url",b"ui_url"]) -> None: ... diff --git a/cai/pb/im/oidb/cmd0x388/__init__.py b/cai/pb/im/oidb/cmd0x388/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/cai/pb/im/oidb/cmd0x388/cmd0x388.proto b/cai/pb/im/oidb/cmd0x388/cmd0x388.proto deleted file mode 100644 index f5cef756..00000000 --- a/cai/pb/im/oidb/cmd0x388/cmd0x388.proto +++ /dev/null @@ -1,255 +0,0 @@ -syntax = "proto2"; - -option go_package = "github.com/Mrs4s/MiraiGo/client/pb/cmd0x388"; - - message DelImgReq { - optional uint64 srcUin = 1; - optional uint64 dstUin = 2; - optional uint32 reqTerm = 3; - optional uint32 reqPlatformType = 4; - optional uint32 buType = 5; - optional bytes buildVer = 6; - optional bytes fileResid = 7; - optional uint32 picWidth = 8; - optional uint32 picHeight = 9; - } - - message DelImgRsp { - optional uint32 result = 1; - optional bytes failMsg = 2; - optional bytes fileResid = 3; - } - - message ExpRoamExtendInfo { - optional bytes resid = 1; - } - - message ExpRoamPicInfo { - optional uint32 shopFlag = 1; - optional uint32 pkgId = 2; - optional bytes picId = 3; - } - - message ExtensionCommPicTryUp { - repeated bytes extinfo = 1; - } - - message ExtensionExpRoamTryUp { - repeated ExpRoamPicInfo exproamPicInfo = 1; - } - - message GetImgUrlReq { - optional uint64 groupCode = 1; - optional uint64 dstUin = 2; - optional uint64 fileid = 3; - optional bytes fileMd5 = 4; - optional uint32 urlFlag = 5; - optional uint32 urlType = 6; - optional uint32 reqTerm = 7; - optional uint32 reqPlatformType = 8; - optional uint32 innerIp = 9; - optional uint32 buType = 10; - optional bytes buildVer = 11; - optional uint64 fileId = 12; - optional uint64 fileSize = 13; - optional uint32 originalPic = 14; - optional uint32 retryReq = 15; - optional uint32 fileHeight = 16; - optional uint32 fileWidth = 17; - optional uint32 picType = 18; - optional uint32 picUpTimestamp = 19; - optional uint32 reqTransferType = 20; - optional uint64 qqmeetGuildId = 21; - optional uint64 qqmeetChannelId = 22; - optional bytes downloadIndex = 23; - } - - message GetImgUrlRsp { - optional uint64 fileid = 1; - optional bytes fileMd5 = 2; - optional uint32 result = 3; - optional bytes failMsg = 4; - optional ImgInfo imgInfo = 5; - repeated bytes thumbDownUrl = 6; - repeated bytes originalDownUrl = 7; - repeated bytes bigDownUrl = 8; - repeated uint32 downIp = 9; - repeated uint32 downPort = 10; - optional bytes downDomain = 11; - optional bytes thumbDownPara = 12; - optional bytes originalDownPara = 13; - optional bytes bigDownPara = 14; - optional uint64 fileId = 15; - optional uint32 autoDownType = 16; - repeated uint32 orderDownType = 17; - optional bytes bigThumbDownPara = 19; - optional uint32 httpsUrlFlag = 20; - repeated IPv6Info downIp6 = 26; - optional bytes clientIp6 = 27; - } - - message GetPttUrlReq { - optional uint64 groupCode = 1; - optional uint64 dstUin = 2; - optional uint64 fileid = 3; - optional bytes fileMd5 = 4; - optional uint32 reqTerm = 5; - optional uint32 reqPlatformType = 6; - optional uint32 innerIp = 7; - optional uint32 buType = 8; - optional bytes buildVer = 9; - optional uint64 fileId = 10; - optional bytes fileKey = 11; - optional uint32 codec = 12; - optional uint32 buId = 13; - optional uint32 reqTransferType = 14; - optional uint32 isAuto = 15; - } - - message GetPttUrlRsp { - optional uint64 fileid = 1; - optional bytes fileMd5 = 2; - optional uint32 result = 3; - optional bytes failMsg = 4; - repeated bytes downUrl = 5; - repeated uint32 downIp = 6; - repeated uint32 downPort = 7; - optional bytes downDomain = 8; - optional bytes downPara = 9; - optional uint64 fileId = 10; - optional uint32 transferType = 11; - optional uint32 allowRetry = 12; - repeated IPv6Info downIp6 = 26; - optional bytes clientIp6 = 27; - optional string domain = 28; - } - - message IPv6Info { - optional bytes ip6 = 1; - optional uint32 port = 2; - } - - message ImgInfo { - optional bytes fileMd5 = 1; - optional uint32 fileType = 2; - optional uint64 fileSize = 3; - optional uint32 fileWidth = 4; - optional uint32 fileHeight = 5; - } - - message PicSize { - optional uint32 original = 1; - optional uint32 thumb = 2; - optional uint32 high = 3; - } - - message D388ReqBody { - optional uint32 netType = 1; - optional uint32 subcmd = 2; - repeated TryUpImgReq tryupImgReq = 3; - repeated GetImgUrlReq getimgUrlReq = 4; - repeated TryUpPttReq tryupPttReq = 5; - repeated GetPttUrlReq getpttUrlReq = 6; - optional uint32 commandId = 7; - repeated DelImgReq delImgReq = 8; - optional bytes extension = 1001; - } - - message D388RspBody { - optional uint32 clientIp = 1; - optional uint32 subcmd = 2; - repeated D388TryUpImgRsp tryupImgRsp = 3; - repeated GetImgUrlRsp getimgUrlRsp = 4; - repeated TryUpPttRsp tryupPttRsp = 5; - repeated GetPttUrlRsp getpttUrlRsp = 6; - repeated DelImgRsp delImgRsp = 7; - } - - message TryUpImgReq { - optional uint64 groupCode = 1; - optional uint64 srcUin = 2; - optional uint64 fileId = 3; - optional bytes fileMd5 = 4; - optional uint64 fileSize = 5; - optional bytes fileName = 6; - optional uint32 srcTerm = 7; - optional uint32 platformType = 8; - optional uint32 buType = 9; - optional uint32 picWidth = 10; - optional uint32 picHeight = 11; - optional uint32 picType = 12; - optional bytes buildVer = 13; - optional uint32 innerIp = 14; - optional uint32 appPicType = 15; - optional uint32 originalPic = 16; - optional bytes fileIndex = 17; - optional uint64 dstUin = 18; - optional uint32 srvUpload = 19; - optional bytes transferUrl = 20; - optional uint64 qqmeetGuildId = 21; - optional uint64 qqmeetChannelId = 22; - } - - message D388TryUpImgRsp { - optional uint64 fileId = 1; - optional uint32 result = 2; - optional bytes failMsg = 3; - optional bool fileExit = 4; - optional ImgInfo imgInfo = 5; - repeated uint32 upIp = 6; - repeated uint32 upPort = 7; - optional bytes upUkey = 8; - optional uint64 fileid = 9; - optional uint64 upOffset = 10; - optional uint64 blockSize = 11; - optional bool newBigChan = 12; - repeated IPv6Info upIp6 = 26; - optional bytes clientIp6 = 27; - optional bytes downloadIndex = 28; - optional TryUpInfo4Busi info4Busi = 1001; - } - - message TryUpInfo4Busi { - optional bytes downDomain = 1; - optional bytes thumbDownUrl = 2; - optional bytes originalDownUrl = 3; - optional bytes bigDownUrl = 4; - optional bytes fileResid = 5; - } - - message TryUpPttReq { - optional uint64 groupCode = 1; - optional uint64 srcUin = 2; - optional uint64 fileId = 3; - optional bytes fileMd5 = 4; - optional uint64 fileSize = 5; - optional bytes fileName = 6; - optional uint32 srcTerm = 7; - optional uint32 platformType = 8; - optional uint32 buType = 9; - optional bytes buildVer = 10; - optional uint32 innerIp = 11; - optional uint32 voiceLength = 12; - optional bool newUpChan = 13; - optional uint32 codec = 14; - optional uint32 voiceType = 15; - optional uint32 buId = 16; - } - - message TryUpPttRsp { - optional uint64 fileId = 1; - optional uint32 result = 2; - optional bytes failMsg = 3; - optional bool fileExit = 4; - repeated uint32 upIp = 5; - repeated uint32 upPort = 6; - optional bytes upUkey = 7; - optional uint64 fileid = 8; - optional uint64 upOffset = 9; - optional uint64 blockSize = 10; - optional bytes fileKey = 11; - optional uint32 channelType = 12; - repeated IPv6Info upIp6 = 26; - optional bytes clientIp6 = 27; - } - diff --git a/cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.py b/cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.py deleted file mode 100644 index 4f02ceba..00000000 --- a/cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.py +++ /dev/null @@ -1,225 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: cmd0x388.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0e\x63md0x388.proto\"\xaf\x01\n\tDelImgReq\x12\x0e\n\x06srcUin\x18\x01 \x01(\x04\x12\x0e\n\x06\x64stUin\x18\x02 \x01(\x04\x12\x0f\n\x07reqTerm\x18\x03 \x01(\r\x12\x17\n\x0freqPlatformType\x18\x04 \x01(\r\x12\x0e\n\x06\x62uType\x18\x05 \x01(\r\x12\x10\n\x08\x62uildVer\x18\x06 \x01(\x0c\x12\x11\n\tfileResid\x18\x07 \x01(\x0c\x12\x10\n\x08picWidth\x18\x08 \x01(\r\x12\x11\n\tpicHeight\x18\t \x01(\r\"?\n\tDelImgRsp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0f\n\x07\x66\x61ilMsg\x18\x02 \x01(\x0c\x12\x11\n\tfileResid\x18\x03 \x01(\x0c\"\"\n\x11\x45xpRoamExtendInfo\x12\r\n\x05resid\x18\x01 \x01(\x0c\"@\n\x0e\x45xpRoamPicInfo\x12\x10\n\x08shopFlag\x18\x01 \x01(\r\x12\r\n\x05pkgId\x18\x02 \x01(\r\x12\r\n\x05picId\x18\x03 \x01(\x0c\"(\n\x15\x45xtensionCommPicTryUp\x12\x0f\n\x07\x65xtinfo\x18\x01 \x03(\x0c\"@\n\x15\x45xtensionExpRoamTryUp\x12\'\n\x0e\x65xproamPicInfo\x18\x01 \x03(\x0b\x32\x0f.ExpRoamPicInfo\"\xca\x03\n\x0cGetImgUrlReq\x12\x11\n\tgroupCode\x18\x01 \x01(\x04\x12\x0e\n\x06\x64stUin\x18\x02 \x01(\x04\x12\x0e\n\x06\x66ileid\x18\x03 \x01(\x04\x12\x0f\n\x07\x66ileMd5\x18\x04 \x01(\x0c\x12\x0f\n\x07urlFlag\x18\x05 \x01(\r\x12\x0f\n\x07urlType\x18\x06 \x01(\r\x12\x0f\n\x07reqTerm\x18\x07 \x01(\r\x12\x17\n\x0freqPlatformType\x18\x08 \x01(\r\x12\x0f\n\x07innerIp\x18\t \x01(\r\x12\x0e\n\x06\x62uType\x18\n \x01(\r\x12\x10\n\x08\x62uildVer\x18\x0b \x01(\x0c\x12\x0e\n\x06\x66ileId\x18\x0c \x01(\x04\x12\x10\n\x08\x66ileSize\x18\r \x01(\x04\x12\x13\n\x0boriginalPic\x18\x0e \x01(\r\x12\x10\n\x08retryReq\x18\x0f \x01(\r\x12\x12\n\nfileHeight\x18\x10 \x01(\r\x12\x11\n\tfileWidth\x18\x11 \x01(\r\x12\x0f\n\x07picType\x18\x12 \x01(\r\x12\x16\n\x0epicUpTimestamp\x18\x13 \x01(\r\x12\x17\n\x0freqTransferType\x18\x14 \x01(\r\x12\x15\n\rqqmeetGuildId\x18\x15 \x01(\x04\x12\x17\n\x0fqqmeetChannelId\x18\x16 \x01(\x04\x12\x15\n\rdownloadIndex\x18\x17 \x01(\x0c\"\xc6\x03\n\x0cGetImgUrlRsp\x12\x0e\n\x06\x66ileid\x18\x01 \x01(\x04\x12\x0f\n\x07\x66ileMd5\x18\x02 \x01(\x0c\x12\x0e\n\x06result\x18\x03 \x01(\r\x12\x0f\n\x07\x66\x61ilMsg\x18\x04 \x01(\x0c\x12\x19\n\x07imgInfo\x18\x05 \x01(\x0b\x32\x08.ImgInfo\x12\x14\n\x0cthumbDownUrl\x18\x06 \x03(\x0c\x12\x17\n\x0foriginalDownUrl\x18\x07 \x03(\x0c\x12\x12\n\nbigDownUrl\x18\x08 \x03(\x0c\x12\x0e\n\x06\x64ownIp\x18\t \x03(\r\x12\x10\n\x08\x64ownPort\x18\n \x03(\r\x12\x12\n\ndownDomain\x18\x0b \x01(\x0c\x12\x15\n\rthumbDownPara\x18\x0c \x01(\x0c\x12\x18\n\x10originalDownPara\x18\r \x01(\x0c\x12\x13\n\x0b\x62igDownPara\x18\x0e \x01(\x0c\x12\x0e\n\x06\x66ileId\x18\x0f \x01(\x04\x12\x14\n\x0c\x61utoDownType\x18\x10 \x01(\r\x12\x15\n\rorderDownType\x18\x11 \x03(\r\x12\x18\n\x10\x62igThumbDownPara\x18\x13 \x01(\x0c\x12\x14\n\x0chttpsUrlFlag\x18\x14 \x01(\r\x12\x1a\n\x07\x64ownIp6\x18\x1a \x03(\x0b\x32\t.IPv6Info\x12\x11\n\tclientIp6\x18\x1b \x01(\x0c\"\x96\x02\n\x0cGetPttUrlReq\x12\x11\n\tgroupCode\x18\x01 \x01(\x04\x12\x0e\n\x06\x64stUin\x18\x02 \x01(\x04\x12\x0e\n\x06\x66ileid\x18\x03 \x01(\x04\x12\x0f\n\x07\x66ileMd5\x18\x04 \x01(\x0c\x12\x0f\n\x07reqTerm\x18\x05 \x01(\r\x12\x17\n\x0freqPlatformType\x18\x06 \x01(\r\x12\x0f\n\x07innerIp\x18\x07 \x01(\r\x12\x0e\n\x06\x62uType\x18\x08 \x01(\r\x12\x10\n\x08\x62uildVer\x18\t \x01(\x0c\x12\x0e\n\x06\x66ileId\x18\n \x01(\x04\x12\x0f\n\x07\x66ileKey\x18\x0b \x01(\x0c\x12\r\n\x05\x63odec\x18\x0c \x01(\r\x12\x0c\n\x04\x62uId\x18\r \x01(\r\x12\x17\n\x0freqTransferType\x18\x0e \x01(\r\x12\x0e\n\x06isAuto\x18\x0f \x01(\r\"\xa2\x02\n\x0cGetPttUrlRsp\x12\x0e\n\x06\x66ileid\x18\x01 \x01(\x04\x12\x0f\n\x07\x66ileMd5\x18\x02 \x01(\x0c\x12\x0e\n\x06result\x18\x03 \x01(\r\x12\x0f\n\x07\x66\x61ilMsg\x18\x04 \x01(\x0c\x12\x0f\n\x07\x64ownUrl\x18\x05 \x03(\x0c\x12\x0e\n\x06\x64ownIp\x18\x06 \x03(\r\x12\x10\n\x08\x64ownPort\x18\x07 \x03(\r\x12\x12\n\ndownDomain\x18\x08 \x01(\x0c\x12\x10\n\x08\x64ownPara\x18\t \x01(\x0c\x12\x0e\n\x06\x66ileId\x18\n \x01(\x04\x12\x14\n\x0ctransferType\x18\x0b \x01(\r\x12\x12\n\nallowRetry\x18\x0c \x01(\r\x12\x1a\n\x07\x64ownIp6\x18\x1a \x03(\x0b\x32\t.IPv6Info\x12\x11\n\tclientIp6\x18\x1b \x01(\x0c\x12\x0e\n\x06\x64omain\x18\x1c \x01(\t\"%\n\x08IPv6Info\x12\x0b\n\x03ip6\x18\x01 \x01(\x0c\x12\x0c\n\x04port\x18\x02 \x01(\r\"e\n\x07ImgInfo\x12\x0f\n\x07\x66ileMd5\x18\x01 \x01(\x0c\x12\x10\n\x08\x66ileType\x18\x02 \x01(\r\x12\x10\n\x08\x66ileSize\x18\x03 \x01(\x04\x12\x11\n\tfileWidth\x18\x04 \x01(\r\x12\x12\n\nfileHeight\x18\x05 \x01(\r\"8\n\x07PicSize\x12\x10\n\x08original\x18\x01 \x01(\r\x12\r\n\x05thumb\x18\x02 \x01(\r\x12\x0c\n\x04high\x18\x03 \x01(\r\"\x84\x02\n\x0b\x44\x33\x38\x38ReqBody\x12\x0f\n\x07netType\x18\x01 \x01(\r\x12\x0e\n\x06subcmd\x18\x02 \x01(\r\x12!\n\x0btryupImgReq\x18\x03 \x03(\x0b\x32\x0c.TryUpImgReq\x12#\n\x0cgetimgUrlReq\x18\x04 \x03(\x0b\x32\r.GetImgUrlReq\x12!\n\x0btryupPttReq\x18\x05 \x03(\x0b\x32\x0c.TryUpPttReq\x12#\n\x0cgetpttUrlReq\x18\x06 \x03(\x0b\x32\r.GetPttUrlReq\x12\x11\n\tcommandId\x18\x07 \x01(\r\x12\x1d\n\tdelImgReq\x18\x08 \x03(\x0b\x32\n.DelImgReq\x12\x12\n\textension\x18\xe9\x07 \x01(\x0c\"\xe2\x01\n\x0b\x44\x33\x38\x38RspBody\x12\x10\n\x08\x63lientIp\x18\x01 \x01(\r\x12\x0e\n\x06subcmd\x18\x02 \x01(\r\x12%\n\x0btryupImgRsp\x18\x03 \x03(\x0b\x32\x10.D388TryUpImgRsp\x12#\n\x0cgetimgUrlRsp\x18\x04 \x03(\x0b\x32\r.GetImgUrlRsp\x12!\n\x0btryupPttRsp\x18\x05 \x03(\x0b\x32\x0c.TryUpPttRsp\x12#\n\x0cgetpttUrlRsp\x18\x06 \x03(\x0b\x32\r.GetPttUrlRsp\x12\x1d\n\tdelImgRsp\x18\x07 \x03(\x0b\x32\n.DelImgRsp\"\xa9\x03\n\x0bTryUpImgReq\x12\x11\n\tgroupCode\x18\x01 \x01(\x04\x12\x0e\n\x06srcUin\x18\x02 \x01(\x04\x12\x0e\n\x06\x66ileId\x18\x03 \x01(\x04\x12\x0f\n\x07\x66ileMd5\x18\x04 \x01(\x0c\x12\x10\n\x08\x66ileSize\x18\x05 \x01(\x04\x12\x10\n\x08\x66ileName\x18\x06 \x01(\x0c\x12\x0f\n\x07srcTerm\x18\x07 \x01(\r\x12\x14\n\x0cplatformType\x18\x08 \x01(\r\x12\x0e\n\x06\x62uType\x18\t \x01(\r\x12\x10\n\x08picWidth\x18\n \x01(\r\x12\x11\n\tpicHeight\x18\x0b \x01(\r\x12\x0f\n\x07picType\x18\x0c \x01(\r\x12\x10\n\x08\x62uildVer\x18\r \x01(\x0c\x12\x0f\n\x07innerIp\x18\x0e \x01(\r\x12\x12\n\nappPicType\x18\x0f \x01(\r\x12\x13\n\x0boriginalPic\x18\x10 \x01(\r\x12\x11\n\tfileIndex\x18\x11 \x01(\x0c\x12\x0e\n\x06\x64stUin\x18\x12 \x01(\x04\x12\x11\n\tsrvUpload\x18\x13 \x01(\r\x12\x13\n\x0btransferUrl\x18\x14 \x01(\x0c\x12\x15\n\rqqmeetGuildId\x18\x15 \x01(\x04\x12\x17\n\x0fqqmeetChannelId\x18\x16 \x01(\x04\"\xcf\x02\n\x0f\x44\x33\x38\x38TryUpImgRsp\x12\x0e\n\x06\x66ileId\x18\x01 \x01(\x04\x12\x0e\n\x06result\x18\x02 \x01(\r\x12\x0f\n\x07\x66\x61ilMsg\x18\x03 \x01(\x0c\x12\x10\n\x08\x66ileExit\x18\x04 \x01(\x08\x12\x19\n\x07imgInfo\x18\x05 \x01(\x0b\x32\x08.ImgInfo\x12\x0c\n\x04upIp\x18\x06 \x03(\r\x12\x0e\n\x06upPort\x18\x07 \x03(\r\x12\x0e\n\x06upUkey\x18\x08 \x01(\x0c\x12\x0e\n\x06\x66ileid\x18\t \x01(\x04\x12\x10\n\x08upOffset\x18\n \x01(\x04\x12\x11\n\tblockSize\x18\x0b \x01(\x04\x12\x12\n\nnewBigChan\x18\x0c \x01(\x08\x12\x18\n\x05upIp6\x18\x1a \x03(\x0b\x32\t.IPv6Info\x12\x11\n\tclientIp6\x18\x1b \x01(\x0c\x12\x15\n\rdownloadIndex\x18\x1c \x01(\x0c\x12#\n\tinfo4Busi\x18\xe9\x07 \x01(\x0b\x32\x0f.TryUpInfo4Busi\"z\n\x0eTryUpInfo4Busi\x12\x12\n\ndownDomain\x18\x01 \x01(\x0c\x12\x14\n\x0cthumbDownUrl\x18\x02 \x01(\x0c\x12\x17\n\x0foriginalDownUrl\x18\x03 \x01(\x0c\x12\x12\n\nbigDownUrl\x18\x04 \x01(\x0c\x12\x11\n\tfileResid\x18\x05 \x01(\x0c\"\xa7\x02\n\x0bTryUpPttReq\x12\x11\n\tgroupCode\x18\x01 \x01(\x04\x12\x0e\n\x06srcUin\x18\x02 \x01(\x04\x12\x0e\n\x06\x66ileId\x18\x03 \x01(\x04\x12\x0f\n\x07\x66ileMd5\x18\x04 \x01(\x0c\x12\x10\n\x08\x66ileSize\x18\x05 \x01(\x04\x12\x10\n\x08\x66ileName\x18\x06 \x01(\x0c\x12\x0f\n\x07srcTerm\x18\x07 \x01(\r\x12\x14\n\x0cplatformType\x18\x08 \x01(\r\x12\x0e\n\x06\x62uType\x18\t \x01(\r\x12\x10\n\x08\x62uildVer\x18\n \x01(\x0c\x12\x0f\n\x07innerIp\x18\x0b \x01(\r\x12\x13\n\x0bvoiceLength\x18\x0c \x01(\r\x12\x11\n\tnewUpChan\x18\r \x01(\x08\x12\r\n\x05\x63odec\x18\x0e \x01(\r\x12\x11\n\tvoiceType\x18\x0f \x01(\r\x12\x0c\n\x04\x62uId\x18\x10 \x01(\r\"\x86\x02\n\x0bTryUpPttRsp\x12\x0e\n\x06\x66ileId\x18\x01 \x01(\x04\x12\x0e\n\x06result\x18\x02 \x01(\r\x12\x0f\n\x07\x66\x61ilMsg\x18\x03 \x01(\x0c\x12\x10\n\x08\x66ileExit\x18\x04 \x01(\x08\x12\x0c\n\x04upIp\x18\x05 \x03(\r\x12\x0e\n\x06upPort\x18\x06 \x03(\r\x12\x0e\n\x06upUkey\x18\x07 \x01(\x0c\x12\x0e\n\x06\x66ileid\x18\x08 \x01(\x04\x12\x10\n\x08upOffset\x18\t \x01(\x04\x12\x11\n\tblockSize\x18\n \x01(\x04\x12\x0f\n\x07\x66ileKey\x18\x0b \x01(\x0c\x12\x13\n\x0b\x63hannelType\x18\x0c \x01(\r\x12\x18\n\x05upIp6\x18\x1a \x03(\x0b\x32\t.IPv6Info\x12\x11\n\tclientIp6\x18\x1b \x01(\x0c\x42-Z+github.com/Mrs4s/MiraiGo/client/pb/cmd0x388') - - - -_DELIMGREQ = DESCRIPTOR.message_types_by_name['DelImgReq'] -_DELIMGRSP = DESCRIPTOR.message_types_by_name['DelImgRsp'] -_EXPROAMEXTENDINFO = DESCRIPTOR.message_types_by_name['ExpRoamExtendInfo'] -_EXPROAMPICINFO = DESCRIPTOR.message_types_by_name['ExpRoamPicInfo'] -_EXTENSIONCOMMPICTRYUP = DESCRIPTOR.message_types_by_name['ExtensionCommPicTryUp'] -_EXTENSIONEXPROAMTRYUP = DESCRIPTOR.message_types_by_name['ExtensionExpRoamTryUp'] -_GETIMGURLREQ = DESCRIPTOR.message_types_by_name['GetImgUrlReq'] -_GETIMGURLRSP = DESCRIPTOR.message_types_by_name['GetImgUrlRsp'] -_GETPTTURLREQ = DESCRIPTOR.message_types_by_name['GetPttUrlReq'] -_GETPTTURLRSP = DESCRIPTOR.message_types_by_name['GetPttUrlRsp'] -_IPV6INFO = DESCRIPTOR.message_types_by_name['IPv6Info'] -_IMGINFO = DESCRIPTOR.message_types_by_name['ImgInfo'] -_PICSIZE = DESCRIPTOR.message_types_by_name['PicSize'] -_D388REQBODY = DESCRIPTOR.message_types_by_name['D388ReqBody'] -_D388RSPBODY = DESCRIPTOR.message_types_by_name['D388RspBody'] -_TRYUPIMGREQ = DESCRIPTOR.message_types_by_name['TryUpImgReq'] -_D388TRYUPIMGRSP = DESCRIPTOR.message_types_by_name['D388TryUpImgRsp'] -_TRYUPINFO4BUSI = DESCRIPTOR.message_types_by_name['TryUpInfo4Busi'] -_TRYUPPTTREQ = DESCRIPTOR.message_types_by_name['TryUpPttReq'] -_TRYUPPTTRSP = DESCRIPTOR.message_types_by_name['TryUpPttRsp'] -DelImgReq = _reflection.GeneratedProtocolMessageType('DelImgReq', (_message.Message,), { - 'DESCRIPTOR' : _DELIMGREQ, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:DelImgReq) - }) -_sym_db.RegisterMessage(DelImgReq) - -DelImgRsp = _reflection.GeneratedProtocolMessageType('DelImgRsp', (_message.Message,), { - 'DESCRIPTOR' : _DELIMGRSP, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:DelImgRsp) - }) -_sym_db.RegisterMessage(DelImgRsp) - -ExpRoamExtendInfo = _reflection.GeneratedProtocolMessageType('ExpRoamExtendInfo', (_message.Message,), { - 'DESCRIPTOR' : _EXPROAMEXTENDINFO, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:ExpRoamExtendInfo) - }) -_sym_db.RegisterMessage(ExpRoamExtendInfo) - -ExpRoamPicInfo = _reflection.GeneratedProtocolMessageType('ExpRoamPicInfo', (_message.Message,), { - 'DESCRIPTOR' : _EXPROAMPICINFO, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:ExpRoamPicInfo) - }) -_sym_db.RegisterMessage(ExpRoamPicInfo) - -ExtensionCommPicTryUp = _reflection.GeneratedProtocolMessageType('ExtensionCommPicTryUp', (_message.Message,), { - 'DESCRIPTOR' : _EXTENSIONCOMMPICTRYUP, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:ExtensionCommPicTryUp) - }) -_sym_db.RegisterMessage(ExtensionCommPicTryUp) - -ExtensionExpRoamTryUp = _reflection.GeneratedProtocolMessageType('ExtensionExpRoamTryUp', (_message.Message,), { - 'DESCRIPTOR' : _EXTENSIONEXPROAMTRYUP, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:ExtensionExpRoamTryUp) - }) -_sym_db.RegisterMessage(ExtensionExpRoamTryUp) - -GetImgUrlReq = _reflection.GeneratedProtocolMessageType('GetImgUrlReq', (_message.Message,), { - 'DESCRIPTOR' : _GETIMGURLREQ, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:GetImgUrlReq) - }) -_sym_db.RegisterMessage(GetImgUrlReq) - -GetImgUrlRsp = _reflection.GeneratedProtocolMessageType('GetImgUrlRsp', (_message.Message,), { - 'DESCRIPTOR' : _GETIMGURLRSP, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:GetImgUrlRsp) - }) -_sym_db.RegisterMessage(GetImgUrlRsp) - -GetPttUrlReq = _reflection.GeneratedProtocolMessageType('GetPttUrlReq', (_message.Message,), { - 'DESCRIPTOR' : _GETPTTURLREQ, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:GetPttUrlReq) - }) -_sym_db.RegisterMessage(GetPttUrlReq) - -GetPttUrlRsp = _reflection.GeneratedProtocolMessageType('GetPttUrlRsp', (_message.Message,), { - 'DESCRIPTOR' : _GETPTTURLRSP, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:GetPttUrlRsp) - }) -_sym_db.RegisterMessage(GetPttUrlRsp) - -IPv6Info = _reflection.GeneratedProtocolMessageType('IPv6Info', (_message.Message,), { - 'DESCRIPTOR' : _IPV6INFO, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:IPv6Info) - }) -_sym_db.RegisterMessage(IPv6Info) - -ImgInfo = _reflection.GeneratedProtocolMessageType('ImgInfo', (_message.Message,), { - 'DESCRIPTOR' : _IMGINFO, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:ImgInfo) - }) -_sym_db.RegisterMessage(ImgInfo) - -PicSize = _reflection.GeneratedProtocolMessageType('PicSize', (_message.Message,), { - 'DESCRIPTOR' : _PICSIZE, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:PicSize) - }) -_sym_db.RegisterMessage(PicSize) - -D388ReqBody = _reflection.GeneratedProtocolMessageType('D388ReqBody', (_message.Message,), { - 'DESCRIPTOR' : _D388REQBODY, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:D388ReqBody) - }) -_sym_db.RegisterMessage(D388ReqBody) - -D388RspBody = _reflection.GeneratedProtocolMessageType('D388RspBody', (_message.Message,), { - 'DESCRIPTOR' : _D388RSPBODY, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:D388RspBody) - }) -_sym_db.RegisterMessage(D388RspBody) - -TryUpImgReq = _reflection.GeneratedProtocolMessageType('TryUpImgReq', (_message.Message,), { - 'DESCRIPTOR' : _TRYUPIMGREQ, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:TryUpImgReq) - }) -_sym_db.RegisterMessage(TryUpImgReq) - -D388TryUpImgRsp = _reflection.GeneratedProtocolMessageType('D388TryUpImgRsp', (_message.Message,), { - 'DESCRIPTOR' : _D388TRYUPIMGRSP, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:D388TryUpImgRsp) - }) -_sym_db.RegisterMessage(D388TryUpImgRsp) - -TryUpInfo4Busi = _reflection.GeneratedProtocolMessageType('TryUpInfo4Busi', (_message.Message,), { - 'DESCRIPTOR' : _TRYUPINFO4BUSI, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:TryUpInfo4Busi) - }) -_sym_db.RegisterMessage(TryUpInfo4Busi) - -TryUpPttReq = _reflection.GeneratedProtocolMessageType('TryUpPttReq', (_message.Message,), { - 'DESCRIPTOR' : _TRYUPPTTREQ, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:TryUpPttReq) - }) -_sym_db.RegisterMessage(TryUpPttReq) - -TryUpPttRsp = _reflection.GeneratedProtocolMessageType('TryUpPttRsp', (_message.Message,), { - 'DESCRIPTOR' : _TRYUPPTTRSP, - '__module__' : 'cmd0x388_pb2' - # @@protoc_insertion_point(class_scope:TryUpPttRsp) - }) -_sym_db.RegisterMessage(TryUpPttRsp) - -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'Z+github.com/Mrs4s/MiraiGo/client/pb/cmd0x388' - _DELIMGREQ._serialized_start=19 - _DELIMGREQ._serialized_end=194 - _DELIMGRSP._serialized_start=196 - _DELIMGRSP._serialized_end=259 - _EXPROAMEXTENDINFO._serialized_start=261 - _EXPROAMEXTENDINFO._serialized_end=295 - _EXPROAMPICINFO._serialized_start=297 - _EXPROAMPICINFO._serialized_end=361 - _EXTENSIONCOMMPICTRYUP._serialized_start=363 - _EXTENSIONCOMMPICTRYUP._serialized_end=403 - _EXTENSIONEXPROAMTRYUP._serialized_start=405 - _EXTENSIONEXPROAMTRYUP._serialized_end=469 - _GETIMGURLREQ._serialized_start=472 - _GETIMGURLREQ._serialized_end=930 - _GETIMGURLRSP._serialized_start=933 - _GETIMGURLRSP._serialized_end=1387 - _GETPTTURLREQ._serialized_start=1390 - _GETPTTURLREQ._serialized_end=1668 - _GETPTTURLRSP._serialized_start=1671 - _GETPTTURLRSP._serialized_end=1961 - _IPV6INFO._serialized_start=1963 - _IPV6INFO._serialized_end=2000 - _IMGINFO._serialized_start=2002 - _IMGINFO._serialized_end=2103 - _PICSIZE._serialized_start=2105 - _PICSIZE._serialized_end=2161 - _D388REQBODY._serialized_start=2164 - _D388REQBODY._serialized_end=2424 - _D388RSPBODY._serialized_start=2427 - _D388RSPBODY._serialized_end=2653 - _TRYUPIMGREQ._serialized_start=2656 - _TRYUPIMGREQ._serialized_end=3081 - _D388TRYUPIMGRSP._serialized_start=3084 - _D388TRYUPIMGRSP._serialized_end=3419 - _TRYUPINFO4BUSI._serialized_start=3421 - _TRYUPINFO4BUSI._serialized_end=3543 - _TRYUPPTTREQ._serialized_start=3546 - _TRYUPPTTREQ._serialized_end=3841 - _TRYUPPTTRSP._serialized_start=3844 - _TRYUPPTTRSP._serialized_end=4106 -# @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.pyi b/cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.pyi deleted file mode 100644 index 49ccf026..00000000 --- a/cai/pb/im/oidb/cmd0x388/cmd0x388_pb2.pyi +++ /dev/null @@ -1,799 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -from builtins import ( - bool, - bytes, - int, -) - -from google.protobuf.descriptor import ( - Descriptor, - FileDescriptor, -) - -from google.protobuf.internal.containers import ( - RepeatedCompositeFieldContainer, - RepeatedScalarFieldContainer, -) - -from google.protobuf.message import ( - Message, -) - -from typing import ( - Iterable, - Optional, - Text, -) - -from typing_extensions import ( - Literal, -) - - -DESCRIPTOR: FileDescriptor - -class DelImgReq(Message): - DESCRIPTOR: Descriptor - SRCUIN_FIELD_NUMBER: int - DSTUIN_FIELD_NUMBER: int - REQTERM_FIELD_NUMBER: int - REQPLATFORMTYPE_FIELD_NUMBER: int - BUTYPE_FIELD_NUMBER: int - BUILDVER_FIELD_NUMBER: int - FILERESID_FIELD_NUMBER: int - PICWIDTH_FIELD_NUMBER: int - PICHEIGHT_FIELD_NUMBER: int - srcUin: int - dstUin: int - reqTerm: int - reqPlatformType: int - buType: int - buildVer: bytes - fileResid: bytes - picWidth: int - picHeight: int - def __init__(self, - *, - srcUin: Optional[int] = ..., - dstUin: Optional[int] = ..., - reqTerm: Optional[int] = ..., - reqPlatformType: Optional[int] = ..., - buType: Optional[int] = ..., - buildVer: Optional[bytes] = ..., - fileResid: Optional[bytes] = ..., - picWidth: Optional[int] = ..., - picHeight: Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["buType",b"buType","buildVer",b"buildVer","dstUin",b"dstUin","fileResid",b"fileResid","picHeight",b"picHeight","picWidth",b"picWidth","reqPlatformType",b"reqPlatformType","reqTerm",b"reqTerm","srcUin",b"srcUin"]) -> bool: ... - def ClearField(self, field_name: Literal["buType",b"buType","buildVer",b"buildVer","dstUin",b"dstUin","fileResid",b"fileResid","picHeight",b"picHeight","picWidth",b"picWidth","reqPlatformType",b"reqPlatformType","reqTerm",b"reqTerm","srcUin",b"srcUin"]) -> None: ... - -class DelImgRsp(Message): - DESCRIPTOR: Descriptor - RESULT_FIELD_NUMBER: int - FAILMSG_FIELD_NUMBER: int - FILERESID_FIELD_NUMBER: int - result: int - failMsg: bytes - fileResid: bytes - def __init__(self, - *, - result: Optional[int] = ..., - failMsg: Optional[bytes] = ..., - fileResid: Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["failMsg",b"failMsg","fileResid",b"fileResid","result",b"result"]) -> bool: ... - def ClearField(self, field_name: Literal["failMsg",b"failMsg","fileResid",b"fileResid","result",b"result"]) -> None: ... - -class ExpRoamExtendInfo(Message): - DESCRIPTOR: Descriptor - RESID_FIELD_NUMBER: int - resid: bytes - def __init__(self, - *, - resid: Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["resid",b"resid"]) -> bool: ... - def ClearField(self, field_name: Literal["resid",b"resid"]) -> None: ... - -class ExpRoamPicInfo(Message): - DESCRIPTOR: Descriptor - SHOPFLAG_FIELD_NUMBER: int - PKGID_FIELD_NUMBER: int - PICID_FIELD_NUMBER: int - shopFlag: int - pkgId: int - picId: bytes - def __init__(self, - *, - shopFlag: Optional[int] = ..., - pkgId: Optional[int] = ..., - picId: Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["picId",b"picId","pkgId",b"pkgId","shopFlag",b"shopFlag"]) -> bool: ... - def ClearField(self, field_name: Literal["picId",b"picId","pkgId",b"pkgId","shopFlag",b"shopFlag"]) -> None: ... - -class ExtensionCommPicTryUp(Message): - DESCRIPTOR: Descriptor - EXTINFO_FIELD_NUMBER: int - @property - def extinfo(self) -> RepeatedScalarFieldContainer[bytes]: ... - def __init__(self, - *, - extinfo: Optional[Iterable[bytes]] = ..., - ) -> None: ... - def ClearField(self, field_name: Literal["extinfo",b"extinfo"]) -> None: ... - -class ExtensionExpRoamTryUp(Message): - DESCRIPTOR: Descriptor - EXPROAMPICINFO_FIELD_NUMBER: int - @property - def exproamPicInfo(self) -> RepeatedCompositeFieldContainer[ExpRoamPicInfo]: ... - def __init__(self, - *, - exproamPicInfo: Optional[Iterable[ExpRoamPicInfo]] = ..., - ) -> None: ... - def ClearField(self, field_name: Literal["exproamPicInfo",b"exproamPicInfo"]) -> None: ... - -class GetImgUrlReq(Message): - DESCRIPTOR: Descriptor - GROUPCODE_FIELD_NUMBER: int - DSTUIN_FIELD_NUMBER: int - FILEID_FIELD_NUMBER: int - FILEMD5_FIELD_NUMBER: int - URLFLAG_FIELD_NUMBER: int - URLTYPE_FIELD_NUMBER: int - REQTERM_FIELD_NUMBER: int - REQPLATFORMTYPE_FIELD_NUMBER: int - INNERIP_FIELD_NUMBER: int - BUTYPE_FIELD_NUMBER: int - BUILDVER_FIELD_NUMBER: int - FILEID_FIELD_NUMBER: int - FILESIZE_FIELD_NUMBER: int - ORIGINALPIC_FIELD_NUMBER: int - RETRYREQ_FIELD_NUMBER: int - FILEHEIGHT_FIELD_NUMBER: int - FILEWIDTH_FIELD_NUMBER: int - PICTYPE_FIELD_NUMBER: int - PICUPTIMESTAMP_FIELD_NUMBER: int - REQTRANSFERTYPE_FIELD_NUMBER: int - QQMEETGUILDID_FIELD_NUMBER: int - QQMEETCHANNELID_FIELD_NUMBER: int - DOWNLOADINDEX_FIELD_NUMBER: int - groupCode: int - dstUin: int - fileid: int - fileMd5: bytes - urlFlag: int - urlType: int - reqTerm: int - reqPlatformType: int - innerIp: int - buType: int - buildVer: bytes - fileId: int - fileSize: int - originalPic: int - retryReq: int - fileHeight: int - fileWidth: int - picType: int - picUpTimestamp: int - reqTransferType: int - qqmeetGuildId: int - qqmeetChannelId: int - downloadIndex: bytes - def __init__(self, - *, - groupCode: Optional[int] = ..., - dstUin: Optional[int] = ..., - fileid: Optional[int] = ..., - fileMd5: Optional[bytes] = ..., - urlFlag: Optional[int] = ..., - urlType: Optional[int] = ..., - reqTerm: Optional[int] = ..., - reqPlatformType: Optional[int] = ..., - innerIp: Optional[int] = ..., - buType: Optional[int] = ..., - buildVer: Optional[bytes] = ..., - fileId: Optional[int] = ..., - fileSize: Optional[int] = ..., - originalPic: Optional[int] = ..., - retryReq: Optional[int] = ..., - fileHeight: Optional[int] = ..., - fileWidth: Optional[int] = ..., - picType: Optional[int] = ..., - picUpTimestamp: Optional[int] = ..., - reqTransferType: Optional[int] = ..., - qqmeetGuildId: Optional[int] = ..., - qqmeetChannelId: Optional[int] = ..., - downloadIndex: Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["buType",b"buType","buildVer",b"buildVer","downloadIndex",b"downloadIndex","dstUin",b"dstUin","fileHeight",b"fileHeight","fileId",b"fileId","fileMd5",b"fileMd5","fileSize",b"fileSize","fileWidth",b"fileWidth","fileid",b"fileid","groupCode",b"groupCode","innerIp",b"innerIp","originalPic",b"originalPic","picType",b"picType","picUpTimestamp",b"picUpTimestamp","qqmeetChannelId",b"qqmeetChannelId","qqmeetGuildId",b"qqmeetGuildId","reqPlatformType",b"reqPlatformType","reqTerm",b"reqTerm","reqTransferType",b"reqTransferType","retryReq",b"retryReq","urlFlag",b"urlFlag","urlType",b"urlType"]) -> bool: ... - def ClearField(self, field_name: Literal["buType",b"buType","buildVer",b"buildVer","downloadIndex",b"downloadIndex","dstUin",b"dstUin","fileHeight",b"fileHeight","fileId",b"fileId","fileMd5",b"fileMd5","fileSize",b"fileSize","fileWidth",b"fileWidth","fileid",b"fileid","groupCode",b"groupCode","innerIp",b"innerIp","originalPic",b"originalPic","picType",b"picType","picUpTimestamp",b"picUpTimestamp","qqmeetChannelId",b"qqmeetChannelId","qqmeetGuildId",b"qqmeetGuildId","reqPlatformType",b"reqPlatformType","reqTerm",b"reqTerm","reqTransferType",b"reqTransferType","retryReq",b"retryReq","urlFlag",b"urlFlag","urlType",b"urlType"]) -> None: ... - -class GetImgUrlRsp(Message): - DESCRIPTOR: Descriptor - FILEID_FIELD_NUMBER: int - FILEMD5_FIELD_NUMBER: int - RESULT_FIELD_NUMBER: int - FAILMSG_FIELD_NUMBER: int - IMGINFO_FIELD_NUMBER: int - THUMBDOWNURL_FIELD_NUMBER: int - ORIGINALDOWNURL_FIELD_NUMBER: int - BIGDOWNURL_FIELD_NUMBER: int - DOWNIP_FIELD_NUMBER: int - DOWNPORT_FIELD_NUMBER: int - DOWNDOMAIN_FIELD_NUMBER: int - THUMBDOWNPARA_FIELD_NUMBER: int - ORIGINALDOWNPARA_FIELD_NUMBER: int - BIGDOWNPARA_FIELD_NUMBER: int - FILEID_FIELD_NUMBER: int - AUTODOWNTYPE_FIELD_NUMBER: int - ORDERDOWNTYPE_FIELD_NUMBER: int - BIGTHUMBDOWNPARA_FIELD_NUMBER: int - HTTPSURLFLAG_FIELD_NUMBER: int - DOWNIP6_FIELD_NUMBER: int - CLIENTIP6_FIELD_NUMBER: int - fileid: int - fileMd5: bytes - result: int - failMsg: bytes - @property - def imgInfo(self) -> ImgInfo: ... - @property - def thumbDownUrl(self) -> RepeatedScalarFieldContainer[bytes]: ... - @property - def originalDownUrl(self) -> RepeatedScalarFieldContainer[bytes]: ... - @property - def bigDownUrl(self) -> RepeatedScalarFieldContainer[bytes]: ... - @property - def downIp(self) -> RepeatedScalarFieldContainer[int]: ... - @property - def downPort(self) -> RepeatedScalarFieldContainer[int]: ... - downDomain: bytes - thumbDownPara: bytes - originalDownPara: bytes - bigDownPara: bytes - fileId: int - autoDownType: int - @property - def orderDownType(self) -> RepeatedScalarFieldContainer[int]: ... - bigThumbDownPara: bytes - httpsUrlFlag: int - @property - def downIp6(self) -> RepeatedCompositeFieldContainer[IPv6Info]: ... - clientIp6: bytes - def __init__(self, - *, - fileid: Optional[int] = ..., - fileMd5: Optional[bytes] = ..., - result: Optional[int] = ..., - failMsg: Optional[bytes] = ..., - imgInfo: Optional[ImgInfo] = ..., - thumbDownUrl: Optional[Iterable[bytes]] = ..., - originalDownUrl: Optional[Iterable[bytes]] = ..., - bigDownUrl: Optional[Iterable[bytes]] = ..., - downIp: Optional[Iterable[int]] = ..., - downPort: Optional[Iterable[int]] = ..., - downDomain: Optional[bytes] = ..., - thumbDownPara: Optional[bytes] = ..., - originalDownPara: Optional[bytes] = ..., - bigDownPara: Optional[bytes] = ..., - fileId: Optional[int] = ..., - autoDownType: Optional[int] = ..., - orderDownType: Optional[Iterable[int]] = ..., - bigThumbDownPara: Optional[bytes] = ..., - httpsUrlFlag: Optional[int] = ..., - downIp6: Optional[Iterable[IPv6Info]] = ..., - clientIp6: Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["autoDownType",b"autoDownType","bigDownPara",b"bigDownPara","bigThumbDownPara",b"bigThumbDownPara","clientIp6",b"clientIp6","downDomain",b"downDomain","failMsg",b"failMsg","fileId",b"fileId","fileMd5",b"fileMd5","fileid",b"fileid","httpsUrlFlag",b"httpsUrlFlag","imgInfo",b"imgInfo","originalDownPara",b"originalDownPara","result",b"result","thumbDownPara",b"thumbDownPara"]) -> bool: ... - def ClearField(self, field_name: Literal["autoDownType",b"autoDownType","bigDownPara",b"bigDownPara","bigDownUrl",b"bigDownUrl","bigThumbDownPara",b"bigThumbDownPara","clientIp6",b"clientIp6","downDomain",b"downDomain","downIp",b"downIp","downIp6",b"downIp6","downPort",b"downPort","failMsg",b"failMsg","fileId",b"fileId","fileMd5",b"fileMd5","fileid",b"fileid","httpsUrlFlag",b"httpsUrlFlag","imgInfo",b"imgInfo","orderDownType",b"orderDownType","originalDownPara",b"originalDownPara","originalDownUrl",b"originalDownUrl","result",b"result","thumbDownPara",b"thumbDownPara","thumbDownUrl",b"thumbDownUrl"]) -> None: ... - -class GetPttUrlReq(Message): - DESCRIPTOR: Descriptor - GROUPCODE_FIELD_NUMBER: int - DSTUIN_FIELD_NUMBER: int - FILEID_FIELD_NUMBER: int - FILEMD5_FIELD_NUMBER: int - REQTERM_FIELD_NUMBER: int - REQPLATFORMTYPE_FIELD_NUMBER: int - INNERIP_FIELD_NUMBER: int - BUTYPE_FIELD_NUMBER: int - BUILDVER_FIELD_NUMBER: int - FILEID_FIELD_NUMBER: int - FILEKEY_FIELD_NUMBER: int - CODEC_FIELD_NUMBER: int - BUID_FIELD_NUMBER: int - REQTRANSFERTYPE_FIELD_NUMBER: int - ISAUTO_FIELD_NUMBER: int - groupCode: int - dstUin: int - fileid: int - fileMd5: bytes - reqTerm: int - reqPlatformType: int - innerIp: int - buType: int - buildVer: bytes - fileId: int - fileKey: bytes - codec: int - buId: int - reqTransferType: int - isAuto: int - def __init__(self, - *, - groupCode: Optional[int] = ..., - dstUin: Optional[int] = ..., - fileid: Optional[int] = ..., - fileMd5: Optional[bytes] = ..., - reqTerm: Optional[int] = ..., - reqPlatformType: Optional[int] = ..., - innerIp: Optional[int] = ..., - buType: Optional[int] = ..., - buildVer: Optional[bytes] = ..., - fileId: Optional[int] = ..., - fileKey: Optional[bytes] = ..., - codec: Optional[int] = ..., - buId: Optional[int] = ..., - reqTransferType: Optional[int] = ..., - isAuto: Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["buId",b"buId","buType",b"buType","buildVer",b"buildVer","codec",b"codec","dstUin",b"dstUin","fileId",b"fileId","fileKey",b"fileKey","fileMd5",b"fileMd5","fileid",b"fileid","groupCode",b"groupCode","innerIp",b"innerIp","isAuto",b"isAuto","reqPlatformType",b"reqPlatformType","reqTerm",b"reqTerm","reqTransferType",b"reqTransferType"]) -> bool: ... - def ClearField(self, field_name: Literal["buId",b"buId","buType",b"buType","buildVer",b"buildVer","codec",b"codec","dstUin",b"dstUin","fileId",b"fileId","fileKey",b"fileKey","fileMd5",b"fileMd5","fileid",b"fileid","groupCode",b"groupCode","innerIp",b"innerIp","isAuto",b"isAuto","reqPlatformType",b"reqPlatformType","reqTerm",b"reqTerm","reqTransferType",b"reqTransferType"]) -> None: ... - -class GetPttUrlRsp(Message): - DESCRIPTOR: Descriptor - FILEID_FIELD_NUMBER: int - FILEMD5_FIELD_NUMBER: int - RESULT_FIELD_NUMBER: int - FAILMSG_FIELD_NUMBER: int - DOWNURL_FIELD_NUMBER: int - DOWNIP_FIELD_NUMBER: int - DOWNPORT_FIELD_NUMBER: int - DOWNDOMAIN_FIELD_NUMBER: int - DOWNPARA_FIELD_NUMBER: int - FILEID_FIELD_NUMBER: int - TRANSFERTYPE_FIELD_NUMBER: int - ALLOWRETRY_FIELD_NUMBER: int - DOWNIP6_FIELD_NUMBER: int - CLIENTIP6_FIELD_NUMBER: int - DOMAIN_FIELD_NUMBER: int - fileid: int - fileMd5: bytes - result: int - failMsg: bytes - @property - def downUrl(self) -> RepeatedScalarFieldContainer[bytes]: ... - @property - def downIp(self) -> RepeatedScalarFieldContainer[int]: ... - @property - def downPort(self) -> RepeatedScalarFieldContainer[int]: ... - downDomain: bytes - downPara: bytes - fileId: int - transferType: int - allowRetry: int - @property - def downIp6(self) -> RepeatedCompositeFieldContainer[IPv6Info]: ... - clientIp6: bytes - domain: Text - def __init__(self, - *, - fileid: Optional[int] = ..., - fileMd5: Optional[bytes] = ..., - result: Optional[int] = ..., - failMsg: Optional[bytes] = ..., - downUrl: Optional[Iterable[bytes]] = ..., - downIp: Optional[Iterable[int]] = ..., - downPort: Optional[Iterable[int]] = ..., - downDomain: Optional[bytes] = ..., - downPara: Optional[bytes] = ..., - fileId: Optional[int] = ..., - transferType: Optional[int] = ..., - allowRetry: Optional[int] = ..., - downIp6: Optional[Iterable[IPv6Info]] = ..., - clientIp6: Optional[bytes] = ..., - domain: Optional[Text] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["allowRetry",b"allowRetry","clientIp6",b"clientIp6","domain",b"domain","downDomain",b"downDomain","downPara",b"downPara","failMsg",b"failMsg","fileId",b"fileId","fileMd5",b"fileMd5","fileid",b"fileid","result",b"result","transferType",b"transferType"]) -> bool: ... - def ClearField(self, field_name: Literal["allowRetry",b"allowRetry","clientIp6",b"clientIp6","domain",b"domain","downDomain",b"downDomain","downIp",b"downIp","downIp6",b"downIp6","downPara",b"downPara","downPort",b"downPort","downUrl",b"downUrl","failMsg",b"failMsg","fileId",b"fileId","fileMd5",b"fileMd5","fileid",b"fileid","result",b"result","transferType",b"transferType"]) -> None: ... - -class IPv6Info(Message): - DESCRIPTOR: Descriptor - IP6_FIELD_NUMBER: int - PORT_FIELD_NUMBER: int - ip6: bytes - port: int - def __init__(self, - *, - ip6: Optional[bytes] = ..., - port: Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["ip6",b"ip6","port",b"port"]) -> bool: ... - def ClearField(self, field_name: Literal["ip6",b"ip6","port",b"port"]) -> None: ... - -class ImgInfo(Message): - DESCRIPTOR: Descriptor - FILEMD5_FIELD_NUMBER: int - FILETYPE_FIELD_NUMBER: int - FILESIZE_FIELD_NUMBER: int - FILEWIDTH_FIELD_NUMBER: int - FILEHEIGHT_FIELD_NUMBER: int - fileMd5: bytes - fileType: int - fileSize: int - fileWidth: int - fileHeight: int - def __init__(self, - *, - fileMd5: Optional[bytes] = ..., - fileType: Optional[int] = ..., - fileSize: Optional[int] = ..., - fileWidth: Optional[int] = ..., - fileHeight: Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["fileHeight",b"fileHeight","fileMd5",b"fileMd5","fileSize",b"fileSize","fileType",b"fileType","fileWidth",b"fileWidth"]) -> bool: ... - def ClearField(self, field_name: Literal["fileHeight",b"fileHeight","fileMd5",b"fileMd5","fileSize",b"fileSize","fileType",b"fileType","fileWidth",b"fileWidth"]) -> None: ... - -class PicSize(Message): - DESCRIPTOR: Descriptor - ORIGINAL_FIELD_NUMBER: int - THUMB_FIELD_NUMBER: int - HIGH_FIELD_NUMBER: int - original: int - thumb: int - high: int - def __init__(self, - *, - original: Optional[int] = ..., - thumb: Optional[int] = ..., - high: Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["high",b"high","original",b"original","thumb",b"thumb"]) -> bool: ... - def ClearField(self, field_name: Literal["high",b"high","original",b"original","thumb",b"thumb"]) -> None: ... - -class D388ReqBody(Message): - DESCRIPTOR: Descriptor - NETTYPE_FIELD_NUMBER: int - SUBCMD_FIELD_NUMBER: int - TRYUPIMGREQ_FIELD_NUMBER: int - GETIMGURLREQ_FIELD_NUMBER: int - TRYUPPTTREQ_FIELD_NUMBER: int - GETPTTURLREQ_FIELD_NUMBER: int - COMMANDID_FIELD_NUMBER: int - DELIMGREQ_FIELD_NUMBER: int - EXTENSION_FIELD_NUMBER: int - netType: int - subcmd: int - @property - def tryupImgReq(self) -> RepeatedCompositeFieldContainer[TryUpImgReq]: ... - @property - def getimgUrlReq(self) -> RepeatedCompositeFieldContainer[GetImgUrlReq]: ... - @property - def tryupPttReq(self) -> RepeatedCompositeFieldContainer[TryUpPttReq]: ... - @property - def getpttUrlReq(self) -> RepeatedCompositeFieldContainer[GetPttUrlReq]: ... - commandId: int - @property - def delImgReq(self) -> RepeatedCompositeFieldContainer[DelImgReq]: ... - extension: bytes - def __init__(self, - *, - netType: Optional[int] = ..., - subcmd: Optional[int] = ..., - tryupImgReq: Optional[Iterable[TryUpImgReq]] = ..., - getimgUrlReq: Optional[Iterable[GetImgUrlReq]] = ..., - tryupPttReq: Optional[Iterable[TryUpPttReq]] = ..., - getpttUrlReq: Optional[Iterable[GetPttUrlReq]] = ..., - commandId: Optional[int] = ..., - delImgReq: Optional[Iterable[DelImgReq]] = ..., - extension: Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["commandId",b"commandId","extension",b"extension","netType",b"netType","subcmd",b"subcmd"]) -> bool: ... - def ClearField(self, field_name: Literal["commandId",b"commandId","delImgReq",b"delImgReq","extension",b"extension","getimgUrlReq",b"getimgUrlReq","getpttUrlReq",b"getpttUrlReq","netType",b"netType","subcmd",b"subcmd","tryupImgReq",b"tryupImgReq","tryupPttReq",b"tryupPttReq"]) -> None: ... - -class D388RspBody(Message): - DESCRIPTOR: Descriptor - CLIENTIP_FIELD_NUMBER: int - SUBCMD_FIELD_NUMBER: int - TRYUPIMGRSP_FIELD_NUMBER: int - GETIMGURLRSP_FIELD_NUMBER: int - TRYUPPTTRSP_FIELD_NUMBER: int - GETPTTURLRSP_FIELD_NUMBER: int - DELIMGRSP_FIELD_NUMBER: int - clientIp: int - subcmd: int - @property - def tryupImgRsp(self) -> RepeatedCompositeFieldContainer[D388TryUpImgRsp]: ... - @property - def getimgUrlRsp(self) -> RepeatedCompositeFieldContainer[GetImgUrlRsp]: ... - @property - def tryupPttRsp(self) -> RepeatedCompositeFieldContainer[TryUpPttRsp]: ... - @property - def getpttUrlRsp(self) -> RepeatedCompositeFieldContainer[GetPttUrlRsp]: ... - @property - def delImgRsp(self) -> RepeatedCompositeFieldContainer[DelImgRsp]: ... - def __init__(self, - *, - clientIp: Optional[int] = ..., - subcmd: Optional[int] = ..., - tryupImgRsp: Optional[Iterable[D388TryUpImgRsp]] = ..., - getimgUrlRsp: Optional[Iterable[GetImgUrlRsp]] = ..., - tryupPttRsp: Optional[Iterable[TryUpPttRsp]] = ..., - getpttUrlRsp: Optional[Iterable[GetPttUrlRsp]] = ..., - delImgRsp: Optional[Iterable[DelImgRsp]] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["clientIp",b"clientIp","subcmd",b"subcmd"]) -> bool: ... - def ClearField(self, field_name: Literal["clientIp",b"clientIp","delImgRsp",b"delImgRsp","getimgUrlRsp",b"getimgUrlRsp","getpttUrlRsp",b"getpttUrlRsp","subcmd",b"subcmd","tryupImgRsp",b"tryupImgRsp","tryupPttRsp",b"tryupPttRsp"]) -> None: ... - -class TryUpImgReq(Message): - DESCRIPTOR: Descriptor - GROUPCODE_FIELD_NUMBER: int - SRCUIN_FIELD_NUMBER: int - FILEID_FIELD_NUMBER: int - FILEMD5_FIELD_NUMBER: int - FILESIZE_FIELD_NUMBER: int - FILENAME_FIELD_NUMBER: int - SRCTERM_FIELD_NUMBER: int - PLATFORMTYPE_FIELD_NUMBER: int - BUTYPE_FIELD_NUMBER: int - PICWIDTH_FIELD_NUMBER: int - PICHEIGHT_FIELD_NUMBER: int - PICTYPE_FIELD_NUMBER: int - BUILDVER_FIELD_NUMBER: int - INNERIP_FIELD_NUMBER: int - APPPICTYPE_FIELD_NUMBER: int - ORIGINALPIC_FIELD_NUMBER: int - FILEINDEX_FIELD_NUMBER: int - DSTUIN_FIELD_NUMBER: int - SRVUPLOAD_FIELD_NUMBER: int - TRANSFERURL_FIELD_NUMBER: int - QQMEETGUILDID_FIELD_NUMBER: int - QQMEETCHANNELID_FIELD_NUMBER: int - groupCode: int - srcUin: int - fileId: int - fileMd5: bytes - fileSize: int - fileName: bytes - srcTerm: int - platformType: int - buType: int - picWidth: int - picHeight: int - picType: int - buildVer: bytes - innerIp: int - appPicType: int - originalPic: int - fileIndex: bytes - dstUin: int - srvUpload: int - transferUrl: bytes - qqmeetGuildId: int - qqmeetChannelId: int - def __init__(self, - *, - groupCode: Optional[int] = ..., - srcUin: Optional[int] = ..., - fileId: Optional[int] = ..., - fileMd5: Optional[bytes] = ..., - fileSize: Optional[int] = ..., - fileName: Optional[bytes] = ..., - srcTerm: Optional[int] = ..., - platformType: Optional[int] = ..., - buType: Optional[int] = ..., - picWidth: Optional[int] = ..., - picHeight: Optional[int] = ..., - picType: Optional[int] = ..., - buildVer: Optional[bytes] = ..., - innerIp: Optional[int] = ..., - appPicType: Optional[int] = ..., - originalPic: Optional[int] = ..., - fileIndex: Optional[bytes] = ..., - dstUin: Optional[int] = ..., - srvUpload: Optional[int] = ..., - transferUrl: Optional[bytes] = ..., - qqmeetGuildId: Optional[int] = ..., - qqmeetChannelId: Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["appPicType",b"appPicType","buType",b"buType","buildVer",b"buildVer","dstUin",b"dstUin","fileId",b"fileId","fileIndex",b"fileIndex","fileMd5",b"fileMd5","fileName",b"fileName","fileSize",b"fileSize","groupCode",b"groupCode","innerIp",b"innerIp","originalPic",b"originalPic","picHeight",b"picHeight","picType",b"picType","picWidth",b"picWidth","platformType",b"platformType","qqmeetChannelId",b"qqmeetChannelId","qqmeetGuildId",b"qqmeetGuildId","srcTerm",b"srcTerm","srcUin",b"srcUin","srvUpload",b"srvUpload","transferUrl",b"transferUrl"]) -> bool: ... - def ClearField(self, field_name: Literal["appPicType",b"appPicType","buType",b"buType","buildVer",b"buildVer","dstUin",b"dstUin","fileId",b"fileId","fileIndex",b"fileIndex","fileMd5",b"fileMd5","fileName",b"fileName","fileSize",b"fileSize","groupCode",b"groupCode","innerIp",b"innerIp","originalPic",b"originalPic","picHeight",b"picHeight","picType",b"picType","picWidth",b"picWidth","platformType",b"platformType","qqmeetChannelId",b"qqmeetChannelId","qqmeetGuildId",b"qqmeetGuildId","srcTerm",b"srcTerm","srcUin",b"srcUin","srvUpload",b"srvUpload","transferUrl",b"transferUrl"]) -> None: ... - -class D388TryUpImgRsp(Message): - DESCRIPTOR: Descriptor - FILEID_FIELD_NUMBER: int - RESULT_FIELD_NUMBER: int - FAILMSG_FIELD_NUMBER: int - FILEEXIT_FIELD_NUMBER: int - IMGINFO_FIELD_NUMBER: int - UPIP_FIELD_NUMBER: int - UPPORT_FIELD_NUMBER: int - UPUKEY_FIELD_NUMBER: int - FILEID_FIELD_NUMBER: int - UPOFFSET_FIELD_NUMBER: int - BLOCKSIZE_FIELD_NUMBER: int - NEWBIGCHAN_FIELD_NUMBER: int - UPIP6_FIELD_NUMBER: int - CLIENTIP6_FIELD_NUMBER: int - DOWNLOADINDEX_FIELD_NUMBER: int - INFO4BUSI_FIELD_NUMBER: int - fileId: int - result: int - failMsg: bytes - fileExit: bool - @property - def imgInfo(self) -> ImgInfo: ... - @property - def upIp(self) -> RepeatedScalarFieldContainer[int]: ... - @property - def upPort(self) -> RepeatedScalarFieldContainer[int]: ... - upUkey: bytes - fileid: int - upOffset: int - blockSize: int - newBigChan: bool - @property - def upIp6(self) -> RepeatedCompositeFieldContainer[IPv6Info]: ... - clientIp6: bytes - downloadIndex: bytes - @property - def info4Busi(self) -> TryUpInfo4Busi: ... - def __init__(self, - *, - fileId: Optional[int] = ..., - result: Optional[int] = ..., - failMsg: Optional[bytes] = ..., - fileExit: Optional[bool] = ..., - imgInfo: Optional[ImgInfo] = ..., - upIp: Optional[Iterable[int]] = ..., - upPort: Optional[Iterable[int]] = ..., - upUkey: Optional[bytes] = ..., - fileid: Optional[int] = ..., - upOffset: Optional[int] = ..., - blockSize: Optional[int] = ..., - newBigChan: Optional[bool] = ..., - upIp6: Optional[Iterable[IPv6Info]] = ..., - clientIp6: Optional[bytes] = ..., - downloadIndex: Optional[bytes] = ..., - info4Busi: Optional[TryUpInfo4Busi] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["blockSize",b"blockSize","clientIp6",b"clientIp6","downloadIndex",b"downloadIndex","failMsg",b"failMsg","fileExit",b"fileExit","fileId",b"fileId","fileid",b"fileid","imgInfo",b"imgInfo","info4Busi",b"info4Busi","newBigChan",b"newBigChan","result",b"result","upOffset",b"upOffset","upUkey",b"upUkey"]) -> bool: ... - def ClearField(self, field_name: Literal["blockSize",b"blockSize","clientIp6",b"clientIp6","downloadIndex",b"downloadIndex","failMsg",b"failMsg","fileExit",b"fileExit","fileId",b"fileId","fileid",b"fileid","imgInfo",b"imgInfo","info4Busi",b"info4Busi","newBigChan",b"newBigChan","result",b"result","upIp",b"upIp","upIp6",b"upIp6","upOffset",b"upOffset","upPort",b"upPort","upUkey",b"upUkey"]) -> None: ... - -class TryUpInfo4Busi(Message): - DESCRIPTOR: Descriptor - DOWNDOMAIN_FIELD_NUMBER: int - THUMBDOWNURL_FIELD_NUMBER: int - ORIGINALDOWNURL_FIELD_NUMBER: int - BIGDOWNURL_FIELD_NUMBER: int - FILERESID_FIELD_NUMBER: int - downDomain: bytes - thumbDownUrl: bytes - originalDownUrl: bytes - bigDownUrl: bytes - fileResid: bytes - def __init__(self, - *, - downDomain: Optional[bytes] = ..., - thumbDownUrl: Optional[bytes] = ..., - originalDownUrl: Optional[bytes] = ..., - bigDownUrl: Optional[bytes] = ..., - fileResid: Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["bigDownUrl",b"bigDownUrl","downDomain",b"downDomain","fileResid",b"fileResid","originalDownUrl",b"originalDownUrl","thumbDownUrl",b"thumbDownUrl"]) -> bool: ... - def ClearField(self, field_name: Literal["bigDownUrl",b"bigDownUrl","downDomain",b"downDomain","fileResid",b"fileResid","originalDownUrl",b"originalDownUrl","thumbDownUrl",b"thumbDownUrl"]) -> None: ... - -class TryUpPttReq(Message): - DESCRIPTOR: Descriptor - GROUPCODE_FIELD_NUMBER: int - SRCUIN_FIELD_NUMBER: int - FILEID_FIELD_NUMBER: int - FILEMD5_FIELD_NUMBER: int - FILESIZE_FIELD_NUMBER: int - FILENAME_FIELD_NUMBER: int - SRCTERM_FIELD_NUMBER: int - PLATFORMTYPE_FIELD_NUMBER: int - BUTYPE_FIELD_NUMBER: int - BUILDVER_FIELD_NUMBER: int - INNERIP_FIELD_NUMBER: int - VOICELENGTH_FIELD_NUMBER: int - NEWUPCHAN_FIELD_NUMBER: int - CODEC_FIELD_NUMBER: int - VOICETYPE_FIELD_NUMBER: int - BUID_FIELD_NUMBER: int - groupCode: int - srcUin: int - fileId: int - fileMd5: bytes - fileSize: int - fileName: bytes - srcTerm: int - platformType: int - buType: int - buildVer: bytes - innerIp: int - voiceLength: int - newUpChan: bool - codec: int - voiceType: int - buId: int - def __init__(self, - *, - groupCode: Optional[int] = ..., - srcUin: Optional[int] = ..., - fileId: Optional[int] = ..., - fileMd5: Optional[bytes] = ..., - fileSize: Optional[int] = ..., - fileName: Optional[bytes] = ..., - srcTerm: Optional[int] = ..., - platformType: Optional[int] = ..., - buType: Optional[int] = ..., - buildVer: Optional[bytes] = ..., - innerIp: Optional[int] = ..., - voiceLength: Optional[int] = ..., - newUpChan: Optional[bool] = ..., - codec: Optional[int] = ..., - voiceType: Optional[int] = ..., - buId: Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["buId",b"buId","buType",b"buType","buildVer",b"buildVer","codec",b"codec","fileId",b"fileId","fileMd5",b"fileMd5","fileName",b"fileName","fileSize",b"fileSize","groupCode",b"groupCode","innerIp",b"innerIp","newUpChan",b"newUpChan","platformType",b"platformType","srcTerm",b"srcTerm","srcUin",b"srcUin","voiceLength",b"voiceLength","voiceType",b"voiceType"]) -> bool: ... - def ClearField(self, field_name: Literal["buId",b"buId","buType",b"buType","buildVer",b"buildVer","codec",b"codec","fileId",b"fileId","fileMd5",b"fileMd5","fileName",b"fileName","fileSize",b"fileSize","groupCode",b"groupCode","innerIp",b"innerIp","newUpChan",b"newUpChan","platformType",b"platformType","srcTerm",b"srcTerm","srcUin",b"srcUin","voiceLength",b"voiceLength","voiceType",b"voiceType"]) -> None: ... - -class TryUpPttRsp(Message): - DESCRIPTOR: Descriptor - FILEID_FIELD_NUMBER: int - RESULT_FIELD_NUMBER: int - FAILMSG_FIELD_NUMBER: int - FILEEXIT_FIELD_NUMBER: int - UPIP_FIELD_NUMBER: int - UPPORT_FIELD_NUMBER: int - UPUKEY_FIELD_NUMBER: int - FILEID_FIELD_NUMBER: int - UPOFFSET_FIELD_NUMBER: int - BLOCKSIZE_FIELD_NUMBER: int - FILEKEY_FIELD_NUMBER: int - CHANNELTYPE_FIELD_NUMBER: int - UPIP6_FIELD_NUMBER: int - CLIENTIP6_FIELD_NUMBER: int - fileId: int - result: int - failMsg: bytes - fileExit: bool - @property - def upIp(self) -> RepeatedScalarFieldContainer[int]: ... - @property - def upPort(self) -> RepeatedScalarFieldContainer[int]: ... - upUkey: bytes - fileid: int - upOffset: int - blockSize: int - fileKey: bytes - channelType: int - @property - def upIp6(self) -> RepeatedCompositeFieldContainer[IPv6Info]: ... - clientIp6: bytes - def __init__(self, - *, - fileId: Optional[int] = ..., - result: Optional[int] = ..., - failMsg: Optional[bytes] = ..., - fileExit: Optional[bool] = ..., - upIp: Optional[Iterable[int]] = ..., - upPort: Optional[Iterable[int]] = ..., - upUkey: Optional[bytes] = ..., - fileid: Optional[int] = ..., - upOffset: Optional[int] = ..., - blockSize: Optional[int] = ..., - fileKey: Optional[bytes] = ..., - channelType: Optional[int] = ..., - upIp6: Optional[Iterable[IPv6Info]] = ..., - clientIp6: Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal["blockSize",b"blockSize","channelType",b"channelType","clientIp6",b"clientIp6","failMsg",b"failMsg","fileExit",b"fileExit","fileId",b"fileId","fileKey",b"fileKey","fileid",b"fileid","result",b"result","upOffset",b"upOffset","upUkey",b"upUkey"]) -> bool: ... - def ClearField(self, field_name: Literal["blockSize",b"blockSize","channelType",b"channelType","clientIp6",b"clientIp6","failMsg",b"failMsg","fileExit",b"fileExit","fileId",b"fileId","fileKey",b"fileKey","fileid",b"fileid","result",b"result","upIp",b"upIp","upIp6",b"upIp6","upOffset",b"upOffset","upPort",b"upPort","upUkey",b"upUkey"]) -> None: ... diff --git a/cai/pb/im/oidb/cmd0x769/cmd0x769.proto b/cai/pb/im/oidb/cmd0x769/cmd0x769.proto index 56ee4b68..d82dd2ba 100644 --- a/cai/pb/im/oidb/cmd0x769/cmd0x769.proto +++ b/cai/pb/im/oidb/cmd0x769/cmd0x769.proto @@ -1,7 +1,7 @@ syntax = "proto2"; package im.oidb.cmd0x769; -// tencent/im/oidb/cmd0xd50/Oidb_0x769.java +// tencent/im/oidb/cmd0x769/Oidb_0x769.java message CPU { optional string model = 1; diff --git a/cai/pb/im/oidb/cmd0x769/cmd0x769_pb2.py b/cai/pb/im/oidb/cmd0x769/cmd0x769_pb2.py index 85a6ed59..0d9a89e7 100644 --- a/cai/pb/im/oidb/cmd0x769/cmd0x769_pb2.py +++ b/cai/pb/im/oidb/cmd0x769/cmd0x769_pb2.py @@ -3,6 +3,7 @@ # source: cai/pb/im/oidb/cmd0x769/cmd0x769.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -13,835 +14,25 @@ -DESCRIPTOR = _descriptor.FileDescriptor( - name='cai/pb/im/oidb/cmd0x769/cmd0x769.proto', - package='im.oidb.cmd0x769', - syntax='proto2', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n&cai/pb/im/oidb/cmd0x769/cmd0x769.proto\x12\x10im.oidb.cmd0x769\"6\n\x03\x43PU\x12\r\n\x05model\x18\x01 \x01(\t\x12\r\n\x05\x63ores\x18\x02 \x01(\r\x12\x11\n\tfrequency\x18\x03 \x01(\r\";\n\x06\x43\x61mera\x12\x0f\n\x07primary\x18\x01 \x01(\x04\x12\x11\n\tsecondary\x18\x02 \x01(\x04\x12\r\n\x05\x66lash\x18\x03 \x01(\x08\"\x85\x01\n\x06\x43onfig\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x0f\n\x07version\x18\x02 \x01(\r\x12\x14\n\x0c\x63ontent_list\x18\x03 \x03(\t\x12\x11\n\tdebug_msg\x18\x04 \x01(\t\x12\x33\n\x10msg_content_list\x18\x05 \x03(\x0b\x32\x19.im.oidb.cmd0x769.Content\"*\n\tConfigSeq\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x0f\n\x07version\x18\x02 \x01(\r\"=\n\x07\x43ontent\x12\x0f\n\x07task_id\x18\x01 \x01(\r\x12\x10\n\x08\x63ompress\x18\x02 \x01(\r\x12\x0f\n\x07\x63ontent\x18\n \x01(\x0c\"\x9a\x02\n\nDeviceInfo\x12\r\n\x05\x62rand\x18\x01 \x01(\t\x12\r\n\x05model\x18\x02 \x01(\t\x12 \n\x02os\x18\x03 \x01(\x0b\x32\x14.im.oidb.cmd0x769.OS\x12\"\n\x03\x63pu\x18\x04 \x01(\x0b\x32\x15.im.oidb.cmd0x769.CPU\x12(\n\x06memory\x18\x05 \x01(\x0b\x32\x18.im.oidb.cmd0x769.Memory\x12*\n\x07storage\x18\x06 \x01(\x0b\x32\x19.im.oidb.cmd0x769.Storage\x12(\n\x06screen\x18\x07 \x01(\x0b\x32\x18.im.oidb.cmd0x769.Screen\x12(\n\x06\x63\x61mera\x18\x08 \x01(\x0b\x32\x18.im.oidb.cmd0x769.Camera\"(\n\x06Memory\x12\r\n\x05total\x18\x01 \x01(\x04\x12\x0f\n\x07process\x18\x02 \x01(\x04\"M\n\x02OS\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x0b\n\x03sdk\x18\x03 \x01(\t\x12\x0e\n\x06kernel\x18\x04 \x01(\t\x12\x0b\n\x03rom\x18\x05 \x01(\t\">\n\x17QueryUinPackageUsageReq\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x15\n\ruin_file_size\x18\x02 \x01(\x04\"\xad\x01\n\x17QueryUinPackageUsageRsp\x12\x0e\n\x06status\x18\x01 \x01(\r\x12\x14\n\x0cleft_uin_num\x18\x02 \x01(\x04\x12\x13\n\x0bmax_uin_num\x18\x03 \x01(\x04\x12\x12\n\nproportion\x18\x04 \x01(\r\x12\x43\n\x15uin_package_used_list\x18\n \x03(\x0b\x32$.im.oidb.cmd0x769.UinPackageUsedInfo\"\x83\x02\n\x07ReqBody\x12\x30\n\x0b\x63onfig_list\x18\x01 \x03(\x0b\x32\x1b.im.oidb.cmd0x769.ConfigSeq\x12\x31\n\x0b\x64\x65vice_info\x18\x02 \x01(\x0b\x32\x1c.im.oidb.cmd0x769.DeviceInfo\x12\x0c\n\x04info\x18\x03 \x01(\t\x12\x10\n\x08province\x18\x04 \x01(\t\x12\x0c\n\x04\x63ity\x18\x05 \x01(\t\x12\x15\n\rreq_debug_msg\x18\x06 \x01(\x05\x12N\n\x1bquery_uin_package_usage_req\x18\x65 \x01(\x0b\x32).im.oidb.cmd0x769.QueryUinPackageUsageReq\"\x98\x01\n\x07RspBody\x12\x0e\n\x06result\x18\x01 \x01(\r\x12-\n\x0b\x63onfig_list\x18\x02 \x03(\x0b\x32\x18.im.oidb.cmd0x769.Config\x12N\n\x1bquery_uin_package_usage_rsp\x18\x65 \x01(\x0b\x32).im.oidb.cmd0x769.QueryUinPackageUsageRsp\"X\n\x06Screen\x12\r\n\x05model\x18\x01 \x01(\t\x12\r\n\x05width\x18\x02 \x01(\r\x12\x0e\n\x06height\x18\x03 \x01(\r\x12\x0b\n\x03\x64pi\x18\x04 \x01(\r\x12\x13\n\x0bmulti_touch\x18\x05 \x01(\x08\",\n\x07Storage\x12\x0f\n\x07\x62uiltin\x18\x01 \x01(\x04\x12\x10\n\x08\x65xternal\x18\x02 \x01(\x04\"S\n\x12UinPackageUsedInfo\x12\x0f\n\x07rule_id\x18\x01 \x01(\r\x12\x0e\n\x06\x61uthor\x18\x02 \x01(\t\x12\x0b\n\x03url\x18\x03 \x01(\t\x12\x0f\n\x07uin_num\x18\x04 \x01(\x04' -) +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&cai/pb/im/oidb/cmd0x769/cmd0x769.proto\x12\x10im.oidb.cmd0x769\"6\n\x03\x43PU\x12\r\n\x05model\x18\x01 \x01(\t\x12\r\n\x05\x63ores\x18\x02 \x01(\r\x12\x11\n\tfrequency\x18\x03 \x01(\r\";\n\x06\x43\x61mera\x12\x0f\n\x07primary\x18\x01 \x01(\x04\x12\x11\n\tsecondary\x18\x02 \x01(\x04\x12\r\n\x05\x66lash\x18\x03 \x01(\x08\"\x85\x01\n\x06\x43onfig\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x0f\n\x07version\x18\x02 \x01(\r\x12\x14\n\x0c\x63ontent_list\x18\x03 \x03(\t\x12\x11\n\tdebug_msg\x18\x04 \x01(\t\x12\x33\n\x10msg_content_list\x18\x05 \x03(\x0b\x32\x19.im.oidb.cmd0x769.Content\"*\n\tConfigSeq\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x0f\n\x07version\x18\x02 \x01(\r\"=\n\x07\x43ontent\x12\x0f\n\x07task_id\x18\x01 \x01(\r\x12\x10\n\x08\x63ompress\x18\x02 \x01(\r\x12\x0f\n\x07\x63ontent\x18\n \x01(\x0c\"\x9a\x02\n\nDeviceInfo\x12\r\n\x05\x62rand\x18\x01 \x01(\t\x12\r\n\x05model\x18\x02 \x01(\t\x12 \n\x02os\x18\x03 \x01(\x0b\x32\x14.im.oidb.cmd0x769.OS\x12\"\n\x03\x63pu\x18\x04 \x01(\x0b\x32\x15.im.oidb.cmd0x769.CPU\x12(\n\x06memory\x18\x05 \x01(\x0b\x32\x18.im.oidb.cmd0x769.Memory\x12*\n\x07storage\x18\x06 \x01(\x0b\x32\x19.im.oidb.cmd0x769.Storage\x12(\n\x06screen\x18\x07 \x01(\x0b\x32\x18.im.oidb.cmd0x769.Screen\x12(\n\x06\x63\x61mera\x18\x08 \x01(\x0b\x32\x18.im.oidb.cmd0x769.Camera\"(\n\x06Memory\x12\r\n\x05total\x18\x01 \x01(\x04\x12\x0f\n\x07process\x18\x02 \x01(\x04\"M\n\x02OS\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x0b\n\x03sdk\x18\x03 \x01(\t\x12\x0e\n\x06kernel\x18\x04 \x01(\t\x12\x0b\n\x03rom\x18\x05 \x01(\t\">\n\x17QueryUinPackageUsageReq\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x15\n\ruin_file_size\x18\x02 \x01(\x04\"\xad\x01\n\x17QueryUinPackageUsageRsp\x12\x0e\n\x06status\x18\x01 \x01(\r\x12\x14\n\x0cleft_uin_num\x18\x02 \x01(\x04\x12\x13\n\x0bmax_uin_num\x18\x03 \x01(\x04\x12\x12\n\nproportion\x18\x04 \x01(\r\x12\x43\n\x15uin_package_used_list\x18\n \x03(\x0b\x32$.im.oidb.cmd0x769.UinPackageUsedInfo\"\x83\x02\n\x07ReqBody\x12\x30\n\x0b\x63onfig_list\x18\x01 \x03(\x0b\x32\x1b.im.oidb.cmd0x769.ConfigSeq\x12\x31\n\x0b\x64\x65vice_info\x18\x02 \x01(\x0b\x32\x1c.im.oidb.cmd0x769.DeviceInfo\x12\x0c\n\x04info\x18\x03 \x01(\t\x12\x10\n\x08province\x18\x04 \x01(\t\x12\x0c\n\x04\x63ity\x18\x05 \x01(\t\x12\x15\n\rreq_debug_msg\x18\x06 \x01(\x05\x12N\n\x1bquery_uin_package_usage_req\x18\x65 \x01(\x0b\x32).im.oidb.cmd0x769.QueryUinPackageUsageReq\"\x98\x01\n\x07RspBody\x12\x0e\n\x06result\x18\x01 \x01(\r\x12-\n\x0b\x63onfig_list\x18\x02 \x03(\x0b\x32\x18.im.oidb.cmd0x769.Config\x12N\n\x1bquery_uin_package_usage_rsp\x18\x65 \x01(\x0b\x32).im.oidb.cmd0x769.QueryUinPackageUsageRsp\"X\n\x06Screen\x12\r\n\x05model\x18\x01 \x01(\t\x12\r\n\x05width\x18\x02 \x01(\r\x12\x0e\n\x06height\x18\x03 \x01(\r\x12\x0b\n\x03\x64pi\x18\x04 \x01(\r\x12\x13\n\x0bmulti_touch\x18\x05 \x01(\x08\",\n\x07Storage\x12\x0f\n\x07\x62uiltin\x18\x01 \x01(\x04\x12\x10\n\x08\x65xternal\x18\x02 \x01(\x04\"S\n\x12UinPackageUsedInfo\x12\x0f\n\x07rule_id\x18\x01 \x01(\r\x12\x0e\n\x06\x61uthor\x18\x02 \x01(\t\x12\x0b\n\x03url\x18\x03 \x01(\t\x12\x0f\n\x07uin_num\x18\x04 \x01(\x04') - -_CPU = _descriptor.Descriptor( - name='CPU', - full_name='im.oidb.cmd0x769.CPU', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='model', full_name='im.oidb.cmd0x769.CPU.model', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cores', full_name='im.oidb.cmd0x769.CPU.cores', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='frequency', full_name='im.oidb.cmd0x769.CPU.frequency', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=60, - serialized_end=114, -) - - -_CAMERA = _descriptor.Descriptor( - name='Camera', - full_name='im.oidb.cmd0x769.Camera', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='primary', full_name='im.oidb.cmd0x769.Camera.primary', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='secondary', full_name='im.oidb.cmd0x769.Camera.secondary', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='flash', full_name='im.oidb.cmd0x769.Camera.flash', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=116, - serialized_end=175, -) - - -_CONFIG = _descriptor.Descriptor( - name='Config', - full_name='im.oidb.cmd0x769.Config', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='type', full_name='im.oidb.cmd0x769.Config.type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='version', full_name='im.oidb.cmd0x769.Config.version', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='content_list', full_name='im.oidb.cmd0x769.Config.content_list', index=2, - number=3, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='debug_msg', full_name='im.oidb.cmd0x769.Config.debug_msg', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_content_list', full_name='im.oidb.cmd0x769.Config.msg_content_list', index=4, - number=5, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=178, - serialized_end=311, -) - - -_CONFIGSEQ = _descriptor.Descriptor( - name='ConfigSeq', - full_name='im.oidb.cmd0x769.ConfigSeq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='type', full_name='im.oidb.cmd0x769.ConfigSeq.type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='version', full_name='im.oidb.cmd0x769.ConfigSeq.version', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=313, - serialized_end=355, -) - - -_CONTENT = _descriptor.Descriptor( - name='Content', - full_name='im.oidb.cmd0x769.Content', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='task_id', full_name='im.oidb.cmd0x769.Content.task_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='compress', full_name='im.oidb.cmd0x769.Content.compress', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='content', full_name='im.oidb.cmd0x769.Content.content', index=2, - number=10, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=357, - serialized_end=418, -) - - -_DEVICEINFO = _descriptor.Descriptor( - name='DeviceInfo', - full_name='im.oidb.cmd0x769.DeviceInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='brand', full_name='im.oidb.cmd0x769.DeviceInfo.brand', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='model', full_name='im.oidb.cmd0x769.DeviceInfo.model', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='os', full_name='im.oidb.cmd0x769.DeviceInfo.os', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cpu', full_name='im.oidb.cmd0x769.DeviceInfo.cpu', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='memory', full_name='im.oidb.cmd0x769.DeviceInfo.memory', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='storage', full_name='im.oidb.cmd0x769.DeviceInfo.storage', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='screen', full_name='im.oidb.cmd0x769.DeviceInfo.screen', index=6, - number=7, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='camera', full_name='im.oidb.cmd0x769.DeviceInfo.camera', index=7, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=421, - serialized_end=703, -) - - -_MEMORY = _descriptor.Descriptor( - name='Memory', - full_name='im.oidb.cmd0x769.Memory', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='total', full_name='im.oidb.cmd0x769.Memory.total', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='process', full_name='im.oidb.cmd0x769.Memory.process', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=705, - serialized_end=745, -) - - -_OS = _descriptor.Descriptor( - name='OS', - full_name='im.oidb.cmd0x769.OS', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='type', full_name='im.oidb.cmd0x769.OS.type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='version', full_name='im.oidb.cmd0x769.OS.version', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sdk', full_name='im.oidb.cmd0x769.OS.sdk', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='kernel', full_name='im.oidb.cmd0x769.OS.kernel', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rom', full_name='im.oidb.cmd0x769.OS.rom', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=747, - serialized_end=824, -) - - -_QUERYUINPACKAGEUSAGEREQ = _descriptor.Descriptor( - name='QueryUinPackageUsageReq', - full_name='im.oidb.cmd0x769.QueryUinPackageUsageReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='type', full_name='im.oidb.cmd0x769.QueryUinPackageUsageReq.type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='uin_file_size', full_name='im.oidb.cmd0x769.QueryUinPackageUsageReq.uin_file_size', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=826, - serialized_end=888, -) - - -_QUERYUINPACKAGEUSAGERSP = _descriptor.Descriptor( - name='QueryUinPackageUsageRsp', - full_name='im.oidb.cmd0x769.QueryUinPackageUsageRsp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='status', full_name='im.oidb.cmd0x769.QueryUinPackageUsageRsp.status', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='left_uin_num', full_name='im.oidb.cmd0x769.QueryUinPackageUsageRsp.left_uin_num', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='max_uin_num', full_name='im.oidb.cmd0x769.QueryUinPackageUsageRsp.max_uin_num', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='proportion', full_name='im.oidb.cmd0x769.QueryUinPackageUsageRsp.proportion', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='uin_package_used_list', full_name='im.oidb.cmd0x769.QueryUinPackageUsageRsp.uin_package_used_list', index=4, - number=10, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=891, - serialized_end=1064, -) - - -_REQBODY = _descriptor.Descriptor( - name='ReqBody', - full_name='im.oidb.cmd0x769.ReqBody', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='config_list', full_name='im.oidb.cmd0x769.ReqBody.config_list', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_info', full_name='im.oidb.cmd0x769.ReqBody.device_info', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='info', full_name='im.oidb.cmd0x769.ReqBody.info', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='province', full_name='im.oidb.cmd0x769.ReqBody.province', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='city', full_name='im.oidb.cmd0x769.ReqBody.city', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_debug_msg', full_name='im.oidb.cmd0x769.ReqBody.req_debug_msg', index=5, - number=6, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='query_uin_package_usage_req', full_name='im.oidb.cmd0x769.ReqBody.query_uin_package_usage_req', index=6, - number=101, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1067, - serialized_end=1326, -) - - -_RSPBODY = _descriptor.Descriptor( - name='RspBody', - full_name='im.oidb.cmd0x769.RspBody', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='im.oidb.cmd0x769.RspBody.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='config_list', full_name='im.oidb.cmd0x769.RspBody.config_list', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='query_uin_package_usage_rsp', full_name='im.oidb.cmd0x769.RspBody.query_uin_package_usage_rsp', index=2, - number=101, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1329, - serialized_end=1481, -) - - -_SCREEN = _descriptor.Descriptor( - name='Screen', - full_name='im.oidb.cmd0x769.Screen', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='model', full_name='im.oidb.cmd0x769.Screen.model', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='width', full_name='im.oidb.cmd0x769.Screen.width', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='height', full_name='im.oidb.cmd0x769.Screen.height', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='dpi', full_name='im.oidb.cmd0x769.Screen.dpi', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='multi_touch', full_name='im.oidb.cmd0x769.Screen.multi_touch', index=4, - number=5, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1483, - serialized_end=1571, -) - - -_STORAGE = _descriptor.Descriptor( - name='Storage', - full_name='im.oidb.cmd0x769.Storage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='builtin', full_name='im.oidb.cmd0x769.Storage.builtin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='external', full_name='im.oidb.cmd0x769.Storage.external', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1573, - serialized_end=1617, -) - - -_UINPACKAGEUSEDINFO = _descriptor.Descriptor( - name='UinPackageUsedInfo', - full_name='im.oidb.cmd0x769.UinPackageUsedInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='rule_id', full_name='im.oidb.cmd0x769.UinPackageUsedInfo.rule_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='author', full_name='im.oidb.cmd0x769.UinPackageUsedInfo.author', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='url', full_name='im.oidb.cmd0x769.UinPackageUsedInfo.url', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='uin_num', full_name='im.oidb.cmd0x769.UinPackageUsedInfo.uin_num', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1619, - serialized_end=1702, -) - -_CONFIG.fields_by_name['msg_content_list'].message_type = _CONTENT -_DEVICEINFO.fields_by_name['os'].message_type = _OS -_DEVICEINFO.fields_by_name['cpu'].message_type = _CPU -_DEVICEINFO.fields_by_name['memory'].message_type = _MEMORY -_DEVICEINFO.fields_by_name['storage'].message_type = _STORAGE -_DEVICEINFO.fields_by_name['screen'].message_type = _SCREEN -_DEVICEINFO.fields_by_name['camera'].message_type = _CAMERA -_QUERYUINPACKAGEUSAGERSP.fields_by_name['uin_package_used_list'].message_type = _UINPACKAGEUSEDINFO -_REQBODY.fields_by_name['config_list'].message_type = _CONFIGSEQ -_REQBODY.fields_by_name['device_info'].message_type = _DEVICEINFO -_REQBODY.fields_by_name['query_uin_package_usage_req'].message_type = _QUERYUINPACKAGEUSAGEREQ -_RSPBODY.fields_by_name['config_list'].message_type = _CONFIG -_RSPBODY.fields_by_name['query_uin_package_usage_rsp'].message_type = _QUERYUINPACKAGEUSAGERSP -DESCRIPTOR.message_types_by_name['CPU'] = _CPU -DESCRIPTOR.message_types_by_name['Camera'] = _CAMERA -DESCRIPTOR.message_types_by_name['Config'] = _CONFIG -DESCRIPTOR.message_types_by_name['ConfigSeq'] = _CONFIGSEQ -DESCRIPTOR.message_types_by_name['Content'] = _CONTENT -DESCRIPTOR.message_types_by_name['DeviceInfo'] = _DEVICEINFO -DESCRIPTOR.message_types_by_name['Memory'] = _MEMORY -DESCRIPTOR.message_types_by_name['OS'] = _OS -DESCRIPTOR.message_types_by_name['QueryUinPackageUsageReq'] = _QUERYUINPACKAGEUSAGEREQ -DESCRIPTOR.message_types_by_name['QueryUinPackageUsageRsp'] = _QUERYUINPACKAGEUSAGERSP -DESCRIPTOR.message_types_by_name['ReqBody'] = _REQBODY -DESCRIPTOR.message_types_by_name['RspBody'] = _RSPBODY -DESCRIPTOR.message_types_by_name['Screen'] = _SCREEN -DESCRIPTOR.message_types_by_name['Storage'] = _STORAGE -DESCRIPTOR.message_types_by_name['UinPackageUsedInfo'] = _UINPACKAGEUSEDINFO -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - +_CPU = DESCRIPTOR.message_types_by_name['CPU'] +_CAMERA = DESCRIPTOR.message_types_by_name['Camera'] +_CONFIG = DESCRIPTOR.message_types_by_name['Config'] +_CONFIGSEQ = DESCRIPTOR.message_types_by_name['ConfigSeq'] +_CONTENT = DESCRIPTOR.message_types_by_name['Content'] +_DEVICEINFO = DESCRIPTOR.message_types_by_name['DeviceInfo'] +_MEMORY = DESCRIPTOR.message_types_by_name['Memory'] +_OS = DESCRIPTOR.message_types_by_name['OS'] +_QUERYUINPACKAGEUSAGEREQ = DESCRIPTOR.message_types_by_name['QueryUinPackageUsageReq'] +_QUERYUINPACKAGEUSAGERSP = DESCRIPTOR.message_types_by_name['QueryUinPackageUsageRsp'] +_REQBODY = DESCRIPTOR.message_types_by_name['ReqBody'] +_RSPBODY = DESCRIPTOR.message_types_by_name['RspBody'] +_SCREEN = DESCRIPTOR.message_types_by_name['Screen'] +_STORAGE = DESCRIPTOR.message_types_by_name['Storage'] +_UINPACKAGEUSEDINFO = DESCRIPTOR.message_types_by_name['UinPackageUsedInfo'] CPU = _reflection.GeneratedProtocolMessageType('CPU', (_message.Message,), { 'DESCRIPTOR' : _CPU, '__module__' : 'cai.pb.im.oidb.cmd0x769.cmd0x769_pb2' @@ -947,5 +138,37 @@ }) _sym_db.RegisterMessage(UinPackageUsedInfo) - +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _CPU._serialized_start=60 + _CPU._serialized_end=114 + _CAMERA._serialized_start=116 + _CAMERA._serialized_end=175 + _CONFIG._serialized_start=178 + _CONFIG._serialized_end=311 + _CONFIGSEQ._serialized_start=313 + _CONFIGSEQ._serialized_end=355 + _CONTENT._serialized_start=357 + _CONTENT._serialized_end=418 + _DEVICEINFO._serialized_start=421 + _DEVICEINFO._serialized_end=703 + _MEMORY._serialized_start=705 + _MEMORY._serialized_end=745 + _OS._serialized_start=747 + _OS._serialized_end=824 + _QUERYUINPACKAGEUSAGEREQ._serialized_start=826 + _QUERYUINPACKAGEUSAGEREQ._serialized_end=888 + _QUERYUINPACKAGEUSAGERSP._serialized_start=891 + _QUERYUINPACKAGEUSAGERSP._serialized_end=1064 + _REQBODY._serialized_start=1067 + _REQBODY._serialized_end=1326 + _RSPBODY._serialized_start=1329 + _RSPBODY._serialized_end=1481 + _SCREEN._serialized_start=1483 + _SCREEN._serialized_end=1571 + _STORAGE._serialized_start=1573 + _STORAGE._serialized_end=1617 + _UINPACKAGEUSEDINFO._serialized_start=1619 + _UINPACKAGEUSEDINFO._serialized_end=1702 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/oidb/cmd0x769/cmd0x769_pb2.pyi b/cai/pb/im/oidb/cmd0x769/cmd0x769_pb2.pyi index 55f2a335..307d9ea0 100644 --- a/cai/pb/im/oidb/cmd0x769/cmd0x769_pb2.pyi +++ b/cai/pb/im/oidb/cmd0x769/cmd0x769_pb2.pyi @@ -33,105 +33,103 @@ from typing_extensions import ( ) -DESCRIPTOR: FileDescriptor = ... +DESCRIPTOR: FileDescriptor class CPU(Message): - DESCRIPTOR: Descriptor = ... + """tencent/im/oidb/cmd0x769/Oidb_0x769.java + + """ + DESCRIPTOR: Descriptor MODEL_FIELD_NUMBER: int CORES_FIELD_NUMBER: int FREQUENCY_FIELD_NUMBER: int - model: Text = ... - cores: int = ... - frequency: int = ... - + model: Text + cores: int + frequency: int def __init__(self, *, - model : Optional[Text] = ..., - cores : Optional[int] = ..., - frequency : Optional[int] = ..., + model: Optional[Text] = ..., + cores: Optional[int] = ..., + frequency: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"cores",b"cores",u"frequency",b"frequency",u"model",b"model"]) -> bool: ... - def ClearField(self, field_name: Literal[u"cores",b"cores",u"frequency",b"frequency",u"model",b"model"]) -> None: ... + def HasField(self, field_name: Literal["cores",b"cores","frequency",b"frequency","model",b"model"]) -> bool: ... + def ClearField(self, field_name: Literal["cores",b"cores","frequency",b"frequency","model",b"model"]) -> None: ... class Camera(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor PRIMARY_FIELD_NUMBER: int SECONDARY_FIELD_NUMBER: int FLASH_FIELD_NUMBER: int - primary: int = ... - secondary: int = ... - flash: bool = ... - + primary: int + secondary: int + flash: bool def __init__(self, *, - primary : Optional[int] = ..., - secondary : Optional[int] = ..., - flash : Optional[bool] = ..., + primary: Optional[int] = ..., + secondary: Optional[int] = ..., + flash: Optional[bool] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"flash",b"flash",u"primary",b"primary",u"secondary",b"secondary"]) -> bool: ... - def ClearField(self, field_name: Literal[u"flash",b"flash",u"primary",b"primary",u"secondary",b"secondary"]) -> None: ... + def HasField(self, field_name: Literal["flash",b"flash","primary",b"primary","secondary",b"secondary"]) -> bool: ... + def ClearField(self, field_name: Literal["flash",b"flash","primary",b"primary","secondary",b"secondary"]) -> None: ... class Config(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TYPE_FIELD_NUMBER: int VERSION_FIELD_NUMBER: int CONTENT_LIST_FIELD_NUMBER: int DEBUG_MSG_FIELD_NUMBER: int MSG_CONTENT_LIST_FIELD_NUMBER: int - type: int = ... - version: int = ... - content_list: RepeatedScalarFieldContainer[Text] = ... - debug_msg: Text = ... - + type: int + version: int + @property + def content_list(self) -> RepeatedScalarFieldContainer[Text]: ... + debug_msg: Text @property def msg_content_list(self) -> RepeatedCompositeFieldContainer[Content]: ... - def __init__(self, *, - type : Optional[int] = ..., - version : Optional[int] = ..., - content_list : Optional[Iterable[Text]] = ..., - debug_msg : Optional[Text] = ..., - msg_content_list : Optional[Iterable[Content]] = ..., + type: Optional[int] = ..., + version: Optional[int] = ..., + content_list: Optional[Iterable[Text]] = ..., + debug_msg: Optional[Text] = ..., + msg_content_list: Optional[Iterable[Content]] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"debug_msg",b"debug_msg",u"type",b"type",u"version",b"version"]) -> bool: ... - def ClearField(self, field_name: Literal[u"content_list",b"content_list",u"debug_msg",b"debug_msg",u"msg_content_list",b"msg_content_list",u"type",b"type",u"version",b"version"]) -> None: ... + def HasField(self, field_name: Literal["debug_msg",b"debug_msg","type",b"type","version",b"version"]) -> bool: ... + def ClearField(self, field_name: Literal["content_list",b"content_list","debug_msg",b"debug_msg","msg_content_list",b"msg_content_list","type",b"type","version",b"version"]) -> None: ... class ConfigSeq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TYPE_FIELD_NUMBER: int VERSION_FIELD_NUMBER: int - type: int = ... - version: int = ... - + type: int + version: int def __init__(self, *, - type : Optional[int] = ..., - version : Optional[int] = ..., + type: Optional[int] = ..., + version: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"type",b"type",u"version",b"version"]) -> bool: ... - def ClearField(self, field_name: Literal[u"type",b"type",u"version",b"version"]) -> None: ... + def HasField(self, field_name: Literal["type",b"type","version",b"version"]) -> bool: ... + def ClearField(self, field_name: Literal["type",b"type","version",b"version"]) -> None: ... class Content(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TASK_ID_FIELD_NUMBER: int COMPRESS_FIELD_NUMBER: int CONTENT_FIELD_NUMBER: int - task_id: int = ... - compress: int = ... - content: bytes = ... - + task_id: int + compress: int + content: bytes def __init__(self, *, - task_id : Optional[int] = ..., - compress : Optional[int] = ..., - content : Optional[bytes] = ..., + task_id: Optional[int] = ..., + compress: Optional[int] = ..., + content: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"compress",b"compress",u"content",b"content",u"task_id",b"task_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"compress",b"compress",u"content",b"content",u"task_id",b"task_id"]) -> None: ... + def HasField(self, field_name: Literal["compress",b"compress","content",b"content","task_id",b"task_id"]) -> bool: ... + def ClearField(self, field_name: Literal["compress",b"compress","content",b"content","task_id",b"task_id"]) -> None: ... class DeviceInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor BRAND_FIELD_NUMBER: int MODEL_FIELD_NUMBER: int OS_FIELD_NUMBER: int @@ -140,123 +138,111 @@ class DeviceInfo(Message): STORAGE_FIELD_NUMBER: int SCREEN_FIELD_NUMBER: int CAMERA_FIELD_NUMBER: int - brand: Text = ... - model: Text = ... - + brand: Text + model: Text @property def os(self) -> OS: ... - @property def cpu(self) -> CPU: ... - @property def memory(self) -> Memory: ... - @property def storage(self) -> Storage: ... - @property def screen(self) -> Screen: ... - @property def camera(self) -> Camera: ... - def __init__(self, *, - brand : Optional[Text] = ..., - model : Optional[Text] = ..., - os : Optional[OS] = ..., - cpu : Optional[CPU] = ..., - memory : Optional[Memory] = ..., - storage : Optional[Storage] = ..., - screen : Optional[Screen] = ..., - camera : Optional[Camera] = ..., + brand: Optional[Text] = ..., + model: Optional[Text] = ..., + os: Optional[OS] = ..., + cpu: Optional[CPU] = ..., + memory: Optional[Memory] = ..., + storage: Optional[Storage] = ..., + screen: Optional[Screen] = ..., + camera: Optional[Camera] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"brand",b"brand",u"camera",b"camera",u"cpu",b"cpu",u"memory",b"memory",u"model",b"model",u"os",b"os",u"screen",b"screen",u"storage",b"storage"]) -> bool: ... - def ClearField(self, field_name: Literal[u"brand",b"brand",u"camera",b"camera",u"cpu",b"cpu",u"memory",b"memory",u"model",b"model",u"os",b"os",u"screen",b"screen",u"storage",b"storage"]) -> None: ... + def HasField(self, field_name: Literal["brand",b"brand","camera",b"camera","cpu",b"cpu","memory",b"memory","model",b"model","os",b"os","screen",b"screen","storage",b"storage"]) -> bool: ... + def ClearField(self, field_name: Literal["brand",b"brand","camera",b"camera","cpu",b"cpu","memory",b"memory","model",b"model","os",b"os","screen",b"screen","storage",b"storage"]) -> None: ... class Memory(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TOTAL_FIELD_NUMBER: int PROCESS_FIELD_NUMBER: int - total: int = ... - process: int = ... - + total: int + process: int def __init__(self, *, - total : Optional[int] = ..., - process : Optional[int] = ..., + total: Optional[int] = ..., + process: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"process",b"process",u"total",b"total"]) -> bool: ... - def ClearField(self, field_name: Literal[u"process",b"process",u"total",b"total"]) -> None: ... + def HasField(self, field_name: Literal["process",b"process","total",b"total"]) -> bool: ... + def ClearField(self, field_name: Literal["process",b"process","total",b"total"]) -> None: ... class OS(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TYPE_FIELD_NUMBER: int VERSION_FIELD_NUMBER: int SDK_FIELD_NUMBER: int KERNEL_FIELD_NUMBER: int ROM_FIELD_NUMBER: int - type: int = ... - version: Text = ... - sdk: Text = ... - kernel: Text = ... - rom: Text = ... - + type: int + version: Text + sdk: Text + kernel: Text + rom: Text def __init__(self, *, - type : Optional[int] = ..., - version : Optional[Text] = ..., - sdk : Optional[Text] = ..., - kernel : Optional[Text] = ..., - rom : Optional[Text] = ..., + type: Optional[int] = ..., + version: Optional[Text] = ..., + sdk: Optional[Text] = ..., + kernel: Optional[Text] = ..., + rom: Optional[Text] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"kernel",b"kernel",u"rom",b"rom",u"sdk",b"sdk",u"type",b"type",u"version",b"version"]) -> bool: ... - def ClearField(self, field_name: Literal[u"kernel",b"kernel",u"rom",b"rom",u"sdk",b"sdk",u"type",b"type",u"version",b"version"]) -> None: ... + def HasField(self, field_name: Literal["kernel",b"kernel","rom",b"rom","sdk",b"sdk","type",b"type","version",b"version"]) -> bool: ... + def ClearField(self, field_name: Literal["kernel",b"kernel","rom",b"rom","sdk",b"sdk","type",b"type","version",b"version"]) -> None: ... class QueryUinPackageUsageReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TYPE_FIELD_NUMBER: int UIN_FILE_SIZE_FIELD_NUMBER: int - type: int = ... - uin_file_size: int = ... - + type: int + uin_file_size: int def __init__(self, *, - type : Optional[int] = ..., - uin_file_size : Optional[int] = ..., + type: Optional[int] = ..., + uin_file_size: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"type",b"type",u"uin_file_size",b"uin_file_size"]) -> bool: ... - def ClearField(self, field_name: Literal[u"type",b"type",u"uin_file_size",b"uin_file_size"]) -> None: ... + def HasField(self, field_name: Literal["type",b"type","uin_file_size",b"uin_file_size"]) -> bool: ... + def ClearField(self, field_name: Literal["type",b"type","uin_file_size",b"uin_file_size"]) -> None: ... class QueryUinPackageUsageRsp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor STATUS_FIELD_NUMBER: int LEFT_UIN_NUM_FIELD_NUMBER: int MAX_UIN_NUM_FIELD_NUMBER: int PROPORTION_FIELD_NUMBER: int UIN_PACKAGE_USED_LIST_FIELD_NUMBER: int - status: int = ... - left_uin_num: int = ... - max_uin_num: int = ... - proportion: int = ... - + status: int + left_uin_num: int + max_uin_num: int + proportion: int @property def uin_package_used_list(self) -> RepeatedCompositeFieldContainer[UinPackageUsedInfo]: ... - def __init__(self, *, - status : Optional[int] = ..., - left_uin_num : Optional[int] = ..., - max_uin_num : Optional[int] = ..., - proportion : Optional[int] = ..., - uin_package_used_list : Optional[Iterable[UinPackageUsedInfo]] = ..., + status: Optional[int] = ..., + left_uin_num: Optional[int] = ..., + max_uin_num: Optional[int] = ..., + proportion: Optional[int] = ..., + uin_package_used_list: Optional[Iterable[UinPackageUsedInfo]] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"left_uin_num",b"left_uin_num",u"max_uin_num",b"max_uin_num",u"proportion",b"proportion",u"status",b"status"]) -> bool: ... - def ClearField(self, field_name: Literal[u"left_uin_num",b"left_uin_num",u"max_uin_num",b"max_uin_num",u"proportion",b"proportion",u"status",b"status",u"uin_package_used_list",b"uin_package_used_list"]) -> None: ... + def HasField(self, field_name: Literal["left_uin_num",b"left_uin_num","max_uin_num",b"max_uin_num","proportion",b"proportion","status",b"status"]) -> bool: ... + def ClearField(self, field_name: Literal["left_uin_num",b"left_uin_num","max_uin_num",b"max_uin_num","proportion",b"proportion","status",b"status","uin_package_used_list",b"uin_package_used_list"]) -> None: ... class ReqBody(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor CONFIG_LIST_FIELD_NUMBER: int DEVICE_INFO_FIELD_NUMBER: int INFO_FIELD_NUMBER: int @@ -264,111 +250,101 @@ class ReqBody(Message): CITY_FIELD_NUMBER: int REQ_DEBUG_MSG_FIELD_NUMBER: int QUERY_UIN_PACKAGE_USAGE_REQ_FIELD_NUMBER: int - info: Text = ... - province: Text = ... - city: Text = ... - req_debug_msg: int = ... - @property def config_list(self) -> RepeatedCompositeFieldContainer[ConfigSeq]: ... - @property def device_info(self) -> DeviceInfo: ... - + info: Text + province: Text + city: Text + req_debug_msg: int @property def query_uin_package_usage_req(self) -> QueryUinPackageUsageReq: ... - def __init__(self, *, - config_list : Optional[Iterable[ConfigSeq]] = ..., - device_info : Optional[DeviceInfo] = ..., - info : Optional[Text] = ..., - province : Optional[Text] = ..., - city : Optional[Text] = ..., - req_debug_msg : Optional[int] = ..., - query_uin_package_usage_req : Optional[QueryUinPackageUsageReq] = ..., + config_list: Optional[Iterable[ConfigSeq]] = ..., + device_info: Optional[DeviceInfo] = ..., + info: Optional[Text] = ..., + province: Optional[Text] = ..., + city: Optional[Text] = ..., + req_debug_msg: Optional[int] = ..., + query_uin_package_usage_req: Optional[QueryUinPackageUsageReq] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"city",b"city",u"device_info",b"device_info",u"info",b"info",u"province",b"province",u"query_uin_package_usage_req",b"query_uin_package_usage_req",u"req_debug_msg",b"req_debug_msg"]) -> bool: ... - def ClearField(self, field_name: Literal[u"city",b"city",u"config_list",b"config_list",u"device_info",b"device_info",u"info",b"info",u"province",b"province",u"query_uin_package_usage_req",b"query_uin_package_usage_req",u"req_debug_msg",b"req_debug_msg"]) -> None: ... + def HasField(self, field_name: Literal["city",b"city","device_info",b"device_info","info",b"info","province",b"province","query_uin_package_usage_req",b"query_uin_package_usage_req","req_debug_msg",b"req_debug_msg"]) -> bool: ... + def ClearField(self, field_name: Literal["city",b"city","config_list",b"config_list","device_info",b"device_info","info",b"info","province",b"province","query_uin_package_usage_req",b"query_uin_package_usage_req","req_debug_msg",b"req_debug_msg"]) -> None: ... class RspBody(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int CONFIG_LIST_FIELD_NUMBER: int QUERY_UIN_PACKAGE_USAGE_RSP_FIELD_NUMBER: int - result: int = ... - + result: int @property def config_list(self) -> RepeatedCompositeFieldContainer[Config]: ... - @property def query_uin_package_usage_rsp(self) -> QueryUinPackageUsageRsp: ... - def __init__(self, *, - result : Optional[int] = ..., - config_list : Optional[Iterable[Config]] = ..., - query_uin_package_usage_rsp : Optional[QueryUinPackageUsageRsp] = ..., + result: Optional[int] = ..., + config_list: Optional[Iterable[Config]] = ..., + query_uin_package_usage_rsp: Optional[QueryUinPackageUsageRsp] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"query_uin_package_usage_rsp",b"query_uin_package_usage_rsp",u"result",b"result"]) -> bool: ... - def ClearField(self, field_name: Literal[u"config_list",b"config_list",u"query_uin_package_usage_rsp",b"query_uin_package_usage_rsp",u"result",b"result"]) -> None: ... + def HasField(self, field_name: Literal["query_uin_package_usage_rsp",b"query_uin_package_usage_rsp","result",b"result"]) -> bool: ... + def ClearField(self, field_name: Literal["config_list",b"config_list","query_uin_package_usage_rsp",b"query_uin_package_usage_rsp","result",b"result"]) -> None: ... class Screen(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor MODEL_FIELD_NUMBER: int WIDTH_FIELD_NUMBER: int HEIGHT_FIELD_NUMBER: int DPI_FIELD_NUMBER: int MULTI_TOUCH_FIELD_NUMBER: int - model: Text = ... - width: int = ... - height: int = ... - dpi: int = ... - multi_touch: bool = ... - + model: Text + width: int + height: int + dpi: int + multi_touch: bool def __init__(self, *, - model : Optional[Text] = ..., - width : Optional[int] = ..., - height : Optional[int] = ..., - dpi : Optional[int] = ..., - multi_touch : Optional[bool] = ..., + model: Optional[Text] = ..., + width: Optional[int] = ..., + height: Optional[int] = ..., + dpi: Optional[int] = ..., + multi_touch: Optional[bool] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"dpi",b"dpi",u"height",b"height",u"model",b"model",u"multi_touch",b"multi_touch",u"width",b"width"]) -> bool: ... - def ClearField(self, field_name: Literal[u"dpi",b"dpi",u"height",b"height",u"model",b"model",u"multi_touch",b"multi_touch",u"width",b"width"]) -> None: ... + def HasField(self, field_name: Literal["dpi",b"dpi","height",b"height","model",b"model","multi_touch",b"multi_touch","width",b"width"]) -> bool: ... + def ClearField(self, field_name: Literal["dpi",b"dpi","height",b"height","model",b"model","multi_touch",b"multi_touch","width",b"width"]) -> None: ... class Storage(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor BUILTIN_FIELD_NUMBER: int EXTERNAL_FIELD_NUMBER: int - builtin: int = ... - external: int = ... - + builtin: int + external: int def __init__(self, *, - builtin : Optional[int] = ..., - external : Optional[int] = ..., + builtin: Optional[int] = ..., + external: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"builtin",b"builtin",u"external",b"external"]) -> bool: ... - def ClearField(self, field_name: Literal[u"builtin",b"builtin",u"external",b"external"]) -> None: ... + def HasField(self, field_name: Literal["builtin",b"builtin","external",b"external"]) -> bool: ... + def ClearField(self, field_name: Literal["builtin",b"builtin","external",b"external"]) -> None: ... class UinPackageUsedInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RULE_ID_FIELD_NUMBER: int AUTHOR_FIELD_NUMBER: int URL_FIELD_NUMBER: int UIN_NUM_FIELD_NUMBER: int - rule_id: int = ... - author: Text = ... - url: Text = ... - uin_num: int = ... - + rule_id: int + author: Text + url: Text + uin_num: int def __init__(self, *, - rule_id : Optional[int] = ..., - author : Optional[Text] = ..., - url : Optional[Text] = ..., - uin_num : Optional[int] = ..., + rule_id: Optional[int] = ..., + author: Optional[Text] = ..., + url: Optional[Text] = ..., + uin_num: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"author",b"author",u"rule_id",b"rule_id",u"uin_num",b"uin_num",u"url",b"url"]) -> bool: ... - def ClearField(self, field_name: Literal[u"author",b"author",u"rule_id",b"rule_id",u"uin_num",b"uin_num",u"url",b"url"]) -> None: ... + def HasField(self, field_name: Literal["author",b"author","rule_id",b"rule_id","uin_num",b"uin_num","url",b"url"]) -> bool: ... + def ClearField(self, field_name: Literal["author",b"author","rule_id",b"rule_id","uin_num",b"uin_num","url",b"url"]) -> None: ... diff --git a/cai/pb/im/oidb/cmd0xd50/cmd0xd50_pb2.py b/cai/pb/im/oidb/cmd0xd50/cmd0xd50_pb2.py index e4a6fb27..51251c5c 100644 --- a/cai/pb/im/oidb/cmd0xd50/cmd0xd50_pb2.py +++ b/cai/pb/im/oidb/cmd0xd50/cmd0xd50_pb2.py @@ -3,6 +3,7 @@ # source: cai/pb/im/oidb/cmd0xd50/cmd0xd50.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -13,544 +14,14 @@ -DESCRIPTOR = _descriptor.FileDescriptor( - name='cai/pb/im/oidb/cmd0xd50/cmd0xd50.proto', - package='im.oidb.cmd0xd50', - syntax='proto2', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n&cai/pb/im/oidb/cmd0xd50/cmd0xd50.proto\x12\x10im.oidb.cmd0xd50\"\xe8\x04\n\rExtSnsFrdData\x12\x0f\n\x07\x66rd_uin\x18\x01 \x01(\x04\x12\x0f\n\x06lovers\x18\xfaU \x01(\x0c\x12\x14\n\nconfidante\x18\x8a\xa4\x01 \x01(\x0c\x12\x0f\n\x05\x62uddy\x18\x9a\xf2\x01 \x01(\x0c\x12\x12\n\x08\x66rd_tree\x18\xa9\xc0\x02 \x01(\x0c\x12\x0e\n\x04\x63hat\x18\xb9\x8e\x03 \x01(\x0c\x12\x10\n\x06praise\x18\xc9\xdc\x03 \x01(\x0c\x12\x14\n\nqzone_love\x18\xd9\xaa\x04 \x01(\x0c\x12\x15\n\x0bqzone_house\x18\xe9\xf8\x04 \x01(\x0c\x12\x16\n\x0cmusic_switch\x18\xf9\xc6\x05 \x01(\x0c\x12\x1f\n\x15mutualmark_alienation\x18\x89\x95\x06 \x01(\x0c\x12\x18\n\x0eunread_message\x18\x99\xe3\x06 \x01(\x0c\x12\x0e\n\x04\x62oat\x18\xa9\xb1\x07 \x01(\x0c\x12\x13\n\tclose_frd\x18\xb9\xff\x07 \x01(\x0c\x12\x1a\n\x10mutualmark_score\x18\xc9\xcd\x08 \x01(\x0c\x12\x16\n\x0cksing_switch\x18\xd9\x9b\t \x01(\x0c\x12\x13\n\tlbs_share\x18\x89\x86\x0b \x01(\x0c\x12\x18\n\x0e\x64ont_forget_me\x18\xb9\xf0\x0c \x01(\x0c\x12)\n\x1fmy_online_status_visible_to_frd\x18\xc9\xbe\r \x01(\x0c\x12)\n\x1f\x66rd_online_status_visible_to_me\x18\xca\xbe\r \x01(\x0c\x12\x18\n\x0evisitor_record\x18\xd9\x8c\x0e \x01(\x0c\x12\x1a\n\x10\x66rd_steal_record\x18\xda\x8c\x0e \x01(\x0c\x12\x19\n\x0fmy_steal_record\x18\xdb\x8c\x0e \x01(\x0c\x12\x10\n\x06\x61vgame\x18\xe9\xda\x0e \x01(\x0c\x12\x17\n\raio_quick_app\x18\xf9\xa8\x0f \x01(\x0c\"!\n\x11KSingRelationInfo\x12\x0c\n\x04\x66lag\x18\x01 \x01(\r\"\xac\x06\n\x07ReqBody\x12\r\n\x05\x61ppid\x18\x01 \x01(\x04\x12\x14\n\x0cmax_pkg_size\x18\x02 \x01(\r\x12\x12\n\nstart_time\x18\x03 \x01(\r\x12\x13\n\x0bstart_index\x18\x04 \x01(\r\x12\x0f\n\x07req_num\x18\x05 \x01(\r\x12\x10\n\x08uin_list\x18\x06 \x03(\x04\x12\x13\n\nreq_lovers\x18\xfaU \x01(\r\x12\x18\n\x0ereq_confidante\x18\x8a\xa4\x01 \x01(\r\x12\x13\n\treq_buddy\x18\x9a\xf2\x01 \x01(\r\x12\x16\n\x0creq_frd_tree\x18\xa9\xc0\x02 \x01(\r\x12\x12\n\x08req_chat\x18\xb9\x8e\x03 \x01(\r\x12\x14\n\nreq_praise\x18\xc9\xdc\x03 \x01(\r\x12\x18\n\x0ereq_qzone_love\x18\xd9\xaa\x04 \x01(\r\x12\x19\n\x0freq_qzone_house\x18\xe9\xf8\x04 \x01(\r\x12\x1a\n\x10req_music_switch\x18\xf9\xc6\x05 \x01(\r\x12#\n\x19req_mutualmark_alienation\x18\x89\x95\x06 \x01(\r\x12\x1c\n\x12req_unread_message\x18\x99\xe3\x06 \x01(\r\x12\x12\n\x08req_boat\x18\xa9\xb1\x07 \x01(\r\x12\x17\n\rreq_close_frd\x18\xb9\xff\x07 \x01(\r\x12\x1e\n\x14req_mutualmark_score\x18\xc9\xcd\x08 \x01(\r\x12\x1a\n\x10req_ksing_switch\x18\xd9\x9b\t \x01(\r\x12!\n\x17req_mutualmark_lbsshare\x18\x89\x86\x0b \x01(\r\x12\x1c\n\x12req_dont_forget_me\x18\xb9\xf0\x0c \x01(\r\x12-\n#req_my_online_status_visible_to_frd\x18\xc9\xbe\r \x01(\r\x12-\n#req_frd_online_status_visible_to_me\x18\xca\xbe\r \x01(\r\x12\x1c\n\x12req_visitor_record\x18\xd9\x8c\x0e \x01(\r\x12\x1e\n\x14req_frd_steal_record\x18\xda\x8c\x0e \x01(\r\x12\x1d\n\x13req_my_steal_record\x18\xdb\x8c\x0e \x01(\r\x12\x14\n\nreq_avgame\x18\xe9\xda\x0e \x01(\r\x12\x1b\n\x11req_aio_quick_app\x18\xf9\xa8\x0f \x01(\r\"z\n\x07RspBody\x12\x34\n\x0bupdate_data\x18\x01 \x03(\x0b\x32\x1f.im.oidb.cmd0xd50.ExtSnsFrdData\x12\x0c\n\x04over\x18\x0b \x01(\r\x12\x12\n\nnext_start\x18\x0c \x01(\r\x12\x17\n\x0funfinished_uins\x18\r \x03(\x04' -) +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&cai/pb/im/oidb/cmd0xd50/cmd0xd50.proto\x12\x10im.oidb.cmd0xd50\"\xe8\x04\n\rExtSnsFrdData\x12\x0f\n\x07\x66rd_uin\x18\x01 \x01(\x04\x12\x0f\n\x06lovers\x18\xfaU \x01(\x0c\x12\x14\n\nconfidante\x18\x8a\xa4\x01 \x01(\x0c\x12\x0f\n\x05\x62uddy\x18\x9a\xf2\x01 \x01(\x0c\x12\x12\n\x08\x66rd_tree\x18\xa9\xc0\x02 \x01(\x0c\x12\x0e\n\x04\x63hat\x18\xb9\x8e\x03 \x01(\x0c\x12\x10\n\x06praise\x18\xc9\xdc\x03 \x01(\x0c\x12\x14\n\nqzone_love\x18\xd9\xaa\x04 \x01(\x0c\x12\x15\n\x0bqzone_house\x18\xe9\xf8\x04 \x01(\x0c\x12\x16\n\x0cmusic_switch\x18\xf9\xc6\x05 \x01(\x0c\x12\x1f\n\x15mutualmark_alienation\x18\x89\x95\x06 \x01(\x0c\x12\x18\n\x0eunread_message\x18\x99\xe3\x06 \x01(\x0c\x12\x0e\n\x04\x62oat\x18\xa9\xb1\x07 \x01(\x0c\x12\x13\n\tclose_frd\x18\xb9\xff\x07 \x01(\x0c\x12\x1a\n\x10mutualmark_score\x18\xc9\xcd\x08 \x01(\x0c\x12\x16\n\x0cksing_switch\x18\xd9\x9b\t \x01(\x0c\x12\x13\n\tlbs_share\x18\x89\x86\x0b \x01(\x0c\x12\x18\n\x0e\x64ont_forget_me\x18\xb9\xf0\x0c \x01(\x0c\x12)\n\x1fmy_online_status_visible_to_frd\x18\xc9\xbe\r \x01(\x0c\x12)\n\x1f\x66rd_online_status_visible_to_me\x18\xca\xbe\r \x01(\x0c\x12\x18\n\x0evisitor_record\x18\xd9\x8c\x0e \x01(\x0c\x12\x1a\n\x10\x66rd_steal_record\x18\xda\x8c\x0e \x01(\x0c\x12\x19\n\x0fmy_steal_record\x18\xdb\x8c\x0e \x01(\x0c\x12\x10\n\x06\x61vgame\x18\xe9\xda\x0e \x01(\x0c\x12\x17\n\raio_quick_app\x18\xf9\xa8\x0f \x01(\x0c\"!\n\x11KSingRelationInfo\x12\x0c\n\x04\x66lag\x18\x01 \x01(\r\"\xac\x06\n\x07ReqBody\x12\r\n\x05\x61ppid\x18\x01 \x01(\x04\x12\x14\n\x0cmax_pkg_size\x18\x02 \x01(\r\x12\x12\n\nstart_time\x18\x03 \x01(\r\x12\x13\n\x0bstart_index\x18\x04 \x01(\r\x12\x0f\n\x07req_num\x18\x05 \x01(\r\x12\x10\n\x08uin_list\x18\x06 \x03(\x04\x12\x13\n\nreq_lovers\x18\xfaU \x01(\r\x12\x18\n\x0ereq_confidante\x18\x8a\xa4\x01 \x01(\r\x12\x13\n\treq_buddy\x18\x9a\xf2\x01 \x01(\r\x12\x16\n\x0creq_frd_tree\x18\xa9\xc0\x02 \x01(\r\x12\x12\n\x08req_chat\x18\xb9\x8e\x03 \x01(\r\x12\x14\n\nreq_praise\x18\xc9\xdc\x03 \x01(\r\x12\x18\n\x0ereq_qzone_love\x18\xd9\xaa\x04 \x01(\r\x12\x19\n\x0freq_qzone_house\x18\xe9\xf8\x04 \x01(\r\x12\x1a\n\x10req_music_switch\x18\xf9\xc6\x05 \x01(\r\x12#\n\x19req_mutualmark_alienation\x18\x89\x95\x06 \x01(\r\x12\x1c\n\x12req_unread_message\x18\x99\xe3\x06 \x01(\r\x12\x12\n\x08req_boat\x18\xa9\xb1\x07 \x01(\r\x12\x17\n\rreq_close_frd\x18\xb9\xff\x07 \x01(\r\x12\x1e\n\x14req_mutualmark_score\x18\xc9\xcd\x08 \x01(\r\x12\x1a\n\x10req_ksing_switch\x18\xd9\x9b\t \x01(\r\x12!\n\x17req_mutualmark_lbsshare\x18\x89\x86\x0b \x01(\r\x12\x1c\n\x12req_dont_forget_me\x18\xb9\xf0\x0c \x01(\r\x12-\n#req_my_online_status_visible_to_frd\x18\xc9\xbe\r \x01(\r\x12-\n#req_frd_online_status_visible_to_me\x18\xca\xbe\r \x01(\r\x12\x1c\n\x12req_visitor_record\x18\xd9\x8c\x0e \x01(\r\x12\x1e\n\x14req_frd_steal_record\x18\xda\x8c\x0e \x01(\r\x12\x1d\n\x13req_my_steal_record\x18\xdb\x8c\x0e \x01(\r\x12\x14\n\nreq_avgame\x18\xe9\xda\x0e \x01(\r\x12\x1b\n\x11req_aio_quick_app\x18\xf9\xa8\x0f \x01(\r\"z\n\x07RspBody\x12\x34\n\x0bupdate_data\x18\x01 \x03(\x0b\x32\x1f.im.oidb.cmd0xd50.ExtSnsFrdData\x12\x0c\n\x04over\x18\x0b \x01(\r\x12\x12\n\nnext_start\x18\x0c \x01(\r\x12\x17\n\x0funfinished_uins\x18\r \x03(\x04') - -_EXTSNSFRDDATA = _descriptor.Descriptor( - name='ExtSnsFrdData', - full_name='im.oidb.cmd0xd50.ExtSnsFrdData', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='frd_uin', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.frd_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='lovers', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.lovers', index=1, - number=11002, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='confidante', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.confidante', index=2, - number=21002, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='buddy', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.buddy', index=3, - number=31002, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='frd_tree', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.frd_tree', index=4, - number=41001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='chat', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.chat', index=5, - number=51001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='praise', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.praise', index=6, - number=61001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='qzone_love', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.qzone_love', index=7, - number=71001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='qzone_house', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.qzone_house', index=8, - number=81001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='music_switch', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.music_switch', index=9, - number=91001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='mutualmark_alienation', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.mutualmark_alienation', index=10, - number=101001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='unread_message', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.unread_message', index=11, - number=111001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='boat', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.boat', index=12, - number=121001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='close_frd', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.close_frd', index=13, - number=131001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='mutualmark_score', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.mutualmark_score', index=14, - number=141001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ksing_switch', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.ksing_switch', index=15, - number=151001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='lbs_share', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.lbs_share', index=16, - number=181001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='dont_forget_me', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.dont_forget_me', index=17, - number=211001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='my_online_status_visible_to_frd', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.my_online_status_visible_to_frd', index=18, - number=221001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='frd_online_status_visible_to_me', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.frd_online_status_visible_to_me', index=19, - number=221002, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='visitor_record', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.visitor_record', index=20, - number=231001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='frd_steal_record', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.frd_steal_record', index=21, - number=231002, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='my_steal_record', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.my_steal_record', index=22, - number=231003, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='avgame', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.avgame', index=23, - number=241001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='aio_quick_app', full_name='im.oidb.cmd0xd50.ExtSnsFrdData.aio_quick_app', index=24, - number=251001, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=61, - serialized_end=677, -) - - -_KSINGRELATIONINFO = _descriptor.Descriptor( - name='KSingRelationInfo', - full_name='im.oidb.cmd0xd50.KSingRelationInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='flag', full_name='im.oidb.cmd0xd50.KSingRelationInfo.flag', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=679, - serialized_end=712, -) - - -_REQBODY = _descriptor.Descriptor( - name='ReqBody', - full_name='im.oidb.cmd0xd50.ReqBody', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='appid', full_name='im.oidb.cmd0xd50.ReqBody.appid', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='max_pkg_size', full_name='im.oidb.cmd0xd50.ReqBody.max_pkg_size', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='start_time', full_name='im.oidb.cmd0xd50.ReqBody.start_time', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='start_index', full_name='im.oidb.cmd0xd50.ReqBody.start_index', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_num', full_name='im.oidb.cmd0xd50.ReqBody.req_num', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='uin_list', full_name='im.oidb.cmd0xd50.ReqBody.uin_list', index=5, - number=6, type=4, cpp_type=4, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_lovers', full_name='im.oidb.cmd0xd50.ReqBody.req_lovers', index=6, - number=11002, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_confidante', full_name='im.oidb.cmd0xd50.ReqBody.req_confidante', index=7, - number=21002, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_buddy', full_name='im.oidb.cmd0xd50.ReqBody.req_buddy', index=8, - number=31002, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_frd_tree', full_name='im.oidb.cmd0xd50.ReqBody.req_frd_tree', index=9, - number=41001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_chat', full_name='im.oidb.cmd0xd50.ReqBody.req_chat', index=10, - number=51001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_praise', full_name='im.oidb.cmd0xd50.ReqBody.req_praise', index=11, - number=61001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_qzone_love', full_name='im.oidb.cmd0xd50.ReqBody.req_qzone_love', index=12, - number=71001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_qzone_house', full_name='im.oidb.cmd0xd50.ReqBody.req_qzone_house', index=13, - number=81001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_music_switch', full_name='im.oidb.cmd0xd50.ReqBody.req_music_switch', index=14, - number=91001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_mutualmark_alienation', full_name='im.oidb.cmd0xd50.ReqBody.req_mutualmark_alienation', index=15, - number=101001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_unread_message', full_name='im.oidb.cmd0xd50.ReqBody.req_unread_message', index=16, - number=111001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_boat', full_name='im.oidb.cmd0xd50.ReqBody.req_boat', index=17, - number=121001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_close_frd', full_name='im.oidb.cmd0xd50.ReqBody.req_close_frd', index=18, - number=131001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_mutualmark_score', full_name='im.oidb.cmd0xd50.ReqBody.req_mutualmark_score', index=19, - number=141001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_ksing_switch', full_name='im.oidb.cmd0xd50.ReqBody.req_ksing_switch', index=20, - number=151001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_mutualmark_lbsshare', full_name='im.oidb.cmd0xd50.ReqBody.req_mutualmark_lbsshare', index=21, - number=181001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_dont_forget_me', full_name='im.oidb.cmd0xd50.ReqBody.req_dont_forget_me', index=22, - number=211001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_my_online_status_visible_to_frd', full_name='im.oidb.cmd0xd50.ReqBody.req_my_online_status_visible_to_frd', index=23, - number=221001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_frd_online_status_visible_to_me', full_name='im.oidb.cmd0xd50.ReqBody.req_frd_online_status_visible_to_me', index=24, - number=221002, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_visitor_record', full_name='im.oidb.cmd0xd50.ReqBody.req_visitor_record', index=25, - number=231001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_frd_steal_record', full_name='im.oidb.cmd0xd50.ReqBody.req_frd_steal_record', index=26, - number=231002, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_my_steal_record', full_name='im.oidb.cmd0xd50.ReqBody.req_my_steal_record', index=27, - number=231003, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_avgame', full_name='im.oidb.cmd0xd50.ReqBody.req_avgame', index=28, - number=241001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_aio_quick_app', full_name='im.oidb.cmd0xd50.ReqBody.req_aio_quick_app', index=29, - number=251001, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=715, - serialized_end=1527, -) - - -_RSPBODY = _descriptor.Descriptor( - name='RspBody', - full_name='im.oidb.cmd0xd50.RspBody', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='update_data', full_name='im.oidb.cmd0xd50.RspBody.update_data', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='over', full_name='im.oidb.cmd0xd50.RspBody.over', index=1, - number=11, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='next_start', full_name='im.oidb.cmd0xd50.RspBody.next_start', index=2, - number=12, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='unfinished_uins', full_name='im.oidb.cmd0xd50.RspBody.unfinished_uins', index=3, - number=13, type=4, cpp_type=4, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1529, - serialized_end=1651, -) - -_RSPBODY.fields_by_name['update_data'].message_type = _EXTSNSFRDDATA -DESCRIPTOR.message_types_by_name['ExtSnsFrdData'] = _EXTSNSFRDDATA -DESCRIPTOR.message_types_by_name['KSingRelationInfo'] = _KSINGRELATIONINFO -DESCRIPTOR.message_types_by_name['ReqBody'] = _REQBODY -DESCRIPTOR.message_types_by_name['RspBody'] = _RSPBODY -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - +_EXTSNSFRDDATA = DESCRIPTOR.message_types_by_name['ExtSnsFrdData'] +_KSINGRELATIONINFO = DESCRIPTOR.message_types_by_name['KSingRelationInfo'] +_REQBODY = DESCRIPTOR.message_types_by_name['ReqBody'] +_RSPBODY = DESCRIPTOR.message_types_by_name['RspBody'] ExtSnsFrdData = _reflection.GeneratedProtocolMessageType('ExtSnsFrdData', (_message.Message,), { 'DESCRIPTOR' : _EXTSNSFRDDATA, '__module__' : 'cai.pb.im.oidb.cmd0xd50.cmd0xd50_pb2' @@ -579,5 +50,15 @@ }) _sym_db.RegisterMessage(RspBody) - +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _EXTSNSFRDDATA._serialized_start=61 + _EXTSNSFRDDATA._serialized_end=677 + _KSINGRELATIONINFO._serialized_start=679 + _KSINGRELATIONINFO._serialized_end=712 + _REQBODY._serialized_start=715 + _REQBODY._serialized_end=1527 + _RSPBODY._serialized_start=1529 + _RSPBODY._serialized_end=1651 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/oidb/cmd0xd50/cmd0xd50_pb2.pyi b/cai/pb/im/oidb/cmd0xd50/cmd0xd50_pb2.pyi index 96eca976..57f1bdb8 100644 --- a/cai/pb/im/oidb/cmd0xd50/cmd0xd50_pb2.pyi +++ b/cai/pb/im/oidb/cmd0xd50/cmd0xd50_pb2.pyi @@ -32,10 +32,13 @@ from typing_extensions import ( ) -DESCRIPTOR: FileDescriptor = ... +DESCRIPTOR: FileDescriptor class ExtSnsFrdData(Message): - DESCRIPTOR: Descriptor = ... + """tencent/im/oidb/cmd0xd50/Oidb_0xd50.java + + """ + DESCRIPTOR: Descriptor FRD_UIN_FIELD_NUMBER: int LOVERS_FIELD_NUMBER: int CONFIDANTE_FIELD_NUMBER: int @@ -61,77 +64,75 @@ class ExtSnsFrdData(Message): MY_STEAL_RECORD_FIELD_NUMBER: int AVGAME_FIELD_NUMBER: int AIO_QUICK_APP_FIELD_NUMBER: int - frd_uin: int = ... - lovers: bytes = ... - confidante: bytes = ... - buddy: bytes = ... - frd_tree: bytes = ... - chat: bytes = ... - praise: bytes = ... - qzone_love: bytes = ... - qzone_house: bytes = ... - music_switch: bytes = ... - mutualmark_alienation: bytes = ... - unread_message: bytes = ... - boat: bytes = ... - close_frd: bytes = ... - mutualmark_score: bytes = ... - ksing_switch: bytes = ... - lbs_share: bytes = ... - dont_forget_me: bytes = ... - my_online_status_visible_to_frd: bytes = ... - frd_online_status_visible_to_me: bytes = ... - visitor_record: bytes = ... - frd_steal_record: bytes = ... - my_steal_record: bytes = ... - avgame: bytes = ... - aio_quick_app: bytes = ... - + frd_uin: int + lovers: bytes + confidante: bytes + buddy: bytes + frd_tree: bytes + chat: bytes + praise: bytes + qzone_love: bytes + qzone_house: bytes + music_switch: bytes + mutualmark_alienation: bytes + unread_message: bytes + boat: bytes + close_frd: bytes + mutualmark_score: bytes + ksing_switch: bytes + lbs_share: bytes + dont_forget_me: bytes + my_online_status_visible_to_frd: bytes + frd_online_status_visible_to_me: bytes + visitor_record: bytes + frd_steal_record: bytes + my_steal_record: bytes + avgame: bytes + aio_quick_app: bytes def __init__(self, *, - frd_uin : Optional[int] = ..., - lovers : Optional[bytes] = ..., - confidante : Optional[bytes] = ..., - buddy : Optional[bytes] = ..., - frd_tree : Optional[bytes] = ..., - chat : Optional[bytes] = ..., - praise : Optional[bytes] = ..., - qzone_love : Optional[bytes] = ..., - qzone_house : Optional[bytes] = ..., - music_switch : Optional[bytes] = ..., - mutualmark_alienation : Optional[bytes] = ..., - unread_message : Optional[bytes] = ..., - boat : Optional[bytes] = ..., - close_frd : Optional[bytes] = ..., - mutualmark_score : Optional[bytes] = ..., - ksing_switch : Optional[bytes] = ..., - lbs_share : Optional[bytes] = ..., - dont_forget_me : Optional[bytes] = ..., - my_online_status_visible_to_frd : Optional[bytes] = ..., - frd_online_status_visible_to_me : Optional[bytes] = ..., - visitor_record : Optional[bytes] = ..., - frd_steal_record : Optional[bytes] = ..., - my_steal_record : Optional[bytes] = ..., - avgame : Optional[bytes] = ..., - aio_quick_app : Optional[bytes] = ..., + frd_uin: Optional[int] = ..., + lovers: Optional[bytes] = ..., + confidante: Optional[bytes] = ..., + buddy: Optional[bytes] = ..., + frd_tree: Optional[bytes] = ..., + chat: Optional[bytes] = ..., + praise: Optional[bytes] = ..., + qzone_love: Optional[bytes] = ..., + qzone_house: Optional[bytes] = ..., + music_switch: Optional[bytes] = ..., + mutualmark_alienation: Optional[bytes] = ..., + unread_message: Optional[bytes] = ..., + boat: Optional[bytes] = ..., + close_frd: Optional[bytes] = ..., + mutualmark_score: Optional[bytes] = ..., + ksing_switch: Optional[bytes] = ..., + lbs_share: Optional[bytes] = ..., + dont_forget_me: Optional[bytes] = ..., + my_online_status_visible_to_frd: Optional[bytes] = ..., + frd_online_status_visible_to_me: Optional[bytes] = ..., + visitor_record: Optional[bytes] = ..., + frd_steal_record: Optional[bytes] = ..., + my_steal_record: Optional[bytes] = ..., + avgame: Optional[bytes] = ..., + aio_quick_app: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"aio_quick_app",b"aio_quick_app",u"avgame",b"avgame",u"boat",b"boat",u"buddy",b"buddy",u"chat",b"chat",u"close_frd",b"close_frd",u"confidante",b"confidante",u"dont_forget_me",b"dont_forget_me",u"frd_online_status_visible_to_me",b"frd_online_status_visible_to_me",u"frd_steal_record",b"frd_steal_record",u"frd_tree",b"frd_tree",u"frd_uin",b"frd_uin",u"ksing_switch",b"ksing_switch",u"lbs_share",b"lbs_share",u"lovers",b"lovers",u"music_switch",b"music_switch",u"mutualmark_alienation",b"mutualmark_alienation",u"mutualmark_score",b"mutualmark_score",u"my_online_status_visible_to_frd",b"my_online_status_visible_to_frd",u"my_steal_record",b"my_steal_record",u"praise",b"praise",u"qzone_house",b"qzone_house",u"qzone_love",b"qzone_love",u"unread_message",b"unread_message",u"visitor_record",b"visitor_record"]) -> bool: ... - def ClearField(self, field_name: Literal[u"aio_quick_app",b"aio_quick_app",u"avgame",b"avgame",u"boat",b"boat",u"buddy",b"buddy",u"chat",b"chat",u"close_frd",b"close_frd",u"confidante",b"confidante",u"dont_forget_me",b"dont_forget_me",u"frd_online_status_visible_to_me",b"frd_online_status_visible_to_me",u"frd_steal_record",b"frd_steal_record",u"frd_tree",b"frd_tree",u"frd_uin",b"frd_uin",u"ksing_switch",b"ksing_switch",u"lbs_share",b"lbs_share",u"lovers",b"lovers",u"music_switch",b"music_switch",u"mutualmark_alienation",b"mutualmark_alienation",u"mutualmark_score",b"mutualmark_score",u"my_online_status_visible_to_frd",b"my_online_status_visible_to_frd",u"my_steal_record",b"my_steal_record",u"praise",b"praise",u"qzone_house",b"qzone_house",u"qzone_love",b"qzone_love",u"unread_message",b"unread_message",u"visitor_record",b"visitor_record"]) -> None: ... + def HasField(self, field_name: Literal["aio_quick_app",b"aio_quick_app","avgame",b"avgame","boat",b"boat","buddy",b"buddy","chat",b"chat","close_frd",b"close_frd","confidante",b"confidante","dont_forget_me",b"dont_forget_me","frd_online_status_visible_to_me",b"frd_online_status_visible_to_me","frd_steal_record",b"frd_steal_record","frd_tree",b"frd_tree","frd_uin",b"frd_uin","ksing_switch",b"ksing_switch","lbs_share",b"lbs_share","lovers",b"lovers","music_switch",b"music_switch","mutualmark_alienation",b"mutualmark_alienation","mutualmark_score",b"mutualmark_score","my_online_status_visible_to_frd",b"my_online_status_visible_to_frd","my_steal_record",b"my_steal_record","praise",b"praise","qzone_house",b"qzone_house","qzone_love",b"qzone_love","unread_message",b"unread_message","visitor_record",b"visitor_record"]) -> bool: ... + def ClearField(self, field_name: Literal["aio_quick_app",b"aio_quick_app","avgame",b"avgame","boat",b"boat","buddy",b"buddy","chat",b"chat","close_frd",b"close_frd","confidante",b"confidante","dont_forget_me",b"dont_forget_me","frd_online_status_visible_to_me",b"frd_online_status_visible_to_me","frd_steal_record",b"frd_steal_record","frd_tree",b"frd_tree","frd_uin",b"frd_uin","ksing_switch",b"ksing_switch","lbs_share",b"lbs_share","lovers",b"lovers","music_switch",b"music_switch","mutualmark_alienation",b"mutualmark_alienation","mutualmark_score",b"mutualmark_score","my_online_status_visible_to_frd",b"my_online_status_visible_to_frd","my_steal_record",b"my_steal_record","praise",b"praise","qzone_house",b"qzone_house","qzone_love",b"qzone_love","unread_message",b"unread_message","visitor_record",b"visitor_record"]) -> None: ... class KSingRelationInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FLAG_FIELD_NUMBER: int - flag: int = ... - + flag: int def __init__(self, *, - flag : Optional[int] = ..., + flag: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"flag",b"flag"]) -> bool: ... - def ClearField(self, field_name: Literal[u"flag",b"flag"]) -> None: ... + def HasField(self, field_name: Literal["flag",b"flag"]) -> bool: ... + def ClearField(self, field_name: Literal["flag",b"flag"]) -> None: ... class ReqBody(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor APPID_FIELD_NUMBER: int MAX_PKG_SIZE_FIELD_NUMBER: int START_TIME_FIELD_NUMBER: int @@ -162,92 +163,91 @@ class ReqBody(Message): REQ_MY_STEAL_RECORD_FIELD_NUMBER: int REQ_AVGAME_FIELD_NUMBER: int REQ_AIO_QUICK_APP_FIELD_NUMBER: int - appid: int = ... - max_pkg_size: int = ... - start_time: int = ... - start_index: int = ... - req_num: int = ... - uin_list: RepeatedScalarFieldContainer[int] = ... - req_lovers: int = ... - req_confidante: int = ... - req_buddy: int = ... - req_frd_tree: int = ... - req_chat: int = ... - req_praise: int = ... - req_qzone_love: int = ... - req_qzone_house: int = ... - req_music_switch: int = ... - req_mutualmark_alienation: int = ... - req_unread_message: int = ... - req_boat: int = ... - req_close_frd: int = ... - req_mutualmark_score: int = ... - req_ksing_switch: int = ... - req_mutualmark_lbsshare: int = ... - req_dont_forget_me: int = ... - req_my_online_status_visible_to_frd: int = ... - req_frd_online_status_visible_to_me: int = ... - req_visitor_record: int = ... - req_frd_steal_record: int = ... - req_my_steal_record: int = ... - req_avgame: int = ... - req_aio_quick_app: int = ... - + appid: int + max_pkg_size: int + start_time: int + start_index: int + req_num: int + @property + def uin_list(self) -> RepeatedScalarFieldContainer[int]: ... + req_lovers: int + req_confidante: int + req_buddy: int + req_frd_tree: int + req_chat: int + req_praise: int + req_qzone_love: int + req_qzone_house: int + req_music_switch: int + req_mutualmark_alienation: int + req_unread_message: int + req_boat: int + req_close_frd: int + req_mutualmark_score: int + req_ksing_switch: int + req_mutualmark_lbsshare: int + req_dont_forget_me: int + req_my_online_status_visible_to_frd: int + req_frd_online_status_visible_to_me: int + req_visitor_record: int + req_frd_steal_record: int + req_my_steal_record: int + req_avgame: int + req_aio_quick_app: int def __init__(self, *, - appid : Optional[int] = ..., - max_pkg_size : Optional[int] = ..., - start_time : Optional[int] = ..., - start_index : Optional[int] = ..., - req_num : Optional[int] = ..., - uin_list : Optional[Iterable[int]] = ..., - req_lovers : Optional[int] = ..., - req_confidante : Optional[int] = ..., - req_buddy : Optional[int] = ..., - req_frd_tree : Optional[int] = ..., - req_chat : Optional[int] = ..., - req_praise : Optional[int] = ..., - req_qzone_love : Optional[int] = ..., - req_qzone_house : Optional[int] = ..., - req_music_switch : Optional[int] = ..., - req_mutualmark_alienation : Optional[int] = ..., - req_unread_message : Optional[int] = ..., - req_boat : Optional[int] = ..., - req_close_frd : Optional[int] = ..., - req_mutualmark_score : Optional[int] = ..., - req_ksing_switch : Optional[int] = ..., - req_mutualmark_lbsshare : Optional[int] = ..., - req_dont_forget_me : Optional[int] = ..., - req_my_online_status_visible_to_frd : Optional[int] = ..., - req_frd_online_status_visible_to_me : Optional[int] = ..., - req_visitor_record : Optional[int] = ..., - req_frd_steal_record : Optional[int] = ..., - req_my_steal_record : Optional[int] = ..., - req_avgame : Optional[int] = ..., - req_aio_quick_app : Optional[int] = ..., + appid: Optional[int] = ..., + max_pkg_size: Optional[int] = ..., + start_time: Optional[int] = ..., + start_index: Optional[int] = ..., + req_num: Optional[int] = ..., + uin_list: Optional[Iterable[int]] = ..., + req_lovers: Optional[int] = ..., + req_confidante: Optional[int] = ..., + req_buddy: Optional[int] = ..., + req_frd_tree: Optional[int] = ..., + req_chat: Optional[int] = ..., + req_praise: Optional[int] = ..., + req_qzone_love: Optional[int] = ..., + req_qzone_house: Optional[int] = ..., + req_music_switch: Optional[int] = ..., + req_mutualmark_alienation: Optional[int] = ..., + req_unread_message: Optional[int] = ..., + req_boat: Optional[int] = ..., + req_close_frd: Optional[int] = ..., + req_mutualmark_score: Optional[int] = ..., + req_ksing_switch: Optional[int] = ..., + req_mutualmark_lbsshare: Optional[int] = ..., + req_dont_forget_me: Optional[int] = ..., + req_my_online_status_visible_to_frd: Optional[int] = ..., + req_frd_online_status_visible_to_me: Optional[int] = ..., + req_visitor_record: Optional[int] = ..., + req_frd_steal_record: Optional[int] = ..., + req_my_steal_record: Optional[int] = ..., + req_avgame: Optional[int] = ..., + req_aio_quick_app: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"appid",b"appid",u"max_pkg_size",b"max_pkg_size",u"req_aio_quick_app",b"req_aio_quick_app",u"req_avgame",b"req_avgame",u"req_boat",b"req_boat",u"req_buddy",b"req_buddy",u"req_chat",b"req_chat",u"req_close_frd",b"req_close_frd",u"req_confidante",b"req_confidante",u"req_dont_forget_me",b"req_dont_forget_me",u"req_frd_online_status_visible_to_me",b"req_frd_online_status_visible_to_me",u"req_frd_steal_record",b"req_frd_steal_record",u"req_frd_tree",b"req_frd_tree",u"req_ksing_switch",b"req_ksing_switch",u"req_lovers",b"req_lovers",u"req_music_switch",b"req_music_switch",u"req_mutualmark_alienation",b"req_mutualmark_alienation",u"req_mutualmark_lbsshare",b"req_mutualmark_lbsshare",u"req_mutualmark_score",b"req_mutualmark_score",u"req_my_online_status_visible_to_frd",b"req_my_online_status_visible_to_frd",u"req_my_steal_record",b"req_my_steal_record",u"req_num",b"req_num",u"req_praise",b"req_praise",u"req_qzone_house",b"req_qzone_house",u"req_qzone_love",b"req_qzone_love",u"req_unread_message",b"req_unread_message",u"req_visitor_record",b"req_visitor_record",u"start_index",b"start_index",u"start_time",b"start_time"]) -> bool: ... - def ClearField(self, field_name: Literal[u"appid",b"appid",u"max_pkg_size",b"max_pkg_size",u"req_aio_quick_app",b"req_aio_quick_app",u"req_avgame",b"req_avgame",u"req_boat",b"req_boat",u"req_buddy",b"req_buddy",u"req_chat",b"req_chat",u"req_close_frd",b"req_close_frd",u"req_confidante",b"req_confidante",u"req_dont_forget_me",b"req_dont_forget_me",u"req_frd_online_status_visible_to_me",b"req_frd_online_status_visible_to_me",u"req_frd_steal_record",b"req_frd_steal_record",u"req_frd_tree",b"req_frd_tree",u"req_ksing_switch",b"req_ksing_switch",u"req_lovers",b"req_lovers",u"req_music_switch",b"req_music_switch",u"req_mutualmark_alienation",b"req_mutualmark_alienation",u"req_mutualmark_lbsshare",b"req_mutualmark_lbsshare",u"req_mutualmark_score",b"req_mutualmark_score",u"req_my_online_status_visible_to_frd",b"req_my_online_status_visible_to_frd",u"req_my_steal_record",b"req_my_steal_record",u"req_num",b"req_num",u"req_praise",b"req_praise",u"req_qzone_house",b"req_qzone_house",u"req_qzone_love",b"req_qzone_love",u"req_unread_message",b"req_unread_message",u"req_visitor_record",b"req_visitor_record",u"start_index",b"start_index",u"start_time",b"start_time",u"uin_list",b"uin_list"]) -> None: ... + def HasField(self, field_name: Literal["appid",b"appid","max_pkg_size",b"max_pkg_size","req_aio_quick_app",b"req_aio_quick_app","req_avgame",b"req_avgame","req_boat",b"req_boat","req_buddy",b"req_buddy","req_chat",b"req_chat","req_close_frd",b"req_close_frd","req_confidante",b"req_confidante","req_dont_forget_me",b"req_dont_forget_me","req_frd_online_status_visible_to_me",b"req_frd_online_status_visible_to_me","req_frd_steal_record",b"req_frd_steal_record","req_frd_tree",b"req_frd_tree","req_ksing_switch",b"req_ksing_switch","req_lovers",b"req_lovers","req_music_switch",b"req_music_switch","req_mutualmark_alienation",b"req_mutualmark_alienation","req_mutualmark_lbsshare",b"req_mutualmark_lbsshare","req_mutualmark_score",b"req_mutualmark_score","req_my_online_status_visible_to_frd",b"req_my_online_status_visible_to_frd","req_my_steal_record",b"req_my_steal_record","req_num",b"req_num","req_praise",b"req_praise","req_qzone_house",b"req_qzone_house","req_qzone_love",b"req_qzone_love","req_unread_message",b"req_unread_message","req_visitor_record",b"req_visitor_record","start_index",b"start_index","start_time",b"start_time"]) -> bool: ... + def ClearField(self, field_name: Literal["appid",b"appid","max_pkg_size",b"max_pkg_size","req_aio_quick_app",b"req_aio_quick_app","req_avgame",b"req_avgame","req_boat",b"req_boat","req_buddy",b"req_buddy","req_chat",b"req_chat","req_close_frd",b"req_close_frd","req_confidante",b"req_confidante","req_dont_forget_me",b"req_dont_forget_me","req_frd_online_status_visible_to_me",b"req_frd_online_status_visible_to_me","req_frd_steal_record",b"req_frd_steal_record","req_frd_tree",b"req_frd_tree","req_ksing_switch",b"req_ksing_switch","req_lovers",b"req_lovers","req_music_switch",b"req_music_switch","req_mutualmark_alienation",b"req_mutualmark_alienation","req_mutualmark_lbsshare",b"req_mutualmark_lbsshare","req_mutualmark_score",b"req_mutualmark_score","req_my_online_status_visible_to_frd",b"req_my_online_status_visible_to_frd","req_my_steal_record",b"req_my_steal_record","req_num",b"req_num","req_praise",b"req_praise","req_qzone_house",b"req_qzone_house","req_qzone_love",b"req_qzone_love","req_unread_message",b"req_unread_message","req_visitor_record",b"req_visitor_record","start_index",b"start_index","start_time",b"start_time","uin_list",b"uin_list"]) -> None: ... class RspBody(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor UPDATE_DATA_FIELD_NUMBER: int OVER_FIELD_NUMBER: int NEXT_START_FIELD_NUMBER: int UNFINISHED_UINS_FIELD_NUMBER: int - over: int = ... - next_start: int = ... - unfinished_uins: RepeatedScalarFieldContainer[int] = ... - @property def update_data(self) -> RepeatedCompositeFieldContainer[ExtSnsFrdData]: ... - + over: int + next_start: int + @property + def unfinished_uins(self) -> RepeatedScalarFieldContainer[int]: ... def __init__(self, *, - update_data : Optional[Iterable[ExtSnsFrdData]] = ..., - over : Optional[int] = ..., - next_start : Optional[int] = ..., - unfinished_uins : Optional[Iterable[int]] = ..., + update_data: Optional[Iterable[ExtSnsFrdData]] = ..., + over: Optional[int] = ..., + next_start: Optional[int] = ..., + unfinished_uins: Optional[Iterable[int]] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"next_start",b"next_start",u"over",b"over"]) -> bool: ... - def ClearField(self, field_name: Literal[u"next_start",b"next_start",u"over",b"over",u"unfinished_uins",b"unfinished_uins",u"update_data",b"update_data"]) -> None: ... + def HasField(self, field_name: Literal["next_start",b"next_start","over",b"over"]) -> bool: ... + def ClearField(self, field_name: Literal["next_start",b"next_start","over",b"over","unfinished_uins",b"unfinished_uins","update_data",b"update_data"]) -> None: ... diff --git a/cai/pb/im/oidb/group0x857/group0x857_pb2.py b/cai/pb/im/oidb/group0x857/group0x857_pb2.py index ef7632b0..7bee7469 100644 --- a/cai/pb/im/oidb/group0x857/group0x857_pb2.py +++ b/cai/pb/im/oidb/group0x857/group0x857_pb2.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! -# source: group0x857.proto +# source: cai/pb/im/oidb/group0x857/group0x857.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10group0x857.proto\"\x82\x02\n\rNotifyMsgBody\x12(\n\x0eoptMsgGrayTips\x18\x05 \x01(\x0b\x32\x10.AIOGrayTipsInfo\x12\'\n\roptMsgRedTips\x18\t \x01(\x0b\x32\x10.RedGrayTipsInfo\x12,\n\x0coptMsgRecall\x18\x0b \x01(\x0b\x32\x16.MessageRecallReminder\x12.\n\x11optGeneralGrayTip\x18\x1a \x01(\x0b\x32\x13.GeneralGrayTipInfo\x12+\n\x10qqGroupDigestMsg\x18! \x01(\x0b\x32\x11.QQGroupDigestMsg\x12\x13\n\x0bserviceType\x18\r \x01(\x05\"\x82\x01\n\x0f\x41IOGrayTipsInfo\x12\x12\n\nshowLatest\x18\x01 \x01(\r\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\x12\x0e\n\x06remind\x18\x03 \x01(\r\x12\r\n\x05\x62rief\x18\x04 \x01(\x0c\x12\x13\n\x0breceiverUin\x18\x05 \x01(\x04\x12\x16\n\x0ereliaoAdminOpt\x18\x06 \x01(\r\"\xb4\x01\n\x12GeneralGrayTipInfo\x12\x10\n\x08\x62usiType\x18\x01 \x01(\x04\x12\x0e\n\x06\x62usiId\x18\x02 \x01(\x04\x12\x10\n\x08\x63trlFlag\x18\x03 \x01(\r\x12\x0f\n\x07\x63\x32\x63Type\x18\x04 \x01(\r\x12\x13\n\x0bserviceType\x18\x05 \x01(\r\x12\x0f\n\x07templId\x18\x06 \x01(\x04\x12\"\n\rmsgTemplParam\x18\x07 \x03(\x0b\x32\x0b.TemplParam\x12\x0f\n\x07\x63ontent\x18\x08 \x01(\t\")\n\nTemplParam\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xb2\x01\n\x15MessageRecallReminder\x12\x0b\n\x03uin\x18\x01 \x01(\x03\x12\x10\n\x08nickname\x18\x02 \x01(\x0c\x12-\n\x0frecalledMsgList\x18\x03 \x03(\x0b\x32\x14.RecalledMessageMeta\x12\x17\n\x0freminderContent\x18\x04 \x01(\x0c\x12\x0f\n\x07userdef\x18\x05 \x01(\x0c\x12\x11\n\tgroupType\x18\x06 \x01(\x05\x12\x0e\n\x06opType\x18\x07 \x01(\x05\"x\n\x13RecalledMessageMeta\x12\x0b\n\x03seq\x18\x01 \x01(\x05\x12\x0c\n\x04time\x18\x02 \x01(\x05\x12\x11\n\tmsgRandom\x18\x03 \x01(\x05\x12\x0f\n\x07msgType\x18\x04 \x01(\x05\x12\x0f\n\x07msgFlag\x18\x05 \x01(\x05\x12\x11\n\tauthorUin\x18\x06 \x01(\x03\"\xde\x01\n\x0fRedGrayTipsInfo\x12\x12\n\nshowLatest\x18\x01 \x01(\r\x12\x11\n\tsenderUin\x18\x02 \x01(\x04\x12\x13\n\x0breceiverUin\x18\x03 \x01(\x04\x12\x19\n\x11senderRichContent\x18\x04 \x01(\t\x12\x1b\n\x13receiverRichContent\x18\x05 \x01(\t\x12\x0f\n\x07\x61uthKey\x18\x06 \x01(\x0c\x12\x0f\n\x07msgType\x18\x07 \x01(\x11\x12\x11\n\tluckyFlag\x18\x08 \x01(\r\x12\x10\n\x08hideFlag\x18\t \x01(\r\x12\x10\n\x08luckyUin\x18\x0c \x01(\x04\"\xd4\x01\n\x10QQGroupDigestMsg\x12\x11\n\tgroupCode\x18\x01 \x01(\x04\x12\x0b\n\x03seq\x18\x02 \x01(\r\x12\x0e\n\x06random\x18\x03 \x01(\r\x12\x0e\n\x06opType\x18\x04 \x01(\x05\x12\x0e\n\x06sender\x18\x05 \x01(\x04\x12\x12\n\ndigestOper\x18\x06 \x01(\x04\x12\x0e\n\x06opTime\x18\x07 \x01(\r\x12\x15\n\rlastestMsgSeq\x18\x08 \x01(\r\x12\x10\n\x08operNick\x18\t \x01(\x0c\x12\x12\n\nsenderNick\x18\n \x01(\x0c\x12\x0f\n\x07\x65xtInfo\x18\x0b \x01(\x05\x42+Z)github.com/Mrs4s/MiraiGo/client/pb/notifyb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*cai/pb/im/oidb/group0x857/group0x857.proto\"\x82\x02\n\rNotifyMsgBody\x12(\n\x0eoptMsgGrayTips\x18\x05 \x01(\x0b\x32\x10.AIOGrayTipsInfo\x12\'\n\roptMsgRedTips\x18\t \x01(\x0b\x32\x10.RedGrayTipsInfo\x12,\n\x0coptMsgRecall\x18\x0b \x01(\x0b\x32\x16.MessageRecallReminder\x12.\n\x11optGeneralGrayTip\x18\x1a \x01(\x0b\x32\x13.GeneralGrayTipInfo\x12+\n\x10qqGroupDigestMsg\x18! \x01(\x0b\x32\x11.QQGroupDigestMsg\x12\x13\n\x0bserviceType\x18\r \x01(\x05\"\x82\x01\n\x0f\x41IOGrayTipsInfo\x12\x12\n\nshowLatest\x18\x01 \x01(\r\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\x12\x0e\n\x06remind\x18\x03 \x01(\r\x12\r\n\x05\x62rief\x18\x04 \x01(\x0c\x12\x13\n\x0breceiverUin\x18\x05 \x01(\x04\x12\x16\n\x0ereliaoAdminOpt\x18\x06 \x01(\r\"\xb4\x01\n\x12GeneralGrayTipInfo\x12\x10\n\x08\x62usiType\x18\x01 \x01(\x04\x12\x0e\n\x06\x62usiId\x18\x02 \x01(\x04\x12\x10\n\x08\x63trlFlag\x18\x03 \x01(\r\x12\x0f\n\x07\x63\x32\x63Type\x18\x04 \x01(\r\x12\x13\n\x0bserviceType\x18\x05 \x01(\r\x12\x0f\n\x07templId\x18\x06 \x01(\x04\x12\"\n\rmsgTemplParam\x18\x07 \x03(\x0b\x32\x0b.TemplParam\x12\x0f\n\x07\x63ontent\x18\x08 \x01(\t\")\n\nTemplParam\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xb2\x01\n\x15MessageRecallReminder\x12\x0b\n\x03uin\x18\x01 \x01(\x03\x12\x10\n\x08nickname\x18\x02 \x01(\x0c\x12-\n\x0frecalledMsgList\x18\x03 \x03(\x0b\x32\x14.RecalledMessageMeta\x12\x17\n\x0freminderContent\x18\x04 \x01(\x0c\x12\x0f\n\x07userdef\x18\x05 \x01(\x0c\x12\x11\n\tgroupType\x18\x06 \x01(\x05\x12\x0e\n\x06opType\x18\x07 \x01(\x05\"x\n\x13RecalledMessageMeta\x12\x0b\n\x03seq\x18\x01 \x01(\x05\x12\x0c\n\x04time\x18\x02 \x01(\x05\x12\x11\n\tmsgRandom\x18\x03 \x01(\x05\x12\x0f\n\x07msgType\x18\x04 \x01(\x05\x12\x0f\n\x07msgFlag\x18\x05 \x01(\x05\x12\x11\n\tauthorUin\x18\x06 \x01(\x03\"\xde\x01\n\x0fRedGrayTipsInfo\x12\x12\n\nshowLatest\x18\x01 \x01(\r\x12\x11\n\tsenderUin\x18\x02 \x01(\x04\x12\x13\n\x0breceiverUin\x18\x03 \x01(\x04\x12\x19\n\x11senderRichContent\x18\x04 \x01(\t\x12\x1b\n\x13receiverRichContent\x18\x05 \x01(\t\x12\x0f\n\x07\x61uthKey\x18\x06 \x01(\x0c\x12\x0f\n\x07msgType\x18\x07 \x01(\x11\x12\x11\n\tluckyFlag\x18\x08 \x01(\r\x12\x10\n\x08hideFlag\x18\t \x01(\r\x12\x10\n\x08luckyUin\x18\x0c \x01(\x04\"\xd4\x01\n\x10QQGroupDigestMsg\x12\x11\n\tgroupCode\x18\x01 \x01(\x04\x12\x0b\n\x03seq\x18\x02 \x01(\r\x12\x0e\n\x06random\x18\x03 \x01(\r\x12\x0e\n\x06opType\x18\x04 \x01(\x05\x12\x0e\n\x06sender\x18\x05 \x01(\x04\x12\x12\n\ndigestOper\x18\x06 \x01(\x04\x12\x0e\n\x06opTime\x18\x07 \x01(\r\x12\x15\n\rlastestMsgSeq\x18\x08 \x01(\r\x12\x10\n\x08operNick\x18\t \x01(\x0c\x12\x12\n\nsenderNick\x18\n \x01(\x0c\x12\x0f\n\x07\x65xtInfo\x18\x0b \x01(\x05\x42+Z)github.com/Mrs4s/MiraiGo/client/pb/notifyb\x06proto3') @@ -28,56 +28,56 @@ _QQGROUPDIGESTMSG = DESCRIPTOR.message_types_by_name['QQGroupDigestMsg'] NotifyMsgBody = _reflection.GeneratedProtocolMessageType('NotifyMsgBody', (_message.Message,), { 'DESCRIPTOR' : _NOTIFYMSGBODY, - '__module__' : 'group0x857_pb2' + '__module__' : 'cai.pb.im.oidb.group0x857.group0x857_pb2' # @@protoc_insertion_point(class_scope:NotifyMsgBody) }) _sym_db.RegisterMessage(NotifyMsgBody) AIOGrayTipsInfo = _reflection.GeneratedProtocolMessageType('AIOGrayTipsInfo', (_message.Message,), { 'DESCRIPTOR' : _AIOGRAYTIPSINFO, - '__module__' : 'group0x857_pb2' + '__module__' : 'cai.pb.im.oidb.group0x857.group0x857_pb2' # @@protoc_insertion_point(class_scope:AIOGrayTipsInfo) }) _sym_db.RegisterMessage(AIOGrayTipsInfo) GeneralGrayTipInfo = _reflection.GeneratedProtocolMessageType('GeneralGrayTipInfo', (_message.Message,), { 'DESCRIPTOR' : _GENERALGRAYTIPINFO, - '__module__' : 'group0x857_pb2' + '__module__' : 'cai.pb.im.oidb.group0x857.group0x857_pb2' # @@protoc_insertion_point(class_scope:GeneralGrayTipInfo) }) _sym_db.RegisterMessage(GeneralGrayTipInfo) TemplParam = _reflection.GeneratedProtocolMessageType('TemplParam', (_message.Message,), { 'DESCRIPTOR' : _TEMPLPARAM, - '__module__' : 'group0x857_pb2' + '__module__' : 'cai.pb.im.oidb.group0x857.group0x857_pb2' # @@protoc_insertion_point(class_scope:TemplParam) }) _sym_db.RegisterMessage(TemplParam) MessageRecallReminder = _reflection.GeneratedProtocolMessageType('MessageRecallReminder', (_message.Message,), { 'DESCRIPTOR' : _MESSAGERECALLREMINDER, - '__module__' : 'group0x857_pb2' + '__module__' : 'cai.pb.im.oidb.group0x857.group0x857_pb2' # @@protoc_insertion_point(class_scope:MessageRecallReminder) }) _sym_db.RegisterMessage(MessageRecallReminder) RecalledMessageMeta = _reflection.GeneratedProtocolMessageType('RecalledMessageMeta', (_message.Message,), { 'DESCRIPTOR' : _RECALLEDMESSAGEMETA, - '__module__' : 'group0x857_pb2' + '__module__' : 'cai.pb.im.oidb.group0x857.group0x857_pb2' # @@protoc_insertion_point(class_scope:RecalledMessageMeta) }) _sym_db.RegisterMessage(RecalledMessageMeta) RedGrayTipsInfo = _reflection.GeneratedProtocolMessageType('RedGrayTipsInfo', (_message.Message,), { 'DESCRIPTOR' : _REDGRAYTIPSINFO, - '__module__' : 'group0x857_pb2' + '__module__' : 'cai.pb.im.oidb.group0x857.group0x857_pb2' # @@protoc_insertion_point(class_scope:RedGrayTipsInfo) }) _sym_db.RegisterMessage(RedGrayTipsInfo) QQGroupDigestMsg = _reflection.GeneratedProtocolMessageType('QQGroupDigestMsg', (_message.Message,), { 'DESCRIPTOR' : _QQGROUPDIGESTMSG, - '__module__' : 'group0x857_pb2' + '__module__' : 'cai.pb.im.oidb.group0x857.group0x857_pb2' # @@protoc_insertion_point(class_scope:QQGroupDigestMsg) }) _sym_db.RegisterMessage(QQGroupDigestMsg) @@ -86,20 +86,20 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'Z)github.com/Mrs4s/MiraiGo/client/pb/notify' - _NOTIFYMSGBODY._serialized_start=21 - _NOTIFYMSGBODY._serialized_end=279 - _AIOGRAYTIPSINFO._serialized_start=282 - _AIOGRAYTIPSINFO._serialized_end=412 - _GENERALGRAYTIPINFO._serialized_start=415 - _GENERALGRAYTIPINFO._serialized_end=595 - _TEMPLPARAM._serialized_start=597 - _TEMPLPARAM._serialized_end=638 - _MESSAGERECALLREMINDER._serialized_start=641 - _MESSAGERECALLREMINDER._serialized_end=819 - _RECALLEDMESSAGEMETA._serialized_start=821 - _RECALLEDMESSAGEMETA._serialized_end=941 - _REDGRAYTIPSINFO._serialized_start=944 - _REDGRAYTIPSINFO._serialized_end=1166 - _QQGROUPDIGESTMSG._serialized_start=1169 - _QQGROUPDIGESTMSG._serialized_end=1381 + _NOTIFYMSGBODY._serialized_start=47 + _NOTIFYMSGBODY._serialized_end=305 + _AIOGRAYTIPSINFO._serialized_start=308 + _AIOGRAYTIPSINFO._serialized_end=438 + _GENERALGRAYTIPINFO._serialized_start=441 + _GENERALGRAYTIPINFO._serialized_end=621 + _TEMPLPARAM._serialized_start=623 + _TEMPLPARAM._serialized_end=664 + _MESSAGERECALLREMINDER._serialized_start=667 + _MESSAGERECALLREMINDER._serialized_end=845 + _RECALLEDMESSAGEMETA._serialized_start=847 + _RECALLEDMESSAGEMETA._serialized_end=967 + _REDGRAYTIPSINFO._serialized_start=970 + _REDGRAYTIPSINFO._serialized_end=1192 + _QQGROUPDIGESTMSG._serialized_start=1195 + _QQGROUPDIGESTMSG._serialized_end=1407 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/msf/msg/comm/comm_pb2.py b/cai/pb/msf/msg/comm/comm_pb2.py index a109fce3..c6762eea 100644 --- a/cai/pb/msf/msg/comm/comm_pb2.py +++ b/cai/pb/msf/msg/comm/comm_pb2.py @@ -3,6 +3,7 @@ # source: cai/pb/msf/msg/comm/comm.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -15,1035 +16,23 @@ from cai.pb.im.msg.msg_head import msg_head_pb2 as cai_dot_pb_dot_im_dot_msg_dot_msg__head_dot_msg__head__pb2 -DESCRIPTOR = _descriptor.FileDescriptor( - name='cai/pb/msf/msg/comm/comm.proto', - package='msf.msg.comm', - syntax='proto2', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x1e\x63\x61i/pb/msf/msg/comm/comm.proto\x12\x0cmsf.msg.comm\x1a%cai/pb/im/msg/msg_body/msg_body.proto\x1a%cai/pb/im/msg/msg_head/msg_head.proto\"q\n\x0c\x41ppShareInfo\x12\x13\n\x0b\x61ppshare_id\x18\x01 \x01(\r\x12\x17\n\x0f\x61ppshare_cookie\x18\x02 \x01(\x0c\x12\x33\n\x11\x61ppshare_resource\x18\x03 \x01(\x0b\x32\x18.msf.msg.comm.PluginInfo\"\x98\x02\n\rC2CTmpMsgHead\x12\x10\n\x08\x63\x32\x63_type\x18\x01 \x01(\r\x12\x14\n\x0cservice_type\x18\x02 \x01(\r\x12\x11\n\tgroup_uin\x18\x03 \x01(\x04\x12\x12\n\ngroup_code\x18\x04 \x01(\x04\x12\x0b\n\x03sig\x18\x05 \x01(\x0c\x12\x10\n\x08sig_type\x18\x06 \x01(\r\x12\x12\n\nfrom_phone\x18\x07 \x01(\t\x12\x10\n\x08to_phone\x18\x08 \x01(\t\x12\x14\n\x0clock_display\x18\t \x01(\r\x12\x16\n\x0e\x64irection_flag\x18\n \x01(\r\x12\x10\n\x08reserved\x18\x0b \x01(\x0c\x12\x15\n\rbusiness_name\x18\x0e \x01(\x0c\x12\x1c\n\x14\x62usiness_sub_content\x18\x0f \x01(\x0c\"V\n\x0b\x43ontentHead\x12\x0f\n\x07pkg_num\x18\x01 \x01(\r\x12\x11\n\tpkg_index\x18\x02 \x01(\r\x12\x0f\n\x07\x64iv_seq\x18\x03 \x01(\r\x12\x12\n\nauto_reply\x18\x04 \x01(\r\"\x80\x01\n\x0b\x44iscussInfo\x12\x13\n\x0b\x64iscuss_uin\x18\x01 \x01(\x04\x12\x14\n\x0c\x64iscuss_type\x18\x02 \x01(\r\x12\x18\n\x10\x64iscuss_info_seq\x18\x03 \x01(\x04\x12\x16\n\x0e\x64iscuss_remark\x18\x04 \x01(\x0c\x12\x14\n\x0c\x64iscuss_name\x18\x05 \x01(\x0c\"l\n\x0f\x45xtGroupKeyInfo\x12\x13\n\x0b\x63ur_max_seq\x18\x01 \x01(\r\x12\x10\n\x08\x63ur_time\x18\x02 \x01(\x04\x12\x1a\n\x12operate_by_parents\x18\x03 \x01(\r\x12\x16\n\x0e\x65xt_group_info\x18\x04 \x01(\x0c\"\xb5\x01\n\tGroupInfo\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x12\n\ngroup_type\x18\x02 \x01(\r\x12\x16\n\x0egroup_info_seq\x18\x03 \x01(\x04\x12\x12\n\ngroup_card\x18\x04 \x01(\x0c\x12\x12\n\ngroup_rank\x18\x05 \x01(\x0c\x12\x13\n\x0bgroup_level\x18\x06 \x01(\r\x12\x17\n\x0fgroup_card_type\x18\x07 \x01(\r\x12\x12\n\ngroup_name\x18\x08 \x01(\x0c\"\xb6\x01\n\x03Msg\x12#\n\x04head\x18\x01 \x01(\x0b\x32\x15.msf.msg.comm.MsgHead\x12/\n\x0c\x63ontent_head\x18\x02 \x01(\x0b\x32\x19.msf.msg.comm.ContentHead\x12&\n\x04\x62ody\x18\x03 \x01(\x0b\x32\x18.im.msg.msg_body.MsgBody\x12\x31\n\rappshare_info\x18\x04 \x01(\x0b\x32\x1a.msf.msg.comm.AppShareInfo\"\xec\x05\n\x07MsgHead\x12\x10\n\x08\x66rom_uin\x18\x01 \x01(\x04\x12\x0e\n\x06to_uin\x18\x02 \x01(\x04\x12\x0c\n\x04type\x18\x03 \x01(\r\x12\x0f\n\x07\x63\x32\x63_cmd\x18\x04 \x01(\r\x12\x0b\n\x03seq\x18\x05 \x01(\r\x12\x0c\n\x04time\x18\x06 \x01(\r\x12\x0b\n\x03uid\x18\x07 \x01(\x04\x12\x35\n\x10\x63\x32\x63_tmp_msg_head\x18\x08 \x01(\x0b\x32\x1b.msf.msg.comm.C2CTmpMsgHead\x12+\n\ngroup_info\x18\t \x01(\x0b\x32\x17.msf.msg.comm.GroupInfo\x12\x12\n\nfrom_appid\x18\n \x01(\r\x12\x13\n\x0b\x66rom_instid\x18\x0b \x01(\r\x12\x13\n\x0buser_active\x18\x0c \x01(\r\x12/\n\x0c\x64iscuss_info\x18\r \x01(\x0b\x32\x19.msf.msg.comm.DiscussInfo\x12\x11\n\tfrom_nick\x18\x0e \x01(\t\x12\x10\n\x08\x61uth_uin\x18\x0f \x01(\x04\x12\x11\n\tauth_nick\x18\x10 \x01(\t\x12\x0c\n\x04\x66lag\x18\x11 \x01(\r\x12\x13\n\x0b\x61uth_remark\x18\x12 \x01(\t\x12\x12\n\ngroup_name\x18\x13 \x01(\t\x12\x35\n\x0fmutiltrans_head\x18\x14 \x01(\x0b\x32\x1c.msf.msg.comm.MutilTransHead\x12,\n\tinst_ctrl\x18\x15 \x01(\x0b\x32\x19.im.msg.msg_head.InstCtrl\x12&\n\x1epublic_account_group_send_flag\x18\x16 \x01(\r\x12\x1b\n\x13wseq_in_c2c_msghead\x18\x17 \x01(\r\x12\x0c\n\x04\x63pid\x18\x18 \x01(\x04\x12\x39\n\x12\x65xt_group_key_info\x18\x19 \x01(\x0b\x32\x1d.msf.msg.comm.ExtGroupKeyInfo\x12\x1d\n\x15multi_compatible_text\x18\x1a \x01(\t\x12\x10\n\x08\x61uth_sex\x18\x1b \x01(\r\x12\x12\n\nis_src_msg\x18\x1c \x01(\x08\"5\n\x0cMsgType0x210\x12\x14\n\x0csub_msg_type\x18\x01 \x01(\r\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\"0\n\x0eMutilTransHead\x12\x0e\n\x06status\x18\x01 \x01(\r\x12\x0e\n\x06msg_id\x18\x02 \x01(\r\"\xd7\x01\n\nPluginInfo\x12\x0e\n\x06res_id\x18\x01 \x01(\r\x12\x10\n\x08pkg_name\x18\x02 \x01(\t\x12\x0f\n\x07new_ver\x18\x03 \x01(\r\x12\x10\n\x08res_type\x18\x04 \x01(\r\x12\x10\n\x08lan_type\x18\x05 \x01(\r\x12\x10\n\x08priority\x18\x06 \x01(\r\x12\x10\n\x08res_name\x18\x07 \x01(\t\x12\x10\n\x08res_desc\x18\x08 \x01(\t\x12\x13\n\x0bres_url_big\x18\t \x01(\t\x12\x15\n\rres_url_small\x18\n \x01(\t\x12\x10\n\x08res_conf\x18\x0b \x01(\t\"%\n\x08Uin2Nick\x12\x0b\n\x03uin\x18\x01 \x01(\x04\x12\x0c\n\x04nick\x18\x02 \x01(\t\"\xd1\x01\n\nUinPairMsg\x12\x16\n\x0elast_read_time\x18\x01 \x01(\r\x12\x10\n\x08peer_uin\x18\x02 \x01(\x04\x12\x11\n\tcompleted\x18\x03 \x01(\r\x12\x1e\n\x03msg\x18\x04 \x03(\x0b\x32\x11.msf.msg.comm.Msg\x12\x16\n\x0eunread_msg_num\x18\x05 \x01(\r\x12\x10\n\x08\x63\x32\x63_type\x18\x08 \x01(\r\x12\x14\n\x0cservice_type\x18\t \x01(\r\x12\x12\n\npb_reserve\x18\n \x01(\x0c\x12\x12\n\nto_tiny_id\x18\x0b \x01(\x04' - , - dependencies=[cai_dot_pb_dot_im_dot_msg_dot_msg__body_dot_msg__body__pb2.DESCRIPTOR,cai_dot_pb_dot_im_dot_msg_dot_msg__head_dot_msg__head__pb2.DESCRIPTOR,]) +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1e\x63\x61i/pb/msf/msg/comm/comm.proto\x12\x0cmsf.msg.comm\x1a%cai/pb/im/msg/msg_body/msg_body.proto\x1a%cai/pb/im/msg/msg_head/msg_head.proto\"q\n\x0c\x41ppShareInfo\x12\x13\n\x0b\x61ppshare_id\x18\x01 \x01(\r\x12\x17\n\x0f\x61ppshare_cookie\x18\x02 \x01(\x0c\x12\x33\n\x11\x61ppshare_resource\x18\x03 \x01(\x0b\x32\x18.msf.msg.comm.PluginInfo\"\x98\x02\n\rC2CTmpMsgHead\x12\x10\n\x08\x63\x32\x63_type\x18\x01 \x01(\r\x12\x14\n\x0cservice_type\x18\x02 \x01(\r\x12\x11\n\tgroup_uin\x18\x03 \x01(\x04\x12\x12\n\ngroup_code\x18\x04 \x01(\x04\x12\x0b\n\x03sig\x18\x05 \x01(\x0c\x12\x10\n\x08sig_type\x18\x06 \x01(\r\x12\x12\n\nfrom_phone\x18\x07 \x01(\t\x12\x10\n\x08to_phone\x18\x08 \x01(\t\x12\x14\n\x0clock_display\x18\t \x01(\r\x12\x16\n\x0e\x64irection_flag\x18\n \x01(\r\x12\x10\n\x08reserved\x18\x0b \x01(\x0c\x12\x15\n\rbusiness_name\x18\x0e \x01(\x0c\x12\x1c\n\x14\x62usiness_sub_content\x18\x0f \x01(\x0c\"V\n\x0b\x43ontentHead\x12\x0f\n\x07pkg_num\x18\x01 \x01(\r\x12\x11\n\tpkg_index\x18\x02 \x01(\r\x12\x0f\n\x07\x64iv_seq\x18\x03 \x01(\r\x12\x12\n\nauto_reply\x18\x04 \x01(\r\"\x80\x01\n\x0b\x44iscussInfo\x12\x13\n\x0b\x64iscuss_uin\x18\x01 \x01(\x04\x12\x14\n\x0c\x64iscuss_type\x18\x02 \x01(\r\x12\x18\n\x10\x64iscuss_info_seq\x18\x03 \x01(\x04\x12\x16\n\x0e\x64iscuss_remark\x18\x04 \x01(\x0c\x12\x14\n\x0c\x64iscuss_name\x18\x05 \x01(\x0c\"l\n\x0f\x45xtGroupKeyInfo\x12\x13\n\x0b\x63ur_max_seq\x18\x01 \x01(\r\x12\x10\n\x08\x63ur_time\x18\x02 \x01(\x04\x12\x1a\n\x12operate_by_parents\x18\x03 \x01(\r\x12\x16\n\x0e\x65xt_group_info\x18\x04 \x01(\x0c\"\xb5\x01\n\tGroupInfo\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x12\n\ngroup_type\x18\x02 \x01(\r\x12\x16\n\x0egroup_info_seq\x18\x03 \x01(\x04\x12\x12\n\ngroup_card\x18\x04 \x01(\x0c\x12\x12\n\ngroup_rank\x18\x05 \x01(\x0c\x12\x13\n\x0bgroup_level\x18\x06 \x01(\r\x12\x17\n\x0fgroup_card_type\x18\x07 \x01(\r\x12\x12\n\ngroup_name\x18\x08 \x01(\x0c\"\xb6\x01\n\x03Msg\x12#\n\x04head\x18\x01 \x01(\x0b\x32\x15.msf.msg.comm.MsgHead\x12/\n\x0c\x63ontent_head\x18\x02 \x01(\x0b\x32\x19.msf.msg.comm.ContentHead\x12&\n\x04\x62ody\x18\x03 \x01(\x0b\x32\x18.im.msg.msg_body.MsgBody\x12\x31\n\rappshare_info\x18\x04 \x01(\x0b\x32\x1a.msf.msg.comm.AppShareInfo\"\xec\x05\n\x07MsgHead\x12\x10\n\x08\x66rom_uin\x18\x01 \x01(\x04\x12\x0e\n\x06to_uin\x18\x02 \x01(\x04\x12\x0c\n\x04type\x18\x03 \x01(\r\x12\x0f\n\x07\x63\x32\x63_cmd\x18\x04 \x01(\r\x12\x0b\n\x03seq\x18\x05 \x01(\r\x12\x0c\n\x04time\x18\x06 \x01(\r\x12\x0b\n\x03uid\x18\x07 \x01(\x04\x12\x35\n\x10\x63\x32\x63_tmp_msg_head\x18\x08 \x01(\x0b\x32\x1b.msf.msg.comm.C2CTmpMsgHead\x12+\n\ngroup_info\x18\t \x01(\x0b\x32\x17.msf.msg.comm.GroupInfo\x12\x12\n\nfrom_appid\x18\n \x01(\r\x12\x13\n\x0b\x66rom_instid\x18\x0b \x01(\r\x12\x13\n\x0buser_active\x18\x0c \x01(\r\x12/\n\x0c\x64iscuss_info\x18\r \x01(\x0b\x32\x19.msf.msg.comm.DiscussInfo\x12\x11\n\tfrom_nick\x18\x0e \x01(\t\x12\x10\n\x08\x61uth_uin\x18\x0f \x01(\x04\x12\x11\n\tauth_nick\x18\x10 \x01(\t\x12\x0c\n\x04\x66lag\x18\x11 \x01(\r\x12\x13\n\x0b\x61uth_remark\x18\x12 \x01(\t\x12\x12\n\ngroup_name\x18\x13 \x01(\t\x12\x35\n\x0fmutiltrans_head\x18\x14 \x01(\x0b\x32\x1c.msf.msg.comm.MutilTransHead\x12,\n\tinst_ctrl\x18\x15 \x01(\x0b\x32\x19.im.msg.msg_head.InstCtrl\x12&\n\x1epublic_account_group_send_flag\x18\x16 \x01(\r\x12\x1b\n\x13wseq_in_c2c_msghead\x18\x17 \x01(\r\x12\x0c\n\x04\x63pid\x18\x18 \x01(\x04\x12\x39\n\x12\x65xt_group_key_info\x18\x19 \x01(\x0b\x32\x1d.msf.msg.comm.ExtGroupKeyInfo\x12\x1d\n\x15multi_compatible_text\x18\x1a \x01(\t\x12\x10\n\x08\x61uth_sex\x18\x1b \x01(\r\x12\x12\n\nis_src_msg\x18\x1c \x01(\x08\"5\n\x0cMsgType0x210\x12\x14\n\x0csub_msg_type\x18\x01 \x01(\r\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\"0\n\x0eMutilTransHead\x12\x0e\n\x06status\x18\x01 \x01(\r\x12\x0e\n\x06msg_id\x18\x02 \x01(\r\"\xd7\x01\n\nPluginInfo\x12\x0e\n\x06res_id\x18\x01 \x01(\r\x12\x10\n\x08pkg_name\x18\x02 \x01(\t\x12\x0f\n\x07new_ver\x18\x03 \x01(\r\x12\x10\n\x08res_type\x18\x04 \x01(\r\x12\x10\n\x08lan_type\x18\x05 \x01(\r\x12\x10\n\x08priority\x18\x06 \x01(\r\x12\x10\n\x08res_name\x18\x07 \x01(\t\x12\x10\n\x08res_desc\x18\x08 \x01(\t\x12\x13\n\x0bres_url_big\x18\t \x01(\t\x12\x15\n\rres_url_small\x18\n \x01(\t\x12\x10\n\x08res_conf\x18\x0b \x01(\t\"%\n\x08Uin2Nick\x12\x0b\n\x03uin\x18\x01 \x01(\x04\x12\x0c\n\x04nick\x18\x02 \x01(\t\"\xd1\x01\n\nUinPairMsg\x12\x16\n\x0elast_read_time\x18\x01 \x01(\r\x12\x10\n\x08peer_uin\x18\x02 \x01(\x04\x12\x11\n\tcompleted\x18\x03 \x01(\r\x12\x1e\n\x03msg\x18\x04 \x03(\x0b\x32\x11.msf.msg.comm.Msg\x12\x16\n\x0eunread_msg_num\x18\x05 \x01(\r\x12\x10\n\x08\x63\x32\x63_type\x18\x08 \x01(\r\x12\x14\n\x0cservice_type\x18\t \x01(\r\x12\x12\n\npb_reserve\x18\n \x01(\x0c\x12\x12\n\nto_tiny_id\x18\x0b \x01(\x04') - -_APPSHAREINFO = _descriptor.Descriptor( - name='AppShareInfo', - full_name='msf.msg.comm.AppShareInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='appshare_id', full_name='msf.msg.comm.AppShareInfo.appshare_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='appshare_cookie', full_name='msf.msg.comm.AppShareInfo.appshare_cookie', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='appshare_resource', full_name='msf.msg.comm.AppShareInfo.appshare_resource', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=126, - serialized_end=239, -) - - -_C2CTMPMSGHEAD = _descriptor.Descriptor( - name='C2CTmpMsgHead', - full_name='msf.msg.comm.C2CTmpMsgHead', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='c2c_type', full_name='msf.msg.comm.C2CTmpMsgHead.c2c_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='service_type', full_name='msf.msg.comm.C2CTmpMsgHead.service_type', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_uin', full_name='msf.msg.comm.C2CTmpMsgHead.group_uin', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_code', full_name='msf.msg.comm.C2CTmpMsgHead.group_code', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.comm.C2CTmpMsgHead.sig', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig_type', full_name='msf.msg.comm.C2CTmpMsgHead.sig_type', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='from_phone', full_name='msf.msg.comm.C2CTmpMsgHead.from_phone', index=6, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_phone', full_name='msf.msg.comm.C2CTmpMsgHead.to_phone', index=7, - number=8, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='lock_display', full_name='msf.msg.comm.C2CTmpMsgHead.lock_display', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='direction_flag', full_name='msf.msg.comm.C2CTmpMsgHead.direction_flag', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reserved', full_name='msf.msg.comm.C2CTmpMsgHead.reserved', index=10, - number=11, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='business_name', full_name='msf.msg.comm.C2CTmpMsgHead.business_name', index=11, - number=14, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='business_sub_content', full_name='msf.msg.comm.C2CTmpMsgHead.business_sub_content', index=12, - number=15, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=242, - serialized_end=522, -) - - -_CONTENTHEAD = _descriptor.Descriptor( - name='ContentHead', - full_name='msf.msg.comm.ContentHead', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='pkg_num', full_name='msf.msg.comm.ContentHead.pkg_num', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pkg_index', full_name='msf.msg.comm.ContentHead.pkg_index', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='div_seq', full_name='msf.msg.comm.ContentHead.div_seq', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='auto_reply', full_name='msf.msg.comm.ContentHead.auto_reply', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=524, - serialized_end=610, -) - - -_DISCUSSINFO = _descriptor.Descriptor( - name='DiscussInfo', - full_name='msf.msg.comm.DiscussInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='discuss_uin', full_name='msf.msg.comm.DiscussInfo.discuss_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='discuss_type', full_name='msf.msg.comm.DiscussInfo.discuss_type', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='discuss_info_seq', full_name='msf.msg.comm.DiscussInfo.discuss_info_seq', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='discuss_remark', full_name='msf.msg.comm.DiscussInfo.discuss_remark', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='discuss_name', full_name='msf.msg.comm.DiscussInfo.discuss_name', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=613, - serialized_end=741, -) - - -_EXTGROUPKEYINFO = _descriptor.Descriptor( - name='ExtGroupKeyInfo', - full_name='msf.msg.comm.ExtGroupKeyInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='cur_max_seq', full_name='msf.msg.comm.ExtGroupKeyInfo.cur_max_seq', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cur_time', full_name='msf.msg.comm.ExtGroupKeyInfo.cur_time', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='operate_by_parents', full_name='msf.msg.comm.ExtGroupKeyInfo.operate_by_parents', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ext_group_info', full_name='msf.msg.comm.ExtGroupKeyInfo.ext_group_info', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=743, - serialized_end=851, -) - - -_GROUPINFO = _descriptor.Descriptor( - name='GroupInfo', - full_name='msf.msg.comm.GroupInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='group_code', full_name='msf.msg.comm.GroupInfo.group_code', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_type', full_name='msf.msg.comm.GroupInfo.group_type', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_info_seq', full_name='msf.msg.comm.GroupInfo.group_info_seq', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_card', full_name='msf.msg.comm.GroupInfo.group_card', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_rank', full_name='msf.msg.comm.GroupInfo.group_rank', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_level', full_name='msf.msg.comm.GroupInfo.group_level', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_card_type', full_name='msf.msg.comm.GroupInfo.group_card_type', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_name', full_name='msf.msg.comm.GroupInfo.group_name', index=7, - number=8, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=854, - serialized_end=1035, -) - - -_MSG = _descriptor.Descriptor( - name='Msg', - full_name='msf.msg.comm.Msg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='head', full_name='msf.msg.comm.Msg.head', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='content_head', full_name='msf.msg.comm.Msg.content_head', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='body', full_name='msf.msg.comm.Msg.body', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='appshare_info', full_name='msf.msg.comm.Msg.appshare_info', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1038, - serialized_end=1220, -) - - -_MSGHEAD = _descriptor.Descriptor( - name='MsgHead', - full_name='msf.msg.comm.MsgHead', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='from_uin', full_name='msf.msg.comm.MsgHead.from_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.comm.MsgHead.to_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='type', full_name='msf.msg.comm.MsgHead.type', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='c2c_cmd', full_name='msf.msg.comm.MsgHead.c2c_cmd', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='seq', full_name='msf.msg.comm.MsgHead.seq', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='time', full_name='msf.msg.comm.MsgHead.time', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='uid', full_name='msf.msg.comm.MsgHead.uid', index=6, - number=7, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='c2c_tmp_msg_head', full_name='msf.msg.comm.MsgHead.c2c_tmp_msg_head', index=7, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_info', full_name='msf.msg.comm.MsgHead.group_info', index=8, - number=9, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='from_appid', full_name='msf.msg.comm.MsgHead.from_appid', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='from_instid', full_name='msf.msg.comm.MsgHead.from_instid', index=10, - number=11, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='user_active', full_name='msf.msg.comm.MsgHead.user_active', index=11, - number=12, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='discuss_info', full_name='msf.msg.comm.MsgHead.discuss_info', index=12, - number=13, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='from_nick', full_name='msf.msg.comm.MsgHead.from_nick', index=13, - number=14, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='auth_uin', full_name='msf.msg.comm.MsgHead.auth_uin', index=14, - number=15, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='auth_nick', full_name='msf.msg.comm.MsgHead.auth_nick', index=15, - number=16, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='flag', full_name='msf.msg.comm.MsgHead.flag', index=16, - number=17, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='auth_remark', full_name='msf.msg.comm.MsgHead.auth_remark', index=17, - number=18, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_name', full_name='msf.msg.comm.MsgHead.group_name', index=18, - number=19, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='mutiltrans_head', full_name='msf.msg.comm.MsgHead.mutiltrans_head', index=19, - number=20, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='inst_ctrl', full_name='msf.msg.comm.MsgHead.inst_ctrl', index=20, - number=21, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='public_account_group_send_flag', full_name='msf.msg.comm.MsgHead.public_account_group_send_flag', index=21, - number=22, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='wseq_in_c2c_msghead', full_name='msf.msg.comm.MsgHead.wseq_in_c2c_msghead', index=22, - number=23, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cpid', full_name='msf.msg.comm.MsgHead.cpid', index=23, - number=24, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ext_group_key_info', full_name='msf.msg.comm.MsgHead.ext_group_key_info', index=24, - number=25, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='multi_compatible_text', full_name='msf.msg.comm.MsgHead.multi_compatible_text', index=25, - number=26, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='auth_sex', full_name='msf.msg.comm.MsgHead.auth_sex', index=26, - number=27, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_src_msg', full_name='msf.msg.comm.MsgHead.is_src_msg', index=27, - number=28, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1223, - serialized_end=1971, -) - - -_MSGTYPE0X210 = _descriptor.Descriptor( - name='MsgType0x210', - full_name='msf.msg.comm.MsgType0x210', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='sub_msg_type', full_name='msf.msg.comm.MsgType0x210.sub_msg_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='content', full_name='msf.msg.comm.MsgType0x210.content', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1973, - serialized_end=2026, -) - - -_MUTILTRANSHEAD = _descriptor.Descriptor( - name='MutilTransHead', - full_name='msf.msg.comm.MutilTransHead', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='status', full_name='msf.msg.comm.MutilTransHead.status', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_id', full_name='msf.msg.comm.MutilTransHead.msg_id', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2028, - serialized_end=2076, -) - - -_PLUGININFO = _descriptor.Descriptor( - name='PluginInfo', - full_name='msf.msg.comm.PluginInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='res_id', full_name='msf.msg.comm.PluginInfo.res_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pkg_name', full_name='msf.msg.comm.PluginInfo.pkg_name', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='new_ver', full_name='msf.msg.comm.PluginInfo.new_ver', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='res_type', full_name='msf.msg.comm.PluginInfo.res_type', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='lan_type', full_name='msf.msg.comm.PluginInfo.lan_type', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='priority', full_name='msf.msg.comm.PluginInfo.priority', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='res_name', full_name='msf.msg.comm.PluginInfo.res_name', index=6, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='res_desc', full_name='msf.msg.comm.PluginInfo.res_desc', index=7, - number=8, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='res_url_big', full_name='msf.msg.comm.PluginInfo.res_url_big', index=8, - number=9, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='res_url_small', full_name='msf.msg.comm.PluginInfo.res_url_small', index=9, - number=10, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='res_conf', full_name='msf.msg.comm.PluginInfo.res_conf', index=10, - number=11, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2079, - serialized_end=2294, -) - - -_UIN2NICK = _descriptor.Descriptor( - name='Uin2Nick', - full_name='msf.msg.comm.Uin2Nick', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='uin', full_name='msf.msg.comm.Uin2Nick.uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='nick', full_name='msf.msg.comm.Uin2Nick.nick', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2296, - serialized_end=2333, -) - - -_UINPAIRMSG = _descriptor.Descriptor( - name='UinPairMsg', - full_name='msf.msg.comm.UinPairMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='last_read_time', full_name='msf.msg.comm.UinPairMsg.last_read_time', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='peer_uin', full_name='msf.msg.comm.UinPairMsg.peer_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='completed', full_name='msf.msg.comm.UinPairMsg.completed', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg', full_name='msf.msg.comm.UinPairMsg.msg', index=3, - number=4, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='unread_msg_num', full_name='msf.msg.comm.UinPairMsg.unread_msg_num', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='c2c_type', full_name='msf.msg.comm.UinPairMsg.c2c_type', index=5, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='service_type', full_name='msf.msg.comm.UinPairMsg.service_type', index=6, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='msf.msg.comm.UinPairMsg.pb_reserve', index=7, - number=10, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_tiny_id', full_name='msf.msg.comm.UinPairMsg.to_tiny_id', index=8, - number=11, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2336, - serialized_end=2545, -) - -_APPSHAREINFO.fields_by_name['appshare_resource'].message_type = _PLUGININFO -_MSG.fields_by_name['head'].message_type = _MSGHEAD -_MSG.fields_by_name['content_head'].message_type = _CONTENTHEAD -_MSG.fields_by_name['body'].message_type = cai_dot_pb_dot_im_dot_msg_dot_msg__body_dot_msg__body__pb2._MSGBODY -_MSG.fields_by_name['appshare_info'].message_type = _APPSHAREINFO -_MSGHEAD.fields_by_name['c2c_tmp_msg_head'].message_type = _C2CTMPMSGHEAD -_MSGHEAD.fields_by_name['group_info'].message_type = _GROUPINFO -_MSGHEAD.fields_by_name['discuss_info'].message_type = _DISCUSSINFO -_MSGHEAD.fields_by_name['mutiltrans_head'].message_type = _MUTILTRANSHEAD -_MSGHEAD.fields_by_name['inst_ctrl'].message_type = cai_dot_pb_dot_im_dot_msg_dot_msg__head_dot_msg__head__pb2._INSTCTRL -_MSGHEAD.fields_by_name['ext_group_key_info'].message_type = _EXTGROUPKEYINFO -_UINPAIRMSG.fields_by_name['msg'].message_type = _MSG -DESCRIPTOR.message_types_by_name['AppShareInfo'] = _APPSHAREINFO -DESCRIPTOR.message_types_by_name['C2CTmpMsgHead'] = _C2CTMPMSGHEAD -DESCRIPTOR.message_types_by_name['ContentHead'] = _CONTENTHEAD -DESCRIPTOR.message_types_by_name['DiscussInfo'] = _DISCUSSINFO -DESCRIPTOR.message_types_by_name['ExtGroupKeyInfo'] = _EXTGROUPKEYINFO -DESCRIPTOR.message_types_by_name['GroupInfo'] = _GROUPINFO -DESCRIPTOR.message_types_by_name['Msg'] = _MSG -DESCRIPTOR.message_types_by_name['MsgHead'] = _MSGHEAD -DESCRIPTOR.message_types_by_name['MsgType0x210'] = _MSGTYPE0X210 -DESCRIPTOR.message_types_by_name['MutilTransHead'] = _MUTILTRANSHEAD -DESCRIPTOR.message_types_by_name['PluginInfo'] = _PLUGININFO -DESCRIPTOR.message_types_by_name['Uin2Nick'] = _UIN2NICK -DESCRIPTOR.message_types_by_name['UinPairMsg'] = _UINPAIRMSG -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - +_APPSHAREINFO = DESCRIPTOR.message_types_by_name['AppShareInfo'] +_C2CTMPMSGHEAD = DESCRIPTOR.message_types_by_name['C2CTmpMsgHead'] +_CONTENTHEAD = DESCRIPTOR.message_types_by_name['ContentHead'] +_DISCUSSINFO = DESCRIPTOR.message_types_by_name['DiscussInfo'] +_EXTGROUPKEYINFO = DESCRIPTOR.message_types_by_name['ExtGroupKeyInfo'] +_GROUPINFO = DESCRIPTOR.message_types_by_name['GroupInfo'] +_MSG = DESCRIPTOR.message_types_by_name['Msg'] +_MSGHEAD = DESCRIPTOR.message_types_by_name['MsgHead'] +_MSGTYPE0X210 = DESCRIPTOR.message_types_by_name['MsgType0x210'] +_MUTILTRANSHEAD = DESCRIPTOR.message_types_by_name['MutilTransHead'] +_PLUGININFO = DESCRIPTOR.message_types_by_name['PluginInfo'] +_UIN2NICK = DESCRIPTOR.message_types_by_name['Uin2Nick'] +_UINPAIRMSG = DESCRIPTOR.message_types_by_name['UinPairMsg'] AppShareInfo = _reflection.GeneratedProtocolMessageType('AppShareInfo', (_message.Message,), { 'DESCRIPTOR' : _APPSHAREINFO, '__module__' : 'cai.pb.msf.msg.comm.comm_pb2' @@ -1135,5 +124,33 @@ }) _sym_db.RegisterMessage(UinPairMsg) - +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _APPSHAREINFO._serialized_start=126 + _APPSHAREINFO._serialized_end=239 + _C2CTMPMSGHEAD._serialized_start=242 + _C2CTMPMSGHEAD._serialized_end=522 + _CONTENTHEAD._serialized_start=524 + _CONTENTHEAD._serialized_end=610 + _DISCUSSINFO._serialized_start=613 + _DISCUSSINFO._serialized_end=741 + _EXTGROUPKEYINFO._serialized_start=743 + _EXTGROUPKEYINFO._serialized_end=851 + _GROUPINFO._serialized_start=854 + _GROUPINFO._serialized_end=1035 + _MSG._serialized_start=1038 + _MSG._serialized_end=1220 + _MSGHEAD._serialized_start=1223 + _MSGHEAD._serialized_end=1971 + _MSGTYPE0X210._serialized_start=1973 + _MSGTYPE0X210._serialized_end=2026 + _MUTILTRANSHEAD._serialized_start=2028 + _MUTILTRANSHEAD._serialized_end=2076 + _PLUGININFO._serialized_start=2079 + _PLUGININFO._serialized_end=2294 + _UIN2NICK._serialized_start=2296 + _UIN2NICK._serialized_end=2333 + _UINPAIRMSG._serialized_start=2336 + _UINPAIRMSG._serialized_end=2545 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/msf/msg/comm/comm_pb2.pyi b/cai/pb/msf/msg/comm/comm_pb2.pyi index c5c1d143..8e7eec06 100644 --- a/cai/pb/msf/msg/comm/comm_pb2.pyi +++ b/cai/pb/msf/msg/comm/comm_pb2.pyi @@ -40,30 +40,28 @@ from typing_extensions import ( ) -DESCRIPTOR: FileDescriptor = ... +DESCRIPTOR: FileDescriptor class AppShareInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor APPSHARE_ID_FIELD_NUMBER: int APPSHARE_COOKIE_FIELD_NUMBER: int APPSHARE_RESOURCE_FIELD_NUMBER: int - appshare_id: int = ... - appshare_cookie: bytes = ... - + appshare_id: int + appshare_cookie: bytes @property def appshare_resource(self) -> PluginInfo: ... - def __init__(self, *, - appshare_id : Optional[int] = ..., - appshare_cookie : Optional[bytes] = ..., - appshare_resource : Optional[PluginInfo] = ..., + appshare_id: Optional[int] = ..., + appshare_cookie: Optional[bytes] = ..., + appshare_resource: Optional[PluginInfo] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"appshare_cookie",b"appshare_cookie",u"appshare_id",b"appshare_id",u"appshare_resource",b"appshare_resource"]) -> bool: ... - def ClearField(self, field_name: Literal[u"appshare_cookie",b"appshare_cookie",u"appshare_id",b"appshare_id",u"appshare_resource",b"appshare_resource"]) -> None: ... + def HasField(self, field_name: Literal["appshare_cookie",b"appshare_cookie","appshare_id",b"appshare_id","appshare_resource",b"appshare_resource"]) -> bool: ... + def ClearField(self, field_name: Literal["appshare_cookie",b"appshare_cookie","appshare_id",b"appshare_id","appshare_resource",b"appshare_resource"]) -> None: ... class C2CTmpMsgHead(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor C2C_TYPE_FIELD_NUMBER: int SERVICE_TYPE_FIELD_NUMBER: int GROUP_UIN_FIELD_NUMBER: int @@ -77,107 +75,103 @@ class C2CTmpMsgHead(Message): RESERVED_FIELD_NUMBER: int BUSINESS_NAME_FIELD_NUMBER: int BUSINESS_SUB_CONTENT_FIELD_NUMBER: int - c2c_type: int = ... - service_type: int = ... - group_uin: int = ... - group_code: int = ... - sig: bytes = ... - sig_type: int = ... - from_phone: Text = ... - to_phone: Text = ... - lock_display: int = ... - direction_flag: int = ... - reserved: bytes = ... - business_name: bytes = ... - business_sub_content: bytes = ... - + c2c_type: int + service_type: int + group_uin: int + group_code: int + sig: bytes + sig_type: int + from_phone: Text + to_phone: Text + lock_display: int + direction_flag: int + reserved: bytes + business_name: bytes + business_sub_content: bytes def __init__(self, *, - c2c_type : Optional[int] = ..., - service_type : Optional[int] = ..., - group_uin : Optional[int] = ..., - group_code : Optional[int] = ..., - sig : Optional[bytes] = ..., - sig_type : Optional[int] = ..., - from_phone : Optional[Text] = ..., - to_phone : Optional[Text] = ..., - lock_display : Optional[int] = ..., - direction_flag : Optional[int] = ..., - reserved : Optional[bytes] = ..., - business_name : Optional[bytes] = ..., - business_sub_content : Optional[bytes] = ..., + c2c_type: Optional[int] = ..., + service_type: Optional[int] = ..., + group_uin: Optional[int] = ..., + group_code: Optional[int] = ..., + sig: Optional[bytes] = ..., + sig_type: Optional[int] = ..., + from_phone: Optional[Text] = ..., + to_phone: Optional[Text] = ..., + lock_display: Optional[int] = ..., + direction_flag: Optional[int] = ..., + reserved: Optional[bytes] = ..., + business_name: Optional[bytes] = ..., + business_sub_content: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"business_name",b"business_name",u"business_sub_content",b"business_sub_content",u"c2c_type",b"c2c_type",u"direction_flag",b"direction_flag",u"from_phone",b"from_phone",u"group_code",b"group_code",u"group_uin",b"group_uin",u"lock_display",b"lock_display",u"reserved",b"reserved",u"service_type",b"service_type",u"sig",b"sig",u"sig_type",b"sig_type",u"to_phone",b"to_phone"]) -> bool: ... - def ClearField(self, field_name: Literal[u"business_name",b"business_name",u"business_sub_content",b"business_sub_content",u"c2c_type",b"c2c_type",u"direction_flag",b"direction_flag",u"from_phone",b"from_phone",u"group_code",b"group_code",u"group_uin",b"group_uin",u"lock_display",b"lock_display",u"reserved",b"reserved",u"service_type",b"service_type",u"sig",b"sig",u"sig_type",b"sig_type",u"to_phone",b"to_phone"]) -> None: ... + def HasField(self, field_name: Literal["business_name",b"business_name","business_sub_content",b"business_sub_content","c2c_type",b"c2c_type","direction_flag",b"direction_flag","from_phone",b"from_phone","group_code",b"group_code","group_uin",b"group_uin","lock_display",b"lock_display","reserved",b"reserved","service_type",b"service_type","sig",b"sig","sig_type",b"sig_type","to_phone",b"to_phone"]) -> bool: ... + def ClearField(self, field_name: Literal["business_name",b"business_name","business_sub_content",b"business_sub_content","c2c_type",b"c2c_type","direction_flag",b"direction_flag","from_phone",b"from_phone","group_code",b"group_code","group_uin",b"group_uin","lock_display",b"lock_display","reserved",b"reserved","service_type",b"service_type","sig",b"sig","sig_type",b"sig_type","to_phone",b"to_phone"]) -> None: ... class ContentHead(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor PKG_NUM_FIELD_NUMBER: int PKG_INDEX_FIELD_NUMBER: int DIV_SEQ_FIELD_NUMBER: int AUTO_REPLY_FIELD_NUMBER: int - pkg_num: int = ... - pkg_index: int = ... - div_seq: int = ... - auto_reply: int = ... - + pkg_num: int + pkg_index: int + div_seq: int + auto_reply: int def __init__(self, *, - pkg_num : Optional[int] = ..., - pkg_index : Optional[int] = ..., - div_seq : Optional[int] = ..., - auto_reply : Optional[int] = ..., + pkg_num: Optional[int] = ..., + pkg_index: Optional[int] = ..., + div_seq: Optional[int] = ..., + auto_reply: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"auto_reply",b"auto_reply",u"div_seq",b"div_seq",u"pkg_index",b"pkg_index",u"pkg_num",b"pkg_num"]) -> bool: ... - def ClearField(self, field_name: Literal[u"auto_reply",b"auto_reply",u"div_seq",b"div_seq",u"pkg_index",b"pkg_index",u"pkg_num",b"pkg_num"]) -> None: ... + def HasField(self, field_name: Literal["auto_reply",b"auto_reply","div_seq",b"div_seq","pkg_index",b"pkg_index","pkg_num",b"pkg_num"]) -> bool: ... + def ClearField(self, field_name: Literal["auto_reply",b"auto_reply","div_seq",b"div_seq","pkg_index",b"pkg_index","pkg_num",b"pkg_num"]) -> None: ... class DiscussInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor DISCUSS_UIN_FIELD_NUMBER: int DISCUSS_TYPE_FIELD_NUMBER: int DISCUSS_INFO_SEQ_FIELD_NUMBER: int DISCUSS_REMARK_FIELD_NUMBER: int DISCUSS_NAME_FIELD_NUMBER: int - discuss_uin: int = ... - discuss_type: int = ... - discuss_info_seq: int = ... - discuss_remark: bytes = ... - discuss_name: bytes = ... - + discuss_uin: int + discuss_type: int + discuss_info_seq: int + discuss_remark: bytes + discuss_name: bytes def __init__(self, *, - discuss_uin : Optional[int] = ..., - discuss_type : Optional[int] = ..., - discuss_info_seq : Optional[int] = ..., - discuss_remark : Optional[bytes] = ..., - discuss_name : Optional[bytes] = ..., + discuss_uin: Optional[int] = ..., + discuss_type: Optional[int] = ..., + discuss_info_seq: Optional[int] = ..., + discuss_remark: Optional[bytes] = ..., + discuss_name: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"discuss_info_seq",b"discuss_info_seq",u"discuss_name",b"discuss_name",u"discuss_remark",b"discuss_remark",u"discuss_type",b"discuss_type",u"discuss_uin",b"discuss_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"discuss_info_seq",b"discuss_info_seq",u"discuss_name",b"discuss_name",u"discuss_remark",b"discuss_remark",u"discuss_type",b"discuss_type",u"discuss_uin",b"discuss_uin"]) -> None: ... + def HasField(self, field_name: Literal["discuss_info_seq",b"discuss_info_seq","discuss_name",b"discuss_name","discuss_remark",b"discuss_remark","discuss_type",b"discuss_type","discuss_uin",b"discuss_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["discuss_info_seq",b"discuss_info_seq","discuss_name",b"discuss_name","discuss_remark",b"discuss_remark","discuss_type",b"discuss_type","discuss_uin",b"discuss_uin"]) -> None: ... class ExtGroupKeyInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor CUR_MAX_SEQ_FIELD_NUMBER: int CUR_TIME_FIELD_NUMBER: int OPERATE_BY_PARENTS_FIELD_NUMBER: int EXT_GROUP_INFO_FIELD_NUMBER: int - cur_max_seq: int = ... - cur_time: int = ... - operate_by_parents: int = ... - ext_group_info: bytes = ... - + cur_max_seq: int + cur_time: int + operate_by_parents: int + ext_group_info: bytes def __init__(self, *, - cur_max_seq : Optional[int] = ..., - cur_time : Optional[int] = ..., - operate_by_parents : Optional[int] = ..., - ext_group_info : Optional[bytes] = ..., + cur_max_seq: Optional[int] = ..., + cur_time: Optional[int] = ..., + operate_by_parents: Optional[int] = ..., + ext_group_info: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"cur_max_seq",b"cur_max_seq",u"cur_time",b"cur_time",u"ext_group_info",b"ext_group_info",u"operate_by_parents",b"operate_by_parents"]) -> bool: ... - def ClearField(self, field_name: Literal[u"cur_max_seq",b"cur_max_seq",u"cur_time",b"cur_time",u"ext_group_info",b"ext_group_info",u"operate_by_parents",b"operate_by_parents"]) -> None: ... + def HasField(self, field_name: Literal["cur_max_seq",b"cur_max_seq","cur_time",b"cur_time","ext_group_info",b"ext_group_info","operate_by_parents",b"operate_by_parents"]) -> bool: ... + def ClearField(self, field_name: Literal["cur_max_seq",b"cur_max_seq","cur_time",b"cur_time","ext_group_info",b"ext_group_info","operate_by_parents",b"operate_by_parents"]) -> None: ... class GroupInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor GROUP_CODE_FIELD_NUMBER: int GROUP_TYPE_FIELD_NUMBER: int GROUP_INFO_SEQ_FIELD_NUMBER: int @@ -186,60 +180,54 @@ class GroupInfo(Message): GROUP_LEVEL_FIELD_NUMBER: int GROUP_CARD_TYPE_FIELD_NUMBER: int GROUP_NAME_FIELD_NUMBER: int - group_code: int = ... - group_type: int = ... - group_info_seq: int = ... - group_card: bytes = ... - group_rank: bytes = ... - group_level: int = ... - group_card_type: int = ... - group_name: bytes = ... - + group_code: int + group_type: int + group_info_seq: int + group_card: bytes + group_rank: bytes + group_level: int + group_card_type: int + group_name: bytes def __init__(self, *, - group_code : Optional[int] = ..., - group_type : Optional[int] = ..., - group_info_seq : Optional[int] = ..., - group_card : Optional[bytes] = ..., - group_rank : Optional[bytes] = ..., - group_level : Optional[int] = ..., - group_card_type : Optional[int] = ..., - group_name : Optional[bytes] = ..., + group_code: Optional[int] = ..., + group_type: Optional[int] = ..., + group_info_seq: Optional[int] = ..., + group_card: Optional[bytes] = ..., + group_rank: Optional[bytes] = ..., + group_level: Optional[int] = ..., + group_card_type: Optional[int] = ..., + group_name: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"group_card",b"group_card",u"group_card_type",b"group_card_type",u"group_code",b"group_code",u"group_info_seq",b"group_info_seq",u"group_level",b"group_level",u"group_name",b"group_name",u"group_rank",b"group_rank",u"group_type",b"group_type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"group_card",b"group_card",u"group_card_type",b"group_card_type",u"group_code",b"group_code",u"group_info_seq",b"group_info_seq",u"group_level",b"group_level",u"group_name",b"group_name",u"group_rank",b"group_rank",u"group_type",b"group_type"]) -> None: ... + def HasField(self, field_name: Literal["group_card",b"group_card","group_card_type",b"group_card_type","group_code",b"group_code","group_info_seq",b"group_info_seq","group_level",b"group_level","group_name",b"group_name","group_rank",b"group_rank","group_type",b"group_type"]) -> bool: ... + def ClearField(self, field_name: Literal["group_card",b"group_card","group_card_type",b"group_card_type","group_code",b"group_code","group_info_seq",b"group_info_seq","group_level",b"group_level","group_name",b"group_name","group_rank",b"group_rank","group_type",b"group_type"]) -> None: ... class Msg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor HEAD_FIELD_NUMBER: int CONTENT_HEAD_FIELD_NUMBER: int BODY_FIELD_NUMBER: int APPSHARE_INFO_FIELD_NUMBER: int - @property def head(self) -> MsgHead: ... - @property def content_head(self) -> ContentHead: ... - @property def body(self) -> MsgBody: ... - @property def appshare_info(self) -> AppShareInfo: ... - def __init__(self, *, - head : Optional[MsgHead] = ..., - content_head : Optional[ContentHead] = ..., - body : Optional[MsgBody] = ..., - appshare_info : Optional[AppShareInfo] = ..., + head: Optional[MsgHead] = ..., + content_head: Optional[ContentHead] = ..., + body: Optional[MsgBody] = ..., + appshare_info: Optional[AppShareInfo] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"appshare_info",b"appshare_info",u"body",b"body",u"content_head",b"content_head",u"head",b"head"]) -> bool: ... - def ClearField(self, field_name: Literal[u"appshare_info",b"appshare_info",u"body",b"body",u"content_head",b"content_head",u"head",b"head"]) -> None: ... + def HasField(self, field_name: Literal["appshare_info",b"appshare_info","body",b"body","content_head",b"content_head","head",b"head"]) -> bool: ... + def ClearField(self, field_name: Literal["appshare_info",b"appshare_info","body",b"body","content_head",b"content_head","head",b"head"]) -> None: ... class MsgHead(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FROM_UIN_FIELD_NUMBER: int TO_UIN_FIELD_NUMBER: int TYPE_FIELD_NUMBER: int @@ -268,113 +256,104 @@ class MsgHead(Message): MULTI_COMPATIBLE_TEXT_FIELD_NUMBER: int AUTH_SEX_FIELD_NUMBER: int IS_SRC_MSG_FIELD_NUMBER: int - from_uin: int = ... - to_uin: int = ... - type: int = ... - c2c_cmd: int = ... - seq: int = ... - time: int = ... - uid: int = ... - from_appid: int = ... - from_instid: int = ... - user_active: int = ... - from_nick: Text = ... - auth_uin: int = ... - auth_nick: Text = ... - flag: int = ... - auth_remark: Text = ... - group_name: Text = ... - public_account_group_send_flag: int = ... - wseq_in_c2c_msghead: int = ... - cpid: int = ... - multi_compatible_text: Text = ... - auth_sex: int = ... - is_src_msg: bool = ... - + from_uin: int + to_uin: int + type: int + c2c_cmd: int + seq: int + time: int + uid: int @property def c2c_tmp_msg_head(self) -> C2CTmpMsgHead: ... - @property def group_info(self) -> GroupInfo: ... - + from_appid: int + from_instid: int + user_active: int @property def discuss_info(self) -> DiscussInfo: ... - + from_nick: Text + auth_uin: int + auth_nick: Text + flag: int + auth_remark: Text + group_name: Text @property def mutiltrans_head(self) -> MutilTransHead: ... - @property def inst_ctrl(self) -> InstCtrl: ... - + public_account_group_send_flag: int + wseq_in_c2c_msghead: int + cpid: int @property def ext_group_key_info(self) -> ExtGroupKeyInfo: ... - + multi_compatible_text: Text + auth_sex: int + is_src_msg: bool def __init__(self, *, - from_uin : Optional[int] = ..., - to_uin : Optional[int] = ..., - type : Optional[int] = ..., - c2c_cmd : Optional[int] = ..., - seq : Optional[int] = ..., - time : Optional[int] = ..., - uid : Optional[int] = ..., - c2c_tmp_msg_head : Optional[C2CTmpMsgHead] = ..., - group_info : Optional[GroupInfo] = ..., - from_appid : Optional[int] = ..., - from_instid : Optional[int] = ..., - user_active : Optional[int] = ..., - discuss_info : Optional[DiscussInfo] = ..., - from_nick : Optional[Text] = ..., - auth_uin : Optional[int] = ..., - auth_nick : Optional[Text] = ..., - flag : Optional[int] = ..., - auth_remark : Optional[Text] = ..., - group_name : Optional[Text] = ..., - mutiltrans_head : Optional[MutilTransHead] = ..., - inst_ctrl : Optional[InstCtrl] = ..., - public_account_group_send_flag : Optional[int] = ..., - wseq_in_c2c_msghead : Optional[int] = ..., - cpid : Optional[int] = ..., - ext_group_key_info : Optional[ExtGroupKeyInfo] = ..., - multi_compatible_text : Optional[Text] = ..., - auth_sex : Optional[int] = ..., - is_src_msg : Optional[bool] = ..., + from_uin: Optional[int] = ..., + to_uin: Optional[int] = ..., + type: Optional[int] = ..., + c2c_cmd: Optional[int] = ..., + seq: Optional[int] = ..., + time: Optional[int] = ..., + uid: Optional[int] = ..., + c2c_tmp_msg_head: Optional[C2CTmpMsgHead] = ..., + group_info: Optional[GroupInfo] = ..., + from_appid: Optional[int] = ..., + from_instid: Optional[int] = ..., + user_active: Optional[int] = ..., + discuss_info: Optional[DiscussInfo] = ..., + from_nick: Optional[Text] = ..., + auth_uin: Optional[int] = ..., + auth_nick: Optional[Text] = ..., + flag: Optional[int] = ..., + auth_remark: Optional[Text] = ..., + group_name: Optional[Text] = ..., + mutiltrans_head: Optional[MutilTransHead] = ..., + inst_ctrl: Optional[InstCtrl] = ..., + public_account_group_send_flag: Optional[int] = ..., + wseq_in_c2c_msghead: Optional[int] = ..., + cpid: Optional[int] = ..., + ext_group_key_info: Optional[ExtGroupKeyInfo] = ..., + multi_compatible_text: Optional[Text] = ..., + auth_sex: Optional[int] = ..., + is_src_msg: Optional[bool] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"auth_nick",b"auth_nick",u"auth_remark",b"auth_remark",u"auth_sex",b"auth_sex",u"auth_uin",b"auth_uin",u"c2c_cmd",b"c2c_cmd",u"c2c_tmp_msg_head",b"c2c_tmp_msg_head",u"cpid",b"cpid",u"discuss_info",b"discuss_info",u"ext_group_key_info",b"ext_group_key_info",u"flag",b"flag",u"from_appid",b"from_appid",u"from_instid",b"from_instid",u"from_nick",b"from_nick",u"from_uin",b"from_uin",u"group_info",b"group_info",u"group_name",b"group_name",u"inst_ctrl",b"inst_ctrl",u"is_src_msg",b"is_src_msg",u"multi_compatible_text",b"multi_compatible_text",u"mutiltrans_head",b"mutiltrans_head",u"public_account_group_send_flag",b"public_account_group_send_flag",u"seq",b"seq",u"time",b"time",u"to_uin",b"to_uin",u"type",b"type",u"uid",b"uid",u"user_active",b"user_active",u"wseq_in_c2c_msghead",b"wseq_in_c2c_msghead"]) -> bool: ... - def ClearField(self, field_name: Literal[u"auth_nick",b"auth_nick",u"auth_remark",b"auth_remark",u"auth_sex",b"auth_sex",u"auth_uin",b"auth_uin",u"c2c_cmd",b"c2c_cmd",u"c2c_tmp_msg_head",b"c2c_tmp_msg_head",u"cpid",b"cpid",u"discuss_info",b"discuss_info",u"ext_group_key_info",b"ext_group_key_info",u"flag",b"flag",u"from_appid",b"from_appid",u"from_instid",b"from_instid",u"from_nick",b"from_nick",u"from_uin",b"from_uin",u"group_info",b"group_info",u"group_name",b"group_name",u"inst_ctrl",b"inst_ctrl",u"is_src_msg",b"is_src_msg",u"multi_compatible_text",b"multi_compatible_text",u"mutiltrans_head",b"mutiltrans_head",u"public_account_group_send_flag",b"public_account_group_send_flag",u"seq",b"seq",u"time",b"time",u"to_uin",b"to_uin",u"type",b"type",u"uid",b"uid",u"user_active",b"user_active",u"wseq_in_c2c_msghead",b"wseq_in_c2c_msghead"]) -> None: ... + def HasField(self, field_name: Literal["auth_nick",b"auth_nick","auth_remark",b"auth_remark","auth_sex",b"auth_sex","auth_uin",b"auth_uin","c2c_cmd",b"c2c_cmd","c2c_tmp_msg_head",b"c2c_tmp_msg_head","cpid",b"cpid","discuss_info",b"discuss_info","ext_group_key_info",b"ext_group_key_info","flag",b"flag","from_appid",b"from_appid","from_instid",b"from_instid","from_nick",b"from_nick","from_uin",b"from_uin","group_info",b"group_info","group_name",b"group_name","inst_ctrl",b"inst_ctrl","is_src_msg",b"is_src_msg","multi_compatible_text",b"multi_compatible_text","mutiltrans_head",b"mutiltrans_head","public_account_group_send_flag",b"public_account_group_send_flag","seq",b"seq","time",b"time","to_uin",b"to_uin","type",b"type","uid",b"uid","user_active",b"user_active","wseq_in_c2c_msghead",b"wseq_in_c2c_msghead"]) -> bool: ... + def ClearField(self, field_name: Literal["auth_nick",b"auth_nick","auth_remark",b"auth_remark","auth_sex",b"auth_sex","auth_uin",b"auth_uin","c2c_cmd",b"c2c_cmd","c2c_tmp_msg_head",b"c2c_tmp_msg_head","cpid",b"cpid","discuss_info",b"discuss_info","ext_group_key_info",b"ext_group_key_info","flag",b"flag","from_appid",b"from_appid","from_instid",b"from_instid","from_nick",b"from_nick","from_uin",b"from_uin","group_info",b"group_info","group_name",b"group_name","inst_ctrl",b"inst_ctrl","is_src_msg",b"is_src_msg","multi_compatible_text",b"multi_compatible_text","mutiltrans_head",b"mutiltrans_head","public_account_group_send_flag",b"public_account_group_send_flag","seq",b"seq","time",b"time","to_uin",b"to_uin","type",b"type","uid",b"uid","user_active",b"user_active","wseq_in_c2c_msghead",b"wseq_in_c2c_msghead"]) -> None: ... class MsgType0x210(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SUB_MSG_TYPE_FIELD_NUMBER: int CONTENT_FIELD_NUMBER: int - sub_msg_type: int = ... - content: bytes = ... - + sub_msg_type: int + content: bytes def __init__(self, *, - sub_msg_type : Optional[int] = ..., - content : Optional[bytes] = ..., + sub_msg_type: Optional[int] = ..., + content: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"content",b"content",u"sub_msg_type",b"sub_msg_type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"content",b"content",u"sub_msg_type",b"sub_msg_type"]) -> None: ... + def HasField(self, field_name: Literal["content",b"content","sub_msg_type",b"sub_msg_type"]) -> bool: ... + def ClearField(self, field_name: Literal["content",b"content","sub_msg_type",b"sub_msg_type"]) -> None: ... class MutilTransHead(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor STATUS_FIELD_NUMBER: int MSG_ID_FIELD_NUMBER: int - status: int = ... - msg_id: int = ... - + status: int + msg_id: int def __init__(self, *, - status : Optional[int] = ..., - msg_id : Optional[int] = ..., + status: Optional[int] = ..., + msg_id: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"msg_id",b"msg_id",u"status",b"status"]) -> bool: ... - def ClearField(self, field_name: Literal[u"msg_id",b"msg_id",u"status",b"status"]) -> None: ... + def HasField(self, field_name: Literal["msg_id",b"msg_id","status",b"status"]) -> bool: ... + def ClearField(self, field_name: Literal["msg_id",b"msg_id","status",b"status"]) -> None: ... class PluginInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RES_ID_FIELD_NUMBER: int PKG_NAME_FIELD_NUMBER: int NEW_VER_FIELD_NUMBER: int @@ -386,52 +365,50 @@ class PluginInfo(Message): RES_URL_BIG_FIELD_NUMBER: int RES_URL_SMALL_FIELD_NUMBER: int RES_CONF_FIELD_NUMBER: int - res_id: int = ... - pkg_name: Text = ... - new_ver: int = ... - res_type: int = ... - lan_type: int = ... - priority: int = ... - res_name: Text = ... - res_desc: Text = ... - res_url_big: Text = ... - res_url_small: Text = ... - res_conf: Text = ... - + res_id: int + pkg_name: Text + new_ver: int + res_type: int + lan_type: int + priority: int + res_name: Text + res_desc: Text + res_url_big: Text + res_url_small: Text + res_conf: Text def __init__(self, *, - res_id : Optional[int] = ..., - pkg_name : Optional[Text] = ..., - new_ver : Optional[int] = ..., - res_type : Optional[int] = ..., - lan_type : Optional[int] = ..., - priority : Optional[int] = ..., - res_name : Optional[Text] = ..., - res_desc : Optional[Text] = ..., - res_url_big : Optional[Text] = ..., - res_url_small : Optional[Text] = ..., - res_conf : Optional[Text] = ..., + res_id: Optional[int] = ..., + pkg_name: Optional[Text] = ..., + new_ver: Optional[int] = ..., + res_type: Optional[int] = ..., + lan_type: Optional[int] = ..., + priority: Optional[int] = ..., + res_name: Optional[Text] = ..., + res_desc: Optional[Text] = ..., + res_url_big: Optional[Text] = ..., + res_url_small: Optional[Text] = ..., + res_conf: Optional[Text] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"lan_type",b"lan_type",u"new_ver",b"new_ver",u"pkg_name",b"pkg_name",u"priority",b"priority",u"res_conf",b"res_conf",u"res_desc",b"res_desc",u"res_id",b"res_id",u"res_name",b"res_name",u"res_type",b"res_type",u"res_url_big",b"res_url_big",u"res_url_small",b"res_url_small"]) -> bool: ... - def ClearField(self, field_name: Literal[u"lan_type",b"lan_type",u"new_ver",b"new_ver",u"pkg_name",b"pkg_name",u"priority",b"priority",u"res_conf",b"res_conf",u"res_desc",b"res_desc",u"res_id",b"res_id",u"res_name",b"res_name",u"res_type",b"res_type",u"res_url_big",b"res_url_big",u"res_url_small",b"res_url_small"]) -> None: ... + def HasField(self, field_name: Literal["lan_type",b"lan_type","new_ver",b"new_ver","pkg_name",b"pkg_name","priority",b"priority","res_conf",b"res_conf","res_desc",b"res_desc","res_id",b"res_id","res_name",b"res_name","res_type",b"res_type","res_url_big",b"res_url_big","res_url_small",b"res_url_small"]) -> bool: ... + def ClearField(self, field_name: Literal["lan_type",b"lan_type","new_ver",b"new_ver","pkg_name",b"pkg_name","priority",b"priority","res_conf",b"res_conf","res_desc",b"res_desc","res_id",b"res_id","res_name",b"res_name","res_type",b"res_type","res_url_big",b"res_url_big","res_url_small",b"res_url_small"]) -> None: ... class Uin2Nick(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor UIN_FIELD_NUMBER: int NICK_FIELD_NUMBER: int - uin: int = ... - nick: Text = ... - + uin: int + nick: Text def __init__(self, *, - uin : Optional[int] = ..., - nick : Optional[Text] = ..., + uin: Optional[int] = ..., + nick: Optional[Text] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"nick",b"nick",u"uin",b"uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"nick",b"nick",u"uin",b"uin"]) -> None: ... + def HasField(self, field_name: Literal["nick",b"nick","uin",b"uin"]) -> bool: ... + def ClearField(self, field_name: Literal["nick",b"nick","uin",b"uin"]) -> None: ... class UinPairMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor LAST_READ_TIME_FIELD_NUMBER: int PEER_UIN_FIELD_NUMBER: int COMPLETED_FIELD_NUMBER: int @@ -441,29 +418,27 @@ class UinPairMsg(Message): SERVICE_TYPE_FIELD_NUMBER: int PB_RESERVE_FIELD_NUMBER: int TO_TINY_ID_FIELD_NUMBER: int - last_read_time: int = ... - peer_uin: int = ... - completed: int = ... - unread_msg_num: int = ... - c2c_type: int = ... - service_type: int = ... - pb_reserve: bytes = ... - to_tiny_id: int = ... - + last_read_time: int + peer_uin: int + completed: int @property def msg(self) -> RepeatedCompositeFieldContainer[Msg]: ... - + unread_msg_num: int + c2c_type: int + service_type: int + pb_reserve: bytes + to_tiny_id: int def __init__(self, *, - last_read_time : Optional[int] = ..., - peer_uin : Optional[int] = ..., - completed : Optional[int] = ..., - msg : Optional[Iterable[Msg]] = ..., - unread_msg_num : Optional[int] = ..., - c2c_type : Optional[int] = ..., - service_type : Optional[int] = ..., - pb_reserve : Optional[bytes] = ..., - to_tiny_id : Optional[int] = ..., + last_read_time: Optional[int] = ..., + peer_uin: Optional[int] = ..., + completed: Optional[int] = ..., + msg: Optional[Iterable[Msg]] = ..., + unread_msg_num: Optional[int] = ..., + c2c_type: Optional[int] = ..., + service_type: Optional[int] = ..., + pb_reserve: Optional[bytes] = ..., + to_tiny_id: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"c2c_type",b"c2c_type",u"completed",b"completed",u"last_read_time",b"last_read_time",u"pb_reserve",b"pb_reserve",u"peer_uin",b"peer_uin",u"service_type",b"service_type",u"to_tiny_id",b"to_tiny_id",u"unread_msg_num",b"unread_msg_num"]) -> bool: ... - def ClearField(self, field_name: Literal[u"c2c_type",b"c2c_type",u"completed",b"completed",u"last_read_time",b"last_read_time",u"msg",b"msg",u"pb_reserve",b"pb_reserve",u"peer_uin",b"peer_uin",u"service_type",b"service_type",u"to_tiny_id",b"to_tiny_id",u"unread_msg_num",b"unread_msg_num"]) -> None: ... + def HasField(self, field_name: Literal["c2c_type",b"c2c_type","completed",b"completed","last_read_time",b"last_read_time","pb_reserve",b"pb_reserve","peer_uin",b"peer_uin","service_type",b"service_type","to_tiny_id",b"to_tiny_id","unread_msg_num",b"unread_msg_num"]) -> bool: ... + def ClearField(self, field_name: Literal["c2c_type",b"c2c_type","completed",b"completed","last_read_time",b"last_read_time","msg",b"msg","pb_reserve",b"pb_reserve","peer_uin",b"peer_uin","service_type",b"service_type","to_tiny_id",b"to_tiny_id","unread_msg_num",b"unread_msg_num"]) -> None: ... diff --git a/cai/pb/msf/msg/ctrl/ctrl_pb2.py b/cai/pb/msf/msg/ctrl/ctrl_pb2.py index 8dca50f0..0cd7045d 100644 --- a/cai/pb/msf/msg/ctrl/ctrl_pb2.py +++ b/cai/pb/msf/msg/ctrl/ctrl_pb2.py @@ -3,6 +3,7 @@ # source: cai/pb/msf/msg/ctrl/ctrl.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -13,142 +14,12 @@ -DESCRIPTOR = _descriptor.FileDescriptor( - name='cai/pb/msf/msg/ctrl/ctrl.proto', - package='msf.msg.ctrl', - syntax='proto2', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x1e\x63\x61i/pb/msf/msg/ctrl/ctrl.proto\x12\x0cmsf.msg.ctrl\"K\n\x07MsgCtrl\x12\x0c\n\x04\x66lag\x18\x01 \x01(\r\x12\x32\n\x0eresv_resv_info\x18\x02 \x01(\x0b\x32\x1a.msf.msg.ctrl.ResvResvInfo\"\x9e\x01\n\x0cResvResvInfo\x12\x0c\n\x04\x66lag\x18\x01 \x01(\r\x12\x0f\n\x07reserv1\x18\x02 \x01(\x0c\x12\x0f\n\x07reserv2\x18\x03 \x01(\x04\x12\x0f\n\x07reserv3\x18\x04 \x01(\x04\x12\x13\n\x0b\x63reate_time\x18\x05 \x01(\r\x12\x12\n\npic_height\x18\x06 \x01(\r\x12\x11\n\tpic_width\x18\x07 \x01(\r\x12\x11\n\tresv_flag\x18\x08 \x01(\r' -) +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1e\x63\x61i/pb/msf/msg/ctrl/ctrl.proto\x12\x0cmsf.msg.ctrl\"K\n\x07MsgCtrl\x12\x0c\n\x04\x66lag\x18\x01 \x01(\r\x12\x32\n\x0eresv_resv_info\x18\x02 \x01(\x0b\x32\x1a.msf.msg.ctrl.ResvResvInfo\"\x9e\x01\n\x0cResvResvInfo\x12\x0c\n\x04\x66lag\x18\x01 \x01(\r\x12\x0f\n\x07reserv1\x18\x02 \x01(\x0c\x12\x0f\n\x07reserv2\x18\x03 \x01(\x04\x12\x0f\n\x07reserv3\x18\x04 \x01(\x04\x12\x13\n\x0b\x63reate_time\x18\x05 \x01(\r\x12\x12\n\npic_height\x18\x06 \x01(\r\x12\x11\n\tpic_width\x18\x07 \x01(\r\x12\x11\n\tresv_flag\x18\x08 \x01(\r') - -_MSGCTRL = _descriptor.Descriptor( - name='MsgCtrl', - full_name='msf.msg.ctrl.MsgCtrl', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='flag', full_name='msf.msg.ctrl.MsgCtrl.flag', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='resv_resv_info', full_name='msf.msg.ctrl.MsgCtrl.resv_resv_info', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=48, - serialized_end=123, -) - - -_RESVRESVINFO = _descriptor.Descriptor( - name='ResvResvInfo', - full_name='msf.msg.ctrl.ResvResvInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='flag', full_name='msf.msg.ctrl.ResvResvInfo.flag', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reserv1', full_name='msf.msg.ctrl.ResvResvInfo.reserv1', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reserv2', full_name='msf.msg.ctrl.ResvResvInfo.reserv2', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reserv3', full_name='msf.msg.ctrl.ResvResvInfo.reserv3', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='create_time', full_name='msf.msg.ctrl.ResvResvInfo.create_time', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pic_height', full_name='msf.msg.ctrl.ResvResvInfo.pic_height', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pic_width', full_name='msf.msg.ctrl.ResvResvInfo.pic_width', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='resv_flag', full_name='msf.msg.ctrl.ResvResvInfo.resv_flag', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=126, - serialized_end=284, -) - -_MSGCTRL.fields_by_name['resv_resv_info'].message_type = _RESVRESVINFO -DESCRIPTOR.message_types_by_name['MsgCtrl'] = _MSGCTRL -DESCRIPTOR.message_types_by_name['ResvResvInfo'] = _RESVRESVINFO -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - +_MSGCTRL = DESCRIPTOR.message_types_by_name['MsgCtrl'] +_RESVRESVINFO = DESCRIPTOR.message_types_by_name['ResvResvInfo'] MsgCtrl = _reflection.GeneratedProtocolMessageType('MsgCtrl', (_message.Message,), { 'DESCRIPTOR' : _MSGCTRL, '__module__' : 'cai.pb.msf.msg.ctrl.ctrl_pb2' @@ -163,5 +34,11 @@ }) _sym_db.RegisterMessage(ResvResvInfo) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _MSGCTRL._serialized_start=48 + _MSGCTRL._serialized_end=123 + _RESVRESVINFO._serialized_start=126 + _RESVRESVINFO._serialized_end=284 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/msf/msg/ctrl/ctrl_pb2.pyi b/cai/pb/msf/msg/ctrl/ctrl_pb2.pyi index e29fba87..3ef3d865 100644 --- a/cai/pb/msf/msg/ctrl/ctrl_pb2.pyi +++ b/cai/pb/msf/msg/ctrl/ctrl_pb2.pyi @@ -26,27 +26,28 @@ from typing_extensions import ( ) -DESCRIPTOR: FileDescriptor = ... +DESCRIPTOR: FileDescriptor class MsgCtrl(Message): - DESCRIPTOR: Descriptor = ... + """msf/msgsvc/msg_ctrl.java + + """ + DESCRIPTOR: Descriptor FLAG_FIELD_NUMBER: int RESV_RESV_INFO_FIELD_NUMBER: int - flag: int = ... - + flag: int @property def resv_resv_info(self) -> ResvResvInfo: ... - def __init__(self, *, - flag : Optional[int] = ..., - resv_resv_info : Optional[ResvResvInfo] = ..., + flag: Optional[int] = ..., + resv_resv_info: Optional[ResvResvInfo] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"flag",b"flag",u"resv_resv_info",b"resv_resv_info"]) -> bool: ... - def ClearField(self, field_name: Literal[u"flag",b"flag",u"resv_resv_info",b"resv_resv_info"]) -> None: ... + def HasField(self, field_name: Literal["flag",b"flag","resv_resv_info",b"resv_resv_info"]) -> bool: ... + def ClearField(self, field_name: Literal["flag",b"flag","resv_resv_info",b"resv_resv_info"]) -> None: ... class ResvResvInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FLAG_FIELD_NUMBER: int RESERV1_FIELD_NUMBER: int RESERV2_FIELD_NUMBER: int @@ -55,25 +56,24 @@ class ResvResvInfo(Message): PIC_HEIGHT_FIELD_NUMBER: int PIC_WIDTH_FIELD_NUMBER: int RESV_FLAG_FIELD_NUMBER: int - flag: int = ... - reserv1: bytes = ... - reserv2: int = ... - reserv3: int = ... - create_time: int = ... - pic_height: int = ... - pic_width: int = ... - resv_flag: int = ... - + flag: int + reserv1: bytes + reserv2: int + reserv3: int + create_time: int + pic_height: int + pic_width: int + resv_flag: int def __init__(self, *, - flag : Optional[int] = ..., - reserv1 : Optional[bytes] = ..., - reserv2 : Optional[int] = ..., - reserv3 : Optional[int] = ..., - create_time : Optional[int] = ..., - pic_height : Optional[int] = ..., - pic_width : Optional[int] = ..., - resv_flag : Optional[int] = ..., + flag: Optional[int] = ..., + reserv1: Optional[bytes] = ..., + reserv2: Optional[int] = ..., + reserv3: Optional[int] = ..., + create_time: Optional[int] = ..., + pic_height: Optional[int] = ..., + pic_width: Optional[int] = ..., + resv_flag: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"create_time",b"create_time",u"flag",b"flag",u"pic_height",b"pic_height",u"pic_width",b"pic_width",u"reserv1",b"reserv1",u"reserv2",b"reserv2",u"reserv3",b"reserv3",u"resv_flag",b"resv_flag"]) -> bool: ... - def ClearField(self, field_name: Literal[u"create_time",b"create_time",u"flag",b"flag",u"pic_height",b"pic_height",u"pic_width",b"pic_width",u"reserv1",b"reserv1",u"reserv2",b"reserv2",u"reserv3",b"reserv3",u"resv_flag",b"resv_flag"]) -> None: ... + def HasField(self, field_name: Literal["create_time",b"create_time","flag",b"flag","pic_height",b"pic_height","pic_width",b"pic_width","reserv1",b"reserv1","reserv2",b"reserv2","reserv3",b"reserv3","resv_flag",b"resv_flag"]) -> bool: ... + def ClearField(self, field_name: Literal["create_time",b"create_time","flag",b"flag","pic_height",b"pic_height","pic_width",b"pic_width","reserv1",b"reserv1","reserv2",b"reserv2","reserv3",b"reserv3","resv_flag",b"resv_flag"]) -> None: ... diff --git a/cai/pb/msf/msg/onlinepush/onlinepush_pb2.py b/cai/pb/msf/msg/onlinepush/onlinepush_pb2.py index fa1d8919..c72913fa 100644 --- a/cai/pb/msf/msg/onlinepush/onlinepush_pb2.py +++ b/cai/pb/msf/msg/onlinepush/onlinepush_pb2.py @@ -3,6 +3,7 @@ # source: cai/pb/msf/msg/onlinepush/onlinepush.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -14,89 +15,11 @@ from cai.pb.msf.msg.comm import comm_pb2 as cai_dot_pb_dot_msf_dot_msg_dot_comm_dot_comm__pb2 -DESCRIPTOR = _descriptor.FileDescriptor( - name='cai/pb/msf/msg/onlinepush/onlinepush.proto', - package='msf.msg.onlinepush', - syntax='proto2', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n*cai/pb/msf/msg/onlinepush/onlinepush.proto\x12\x12msf.msg.onlinepush\x1a\x1e\x63\x61i/pb/msf/msg/comm/comm.proto\"\x89\x01\n\tPbPushMsg\x12\x1e\n\x03msg\x18\x01 \x01(\x0b\x32\x11.msf.msg.comm.Msg\x12\r\n\x05svrip\x18\x02 \x01(\x05\x12\x12\n\npush_token\x18\x03 \x01(\x0c\x12\x11\n\tping_flag\x18\x04 \x01(\r\x12\x14\n\x0cgeneral_flag\x18\t \x01(\r\x12\x10\n\x08\x62ind_uin\x18\n \x01(\x04' - , - dependencies=[cai_dot_pb_dot_msf_dot_msg_dot_comm_dot_comm__pb2.DESCRIPTOR,]) +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*cai/pb/msf/msg/onlinepush/onlinepush.proto\x12\x12msf.msg.onlinepush\x1a\x1e\x63\x61i/pb/msf/msg/comm/comm.proto\"\x89\x01\n\tPbPushMsg\x12\x1e\n\x03msg\x18\x01 \x01(\x0b\x32\x11.msf.msg.comm.Msg\x12\r\n\x05svrip\x18\x02 \x01(\x05\x12\x12\n\npush_token\x18\x03 \x01(\x0c\x12\x11\n\tping_flag\x18\x04 \x01(\r\x12\x14\n\x0cgeneral_flag\x18\t \x01(\r\x12\x10\n\x08\x62ind_uin\x18\n \x01(\x04') - -_PBPUSHMSG = _descriptor.Descriptor( - name='PbPushMsg', - full_name='msf.msg.onlinepush.PbPushMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='msg', full_name='msf.msg.onlinepush.PbPushMsg.msg', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='svrip', full_name='msf.msg.onlinepush.PbPushMsg.svrip', index=1, - number=2, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='push_token', full_name='msf.msg.onlinepush.PbPushMsg.push_token', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ping_flag', full_name='msf.msg.onlinepush.PbPushMsg.ping_flag', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='general_flag', full_name='msf.msg.onlinepush.PbPushMsg.general_flag', index=4, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bind_uin', full_name='msf.msg.onlinepush.PbPushMsg.bind_uin', index=5, - number=10, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=99, - serialized_end=236, -) - -_PBPUSHMSG.fields_by_name['msg'].message_type = cai_dot_pb_dot_msf_dot_msg_dot_comm_dot_comm__pb2._MSG -DESCRIPTOR.message_types_by_name['PbPushMsg'] = _PBPUSHMSG -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - +_PBPUSHMSG = DESCRIPTOR.message_types_by_name['PbPushMsg'] PbPushMsg = _reflection.GeneratedProtocolMessageType('PbPushMsg', (_message.Message,), { 'DESCRIPTOR' : _PBPUSHMSG, '__module__' : 'cai.pb.msf.msg.onlinepush.onlinepush_pb2' @@ -104,5 +27,9 @@ }) _sym_db.RegisterMessage(PbPushMsg) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _PBPUSHMSG._serialized_start=99 + _PBPUSHMSG._serialized_end=236 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/msf/msg/onlinepush/onlinepush_pb2.pyi b/cai/pb/msf/msg/onlinepush/onlinepush_pb2.pyi index 76bcd87c..f3ed6766 100644 --- a/cai/pb/msf/msg/onlinepush/onlinepush_pb2.pyi +++ b/cai/pb/msf/msg/onlinepush/onlinepush_pb2.pyi @@ -30,33 +30,31 @@ from typing_extensions import ( ) -DESCRIPTOR: FileDescriptor = ... +DESCRIPTOR: FileDescriptor class PbPushMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor MSG_FIELD_NUMBER: int SVRIP_FIELD_NUMBER: int PUSH_TOKEN_FIELD_NUMBER: int PING_FLAG_FIELD_NUMBER: int GENERAL_FLAG_FIELD_NUMBER: int BIND_UIN_FIELD_NUMBER: int - svrip: int = ... - push_token: bytes = ... - ping_flag: int = ... - general_flag: int = ... - bind_uin: int = ... - @property def msg(self) -> Msg: ... - + svrip: int + push_token: bytes + ping_flag: int + general_flag: int + bind_uin: int def __init__(self, *, - msg : Optional[Msg] = ..., - svrip : Optional[int] = ..., - push_token : Optional[bytes] = ..., - ping_flag : Optional[int] = ..., - general_flag : Optional[int] = ..., - bind_uin : Optional[int] = ..., + msg: Optional[Msg] = ..., + svrip: Optional[int] = ..., + push_token: Optional[bytes] = ..., + ping_flag: Optional[int] = ..., + general_flag: Optional[int] = ..., + bind_uin: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"bind_uin",b"bind_uin",u"general_flag",b"general_flag",u"msg",b"msg",u"ping_flag",b"ping_flag",u"push_token",b"push_token",u"svrip",b"svrip"]) -> bool: ... - def ClearField(self, field_name: Literal[u"bind_uin",b"bind_uin",u"general_flag",b"general_flag",u"msg",b"msg",u"ping_flag",b"ping_flag",u"push_token",b"push_token",u"svrip",b"svrip"]) -> None: ... + def HasField(self, field_name: Literal["bind_uin",b"bind_uin","general_flag",b"general_flag","msg",b"msg","ping_flag",b"ping_flag","push_token",b"push_token","svrip",b"svrip"]) -> bool: ... + def ClearField(self, field_name: Literal["bind_uin",b"bind_uin","general_flag",b"general_flag","msg",b"msg","ping_flag",b"ping_flag","push_token",b"push_token","svrip",b"svrip"]) -> None: ... diff --git a/cai/pb/msf/msg/svc/svc_pb2.py b/cai/pb/msf/msg/svc/svc_pb2.py index ea92fc15..c4a4d01b 100644 --- a/cai/pb/msf/msg/svc/svc_pb2.py +++ b/cai/pb/msf/msg/svc/svc_pb2.py @@ -3,6 +3,7 @@ # source: cai/pb/msf/msg/svc/svc.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -18,5125 +19,101 @@ from cai.pb.im.msg.receipt import receipt_pb2 as cai_dot_pb_dot_im_dot_msg_dot_receipt_dot_receipt__pb2 -DESCRIPTOR = _descriptor.FileDescriptor( - name='cai/pb/msf/msg/svc/svc.proto', - package='msf.msg.svc', - syntax='proto2', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x1c\x63\x61i/pb/msf/msg/svc/svc.proto\x12\x0bmsf.msg.svc\x1a\x1e\x63\x61i/pb/msf/msg/comm/comm.proto\x1a\x1e\x63\x61i/pb/msf/msg/ctrl/ctrl.proto\x1a%cai/pb/im/msg/msg_body/msg_body.proto\x1a%cai/pb/im/msg/msg_head/msg_head.proto\x1a#cai/pb/im/msg/receipt/receipt.proto\"7\n\tAccostTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\x12\r\n\x05reply\x18\x03 \x01(\x08\"n\n\x0e\x41\x64\x64ressListTmp\x12\x12\n\nfrom_phone\x18\x01 \x01(\t\x12\x10\n\x08to_phone\x18\x02 \x01(\t\x12\x0e\n\x06to_uin\x18\x03 \x01(\x04\x12\x0b\n\x03sig\x18\x04 \x01(\x0c\x12\x19\n\x11\x66rom_contact_size\x18\x05 \x01(\r\"&\n\x07\x41uthTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\"&\n\x07\x42snsTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\";\n\x0e\x42usinessWPATmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\x12\x0c\n\x04sigt\x18\x03 \x01(\x0c\"\x15\n\x03\x43\x32\x43\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\"\\\n\x07\x43ommTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x10\n\x08\x63\x32\x63_type\x18\x02 \x01(\r\x12\x10\n\x08svr_type\x18\x03 \x01(\r\x12\x0b\n\x03sig\x18\x04 \x01(\x0c\x12\x10\n\x08reserved\x18\x05 \x01(\x0c\"\x16\n\x03\x44is\x12\x0f\n\x07\x64is_uin\x18\x01 \x01(\x04\")\n\x06\x44isTmp\x12\x0f\n\x07\x64is_uin\x18\x01 \x01(\x04\x12\x0e\n\x06to_uin\x18\x02 \x01(\x04\"\x19\n\x03Grp\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\"+\n\x06GrpTmp\x12\x11\n\tgroup_uin\x18\x01 \x01(\x04\x12\x0e\n\x06to_uin\x18\x02 \x01(\x04\"\x1f\n\x0bMsgSendInfo\x12\x10\n\x08receiver\x18\x01 \x01(\r\"\xc7\x01\n\x0eMultiMsgAssist\x12\x32\n\x10repeated_routing\x18\x01 \x03(\x0b\x32\x18.msf.msg.svc.RoutingHead\x12\x0b\n\x03use\x18\x02 \x01(\r\x12\x0f\n\x07temp_id\x18\x03 \x01(\x04\x12\x11\n\tvedio_len\x18\x04 \x01(\x04\x12\x11\n\tredbag_id\x18\x05 \x01(\x0c\x12\x15\n\rredbag_amount\x18\x06 \x01(\x04\x12\x13\n\x0bhas_readbag\x18\x07 \x01(\r\x12\x11\n\thas_vedio\x18\x08 \x01(\r\"@\n\x12NearByAssistantTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\x12\r\n\x05reply\x18\x03 \x01(\x08\"=\n\x0fNearByDatingTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\x12\r\n\x05reply\x18\x03 \x01(\x08\"d\n\x12PbBindUinGetMsgReq\x12\x10\n\x08\x62ind_uin\x18\x01 \x01(\x04\x12\x14\n\x0c\x62ind_uin_sig\x18\x02 \x01(\x0c\x12\x11\n\tsync_flag\x18\x03 \x01(\r\x12\x13\n\x0bsync_cookie\x18\x04 \x01(\x0c\"E\n\x1cPbBindUinMsgReadedConfirmReq\x12\x13\n\x0bsync_cookie\x18\x01 \x01(\x0c\x12\x10\n\x08\x62ind_uin\x18\x02 \x01(\x04\"f\n\x1dPbBindUinMsgReadedConfirmResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x13\n\x0bsync_cookie\x18\x03 \x01(\x0c\x12\x10\n\x08\x62ind_uin\x18\x04 \x01(\x04\"A\n\x18PbBindUinUnReadMsgNumReq\x12\x10\n\x08\x62ind_uin\x18\x01 \x01(\x04\x12\x13\n\x0bsync_cookie\x18\x02 \x01(\x0c\"Z\n\x19PbBindUinUnReadMsgNumResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x10\n\x08\x62ind_uin\x18\x03 \x01(\x04\x12\x0b\n\x03num\x18\x04 \x01(\r\"\xf8\x02\n\x13PbC2CMsgWithDrawReq\x12\x36\n\x04info\x18\x01 \x03(\x0b\x32(.msf.msg.svc.PbC2CMsgWithDrawReq.MsgInfo\x12\x19\n\x11long_message_flag\x18\x02 \x01(\r\x12\x10\n\x08reserved\x18\x03 \x01(\x0c\x12\x0f\n\x07sub_cmd\x18\x04 \x01(\r\x1a\xea\x01\n\x07MsgInfo\x12\x10\n\x08\x66rom_uin\x18\x01 \x01(\x04\x12\x0e\n\x06to_uin\x18\x02 \x01(\x04\x12\x0f\n\x07msg_seq\x18\x03 \x01(\r\x12\x0f\n\x07msg_uid\x18\x04 \x01(\x04\x12\x10\n\x08msg_time\x18\x05 \x01(\x04\x12\x12\n\nmsg_random\x18\x06 \x01(\r\x12\x0f\n\x07pkg_num\x18\x07 \x01(\r\x12\x11\n\tpkg_index\x18\x08 \x01(\r\x12\x0f\n\x07\x64iv_seq\x18\t \x01(\r\x12\x10\n\x08msg_type\x18\n \x01(\r\x12.\n\x0crouting_head\x18\x14 \x01(\x0b\x32\x18.msf.msg.svc.RoutingHead\"\xa7\x01\n\x14PbC2CMsgWithDrawResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12&\n\x06status\x18\x03 \x03(\x0b\x32\x16.msf.msg.svc.MsgStatus\x12\x0f\n\x07sub_cmd\x18\x04 \x01(\r\x12\x36\n\x0cwording_info\x18\x05 \x01(\x0b\x32 .msf.msg.svc.WithDrawWordingInfo\"S\n\tMsgStatus\x12\x36\n\x04info\x18\x01 \x01(\x0b\x32(.msf.msg.svc.PbC2CMsgWithDrawReq.MsgInfo\x12\x0e\n\x06status\x18\x02 \x01(\r\"\\\n\x14PbC2CReadedReportReq\x12\x13\n\x0bsync_cookie\x18\x01 \x01(\x0c\x12/\n\tpair_info\x18\x02 \x03(\x0b\x32\x1c.msf.msg.svc.UinPairReadInfo\"\xa6\x01\n\x0fUinPairReadInfo\x12\x10\n\x08peer_uin\x18\x01 \x01(\x04\x12\x16\n\x0elast_read_time\x18\x02 \x01(\r\x12\x0f\n\x07\x63rm_sig\x18\x03 \x01(\x0c\x12\x11\n\tpeer_type\x18\x04 \x01(\r\x12\x11\n\tchat_type\x18\x05 \x01(\r\x12\x0c\n\x04\x63pid\x18\x06 \x01(\x04\x12\x10\n\x08\x61io_type\x18\x07 \x01(\r\x12\x12\n\nto_tiny_id\x18\t \x01(\x04\"L\n\x15PbC2CReadedReportResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x13\n\x0bsync_cookie\x18\x03 \x01(\x0c\"\x16\n\x14PbC2CUnReadMsgNumReq\"D\n\x15PbC2CUnReadMsgNumResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x0b\n\x03num\x18\x03 \x01(\r\"\x83\x01\n\x0fPbDelRoamMsgReq\x12$\n\x07\x63\x32\x63_msg\x18\x01 \x01(\x0b\x32\x13.msf.msg.svc.C2CMsg\x12$\n\x07grp_msg\x18\x02 \x01(\x0b\x32\x13.msf.msg.svc.GrpMsg\x12$\n\x07\x64is_msg\x18\x03 \x01(\x0b\x32\x13.msf.msg.svc.DisMsg\"W\n\x06\x43\x32\x43Msg\x12\x10\n\x08\x66rom_uin\x18\x01 \x01(\x04\x12\x10\n\x08peer_uin\x18\x02 \x01(\x04\x12\x0c\n\x04time\x18\x03 \x01(\r\x12\x0e\n\x06random\x18\x04 \x01(\r\x12\x0b\n\x03seq\x18\x05 \x01(\r\"*\n\x06\x44isMsg\x12\x13\n\x0b\x64iscuss_uin\x18\x01 \x01(\x04\x12\x0b\n\x03seq\x18\x02 \x01(\x04\"<\n\x06GrpMsg\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x0b\n\x03seq\x18\x02 \x01(\x04\x12\x11\n\tresv_flag\x18\x03 \x01(\r\"2\n\x10PbDelRoamMsgResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\"\xaa\x01\n\x0ePbDeleteMsgReq\x12\x36\n\tmsg_items\x18\x01 \x03(\x0b\x32#.msf.msg.svc.PbDeleteMsgReq.MsgItem\x1a`\n\x07MsgItem\x12\x10\n\x08\x66rom_uin\x18\x01 \x01(\x04\x12\x0e\n\x06to_uin\x18\x02 \x01(\x04\x12\x0c\n\x04type\x18\x03 \x01(\r\x12\x0b\n\x03seq\x18\x04 \x01(\r\x12\x0b\n\x03uid\x18\x05 \x01(\x04\x12\x0b\n\x03sig\x18\x07 \x01(\x0c\"1\n\x0fPbDeleteMsgResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\"C\n\x18PbDiscussReadedReportReq\x12\x10\n\x08\x63onf_uin\x18\x01 \x01(\x04\x12\x15\n\rlast_read_seq\x18\x02 \x01(\x04\"s\n\x19PbDiscussReadedReportResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x10\n\x08\x63onf_uin\x18\x03 \x01(\x04\x12\x12\n\nmember_seq\x18\x04 \x01(\x04\x12\x10\n\x08\x63onf_seq\x18\x05 \x01(\x04\"\xa2\x01\n\x12PbGetDiscussMsgReq\x12\x13\n\x0b\x64iscuss_uin\x18\x01 \x01(\x04\x12\x0f\n\x07\x65nd_seq\x18\x02 \x01(\x04\x12\x11\n\tbegin_seq\x18\x03 \x01(\x04\x12\x15\n\rlast_get_time\x18\x04 \x01(\x04\x12\x18\n\x10\x64iscuss_info_seq\x18\x05 \x01(\x04\x12\x0e\n\x06\x66ilter\x18\x06 \x01(\r\x12\x12\n\nmember_seq\x18\x07 \x01(\x04\"\xcd\x01\n\x13PbGetDiscussMsgResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x13\n\x0b\x64iscuss_uin\x18\x03 \x01(\x04\x12\x16\n\x0ereturn_end_seq\x18\x04 \x01(\x04\x12\x18\n\x10return_begin_seq\x18\x05 \x01(\x04\x12\x1e\n\x03msg\x18\x06 \x03(\x0b\x32\x11.msf.msg.comm.Msg\x12\x15\n\rlast_get_time\x18\x07 \x01(\x04\x12\x18\n\x10\x64iscuss_info_seq\x18\x08 \x01(\x04\"\xb4\x01\n\x10PbGetGroupMsgReq\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x11\n\tbegin_seq\x18\x02 \x01(\x04\x12\x0f\n\x07\x65nd_seq\x18\x03 \x01(\x04\x12\x0e\n\x06\x66ilter\x18\x04 \x01(\r\x12\x12\n\nmember_seq\x18\x05 \x01(\x04\x12\x14\n\x0cpublic_group\x18\x06 \x01(\x08\x12\x13\n\x0bshield_flag\x18\x07 \x01(\r\x12\x19\n\x11save_traffic_flag\x18\x08 \x01(\r\"\x99\x01\n\x11PbGetGroupMsgResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x12\n\ngroup_code\x18\x03 \x01(\x04\x12\x18\n\x10return_begin_seq\x18\x04 \x01(\x04\x12\x16\n\x0ereturn_end_seq\x18\x05 \x01(\x04\x12\x1e\n\x03msg\x18\x06 \x03(\x0b\x32\x11.msf.msg.comm.Msg\"\xa4\x02\n\x0bPbGetMsgReq\x12\x11\n\tsync_flag\x18\x01 \x01(\r\x12\x13\n\x0bsync_cookie\x18\x02 \x01(\x0c\x12\x13\n\x0bramble_flag\x18\x03 \x01(\r\x12\x1c\n\x14latest_ramble_number\x18\x04 \x01(\r\x12\x1b\n\x13other_ramble_number\x18\x05 \x01(\r\x12\x18\n\x10online_sync_flag\x18\x06 \x01(\r\x12\x14\n\x0c\x63ontext_flag\x18\x07 \x01(\r\x12\x1a\n\x12whisper_session_id\x18\x08 \x01(\r\x12\x10\n\x08req_type\x18\t \x01(\r\x12\x19\n\x11pubaccount_cookie\x18\n \x01(\x0c\x12\x10\n\x08\x63trl_buf\x18\x0b \x01(\x0c\x12\x12\n\nserver_buf\x18\x0c \x01(\x0c\"\xf1\x01\n\x0cPbGetMsgResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x13\n\x0bsync_cookie\x18\x03 \x01(\x0c\x12\x11\n\tsync_flag\x18\x04 \x01(\r\x12/\n\ruin_pair_msgs\x18\x05 \x03(\x0b\x32\x18.msf.msg.comm.UinPairMsg\x12\x10\n\x08\x62ind_uin\x18\x06 \x01(\x04\x12\x10\n\x08rsp_type\x18\x07 \x01(\r\x12\x19\n\x11pubaccount_cookie\x18\x08 \x01(\x0c\x12\x17\n\x0fis_partial_sync\x18\t \x01(\x08\x12\x10\n\x08\x63trl_buf\x18\n \x01(\x0c\"a\n\x15PbGetOneDayRoamMsgReq\x12\x10\n\x08peer_uin\x18\x01 \x01(\x04\x12\x14\n\x0clast_msgtime\x18\x02 \x01(\x04\x12\x0e\n\x06random\x18\x03 \x01(\x04\x12\x10\n\x08read_cnt\x18\x04 \x01(\r\"\xa4\x01\n\x16PbGetOneDayRoamMsgResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x10\n\x08peer_uin\x18\x03 \x01(\x04\x12\x14\n\x0clast_msgtime\x18\x04 \x01(\x04\x12\x0e\n\x06random\x18\x05 \x01(\x04\x12\x1e\n\x03msg\x18\x06 \x03(\x0b\x32\x11.msf.msg.comm.Msg\x12\x12\n\niscomplete\x18\x07 \x01(\r\"\xc1\x01\n\x0fPbGetRoamMsgReq\x12\x10\n\x08peer_uin\x18\x01 \x01(\x04\x12\x14\n\x0clast_msgtime\x18\x02 \x01(\x04\x12\x0e\n\x06random\x18\x03 \x01(\x04\x12\x10\n\x08read_cnt\x18\x04 \x01(\r\x12\x11\n\tcheck_pwd\x18\x05 \x01(\r\x12\x0b\n\x03sig\x18\x06 \x01(\x0c\x12\x0b\n\x03pwd\x18\x07 \x01(\x0c\x12\x0e\n\x06subcmd\x18\x08 \x01(\r\x12\x15\n\rbegin_msgtime\x18\t \x01(\x04\x12\x10\n\x08req_type\x18\n \x01(\r\"\x97\x01\n\x10PbGetRoamMsgResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x10\n\x08peer_uin\x18\x03 \x01(\x04\x12\x14\n\x0clast_msgtime\x18\x04 \x01(\x04\x12\x0e\n\x06random\x18\x05 \x01(\x04\x12\x1e\n\x03msg\x18\x06 \x03(\x0b\x32\x11.msf.msg.comm.Msg\x12\x0b\n\x03sig\x18\x07 \x01(\x0c\"\x89\x01\n\x15PbGroupMsgWithDrawReq\x12\x0f\n\x07sub_cmd\x18\x01 \x01(\r\x12\x12\n\ngroup_type\x18\x02 \x01(\r\x12\x12\n\ngroup_code\x18\x03 \x01(\x04\x12&\n\x04list\x18\x04 \x03(\x0b\x32\x18.msf.msg.svc.MessageInfo\x12\x0f\n\x07userdef\x18\x05 \x01(\x0c\"W\n\x0bMessageInfo\x12\x0f\n\x07msg_seq\x18\x01 \x01(\r\x12\x12\n\nmsg_random\x18\x02 \x01(\r\x12\x10\n\x08msg_type\x18\x03 \x01(\r\x12\x11\n\tresv_flag\x18\x04 \x01(\r\"\xef\x01\n\x16PbGroupMsgWithDrawResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x0f\n\x07sub_cmd\x18\x03 \x01(\r\x12\x12\n\ngroup_type\x18\x04 \x01(\r\x12\x12\n\ngroup_code\x18\x05 \x01(\x04\x12\x33\n\x0f\x66\x61iled_msg_list\x18\x06 \x03(\x0b\x32\x1a.msf.msg.svc.MessageResult\x12\x0f\n\x07userdef\x18\x07 \x01(\x0c\x12\x36\n\x0cwording_info\x18\x08 \x01(\x0b\x32 .msf.msg.svc.WithDrawWordingInfo\"y\n\rMessageResult\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0f\n\x07msg_seq\x18\x02 \x01(\r\x12\x10\n\x08msg_time\x18\x03 \x01(\r\x12\x12\n\nmsg_random\x18\x04 \x01(\r\x12\x0f\n\x07\x65rr_msg\x18\x05 \x01(\x0c\x12\x10\n\x08msg_type\x18\x06 \x01(\r\"C\n\x16PbGroupReadedReportReq\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x15\n\rlast_read_seq\x18\x02 \x01(\x04\"x\n\x17PbGroupReadedReportResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x12\n\ngroup_code\x18\x03 \x01(\x04\x12\x12\n\nmember_seq\x18\x04 \x01(\x04\x12\x15\n\rgroup_msg_seq\x18\x05 \x01(\x04\"s\n\x11PbInputNotifyInfo\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03ime\x18\x02 \x01(\r\x12\x13\n\x0bnotify_flag\x18\x03 \x01(\r\x12\x12\n\npb_reserve\x18\x04 \x01(\x0c\x12\x18\n\x10ios_push_wording\x18\x05 \x01(\x0c\"\x99\x02\n\x14PbMsgReadedReportReq\x12<\n\x0fgrp_read_report\x18\x01 \x03(\x0b\x32#.msf.msg.svc.PbGroupReadedReportReq\x12>\n\x0f\x64is_read_report\x18\x02 \x03(\x0b\x32%.msf.msg.svc.PbDiscussReadedReportReq\x12:\n\x0f\x63\x32\x63_read_report\x18\x03 \x01(\x0b\x32!.msf.msg.svc.PbC2CReadedReportReq\x12G\n\x14\x62ind_uin_read_report\x18\x04 \x01(\x0b\x32).msf.msg.svc.PbBindUinMsgReadedConfirmReq\"\x9e\x02\n\x15PbMsgReadedReportResp\x12=\n\x0fgrp_read_report\x18\x01 \x03(\x0b\x32$.msf.msg.svc.PbGroupReadedReportResp\x12?\n\x0f\x64is_read_report\x18\x02 \x03(\x0b\x32&.msf.msg.svc.PbDiscussReadedReportResp\x12;\n\x0f\x63\x32\x63_read_report\x18\x03 \x01(\x0b\x32\".msf.msg.svc.PbC2CReadedReportResp\x12H\n\x14\x62ind_uin_read_report\x18\x04 \x01(\x0b\x32*.msf.msg.svc.PbBindUinMsgReadedConfirmResp\"\x88\x01\n\x10PbMsgWithDrawReq\x12\x37\n\rc2c_with_draw\x18\x01 \x03(\x0b\x32 .msf.msg.svc.PbC2CMsgWithDrawReq\x12;\n\x0fgroup_with_draw\x18\x02 \x03(\x0b\x32\".msf.msg.svc.PbGroupMsgWithDrawReq\"\x8b\x01\n\x11PbMsgWithDrawResp\x12\x38\n\rc2c_with_draw\x18\x01 \x03(\x0b\x32!.msf.msg.svc.PbC2CMsgWithDrawResp\x12<\n\x0fgroup_with_draw\x18\x02 \x03(\x0b\x32#.msf.msg.svc.PbGroupMsgWithDrawResp\"O\n\x16PbPullDiscussMsgSeqReq\x12\x35\n\x10\x64iscuss_info_req\x18\x01 \x03(\x0b\x32\x1b.msf.msg.svc.DiscussInfoReq\"4\n\x0e\x44iscussInfoReq\x12\x10\n\x08\x63onf_uin\x18\x01 \x01(\x04\x12\x10\n\x08last_seq\x18\x02 \x01(\x04\"r\n\x17PbPullDiscussMsgSeqResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x37\n\x11\x64iscuss_info_resp\x18\x03 \x03(\x0b\x32\x1c.msf.msg.svc.DiscussInfoResp\"I\n\x0f\x44iscussInfoResp\x12\x10\n\x08\x63onf_uin\x18\x01 \x01(\x04\x12\x12\n\nmember_seq\x18\x02 \x01(\x04\x12\x10\n\x08\x63onf_seq\x18\x03 \x01(\x04\"I\n\x14PbPullGroupMsgSeqReq\x12\x31\n\x0egroup_info_req\x18\x01 \x03(\x0b\x32\x19.msf.msg.svc.GroupInfoReq\"4\n\x0cGroupInfoReq\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x10\n\x08last_seq\x18\x02 \x01(\x04\"l\n\x15PbPullGroupMsgSeqResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x33\n\x0fgroup_info_resp\x18\x03 \x03(\x0b\x32\x1a.msf.msg.svc.GroupInfoResp\"J\n\rGroupInfoResp\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x12\n\nmember_seq\x18\x02 \x01(\x04\x12\x11\n\tgroup_seq\x18\x03 \x01(\x04\"6\n\x19PbSearchRoamMsgInCloudReq\x12\x19\n\x11serialize_reqbody\x18\x01 \x01(\x0c\"W\n\x1aPbSearchRoamMsgInCloudResp\x12\x1e\n\x03msg\x18\x01 \x03(\x0b\x32\x11.msf.msg.comm.Msg\x12\x19\n\x11serialize_rspbody\x18\x02 \x01(\x0c\"\xf9\x03\n\x0cPbSendMsgReq\x12.\n\x0crouting_head\x18\x01 \x01(\x0b\x32\x18.msf.msg.svc.RoutingHead\x12/\n\x0c\x63ontent_head\x18\x02 \x01(\x0b\x32\x19.msf.msg.comm.ContentHead\x12&\n\x04\x62ody\x18\x03 \x01(\x0b\x32\x18.im.msg.msg_body.MsgBody\x12\x0b\n\x03seq\x18\x04 \x01(\r\x12\x0c\n\x04rand\x18\x05 \x01(\r\x12\x13\n\x0bsync_cookie\x18\x06 \x01(\x0c\x12-\n\tapp_share\x18\x07 \x01(\x0b\x32\x1a.msf.msg.comm.AppShareInfo\x12\x0b\n\x03via\x18\x08 \x01(\r\x12\x14\n\x0c\x64\x61ta_statist\x18\t \x01(\r\x12\x35\n\x10multi_msg_assist\x18\n \x01(\x0b\x32\x1b.msf.msg.svc.MultiMsgAssist\x12\x39\n\x11input_notify_info\x18\x0b \x01(\x0b\x32\x1e.msf.msg.svc.PbInputNotifyInfo\x12#\n\x04\x63trl\x18\x0c \x01(\x0b\x32\x15.msf.msg.ctrl.MsgCtrl\x12/\n\x0breceipt_req\x18\r \x01(\x0b\x32\x1a.im.msg.receipt.ReceiptReq\x12\x16\n\x0emulti_send_seq\x18\x0e \x01(\r\"\xb6\x02\n\rPbSendMsgResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x11\n\tsend_time\x18\x03 \x01(\r\x12\x19\n\x11svrbusy_wait_time\x18\x04 \x01(\r\x12+\n\tsend_info\x18\x05 \x01(\x0b\x32\x18.msf.msg.svc.MsgSendInfo\x12\x0f\n\x07\x65rrtype\x18\x06 \x01(\r\x12\x31\n\x0etrans_svr_info\x18\x07 \x01(\x0b\x32\x19.msf.msg.svc.TransSvrInfo\x12\x31\n\x0creceipt_resp\x18\x08 \x01(\x0b\x32\x1b.im.msg.receipt.ReceiptResp\x12\x1c\n\x14text_analysis_result\x18\t \x01(\r\x12\x15\n\rmsg_info_flag\x18\n \x01(\r\"a\n\x18PbThirdQQUnReadMsgNumReq\x12\x35\n\x10thirdqq_req_info\x18\x01 \x03(\x0b\x32\x1b.msf.msg.svc.ThirdQQReqInfo\x12\x0e\n\x06source\x18\x02 \x01(\r\"T\n\x0eThirdQQReqInfo\x12\x11\n\tthird_uin\x18\x01 \x01(\x04\x12\x15\n\rthird_uin_sig\x18\x02 \x01(\x0c\x12\x18\n\x10third_uin_cookie\x18\x03 \x01(\x0c\"\x86\x01\n\x19PbThirdQQUnReadMsgNumResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x37\n\x11thirdqq_resp_info\x18\x03 \x03(\x0b\x32\x1c.msf.msg.svc.ThirdQQRespInfo\x12\x10\n\x08interval\x18\x04 \x01(\r\"\x95\x01\n\x0fThirdQQRespInfo\x12\x11\n\tthird_uin\x18\x01 \x01(\x04\x12\x18\n\x10third_uin_cookie\x18\x02 \x01(\x0c\x12\x0b\n\x03num\x18\x03 \x01(\r\x12\x0c\n\x04\x66lag\x18\x04 \x01(\r\x12\x13\n\x0bredbag_time\x18\x05 \x01(\r\x12\x0e\n\x06status\x18\x06 \x01(\r\x12\x15\n\rlast_msg_time\x18\x07 \x01(\r\"\xd7\x02\n\x11PbUnReadMsgSeqReq\x12:\n\x0f\x63\x32\x63_unread_info\x18\x01 \x01(\x0b\x32!.msf.msg.svc.PbC2CUnReadMsgNumReq\x12\x42\n\x13\x62induin_unread_info\x18\x02 \x03(\x0b\x32%.msf.msg.svc.PbBindUinUnReadMsgNumReq\x12<\n\x11group_unread_info\x18\x03 \x01(\x0b\x32!.msf.msg.svc.PbPullGroupMsgSeqReq\x12@\n\x13\x64iscuss_unread_info\x18\x04 \x01(\x0b\x32#.msf.msg.svc.PbPullDiscussMsgSeqReq\x12\x42\n\x13thirdqq_unread_info\x18\x05 \x01(\x0b\x32%.msf.msg.svc.PbThirdQQUnReadMsgNumReq\"\xdd\x02\n\x12PbUnReadMsgSeqResp\x12;\n\x0f\x63\x32\x63_unread_info\x18\x01 \x01(\x0b\x32\".msf.msg.svc.PbC2CUnReadMsgNumResp\x12\x43\n\x13\x62induin_unread_info\x18\x02 \x03(\x0b\x32&.msf.msg.svc.PbBindUinUnReadMsgNumResp\x12=\n\x11group_unread_info\x18\x03 \x01(\x0b\x32\".msf.msg.svc.PbPullGroupMsgSeqResp\x12\x41\n\x13\x64iscuss_unread_info\x18\x04 \x01(\x0b\x32$.msf.msg.svc.PbPullDiscussMsgSeqResp\x12\x43\n\x13thirdqq_unread_info\x18\x05 \x01(\x0b\x32&.msf.msg.svc.PbThirdQQUnReadMsgNumResp\"=\n\x0bPubGroupTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\x12\x11\n\tgroup_uin\x18\x03 \x01(\x04\")\n\nPublicPlat\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\"1\n\x12QQQueryBusinessTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\",\n\rRichStatusTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\"\xb8\x07\n\x0bRoutingHead\x12\x1d\n\x03\x63\x32\x63\x18\x01 \x01(\x0b\x32\x10.msf.msg.svc.C2C\x12\x1d\n\x03grp\x18\x02 \x01(\x0b\x32\x10.msf.msg.svc.Grp\x12$\n\x07grp_tmp\x18\x03 \x01(\x0b\x32\x13.msf.msg.svc.GrpTmp\x12\x1d\n\x03\x64is\x18\x04 \x01(\x0b\x32\x10.msf.msg.svc.Dis\x12$\n\x07\x64is_tmp\x18\x05 \x01(\x0b\x32\x13.msf.msg.svc.DisTmp\x12$\n\x07wpa_tmp\x18\x06 \x01(\x0b\x32\x13.msf.msg.svc.WPATmp\x12,\n\x0bpublic_plat\x18\x08 \x01(\x0b\x32\x17.msf.msg.svc.PublicPlat\x12(\n\ttrans_msg\x18\t \x01(\x0b\x32\x15.msf.msg.svc.TransMsg\x12\x31\n\x0c\x61\x64\x64ress_list\x18\n \x01(\x0b\x32\x1b.msf.msg.svc.AddressListTmp\x12\x33\n\x0frich_status_tmp\x18\x0b \x01(\x0b\x32\x1a.msf.msg.svc.RichStatusTmp\x12(\n\ttrans_cmd\x18\x0c \x01(\x0b\x32\x15.msf.msg.svc.TransCmd\x12*\n\naccost_tmp\x18\r \x01(\x0b\x32\x16.msf.msg.svc.AccostTmp\x12/\n\rpub_group_tmp\x18\x0e \x01(\x0b\x32\x18.msf.msg.svc.PubGroupTmp\x12-\n\x0ctrans_0_x211\x18\x0f \x01(\x0b\x32\x17.msf.msg.svc.Trans0x211\x12\x35\n\x10\x62usiness_wpa_tmp\x18\x10 \x01(\x0b\x32\x1b.msf.msg.svc.BusinessWPATmp\x12&\n\x08\x61uth_tmp\x18\x11 \x01(\x0b\x32\x14.msf.msg.svc.AuthTmp\x12&\n\x08\x62sns_tmp\x18\x12 \x01(\x0b\x32\x14.msf.msg.svc.BsnsTmp\x12=\n\x14qq_querybusiness_tmp\x18\x13 \x01(\x0b\x32\x1f.msf.msg.svc.QQQueryBusinessTmp\x12\x37\n\x11nearby_dating_tmp\x18\x14 \x01(\x0b\x32\x1c.msf.msg.svc.NearByDatingTmp\x12=\n\x14nearby_assistant_tmp\x18\x15 \x01(\x0b\x32\x1f.msf.msg.svc.NearByAssistantTmp\x12&\n\x08\x63omm_tmp\x18\x16 \x01(\x0b\x32\x14.msf.msg.svc.CommTmp\"\xa6\x01\n\nTrans0x211\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0e\n\x06\x63\x63_cmd\x18\x02 \x01(\r\x12,\n\tinst_ctrl\x18\x03 \x01(\x0b\x32\x19.im.msg.msg_head.InstCtrl\x12\x0b\n\x03sig\x18\x04 \x01(\x0c\x12\x10\n\x08\x63\x32\x63_type\x18\x05 \x01(\r\x12\x14\n\x0cservice_type\x18\x06 \x01(\r\x12\x15\n\rdataline_flag\x18\x07 \x01(\r\"(\n\x08TransCmd\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0c\n\x04type\x18\x02 \x01(\r\"+\n\x08TransMsg\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0f\n\x07\x63\x32\x63_cmd\x18\x02 \x01(\r\">\n\x08TransReq\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\x05\x12\x0f\n\x07req_tag\x18\x02 \x01(\r\x12\x10\n\x08req_buff\x18\x03 \x01(\x0c\"P\n\tTransResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x10\n\x08resp_tag\x18\x03 \x01(\r\x12\x11\n\tresp_buff\x18\x04 \x01(\x0c\"W\n\x0cTransSvrInfo\x12\x10\n\x08sub_type\x18\x01 \x01(\r\x12\x10\n\x08ret_code\x18\x02 \x01(\x05\x12\x0f\n\x07\x65rr_msg\x18\x03 \x01(\x0c\x12\x12\n\ntrans_info\x18\x04 \x01(\x0c\"%\n\x06WPATmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\"9\n\x13WithDrawWordingInfo\x12\x0f\n\x07item_id\x18\x01 \x01(\x05\x12\x11\n\titem_name\x18\x02 \x01(\t' - , - dependencies=[cai_dot_pb_dot_msf_dot_msg_dot_comm_dot_comm__pb2.DESCRIPTOR,cai_dot_pb_dot_msf_dot_msg_dot_ctrl_dot_ctrl__pb2.DESCRIPTOR,cai_dot_pb_dot_im_dot_msg_dot_msg__body_dot_msg__body__pb2.DESCRIPTOR,cai_dot_pb_dot_im_dot_msg_dot_msg__head_dot_msg__head__pb2.DESCRIPTOR,cai_dot_pb_dot_im_dot_msg_dot_receipt_dot_receipt__pb2.DESCRIPTOR,]) - - - - -_ACCOSTTMP = _descriptor.Descriptor( - name='AccostTmp', - full_name='msf.msg.svc.AccostTmp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.AccostTmp.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.AccostTmp.sig', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reply', full_name='msf.msg.svc.AccostTmp.reply', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=224, - serialized_end=279, -) - - -_ADDRESSLISTTMP = _descriptor.Descriptor( - name='AddressListTmp', - full_name='msf.msg.svc.AddressListTmp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='from_phone', full_name='msf.msg.svc.AddressListTmp.from_phone', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_phone', full_name='msf.msg.svc.AddressListTmp.to_phone', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.AddressListTmp.to_uin', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.AddressListTmp.sig', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='from_contact_size', full_name='msf.msg.svc.AddressListTmp.from_contact_size', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=281, - serialized_end=391, -) - - -_AUTHTMP = _descriptor.Descriptor( - name='AuthTmp', - full_name='msf.msg.svc.AuthTmp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.AuthTmp.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.AuthTmp.sig', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=393, - serialized_end=431, -) - - -_BSNSTMP = _descriptor.Descriptor( - name='BsnsTmp', - full_name='msf.msg.svc.BsnsTmp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.BsnsTmp.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.BsnsTmp.sig', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=433, - serialized_end=471, -) - - -_BUSINESSWPATMP = _descriptor.Descriptor( - name='BusinessWPATmp', - full_name='msf.msg.svc.BusinessWPATmp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.BusinessWPATmp.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.BusinessWPATmp.sig', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sigt', full_name='msf.msg.svc.BusinessWPATmp.sigt', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=473, - serialized_end=532, -) - - -_C2C = _descriptor.Descriptor( - name='C2C', - full_name='msf.msg.svc.C2C', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.C2C.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=534, - serialized_end=555, -) - - -_COMMTMP = _descriptor.Descriptor( - name='CommTmp', - full_name='msf.msg.svc.CommTmp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.CommTmp.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='c2c_type', full_name='msf.msg.svc.CommTmp.c2c_type', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='svr_type', full_name='msf.msg.svc.CommTmp.svr_type', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.CommTmp.sig', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reserved', full_name='msf.msg.svc.CommTmp.reserved', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=557, - serialized_end=649, -) - - -_DIS = _descriptor.Descriptor( - name='Dis', - full_name='msf.msg.svc.Dis', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='dis_uin', full_name='msf.msg.svc.Dis.dis_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=651, - serialized_end=673, -) - - -_DISTMP = _descriptor.Descriptor( - name='DisTmp', - full_name='msf.msg.svc.DisTmp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='dis_uin', full_name='msf.msg.svc.DisTmp.dis_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.DisTmp.to_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=675, - serialized_end=716, -) - - -_GRP = _descriptor.Descriptor( - name='Grp', - full_name='msf.msg.svc.Grp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='group_code', full_name='msf.msg.svc.Grp.group_code', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=718, - serialized_end=743, -) - - -_GRPTMP = _descriptor.Descriptor( - name='GrpTmp', - full_name='msf.msg.svc.GrpTmp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='group_uin', full_name='msf.msg.svc.GrpTmp.group_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.GrpTmp.to_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=745, - serialized_end=788, -) - - -_MSGSENDINFO = _descriptor.Descriptor( - name='MsgSendInfo', - full_name='msf.msg.svc.MsgSendInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='receiver', full_name='msf.msg.svc.MsgSendInfo.receiver', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=790, - serialized_end=821, -) - - -_MULTIMSGASSIST = _descriptor.Descriptor( - name='MultiMsgAssist', - full_name='msf.msg.svc.MultiMsgAssist', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='repeated_routing', full_name='msf.msg.svc.MultiMsgAssist.repeated_routing', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='use', full_name='msf.msg.svc.MultiMsgAssist.use', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='temp_id', full_name='msf.msg.svc.MultiMsgAssist.temp_id', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='vedio_len', full_name='msf.msg.svc.MultiMsgAssist.vedio_len', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='redbag_id', full_name='msf.msg.svc.MultiMsgAssist.redbag_id', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='redbag_amount', full_name='msf.msg.svc.MultiMsgAssist.redbag_amount', index=5, - number=6, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='has_readbag', full_name='msf.msg.svc.MultiMsgAssist.has_readbag', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='has_vedio', full_name='msf.msg.svc.MultiMsgAssist.has_vedio', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=824, - serialized_end=1023, -) - - -_NEARBYASSISTANTTMP = _descriptor.Descriptor( - name='NearByAssistantTmp', - full_name='msf.msg.svc.NearByAssistantTmp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.NearByAssistantTmp.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.NearByAssistantTmp.sig', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reply', full_name='msf.msg.svc.NearByAssistantTmp.reply', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1025, - serialized_end=1089, -) - - -_NEARBYDATINGTMP = _descriptor.Descriptor( - name='NearByDatingTmp', - full_name='msf.msg.svc.NearByDatingTmp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.NearByDatingTmp.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.NearByDatingTmp.sig', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reply', full_name='msf.msg.svc.NearByDatingTmp.reply', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1091, - serialized_end=1152, -) - - -_PBBINDUINGETMSGREQ = _descriptor.Descriptor( - name='PbBindUinGetMsgReq', - full_name='msf.msg.svc.PbBindUinGetMsgReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='bind_uin', full_name='msf.msg.svc.PbBindUinGetMsgReq.bind_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bind_uin_sig', full_name='msf.msg.svc.PbBindUinGetMsgReq.bind_uin_sig', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sync_flag', full_name='msf.msg.svc.PbBindUinGetMsgReq.sync_flag', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sync_cookie', full_name='msf.msg.svc.PbBindUinGetMsgReq.sync_cookie', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1154, - serialized_end=1254, -) - - -_PBBINDUINMSGREADEDCONFIRMREQ = _descriptor.Descriptor( - name='PbBindUinMsgReadedConfirmReq', - full_name='msf.msg.svc.PbBindUinMsgReadedConfirmReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='sync_cookie', full_name='msf.msg.svc.PbBindUinMsgReadedConfirmReq.sync_cookie', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bind_uin', full_name='msf.msg.svc.PbBindUinMsgReadedConfirmReq.bind_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1256, - serialized_end=1325, -) - - -_PBBINDUINMSGREADEDCONFIRMRESP = _descriptor.Descriptor( - name='PbBindUinMsgReadedConfirmResp', - full_name='msf.msg.svc.PbBindUinMsgReadedConfirmResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbBindUinMsgReadedConfirmResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbBindUinMsgReadedConfirmResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sync_cookie', full_name='msf.msg.svc.PbBindUinMsgReadedConfirmResp.sync_cookie', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bind_uin', full_name='msf.msg.svc.PbBindUinMsgReadedConfirmResp.bind_uin', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1327, - serialized_end=1429, -) - - -_PBBINDUINUNREADMSGNUMREQ = _descriptor.Descriptor( - name='PbBindUinUnReadMsgNumReq', - full_name='msf.msg.svc.PbBindUinUnReadMsgNumReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='bind_uin', full_name='msf.msg.svc.PbBindUinUnReadMsgNumReq.bind_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sync_cookie', full_name='msf.msg.svc.PbBindUinUnReadMsgNumReq.sync_cookie', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1431, - serialized_end=1496, -) - - -_PBBINDUINUNREADMSGNUMRESP = _descriptor.Descriptor( - name='PbBindUinUnReadMsgNumResp', - full_name='msf.msg.svc.PbBindUinUnReadMsgNumResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbBindUinUnReadMsgNumResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbBindUinUnReadMsgNumResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bind_uin', full_name='msf.msg.svc.PbBindUinUnReadMsgNumResp.bind_uin', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='num', full_name='msf.msg.svc.PbBindUinUnReadMsgNumResp.num', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1498, - serialized_end=1588, -) - - -_PBC2CMSGWITHDRAWREQ_MSGINFO = _descriptor.Descriptor( - name='MsgInfo', - full_name='msf.msg.svc.PbC2CMsgWithDrawReq.MsgInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='from_uin', full_name='msf.msg.svc.PbC2CMsgWithDrawReq.MsgInfo.from_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.PbC2CMsgWithDrawReq.MsgInfo.to_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_seq', full_name='msf.msg.svc.PbC2CMsgWithDrawReq.MsgInfo.msg_seq', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_uid', full_name='msf.msg.svc.PbC2CMsgWithDrawReq.MsgInfo.msg_uid', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_time', full_name='msf.msg.svc.PbC2CMsgWithDrawReq.MsgInfo.msg_time', index=4, - number=5, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_random', full_name='msf.msg.svc.PbC2CMsgWithDrawReq.MsgInfo.msg_random', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pkg_num', full_name='msf.msg.svc.PbC2CMsgWithDrawReq.MsgInfo.pkg_num', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pkg_index', full_name='msf.msg.svc.PbC2CMsgWithDrawReq.MsgInfo.pkg_index', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='div_seq', full_name='msf.msg.svc.PbC2CMsgWithDrawReq.MsgInfo.div_seq', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_type', full_name='msf.msg.svc.PbC2CMsgWithDrawReq.MsgInfo.msg_type', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='routing_head', full_name='msf.msg.svc.PbC2CMsgWithDrawReq.MsgInfo.routing_head', index=10, - number=20, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1733, - serialized_end=1967, -) - -_PBC2CMSGWITHDRAWREQ = _descriptor.Descriptor( - name='PbC2CMsgWithDrawReq', - full_name='msf.msg.svc.PbC2CMsgWithDrawReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='info', full_name='msf.msg.svc.PbC2CMsgWithDrawReq.info', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='long_message_flag', full_name='msf.msg.svc.PbC2CMsgWithDrawReq.long_message_flag', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='reserved', full_name='msf.msg.svc.PbC2CMsgWithDrawReq.reserved', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sub_cmd', full_name='msf.msg.svc.PbC2CMsgWithDrawReq.sub_cmd', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[_PBC2CMSGWITHDRAWREQ_MSGINFO, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1591, - serialized_end=1967, -) - - -_PBC2CMSGWITHDRAWRESP = _descriptor.Descriptor( - name='PbC2CMsgWithDrawResp', - full_name='msf.msg.svc.PbC2CMsgWithDrawResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbC2CMsgWithDrawResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbC2CMsgWithDrawResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='status', full_name='msf.msg.svc.PbC2CMsgWithDrawResp.status', index=2, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sub_cmd', full_name='msf.msg.svc.PbC2CMsgWithDrawResp.sub_cmd', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='wording_info', full_name='msf.msg.svc.PbC2CMsgWithDrawResp.wording_info', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1970, - serialized_end=2137, -) - - -_MSGSTATUS = _descriptor.Descriptor( - name='MsgStatus', - full_name='msf.msg.svc.MsgStatus', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='info', full_name='msf.msg.svc.MsgStatus.info', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='status', full_name='msf.msg.svc.MsgStatus.status', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2139, - serialized_end=2222, -) - - -_PBC2CREADEDREPORTREQ = _descriptor.Descriptor( - name='PbC2CReadedReportReq', - full_name='msf.msg.svc.PbC2CReadedReportReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='sync_cookie', full_name='msf.msg.svc.PbC2CReadedReportReq.sync_cookie', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pair_info', full_name='msf.msg.svc.PbC2CReadedReportReq.pair_info', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2224, - serialized_end=2316, -) - - -_UINPAIRREADINFO = _descriptor.Descriptor( - name='UinPairReadInfo', - full_name='msf.msg.svc.UinPairReadInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='peer_uin', full_name='msf.msg.svc.UinPairReadInfo.peer_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_read_time', full_name='msf.msg.svc.UinPairReadInfo.last_read_time', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='crm_sig', full_name='msf.msg.svc.UinPairReadInfo.crm_sig', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='peer_type', full_name='msf.msg.svc.UinPairReadInfo.peer_type', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='chat_type', full_name='msf.msg.svc.UinPairReadInfo.chat_type', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cpid', full_name='msf.msg.svc.UinPairReadInfo.cpid', index=5, - number=6, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='aio_type', full_name='msf.msg.svc.UinPairReadInfo.aio_type', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_tiny_id', full_name='msf.msg.svc.UinPairReadInfo.to_tiny_id', index=7, - number=9, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2319, - serialized_end=2485, -) - - -_PBC2CREADEDREPORTRESP = _descriptor.Descriptor( - name='PbC2CReadedReportResp', - full_name='msf.msg.svc.PbC2CReadedReportResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbC2CReadedReportResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbC2CReadedReportResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sync_cookie', full_name='msf.msg.svc.PbC2CReadedReportResp.sync_cookie', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2487, - serialized_end=2563, -) - - -_PBC2CUNREADMSGNUMREQ = _descriptor.Descriptor( - name='PbC2CUnReadMsgNumReq', - full_name='msf.msg.svc.PbC2CUnReadMsgNumReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2565, - serialized_end=2587, -) - - -_PBC2CUNREADMSGNUMRESP = _descriptor.Descriptor( - name='PbC2CUnReadMsgNumResp', - full_name='msf.msg.svc.PbC2CUnReadMsgNumResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbC2CUnReadMsgNumResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbC2CUnReadMsgNumResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='num', full_name='msf.msg.svc.PbC2CUnReadMsgNumResp.num', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2589, - serialized_end=2657, -) - - -_PBDELROAMMSGREQ = _descriptor.Descriptor( - name='PbDelRoamMsgReq', - full_name='msf.msg.svc.PbDelRoamMsgReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='c2c_msg', full_name='msf.msg.svc.PbDelRoamMsgReq.c2c_msg', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='grp_msg', full_name='msf.msg.svc.PbDelRoamMsgReq.grp_msg', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='dis_msg', full_name='msf.msg.svc.PbDelRoamMsgReq.dis_msg', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2660, - serialized_end=2791, -) - - -_C2CMSG = _descriptor.Descriptor( - name='C2CMsg', - full_name='msf.msg.svc.C2CMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='from_uin', full_name='msf.msg.svc.C2CMsg.from_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='peer_uin', full_name='msf.msg.svc.C2CMsg.peer_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='time', full_name='msf.msg.svc.C2CMsg.time', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='random', full_name='msf.msg.svc.C2CMsg.random', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='seq', full_name='msf.msg.svc.C2CMsg.seq', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2793, - serialized_end=2880, -) - - -_DISMSG = _descriptor.Descriptor( - name='DisMsg', - full_name='msf.msg.svc.DisMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='discuss_uin', full_name='msf.msg.svc.DisMsg.discuss_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='seq', full_name='msf.msg.svc.DisMsg.seq', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2882, - serialized_end=2924, -) - - -_GRPMSG = _descriptor.Descriptor( - name='GrpMsg', - full_name='msf.msg.svc.GrpMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='group_code', full_name='msf.msg.svc.GrpMsg.group_code', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='seq', full_name='msf.msg.svc.GrpMsg.seq', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='resv_flag', full_name='msf.msg.svc.GrpMsg.resv_flag', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2926, - serialized_end=2986, -) - - -_PBDELROAMMSGRESP = _descriptor.Descriptor( - name='PbDelRoamMsgResp', - full_name='msf.msg.svc.PbDelRoamMsgResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbDelRoamMsgResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbDelRoamMsgResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2988, - serialized_end=3038, -) - - -_PBDELETEMSGREQ_MSGITEM = _descriptor.Descriptor( - name='MsgItem', - full_name='msf.msg.svc.PbDeleteMsgReq.MsgItem', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='from_uin', full_name='msf.msg.svc.PbDeleteMsgReq.MsgItem.from_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.PbDeleteMsgReq.MsgItem.to_uin', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='type', full_name='msf.msg.svc.PbDeleteMsgReq.MsgItem.type', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='seq', full_name='msf.msg.svc.PbDeleteMsgReq.MsgItem.seq', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='uid', full_name='msf.msg.svc.PbDeleteMsgReq.MsgItem.uid', index=4, - number=5, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.PbDeleteMsgReq.MsgItem.sig', index=5, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3115, - serialized_end=3211, -) - -_PBDELETEMSGREQ = _descriptor.Descriptor( - name='PbDeleteMsgReq', - full_name='msf.msg.svc.PbDeleteMsgReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='msg_items', full_name='msf.msg.svc.PbDeleteMsgReq.msg_items', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[_PBDELETEMSGREQ_MSGITEM, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3041, - serialized_end=3211, -) - - -_PBDELETEMSGRESP = _descriptor.Descriptor( - name='PbDeleteMsgResp', - full_name='msf.msg.svc.PbDeleteMsgResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbDeleteMsgResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbDeleteMsgResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3213, - serialized_end=3262, -) - - -_PBDISCUSSREADEDREPORTREQ = _descriptor.Descriptor( - name='PbDiscussReadedReportReq', - full_name='msf.msg.svc.PbDiscussReadedReportReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='conf_uin', full_name='msf.msg.svc.PbDiscussReadedReportReq.conf_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_read_seq', full_name='msf.msg.svc.PbDiscussReadedReportReq.last_read_seq', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3264, - serialized_end=3331, -) - - -_PBDISCUSSREADEDREPORTRESP = _descriptor.Descriptor( - name='PbDiscussReadedReportResp', - full_name='msf.msg.svc.PbDiscussReadedReportResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbDiscussReadedReportResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbDiscussReadedReportResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='conf_uin', full_name='msf.msg.svc.PbDiscussReadedReportResp.conf_uin', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='member_seq', full_name='msf.msg.svc.PbDiscussReadedReportResp.member_seq', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='conf_seq', full_name='msf.msg.svc.PbDiscussReadedReportResp.conf_seq', index=4, - number=5, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3333, - serialized_end=3448, -) - - -_PBGETDISCUSSMSGREQ = _descriptor.Descriptor( - name='PbGetDiscussMsgReq', - full_name='msf.msg.svc.PbGetDiscussMsgReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='discuss_uin', full_name='msf.msg.svc.PbGetDiscussMsgReq.discuss_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='end_seq', full_name='msf.msg.svc.PbGetDiscussMsgReq.end_seq', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='begin_seq', full_name='msf.msg.svc.PbGetDiscussMsgReq.begin_seq', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_get_time', full_name='msf.msg.svc.PbGetDiscussMsgReq.last_get_time', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='discuss_info_seq', full_name='msf.msg.svc.PbGetDiscussMsgReq.discuss_info_seq', index=4, - number=5, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='filter', full_name='msf.msg.svc.PbGetDiscussMsgReq.filter', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='member_seq', full_name='msf.msg.svc.PbGetDiscussMsgReq.member_seq', index=6, - number=7, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3451, - serialized_end=3613, -) - - -_PBGETDISCUSSMSGRESP = _descriptor.Descriptor( - name='PbGetDiscussMsgResp', - full_name='msf.msg.svc.PbGetDiscussMsgResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbGetDiscussMsgResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbGetDiscussMsgResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='discuss_uin', full_name='msf.msg.svc.PbGetDiscussMsgResp.discuss_uin', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='return_end_seq', full_name='msf.msg.svc.PbGetDiscussMsgResp.return_end_seq', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='return_begin_seq', full_name='msf.msg.svc.PbGetDiscussMsgResp.return_begin_seq', index=4, - number=5, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg', full_name='msf.msg.svc.PbGetDiscussMsgResp.msg', index=5, - number=6, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_get_time', full_name='msf.msg.svc.PbGetDiscussMsgResp.last_get_time', index=6, - number=7, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='discuss_info_seq', full_name='msf.msg.svc.PbGetDiscussMsgResp.discuss_info_seq', index=7, - number=8, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3616, - serialized_end=3821, -) - - -_PBGETGROUPMSGREQ = _descriptor.Descriptor( - name='PbGetGroupMsgReq', - full_name='msf.msg.svc.PbGetGroupMsgReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='group_code', full_name='msf.msg.svc.PbGetGroupMsgReq.group_code', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='begin_seq', full_name='msf.msg.svc.PbGetGroupMsgReq.begin_seq', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='end_seq', full_name='msf.msg.svc.PbGetGroupMsgReq.end_seq', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='filter', full_name='msf.msg.svc.PbGetGroupMsgReq.filter', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='member_seq', full_name='msf.msg.svc.PbGetGroupMsgReq.member_seq', index=4, - number=5, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='public_group', full_name='msf.msg.svc.PbGetGroupMsgReq.public_group', index=5, - number=6, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='shield_flag', full_name='msf.msg.svc.PbGetGroupMsgReq.shield_flag', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='save_traffic_flag', full_name='msf.msg.svc.PbGetGroupMsgReq.save_traffic_flag', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3824, - serialized_end=4004, -) - - -_PBGETGROUPMSGRESP = _descriptor.Descriptor( - name='PbGetGroupMsgResp', - full_name='msf.msg.svc.PbGetGroupMsgResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbGetGroupMsgResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbGetGroupMsgResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_code', full_name='msf.msg.svc.PbGetGroupMsgResp.group_code', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='return_begin_seq', full_name='msf.msg.svc.PbGetGroupMsgResp.return_begin_seq', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='return_end_seq', full_name='msf.msg.svc.PbGetGroupMsgResp.return_end_seq', index=4, - number=5, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg', full_name='msf.msg.svc.PbGetGroupMsgResp.msg', index=5, - number=6, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4007, - serialized_end=4160, -) - - -_PBGETMSGREQ = _descriptor.Descriptor( - name='PbGetMsgReq', - full_name='msf.msg.svc.PbGetMsgReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='sync_flag', full_name='msf.msg.svc.PbGetMsgReq.sync_flag', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sync_cookie', full_name='msf.msg.svc.PbGetMsgReq.sync_cookie', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ramble_flag', full_name='msf.msg.svc.PbGetMsgReq.ramble_flag', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='latest_ramble_number', full_name='msf.msg.svc.PbGetMsgReq.latest_ramble_number', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='other_ramble_number', full_name='msf.msg.svc.PbGetMsgReq.other_ramble_number', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='online_sync_flag', full_name='msf.msg.svc.PbGetMsgReq.online_sync_flag', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='context_flag', full_name='msf.msg.svc.PbGetMsgReq.context_flag', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='whisper_session_id', full_name='msf.msg.svc.PbGetMsgReq.whisper_session_id', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_type', full_name='msf.msg.svc.PbGetMsgReq.req_type', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pubaccount_cookie', full_name='msf.msg.svc.PbGetMsgReq.pubaccount_cookie', index=9, - number=10, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ctrl_buf', full_name='msf.msg.svc.PbGetMsgReq.ctrl_buf', index=10, - number=11, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='server_buf', full_name='msf.msg.svc.PbGetMsgReq.server_buf', index=11, - number=12, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4163, - serialized_end=4455, -) - - -_PBGETMSGRESP = _descriptor.Descriptor( - name='PbGetMsgResp', - full_name='msf.msg.svc.PbGetMsgResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbGetMsgResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbGetMsgResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sync_cookie', full_name='msf.msg.svc.PbGetMsgResp.sync_cookie', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sync_flag', full_name='msf.msg.svc.PbGetMsgResp.sync_flag', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='uin_pair_msgs', full_name='msf.msg.svc.PbGetMsgResp.uin_pair_msgs', index=4, - number=5, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bind_uin', full_name='msf.msg.svc.PbGetMsgResp.bind_uin', index=5, - number=6, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rsp_type', full_name='msf.msg.svc.PbGetMsgResp.rsp_type', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pubaccount_cookie', full_name='msf.msg.svc.PbGetMsgResp.pubaccount_cookie', index=7, - number=8, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='is_partial_sync', full_name='msf.msg.svc.PbGetMsgResp.is_partial_sync', index=8, - number=9, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ctrl_buf', full_name='msf.msg.svc.PbGetMsgResp.ctrl_buf', index=9, - number=10, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4458, - serialized_end=4699, -) - - -_PBGETONEDAYROAMMSGREQ = _descriptor.Descriptor( - name='PbGetOneDayRoamMsgReq', - full_name='msf.msg.svc.PbGetOneDayRoamMsgReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='peer_uin', full_name='msf.msg.svc.PbGetOneDayRoamMsgReq.peer_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_msgtime', full_name='msf.msg.svc.PbGetOneDayRoamMsgReq.last_msgtime', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='random', full_name='msf.msg.svc.PbGetOneDayRoamMsgReq.random', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='read_cnt', full_name='msf.msg.svc.PbGetOneDayRoamMsgReq.read_cnt', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4701, - serialized_end=4798, -) - - -_PBGETONEDAYROAMMSGRESP = _descriptor.Descriptor( - name='PbGetOneDayRoamMsgResp', - full_name='msf.msg.svc.PbGetOneDayRoamMsgResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbGetOneDayRoamMsgResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbGetOneDayRoamMsgResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='peer_uin', full_name='msf.msg.svc.PbGetOneDayRoamMsgResp.peer_uin', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_msgtime', full_name='msf.msg.svc.PbGetOneDayRoamMsgResp.last_msgtime', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='random', full_name='msf.msg.svc.PbGetOneDayRoamMsgResp.random', index=4, - number=5, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg', full_name='msf.msg.svc.PbGetOneDayRoamMsgResp.msg', index=5, - number=6, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='iscomplete', full_name='msf.msg.svc.PbGetOneDayRoamMsgResp.iscomplete', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4801, - serialized_end=4965, -) - - -_PBGETROAMMSGREQ = _descriptor.Descriptor( - name='PbGetRoamMsgReq', - full_name='msf.msg.svc.PbGetRoamMsgReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='peer_uin', full_name='msf.msg.svc.PbGetRoamMsgReq.peer_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_msgtime', full_name='msf.msg.svc.PbGetRoamMsgReq.last_msgtime', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='random', full_name='msf.msg.svc.PbGetRoamMsgReq.random', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='read_cnt', full_name='msf.msg.svc.PbGetRoamMsgReq.read_cnt', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='check_pwd', full_name='msf.msg.svc.PbGetRoamMsgReq.check_pwd', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.PbGetRoamMsgReq.sig', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pwd', full_name='msf.msg.svc.PbGetRoamMsgReq.pwd', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='subcmd', full_name='msf.msg.svc.PbGetRoamMsgReq.subcmd', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='begin_msgtime', full_name='msf.msg.svc.PbGetRoamMsgReq.begin_msgtime', index=8, - number=9, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_type', full_name='msf.msg.svc.PbGetRoamMsgReq.req_type', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4968, - serialized_end=5161, -) - - -_PBGETROAMMSGRESP = _descriptor.Descriptor( - name='PbGetRoamMsgResp', - full_name='msf.msg.svc.PbGetRoamMsgResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbGetRoamMsgResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbGetRoamMsgResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='peer_uin', full_name='msf.msg.svc.PbGetRoamMsgResp.peer_uin', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_msgtime', full_name='msf.msg.svc.PbGetRoamMsgResp.last_msgtime', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='random', full_name='msf.msg.svc.PbGetRoamMsgResp.random', index=4, - number=5, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg', full_name='msf.msg.svc.PbGetRoamMsgResp.msg', index=5, - number=6, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.PbGetRoamMsgResp.sig', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5164, - serialized_end=5315, -) - - -_PBGROUPMSGWITHDRAWREQ = _descriptor.Descriptor( - name='PbGroupMsgWithDrawReq', - full_name='msf.msg.svc.PbGroupMsgWithDrawReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='sub_cmd', full_name='msf.msg.svc.PbGroupMsgWithDrawReq.sub_cmd', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_type', full_name='msf.msg.svc.PbGroupMsgWithDrawReq.group_type', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_code', full_name='msf.msg.svc.PbGroupMsgWithDrawReq.group_code', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='list', full_name='msf.msg.svc.PbGroupMsgWithDrawReq.list', index=3, - number=4, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='userdef', full_name='msf.msg.svc.PbGroupMsgWithDrawReq.userdef', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5318, - serialized_end=5455, -) - - -_MESSAGEINFO = _descriptor.Descriptor( - name='MessageInfo', - full_name='msf.msg.svc.MessageInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='msg_seq', full_name='msf.msg.svc.MessageInfo.msg_seq', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_random', full_name='msf.msg.svc.MessageInfo.msg_random', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_type', full_name='msf.msg.svc.MessageInfo.msg_type', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='resv_flag', full_name='msf.msg.svc.MessageInfo.resv_flag', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5457, - serialized_end=5544, -) - - -_PBGROUPMSGWITHDRAWRESP = _descriptor.Descriptor( - name='PbGroupMsgWithDrawResp', - full_name='msf.msg.svc.PbGroupMsgWithDrawResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbGroupMsgWithDrawResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbGroupMsgWithDrawResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sub_cmd', full_name='msf.msg.svc.PbGroupMsgWithDrawResp.sub_cmd', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_type', full_name='msf.msg.svc.PbGroupMsgWithDrawResp.group_type', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_code', full_name='msf.msg.svc.PbGroupMsgWithDrawResp.group_code', index=4, - number=5, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='failed_msg_list', full_name='msf.msg.svc.PbGroupMsgWithDrawResp.failed_msg_list', index=5, - number=6, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='userdef', full_name='msf.msg.svc.PbGroupMsgWithDrawResp.userdef', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='wording_info', full_name='msf.msg.svc.PbGroupMsgWithDrawResp.wording_info', index=7, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5547, - serialized_end=5786, -) - - -_MESSAGERESULT = _descriptor.Descriptor( - name='MessageResult', - full_name='msf.msg.svc.MessageResult', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.MessageResult.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_seq', full_name='msf.msg.svc.MessageResult.msg_seq', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_time', full_name='msf.msg.svc.MessageResult.msg_time', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_random', full_name='msf.msg.svc.MessageResult.msg_random', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='err_msg', full_name='msf.msg.svc.MessageResult.err_msg', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_type', full_name='msf.msg.svc.MessageResult.msg_type', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5788, - serialized_end=5909, -) - - -_PBGROUPREADEDREPORTREQ = _descriptor.Descriptor( - name='PbGroupReadedReportReq', - full_name='msf.msg.svc.PbGroupReadedReportReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='group_code', full_name='msf.msg.svc.PbGroupReadedReportReq.group_code', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_read_seq', full_name='msf.msg.svc.PbGroupReadedReportReq.last_read_seq', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5911, - serialized_end=5978, -) - - -_PBGROUPREADEDREPORTRESP = _descriptor.Descriptor( - name='PbGroupReadedReportResp', - full_name='msf.msg.svc.PbGroupReadedReportResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbGroupReadedReportResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbGroupReadedReportResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_code', full_name='msf.msg.svc.PbGroupReadedReportResp.group_code', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='member_seq', full_name='msf.msg.svc.PbGroupReadedReportResp.member_seq', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_msg_seq', full_name='msf.msg.svc.PbGroupReadedReportResp.group_msg_seq', index=4, - number=5, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5980, - serialized_end=6100, -) - - -_PBINPUTNOTIFYINFO = _descriptor.Descriptor( - name='PbInputNotifyInfo', - full_name='msf.msg.svc.PbInputNotifyInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.PbInputNotifyInfo.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ime', full_name='msf.msg.svc.PbInputNotifyInfo.ime', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='notify_flag', full_name='msf.msg.svc.PbInputNotifyInfo.notify_flag', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pb_reserve', full_name='msf.msg.svc.PbInputNotifyInfo.pb_reserve', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ios_push_wording', full_name='msf.msg.svc.PbInputNotifyInfo.ios_push_wording', index=4, - number=5, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6102, - serialized_end=6217, -) - - -_PBMSGREADEDREPORTREQ = _descriptor.Descriptor( - name='PbMsgReadedReportReq', - full_name='msf.msg.svc.PbMsgReadedReportReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='grp_read_report', full_name='msf.msg.svc.PbMsgReadedReportReq.grp_read_report', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='dis_read_report', full_name='msf.msg.svc.PbMsgReadedReportReq.dis_read_report', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='c2c_read_report', full_name='msf.msg.svc.PbMsgReadedReportReq.c2c_read_report', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bind_uin_read_report', full_name='msf.msg.svc.PbMsgReadedReportReq.bind_uin_read_report', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6220, - serialized_end=6501, -) - - -_PBMSGREADEDREPORTRESP = _descriptor.Descriptor( - name='PbMsgReadedReportResp', - full_name='msf.msg.svc.PbMsgReadedReportResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='grp_read_report', full_name='msf.msg.svc.PbMsgReadedReportResp.grp_read_report', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='dis_read_report', full_name='msf.msg.svc.PbMsgReadedReportResp.dis_read_report', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='c2c_read_report', full_name='msf.msg.svc.PbMsgReadedReportResp.c2c_read_report', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bind_uin_read_report', full_name='msf.msg.svc.PbMsgReadedReportResp.bind_uin_read_report', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6504, - serialized_end=6790, -) - - -_PBMSGWITHDRAWREQ = _descriptor.Descriptor( - name='PbMsgWithDrawReq', - full_name='msf.msg.svc.PbMsgWithDrawReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='c2c_with_draw', full_name='msf.msg.svc.PbMsgWithDrawReq.c2c_with_draw', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_with_draw', full_name='msf.msg.svc.PbMsgWithDrawReq.group_with_draw', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6793, - serialized_end=6929, -) - - -_PBMSGWITHDRAWRESP = _descriptor.Descriptor( - name='PbMsgWithDrawResp', - full_name='msf.msg.svc.PbMsgWithDrawResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='c2c_with_draw', full_name='msf.msg.svc.PbMsgWithDrawResp.c2c_with_draw', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_with_draw', full_name='msf.msg.svc.PbMsgWithDrawResp.group_with_draw', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6932, - serialized_end=7071, -) - - -_PBPULLDISCUSSMSGSEQREQ = _descriptor.Descriptor( - name='PbPullDiscussMsgSeqReq', - full_name='msf.msg.svc.PbPullDiscussMsgSeqReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='discuss_info_req', full_name='msf.msg.svc.PbPullDiscussMsgSeqReq.discuss_info_req', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7073, - serialized_end=7152, -) - - -_DISCUSSINFOREQ = _descriptor.Descriptor( - name='DiscussInfoReq', - full_name='msf.msg.svc.DiscussInfoReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='conf_uin', full_name='msf.msg.svc.DiscussInfoReq.conf_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_seq', full_name='msf.msg.svc.DiscussInfoReq.last_seq', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7154, - serialized_end=7206, -) - - -_PBPULLDISCUSSMSGSEQRESP = _descriptor.Descriptor( - name='PbPullDiscussMsgSeqResp', - full_name='msf.msg.svc.PbPullDiscussMsgSeqResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbPullDiscussMsgSeqResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbPullDiscussMsgSeqResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='discuss_info_resp', full_name='msf.msg.svc.PbPullDiscussMsgSeqResp.discuss_info_resp', index=2, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7208, - serialized_end=7322, -) - - -_DISCUSSINFORESP = _descriptor.Descriptor( - name='DiscussInfoResp', - full_name='msf.msg.svc.DiscussInfoResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='conf_uin', full_name='msf.msg.svc.DiscussInfoResp.conf_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='member_seq', full_name='msf.msg.svc.DiscussInfoResp.member_seq', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='conf_seq', full_name='msf.msg.svc.DiscussInfoResp.conf_seq', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7324, - serialized_end=7397, -) - - -_PBPULLGROUPMSGSEQREQ = _descriptor.Descriptor( - name='PbPullGroupMsgSeqReq', - full_name='msf.msg.svc.PbPullGroupMsgSeqReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='group_info_req', full_name='msf.msg.svc.PbPullGroupMsgSeqReq.group_info_req', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7399, - serialized_end=7472, -) - - -_GROUPINFOREQ = _descriptor.Descriptor( - name='GroupInfoReq', - full_name='msf.msg.svc.GroupInfoReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='group_code', full_name='msf.msg.svc.GroupInfoReq.group_code', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_seq', full_name='msf.msg.svc.GroupInfoReq.last_seq', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7474, - serialized_end=7526, -) - - -_PBPULLGROUPMSGSEQRESP = _descriptor.Descriptor( - name='PbPullGroupMsgSeqResp', - full_name='msf.msg.svc.PbPullGroupMsgSeqResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbPullGroupMsgSeqResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbPullGroupMsgSeqResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_info_resp', full_name='msf.msg.svc.PbPullGroupMsgSeqResp.group_info_resp', index=2, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7528, - serialized_end=7636, -) - - -_GROUPINFORESP = _descriptor.Descriptor( - name='GroupInfoResp', - full_name='msf.msg.svc.GroupInfoResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='group_code', full_name='msf.msg.svc.GroupInfoResp.group_code', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='member_seq', full_name='msf.msg.svc.GroupInfoResp.member_seq', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_seq', full_name='msf.msg.svc.GroupInfoResp.group_seq', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7638, - serialized_end=7712, -) - - -_PBSEARCHROAMMSGINCLOUDREQ = _descriptor.Descriptor( - name='PbSearchRoamMsgInCloudReq', - full_name='msf.msg.svc.PbSearchRoamMsgInCloudReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='serialize_reqbody', full_name='msf.msg.svc.PbSearchRoamMsgInCloudReq.serialize_reqbody', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7714, - serialized_end=7768, -) - - -_PBSEARCHROAMMSGINCLOUDRESP = _descriptor.Descriptor( - name='PbSearchRoamMsgInCloudResp', - full_name='msf.msg.svc.PbSearchRoamMsgInCloudResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='msg', full_name='msf.msg.svc.PbSearchRoamMsgInCloudResp.msg', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='serialize_rspbody', full_name='msf.msg.svc.PbSearchRoamMsgInCloudResp.serialize_rspbody', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7770, - serialized_end=7857, -) - - -_PBSENDMSGREQ = _descriptor.Descriptor( - name='PbSendMsgReq', - full_name='msf.msg.svc.PbSendMsgReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='routing_head', full_name='msf.msg.svc.PbSendMsgReq.routing_head', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='content_head', full_name='msf.msg.svc.PbSendMsgReq.content_head', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='body', full_name='msf.msg.svc.PbSendMsgReq.body', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='seq', full_name='msf.msg.svc.PbSendMsgReq.seq', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rand', full_name='msf.msg.svc.PbSendMsgReq.rand', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sync_cookie', full_name='msf.msg.svc.PbSendMsgReq.sync_cookie', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='app_share', full_name='msf.msg.svc.PbSendMsgReq.app_share', index=6, - number=7, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='via', full_name='msf.msg.svc.PbSendMsgReq.via', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_statist', full_name='msf.msg.svc.PbSendMsgReq.data_statist', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='multi_msg_assist', full_name='msf.msg.svc.PbSendMsgReq.multi_msg_assist', index=9, - number=10, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='input_notify_info', full_name='msf.msg.svc.PbSendMsgReq.input_notify_info', index=10, - number=11, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ctrl', full_name='msf.msg.svc.PbSendMsgReq.ctrl', index=11, - number=12, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='receipt_req', full_name='msf.msg.svc.PbSendMsgReq.receipt_req', index=12, - number=13, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='multi_send_seq', full_name='msf.msg.svc.PbSendMsgReq.multi_send_seq', index=13, - number=14, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7860, - serialized_end=8365, -) - - -_PBSENDMSGRESP = _descriptor.Descriptor( - name='PbSendMsgResp', - full_name='msf.msg.svc.PbSendMsgResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbSendMsgResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbSendMsgResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='send_time', full_name='msf.msg.svc.PbSendMsgResp.send_time', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='svrbusy_wait_time', full_name='msf.msg.svc.PbSendMsgResp.svrbusy_wait_time', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='send_info', full_name='msf.msg.svc.PbSendMsgResp.send_info', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errtype', full_name='msf.msg.svc.PbSendMsgResp.errtype', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='trans_svr_info', full_name='msf.msg.svc.PbSendMsgResp.trans_svr_info', index=6, - number=7, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='receipt_resp', full_name='msf.msg.svc.PbSendMsgResp.receipt_resp', index=7, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='text_analysis_result', full_name='msf.msg.svc.PbSendMsgResp.text_analysis_result', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='msg_info_flag', full_name='msf.msg.svc.PbSendMsgResp.msg_info_flag', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=8368, - serialized_end=8678, -) - - -_PBTHIRDQQUNREADMSGNUMREQ = _descriptor.Descriptor( - name='PbThirdQQUnReadMsgNumReq', - full_name='msf.msg.svc.PbThirdQQUnReadMsgNumReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='thirdqq_req_info', full_name='msf.msg.svc.PbThirdQQUnReadMsgNumReq.thirdqq_req_info', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='source', full_name='msf.msg.svc.PbThirdQQUnReadMsgNumReq.source', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=8680, - serialized_end=8777, -) - - -_THIRDQQREQINFO = _descriptor.Descriptor( - name='ThirdQQReqInfo', - full_name='msf.msg.svc.ThirdQQReqInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='third_uin', full_name='msf.msg.svc.ThirdQQReqInfo.third_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='third_uin_sig', full_name='msf.msg.svc.ThirdQQReqInfo.third_uin_sig', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='third_uin_cookie', full_name='msf.msg.svc.ThirdQQReqInfo.third_uin_cookie', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=8779, - serialized_end=8863, -) - - -_PBTHIRDQQUNREADMSGNUMRESP = _descriptor.Descriptor( - name='PbThirdQQUnReadMsgNumResp', - full_name='msf.msg.svc.PbThirdQQUnReadMsgNumResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.PbThirdQQUnReadMsgNumResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.PbThirdQQUnReadMsgNumResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='thirdqq_resp_info', full_name='msf.msg.svc.PbThirdQQUnReadMsgNumResp.thirdqq_resp_info', index=2, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='interval', full_name='msf.msg.svc.PbThirdQQUnReadMsgNumResp.interval', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=8866, - serialized_end=9000, -) - - -_THIRDQQRESPINFO = _descriptor.Descriptor( - name='ThirdQQRespInfo', - full_name='msf.msg.svc.ThirdQQRespInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='third_uin', full_name='msf.msg.svc.ThirdQQRespInfo.third_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='third_uin_cookie', full_name='msf.msg.svc.ThirdQQRespInfo.third_uin_cookie', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='num', full_name='msf.msg.svc.ThirdQQRespInfo.num', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='flag', full_name='msf.msg.svc.ThirdQQRespInfo.flag', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='redbag_time', full_name='msf.msg.svc.ThirdQQRespInfo.redbag_time', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='status', full_name='msf.msg.svc.ThirdQQRespInfo.status', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='last_msg_time', full_name='msf.msg.svc.ThirdQQRespInfo.last_msg_time', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=9003, - serialized_end=9152, -) - - -_PBUNREADMSGSEQREQ = _descriptor.Descriptor( - name='PbUnReadMsgSeqReq', - full_name='msf.msg.svc.PbUnReadMsgSeqReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='c2c_unread_info', full_name='msf.msg.svc.PbUnReadMsgSeqReq.c2c_unread_info', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='binduin_unread_info', full_name='msf.msg.svc.PbUnReadMsgSeqReq.binduin_unread_info', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_unread_info', full_name='msf.msg.svc.PbUnReadMsgSeqReq.group_unread_info', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='discuss_unread_info', full_name='msf.msg.svc.PbUnReadMsgSeqReq.discuss_unread_info', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='thirdqq_unread_info', full_name='msf.msg.svc.PbUnReadMsgSeqReq.thirdqq_unread_info', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=9155, - serialized_end=9498, -) - - -_PBUNREADMSGSEQRESP = _descriptor.Descriptor( - name='PbUnReadMsgSeqResp', - full_name='msf.msg.svc.PbUnReadMsgSeqResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='c2c_unread_info', full_name='msf.msg.svc.PbUnReadMsgSeqResp.c2c_unread_info', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='binduin_unread_info', full_name='msf.msg.svc.PbUnReadMsgSeqResp.binduin_unread_info', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_unread_info', full_name='msf.msg.svc.PbUnReadMsgSeqResp.group_unread_info', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='discuss_unread_info', full_name='msf.msg.svc.PbUnReadMsgSeqResp.discuss_unread_info', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='thirdqq_unread_info', full_name='msf.msg.svc.PbUnReadMsgSeqResp.thirdqq_unread_info', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=9501, - serialized_end=9850, -) - - -_PUBGROUPTMP = _descriptor.Descriptor( - name='PubGroupTmp', - full_name='msf.msg.svc.PubGroupTmp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.PubGroupTmp.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.PubGroupTmp.sig', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='group_uin', full_name='msf.msg.svc.PubGroupTmp.group_uin', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=9852, - serialized_end=9913, -) - - -_PUBLICPLAT = _descriptor.Descriptor( - name='PublicPlat', - full_name='msf.msg.svc.PublicPlat', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.PublicPlat.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.PublicPlat.sig', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=9915, - serialized_end=9956, -) - - -_QQQUERYBUSINESSTMP = _descriptor.Descriptor( - name='QQQueryBusinessTmp', - full_name='msf.msg.svc.QQQueryBusinessTmp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.QQQueryBusinessTmp.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.QQQueryBusinessTmp.sig', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=9958, - serialized_end=10007, -) - - -_RICHSTATUSTMP = _descriptor.Descriptor( - name='RichStatusTmp', - full_name='msf.msg.svc.RichStatusTmp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.RichStatusTmp.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.RichStatusTmp.sig', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=10009, - serialized_end=10053, -) - - -_ROUTINGHEAD = _descriptor.Descriptor( - name='RoutingHead', - full_name='msf.msg.svc.RoutingHead', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='c2c', full_name='msf.msg.svc.RoutingHead.c2c', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='grp', full_name='msf.msg.svc.RoutingHead.grp', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='grp_tmp', full_name='msf.msg.svc.RoutingHead.grp_tmp', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='dis', full_name='msf.msg.svc.RoutingHead.dis', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='dis_tmp', full_name='msf.msg.svc.RoutingHead.dis_tmp', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='wpa_tmp', full_name='msf.msg.svc.RoutingHead.wpa_tmp', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='public_plat', full_name='msf.msg.svc.RoutingHead.public_plat', index=6, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='trans_msg', full_name='msf.msg.svc.RoutingHead.trans_msg', index=7, - number=9, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='address_list', full_name='msf.msg.svc.RoutingHead.address_list', index=8, - number=10, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='rich_status_tmp', full_name='msf.msg.svc.RoutingHead.rich_status_tmp', index=9, - number=11, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='trans_cmd', full_name='msf.msg.svc.RoutingHead.trans_cmd', index=10, - number=12, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='accost_tmp', full_name='msf.msg.svc.RoutingHead.accost_tmp', index=11, - number=13, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pub_group_tmp', full_name='msf.msg.svc.RoutingHead.pub_group_tmp', index=12, - number=14, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='trans_0_x211', full_name='msf.msg.svc.RoutingHead.trans_0_x211', index=13, - number=15, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='business_wpa_tmp', full_name='msf.msg.svc.RoutingHead.business_wpa_tmp', index=14, - number=16, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='auth_tmp', full_name='msf.msg.svc.RoutingHead.auth_tmp', index=15, - number=17, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bsns_tmp', full_name='msf.msg.svc.RoutingHead.bsns_tmp', index=16, - number=18, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='qq_querybusiness_tmp', full_name='msf.msg.svc.RoutingHead.qq_querybusiness_tmp', index=17, - number=19, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='nearby_dating_tmp', full_name='msf.msg.svc.RoutingHead.nearby_dating_tmp', index=18, - number=20, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='nearby_assistant_tmp', full_name='msf.msg.svc.RoutingHead.nearby_assistant_tmp', index=19, - number=21, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='comm_tmp', full_name='msf.msg.svc.RoutingHead.comm_tmp', index=20, - number=22, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=10056, - serialized_end=11008, -) - - -_TRANS0X211 = _descriptor.Descriptor( - name='Trans0x211', - full_name='msf.msg.svc.Trans0x211', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.Trans0x211.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cc_cmd', full_name='msf.msg.svc.Trans0x211.cc_cmd', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='inst_ctrl', full_name='msf.msg.svc.Trans0x211.inst_ctrl', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.Trans0x211.sig', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='c2c_type', full_name='msf.msg.svc.Trans0x211.c2c_type', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='service_type', full_name='msf.msg.svc.Trans0x211.service_type', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='dataline_flag', full_name='msf.msg.svc.Trans0x211.dataline_flag', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11011, - serialized_end=11177, -) - - -_TRANSCMD = _descriptor.Descriptor( - name='TransCmd', - full_name='msf.msg.svc.TransCmd', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.TransCmd.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='type', full_name='msf.msg.svc.TransCmd.type', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11179, - serialized_end=11219, -) - - -_TRANSMSG = _descriptor.Descriptor( - name='TransMsg', - full_name='msf.msg.svc.TransMsg', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.TransMsg.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='c2c_cmd', full_name='msf.msg.svc.TransMsg.c2c_cmd', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11221, - serialized_end=11264, -) - - -_TRANSREQ = _descriptor.Descriptor( - name='TransReq', - full_name='msf.msg.svc.TransReq', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='command', full_name='msf.msg.svc.TransReq.command', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_tag', full_name='msf.msg.svc.TransReq.req_tag', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='req_buff', full_name='msf.msg.svc.TransReq.req_buff', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11266, - serialized_end=11328, -) - - -_TRANSRESP = _descriptor.Descriptor( - name='TransResp', - full_name='msf.msg.svc.TransResp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='result', full_name='msf.msg.svc.TransResp.result', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='errmsg', full_name='msf.msg.svc.TransResp.errmsg', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='resp_tag', full_name='msf.msg.svc.TransResp.resp_tag', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='resp_buff', full_name='msf.msg.svc.TransResp.resp_buff', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11330, - serialized_end=11410, -) - - -_TRANSSVRINFO = _descriptor.Descriptor( - name='TransSvrInfo', - full_name='msf.msg.svc.TransSvrInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='sub_type', full_name='msf.msg.svc.TransSvrInfo.sub_type', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='ret_code', full_name='msf.msg.svc.TransSvrInfo.ret_code', index=1, - number=2, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='err_msg', full_name='msf.msg.svc.TransSvrInfo.err_msg', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='trans_info', full_name='msf.msg.svc.TransSvrInfo.trans_info', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11412, - serialized_end=11499, -) - - -_WPATMP = _descriptor.Descriptor( - name='WPATmp', - full_name='msf.msg.svc.WPATmp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='to_uin', full_name='msf.msg.svc.WPATmp.to_uin', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='sig', full_name='msf.msg.svc.WPATmp.sig', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11501, - serialized_end=11538, -) - - -_WITHDRAWWORDINGINFO = _descriptor.Descriptor( - name='WithDrawWordingInfo', - full_name='msf.msg.svc.WithDrawWordingInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='item_id', full_name='msf.msg.svc.WithDrawWordingInfo.item_id', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='item_name', full_name='msf.msg.svc.WithDrawWordingInfo.item_name', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11540, - serialized_end=11597, -) - -_MULTIMSGASSIST.fields_by_name['repeated_routing'].message_type = _ROUTINGHEAD -_PBC2CMSGWITHDRAWREQ_MSGINFO.fields_by_name['routing_head'].message_type = _ROUTINGHEAD -_PBC2CMSGWITHDRAWREQ_MSGINFO.containing_type = _PBC2CMSGWITHDRAWREQ -_PBC2CMSGWITHDRAWREQ.fields_by_name['info'].message_type = _PBC2CMSGWITHDRAWREQ_MSGINFO -_PBC2CMSGWITHDRAWRESP.fields_by_name['status'].message_type = _MSGSTATUS -_PBC2CMSGWITHDRAWRESP.fields_by_name['wording_info'].message_type = _WITHDRAWWORDINGINFO -_MSGSTATUS.fields_by_name['info'].message_type = _PBC2CMSGWITHDRAWREQ_MSGINFO -_PBC2CREADEDREPORTREQ.fields_by_name['pair_info'].message_type = _UINPAIRREADINFO -_PBDELROAMMSGREQ.fields_by_name['c2c_msg'].message_type = _C2CMSG -_PBDELROAMMSGREQ.fields_by_name['grp_msg'].message_type = _GRPMSG -_PBDELROAMMSGREQ.fields_by_name['dis_msg'].message_type = _DISMSG -_PBDELETEMSGREQ_MSGITEM.containing_type = _PBDELETEMSGREQ -_PBDELETEMSGREQ.fields_by_name['msg_items'].message_type = _PBDELETEMSGREQ_MSGITEM -_PBGETDISCUSSMSGRESP.fields_by_name['msg'].message_type = cai_dot_pb_dot_msf_dot_msg_dot_comm_dot_comm__pb2._MSG -_PBGETGROUPMSGRESP.fields_by_name['msg'].message_type = cai_dot_pb_dot_msf_dot_msg_dot_comm_dot_comm__pb2._MSG -_PBGETMSGRESP.fields_by_name['uin_pair_msgs'].message_type = cai_dot_pb_dot_msf_dot_msg_dot_comm_dot_comm__pb2._UINPAIRMSG -_PBGETONEDAYROAMMSGRESP.fields_by_name['msg'].message_type = cai_dot_pb_dot_msf_dot_msg_dot_comm_dot_comm__pb2._MSG -_PBGETROAMMSGRESP.fields_by_name['msg'].message_type = cai_dot_pb_dot_msf_dot_msg_dot_comm_dot_comm__pb2._MSG -_PBGROUPMSGWITHDRAWREQ.fields_by_name['list'].message_type = _MESSAGEINFO -_PBGROUPMSGWITHDRAWRESP.fields_by_name['failed_msg_list'].message_type = _MESSAGERESULT -_PBGROUPMSGWITHDRAWRESP.fields_by_name['wording_info'].message_type = _WITHDRAWWORDINGINFO -_PBMSGREADEDREPORTREQ.fields_by_name['grp_read_report'].message_type = _PBGROUPREADEDREPORTREQ -_PBMSGREADEDREPORTREQ.fields_by_name['dis_read_report'].message_type = _PBDISCUSSREADEDREPORTREQ -_PBMSGREADEDREPORTREQ.fields_by_name['c2c_read_report'].message_type = _PBC2CREADEDREPORTREQ -_PBMSGREADEDREPORTREQ.fields_by_name['bind_uin_read_report'].message_type = _PBBINDUINMSGREADEDCONFIRMREQ -_PBMSGREADEDREPORTRESP.fields_by_name['grp_read_report'].message_type = _PBGROUPREADEDREPORTRESP -_PBMSGREADEDREPORTRESP.fields_by_name['dis_read_report'].message_type = _PBDISCUSSREADEDREPORTRESP -_PBMSGREADEDREPORTRESP.fields_by_name['c2c_read_report'].message_type = _PBC2CREADEDREPORTRESP -_PBMSGREADEDREPORTRESP.fields_by_name['bind_uin_read_report'].message_type = _PBBINDUINMSGREADEDCONFIRMRESP -_PBMSGWITHDRAWREQ.fields_by_name['c2c_with_draw'].message_type = _PBC2CMSGWITHDRAWREQ -_PBMSGWITHDRAWREQ.fields_by_name['group_with_draw'].message_type = _PBGROUPMSGWITHDRAWREQ -_PBMSGWITHDRAWRESP.fields_by_name['c2c_with_draw'].message_type = _PBC2CMSGWITHDRAWRESP -_PBMSGWITHDRAWRESP.fields_by_name['group_with_draw'].message_type = _PBGROUPMSGWITHDRAWRESP -_PBPULLDISCUSSMSGSEQREQ.fields_by_name['discuss_info_req'].message_type = _DISCUSSINFOREQ -_PBPULLDISCUSSMSGSEQRESP.fields_by_name['discuss_info_resp'].message_type = _DISCUSSINFORESP -_PBPULLGROUPMSGSEQREQ.fields_by_name['group_info_req'].message_type = _GROUPINFOREQ -_PBPULLGROUPMSGSEQRESP.fields_by_name['group_info_resp'].message_type = _GROUPINFORESP -_PBSEARCHROAMMSGINCLOUDRESP.fields_by_name['msg'].message_type = cai_dot_pb_dot_msf_dot_msg_dot_comm_dot_comm__pb2._MSG -_PBSENDMSGREQ.fields_by_name['routing_head'].message_type = _ROUTINGHEAD -_PBSENDMSGREQ.fields_by_name['content_head'].message_type = cai_dot_pb_dot_msf_dot_msg_dot_comm_dot_comm__pb2._CONTENTHEAD -_PBSENDMSGREQ.fields_by_name['body'].message_type = cai_dot_pb_dot_im_dot_msg_dot_msg__body_dot_msg__body__pb2._MSGBODY -_PBSENDMSGREQ.fields_by_name['app_share'].message_type = cai_dot_pb_dot_msf_dot_msg_dot_comm_dot_comm__pb2._APPSHAREINFO -_PBSENDMSGREQ.fields_by_name['multi_msg_assist'].message_type = _MULTIMSGASSIST -_PBSENDMSGREQ.fields_by_name['input_notify_info'].message_type = _PBINPUTNOTIFYINFO -_PBSENDMSGREQ.fields_by_name['ctrl'].message_type = cai_dot_pb_dot_msf_dot_msg_dot_ctrl_dot_ctrl__pb2._MSGCTRL -_PBSENDMSGREQ.fields_by_name['receipt_req'].message_type = cai_dot_pb_dot_im_dot_msg_dot_receipt_dot_receipt__pb2._RECEIPTREQ -_PBSENDMSGRESP.fields_by_name['send_info'].message_type = _MSGSENDINFO -_PBSENDMSGRESP.fields_by_name['trans_svr_info'].message_type = _TRANSSVRINFO -_PBSENDMSGRESP.fields_by_name['receipt_resp'].message_type = cai_dot_pb_dot_im_dot_msg_dot_receipt_dot_receipt__pb2._RECEIPTRESP -_PBTHIRDQQUNREADMSGNUMREQ.fields_by_name['thirdqq_req_info'].message_type = _THIRDQQREQINFO -_PBTHIRDQQUNREADMSGNUMRESP.fields_by_name['thirdqq_resp_info'].message_type = _THIRDQQRESPINFO -_PBUNREADMSGSEQREQ.fields_by_name['c2c_unread_info'].message_type = _PBC2CUNREADMSGNUMREQ -_PBUNREADMSGSEQREQ.fields_by_name['binduin_unread_info'].message_type = _PBBINDUINUNREADMSGNUMREQ -_PBUNREADMSGSEQREQ.fields_by_name['group_unread_info'].message_type = _PBPULLGROUPMSGSEQREQ -_PBUNREADMSGSEQREQ.fields_by_name['discuss_unread_info'].message_type = _PBPULLDISCUSSMSGSEQREQ -_PBUNREADMSGSEQREQ.fields_by_name['thirdqq_unread_info'].message_type = _PBTHIRDQQUNREADMSGNUMREQ -_PBUNREADMSGSEQRESP.fields_by_name['c2c_unread_info'].message_type = _PBC2CUNREADMSGNUMRESP -_PBUNREADMSGSEQRESP.fields_by_name['binduin_unread_info'].message_type = _PBBINDUINUNREADMSGNUMRESP -_PBUNREADMSGSEQRESP.fields_by_name['group_unread_info'].message_type = _PBPULLGROUPMSGSEQRESP -_PBUNREADMSGSEQRESP.fields_by_name['discuss_unread_info'].message_type = _PBPULLDISCUSSMSGSEQRESP -_PBUNREADMSGSEQRESP.fields_by_name['thirdqq_unread_info'].message_type = _PBTHIRDQQUNREADMSGNUMRESP -_ROUTINGHEAD.fields_by_name['c2c'].message_type = _C2C -_ROUTINGHEAD.fields_by_name['grp'].message_type = _GRP -_ROUTINGHEAD.fields_by_name['grp_tmp'].message_type = _GRPTMP -_ROUTINGHEAD.fields_by_name['dis'].message_type = _DIS -_ROUTINGHEAD.fields_by_name['dis_tmp'].message_type = _DISTMP -_ROUTINGHEAD.fields_by_name['wpa_tmp'].message_type = _WPATMP -_ROUTINGHEAD.fields_by_name['public_plat'].message_type = _PUBLICPLAT -_ROUTINGHEAD.fields_by_name['trans_msg'].message_type = _TRANSMSG -_ROUTINGHEAD.fields_by_name['address_list'].message_type = _ADDRESSLISTTMP -_ROUTINGHEAD.fields_by_name['rich_status_tmp'].message_type = _RICHSTATUSTMP -_ROUTINGHEAD.fields_by_name['trans_cmd'].message_type = _TRANSCMD -_ROUTINGHEAD.fields_by_name['accost_tmp'].message_type = _ACCOSTTMP -_ROUTINGHEAD.fields_by_name['pub_group_tmp'].message_type = _PUBGROUPTMP -_ROUTINGHEAD.fields_by_name['trans_0_x211'].message_type = _TRANS0X211 -_ROUTINGHEAD.fields_by_name['business_wpa_tmp'].message_type = _BUSINESSWPATMP -_ROUTINGHEAD.fields_by_name['auth_tmp'].message_type = _AUTHTMP -_ROUTINGHEAD.fields_by_name['bsns_tmp'].message_type = _BSNSTMP -_ROUTINGHEAD.fields_by_name['qq_querybusiness_tmp'].message_type = _QQQUERYBUSINESSTMP -_ROUTINGHEAD.fields_by_name['nearby_dating_tmp'].message_type = _NEARBYDATINGTMP -_ROUTINGHEAD.fields_by_name['nearby_assistant_tmp'].message_type = _NEARBYASSISTANTTMP -_ROUTINGHEAD.fields_by_name['comm_tmp'].message_type = _COMMTMP -_TRANS0X211.fields_by_name['inst_ctrl'].message_type = cai_dot_pb_dot_im_dot_msg_dot_msg__head_dot_msg__head__pb2._INSTCTRL -DESCRIPTOR.message_types_by_name['AccostTmp'] = _ACCOSTTMP -DESCRIPTOR.message_types_by_name['AddressListTmp'] = _ADDRESSLISTTMP -DESCRIPTOR.message_types_by_name['AuthTmp'] = _AUTHTMP -DESCRIPTOR.message_types_by_name['BsnsTmp'] = _BSNSTMP -DESCRIPTOR.message_types_by_name['BusinessWPATmp'] = _BUSINESSWPATMP -DESCRIPTOR.message_types_by_name['C2C'] = _C2C -DESCRIPTOR.message_types_by_name['CommTmp'] = _COMMTMP -DESCRIPTOR.message_types_by_name['Dis'] = _DIS -DESCRIPTOR.message_types_by_name['DisTmp'] = _DISTMP -DESCRIPTOR.message_types_by_name['Grp'] = _GRP -DESCRIPTOR.message_types_by_name['GrpTmp'] = _GRPTMP -DESCRIPTOR.message_types_by_name['MsgSendInfo'] = _MSGSENDINFO -DESCRIPTOR.message_types_by_name['MultiMsgAssist'] = _MULTIMSGASSIST -DESCRIPTOR.message_types_by_name['NearByAssistantTmp'] = _NEARBYASSISTANTTMP -DESCRIPTOR.message_types_by_name['NearByDatingTmp'] = _NEARBYDATINGTMP -DESCRIPTOR.message_types_by_name['PbBindUinGetMsgReq'] = _PBBINDUINGETMSGREQ -DESCRIPTOR.message_types_by_name['PbBindUinMsgReadedConfirmReq'] = _PBBINDUINMSGREADEDCONFIRMREQ -DESCRIPTOR.message_types_by_name['PbBindUinMsgReadedConfirmResp'] = _PBBINDUINMSGREADEDCONFIRMRESP -DESCRIPTOR.message_types_by_name['PbBindUinUnReadMsgNumReq'] = _PBBINDUINUNREADMSGNUMREQ -DESCRIPTOR.message_types_by_name['PbBindUinUnReadMsgNumResp'] = _PBBINDUINUNREADMSGNUMRESP -DESCRIPTOR.message_types_by_name['PbC2CMsgWithDrawReq'] = _PBC2CMSGWITHDRAWREQ -DESCRIPTOR.message_types_by_name['PbC2CMsgWithDrawResp'] = _PBC2CMSGWITHDRAWRESP -DESCRIPTOR.message_types_by_name['MsgStatus'] = _MSGSTATUS -DESCRIPTOR.message_types_by_name['PbC2CReadedReportReq'] = _PBC2CREADEDREPORTREQ -DESCRIPTOR.message_types_by_name['UinPairReadInfo'] = _UINPAIRREADINFO -DESCRIPTOR.message_types_by_name['PbC2CReadedReportResp'] = _PBC2CREADEDREPORTRESP -DESCRIPTOR.message_types_by_name['PbC2CUnReadMsgNumReq'] = _PBC2CUNREADMSGNUMREQ -DESCRIPTOR.message_types_by_name['PbC2CUnReadMsgNumResp'] = _PBC2CUNREADMSGNUMRESP -DESCRIPTOR.message_types_by_name['PbDelRoamMsgReq'] = _PBDELROAMMSGREQ -DESCRIPTOR.message_types_by_name['C2CMsg'] = _C2CMSG -DESCRIPTOR.message_types_by_name['DisMsg'] = _DISMSG -DESCRIPTOR.message_types_by_name['GrpMsg'] = _GRPMSG -DESCRIPTOR.message_types_by_name['PbDelRoamMsgResp'] = _PBDELROAMMSGRESP -DESCRIPTOR.message_types_by_name['PbDeleteMsgReq'] = _PBDELETEMSGREQ -DESCRIPTOR.message_types_by_name['PbDeleteMsgResp'] = _PBDELETEMSGRESP -DESCRIPTOR.message_types_by_name['PbDiscussReadedReportReq'] = _PBDISCUSSREADEDREPORTREQ -DESCRIPTOR.message_types_by_name['PbDiscussReadedReportResp'] = _PBDISCUSSREADEDREPORTRESP -DESCRIPTOR.message_types_by_name['PbGetDiscussMsgReq'] = _PBGETDISCUSSMSGREQ -DESCRIPTOR.message_types_by_name['PbGetDiscussMsgResp'] = _PBGETDISCUSSMSGRESP -DESCRIPTOR.message_types_by_name['PbGetGroupMsgReq'] = _PBGETGROUPMSGREQ -DESCRIPTOR.message_types_by_name['PbGetGroupMsgResp'] = _PBGETGROUPMSGRESP -DESCRIPTOR.message_types_by_name['PbGetMsgReq'] = _PBGETMSGREQ -DESCRIPTOR.message_types_by_name['PbGetMsgResp'] = _PBGETMSGRESP -DESCRIPTOR.message_types_by_name['PbGetOneDayRoamMsgReq'] = _PBGETONEDAYROAMMSGREQ -DESCRIPTOR.message_types_by_name['PbGetOneDayRoamMsgResp'] = _PBGETONEDAYROAMMSGRESP -DESCRIPTOR.message_types_by_name['PbGetRoamMsgReq'] = _PBGETROAMMSGREQ -DESCRIPTOR.message_types_by_name['PbGetRoamMsgResp'] = _PBGETROAMMSGRESP -DESCRIPTOR.message_types_by_name['PbGroupMsgWithDrawReq'] = _PBGROUPMSGWITHDRAWREQ -DESCRIPTOR.message_types_by_name['MessageInfo'] = _MESSAGEINFO -DESCRIPTOR.message_types_by_name['PbGroupMsgWithDrawResp'] = _PBGROUPMSGWITHDRAWRESP -DESCRIPTOR.message_types_by_name['MessageResult'] = _MESSAGERESULT -DESCRIPTOR.message_types_by_name['PbGroupReadedReportReq'] = _PBGROUPREADEDREPORTREQ -DESCRIPTOR.message_types_by_name['PbGroupReadedReportResp'] = _PBGROUPREADEDREPORTRESP -DESCRIPTOR.message_types_by_name['PbInputNotifyInfo'] = _PBINPUTNOTIFYINFO -DESCRIPTOR.message_types_by_name['PbMsgReadedReportReq'] = _PBMSGREADEDREPORTREQ -DESCRIPTOR.message_types_by_name['PbMsgReadedReportResp'] = _PBMSGREADEDREPORTRESP -DESCRIPTOR.message_types_by_name['PbMsgWithDrawReq'] = _PBMSGWITHDRAWREQ -DESCRIPTOR.message_types_by_name['PbMsgWithDrawResp'] = _PBMSGWITHDRAWRESP -DESCRIPTOR.message_types_by_name['PbPullDiscussMsgSeqReq'] = _PBPULLDISCUSSMSGSEQREQ -DESCRIPTOR.message_types_by_name['DiscussInfoReq'] = _DISCUSSINFOREQ -DESCRIPTOR.message_types_by_name['PbPullDiscussMsgSeqResp'] = _PBPULLDISCUSSMSGSEQRESP -DESCRIPTOR.message_types_by_name['DiscussInfoResp'] = _DISCUSSINFORESP -DESCRIPTOR.message_types_by_name['PbPullGroupMsgSeqReq'] = _PBPULLGROUPMSGSEQREQ -DESCRIPTOR.message_types_by_name['GroupInfoReq'] = _GROUPINFOREQ -DESCRIPTOR.message_types_by_name['PbPullGroupMsgSeqResp'] = _PBPULLGROUPMSGSEQRESP -DESCRIPTOR.message_types_by_name['GroupInfoResp'] = _GROUPINFORESP -DESCRIPTOR.message_types_by_name['PbSearchRoamMsgInCloudReq'] = _PBSEARCHROAMMSGINCLOUDREQ -DESCRIPTOR.message_types_by_name['PbSearchRoamMsgInCloudResp'] = _PBSEARCHROAMMSGINCLOUDRESP -DESCRIPTOR.message_types_by_name['PbSendMsgReq'] = _PBSENDMSGREQ -DESCRIPTOR.message_types_by_name['PbSendMsgResp'] = _PBSENDMSGRESP -DESCRIPTOR.message_types_by_name['PbThirdQQUnReadMsgNumReq'] = _PBTHIRDQQUNREADMSGNUMREQ -DESCRIPTOR.message_types_by_name['ThirdQQReqInfo'] = _THIRDQQREQINFO -DESCRIPTOR.message_types_by_name['PbThirdQQUnReadMsgNumResp'] = _PBTHIRDQQUNREADMSGNUMRESP -DESCRIPTOR.message_types_by_name['ThirdQQRespInfo'] = _THIRDQQRESPINFO -DESCRIPTOR.message_types_by_name['PbUnReadMsgSeqReq'] = _PBUNREADMSGSEQREQ -DESCRIPTOR.message_types_by_name['PbUnReadMsgSeqResp'] = _PBUNREADMSGSEQRESP -DESCRIPTOR.message_types_by_name['PubGroupTmp'] = _PUBGROUPTMP -DESCRIPTOR.message_types_by_name['PublicPlat'] = _PUBLICPLAT -DESCRIPTOR.message_types_by_name['QQQueryBusinessTmp'] = _QQQUERYBUSINESSTMP -DESCRIPTOR.message_types_by_name['RichStatusTmp'] = _RICHSTATUSTMP -DESCRIPTOR.message_types_by_name['RoutingHead'] = _ROUTINGHEAD -DESCRIPTOR.message_types_by_name['Trans0x211'] = _TRANS0X211 -DESCRIPTOR.message_types_by_name['TransCmd'] = _TRANSCMD -DESCRIPTOR.message_types_by_name['TransMsg'] = _TRANSMSG -DESCRIPTOR.message_types_by_name['TransReq'] = _TRANSREQ -DESCRIPTOR.message_types_by_name['TransResp'] = _TRANSRESP -DESCRIPTOR.message_types_by_name['TransSvrInfo'] = _TRANSSVRINFO -DESCRIPTOR.message_types_by_name['WPATmp'] = _WPATMP -DESCRIPTOR.message_types_by_name['WithDrawWordingInfo'] = _WITHDRAWWORDINGINFO -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x63\x61i/pb/msf/msg/svc/svc.proto\x12\x0bmsf.msg.svc\x1a\x1e\x63\x61i/pb/msf/msg/comm/comm.proto\x1a\x1e\x63\x61i/pb/msf/msg/ctrl/ctrl.proto\x1a%cai/pb/im/msg/msg_body/msg_body.proto\x1a%cai/pb/im/msg/msg_head/msg_head.proto\x1a#cai/pb/im/msg/receipt/receipt.proto\"7\n\tAccostTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\x12\r\n\x05reply\x18\x03 \x01(\x08\"n\n\x0e\x41\x64\x64ressListTmp\x12\x12\n\nfrom_phone\x18\x01 \x01(\t\x12\x10\n\x08to_phone\x18\x02 \x01(\t\x12\x0e\n\x06to_uin\x18\x03 \x01(\x04\x12\x0b\n\x03sig\x18\x04 \x01(\x0c\x12\x19\n\x11\x66rom_contact_size\x18\x05 \x01(\r\"&\n\x07\x41uthTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\"&\n\x07\x42snsTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\";\n\x0e\x42usinessWPATmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\x12\x0c\n\x04sigt\x18\x03 \x01(\x0c\"\x15\n\x03\x43\x32\x43\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\"\\\n\x07\x43ommTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x10\n\x08\x63\x32\x63_type\x18\x02 \x01(\r\x12\x10\n\x08svr_type\x18\x03 \x01(\r\x12\x0b\n\x03sig\x18\x04 \x01(\x0c\x12\x10\n\x08reserved\x18\x05 \x01(\x0c\"\x16\n\x03\x44is\x12\x0f\n\x07\x64is_uin\x18\x01 \x01(\x04\")\n\x06\x44isTmp\x12\x0f\n\x07\x64is_uin\x18\x01 \x01(\x04\x12\x0e\n\x06to_uin\x18\x02 \x01(\x04\"\x19\n\x03Grp\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\"+\n\x06GrpTmp\x12\x11\n\tgroup_uin\x18\x01 \x01(\x04\x12\x0e\n\x06to_uin\x18\x02 \x01(\x04\"\x1f\n\x0bMsgSendInfo\x12\x10\n\x08receiver\x18\x01 \x01(\r\"\xc7\x01\n\x0eMultiMsgAssist\x12\x32\n\x10repeated_routing\x18\x01 \x03(\x0b\x32\x18.msf.msg.svc.RoutingHead\x12\x0b\n\x03use\x18\x02 \x01(\r\x12\x0f\n\x07temp_id\x18\x03 \x01(\x04\x12\x11\n\tvedio_len\x18\x04 \x01(\x04\x12\x11\n\tredbag_id\x18\x05 \x01(\x0c\x12\x15\n\rredbag_amount\x18\x06 \x01(\x04\x12\x13\n\x0bhas_readbag\x18\x07 \x01(\r\x12\x11\n\thas_vedio\x18\x08 \x01(\r\"@\n\x12NearByAssistantTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\x12\r\n\x05reply\x18\x03 \x01(\x08\"=\n\x0fNearByDatingTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\x12\r\n\x05reply\x18\x03 \x01(\x08\"d\n\x12PbBindUinGetMsgReq\x12\x10\n\x08\x62ind_uin\x18\x01 \x01(\x04\x12\x14\n\x0c\x62ind_uin_sig\x18\x02 \x01(\x0c\x12\x11\n\tsync_flag\x18\x03 \x01(\r\x12\x13\n\x0bsync_cookie\x18\x04 \x01(\x0c\"E\n\x1cPbBindUinMsgReadedConfirmReq\x12\x13\n\x0bsync_cookie\x18\x01 \x01(\x0c\x12\x10\n\x08\x62ind_uin\x18\x02 \x01(\x04\"f\n\x1dPbBindUinMsgReadedConfirmResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x13\n\x0bsync_cookie\x18\x03 \x01(\x0c\x12\x10\n\x08\x62ind_uin\x18\x04 \x01(\x04\"A\n\x18PbBindUinUnReadMsgNumReq\x12\x10\n\x08\x62ind_uin\x18\x01 \x01(\x04\x12\x13\n\x0bsync_cookie\x18\x02 \x01(\x0c\"Z\n\x19PbBindUinUnReadMsgNumResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x10\n\x08\x62ind_uin\x18\x03 \x01(\x04\x12\x0b\n\x03num\x18\x04 \x01(\r\"\xf8\x02\n\x13PbC2CMsgWithDrawReq\x12\x36\n\x04info\x18\x01 \x03(\x0b\x32(.msf.msg.svc.PbC2CMsgWithDrawReq.MsgInfo\x12\x19\n\x11long_message_flag\x18\x02 \x01(\r\x12\x10\n\x08reserved\x18\x03 \x01(\x0c\x12\x0f\n\x07sub_cmd\x18\x04 \x01(\r\x1a\xea\x01\n\x07MsgInfo\x12\x10\n\x08\x66rom_uin\x18\x01 \x01(\x04\x12\x0e\n\x06to_uin\x18\x02 \x01(\x04\x12\x0f\n\x07msg_seq\x18\x03 \x01(\r\x12\x0f\n\x07msg_uid\x18\x04 \x01(\x04\x12\x10\n\x08msg_time\x18\x05 \x01(\x04\x12\x12\n\nmsg_random\x18\x06 \x01(\r\x12\x0f\n\x07pkg_num\x18\x07 \x01(\r\x12\x11\n\tpkg_index\x18\x08 \x01(\r\x12\x0f\n\x07\x64iv_seq\x18\t \x01(\r\x12\x10\n\x08msg_type\x18\n \x01(\r\x12.\n\x0crouting_head\x18\x14 \x01(\x0b\x32\x18.msf.msg.svc.RoutingHead\"\xa7\x01\n\x14PbC2CMsgWithDrawResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12&\n\x06status\x18\x03 \x03(\x0b\x32\x16.msf.msg.svc.MsgStatus\x12\x0f\n\x07sub_cmd\x18\x04 \x01(\r\x12\x36\n\x0cwording_info\x18\x05 \x01(\x0b\x32 .msf.msg.svc.WithDrawWordingInfo\"S\n\tMsgStatus\x12\x36\n\x04info\x18\x01 \x01(\x0b\x32(.msf.msg.svc.PbC2CMsgWithDrawReq.MsgInfo\x12\x0e\n\x06status\x18\x02 \x01(\r\"\\\n\x14PbC2CReadedReportReq\x12\x13\n\x0bsync_cookie\x18\x01 \x01(\x0c\x12/\n\tpair_info\x18\x02 \x03(\x0b\x32\x1c.msf.msg.svc.UinPairReadInfo\"\xa6\x01\n\x0fUinPairReadInfo\x12\x10\n\x08peer_uin\x18\x01 \x01(\x04\x12\x16\n\x0elast_read_time\x18\x02 \x01(\r\x12\x0f\n\x07\x63rm_sig\x18\x03 \x01(\x0c\x12\x11\n\tpeer_type\x18\x04 \x01(\r\x12\x11\n\tchat_type\x18\x05 \x01(\r\x12\x0c\n\x04\x63pid\x18\x06 \x01(\x04\x12\x10\n\x08\x61io_type\x18\x07 \x01(\r\x12\x12\n\nto_tiny_id\x18\t \x01(\x04\"L\n\x15PbC2CReadedReportResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x13\n\x0bsync_cookie\x18\x03 \x01(\x0c\"\x16\n\x14PbC2CUnReadMsgNumReq\"D\n\x15PbC2CUnReadMsgNumResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x0b\n\x03num\x18\x03 \x01(\r\"\x83\x01\n\x0fPbDelRoamMsgReq\x12$\n\x07\x63\x32\x63_msg\x18\x01 \x01(\x0b\x32\x13.msf.msg.svc.C2CMsg\x12$\n\x07grp_msg\x18\x02 \x01(\x0b\x32\x13.msf.msg.svc.GrpMsg\x12$\n\x07\x64is_msg\x18\x03 \x01(\x0b\x32\x13.msf.msg.svc.DisMsg\"W\n\x06\x43\x32\x43Msg\x12\x10\n\x08\x66rom_uin\x18\x01 \x01(\x04\x12\x10\n\x08peer_uin\x18\x02 \x01(\x04\x12\x0c\n\x04time\x18\x03 \x01(\r\x12\x0e\n\x06random\x18\x04 \x01(\r\x12\x0b\n\x03seq\x18\x05 \x01(\r\"*\n\x06\x44isMsg\x12\x13\n\x0b\x64iscuss_uin\x18\x01 \x01(\x04\x12\x0b\n\x03seq\x18\x02 \x01(\x04\"<\n\x06GrpMsg\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x0b\n\x03seq\x18\x02 \x01(\x04\x12\x11\n\tresv_flag\x18\x03 \x01(\r\"2\n\x10PbDelRoamMsgResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\"\xaa\x01\n\x0ePbDeleteMsgReq\x12\x36\n\tmsg_items\x18\x01 \x03(\x0b\x32#.msf.msg.svc.PbDeleteMsgReq.MsgItem\x1a`\n\x07MsgItem\x12\x10\n\x08\x66rom_uin\x18\x01 \x01(\x04\x12\x0e\n\x06to_uin\x18\x02 \x01(\x04\x12\x0c\n\x04type\x18\x03 \x01(\r\x12\x0b\n\x03seq\x18\x04 \x01(\r\x12\x0b\n\x03uid\x18\x05 \x01(\x04\x12\x0b\n\x03sig\x18\x07 \x01(\x0c\"1\n\x0fPbDeleteMsgResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\"C\n\x18PbDiscussReadedReportReq\x12\x10\n\x08\x63onf_uin\x18\x01 \x01(\x04\x12\x15\n\rlast_read_seq\x18\x02 \x01(\x04\"s\n\x19PbDiscussReadedReportResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x10\n\x08\x63onf_uin\x18\x03 \x01(\x04\x12\x12\n\nmember_seq\x18\x04 \x01(\x04\x12\x10\n\x08\x63onf_seq\x18\x05 \x01(\x04\"\xa2\x01\n\x12PbGetDiscussMsgReq\x12\x13\n\x0b\x64iscuss_uin\x18\x01 \x01(\x04\x12\x0f\n\x07\x65nd_seq\x18\x02 \x01(\x04\x12\x11\n\tbegin_seq\x18\x03 \x01(\x04\x12\x15\n\rlast_get_time\x18\x04 \x01(\x04\x12\x18\n\x10\x64iscuss_info_seq\x18\x05 \x01(\x04\x12\x0e\n\x06\x66ilter\x18\x06 \x01(\r\x12\x12\n\nmember_seq\x18\x07 \x01(\x04\"\xcd\x01\n\x13PbGetDiscussMsgResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x13\n\x0b\x64iscuss_uin\x18\x03 \x01(\x04\x12\x16\n\x0ereturn_end_seq\x18\x04 \x01(\x04\x12\x18\n\x10return_begin_seq\x18\x05 \x01(\x04\x12\x1e\n\x03msg\x18\x06 \x03(\x0b\x32\x11.msf.msg.comm.Msg\x12\x15\n\rlast_get_time\x18\x07 \x01(\x04\x12\x18\n\x10\x64iscuss_info_seq\x18\x08 \x01(\x04\"\xb4\x01\n\x10PbGetGroupMsgReq\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x11\n\tbegin_seq\x18\x02 \x01(\x04\x12\x0f\n\x07\x65nd_seq\x18\x03 \x01(\x04\x12\x0e\n\x06\x66ilter\x18\x04 \x01(\r\x12\x12\n\nmember_seq\x18\x05 \x01(\x04\x12\x14\n\x0cpublic_group\x18\x06 \x01(\x08\x12\x13\n\x0bshield_flag\x18\x07 \x01(\r\x12\x19\n\x11save_traffic_flag\x18\x08 \x01(\r\"\x99\x01\n\x11PbGetGroupMsgResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x12\n\ngroup_code\x18\x03 \x01(\x04\x12\x18\n\x10return_begin_seq\x18\x04 \x01(\x04\x12\x16\n\x0ereturn_end_seq\x18\x05 \x01(\x04\x12\x1e\n\x03msg\x18\x06 \x03(\x0b\x32\x11.msf.msg.comm.Msg\"\xa4\x02\n\x0bPbGetMsgReq\x12\x11\n\tsync_flag\x18\x01 \x01(\r\x12\x13\n\x0bsync_cookie\x18\x02 \x01(\x0c\x12\x13\n\x0bramble_flag\x18\x03 \x01(\r\x12\x1c\n\x14latest_ramble_number\x18\x04 \x01(\r\x12\x1b\n\x13other_ramble_number\x18\x05 \x01(\r\x12\x18\n\x10online_sync_flag\x18\x06 \x01(\r\x12\x14\n\x0c\x63ontext_flag\x18\x07 \x01(\r\x12\x1a\n\x12whisper_session_id\x18\x08 \x01(\r\x12\x10\n\x08req_type\x18\t \x01(\r\x12\x19\n\x11pubaccount_cookie\x18\n \x01(\x0c\x12\x10\n\x08\x63trl_buf\x18\x0b \x01(\x0c\x12\x12\n\nserver_buf\x18\x0c \x01(\x0c\"\xf1\x01\n\x0cPbGetMsgResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x13\n\x0bsync_cookie\x18\x03 \x01(\x0c\x12\x11\n\tsync_flag\x18\x04 \x01(\r\x12/\n\ruin_pair_msgs\x18\x05 \x03(\x0b\x32\x18.msf.msg.comm.UinPairMsg\x12\x10\n\x08\x62ind_uin\x18\x06 \x01(\x04\x12\x10\n\x08rsp_type\x18\x07 \x01(\r\x12\x19\n\x11pubaccount_cookie\x18\x08 \x01(\x0c\x12\x17\n\x0fis_partial_sync\x18\t \x01(\x08\x12\x10\n\x08\x63trl_buf\x18\n \x01(\x0c\"a\n\x15PbGetOneDayRoamMsgReq\x12\x10\n\x08peer_uin\x18\x01 \x01(\x04\x12\x14\n\x0clast_msgtime\x18\x02 \x01(\x04\x12\x0e\n\x06random\x18\x03 \x01(\x04\x12\x10\n\x08read_cnt\x18\x04 \x01(\r\"\xa4\x01\n\x16PbGetOneDayRoamMsgResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x10\n\x08peer_uin\x18\x03 \x01(\x04\x12\x14\n\x0clast_msgtime\x18\x04 \x01(\x04\x12\x0e\n\x06random\x18\x05 \x01(\x04\x12\x1e\n\x03msg\x18\x06 \x03(\x0b\x32\x11.msf.msg.comm.Msg\x12\x12\n\niscomplete\x18\x07 \x01(\r\"\xc1\x01\n\x0fPbGetRoamMsgReq\x12\x10\n\x08peer_uin\x18\x01 \x01(\x04\x12\x14\n\x0clast_msgtime\x18\x02 \x01(\x04\x12\x0e\n\x06random\x18\x03 \x01(\x04\x12\x10\n\x08read_cnt\x18\x04 \x01(\r\x12\x11\n\tcheck_pwd\x18\x05 \x01(\r\x12\x0b\n\x03sig\x18\x06 \x01(\x0c\x12\x0b\n\x03pwd\x18\x07 \x01(\x0c\x12\x0e\n\x06subcmd\x18\x08 \x01(\r\x12\x15\n\rbegin_msgtime\x18\t \x01(\x04\x12\x10\n\x08req_type\x18\n \x01(\r\"\x97\x01\n\x10PbGetRoamMsgResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x10\n\x08peer_uin\x18\x03 \x01(\x04\x12\x14\n\x0clast_msgtime\x18\x04 \x01(\x04\x12\x0e\n\x06random\x18\x05 \x01(\x04\x12\x1e\n\x03msg\x18\x06 \x03(\x0b\x32\x11.msf.msg.comm.Msg\x12\x0b\n\x03sig\x18\x07 \x01(\x0c\"\x89\x01\n\x15PbGroupMsgWithDrawReq\x12\x0f\n\x07sub_cmd\x18\x01 \x01(\r\x12\x12\n\ngroup_type\x18\x02 \x01(\r\x12\x12\n\ngroup_code\x18\x03 \x01(\x04\x12&\n\x04list\x18\x04 \x03(\x0b\x32\x18.msf.msg.svc.MessageInfo\x12\x0f\n\x07userdef\x18\x05 \x01(\x0c\"W\n\x0bMessageInfo\x12\x0f\n\x07msg_seq\x18\x01 \x01(\r\x12\x12\n\nmsg_random\x18\x02 \x01(\r\x12\x10\n\x08msg_type\x18\x03 \x01(\r\x12\x11\n\tresv_flag\x18\x04 \x01(\r\"\xef\x01\n\x16PbGroupMsgWithDrawResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x0f\n\x07sub_cmd\x18\x03 \x01(\r\x12\x12\n\ngroup_type\x18\x04 \x01(\r\x12\x12\n\ngroup_code\x18\x05 \x01(\x04\x12\x33\n\x0f\x66\x61iled_msg_list\x18\x06 \x03(\x0b\x32\x1a.msf.msg.svc.MessageResult\x12\x0f\n\x07userdef\x18\x07 \x01(\x0c\x12\x36\n\x0cwording_info\x18\x08 \x01(\x0b\x32 .msf.msg.svc.WithDrawWordingInfo\"y\n\rMessageResult\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0f\n\x07msg_seq\x18\x02 \x01(\r\x12\x10\n\x08msg_time\x18\x03 \x01(\r\x12\x12\n\nmsg_random\x18\x04 \x01(\r\x12\x0f\n\x07\x65rr_msg\x18\x05 \x01(\x0c\x12\x10\n\x08msg_type\x18\x06 \x01(\r\"C\n\x16PbGroupReadedReportReq\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x15\n\rlast_read_seq\x18\x02 \x01(\x04\"x\n\x17PbGroupReadedReportResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x12\n\ngroup_code\x18\x03 \x01(\x04\x12\x12\n\nmember_seq\x18\x04 \x01(\x04\x12\x15\n\rgroup_msg_seq\x18\x05 \x01(\x04\"s\n\x11PbInputNotifyInfo\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03ime\x18\x02 \x01(\r\x12\x13\n\x0bnotify_flag\x18\x03 \x01(\r\x12\x12\n\npb_reserve\x18\x04 \x01(\x0c\x12\x18\n\x10ios_push_wording\x18\x05 \x01(\x0c\"\x99\x02\n\x14PbMsgReadedReportReq\x12<\n\x0fgrp_read_report\x18\x01 \x03(\x0b\x32#.msf.msg.svc.PbGroupReadedReportReq\x12>\n\x0f\x64is_read_report\x18\x02 \x03(\x0b\x32%.msf.msg.svc.PbDiscussReadedReportReq\x12:\n\x0f\x63\x32\x63_read_report\x18\x03 \x01(\x0b\x32!.msf.msg.svc.PbC2CReadedReportReq\x12G\n\x14\x62ind_uin_read_report\x18\x04 \x01(\x0b\x32).msf.msg.svc.PbBindUinMsgReadedConfirmReq\"\x9e\x02\n\x15PbMsgReadedReportResp\x12=\n\x0fgrp_read_report\x18\x01 \x03(\x0b\x32$.msf.msg.svc.PbGroupReadedReportResp\x12?\n\x0f\x64is_read_report\x18\x02 \x03(\x0b\x32&.msf.msg.svc.PbDiscussReadedReportResp\x12;\n\x0f\x63\x32\x63_read_report\x18\x03 \x01(\x0b\x32\".msf.msg.svc.PbC2CReadedReportResp\x12H\n\x14\x62ind_uin_read_report\x18\x04 \x01(\x0b\x32*.msf.msg.svc.PbBindUinMsgReadedConfirmResp\"\x88\x01\n\x10PbMsgWithDrawReq\x12\x37\n\rc2c_with_draw\x18\x01 \x03(\x0b\x32 .msf.msg.svc.PbC2CMsgWithDrawReq\x12;\n\x0fgroup_with_draw\x18\x02 \x03(\x0b\x32\".msf.msg.svc.PbGroupMsgWithDrawReq\"\x8b\x01\n\x11PbMsgWithDrawResp\x12\x38\n\rc2c_with_draw\x18\x01 \x03(\x0b\x32!.msf.msg.svc.PbC2CMsgWithDrawResp\x12<\n\x0fgroup_with_draw\x18\x02 \x03(\x0b\x32#.msf.msg.svc.PbGroupMsgWithDrawResp\"O\n\x16PbPullDiscussMsgSeqReq\x12\x35\n\x10\x64iscuss_info_req\x18\x01 \x03(\x0b\x32\x1b.msf.msg.svc.DiscussInfoReq\"4\n\x0e\x44iscussInfoReq\x12\x10\n\x08\x63onf_uin\x18\x01 \x01(\x04\x12\x10\n\x08last_seq\x18\x02 \x01(\x04\"r\n\x17PbPullDiscussMsgSeqResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x37\n\x11\x64iscuss_info_resp\x18\x03 \x03(\x0b\x32\x1c.msf.msg.svc.DiscussInfoResp\"I\n\x0f\x44iscussInfoResp\x12\x10\n\x08\x63onf_uin\x18\x01 \x01(\x04\x12\x12\n\nmember_seq\x18\x02 \x01(\x04\x12\x10\n\x08\x63onf_seq\x18\x03 \x01(\x04\"I\n\x14PbPullGroupMsgSeqReq\x12\x31\n\x0egroup_info_req\x18\x01 \x03(\x0b\x32\x19.msf.msg.svc.GroupInfoReq\"4\n\x0cGroupInfoReq\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x10\n\x08last_seq\x18\x02 \x01(\x04\"l\n\x15PbPullGroupMsgSeqResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x33\n\x0fgroup_info_resp\x18\x03 \x03(\x0b\x32\x1a.msf.msg.svc.GroupInfoResp\"J\n\rGroupInfoResp\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x12\n\nmember_seq\x18\x02 \x01(\x04\x12\x11\n\tgroup_seq\x18\x03 \x01(\x04\"6\n\x19PbSearchRoamMsgInCloudReq\x12\x19\n\x11serialize_reqbody\x18\x01 \x01(\x0c\"W\n\x1aPbSearchRoamMsgInCloudResp\x12\x1e\n\x03msg\x18\x01 \x03(\x0b\x32\x11.msf.msg.comm.Msg\x12\x19\n\x11serialize_rspbody\x18\x02 \x01(\x0c\"\xf9\x03\n\x0cPbSendMsgReq\x12.\n\x0crouting_head\x18\x01 \x01(\x0b\x32\x18.msf.msg.svc.RoutingHead\x12/\n\x0c\x63ontent_head\x18\x02 \x01(\x0b\x32\x19.msf.msg.comm.ContentHead\x12&\n\x04\x62ody\x18\x03 \x01(\x0b\x32\x18.im.msg.msg_body.MsgBody\x12\x0b\n\x03seq\x18\x04 \x01(\r\x12\x0c\n\x04rand\x18\x05 \x01(\r\x12\x13\n\x0bsync_cookie\x18\x06 \x01(\x0c\x12-\n\tapp_share\x18\x07 \x01(\x0b\x32\x1a.msf.msg.comm.AppShareInfo\x12\x0b\n\x03via\x18\x08 \x01(\r\x12\x14\n\x0c\x64\x61ta_statist\x18\t \x01(\r\x12\x35\n\x10multi_msg_assist\x18\n \x01(\x0b\x32\x1b.msf.msg.svc.MultiMsgAssist\x12\x39\n\x11input_notify_info\x18\x0b \x01(\x0b\x32\x1e.msf.msg.svc.PbInputNotifyInfo\x12#\n\x04\x63trl\x18\x0c \x01(\x0b\x32\x15.msf.msg.ctrl.MsgCtrl\x12/\n\x0breceipt_req\x18\r \x01(\x0b\x32\x1a.im.msg.receipt.ReceiptReq\x12\x16\n\x0emulti_send_seq\x18\x0e \x01(\r\"\xb6\x02\n\rPbSendMsgResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x11\n\tsend_time\x18\x03 \x01(\r\x12\x19\n\x11svrbusy_wait_time\x18\x04 \x01(\r\x12+\n\tsend_info\x18\x05 \x01(\x0b\x32\x18.msf.msg.svc.MsgSendInfo\x12\x0f\n\x07\x65rrtype\x18\x06 \x01(\r\x12\x31\n\x0etrans_svr_info\x18\x07 \x01(\x0b\x32\x19.msf.msg.svc.TransSvrInfo\x12\x31\n\x0creceipt_resp\x18\x08 \x01(\x0b\x32\x1b.im.msg.receipt.ReceiptResp\x12\x1c\n\x14text_analysis_result\x18\t \x01(\r\x12\x15\n\rmsg_info_flag\x18\n \x01(\r\"a\n\x18PbThirdQQUnReadMsgNumReq\x12\x35\n\x10thirdqq_req_info\x18\x01 \x03(\x0b\x32\x1b.msf.msg.svc.ThirdQQReqInfo\x12\x0e\n\x06source\x18\x02 \x01(\r\"T\n\x0eThirdQQReqInfo\x12\x11\n\tthird_uin\x18\x01 \x01(\x04\x12\x15\n\rthird_uin_sig\x18\x02 \x01(\x0c\x12\x18\n\x10third_uin_cookie\x18\x03 \x01(\x0c\"\x86\x01\n\x19PbThirdQQUnReadMsgNumResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x37\n\x11thirdqq_resp_info\x18\x03 \x03(\x0b\x32\x1c.msf.msg.svc.ThirdQQRespInfo\x12\x10\n\x08interval\x18\x04 \x01(\r\"\x95\x01\n\x0fThirdQQRespInfo\x12\x11\n\tthird_uin\x18\x01 \x01(\x04\x12\x18\n\x10third_uin_cookie\x18\x02 \x01(\x0c\x12\x0b\n\x03num\x18\x03 \x01(\r\x12\x0c\n\x04\x66lag\x18\x04 \x01(\r\x12\x13\n\x0bredbag_time\x18\x05 \x01(\r\x12\x0e\n\x06status\x18\x06 \x01(\r\x12\x15\n\rlast_msg_time\x18\x07 \x01(\r\"\xd7\x02\n\x11PbUnReadMsgSeqReq\x12:\n\x0f\x63\x32\x63_unread_info\x18\x01 \x01(\x0b\x32!.msf.msg.svc.PbC2CUnReadMsgNumReq\x12\x42\n\x13\x62induin_unread_info\x18\x02 \x03(\x0b\x32%.msf.msg.svc.PbBindUinUnReadMsgNumReq\x12<\n\x11group_unread_info\x18\x03 \x01(\x0b\x32!.msf.msg.svc.PbPullGroupMsgSeqReq\x12@\n\x13\x64iscuss_unread_info\x18\x04 \x01(\x0b\x32#.msf.msg.svc.PbPullDiscussMsgSeqReq\x12\x42\n\x13thirdqq_unread_info\x18\x05 \x01(\x0b\x32%.msf.msg.svc.PbThirdQQUnReadMsgNumReq\"\xdd\x02\n\x12PbUnReadMsgSeqResp\x12;\n\x0f\x63\x32\x63_unread_info\x18\x01 \x01(\x0b\x32\".msf.msg.svc.PbC2CUnReadMsgNumResp\x12\x43\n\x13\x62induin_unread_info\x18\x02 \x03(\x0b\x32&.msf.msg.svc.PbBindUinUnReadMsgNumResp\x12=\n\x11group_unread_info\x18\x03 \x01(\x0b\x32\".msf.msg.svc.PbPullGroupMsgSeqResp\x12\x41\n\x13\x64iscuss_unread_info\x18\x04 \x01(\x0b\x32$.msf.msg.svc.PbPullDiscussMsgSeqResp\x12\x43\n\x13thirdqq_unread_info\x18\x05 \x01(\x0b\x32&.msf.msg.svc.PbThirdQQUnReadMsgNumResp\"=\n\x0bPubGroupTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\x12\x11\n\tgroup_uin\x18\x03 \x01(\x04\")\n\nPublicPlat\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\"1\n\x12QQQueryBusinessTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\",\n\rRichStatusTmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\"\xb8\x07\n\x0bRoutingHead\x12\x1d\n\x03\x63\x32\x63\x18\x01 \x01(\x0b\x32\x10.msf.msg.svc.C2C\x12\x1d\n\x03grp\x18\x02 \x01(\x0b\x32\x10.msf.msg.svc.Grp\x12$\n\x07grp_tmp\x18\x03 \x01(\x0b\x32\x13.msf.msg.svc.GrpTmp\x12\x1d\n\x03\x64is\x18\x04 \x01(\x0b\x32\x10.msf.msg.svc.Dis\x12$\n\x07\x64is_tmp\x18\x05 \x01(\x0b\x32\x13.msf.msg.svc.DisTmp\x12$\n\x07wpa_tmp\x18\x06 \x01(\x0b\x32\x13.msf.msg.svc.WPATmp\x12,\n\x0bpublic_plat\x18\x08 \x01(\x0b\x32\x17.msf.msg.svc.PublicPlat\x12(\n\ttrans_msg\x18\t \x01(\x0b\x32\x15.msf.msg.svc.TransMsg\x12\x31\n\x0c\x61\x64\x64ress_list\x18\n \x01(\x0b\x32\x1b.msf.msg.svc.AddressListTmp\x12\x33\n\x0frich_status_tmp\x18\x0b \x01(\x0b\x32\x1a.msf.msg.svc.RichStatusTmp\x12(\n\ttrans_cmd\x18\x0c \x01(\x0b\x32\x15.msf.msg.svc.TransCmd\x12*\n\naccost_tmp\x18\r \x01(\x0b\x32\x16.msf.msg.svc.AccostTmp\x12/\n\rpub_group_tmp\x18\x0e \x01(\x0b\x32\x18.msf.msg.svc.PubGroupTmp\x12-\n\x0ctrans_0_x211\x18\x0f \x01(\x0b\x32\x17.msf.msg.svc.Trans0x211\x12\x35\n\x10\x62usiness_wpa_tmp\x18\x10 \x01(\x0b\x32\x1b.msf.msg.svc.BusinessWPATmp\x12&\n\x08\x61uth_tmp\x18\x11 \x01(\x0b\x32\x14.msf.msg.svc.AuthTmp\x12&\n\x08\x62sns_tmp\x18\x12 \x01(\x0b\x32\x14.msf.msg.svc.BsnsTmp\x12=\n\x14qq_querybusiness_tmp\x18\x13 \x01(\x0b\x32\x1f.msf.msg.svc.QQQueryBusinessTmp\x12\x37\n\x11nearby_dating_tmp\x18\x14 \x01(\x0b\x32\x1c.msf.msg.svc.NearByDatingTmp\x12=\n\x14nearby_assistant_tmp\x18\x15 \x01(\x0b\x32\x1f.msf.msg.svc.NearByAssistantTmp\x12&\n\x08\x63omm_tmp\x18\x16 \x01(\x0b\x32\x14.msf.msg.svc.CommTmp\"\xa6\x01\n\nTrans0x211\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0e\n\x06\x63\x63_cmd\x18\x02 \x01(\r\x12,\n\tinst_ctrl\x18\x03 \x01(\x0b\x32\x19.im.msg.msg_head.InstCtrl\x12\x0b\n\x03sig\x18\x04 \x01(\x0c\x12\x10\n\x08\x63\x32\x63_type\x18\x05 \x01(\r\x12\x14\n\x0cservice_type\x18\x06 \x01(\r\x12\x15\n\rdataline_flag\x18\x07 \x01(\r\"(\n\x08TransCmd\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0c\n\x04type\x18\x02 \x01(\r\"+\n\x08TransMsg\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0f\n\x07\x63\x32\x63_cmd\x18\x02 \x01(\r\">\n\x08TransReq\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\x05\x12\x0f\n\x07req_tag\x18\x02 \x01(\r\x12\x10\n\x08req_buff\x18\x03 \x01(\x0c\"P\n\tTransResp\x12\x0e\n\x06result\x18\x01 \x01(\r\x12\x0e\n\x06\x65rrmsg\x18\x02 \x01(\t\x12\x10\n\x08resp_tag\x18\x03 \x01(\r\x12\x11\n\tresp_buff\x18\x04 \x01(\x0c\"W\n\x0cTransSvrInfo\x12\x10\n\x08sub_type\x18\x01 \x01(\r\x12\x10\n\x08ret_code\x18\x02 \x01(\x05\x12\x0f\n\x07\x65rr_msg\x18\x03 \x01(\x0c\x12\x12\n\ntrans_info\x18\x04 \x01(\x0c\"%\n\x06WPATmp\x12\x0e\n\x06to_uin\x18\x01 \x01(\x04\x12\x0b\n\x03sig\x18\x02 \x01(\x0c\"9\n\x13WithDrawWordingInfo\x12\x0f\n\x07item_id\x18\x01 \x01(\x05\x12\x11\n\titem_name\x18\x02 \x01(\t') + + + +_ACCOSTTMP = DESCRIPTOR.message_types_by_name['AccostTmp'] +_ADDRESSLISTTMP = DESCRIPTOR.message_types_by_name['AddressListTmp'] +_AUTHTMP = DESCRIPTOR.message_types_by_name['AuthTmp'] +_BSNSTMP = DESCRIPTOR.message_types_by_name['BsnsTmp'] +_BUSINESSWPATMP = DESCRIPTOR.message_types_by_name['BusinessWPATmp'] +_C2C = DESCRIPTOR.message_types_by_name['C2C'] +_COMMTMP = DESCRIPTOR.message_types_by_name['CommTmp'] +_DIS = DESCRIPTOR.message_types_by_name['Dis'] +_DISTMP = DESCRIPTOR.message_types_by_name['DisTmp'] +_GRP = DESCRIPTOR.message_types_by_name['Grp'] +_GRPTMP = DESCRIPTOR.message_types_by_name['GrpTmp'] +_MSGSENDINFO = DESCRIPTOR.message_types_by_name['MsgSendInfo'] +_MULTIMSGASSIST = DESCRIPTOR.message_types_by_name['MultiMsgAssist'] +_NEARBYASSISTANTTMP = DESCRIPTOR.message_types_by_name['NearByAssistantTmp'] +_NEARBYDATINGTMP = DESCRIPTOR.message_types_by_name['NearByDatingTmp'] +_PBBINDUINGETMSGREQ = DESCRIPTOR.message_types_by_name['PbBindUinGetMsgReq'] +_PBBINDUINMSGREADEDCONFIRMREQ = DESCRIPTOR.message_types_by_name['PbBindUinMsgReadedConfirmReq'] +_PBBINDUINMSGREADEDCONFIRMRESP = DESCRIPTOR.message_types_by_name['PbBindUinMsgReadedConfirmResp'] +_PBBINDUINUNREADMSGNUMREQ = DESCRIPTOR.message_types_by_name['PbBindUinUnReadMsgNumReq'] +_PBBINDUINUNREADMSGNUMRESP = DESCRIPTOR.message_types_by_name['PbBindUinUnReadMsgNumResp'] +_PBC2CMSGWITHDRAWREQ = DESCRIPTOR.message_types_by_name['PbC2CMsgWithDrawReq'] +_PBC2CMSGWITHDRAWREQ_MSGINFO = _PBC2CMSGWITHDRAWREQ.nested_types_by_name['MsgInfo'] +_PBC2CMSGWITHDRAWRESP = DESCRIPTOR.message_types_by_name['PbC2CMsgWithDrawResp'] +_MSGSTATUS = DESCRIPTOR.message_types_by_name['MsgStatus'] +_PBC2CREADEDREPORTREQ = DESCRIPTOR.message_types_by_name['PbC2CReadedReportReq'] +_UINPAIRREADINFO = DESCRIPTOR.message_types_by_name['UinPairReadInfo'] +_PBC2CREADEDREPORTRESP = DESCRIPTOR.message_types_by_name['PbC2CReadedReportResp'] +_PBC2CUNREADMSGNUMREQ = DESCRIPTOR.message_types_by_name['PbC2CUnReadMsgNumReq'] +_PBC2CUNREADMSGNUMRESP = DESCRIPTOR.message_types_by_name['PbC2CUnReadMsgNumResp'] +_PBDELROAMMSGREQ = DESCRIPTOR.message_types_by_name['PbDelRoamMsgReq'] +_C2CMSG = DESCRIPTOR.message_types_by_name['C2CMsg'] +_DISMSG = DESCRIPTOR.message_types_by_name['DisMsg'] +_GRPMSG = DESCRIPTOR.message_types_by_name['GrpMsg'] +_PBDELROAMMSGRESP = DESCRIPTOR.message_types_by_name['PbDelRoamMsgResp'] +_PBDELETEMSGREQ = DESCRIPTOR.message_types_by_name['PbDeleteMsgReq'] +_PBDELETEMSGREQ_MSGITEM = _PBDELETEMSGREQ.nested_types_by_name['MsgItem'] +_PBDELETEMSGRESP = DESCRIPTOR.message_types_by_name['PbDeleteMsgResp'] +_PBDISCUSSREADEDREPORTREQ = DESCRIPTOR.message_types_by_name['PbDiscussReadedReportReq'] +_PBDISCUSSREADEDREPORTRESP = DESCRIPTOR.message_types_by_name['PbDiscussReadedReportResp'] +_PBGETDISCUSSMSGREQ = DESCRIPTOR.message_types_by_name['PbGetDiscussMsgReq'] +_PBGETDISCUSSMSGRESP = DESCRIPTOR.message_types_by_name['PbGetDiscussMsgResp'] +_PBGETGROUPMSGREQ = DESCRIPTOR.message_types_by_name['PbGetGroupMsgReq'] +_PBGETGROUPMSGRESP = DESCRIPTOR.message_types_by_name['PbGetGroupMsgResp'] +_PBGETMSGREQ = DESCRIPTOR.message_types_by_name['PbGetMsgReq'] +_PBGETMSGRESP = DESCRIPTOR.message_types_by_name['PbGetMsgResp'] +_PBGETONEDAYROAMMSGREQ = DESCRIPTOR.message_types_by_name['PbGetOneDayRoamMsgReq'] +_PBGETONEDAYROAMMSGRESP = DESCRIPTOR.message_types_by_name['PbGetOneDayRoamMsgResp'] +_PBGETROAMMSGREQ = DESCRIPTOR.message_types_by_name['PbGetRoamMsgReq'] +_PBGETROAMMSGRESP = DESCRIPTOR.message_types_by_name['PbGetRoamMsgResp'] +_PBGROUPMSGWITHDRAWREQ = DESCRIPTOR.message_types_by_name['PbGroupMsgWithDrawReq'] +_MESSAGEINFO = DESCRIPTOR.message_types_by_name['MessageInfo'] +_PBGROUPMSGWITHDRAWRESP = DESCRIPTOR.message_types_by_name['PbGroupMsgWithDrawResp'] +_MESSAGERESULT = DESCRIPTOR.message_types_by_name['MessageResult'] +_PBGROUPREADEDREPORTREQ = DESCRIPTOR.message_types_by_name['PbGroupReadedReportReq'] +_PBGROUPREADEDREPORTRESP = DESCRIPTOR.message_types_by_name['PbGroupReadedReportResp'] +_PBINPUTNOTIFYINFO = DESCRIPTOR.message_types_by_name['PbInputNotifyInfo'] +_PBMSGREADEDREPORTREQ = DESCRIPTOR.message_types_by_name['PbMsgReadedReportReq'] +_PBMSGREADEDREPORTRESP = DESCRIPTOR.message_types_by_name['PbMsgReadedReportResp'] +_PBMSGWITHDRAWREQ = DESCRIPTOR.message_types_by_name['PbMsgWithDrawReq'] +_PBMSGWITHDRAWRESP = DESCRIPTOR.message_types_by_name['PbMsgWithDrawResp'] +_PBPULLDISCUSSMSGSEQREQ = DESCRIPTOR.message_types_by_name['PbPullDiscussMsgSeqReq'] +_DISCUSSINFOREQ = DESCRIPTOR.message_types_by_name['DiscussInfoReq'] +_PBPULLDISCUSSMSGSEQRESP = DESCRIPTOR.message_types_by_name['PbPullDiscussMsgSeqResp'] +_DISCUSSINFORESP = DESCRIPTOR.message_types_by_name['DiscussInfoResp'] +_PBPULLGROUPMSGSEQREQ = DESCRIPTOR.message_types_by_name['PbPullGroupMsgSeqReq'] +_GROUPINFOREQ = DESCRIPTOR.message_types_by_name['GroupInfoReq'] +_PBPULLGROUPMSGSEQRESP = DESCRIPTOR.message_types_by_name['PbPullGroupMsgSeqResp'] +_GROUPINFORESP = DESCRIPTOR.message_types_by_name['GroupInfoResp'] +_PBSEARCHROAMMSGINCLOUDREQ = DESCRIPTOR.message_types_by_name['PbSearchRoamMsgInCloudReq'] +_PBSEARCHROAMMSGINCLOUDRESP = DESCRIPTOR.message_types_by_name['PbSearchRoamMsgInCloudResp'] +_PBSENDMSGREQ = DESCRIPTOR.message_types_by_name['PbSendMsgReq'] +_PBSENDMSGRESP = DESCRIPTOR.message_types_by_name['PbSendMsgResp'] +_PBTHIRDQQUNREADMSGNUMREQ = DESCRIPTOR.message_types_by_name['PbThirdQQUnReadMsgNumReq'] +_THIRDQQREQINFO = DESCRIPTOR.message_types_by_name['ThirdQQReqInfo'] +_PBTHIRDQQUNREADMSGNUMRESP = DESCRIPTOR.message_types_by_name['PbThirdQQUnReadMsgNumResp'] +_THIRDQQRESPINFO = DESCRIPTOR.message_types_by_name['ThirdQQRespInfo'] +_PBUNREADMSGSEQREQ = DESCRIPTOR.message_types_by_name['PbUnReadMsgSeqReq'] +_PBUNREADMSGSEQRESP = DESCRIPTOR.message_types_by_name['PbUnReadMsgSeqResp'] +_PUBGROUPTMP = DESCRIPTOR.message_types_by_name['PubGroupTmp'] +_PUBLICPLAT = DESCRIPTOR.message_types_by_name['PublicPlat'] +_QQQUERYBUSINESSTMP = DESCRIPTOR.message_types_by_name['QQQueryBusinessTmp'] +_RICHSTATUSTMP = DESCRIPTOR.message_types_by_name['RichStatusTmp'] +_ROUTINGHEAD = DESCRIPTOR.message_types_by_name['RoutingHead'] +_TRANS0X211 = DESCRIPTOR.message_types_by_name['Trans0x211'] +_TRANSCMD = DESCRIPTOR.message_types_by_name['TransCmd'] +_TRANSMSG = DESCRIPTOR.message_types_by_name['TransMsg'] +_TRANSREQ = DESCRIPTOR.message_types_by_name['TransReq'] +_TRANSRESP = DESCRIPTOR.message_types_by_name['TransResp'] +_TRANSSVRINFO = DESCRIPTOR.message_types_by_name['TransSvrInfo'] +_WPATMP = DESCRIPTOR.message_types_by_name['WPATmp'] +_WITHDRAWWORDINGINFO = DESCRIPTOR.message_types_by_name['WithDrawWordingInfo'] AccostTmp = _reflection.GeneratedProtocolMessageType('AccostTmp', (_message.Message,), { 'DESCRIPTOR' : _ACCOSTTMP, '__module__' : 'cai.pb.msf.msg.svc.svc_pb2' @@ -5776,5 +753,189 @@ }) _sym_db.RegisterMessage(WithDrawWordingInfo) - +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _ACCOSTTMP._serialized_start=224 + _ACCOSTTMP._serialized_end=279 + _ADDRESSLISTTMP._serialized_start=281 + _ADDRESSLISTTMP._serialized_end=391 + _AUTHTMP._serialized_start=393 + _AUTHTMP._serialized_end=431 + _BSNSTMP._serialized_start=433 + _BSNSTMP._serialized_end=471 + _BUSINESSWPATMP._serialized_start=473 + _BUSINESSWPATMP._serialized_end=532 + _C2C._serialized_start=534 + _C2C._serialized_end=555 + _COMMTMP._serialized_start=557 + _COMMTMP._serialized_end=649 + _DIS._serialized_start=651 + _DIS._serialized_end=673 + _DISTMP._serialized_start=675 + _DISTMP._serialized_end=716 + _GRP._serialized_start=718 + _GRP._serialized_end=743 + _GRPTMP._serialized_start=745 + _GRPTMP._serialized_end=788 + _MSGSENDINFO._serialized_start=790 + _MSGSENDINFO._serialized_end=821 + _MULTIMSGASSIST._serialized_start=824 + _MULTIMSGASSIST._serialized_end=1023 + _NEARBYASSISTANTTMP._serialized_start=1025 + _NEARBYASSISTANTTMP._serialized_end=1089 + _NEARBYDATINGTMP._serialized_start=1091 + _NEARBYDATINGTMP._serialized_end=1152 + _PBBINDUINGETMSGREQ._serialized_start=1154 + _PBBINDUINGETMSGREQ._serialized_end=1254 + _PBBINDUINMSGREADEDCONFIRMREQ._serialized_start=1256 + _PBBINDUINMSGREADEDCONFIRMREQ._serialized_end=1325 + _PBBINDUINMSGREADEDCONFIRMRESP._serialized_start=1327 + _PBBINDUINMSGREADEDCONFIRMRESP._serialized_end=1429 + _PBBINDUINUNREADMSGNUMREQ._serialized_start=1431 + _PBBINDUINUNREADMSGNUMREQ._serialized_end=1496 + _PBBINDUINUNREADMSGNUMRESP._serialized_start=1498 + _PBBINDUINUNREADMSGNUMRESP._serialized_end=1588 + _PBC2CMSGWITHDRAWREQ._serialized_start=1591 + _PBC2CMSGWITHDRAWREQ._serialized_end=1967 + _PBC2CMSGWITHDRAWREQ_MSGINFO._serialized_start=1733 + _PBC2CMSGWITHDRAWREQ_MSGINFO._serialized_end=1967 + _PBC2CMSGWITHDRAWRESP._serialized_start=1970 + _PBC2CMSGWITHDRAWRESP._serialized_end=2137 + _MSGSTATUS._serialized_start=2139 + _MSGSTATUS._serialized_end=2222 + _PBC2CREADEDREPORTREQ._serialized_start=2224 + _PBC2CREADEDREPORTREQ._serialized_end=2316 + _UINPAIRREADINFO._serialized_start=2319 + _UINPAIRREADINFO._serialized_end=2485 + _PBC2CREADEDREPORTRESP._serialized_start=2487 + _PBC2CREADEDREPORTRESP._serialized_end=2563 + _PBC2CUNREADMSGNUMREQ._serialized_start=2565 + _PBC2CUNREADMSGNUMREQ._serialized_end=2587 + _PBC2CUNREADMSGNUMRESP._serialized_start=2589 + _PBC2CUNREADMSGNUMRESP._serialized_end=2657 + _PBDELROAMMSGREQ._serialized_start=2660 + _PBDELROAMMSGREQ._serialized_end=2791 + _C2CMSG._serialized_start=2793 + _C2CMSG._serialized_end=2880 + _DISMSG._serialized_start=2882 + _DISMSG._serialized_end=2924 + _GRPMSG._serialized_start=2926 + _GRPMSG._serialized_end=2986 + _PBDELROAMMSGRESP._serialized_start=2988 + _PBDELROAMMSGRESP._serialized_end=3038 + _PBDELETEMSGREQ._serialized_start=3041 + _PBDELETEMSGREQ._serialized_end=3211 + _PBDELETEMSGREQ_MSGITEM._serialized_start=3115 + _PBDELETEMSGREQ_MSGITEM._serialized_end=3211 + _PBDELETEMSGRESP._serialized_start=3213 + _PBDELETEMSGRESP._serialized_end=3262 + _PBDISCUSSREADEDREPORTREQ._serialized_start=3264 + _PBDISCUSSREADEDREPORTREQ._serialized_end=3331 + _PBDISCUSSREADEDREPORTRESP._serialized_start=3333 + _PBDISCUSSREADEDREPORTRESP._serialized_end=3448 + _PBGETDISCUSSMSGREQ._serialized_start=3451 + _PBGETDISCUSSMSGREQ._serialized_end=3613 + _PBGETDISCUSSMSGRESP._serialized_start=3616 + _PBGETDISCUSSMSGRESP._serialized_end=3821 + _PBGETGROUPMSGREQ._serialized_start=3824 + _PBGETGROUPMSGREQ._serialized_end=4004 + _PBGETGROUPMSGRESP._serialized_start=4007 + _PBGETGROUPMSGRESP._serialized_end=4160 + _PBGETMSGREQ._serialized_start=4163 + _PBGETMSGREQ._serialized_end=4455 + _PBGETMSGRESP._serialized_start=4458 + _PBGETMSGRESP._serialized_end=4699 + _PBGETONEDAYROAMMSGREQ._serialized_start=4701 + _PBGETONEDAYROAMMSGREQ._serialized_end=4798 + _PBGETONEDAYROAMMSGRESP._serialized_start=4801 + _PBGETONEDAYROAMMSGRESP._serialized_end=4965 + _PBGETROAMMSGREQ._serialized_start=4968 + _PBGETROAMMSGREQ._serialized_end=5161 + _PBGETROAMMSGRESP._serialized_start=5164 + _PBGETROAMMSGRESP._serialized_end=5315 + _PBGROUPMSGWITHDRAWREQ._serialized_start=5318 + _PBGROUPMSGWITHDRAWREQ._serialized_end=5455 + _MESSAGEINFO._serialized_start=5457 + _MESSAGEINFO._serialized_end=5544 + _PBGROUPMSGWITHDRAWRESP._serialized_start=5547 + _PBGROUPMSGWITHDRAWRESP._serialized_end=5786 + _MESSAGERESULT._serialized_start=5788 + _MESSAGERESULT._serialized_end=5909 + _PBGROUPREADEDREPORTREQ._serialized_start=5911 + _PBGROUPREADEDREPORTREQ._serialized_end=5978 + _PBGROUPREADEDREPORTRESP._serialized_start=5980 + _PBGROUPREADEDREPORTRESP._serialized_end=6100 + _PBINPUTNOTIFYINFO._serialized_start=6102 + _PBINPUTNOTIFYINFO._serialized_end=6217 + _PBMSGREADEDREPORTREQ._serialized_start=6220 + _PBMSGREADEDREPORTREQ._serialized_end=6501 + _PBMSGREADEDREPORTRESP._serialized_start=6504 + _PBMSGREADEDREPORTRESP._serialized_end=6790 + _PBMSGWITHDRAWREQ._serialized_start=6793 + _PBMSGWITHDRAWREQ._serialized_end=6929 + _PBMSGWITHDRAWRESP._serialized_start=6932 + _PBMSGWITHDRAWRESP._serialized_end=7071 + _PBPULLDISCUSSMSGSEQREQ._serialized_start=7073 + _PBPULLDISCUSSMSGSEQREQ._serialized_end=7152 + _DISCUSSINFOREQ._serialized_start=7154 + _DISCUSSINFOREQ._serialized_end=7206 + _PBPULLDISCUSSMSGSEQRESP._serialized_start=7208 + _PBPULLDISCUSSMSGSEQRESP._serialized_end=7322 + _DISCUSSINFORESP._serialized_start=7324 + _DISCUSSINFORESP._serialized_end=7397 + _PBPULLGROUPMSGSEQREQ._serialized_start=7399 + _PBPULLGROUPMSGSEQREQ._serialized_end=7472 + _GROUPINFOREQ._serialized_start=7474 + _GROUPINFOREQ._serialized_end=7526 + _PBPULLGROUPMSGSEQRESP._serialized_start=7528 + _PBPULLGROUPMSGSEQRESP._serialized_end=7636 + _GROUPINFORESP._serialized_start=7638 + _GROUPINFORESP._serialized_end=7712 + _PBSEARCHROAMMSGINCLOUDREQ._serialized_start=7714 + _PBSEARCHROAMMSGINCLOUDREQ._serialized_end=7768 + _PBSEARCHROAMMSGINCLOUDRESP._serialized_start=7770 + _PBSEARCHROAMMSGINCLOUDRESP._serialized_end=7857 + _PBSENDMSGREQ._serialized_start=7860 + _PBSENDMSGREQ._serialized_end=8365 + _PBSENDMSGRESP._serialized_start=8368 + _PBSENDMSGRESP._serialized_end=8678 + _PBTHIRDQQUNREADMSGNUMREQ._serialized_start=8680 + _PBTHIRDQQUNREADMSGNUMREQ._serialized_end=8777 + _THIRDQQREQINFO._serialized_start=8779 + _THIRDQQREQINFO._serialized_end=8863 + _PBTHIRDQQUNREADMSGNUMRESP._serialized_start=8866 + _PBTHIRDQQUNREADMSGNUMRESP._serialized_end=9000 + _THIRDQQRESPINFO._serialized_start=9003 + _THIRDQQRESPINFO._serialized_end=9152 + _PBUNREADMSGSEQREQ._serialized_start=9155 + _PBUNREADMSGSEQREQ._serialized_end=9498 + _PBUNREADMSGSEQRESP._serialized_start=9501 + _PBUNREADMSGSEQRESP._serialized_end=9850 + _PUBGROUPTMP._serialized_start=9852 + _PUBGROUPTMP._serialized_end=9913 + _PUBLICPLAT._serialized_start=9915 + _PUBLICPLAT._serialized_end=9956 + _QQQUERYBUSINESSTMP._serialized_start=9958 + _QQQUERYBUSINESSTMP._serialized_end=10007 + _RICHSTATUSTMP._serialized_start=10009 + _RICHSTATUSTMP._serialized_end=10053 + _ROUTINGHEAD._serialized_start=10056 + _ROUTINGHEAD._serialized_end=11008 + _TRANS0X211._serialized_start=11011 + _TRANS0X211._serialized_end=11177 + _TRANSCMD._serialized_start=11179 + _TRANSCMD._serialized_end=11219 + _TRANSMSG._serialized_start=11221 + _TRANSMSG._serialized_end=11264 + _TRANSREQ._serialized_start=11266 + _TRANSREQ._serialized_end=11328 + _TRANSRESP._serialized_start=11330 + _TRANSRESP._serialized_end=11410 + _TRANSSVRINFO._serialized_start=11412 + _TRANSSVRINFO._serialized_end=11499 + _WPATMP._serialized_start=11501 + _WPATMP._serialized_end=11538 + _WITHDRAWWORDINGINFO._serialized_start=11540 + _WITHDRAWWORDINGINFO._serialized_end=11597 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/msf/msg/svc/svc_pb2.pyi b/cai/pb/msf/msg/svc/svc_pb2.pyi index 601adfbe..a2685239 100644 --- a/cai/pb/msf/msg/svc/svc_pb2.pyi +++ b/cai/pb/msf/msg/svc/svc_pb2.pyi @@ -56,202 +56,190 @@ from typing_extensions import ( ) -DESCRIPTOR: FileDescriptor = ... +DESCRIPTOR: FileDescriptor class AccostTmp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int SIG_FIELD_NUMBER: int REPLY_FIELD_NUMBER: int - to_uin: int = ... - sig: bytes = ... - reply: bool = ... - + to_uin: int + sig: bytes + reply: bool def __init__(self, *, - to_uin : Optional[int] = ..., - sig : Optional[bytes] = ..., - reply : Optional[bool] = ..., + to_uin: Optional[int] = ..., + sig: Optional[bytes] = ..., + reply: Optional[bool] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"reply",b"reply",u"sig",b"sig",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"reply",b"reply",u"sig",b"sig",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["reply",b"reply","sig",b"sig","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["reply",b"reply","sig",b"sig","to_uin",b"to_uin"]) -> None: ... class AddressListTmp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FROM_PHONE_FIELD_NUMBER: int TO_PHONE_FIELD_NUMBER: int TO_UIN_FIELD_NUMBER: int SIG_FIELD_NUMBER: int FROM_CONTACT_SIZE_FIELD_NUMBER: int - from_phone: Text = ... - to_phone: Text = ... - to_uin: int = ... - sig: bytes = ... - from_contact_size: int = ... - + from_phone: Text + to_phone: Text + to_uin: int + sig: bytes + from_contact_size: int def __init__(self, *, - from_phone : Optional[Text] = ..., - to_phone : Optional[Text] = ..., - to_uin : Optional[int] = ..., - sig : Optional[bytes] = ..., - from_contact_size : Optional[int] = ..., + from_phone: Optional[Text] = ..., + to_phone: Optional[Text] = ..., + to_uin: Optional[int] = ..., + sig: Optional[bytes] = ..., + from_contact_size: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"from_contact_size",b"from_contact_size",u"from_phone",b"from_phone",u"sig",b"sig",u"to_phone",b"to_phone",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"from_contact_size",b"from_contact_size",u"from_phone",b"from_phone",u"sig",b"sig",u"to_phone",b"to_phone",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["from_contact_size",b"from_contact_size","from_phone",b"from_phone","sig",b"sig","to_phone",b"to_phone","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["from_contact_size",b"from_contact_size","from_phone",b"from_phone","sig",b"sig","to_phone",b"to_phone","to_uin",b"to_uin"]) -> None: ... class AuthTmp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int SIG_FIELD_NUMBER: int - to_uin: int = ... - sig: bytes = ... - + to_uin: int + sig: bytes def __init__(self, *, - to_uin : Optional[int] = ..., - sig : Optional[bytes] = ..., + to_uin: Optional[int] = ..., + sig: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"sig",b"sig",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"sig",b"sig",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["sig",b"sig","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["sig",b"sig","to_uin",b"to_uin"]) -> None: ... class BsnsTmp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int SIG_FIELD_NUMBER: int - to_uin: int = ... - sig: bytes = ... - + to_uin: int + sig: bytes def __init__(self, *, - to_uin : Optional[int] = ..., - sig : Optional[bytes] = ..., + to_uin: Optional[int] = ..., + sig: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"sig",b"sig",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"sig",b"sig",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["sig",b"sig","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["sig",b"sig","to_uin",b"to_uin"]) -> None: ... class BusinessWPATmp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int SIG_FIELD_NUMBER: int SIGT_FIELD_NUMBER: int - to_uin: int = ... - sig: bytes = ... - sigt: bytes = ... - + to_uin: int + sig: bytes + sigt: bytes def __init__(self, *, - to_uin : Optional[int] = ..., - sig : Optional[bytes] = ..., - sigt : Optional[bytes] = ..., + to_uin: Optional[int] = ..., + sig: Optional[bytes] = ..., + sigt: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"sig",b"sig",u"sigt",b"sigt",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"sig",b"sig",u"sigt",b"sigt",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["sig",b"sig","sigt",b"sigt","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["sig",b"sig","sigt",b"sigt","to_uin",b"to_uin"]) -> None: ... class C2C(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int - to_uin: int = ... - + to_uin: int def __init__(self, *, - to_uin : Optional[int] = ..., + to_uin: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["to_uin",b"to_uin"]) -> None: ... class CommTmp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int C2C_TYPE_FIELD_NUMBER: int SVR_TYPE_FIELD_NUMBER: int SIG_FIELD_NUMBER: int RESERVED_FIELD_NUMBER: int - to_uin: int = ... - c2c_type: int = ... - svr_type: int = ... - sig: bytes = ... - reserved: bytes = ... - + to_uin: int + c2c_type: int + svr_type: int + sig: bytes + reserved: bytes def __init__(self, *, - to_uin : Optional[int] = ..., - c2c_type : Optional[int] = ..., - svr_type : Optional[int] = ..., - sig : Optional[bytes] = ..., - reserved : Optional[bytes] = ..., + to_uin: Optional[int] = ..., + c2c_type: Optional[int] = ..., + svr_type: Optional[int] = ..., + sig: Optional[bytes] = ..., + reserved: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"c2c_type",b"c2c_type",u"reserved",b"reserved",u"sig",b"sig",u"svr_type",b"svr_type",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"c2c_type",b"c2c_type",u"reserved",b"reserved",u"sig",b"sig",u"svr_type",b"svr_type",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["c2c_type",b"c2c_type","reserved",b"reserved","sig",b"sig","svr_type",b"svr_type","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["c2c_type",b"c2c_type","reserved",b"reserved","sig",b"sig","svr_type",b"svr_type","to_uin",b"to_uin"]) -> None: ... class Dis(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor DIS_UIN_FIELD_NUMBER: int - dis_uin: int = ... - + dis_uin: int def __init__(self, *, - dis_uin : Optional[int] = ..., + dis_uin: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"dis_uin",b"dis_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"dis_uin",b"dis_uin"]) -> None: ... + def HasField(self, field_name: Literal["dis_uin",b"dis_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["dis_uin",b"dis_uin"]) -> None: ... class DisTmp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor DIS_UIN_FIELD_NUMBER: int TO_UIN_FIELD_NUMBER: int - dis_uin: int = ... - to_uin: int = ... - + dis_uin: int + to_uin: int def __init__(self, *, - dis_uin : Optional[int] = ..., - to_uin : Optional[int] = ..., + dis_uin: Optional[int] = ..., + to_uin: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"dis_uin",b"dis_uin",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"dis_uin",b"dis_uin",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["dis_uin",b"dis_uin","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["dis_uin",b"dis_uin","to_uin",b"to_uin"]) -> None: ... class Grp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor GROUP_CODE_FIELD_NUMBER: int - group_code: int = ... - + group_code: int def __init__(self, *, - group_code : Optional[int] = ..., + group_code: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"group_code",b"group_code"]) -> bool: ... - def ClearField(self, field_name: Literal[u"group_code",b"group_code"]) -> None: ... + def HasField(self, field_name: Literal["group_code",b"group_code"]) -> bool: ... + def ClearField(self, field_name: Literal["group_code",b"group_code"]) -> None: ... class GrpTmp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor GROUP_UIN_FIELD_NUMBER: int TO_UIN_FIELD_NUMBER: int - group_uin: int = ... - to_uin: int = ... - + group_uin: int + to_uin: int def __init__(self, *, - group_uin : Optional[int] = ..., - to_uin : Optional[int] = ..., + group_uin: Optional[int] = ..., + to_uin: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"group_uin",b"group_uin",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"group_uin",b"group_uin",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["group_uin",b"group_uin","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["group_uin",b"group_uin","to_uin",b"to_uin"]) -> None: ... class MsgSendInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RECEIVER_FIELD_NUMBER: int - receiver: int = ... - + receiver: int def __init__(self, *, - receiver : Optional[int] = ..., + receiver: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"receiver",b"receiver"]) -> bool: ... - def ClearField(self, field_name: Literal[u"receiver",b"receiver"]) -> None: ... + def HasField(self, field_name: Literal["receiver",b"receiver"]) -> bool: ... + def ClearField(self, field_name: Literal["receiver",b"receiver"]) -> None: ... class MultiMsgAssist(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor REPEATED_ROUTING_FIELD_NUMBER: int USE_FIELD_NUMBER: int TEMP_ID_FIELD_NUMBER: int @@ -260,164 +248,155 @@ class MultiMsgAssist(Message): REDBAG_AMOUNT_FIELD_NUMBER: int HAS_READBAG_FIELD_NUMBER: int HAS_VEDIO_FIELD_NUMBER: int - use: int = ... - temp_id: int = ... - vedio_len: int = ... - redbag_id: bytes = ... - redbag_amount: int = ... - has_readbag: int = ... - has_vedio: int = ... - @property def repeated_routing(self) -> RepeatedCompositeFieldContainer[RoutingHead]: ... - - def __init__(self, - *, - repeated_routing : Optional[Iterable[RoutingHead]] = ..., - use : Optional[int] = ..., - temp_id : Optional[int] = ..., - vedio_len : Optional[int] = ..., - redbag_id : Optional[bytes] = ..., - redbag_amount : Optional[int] = ..., - has_readbag : Optional[int] = ..., - has_vedio : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"has_readbag",b"has_readbag",u"has_vedio",b"has_vedio",u"redbag_amount",b"redbag_amount",u"redbag_id",b"redbag_id",u"temp_id",b"temp_id",u"use",b"use",u"vedio_len",b"vedio_len"]) -> bool: ... - def ClearField(self, field_name: Literal[u"has_readbag",b"has_readbag",u"has_vedio",b"has_vedio",u"redbag_amount",b"redbag_amount",u"redbag_id",b"redbag_id",u"repeated_routing",b"repeated_routing",u"temp_id",b"temp_id",u"use",b"use",u"vedio_len",b"vedio_len"]) -> None: ... + use: int + temp_id: int + vedio_len: int + redbag_id: bytes + redbag_amount: int + has_readbag: int + has_vedio: int + def __init__(self, + *, + repeated_routing: Optional[Iterable[RoutingHead]] = ..., + use: Optional[int] = ..., + temp_id: Optional[int] = ..., + vedio_len: Optional[int] = ..., + redbag_id: Optional[bytes] = ..., + redbag_amount: Optional[int] = ..., + has_readbag: Optional[int] = ..., + has_vedio: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["has_readbag",b"has_readbag","has_vedio",b"has_vedio","redbag_amount",b"redbag_amount","redbag_id",b"redbag_id","temp_id",b"temp_id","use",b"use","vedio_len",b"vedio_len"]) -> bool: ... + def ClearField(self, field_name: Literal["has_readbag",b"has_readbag","has_vedio",b"has_vedio","redbag_amount",b"redbag_amount","redbag_id",b"redbag_id","repeated_routing",b"repeated_routing","temp_id",b"temp_id","use",b"use","vedio_len",b"vedio_len"]) -> None: ... class NearByAssistantTmp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int SIG_FIELD_NUMBER: int REPLY_FIELD_NUMBER: int - to_uin: int = ... - sig: bytes = ... - reply: bool = ... - + to_uin: int + sig: bytes + reply: bool def __init__(self, *, - to_uin : Optional[int] = ..., - sig : Optional[bytes] = ..., - reply : Optional[bool] = ..., + to_uin: Optional[int] = ..., + sig: Optional[bytes] = ..., + reply: Optional[bool] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"reply",b"reply",u"sig",b"sig",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"reply",b"reply",u"sig",b"sig",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["reply",b"reply","sig",b"sig","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["reply",b"reply","sig",b"sig","to_uin",b"to_uin"]) -> None: ... class NearByDatingTmp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int SIG_FIELD_NUMBER: int REPLY_FIELD_NUMBER: int - to_uin: int = ... - sig: bytes = ... - reply: bool = ... - + to_uin: int + sig: bytes + reply: bool def __init__(self, *, - to_uin : Optional[int] = ..., - sig : Optional[bytes] = ..., - reply : Optional[bool] = ..., + to_uin: Optional[int] = ..., + sig: Optional[bytes] = ..., + reply: Optional[bool] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"reply",b"reply",u"sig",b"sig",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"reply",b"reply",u"sig",b"sig",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["reply",b"reply","sig",b"sig","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["reply",b"reply","sig",b"sig","to_uin",b"to_uin"]) -> None: ... class PbBindUinGetMsgReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor BIND_UIN_FIELD_NUMBER: int BIND_UIN_SIG_FIELD_NUMBER: int SYNC_FLAG_FIELD_NUMBER: int SYNC_COOKIE_FIELD_NUMBER: int - bind_uin: int = ... - bind_uin_sig: bytes = ... - sync_flag: int = ... - sync_cookie: bytes = ... - + bind_uin: int + bind_uin_sig: bytes + sync_flag: int + sync_cookie: bytes def __init__(self, *, - bind_uin : Optional[int] = ..., - bind_uin_sig : Optional[bytes] = ..., - sync_flag : Optional[int] = ..., - sync_cookie : Optional[bytes] = ..., + bind_uin: Optional[int] = ..., + bind_uin_sig: Optional[bytes] = ..., + sync_flag: Optional[int] = ..., + sync_cookie: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"bind_uin",b"bind_uin",u"bind_uin_sig",b"bind_uin_sig",u"sync_cookie",b"sync_cookie",u"sync_flag",b"sync_flag"]) -> bool: ... - def ClearField(self, field_name: Literal[u"bind_uin",b"bind_uin",u"bind_uin_sig",b"bind_uin_sig",u"sync_cookie",b"sync_cookie",u"sync_flag",b"sync_flag"]) -> None: ... + def HasField(self, field_name: Literal["bind_uin",b"bind_uin","bind_uin_sig",b"bind_uin_sig","sync_cookie",b"sync_cookie","sync_flag",b"sync_flag"]) -> bool: ... + def ClearField(self, field_name: Literal["bind_uin",b"bind_uin","bind_uin_sig",b"bind_uin_sig","sync_cookie",b"sync_cookie","sync_flag",b"sync_flag"]) -> None: ... class PbBindUinMsgReadedConfirmReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SYNC_COOKIE_FIELD_NUMBER: int BIND_UIN_FIELD_NUMBER: int - sync_cookie: bytes = ... - bind_uin: int = ... - + sync_cookie: bytes + bind_uin: int def __init__(self, *, - sync_cookie : Optional[bytes] = ..., - bind_uin : Optional[int] = ..., + sync_cookie: Optional[bytes] = ..., + bind_uin: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"bind_uin",b"bind_uin",u"sync_cookie",b"sync_cookie"]) -> bool: ... - def ClearField(self, field_name: Literal[u"bind_uin",b"bind_uin",u"sync_cookie",b"sync_cookie"]) -> None: ... + def HasField(self, field_name: Literal["bind_uin",b"bind_uin","sync_cookie",b"sync_cookie"]) -> bool: ... + def ClearField(self, field_name: Literal["bind_uin",b"bind_uin","sync_cookie",b"sync_cookie"]) -> None: ... class PbBindUinMsgReadedConfirmResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int SYNC_COOKIE_FIELD_NUMBER: int BIND_UIN_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - sync_cookie: bytes = ... - bind_uin: int = ... - + result: int + errmsg: Text + sync_cookie: bytes + bind_uin: int def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - sync_cookie : Optional[bytes] = ..., - bind_uin : Optional[int] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + sync_cookie: Optional[bytes] = ..., + bind_uin: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"bind_uin",b"bind_uin",u"errmsg",b"errmsg",u"result",b"result",u"sync_cookie",b"sync_cookie"]) -> bool: ... - def ClearField(self, field_name: Literal[u"bind_uin",b"bind_uin",u"errmsg",b"errmsg",u"result",b"result",u"sync_cookie",b"sync_cookie"]) -> None: ... + def HasField(self, field_name: Literal["bind_uin",b"bind_uin","errmsg",b"errmsg","result",b"result","sync_cookie",b"sync_cookie"]) -> bool: ... + def ClearField(self, field_name: Literal["bind_uin",b"bind_uin","errmsg",b"errmsg","result",b"result","sync_cookie",b"sync_cookie"]) -> None: ... class PbBindUinUnReadMsgNumReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor BIND_UIN_FIELD_NUMBER: int SYNC_COOKIE_FIELD_NUMBER: int - bind_uin: int = ... - sync_cookie: bytes = ... - + bind_uin: int + sync_cookie: bytes def __init__(self, *, - bind_uin : Optional[int] = ..., - sync_cookie : Optional[bytes] = ..., + bind_uin: Optional[int] = ..., + sync_cookie: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"bind_uin",b"bind_uin",u"sync_cookie",b"sync_cookie"]) -> bool: ... - def ClearField(self, field_name: Literal[u"bind_uin",b"bind_uin",u"sync_cookie",b"sync_cookie"]) -> None: ... + def HasField(self, field_name: Literal["bind_uin",b"bind_uin","sync_cookie",b"sync_cookie"]) -> bool: ... + def ClearField(self, field_name: Literal["bind_uin",b"bind_uin","sync_cookie",b"sync_cookie"]) -> None: ... class PbBindUinUnReadMsgNumResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int BIND_UIN_FIELD_NUMBER: int NUM_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - bind_uin: int = ... - num: int = ... - + result: int + errmsg: Text + bind_uin: int + num: int def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - bind_uin : Optional[int] = ..., - num : Optional[int] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + bind_uin: Optional[int] = ..., + num: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"bind_uin",b"bind_uin",u"errmsg",b"errmsg",u"num",b"num",u"result",b"result"]) -> bool: ... - def ClearField(self, field_name: Literal[u"bind_uin",b"bind_uin",u"errmsg",b"errmsg",u"num",b"num",u"result",b"result"]) -> None: ... + def HasField(self, field_name: Literal["bind_uin",b"bind_uin","errmsg",b"errmsg","num",b"num","result",b"result"]) -> bool: ... + def ClearField(self, field_name: Literal["bind_uin",b"bind_uin","errmsg",b"errmsg","num",b"num","result",b"result"]) -> None: ... class PbC2CMsgWithDrawReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor class MsgInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FROM_UIN_FIELD_NUMBER: int TO_UIN_FIELD_NUMBER: int MSG_SEQ_FIELD_NUMBER: int @@ -429,122 +408,111 @@ class PbC2CMsgWithDrawReq(Message): DIV_SEQ_FIELD_NUMBER: int MSG_TYPE_FIELD_NUMBER: int ROUTING_HEAD_FIELD_NUMBER: int - from_uin: int = ... - to_uin: int = ... - msg_seq: int = ... - msg_uid: int = ... - msg_time: int = ... - msg_random: int = ... - pkg_num: int = ... - pkg_index: int = ... - div_seq: int = ... - msg_type: int = ... - + from_uin: int + to_uin: int + msg_seq: int + msg_uid: int + msg_time: int + msg_random: int + pkg_num: int + pkg_index: int + div_seq: int + msg_type: int @property def routing_head(self) -> RoutingHead: ... - def __init__(self, *, - from_uin : Optional[int] = ..., - to_uin : Optional[int] = ..., - msg_seq : Optional[int] = ..., - msg_uid : Optional[int] = ..., - msg_time : Optional[int] = ..., - msg_random : Optional[int] = ..., - pkg_num : Optional[int] = ..., - pkg_index : Optional[int] = ..., - div_seq : Optional[int] = ..., - msg_type : Optional[int] = ..., - routing_head : Optional[RoutingHead] = ..., + from_uin: Optional[int] = ..., + to_uin: Optional[int] = ..., + msg_seq: Optional[int] = ..., + msg_uid: Optional[int] = ..., + msg_time: Optional[int] = ..., + msg_random: Optional[int] = ..., + pkg_num: Optional[int] = ..., + pkg_index: Optional[int] = ..., + div_seq: Optional[int] = ..., + msg_type: Optional[int] = ..., + routing_head: Optional[RoutingHead] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"div_seq",b"div_seq",u"from_uin",b"from_uin",u"msg_random",b"msg_random",u"msg_seq",b"msg_seq",u"msg_time",b"msg_time",u"msg_type",b"msg_type",u"msg_uid",b"msg_uid",u"pkg_index",b"pkg_index",u"pkg_num",b"pkg_num",u"routing_head",b"routing_head",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"div_seq",b"div_seq",u"from_uin",b"from_uin",u"msg_random",b"msg_random",u"msg_seq",b"msg_seq",u"msg_time",b"msg_time",u"msg_type",b"msg_type",u"msg_uid",b"msg_uid",u"pkg_index",b"pkg_index",u"pkg_num",b"pkg_num",u"routing_head",b"routing_head",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["div_seq",b"div_seq","from_uin",b"from_uin","msg_random",b"msg_random","msg_seq",b"msg_seq","msg_time",b"msg_time","msg_type",b"msg_type","msg_uid",b"msg_uid","pkg_index",b"pkg_index","pkg_num",b"pkg_num","routing_head",b"routing_head","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["div_seq",b"div_seq","from_uin",b"from_uin","msg_random",b"msg_random","msg_seq",b"msg_seq","msg_time",b"msg_time","msg_type",b"msg_type","msg_uid",b"msg_uid","pkg_index",b"pkg_index","pkg_num",b"pkg_num","routing_head",b"routing_head","to_uin",b"to_uin"]) -> None: ... INFO_FIELD_NUMBER: int LONG_MESSAGE_FLAG_FIELD_NUMBER: int RESERVED_FIELD_NUMBER: int SUB_CMD_FIELD_NUMBER: int - long_message_flag: int = ... - reserved: bytes = ... - sub_cmd: int = ... - @property def info(self) -> RepeatedCompositeFieldContainer[PbC2CMsgWithDrawReq.MsgInfo]: ... - + long_message_flag: int + reserved: bytes + sub_cmd: int def __init__(self, *, - info : Optional[Iterable[PbC2CMsgWithDrawReq.MsgInfo]] = ..., - long_message_flag : Optional[int] = ..., - reserved : Optional[bytes] = ..., - sub_cmd : Optional[int] = ..., + info: Optional[Iterable[PbC2CMsgWithDrawReq.MsgInfo]] = ..., + long_message_flag: Optional[int] = ..., + reserved: Optional[bytes] = ..., + sub_cmd: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"long_message_flag",b"long_message_flag",u"reserved",b"reserved",u"sub_cmd",b"sub_cmd"]) -> bool: ... - def ClearField(self, field_name: Literal[u"info",b"info",u"long_message_flag",b"long_message_flag",u"reserved",b"reserved",u"sub_cmd",b"sub_cmd"]) -> None: ... + def HasField(self, field_name: Literal["long_message_flag",b"long_message_flag","reserved",b"reserved","sub_cmd",b"sub_cmd"]) -> bool: ... + def ClearField(self, field_name: Literal["info",b"info","long_message_flag",b"long_message_flag","reserved",b"reserved","sub_cmd",b"sub_cmd"]) -> None: ... class PbC2CMsgWithDrawResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int STATUS_FIELD_NUMBER: int SUB_CMD_FIELD_NUMBER: int WORDING_INFO_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - sub_cmd: int = ... - + result: int + errmsg: Text @property def status(self) -> RepeatedCompositeFieldContainer[MsgStatus]: ... - + sub_cmd: int @property def wording_info(self) -> WithDrawWordingInfo: ... - def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - status : Optional[Iterable[MsgStatus]] = ..., - sub_cmd : Optional[int] = ..., - wording_info : Optional[WithDrawWordingInfo] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + status: Optional[Iterable[MsgStatus]] = ..., + sub_cmd: Optional[int] = ..., + wording_info: Optional[WithDrawWordingInfo] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"errmsg",b"errmsg",u"result",b"result",u"sub_cmd",b"sub_cmd",u"wording_info",b"wording_info"]) -> bool: ... - def ClearField(self, field_name: Literal[u"errmsg",b"errmsg",u"result",b"result",u"status",b"status",u"sub_cmd",b"sub_cmd",u"wording_info",b"wording_info"]) -> None: ... + def HasField(self, field_name: Literal["errmsg",b"errmsg","result",b"result","sub_cmd",b"sub_cmd","wording_info",b"wording_info"]) -> bool: ... + def ClearField(self, field_name: Literal["errmsg",b"errmsg","result",b"result","status",b"status","sub_cmd",b"sub_cmd","wording_info",b"wording_info"]) -> None: ... class MsgStatus(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor INFO_FIELD_NUMBER: int STATUS_FIELD_NUMBER: int - status: int = ... - @property def info(self) -> PbC2CMsgWithDrawReq.MsgInfo: ... - + status: int def __init__(self, *, - info : Optional[PbC2CMsgWithDrawReq.MsgInfo] = ..., - status : Optional[int] = ..., + info: Optional[PbC2CMsgWithDrawReq.MsgInfo] = ..., + status: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"info",b"info",u"status",b"status"]) -> bool: ... - def ClearField(self, field_name: Literal[u"info",b"info",u"status",b"status"]) -> None: ... + def HasField(self, field_name: Literal["info",b"info","status",b"status"]) -> bool: ... + def ClearField(self, field_name: Literal["info",b"info","status",b"status"]) -> None: ... class PbC2CReadedReportReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SYNC_COOKIE_FIELD_NUMBER: int PAIR_INFO_FIELD_NUMBER: int - sync_cookie: bytes = ... - + sync_cookie: bytes @property def pair_info(self) -> RepeatedCompositeFieldContainer[UinPairReadInfo]: ... - def __init__(self, *, - sync_cookie : Optional[bytes] = ..., - pair_info : Optional[Iterable[UinPairReadInfo]] = ..., + sync_cookie: Optional[bytes] = ..., + pair_info: Optional[Iterable[UinPairReadInfo]] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"sync_cookie",b"sync_cookie"]) -> bool: ... - def ClearField(self, field_name: Literal[u"pair_info",b"pair_info",u"sync_cookie",b"sync_cookie"]) -> None: ... + def HasField(self, field_name: Literal["sync_cookie",b"sync_cookie"]) -> bool: ... + def ClearField(self, field_name: Literal["pair_info",b"pair_info","sync_cookie",b"sync_cookie"]) -> None: ... class UinPairReadInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor PEER_UIN_FIELD_NUMBER: int LAST_READ_TIME_FIELD_NUMBER: int CRM_SIG_FIELD_NUMBER: int @@ -553,263 +521,245 @@ class UinPairReadInfo(Message): CPID_FIELD_NUMBER: int AIO_TYPE_FIELD_NUMBER: int TO_TINY_ID_FIELD_NUMBER: int - peer_uin: int = ... - last_read_time: int = ... - crm_sig: bytes = ... - peer_type: int = ... - chat_type: int = ... - cpid: int = ... - aio_type: int = ... - to_tiny_id: int = ... - - def __init__(self, - *, - peer_uin : Optional[int] = ..., - last_read_time : Optional[int] = ..., - crm_sig : Optional[bytes] = ..., - peer_type : Optional[int] = ..., - chat_type : Optional[int] = ..., - cpid : Optional[int] = ..., - aio_type : Optional[int] = ..., - to_tiny_id : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"aio_type",b"aio_type",u"chat_type",b"chat_type",u"cpid",b"cpid",u"crm_sig",b"crm_sig",u"last_read_time",b"last_read_time",u"peer_type",b"peer_type",u"peer_uin",b"peer_uin",u"to_tiny_id",b"to_tiny_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"aio_type",b"aio_type",u"chat_type",b"chat_type",u"cpid",b"cpid",u"crm_sig",b"crm_sig",u"last_read_time",b"last_read_time",u"peer_type",b"peer_type",u"peer_uin",b"peer_uin",u"to_tiny_id",b"to_tiny_id"]) -> None: ... + peer_uin: int + last_read_time: int + crm_sig: bytes + peer_type: int + chat_type: int + cpid: int + aio_type: int + to_tiny_id: int + def __init__(self, + *, + peer_uin: Optional[int] = ..., + last_read_time: Optional[int] = ..., + crm_sig: Optional[bytes] = ..., + peer_type: Optional[int] = ..., + chat_type: Optional[int] = ..., + cpid: Optional[int] = ..., + aio_type: Optional[int] = ..., + to_tiny_id: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["aio_type",b"aio_type","chat_type",b"chat_type","cpid",b"cpid","crm_sig",b"crm_sig","last_read_time",b"last_read_time","peer_type",b"peer_type","peer_uin",b"peer_uin","to_tiny_id",b"to_tiny_id"]) -> bool: ... + def ClearField(self, field_name: Literal["aio_type",b"aio_type","chat_type",b"chat_type","cpid",b"cpid","crm_sig",b"crm_sig","last_read_time",b"last_read_time","peer_type",b"peer_type","peer_uin",b"peer_uin","to_tiny_id",b"to_tiny_id"]) -> None: ... class PbC2CReadedReportResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int SYNC_COOKIE_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - sync_cookie: bytes = ... - + result: int + errmsg: Text + sync_cookie: bytes def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - sync_cookie : Optional[bytes] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + sync_cookie: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"errmsg",b"errmsg",u"result",b"result",u"sync_cookie",b"sync_cookie"]) -> bool: ... - def ClearField(self, field_name: Literal[u"errmsg",b"errmsg",u"result",b"result",u"sync_cookie",b"sync_cookie"]) -> None: ... + def HasField(self, field_name: Literal["errmsg",b"errmsg","result",b"result","sync_cookie",b"sync_cookie"]) -> bool: ... + def ClearField(self, field_name: Literal["errmsg",b"errmsg","result",b"result","sync_cookie",b"sync_cookie"]) -> None: ... class PbC2CUnReadMsgNumReq(Message): - DESCRIPTOR: Descriptor = ... - + DESCRIPTOR: Descriptor def __init__(self, ) -> None: ... class PbC2CUnReadMsgNumResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int NUM_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - num: int = ... - + result: int + errmsg: Text + num: int def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - num : Optional[int] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + num: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"errmsg",b"errmsg",u"num",b"num",u"result",b"result"]) -> bool: ... - def ClearField(self, field_name: Literal[u"errmsg",b"errmsg",u"num",b"num",u"result",b"result"]) -> None: ... + def HasField(self, field_name: Literal["errmsg",b"errmsg","num",b"num","result",b"result"]) -> bool: ... + def ClearField(self, field_name: Literal["errmsg",b"errmsg","num",b"num","result",b"result"]) -> None: ... class PbDelRoamMsgReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor C2C_MSG_FIELD_NUMBER: int GRP_MSG_FIELD_NUMBER: int DIS_MSG_FIELD_NUMBER: int - @property def c2c_msg(self) -> C2CMsg: ... - @property def grp_msg(self) -> GrpMsg: ... - @property def dis_msg(self) -> DisMsg: ... - def __init__(self, *, - c2c_msg : Optional[C2CMsg] = ..., - grp_msg : Optional[GrpMsg] = ..., - dis_msg : Optional[DisMsg] = ..., + c2c_msg: Optional[C2CMsg] = ..., + grp_msg: Optional[GrpMsg] = ..., + dis_msg: Optional[DisMsg] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"c2c_msg",b"c2c_msg",u"dis_msg",b"dis_msg",u"grp_msg",b"grp_msg"]) -> bool: ... - def ClearField(self, field_name: Literal[u"c2c_msg",b"c2c_msg",u"dis_msg",b"dis_msg",u"grp_msg",b"grp_msg"]) -> None: ... + def HasField(self, field_name: Literal["c2c_msg",b"c2c_msg","dis_msg",b"dis_msg","grp_msg",b"grp_msg"]) -> bool: ... + def ClearField(self, field_name: Literal["c2c_msg",b"c2c_msg","dis_msg",b"dis_msg","grp_msg",b"grp_msg"]) -> None: ... class C2CMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FROM_UIN_FIELD_NUMBER: int PEER_UIN_FIELD_NUMBER: int TIME_FIELD_NUMBER: int RANDOM_FIELD_NUMBER: int SEQ_FIELD_NUMBER: int - from_uin: int = ... - peer_uin: int = ... - time: int = ... - random: int = ... - seq: int = ... - + from_uin: int + peer_uin: int + time: int + random: int + seq: int def __init__(self, *, - from_uin : Optional[int] = ..., - peer_uin : Optional[int] = ..., - time : Optional[int] = ..., - random : Optional[int] = ..., - seq : Optional[int] = ..., + from_uin: Optional[int] = ..., + peer_uin: Optional[int] = ..., + time: Optional[int] = ..., + random: Optional[int] = ..., + seq: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"from_uin",b"from_uin",u"peer_uin",b"peer_uin",u"random",b"random",u"seq",b"seq",u"time",b"time"]) -> bool: ... - def ClearField(self, field_name: Literal[u"from_uin",b"from_uin",u"peer_uin",b"peer_uin",u"random",b"random",u"seq",b"seq",u"time",b"time"]) -> None: ... + def HasField(self, field_name: Literal["from_uin",b"from_uin","peer_uin",b"peer_uin","random",b"random","seq",b"seq","time",b"time"]) -> bool: ... + def ClearField(self, field_name: Literal["from_uin",b"from_uin","peer_uin",b"peer_uin","random",b"random","seq",b"seq","time",b"time"]) -> None: ... class DisMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor DISCUSS_UIN_FIELD_NUMBER: int SEQ_FIELD_NUMBER: int - discuss_uin: int = ... - seq: int = ... - + discuss_uin: int + seq: int def __init__(self, *, - discuss_uin : Optional[int] = ..., - seq : Optional[int] = ..., + discuss_uin: Optional[int] = ..., + seq: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"discuss_uin",b"discuss_uin",u"seq",b"seq"]) -> bool: ... - def ClearField(self, field_name: Literal[u"discuss_uin",b"discuss_uin",u"seq",b"seq"]) -> None: ... + def HasField(self, field_name: Literal["discuss_uin",b"discuss_uin","seq",b"seq"]) -> bool: ... + def ClearField(self, field_name: Literal["discuss_uin",b"discuss_uin","seq",b"seq"]) -> None: ... class GrpMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor GROUP_CODE_FIELD_NUMBER: int SEQ_FIELD_NUMBER: int RESV_FLAG_FIELD_NUMBER: int - group_code: int = ... - seq: int = ... - resv_flag: int = ... - + group_code: int + seq: int + resv_flag: int def __init__(self, *, - group_code : Optional[int] = ..., - seq : Optional[int] = ..., - resv_flag : Optional[int] = ..., + group_code: Optional[int] = ..., + seq: Optional[int] = ..., + resv_flag: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"group_code",b"group_code",u"resv_flag",b"resv_flag",u"seq",b"seq"]) -> bool: ... - def ClearField(self, field_name: Literal[u"group_code",b"group_code",u"resv_flag",b"resv_flag",u"seq",b"seq"]) -> None: ... + def HasField(self, field_name: Literal["group_code",b"group_code","resv_flag",b"resv_flag","seq",b"seq"]) -> bool: ... + def ClearField(self, field_name: Literal["group_code",b"group_code","resv_flag",b"resv_flag","seq",b"seq"]) -> None: ... class PbDelRoamMsgResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - + result: int + errmsg: Text def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"errmsg",b"errmsg",u"result",b"result"]) -> bool: ... - def ClearField(self, field_name: Literal[u"errmsg",b"errmsg",u"result",b"result"]) -> None: ... + def HasField(self, field_name: Literal["errmsg",b"errmsg","result",b"result"]) -> bool: ... + def ClearField(self, field_name: Literal["errmsg",b"errmsg","result",b"result"]) -> None: ... class PbDeleteMsgReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor class MsgItem(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor FROM_UIN_FIELD_NUMBER: int TO_UIN_FIELD_NUMBER: int TYPE_FIELD_NUMBER: int SEQ_FIELD_NUMBER: int UID_FIELD_NUMBER: int SIG_FIELD_NUMBER: int - from_uin: int = ... - to_uin: int = ... - type: int = ... - seq: int = ... - uid: int = ... - sig: bytes = ... - + from_uin: int + to_uin: int + type: int + seq: int + uid: int + sig: bytes def __init__(self, *, - from_uin : Optional[int] = ..., - to_uin : Optional[int] = ..., - type : Optional[int] = ..., - seq : Optional[int] = ..., - uid : Optional[int] = ..., - sig : Optional[bytes] = ..., + from_uin: Optional[int] = ..., + to_uin: Optional[int] = ..., + type: Optional[int] = ..., + seq: Optional[int] = ..., + uid: Optional[int] = ..., + sig: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"from_uin",b"from_uin",u"seq",b"seq",u"sig",b"sig",u"to_uin",b"to_uin",u"type",b"type",u"uid",b"uid"]) -> bool: ... - def ClearField(self, field_name: Literal[u"from_uin",b"from_uin",u"seq",b"seq",u"sig",b"sig",u"to_uin",b"to_uin",u"type",b"type",u"uid",b"uid"]) -> None: ... + def HasField(self, field_name: Literal["from_uin",b"from_uin","seq",b"seq","sig",b"sig","to_uin",b"to_uin","type",b"type","uid",b"uid"]) -> bool: ... + def ClearField(self, field_name: Literal["from_uin",b"from_uin","seq",b"seq","sig",b"sig","to_uin",b"to_uin","type",b"type","uid",b"uid"]) -> None: ... MSG_ITEMS_FIELD_NUMBER: int - @property def msg_items(self) -> RepeatedCompositeFieldContainer[PbDeleteMsgReq.MsgItem]: ... - def __init__(self, *, - msg_items : Optional[Iterable[PbDeleteMsgReq.MsgItem]] = ..., + msg_items: Optional[Iterable[PbDeleteMsgReq.MsgItem]] = ..., ) -> None: ... - def ClearField(self, field_name: Literal[u"msg_items",b"msg_items"]) -> None: ... + def ClearField(self, field_name: Literal["msg_items",b"msg_items"]) -> None: ... class PbDeleteMsgResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - + result: int + errmsg: Text def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"errmsg",b"errmsg",u"result",b"result"]) -> bool: ... - def ClearField(self, field_name: Literal[u"errmsg",b"errmsg",u"result",b"result"]) -> None: ... + def HasField(self, field_name: Literal["errmsg",b"errmsg","result",b"result"]) -> bool: ... + def ClearField(self, field_name: Literal["errmsg",b"errmsg","result",b"result"]) -> None: ... class PbDiscussReadedReportReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor CONF_UIN_FIELD_NUMBER: int LAST_READ_SEQ_FIELD_NUMBER: int - conf_uin: int = ... - last_read_seq: int = ... - + conf_uin: int + last_read_seq: int def __init__(self, *, - conf_uin : Optional[int] = ..., - last_read_seq : Optional[int] = ..., + conf_uin: Optional[int] = ..., + last_read_seq: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"conf_uin",b"conf_uin",u"last_read_seq",b"last_read_seq"]) -> bool: ... - def ClearField(self, field_name: Literal[u"conf_uin",b"conf_uin",u"last_read_seq",b"last_read_seq"]) -> None: ... + def HasField(self, field_name: Literal["conf_uin",b"conf_uin","last_read_seq",b"last_read_seq"]) -> bool: ... + def ClearField(self, field_name: Literal["conf_uin",b"conf_uin","last_read_seq",b"last_read_seq"]) -> None: ... class PbDiscussReadedReportResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int CONF_UIN_FIELD_NUMBER: int MEMBER_SEQ_FIELD_NUMBER: int CONF_SEQ_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - conf_uin: int = ... - member_seq: int = ... - conf_seq: int = ... - + result: int + errmsg: Text + conf_uin: int + member_seq: int + conf_seq: int def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - conf_uin : Optional[int] = ..., - member_seq : Optional[int] = ..., - conf_seq : Optional[int] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + conf_uin: Optional[int] = ..., + member_seq: Optional[int] = ..., + conf_seq: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"conf_seq",b"conf_seq",u"conf_uin",b"conf_uin",u"errmsg",b"errmsg",u"member_seq",b"member_seq",u"result",b"result"]) -> bool: ... - def ClearField(self, field_name: Literal[u"conf_seq",b"conf_seq",u"conf_uin",b"conf_uin",u"errmsg",b"errmsg",u"member_seq",b"member_seq",u"result",b"result"]) -> None: ... + def HasField(self, field_name: Literal["conf_seq",b"conf_seq","conf_uin",b"conf_uin","errmsg",b"errmsg","member_seq",b"member_seq","result",b"result"]) -> bool: ... + def ClearField(self, field_name: Literal["conf_seq",b"conf_seq","conf_uin",b"conf_uin","errmsg",b"errmsg","member_seq",b"member_seq","result",b"result"]) -> None: ... class PbGetDiscussMsgReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor DISCUSS_UIN_FIELD_NUMBER: int END_SEQ_FIELD_NUMBER: int BEGIN_SEQ_FIELD_NUMBER: int @@ -817,29 +767,28 @@ class PbGetDiscussMsgReq(Message): DISCUSS_INFO_SEQ_FIELD_NUMBER: int FILTER_FIELD_NUMBER: int MEMBER_SEQ_FIELD_NUMBER: int - discuss_uin: int = ... - end_seq: int = ... - begin_seq: int = ... - last_get_time: int = ... - discuss_info_seq: int = ... - filter: int = ... - member_seq: int = ... - - def __init__(self, - *, - discuss_uin : Optional[int] = ..., - end_seq : Optional[int] = ..., - begin_seq : Optional[int] = ..., - last_get_time : Optional[int] = ..., - discuss_info_seq : Optional[int] = ..., - filter : Optional[int] = ..., - member_seq : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"begin_seq",b"begin_seq",u"discuss_info_seq",b"discuss_info_seq",u"discuss_uin",b"discuss_uin",u"end_seq",b"end_seq",u"filter",b"filter",u"last_get_time",b"last_get_time",u"member_seq",b"member_seq"]) -> bool: ... - def ClearField(self, field_name: Literal[u"begin_seq",b"begin_seq",u"discuss_info_seq",b"discuss_info_seq",u"discuss_uin",b"discuss_uin",u"end_seq",b"end_seq",u"filter",b"filter",u"last_get_time",b"last_get_time",u"member_seq",b"member_seq"]) -> None: ... + discuss_uin: int + end_seq: int + begin_seq: int + last_get_time: int + discuss_info_seq: int + filter: int + member_seq: int + def __init__(self, + *, + discuss_uin: Optional[int] = ..., + end_seq: Optional[int] = ..., + begin_seq: Optional[int] = ..., + last_get_time: Optional[int] = ..., + discuss_info_seq: Optional[int] = ..., + filter: Optional[int] = ..., + member_seq: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["begin_seq",b"begin_seq","discuss_info_seq",b"discuss_info_seq","discuss_uin",b"discuss_uin","end_seq",b"end_seq","filter",b"filter","last_get_time",b"last_get_time","member_seq",b"member_seq"]) -> bool: ... + def ClearField(self, field_name: Literal["begin_seq",b"begin_seq","discuss_info_seq",b"discuss_info_seq","discuss_uin",b"discuss_uin","end_seq",b"end_seq","filter",b"filter","last_get_time",b"last_get_time","member_seq",b"member_seq"]) -> None: ... class PbGetDiscussMsgResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int DISCUSS_UIN_FIELD_NUMBER: int @@ -848,33 +797,31 @@ class PbGetDiscussMsgResp(Message): MSG_FIELD_NUMBER: int LAST_GET_TIME_FIELD_NUMBER: int DISCUSS_INFO_SEQ_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - discuss_uin: int = ... - return_end_seq: int = ... - return_begin_seq: int = ... - last_get_time: int = ... - discuss_info_seq: int = ... - + result: int + errmsg: Text + discuss_uin: int + return_end_seq: int + return_begin_seq: int @property def msg(self) -> RepeatedCompositeFieldContainer[Msg]: ... - + last_get_time: int + discuss_info_seq: int def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - discuss_uin : Optional[int] = ..., - return_end_seq : Optional[int] = ..., - return_begin_seq : Optional[int] = ..., - msg : Optional[Iterable[Msg]] = ..., - last_get_time : Optional[int] = ..., - discuss_info_seq : Optional[int] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + discuss_uin: Optional[int] = ..., + return_end_seq: Optional[int] = ..., + return_begin_seq: Optional[int] = ..., + msg: Optional[Iterable[Msg]] = ..., + last_get_time: Optional[int] = ..., + discuss_info_seq: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"discuss_info_seq",b"discuss_info_seq",u"discuss_uin",b"discuss_uin",u"errmsg",b"errmsg",u"last_get_time",b"last_get_time",u"result",b"result",u"return_begin_seq",b"return_begin_seq",u"return_end_seq",b"return_end_seq"]) -> bool: ... - def ClearField(self, field_name: Literal[u"discuss_info_seq",b"discuss_info_seq",u"discuss_uin",b"discuss_uin",u"errmsg",b"errmsg",u"last_get_time",b"last_get_time",u"msg",b"msg",u"result",b"result",u"return_begin_seq",b"return_begin_seq",u"return_end_seq",b"return_end_seq"]) -> None: ... + def HasField(self, field_name: Literal["discuss_info_seq",b"discuss_info_seq","discuss_uin",b"discuss_uin","errmsg",b"errmsg","last_get_time",b"last_get_time","result",b"result","return_begin_seq",b"return_begin_seq","return_end_seq",b"return_end_seq"]) -> bool: ... + def ClearField(self, field_name: Literal["discuss_info_seq",b"discuss_info_seq","discuss_uin",b"discuss_uin","errmsg",b"errmsg","last_get_time",b"last_get_time","msg",b"msg","result",b"result","return_begin_seq",b"return_begin_seq","return_end_seq",b"return_end_seq"]) -> None: ... class PbGetGroupMsgReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor GROUP_CODE_FIELD_NUMBER: int BEGIN_SEQ_FIELD_NUMBER: int END_SEQ_FIELD_NUMBER: int @@ -883,60 +830,57 @@ class PbGetGroupMsgReq(Message): PUBLIC_GROUP_FIELD_NUMBER: int SHIELD_FLAG_FIELD_NUMBER: int SAVE_TRAFFIC_FLAG_FIELD_NUMBER: int - group_code: int = ... - begin_seq: int = ... - end_seq: int = ... - filter: int = ... - member_seq: int = ... - public_group: bool = ... - shield_flag: int = ... - save_traffic_flag: int = ... - - def __init__(self, - *, - group_code : Optional[int] = ..., - begin_seq : Optional[int] = ..., - end_seq : Optional[int] = ..., - filter : Optional[int] = ..., - member_seq : Optional[int] = ..., - public_group : Optional[bool] = ..., - shield_flag : Optional[int] = ..., - save_traffic_flag : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"begin_seq",b"begin_seq",u"end_seq",b"end_seq",u"filter",b"filter",u"group_code",b"group_code",u"member_seq",b"member_seq",u"public_group",b"public_group",u"save_traffic_flag",b"save_traffic_flag",u"shield_flag",b"shield_flag"]) -> bool: ... - def ClearField(self, field_name: Literal[u"begin_seq",b"begin_seq",u"end_seq",b"end_seq",u"filter",b"filter",u"group_code",b"group_code",u"member_seq",b"member_seq",u"public_group",b"public_group",u"save_traffic_flag",b"save_traffic_flag",u"shield_flag",b"shield_flag"]) -> None: ... + group_code: int + begin_seq: int + end_seq: int + filter: int + member_seq: int + public_group: bool + shield_flag: int + save_traffic_flag: int + def __init__(self, + *, + group_code: Optional[int] = ..., + begin_seq: Optional[int] = ..., + end_seq: Optional[int] = ..., + filter: Optional[int] = ..., + member_seq: Optional[int] = ..., + public_group: Optional[bool] = ..., + shield_flag: Optional[int] = ..., + save_traffic_flag: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["begin_seq",b"begin_seq","end_seq",b"end_seq","filter",b"filter","group_code",b"group_code","member_seq",b"member_seq","public_group",b"public_group","save_traffic_flag",b"save_traffic_flag","shield_flag",b"shield_flag"]) -> bool: ... + def ClearField(self, field_name: Literal["begin_seq",b"begin_seq","end_seq",b"end_seq","filter",b"filter","group_code",b"group_code","member_seq",b"member_seq","public_group",b"public_group","save_traffic_flag",b"save_traffic_flag","shield_flag",b"shield_flag"]) -> None: ... class PbGetGroupMsgResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int GROUP_CODE_FIELD_NUMBER: int RETURN_BEGIN_SEQ_FIELD_NUMBER: int RETURN_END_SEQ_FIELD_NUMBER: int MSG_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - group_code: int = ... - return_begin_seq: int = ... - return_end_seq: int = ... - + result: int + errmsg: Text + group_code: int + return_begin_seq: int + return_end_seq: int @property def msg(self) -> RepeatedCompositeFieldContainer[Msg]: ... - def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - group_code : Optional[int] = ..., - return_begin_seq : Optional[int] = ..., - return_end_seq : Optional[int] = ..., - msg : Optional[Iterable[Msg]] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + group_code: Optional[int] = ..., + return_begin_seq: Optional[int] = ..., + return_end_seq: Optional[int] = ..., + msg: Optional[Iterable[Msg]] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"errmsg",b"errmsg",u"group_code",b"group_code",u"result",b"result",u"return_begin_seq",b"return_begin_seq",u"return_end_seq",b"return_end_seq"]) -> bool: ... - def ClearField(self, field_name: Literal[u"errmsg",b"errmsg",u"group_code",b"group_code",u"msg",b"msg",u"result",b"result",u"return_begin_seq",b"return_begin_seq",u"return_end_seq",b"return_end_seq"]) -> None: ... + def HasField(self, field_name: Literal["errmsg",b"errmsg","group_code",b"group_code","result",b"result","return_begin_seq",b"return_begin_seq","return_end_seq",b"return_end_seq"]) -> bool: ... + def ClearField(self, field_name: Literal["errmsg",b"errmsg","group_code",b"group_code","msg",b"msg","result",b"result","return_begin_seq",b"return_begin_seq","return_end_seq",b"return_end_seq"]) -> None: ... class PbGetMsgReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SYNC_FLAG_FIELD_NUMBER: int SYNC_COOKIE_FIELD_NUMBER: int RAMBLE_FLAG_FIELD_NUMBER: int @@ -949,39 +893,38 @@ class PbGetMsgReq(Message): PUBACCOUNT_COOKIE_FIELD_NUMBER: int CTRL_BUF_FIELD_NUMBER: int SERVER_BUF_FIELD_NUMBER: int - sync_flag: int = ... - sync_cookie: bytes = ... - ramble_flag: int = ... - latest_ramble_number: int = ... - other_ramble_number: int = ... - online_sync_flag: int = ... - context_flag: int = ... - whisper_session_id: int = ... - req_type: int = ... - pubaccount_cookie: bytes = ... - ctrl_buf: bytes = ... - server_buf: bytes = ... - - def __init__(self, - *, - sync_flag : Optional[int] = ..., - sync_cookie : Optional[bytes] = ..., - ramble_flag : Optional[int] = ..., - latest_ramble_number : Optional[int] = ..., - other_ramble_number : Optional[int] = ..., - online_sync_flag : Optional[int] = ..., - context_flag : Optional[int] = ..., - whisper_session_id : Optional[int] = ..., - req_type : Optional[int] = ..., - pubaccount_cookie : Optional[bytes] = ..., - ctrl_buf : Optional[bytes] = ..., - server_buf : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"context_flag",b"context_flag",u"ctrl_buf",b"ctrl_buf",u"latest_ramble_number",b"latest_ramble_number",u"online_sync_flag",b"online_sync_flag",u"other_ramble_number",b"other_ramble_number",u"pubaccount_cookie",b"pubaccount_cookie",u"ramble_flag",b"ramble_flag",u"req_type",b"req_type",u"server_buf",b"server_buf",u"sync_cookie",b"sync_cookie",u"sync_flag",b"sync_flag",u"whisper_session_id",b"whisper_session_id"]) -> bool: ... - def ClearField(self, field_name: Literal[u"context_flag",b"context_flag",u"ctrl_buf",b"ctrl_buf",u"latest_ramble_number",b"latest_ramble_number",u"online_sync_flag",b"online_sync_flag",u"other_ramble_number",b"other_ramble_number",u"pubaccount_cookie",b"pubaccount_cookie",u"ramble_flag",b"ramble_flag",u"req_type",b"req_type",u"server_buf",b"server_buf",u"sync_cookie",b"sync_cookie",u"sync_flag",b"sync_flag",u"whisper_session_id",b"whisper_session_id"]) -> None: ... + sync_flag: int + sync_cookie: bytes + ramble_flag: int + latest_ramble_number: int + other_ramble_number: int + online_sync_flag: int + context_flag: int + whisper_session_id: int + req_type: int + pubaccount_cookie: bytes + ctrl_buf: bytes + server_buf: bytes + def __init__(self, + *, + sync_flag: Optional[int] = ..., + sync_cookie: Optional[bytes] = ..., + ramble_flag: Optional[int] = ..., + latest_ramble_number: Optional[int] = ..., + other_ramble_number: Optional[int] = ..., + online_sync_flag: Optional[int] = ..., + context_flag: Optional[int] = ..., + whisper_session_id: Optional[int] = ..., + req_type: Optional[int] = ..., + pubaccount_cookie: Optional[bytes] = ..., + ctrl_buf: Optional[bytes] = ..., + server_buf: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["context_flag",b"context_flag","ctrl_buf",b"ctrl_buf","latest_ramble_number",b"latest_ramble_number","online_sync_flag",b"online_sync_flag","other_ramble_number",b"other_ramble_number","pubaccount_cookie",b"pubaccount_cookie","ramble_flag",b"ramble_flag","req_type",b"req_type","server_buf",b"server_buf","sync_cookie",b"sync_cookie","sync_flag",b"sync_flag","whisper_session_id",b"whisper_session_id"]) -> bool: ... + def ClearField(self, field_name: Literal["context_flag",b"context_flag","ctrl_buf",b"ctrl_buf","latest_ramble_number",b"latest_ramble_number","online_sync_flag",b"online_sync_flag","other_ramble_number",b"other_ramble_number","pubaccount_cookie",b"pubaccount_cookie","ramble_flag",b"ramble_flag","req_type",b"req_type","server_buf",b"server_buf","sync_cookie",b"sync_cookie","sync_flag",b"sync_flag","whisper_session_id",b"whisper_session_id"]) -> None: ... class PbGetMsgResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int SYNC_COOKIE_FIELD_NUMBER: int @@ -992,58 +935,55 @@ class PbGetMsgResp(Message): PUBACCOUNT_COOKIE_FIELD_NUMBER: int IS_PARTIAL_SYNC_FIELD_NUMBER: int CTRL_BUF_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - sync_cookie: bytes = ... - sync_flag: int = ... - bind_uin: int = ... - rsp_type: int = ... - pubaccount_cookie: bytes = ... - is_partial_sync: bool = ... - ctrl_buf: bytes = ... - + result: int + errmsg: Text + sync_cookie: bytes + sync_flag: int @property def uin_pair_msgs(self) -> RepeatedCompositeFieldContainer[UinPairMsg]: ... - - def __init__(self, - *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - sync_cookie : Optional[bytes] = ..., - sync_flag : Optional[int] = ..., - uin_pair_msgs : Optional[Iterable[UinPairMsg]] = ..., - bind_uin : Optional[int] = ..., - rsp_type : Optional[int] = ..., - pubaccount_cookie : Optional[bytes] = ..., - is_partial_sync : Optional[bool] = ..., - ctrl_buf : Optional[bytes] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"bind_uin",b"bind_uin",u"ctrl_buf",b"ctrl_buf",u"errmsg",b"errmsg",u"is_partial_sync",b"is_partial_sync",u"pubaccount_cookie",b"pubaccount_cookie",u"result",b"result",u"rsp_type",b"rsp_type",u"sync_cookie",b"sync_cookie",u"sync_flag",b"sync_flag"]) -> bool: ... - def ClearField(self, field_name: Literal[u"bind_uin",b"bind_uin",u"ctrl_buf",b"ctrl_buf",u"errmsg",b"errmsg",u"is_partial_sync",b"is_partial_sync",u"pubaccount_cookie",b"pubaccount_cookie",u"result",b"result",u"rsp_type",b"rsp_type",u"sync_cookie",b"sync_cookie",u"sync_flag",b"sync_flag",u"uin_pair_msgs",b"uin_pair_msgs"]) -> None: ... + bind_uin: int + rsp_type: int + pubaccount_cookie: bytes + is_partial_sync: bool + ctrl_buf: bytes + def __init__(self, + *, + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + sync_cookie: Optional[bytes] = ..., + sync_flag: Optional[int] = ..., + uin_pair_msgs: Optional[Iterable[UinPairMsg]] = ..., + bind_uin: Optional[int] = ..., + rsp_type: Optional[int] = ..., + pubaccount_cookie: Optional[bytes] = ..., + is_partial_sync: Optional[bool] = ..., + ctrl_buf: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["bind_uin",b"bind_uin","ctrl_buf",b"ctrl_buf","errmsg",b"errmsg","is_partial_sync",b"is_partial_sync","pubaccount_cookie",b"pubaccount_cookie","result",b"result","rsp_type",b"rsp_type","sync_cookie",b"sync_cookie","sync_flag",b"sync_flag"]) -> bool: ... + def ClearField(self, field_name: Literal["bind_uin",b"bind_uin","ctrl_buf",b"ctrl_buf","errmsg",b"errmsg","is_partial_sync",b"is_partial_sync","pubaccount_cookie",b"pubaccount_cookie","result",b"result","rsp_type",b"rsp_type","sync_cookie",b"sync_cookie","sync_flag",b"sync_flag","uin_pair_msgs",b"uin_pair_msgs"]) -> None: ... class PbGetOneDayRoamMsgReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor PEER_UIN_FIELD_NUMBER: int LAST_MSGTIME_FIELD_NUMBER: int RANDOM_FIELD_NUMBER: int READ_CNT_FIELD_NUMBER: int - peer_uin: int = ... - last_msgtime: int = ... - random: int = ... - read_cnt: int = ... - + peer_uin: int + last_msgtime: int + random: int + read_cnt: int def __init__(self, *, - peer_uin : Optional[int] = ..., - last_msgtime : Optional[int] = ..., - random : Optional[int] = ..., - read_cnt : Optional[int] = ..., + peer_uin: Optional[int] = ..., + last_msgtime: Optional[int] = ..., + random: Optional[int] = ..., + read_cnt: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"last_msgtime",b"last_msgtime",u"peer_uin",b"peer_uin",u"random",b"random",u"read_cnt",b"read_cnt"]) -> bool: ... - def ClearField(self, field_name: Literal[u"last_msgtime",b"last_msgtime",u"peer_uin",b"peer_uin",u"random",b"random",u"read_cnt",b"read_cnt"]) -> None: ... + def HasField(self, field_name: Literal["last_msgtime",b"last_msgtime","peer_uin",b"peer_uin","random",b"random","read_cnt",b"read_cnt"]) -> bool: ... + def ClearField(self, field_name: Literal["last_msgtime",b"last_msgtime","peer_uin",b"peer_uin","random",b"random","read_cnt",b"read_cnt"]) -> None: ... class PbGetOneDayRoamMsgResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int PEER_UIN_FIELD_NUMBER: int @@ -1051,31 +991,29 @@ class PbGetOneDayRoamMsgResp(Message): RANDOM_FIELD_NUMBER: int MSG_FIELD_NUMBER: int ISCOMPLETE_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - peer_uin: int = ... - last_msgtime: int = ... - random: int = ... - iscomplete: int = ... - + result: int + errmsg: Text + peer_uin: int + last_msgtime: int + random: int @property def msg(self) -> RepeatedCompositeFieldContainer[Msg]: ... - + iscomplete: int def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - peer_uin : Optional[int] = ..., - last_msgtime : Optional[int] = ..., - random : Optional[int] = ..., - msg : Optional[Iterable[Msg]] = ..., - iscomplete : Optional[int] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + peer_uin: Optional[int] = ..., + last_msgtime: Optional[int] = ..., + random: Optional[int] = ..., + msg: Optional[Iterable[Msg]] = ..., + iscomplete: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"errmsg",b"errmsg",u"iscomplete",b"iscomplete",u"last_msgtime",b"last_msgtime",u"peer_uin",b"peer_uin",u"random",b"random",u"result",b"result"]) -> bool: ... - def ClearField(self, field_name: Literal[u"errmsg",b"errmsg",u"iscomplete",b"iscomplete",u"last_msgtime",b"last_msgtime",u"msg",b"msg",u"peer_uin",b"peer_uin",u"random",b"random",u"result",b"result"]) -> None: ... + def HasField(self, field_name: Literal["errmsg",b"errmsg","iscomplete",b"iscomplete","last_msgtime",b"last_msgtime","peer_uin",b"peer_uin","random",b"random","result",b"result"]) -> bool: ... + def ClearField(self, field_name: Literal["errmsg",b"errmsg","iscomplete",b"iscomplete","last_msgtime",b"last_msgtime","msg",b"msg","peer_uin",b"peer_uin","random",b"random","result",b"result"]) -> None: ... class PbGetRoamMsgReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor PEER_UIN_FIELD_NUMBER: int LAST_MSGTIME_FIELD_NUMBER: int RANDOM_FIELD_NUMBER: int @@ -1086,35 +1024,34 @@ class PbGetRoamMsgReq(Message): SUBCMD_FIELD_NUMBER: int BEGIN_MSGTIME_FIELD_NUMBER: int REQ_TYPE_FIELD_NUMBER: int - peer_uin: int = ... - last_msgtime: int = ... - random: int = ... - read_cnt: int = ... - check_pwd: int = ... - sig: bytes = ... - pwd: bytes = ... - subcmd: int = ... - begin_msgtime: int = ... - req_type: int = ... - - def __init__(self, - *, - peer_uin : Optional[int] = ..., - last_msgtime : Optional[int] = ..., - random : Optional[int] = ..., - read_cnt : Optional[int] = ..., - check_pwd : Optional[int] = ..., - sig : Optional[bytes] = ..., - pwd : Optional[bytes] = ..., - subcmd : Optional[int] = ..., - begin_msgtime : Optional[int] = ..., - req_type : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"begin_msgtime",b"begin_msgtime",u"check_pwd",b"check_pwd",u"last_msgtime",b"last_msgtime",u"peer_uin",b"peer_uin",u"pwd",b"pwd",u"random",b"random",u"read_cnt",b"read_cnt",u"req_type",b"req_type",u"sig",b"sig",u"subcmd",b"subcmd"]) -> bool: ... - def ClearField(self, field_name: Literal[u"begin_msgtime",b"begin_msgtime",u"check_pwd",b"check_pwd",u"last_msgtime",b"last_msgtime",u"peer_uin",b"peer_uin",u"pwd",b"pwd",u"random",b"random",u"read_cnt",b"read_cnt",u"req_type",b"req_type",u"sig",b"sig",u"subcmd",b"subcmd"]) -> None: ... + peer_uin: int + last_msgtime: int + random: int + read_cnt: int + check_pwd: int + sig: bytes + pwd: bytes + subcmd: int + begin_msgtime: int + req_type: int + def __init__(self, + *, + peer_uin: Optional[int] = ..., + last_msgtime: Optional[int] = ..., + random: Optional[int] = ..., + read_cnt: Optional[int] = ..., + check_pwd: Optional[int] = ..., + sig: Optional[bytes] = ..., + pwd: Optional[bytes] = ..., + subcmd: Optional[int] = ..., + begin_msgtime: Optional[int] = ..., + req_type: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["begin_msgtime",b"begin_msgtime","check_pwd",b"check_pwd","last_msgtime",b"last_msgtime","peer_uin",b"peer_uin","pwd",b"pwd","random",b"random","read_cnt",b"read_cnt","req_type",b"req_type","sig",b"sig","subcmd",b"subcmd"]) -> bool: ... + def ClearField(self, field_name: Literal["begin_msgtime",b"begin_msgtime","check_pwd",b"check_pwd","last_msgtime",b"last_msgtime","peer_uin",b"peer_uin","pwd",b"pwd","random",b"random","read_cnt",b"read_cnt","req_type",b"req_type","sig",b"sig","subcmd",b"subcmd"]) -> None: ... class PbGetRoamMsgResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int PEER_UIN_FIELD_NUMBER: int @@ -1122,78 +1059,73 @@ class PbGetRoamMsgResp(Message): RANDOM_FIELD_NUMBER: int MSG_FIELD_NUMBER: int SIG_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - peer_uin: int = ... - last_msgtime: int = ... - random: int = ... - sig: bytes = ... - + result: int + errmsg: Text + peer_uin: int + last_msgtime: int + random: int @property def msg(self) -> RepeatedCompositeFieldContainer[Msg]: ... - + sig: bytes def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - peer_uin : Optional[int] = ..., - last_msgtime : Optional[int] = ..., - random : Optional[int] = ..., - msg : Optional[Iterable[Msg]] = ..., - sig : Optional[bytes] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + peer_uin: Optional[int] = ..., + last_msgtime: Optional[int] = ..., + random: Optional[int] = ..., + msg: Optional[Iterable[Msg]] = ..., + sig: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"errmsg",b"errmsg",u"last_msgtime",b"last_msgtime",u"peer_uin",b"peer_uin",u"random",b"random",u"result",b"result",u"sig",b"sig"]) -> bool: ... - def ClearField(self, field_name: Literal[u"errmsg",b"errmsg",u"last_msgtime",b"last_msgtime",u"msg",b"msg",u"peer_uin",b"peer_uin",u"random",b"random",u"result",b"result",u"sig",b"sig"]) -> None: ... + def HasField(self, field_name: Literal["errmsg",b"errmsg","last_msgtime",b"last_msgtime","peer_uin",b"peer_uin","random",b"random","result",b"result","sig",b"sig"]) -> bool: ... + def ClearField(self, field_name: Literal["errmsg",b"errmsg","last_msgtime",b"last_msgtime","msg",b"msg","peer_uin",b"peer_uin","random",b"random","result",b"result","sig",b"sig"]) -> None: ... class PbGroupMsgWithDrawReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SUB_CMD_FIELD_NUMBER: int GROUP_TYPE_FIELD_NUMBER: int GROUP_CODE_FIELD_NUMBER: int LIST_FIELD_NUMBER: int USERDEF_FIELD_NUMBER: int - sub_cmd: int = ... - group_type: int = ... - group_code: int = ... - userdef: bytes = ... - + sub_cmd: int + group_type: int + group_code: int @property def list(self) -> RepeatedCompositeFieldContainer[MessageInfo]: ... - + userdef: bytes def __init__(self, *, - sub_cmd : Optional[int] = ..., - group_type : Optional[int] = ..., - group_code : Optional[int] = ..., - list : Optional[Iterable[MessageInfo]] = ..., - userdef : Optional[bytes] = ..., + sub_cmd: Optional[int] = ..., + group_type: Optional[int] = ..., + group_code: Optional[int] = ..., + list: Optional[Iterable[MessageInfo]] = ..., + userdef: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"group_code",b"group_code",u"group_type",b"group_type",u"sub_cmd",b"sub_cmd",u"userdef",b"userdef"]) -> bool: ... - def ClearField(self, field_name: Literal[u"group_code",b"group_code",u"group_type",b"group_type",u"list",b"list",u"sub_cmd",b"sub_cmd",u"userdef",b"userdef"]) -> None: ... + def HasField(self, field_name: Literal["group_code",b"group_code","group_type",b"group_type","sub_cmd",b"sub_cmd","userdef",b"userdef"]) -> bool: ... + def ClearField(self, field_name: Literal["group_code",b"group_code","group_type",b"group_type","list",b"list","sub_cmd",b"sub_cmd","userdef",b"userdef"]) -> None: ... class MessageInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor MSG_SEQ_FIELD_NUMBER: int MSG_RANDOM_FIELD_NUMBER: int MSG_TYPE_FIELD_NUMBER: int RESV_FLAG_FIELD_NUMBER: int - msg_seq: int = ... - msg_random: int = ... - msg_type: int = ... - resv_flag: int = ... - + msg_seq: int + msg_random: int + msg_type: int + resv_flag: int def __init__(self, *, - msg_seq : Optional[int] = ..., - msg_random : Optional[int] = ..., - msg_type : Optional[int] = ..., - resv_flag : Optional[int] = ..., + msg_seq: Optional[int] = ..., + msg_random: Optional[int] = ..., + msg_type: Optional[int] = ..., + resv_flag: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"msg_random",b"msg_random",u"msg_seq",b"msg_seq",u"msg_type",b"msg_type",u"resv_flag",b"resv_flag"]) -> bool: ... - def ClearField(self, field_name: Literal[u"msg_random",b"msg_random",u"msg_seq",b"msg_seq",u"msg_type",b"msg_type",u"resv_flag",b"resv_flag"]) -> None: ... + def HasField(self, field_name: Literal["msg_random",b"msg_random","msg_seq",b"msg_seq","msg_type",b"msg_type","resv_flag",b"resv_flag"]) -> bool: ... + def ClearField(self, field_name: Literal["msg_random",b"msg_random","msg_seq",b"msg_seq","msg_type",b"msg_type","resv_flag",b"resv_flag"]) -> None: ... class PbGroupMsgWithDrawResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int SUB_CMD_FIELD_NUMBER: int @@ -1202,380 +1134,342 @@ class PbGroupMsgWithDrawResp(Message): FAILED_MSG_LIST_FIELD_NUMBER: int USERDEF_FIELD_NUMBER: int WORDING_INFO_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - sub_cmd: int = ... - group_type: int = ... - group_code: int = ... - userdef: bytes = ... - + result: int + errmsg: Text + sub_cmd: int + group_type: int + group_code: int @property def failed_msg_list(self) -> RepeatedCompositeFieldContainer[MessageResult]: ... - + userdef: bytes @property def wording_info(self) -> WithDrawWordingInfo: ... - def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - sub_cmd : Optional[int] = ..., - group_type : Optional[int] = ..., - group_code : Optional[int] = ..., - failed_msg_list : Optional[Iterable[MessageResult]] = ..., - userdef : Optional[bytes] = ..., - wording_info : Optional[WithDrawWordingInfo] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + sub_cmd: Optional[int] = ..., + group_type: Optional[int] = ..., + group_code: Optional[int] = ..., + failed_msg_list: Optional[Iterable[MessageResult]] = ..., + userdef: Optional[bytes] = ..., + wording_info: Optional[WithDrawWordingInfo] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"errmsg",b"errmsg",u"group_code",b"group_code",u"group_type",b"group_type",u"result",b"result",u"sub_cmd",b"sub_cmd",u"userdef",b"userdef",u"wording_info",b"wording_info"]) -> bool: ... - def ClearField(self, field_name: Literal[u"errmsg",b"errmsg",u"failed_msg_list",b"failed_msg_list",u"group_code",b"group_code",u"group_type",b"group_type",u"result",b"result",u"sub_cmd",b"sub_cmd",u"userdef",b"userdef",u"wording_info",b"wording_info"]) -> None: ... + def HasField(self, field_name: Literal["errmsg",b"errmsg","group_code",b"group_code","group_type",b"group_type","result",b"result","sub_cmd",b"sub_cmd","userdef",b"userdef","wording_info",b"wording_info"]) -> bool: ... + def ClearField(self, field_name: Literal["errmsg",b"errmsg","failed_msg_list",b"failed_msg_list","group_code",b"group_code","group_type",b"group_type","result",b"result","sub_cmd",b"sub_cmd","userdef",b"userdef","wording_info",b"wording_info"]) -> None: ... class MessageResult(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int MSG_SEQ_FIELD_NUMBER: int MSG_TIME_FIELD_NUMBER: int MSG_RANDOM_FIELD_NUMBER: int ERR_MSG_FIELD_NUMBER: int MSG_TYPE_FIELD_NUMBER: int - result: int = ... - msg_seq: int = ... - msg_time: int = ... - msg_random: int = ... - err_msg: bytes = ... - msg_type: int = ... - + result: int + msg_seq: int + msg_time: int + msg_random: int + err_msg: bytes + msg_type: int def __init__(self, *, - result : Optional[int] = ..., - msg_seq : Optional[int] = ..., - msg_time : Optional[int] = ..., - msg_random : Optional[int] = ..., - err_msg : Optional[bytes] = ..., - msg_type : Optional[int] = ..., + result: Optional[int] = ..., + msg_seq: Optional[int] = ..., + msg_time: Optional[int] = ..., + msg_random: Optional[int] = ..., + err_msg: Optional[bytes] = ..., + msg_type: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"err_msg",b"err_msg",u"msg_random",b"msg_random",u"msg_seq",b"msg_seq",u"msg_time",b"msg_time",u"msg_type",b"msg_type",u"result",b"result"]) -> bool: ... - def ClearField(self, field_name: Literal[u"err_msg",b"err_msg",u"msg_random",b"msg_random",u"msg_seq",b"msg_seq",u"msg_time",b"msg_time",u"msg_type",b"msg_type",u"result",b"result"]) -> None: ... + def HasField(self, field_name: Literal["err_msg",b"err_msg","msg_random",b"msg_random","msg_seq",b"msg_seq","msg_time",b"msg_time","msg_type",b"msg_type","result",b"result"]) -> bool: ... + def ClearField(self, field_name: Literal["err_msg",b"err_msg","msg_random",b"msg_random","msg_seq",b"msg_seq","msg_time",b"msg_time","msg_type",b"msg_type","result",b"result"]) -> None: ... class PbGroupReadedReportReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor GROUP_CODE_FIELD_NUMBER: int LAST_READ_SEQ_FIELD_NUMBER: int - group_code: int = ... - last_read_seq: int = ... - + group_code: int + last_read_seq: int def __init__(self, *, - group_code : Optional[int] = ..., - last_read_seq : Optional[int] = ..., + group_code: Optional[int] = ..., + last_read_seq: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"group_code",b"group_code",u"last_read_seq",b"last_read_seq"]) -> bool: ... - def ClearField(self, field_name: Literal[u"group_code",b"group_code",u"last_read_seq",b"last_read_seq"]) -> None: ... + def HasField(self, field_name: Literal["group_code",b"group_code","last_read_seq",b"last_read_seq"]) -> bool: ... + def ClearField(self, field_name: Literal["group_code",b"group_code","last_read_seq",b"last_read_seq"]) -> None: ... class PbGroupReadedReportResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int GROUP_CODE_FIELD_NUMBER: int MEMBER_SEQ_FIELD_NUMBER: int GROUP_MSG_SEQ_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - group_code: int = ... - member_seq: int = ... - group_msg_seq: int = ... - + result: int + errmsg: Text + group_code: int + member_seq: int + group_msg_seq: int def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - group_code : Optional[int] = ..., - member_seq : Optional[int] = ..., - group_msg_seq : Optional[int] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + group_code: Optional[int] = ..., + member_seq: Optional[int] = ..., + group_msg_seq: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"errmsg",b"errmsg",u"group_code",b"group_code",u"group_msg_seq",b"group_msg_seq",u"member_seq",b"member_seq",u"result",b"result"]) -> bool: ... - def ClearField(self, field_name: Literal[u"errmsg",b"errmsg",u"group_code",b"group_code",u"group_msg_seq",b"group_msg_seq",u"member_seq",b"member_seq",u"result",b"result"]) -> None: ... + def HasField(self, field_name: Literal["errmsg",b"errmsg","group_code",b"group_code","group_msg_seq",b"group_msg_seq","member_seq",b"member_seq","result",b"result"]) -> bool: ... + def ClearField(self, field_name: Literal["errmsg",b"errmsg","group_code",b"group_code","group_msg_seq",b"group_msg_seq","member_seq",b"member_seq","result",b"result"]) -> None: ... class PbInputNotifyInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int IME_FIELD_NUMBER: int NOTIFY_FLAG_FIELD_NUMBER: int PB_RESERVE_FIELD_NUMBER: int IOS_PUSH_WORDING_FIELD_NUMBER: int - to_uin: int = ... - ime: int = ... - notify_flag: int = ... - pb_reserve: bytes = ... - ios_push_wording: bytes = ... - + to_uin: int + ime: int + notify_flag: int + pb_reserve: bytes + ios_push_wording: bytes def __init__(self, *, - to_uin : Optional[int] = ..., - ime : Optional[int] = ..., - notify_flag : Optional[int] = ..., - pb_reserve : Optional[bytes] = ..., - ios_push_wording : Optional[bytes] = ..., + to_uin: Optional[int] = ..., + ime: Optional[int] = ..., + notify_flag: Optional[int] = ..., + pb_reserve: Optional[bytes] = ..., + ios_push_wording: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"ime",b"ime",u"ios_push_wording",b"ios_push_wording",u"notify_flag",b"notify_flag",u"pb_reserve",b"pb_reserve",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"ime",b"ime",u"ios_push_wording",b"ios_push_wording",u"notify_flag",b"notify_flag",u"pb_reserve",b"pb_reserve",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["ime",b"ime","ios_push_wording",b"ios_push_wording","notify_flag",b"notify_flag","pb_reserve",b"pb_reserve","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["ime",b"ime","ios_push_wording",b"ios_push_wording","notify_flag",b"notify_flag","pb_reserve",b"pb_reserve","to_uin",b"to_uin"]) -> None: ... class PbMsgReadedReportReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor GRP_READ_REPORT_FIELD_NUMBER: int DIS_READ_REPORT_FIELD_NUMBER: int C2C_READ_REPORT_FIELD_NUMBER: int BIND_UIN_READ_REPORT_FIELD_NUMBER: int - @property def grp_read_report(self) -> RepeatedCompositeFieldContainer[PbGroupReadedReportReq]: ... - @property def dis_read_report(self) -> RepeatedCompositeFieldContainer[PbDiscussReadedReportReq]: ... - @property def c2c_read_report(self) -> PbC2CReadedReportReq: ... - @property def bind_uin_read_report(self) -> PbBindUinMsgReadedConfirmReq: ... - def __init__(self, *, - grp_read_report : Optional[Iterable[PbGroupReadedReportReq]] = ..., - dis_read_report : Optional[Iterable[PbDiscussReadedReportReq]] = ..., - c2c_read_report : Optional[PbC2CReadedReportReq] = ..., - bind_uin_read_report : Optional[PbBindUinMsgReadedConfirmReq] = ..., + grp_read_report: Optional[Iterable[PbGroupReadedReportReq]] = ..., + dis_read_report: Optional[Iterable[PbDiscussReadedReportReq]] = ..., + c2c_read_report: Optional[PbC2CReadedReportReq] = ..., + bind_uin_read_report: Optional[PbBindUinMsgReadedConfirmReq] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"bind_uin_read_report",b"bind_uin_read_report",u"c2c_read_report",b"c2c_read_report"]) -> bool: ... - def ClearField(self, field_name: Literal[u"bind_uin_read_report",b"bind_uin_read_report",u"c2c_read_report",b"c2c_read_report",u"dis_read_report",b"dis_read_report",u"grp_read_report",b"grp_read_report"]) -> None: ... + def HasField(self, field_name: Literal["bind_uin_read_report",b"bind_uin_read_report","c2c_read_report",b"c2c_read_report"]) -> bool: ... + def ClearField(self, field_name: Literal["bind_uin_read_report",b"bind_uin_read_report","c2c_read_report",b"c2c_read_report","dis_read_report",b"dis_read_report","grp_read_report",b"grp_read_report"]) -> None: ... class PbMsgReadedReportResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor GRP_READ_REPORT_FIELD_NUMBER: int DIS_READ_REPORT_FIELD_NUMBER: int C2C_READ_REPORT_FIELD_NUMBER: int BIND_UIN_READ_REPORT_FIELD_NUMBER: int - @property def grp_read_report(self) -> RepeatedCompositeFieldContainer[PbGroupReadedReportResp]: ... - @property def dis_read_report(self) -> RepeatedCompositeFieldContainer[PbDiscussReadedReportResp]: ... - @property def c2c_read_report(self) -> PbC2CReadedReportResp: ... - @property def bind_uin_read_report(self) -> PbBindUinMsgReadedConfirmResp: ... - def __init__(self, *, - grp_read_report : Optional[Iterable[PbGroupReadedReportResp]] = ..., - dis_read_report : Optional[Iterable[PbDiscussReadedReportResp]] = ..., - c2c_read_report : Optional[PbC2CReadedReportResp] = ..., - bind_uin_read_report : Optional[PbBindUinMsgReadedConfirmResp] = ..., + grp_read_report: Optional[Iterable[PbGroupReadedReportResp]] = ..., + dis_read_report: Optional[Iterable[PbDiscussReadedReportResp]] = ..., + c2c_read_report: Optional[PbC2CReadedReportResp] = ..., + bind_uin_read_report: Optional[PbBindUinMsgReadedConfirmResp] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"bind_uin_read_report",b"bind_uin_read_report",u"c2c_read_report",b"c2c_read_report"]) -> bool: ... - def ClearField(self, field_name: Literal[u"bind_uin_read_report",b"bind_uin_read_report",u"c2c_read_report",b"c2c_read_report",u"dis_read_report",b"dis_read_report",u"grp_read_report",b"grp_read_report"]) -> None: ... + def HasField(self, field_name: Literal["bind_uin_read_report",b"bind_uin_read_report","c2c_read_report",b"c2c_read_report"]) -> bool: ... + def ClearField(self, field_name: Literal["bind_uin_read_report",b"bind_uin_read_report","c2c_read_report",b"c2c_read_report","dis_read_report",b"dis_read_report","grp_read_report",b"grp_read_report"]) -> None: ... class PbMsgWithDrawReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor C2C_WITH_DRAW_FIELD_NUMBER: int GROUP_WITH_DRAW_FIELD_NUMBER: int - @property def c2c_with_draw(self) -> RepeatedCompositeFieldContainer[PbC2CMsgWithDrawReq]: ... - @property def group_with_draw(self) -> RepeatedCompositeFieldContainer[PbGroupMsgWithDrawReq]: ... - def __init__(self, *, - c2c_with_draw : Optional[Iterable[PbC2CMsgWithDrawReq]] = ..., - group_with_draw : Optional[Iterable[PbGroupMsgWithDrawReq]] = ..., + c2c_with_draw: Optional[Iterable[PbC2CMsgWithDrawReq]] = ..., + group_with_draw: Optional[Iterable[PbGroupMsgWithDrawReq]] = ..., ) -> None: ... - def ClearField(self, field_name: Literal[u"c2c_with_draw",b"c2c_with_draw",u"group_with_draw",b"group_with_draw"]) -> None: ... + def ClearField(self, field_name: Literal["c2c_with_draw",b"c2c_with_draw","group_with_draw",b"group_with_draw"]) -> None: ... class PbMsgWithDrawResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor C2C_WITH_DRAW_FIELD_NUMBER: int GROUP_WITH_DRAW_FIELD_NUMBER: int - @property def c2c_with_draw(self) -> RepeatedCompositeFieldContainer[PbC2CMsgWithDrawResp]: ... - @property def group_with_draw(self) -> RepeatedCompositeFieldContainer[PbGroupMsgWithDrawResp]: ... - def __init__(self, *, - c2c_with_draw : Optional[Iterable[PbC2CMsgWithDrawResp]] = ..., - group_with_draw : Optional[Iterable[PbGroupMsgWithDrawResp]] = ..., + c2c_with_draw: Optional[Iterable[PbC2CMsgWithDrawResp]] = ..., + group_with_draw: Optional[Iterable[PbGroupMsgWithDrawResp]] = ..., ) -> None: ... - def ClearField(self, field_name: Literal[u"c2c_with_draw",b"c2c_with_draw",u"group_with_draw",b"group_with_draw"]) -> None: ... + def ClearField(self, field_name: Literal["c2c_with_draw",b"c2c_with_draw","group_with_draw",b"group_with_draw"]) -> None: ... class PbPullDiscussMsgSeqReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor DISCUSS_INFO_REQ_FIELD_NUMBER: int - @property def discuss_info_req(self) -> RepeatedCompositeFieldContainer[DiscussInfoReq]: ... - def __init__(self, *, - discuss_info_req : Optional[Iterable[DiscussInfoReq]] = ..., + discuss_info_req: Optional[Iterable[DiscussInfoReq]] = ..., ) -> None: ... - def ClearField(self, field_name: Literal[u"discuss_info_req",b"discuss_info_req"]) -> None: ... + def ClearField(self, field_name: Literal["discuss_info_req",b"discuss_info_req"]) -> None: ... class DiscussInfoReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor CONF_UIN_FIELD_NUMBER: int LAST_SEQ_FIELD_NUMBER: int - conf_uin: int = ... - last_seq: int = ... - + conf_uin: int + last_seq: int def __init__(self, *, - conf_uin : Optional[int] = ..., - last_seq : Optional[int] = ..., + conf_uin: Optional[int] = ..., + last_seq: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"conf_uin",b"conf_uin",u"last_seq",b"last_seq"]) -> bool: ... - def ClearField(self, field_name: Literal[u"conf_uin",b"conf_uin",u"last_seq",b"last_seq"]) -> None: ... + def HasField(self, field_name: Literal["conf_uin",b"conf_uin","last_seq",b"last_seq"]) -> bool: ... + def ClearField(self, field_name: Literal["conf_uin",b"conf_uin","last_seq",b"last_seq"]) -> None: ... class PbPullDiscussMsgSeqResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int DISCUSS_INFO_RESP_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - + result: int + errmsg: Text @property def discuss_info_resp(self) -> RepeatedCompositeFieldContainer[DiscussInfoResp]: ... - def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - discuss_info_resp : Optional[Iterable[DiscussInfoResp]] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + discuss_info_resp: Optional[Iterable[DiscussInfoResp]] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"errmsg",b"errmsg",u"result",b"result"]) -> bool: ... - def ClearField(self, field_name: Literal[u"discuss_info_resp",b"discuss_info_resp",u"errmsg",b"errmsg",u"result",b"result"]) -> None: ... + def HasField(self, field_name: Literal["errmsg",b"errmsg","result",b"result"]) -> bool: ... + def ClearField(self, field_name: Literal["discuss_info_resp",b"discuss_info_resp","errmsg",b"errmsg","result",b"result"]) -> None: ... class DiscussInfoResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor CONF_UIN_FIELD_NUMBER: int MEMBER_SEQ_FIELD_NUMBER: int CONF_SEQ_FIELD_NUMBER: int - conf_uin: int = ... - member_seq: int = ... - conf_seq: int = ... - + conf_uin: int + member_seq: int + conf_seq: int def __init__(self, *, - conf_uin : Optional[int] = ..., - member_seq : Optional[int] = ..., - conf_seq : Optional[int] = ..., + conf_uin: Optional[int] = ..., + member_seq: Optional[int] = ..., + conf_seq: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"conf_seq",b"conf_seq",u"conf_uin",b"conf_uin",u"member_seq",b"member_seq"]) -> bool: ... - def ClearField(self, field_name: Literal[u"conf_seq",b"conf_seq",u"conf_uin",b"conf_uin",u"member_seq",b"member_seq"]) -> None: ... + def HasField(self, field_name: Literal["conf_seq",b"conf_seq","conf_uin",b"conf_uin","member_seq",b"member_seq"]) -> bool: ... + def ClearField(self, field_name: Literal["conf_seq",b"conf_seq","conf_uin",b"conf_uin","member_seq",b"member_seq"]) -> None: ... class PbPullGroupMsgSeqReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor GROUP_INFO_REQ_FIELD_NUMBER: int - @property def group_info_req(self) -> RepeatedCompositeFieldContainer[GroupInfoReq]: ... - def __init__(self, *, - group_info_req : Optional[Iterable[GroupInfoReq]] = ..., + group_info_req: Optional[Iterable[GroupInfoReq]] = ..., ) -> None: ... - def ClearField(self, field_name: Literal[u"group_info_req",b"group_info_req"]) -> None: ... + def ClearField(self, field_name: Literal["group_info_req",b"group_info_req"]) -> None: ... class GroupInfoReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor GROUP_CODE_FIELD_NUMBER: int LAST_SEQ_FIELD_NUMBER: int - group_code: int = ... - last_seq: int = ... - + group_code: int + last_seq: int def __init__(self, *, - group_code : Optional[int] = ..., - last_seq : Optional[int] = ..., + group_code: Optional[int] = ..., + last_seq: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"group_code",b"group_code",u"last_seq",b"last_seq"]) -> bool: ... - def ClearField(self, field_name: Literal[u"group_code",b"group_code",u"last_seq",b"last_seq"]) -> None: ... + def HasField(self, field_name: Literal["group_code",b"group_code","last_seq",b"last_seq"]) -> bool: ... + def ClearField(self, field_name: Literal["group_code",b"group_code","last_seq",b"last_seq"]) -> None: ... class PbPullGroupMsgSeqResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int GROUP_INFO_RESP_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - + result: int + errmsg: Text @property def group_info_resp(self) -> RepeatedCompositeFieldContainer[GroupInfoResp]: ... - def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - group_info_resp : Optional[Iterable[GroupInfoResp]] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + group_info_resp: Optional[Iterable[GroupInfoResp]] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"errmsg",b"errmsg",u"result",b"result"]) -> bool: ... - def ClearField(self, field_name: Literal[u"errmsg",b"errmsg",u"group_info_resp",b"group_info_resp",u"result",b"result"]) -> None: ... + def HasField(self, field_name: Literal["errmsg",b"errmsg","result",b"result"]) -> bool: ... + def ClearField(self, field_name: Literal["errmsg",b"errmsg","group_info_resp",b"group_info_resp","result",b"result"]) -> None: ... class GroupInfoResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor GROUP_CODE_FIELD_NUMBER: int MEMBER_SEQ_FIELD_NUMBER: int GROUP_SEQ_FIELD_NUMBER: int - group_code: int = ... - member_seq: int = ... - group_seq: int = ... - + group_code: int + member_seq: int + group_seq: int def __init__(self, *, - group_code : Optional[int] = ..., - member_seq : Optional[int] = ..., - group_seq : Optional[int] = ..., + group_code: Optional[int] = ..., + member_seq: Optional[int] = ..., + group_seq: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"group_code",b"group_code",u"group_seq",b"group_seq",u"member_seq",b"member_seq"]) -> bool: ... - def ClearField(self, field_name: Literal[u"group_code",b"group_code",u"group_seq",b"group_seq",u"member_seq",b"member_seq"]) -> None: ... + def HasField(self, field_name: Literal["group_code",b"group_code","group_seq",b"group_seq","member_seq",b"member_seq"]) -> bool: ... + def ClearField(self, field_name: Literal["group_code",b"group_code","group_seq",b"group_seq","member_seq",b"member_seq"]) -> None: ... class PbSearchRoamMsgInCloudReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SERIALIZE_REQBODY_FIELD_NUMBER: int - serialize_reqbody: bytes = ... - + serialize_reqbody: bytes def __init__(self, *, - serialize_reqbody : Optional[bytes] = ..., + serialize_reqbody: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"serialize_reqbody",b"serialize_reqbody"]) -> bool: ... - def ClearField(self, field_name: Literal[u"serialize_reqbody",b"serialize_reqbody"]) -> None: ... + def HasField(self, field_name: Literal["serialize_reqbody",b"serialize_reqbody"]) -> bool: ... + def ClearField(self, field_name: Literal["serialize_reqbody",b"serialize_reqbody"]) -> None: ... class PbSearchRoamMsgInCloudResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor MSG_FIELD_NUMBER: int SERIALIZE_RSPBODY_FIELD_NUMBER: int - serialize_rspbody: bytes = ... - @property def msg(self) -> RepeatedCompositeFieldContainer[Msg]: ... - + serialize_rspbody: bytes def __init__(self, *, - msg : Optional[Iterable[Msg]] = ..., - serialize_rspbody : Optional[bytes] = ..., + msg: Optional[Iterable[Msg]] = ..., + serialize_rspbody: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"serialize_rspbody",b"serialize_rspbody"]) -> bool: ... - def ClearField(self, field_name: Literal[u"msg",b"msg",u"serialize_rspbody",b"serialize_rspbody"]) -> None: ... + def HasField(self, field_name: Literal["serialize_rspbody",b"serialize_rspbody"]) -> bool: ... + def ClearField(self, field_name: Literal["msg",b"msg","serialize_rspbody",b"serialize_rspbody"]) -> None: ... class PbSendMsgReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor ROUTING_HEAD_FIELD_NUMBER: int CONTENT_HEAD_FIELD_NUMBER: int BODY_FIELD_NUMBER: int @@ -1590,59 +1484,50 @@ class PbSendMsgReq(Message): CTRL_FIELD_NUMBER: int RECEIPT_REQ_FIELD_NUMBER: int MULTI_SEND_SEQ_FIELD_NUMBER: int - seq: int = ... - rand: int = ... - sync_cookie: bytes = ... - via: int = ... - data_statist: int = ... - multi_send_seq: int = ... - @property def routing_head(self) -> RoutingHead: ... - @property def content_head(self) -> ContentHead: ... - @property def body(self) -> MsgBody: ... - + seq: int + rand: int + sync_cookie: bytes @property def app_share(self) -> AppShareInfo: ... - + via: int + data_statist: int @property def multi_msg_assist(self) -> MultiMsgAssist: ... - @property def input_notify_info(self) -> PbInputNotifyInfo: ... - @property def ctrl(self) -> MsgCtrl: ... - @property def receipt_req(self) -> ReceiptReq: ... - - def __init__(self, - *, - routing_head : Optional[RoutingHead] = ..., - content_head : Optional[ContentHead] = ..., - body : Optional[MsgBody] = ..., - seq : Optional[int] = ..., - rand : Optional[int] = ..., - sync_cookie : Optional[bytes] = ..., - app_share : Optional[AppShareInfo] = ..., - via : Optional[int] = ..., - data_statist : Optional[int] = ..., - multi_msg_assist : Optional[MultiMsgAssist] = ..., - input_notify_info : Optional[PbInputNotifyInfo] = ..., - ctrl : Optional[MsgCtrl] = ..., - receipt_req : Optional[ReceiptReq] = ..., - multi_send_seq : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"app_share",b"app_share",u"body",b"body",u"content_head",b"content_head",u"ctrl",b"ctrl",u"data_statist",b"data_statist",u"input_notify_info",b"input_notify_info",u"multi_msg_assist",b"multi_msg_assist",u"multi_send_seq",b"multi_send_seq",u"rand",b"rand",u"receipt_req",b"receipt_req",u"routing_head",b"routing_head",u"seq",b"seq",u"sync_cookie",b"sync_cookie",u"via",b"via"]) -> bool: ... - def ClearField(self, field_name: Literal[u"app_share",b"app_share",u"body",b"body",u"content_head",b"content_head",u"ctrl",b"ctrl",u"data_statist",b"data_statist",u"input_notify_info",b"input_notify_info",u"multi_msg_assist",b"multi_msg_assist",u"multi_send_seq",b"multi_send_seq",u"rand",b"rand",u"receipt_req",b"receipt_req",u"routing_head",b"routing_head",u"seq",b"seq",u"sync_cookie",b"sync_cookie",u"via",b"via"]) -> None: ... + multi_send_seq: int + def __init__(self, + *, + routing_head: Optional[RoutingHead] = ..., + content_head: Optional[ContentHead] = ..., + body: Optional[MsgBody] = ..., + seq: Optional[int] = ..., + rand: Optional[int] = ..., + sync_cookie: Optional[bytes] = ..., + app_share: Optional[AppShareInfo] = ..., + via: Optional[int] = ..., + data_statist: Optional[int] = ..., + multi_msg_assist: Optional[MultiMsgAssist] = ..., + input_notify_info: Optional[PbInputNotifyInfo] = ..., + ctrl: Optional[MsgCtrl] = ..., + receipt_req: Optional[ReceiptReq] = ..., + multi_send_seq: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["app_share",b"app_share","body",b"body","content_head",b"content_head","ctrl",b"ctrl","data_statist",b"data_statist","input_notify_info",b"input_notify_info","multi_msg_assist",b"multi_msg_assist","multi_send_seq",b"multi_send_seq","rand",b"rand","receipt_req",b"receipt_req","routing_head",b"routing_head","seq",b"seq","sync_cookie",b"sync_cookie","via",b"via"]) -> bool: ... + def ClearField(self, field_name: Literal["app_share",b"app_share","body",b"body","content_head",b"content_head","ctrl",b"ctrl","data_statist",b"data_statist","input_notify_info",b"input_notify_info","multi_msg_assist",b"multi_msg_assist","multi_send_seq",b"multi_send_seq","rand",b"rand","receipt_req",b"receipt_req","routing_head",b"routing_head","seq",b"seq","sync_cookie",b"sync_cookie","via",b"via"]) -> None: ... class PbSendMsgResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int SEND_TIME_FIELD_NUMBER: int @@ -1653,99 +1538,90 @@ class PbSendMsgResp(Message): RECEIPT_RESP_FIELD_NUMBER: int TEXT_ANALYSIS_RESULT_FIELD_NUMBER: int MSG_INFO_FLAG_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - send_time: int = ... - svrbusy_wait_time: int = ... - errtype: int = ... - text_analysis_result: int = ... - msg_info_flag: int = ... - + result: int + errmsg: Text + send_time: int + svrbusy_wait_time: int @property def send_info(self) -> MsgSendInfo: ... - + errtype: int @property def trans_svr_info(self) -> TransSvrInfo: ... - @property def receipt_resp(self) -> ReceiptResp: ... - + text_analysis_result: int + msg_info_flag: int def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - send_time : Optional[int] = ..., - svrbusy_wait_time : Optional[int] = ..., - send_info : Optional[MsgSendInfo] = ..., - errtype : Optional[int] = ..., - trans_svr_info : Optional[TransSvrInfo] = ..., - receipt_resp : Optional[ReceiptResp] = ..., - text_analysis_result : Optional[int] = ..., - msg_info_flag : Optional[int] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + send_time: Optional[int] = ..., + svrbusy_wait_time: Optional[int] = ..., + send_info: Optional[MsgSendInfo] = ..., + errtype: Optional[int] = ..., + trans_svr_info: Optional[TransSvrInfo] = ..., + receipt_resp: Optional[ReceiptResp] = ..., + text_analysis_result: Optional[int] = ..., + msg_info_flag: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"errmsg",b"errmsg",u"errtype",b"errtype",u"msg_info_flag",b"msg_info_flag",u"receipt_resp",b"receipt_resp",u"result",b"result",u"send_info",b"send_info",u"send_time",b"send_time",u"svrbusy_wait_time",b"svrbusy_wait_time",u"text_analysis_result",b"text_analysis_result",u"trans_svr_info",b"trans_svr_info"]) -> bool: ... - def ClearField(self, field_name: Literal[u"errmsg",b"errmsg",u"errtype",b"errtype",u"msg_info_flag",b"msg_info_flag",u"receipt_resp",b"receipt_resp",u"result",b"result",u"send_info",b"send_info",u"send_time",b"send_time",u"svrbusy_wait_time",b"svrbusy_wait_time",u"text_analysis_result",b"text_analysis_result",u"trans_svr_info",b"trans_svr_info"]) -> None: ... + def HasField(self, field_name: Literal["errmsg",b"errmsg","errtype",b"errtype","msg_info_flag",b"msg_info_flag","receipt_resp",b"receipt_resp","result",b"result","send_info",b"send_info","send_time",b"send_time","svrbusy_wait_time",b"svrbusy_wait_time","text_analysis_result",b"text_analysis_result","trans_svr_info",b"trans_svr_info"]) -> bool: ... + def ClearField(self, field_name: Literal["errmsg",b"errmsg","errtype",b"errtype","msg_info_flag",b"msg_info_flag","receipt_resp",b"receipt_resp","result",b"result","send_info",b"send_info","send_time",b"send_time","svrbusy_wait_time",b"svrbusy_wait_time","text_analysis_result",b"text_analysis_result","trans_svr_info",b"trans_svr_info"]) -> None: ... class PbThirdQQUnReadMsgNumReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor THIRDQQ_REQ_INFO_FIELD_NUMBER: int SOURCE_FIELD_NUMBER: int - source: int = ... - @property def thirdqq_req_info(self) -> RepeatedCompositeFieldContainer[ThirdQQReqInfo]: ... - + source: int def __init__(self, *, - thirdqq_req_info : Optional[Iterable[ThirdQQReqInfo]] = ..., - source : Optional[int] = ..., + thirdqq_req_info: Optional[Iterable[ThirdQQReqInfo]] = ..., + source: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"source",b"source"]) -> bool: ... - def ClearField(self, field_name: Literal[u"source",b"source",u"thirdqq_req_info",b"thirdqq_req_info"]) -> None: ... + def HasField(self, field_name: Literal["source",b"source"]) -> bool: ... + def ClearField(self, field_name: Literal["source",b"source","thirdqq_req_info",b"thirdqq_req_info"]) -> None: ... class ThirdQQReqInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor THIRD_UIN_FIELD_NUMBER: int THIRD_UIN_SIG_FIELD_NUMBER: int THIRD_UIN_COOKIE_FIELD_NUMBER: int - third_uin: int = ... - third_uin_sig: bytes = ... - third_uin_cookie: bytes = ... - + third_uin: int + third_uin_sig: bytes + third_uin_cookie: bytes def __init__(self, *, - third_uin : Optional[int] = ..., - third_uin_sig : Optional[bytes] = ..., - third_uin_cookie : Optional[bytes] = ..., + third_uin: Optional[int] = ..., + third_uin_sig: Optional[bytes] = ..., + third_uin_cookie: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"third_uin",b"third_uin",u"third_uin_cookie",b"third_uin_cookie",u"third_uin_sig",b"third_uin_sig"]) -> bool: ... - def ClearField(self, field_name: Literal[u"third_uin",b"third_uin",u"third_uin_cookie",b"third_uin_cookie",u"third_uin_sig",b"third_uin_sig"]) -> None: ... + def HasField(self, field_name: Literal["third_uin",b"third_uin","third_uin_cookie",b"third_uin_cookie","third_uin_sig",b"third_uin_sig"]) -> bool: ... + def ClearField(self, field_name: Literal["third_uin",b"third_uin","third_uin_cookie",b"third_uin_cookie","third_uin_sig",b"third_uin_sig"]) -> None: ... class PbThirdQQUnReadMsgNumResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int THIRDQQ_RESP_INFO_FIELD_NUMBER: int INTERVAL_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - interval: int = ... - + result: int + errmsg: Text @property def thirdqq_resp_info(self) -> RepeatedCompositeFieldContainer[ThirdQQRespInfo]: ... - + interval: int def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - thirdqq_resp_info : Optional[Iterable[ThirdQQRespInfo]] = ..., - interval : Optional[int] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + thirdqq_resp_info: Optional[Iterable[ThirdQQRespInfo]] = ..., + interval: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"errmsg",b"errmsg",u"interval",b"interval",u"result",b"result"]) -> bool: ... - def ClearField(self, field_name: Literal[u"errmsg",b"errmsg",u"interval",b"interval",u"result",b"result",u"thirdqq_resp_info",b"thirdqq_resp_info"]) -> None: ... + def HasField(self, field_name: Literal["errmsg",b"errmsg","interval",b"interval","result",b"result"]) -> bool: ... + def ClearField(self, field_name: Literal["errmsg",b"errmsg","interval",b"interval","result",b"result","thirdqq_resp_info",b"thirdqq_resp_info"]) -> None: ... class ThirdQQRespInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor THIRD_UIN_FIELD_NUMBER: int THIRD_UIN_COOKIE_FIELD_NUMBER: int NUM_FIELD_NUMBER: int @@ -1753,160 +1629,143 @@ class ThirdQQRespInfo(Message): REDBAG_TIME_FIELD_NUMBER: int STATUS_FIELD_NUMBER: int LAST_MSG_TIME_FIELD_NUMBER: int - third_uin: int = ... - third_uin_cookie: bytes = ... - num: int = ... - flag: int = ... - redbag_time: int = ... - status: int = ... - last_msg_time: int = ... - - def __init__(self, - *, - third_uin : Optional[int] = ..., - third_uin_cookie : Optional[bytes] = ..., - num : Optional[int] = ..., - flag : Optional[int] = ..., - redbag_time : Optional[int] = ..., - status : Optional[int] = ..., - last_msg_time : Optional[int] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"flag",b"flag",u"last_msg_time",b"last_msg_time",u"num",b"num",u"redbag_time",b"redbag_time",u"status",b"status",u"third_uin",b"third_uin",u"third_uin_cookie",b"third_uin_cookie"]) -> bool: ... - def ClearField(self, field_name: Literal[u"flag",b"flag",u"last_msg_time",b"last_msg_time",u"num",b"num",u"redbag_time",b"redbag_time",u"status",b"status",u"third_uin",b"third_uin",u"third_uin_cookie",b"third_uin_cookie"]) -> None: ... + third_uin: int + third_uin_cookie: bytes + num: int + flag: int + redbag_time: int + status: int + last_msg_time: int + def __init__(self, + *, + third_uin: Optional[int] = ..., + third_uin_cookie: Optional[bytes] = ..., + num: Optional[int] = ..., + flag: Optional[int] = ..., + redbag_time: Optional[int] = ..., + status: Optional[int] = ..., + last_msg_time: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["flag",b"flag","last_msg_time",b"last_msg_time","num",b"num","redbag_time",b"redbag_time","status",b"status","third_uin",b"third_uin","third_uin_cookie",b"third_uin_cookie"]) -> bool: ... + def ClearField(self, field_name: Literal["flag",b"flag","last_msg_time",b"last_msg_time","num",b"num","redbag_time",b"redbag_time","status",b"status","third_uin",b"third_uin","third_uin_cookie",b"third_uin_cookie"]) -> None: ... class PbUnReadMsgSeqReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor C2C_UNREAD_INFO_FIELD_NUMBER: int BINDUIN_UNREAD_INFO_FIELD_NUMBER: int GROUP_UNREAD_INFO_FIELD_NUMBER: int DISCUSS_UNREAD_INFO_FIELD_NUMBER: int THIRDQQ_UNREAD_INFO_FIELD_NUMBER: int - @property def c2c_unread_info(self) -> PbC2CUnReadMsgNumReq: ... - @property def binduin_unread_info(self) -> RepeatedCompositeFieldContainer[PbBindUinUnReadMsgNumReq]: ... - @property def group_unread_info(self) -> PbPullGroupMsgSeqReq: ... - @property def discuss_unread_info(self) -> PbPullDiscussMsgSeqReq: ... - @property def thirdqq_unread_info(self) -> PbThirdQQUnReadMsgNumReq: ... - def __init__(self, *, - c2c_unread_info : Optional[PbC2CUnReadMsgNumReq] = ..., - binduin_unread_info : Optional[Iterable[PbBindUinUnReadMsgNumReq]] = ..., - group_unread_info : Optional[PbPullGroupMsgSeqReq] = ..., - discuss_unread_info : Optional[PbPullDiscussMsgSeqReq] = ..., - thirdqq_unread_info : Optional[PbThirdQQUnReadMsgNumReq] = ..., + c2c_unread_info: Optional[PbC2CUnReadMsgNumReq] = ..., + binduin_unread_info: Optional[Iterable[PbBindUinUnReadMsgNumReq]] = ..., + group_unread_info: Optional[PbPullGroupMsgSeqReq] = ..., + discuss_unread_info: Optional[PbPullDiscussMsgSeqReq] = ..., + thirdqq_unread_info: Optional[PbThirdQQUnReadMsgNumReq] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"c2c_unread_info",b"c2c_unread_info",u"discuss_unread_info",b"discuss_unread_info",u"group_unread_info",b"group_unread_info",u"thirdqq_unread_info",b"thirdqq_unread_info"]) -> bool: ... - def ClearField(self, field_name: Literal[u"binduin_unread_info",b"binduin_unread_info",u"c2c_unread_info",b"c2c_unread_info",u"discuss_unread_info",b"discuss_unread_info",u"group_unread_info",b"group_unread_info",u"thirdqq_unread_info",b"thirdqq_unread_info"]) -> None: ... + def HasField(self, field_name: Literal["c2c_unread_info",b"c2c_unread_info","discuss_unread_info",b"discuss_unread_info","group_unread_info",b"group_unread_info","thirdqq_unread_info",b"thirdqq_unread_info"]) -> bool: ... + def ClearField(self, field_name: Literal["binduin_unread_info",b"binduin_unread_info","c2c_unread_info",b"c2c_unread_info","discuss_unread_info",b"discuss_unread_info","group_unread_info",b"group_unread_info","thirdqq_unread_info",b"thirdqq_unread_info"]) -> None: ... class PbUnReadMsgSeqResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor C2C_UNREAD_INFO_FIELD_NUMBER: int BINDUIN_UNREAD_INFO_FIELD_NUMBER: int GROUP_UNREAD_INFO_FIELD_NUMBER: int DISCUSS_UNREAD_INFO_FIELD_NUMBER: int THIRDQQ_UNREAD_INFO_FIELD_NUMBER: int - @property def c2c_unread_info(self) -> PbC2CUnReadMsgNumResp: ... - @property def binduin_unread_info(self) -> RepeatedCompositeFieldContainer[PbBindUinUnReadMsgNumResp]: ... - @property def group_unread_info(self) -> PbPullGroupMsgSeqResp: ... - @property def discuss_unread_info(self) -> PbPullDiscussMsgSeqResp: ... - @property def thirdqq_unread_info(self) -> PbThirdQQUnReadMsgNumResp: ... - def __init__(self, *, - c2c_unread_info : Optional[PbC2CUnReadMsgNumResp] = ..., - binduin_unread_info : Optional[Iterable[PbBindUinUnReadMsgNumResp]] = ..., - group_unread_info : Optional[PbPullGroupMsgSeqResp] = ..., - discuss_unread_info : Optional[PbPullDiscussMsgSeqResp] = ..., - thirdqq_unread_info : Optional[PbThirdQQUnReadMsgNumResp] = ..., + c2c_unread_info: Optional[PbC2CUnReadMsgNumResp] = ..., + binduin_unread_info: Optional[Iterable[PbBindUinUnReadMsgNumResp]] = ..., + group_unread_info: Optional[PbPullGroupMsgSeqResp] = ..., + discuss_unread_info: Optional[PbPullDiscussMsgSeqResp] = ..., + thirdqq_unread_info: Optional[PbThirdQQUnReadMsgNumResp] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"c2c_unread_info",b"c2c_unread_info",u"discuss_unread_info",b"discuss_unread_info",u"group_unread_info",b"group_unread_info",u"thirdqq_unread_info",b"thirdqq_unread_info"]) -> bool: ... - def ClearField(self, field_name: Literal[u"binduin_unread_info",b"binduin_unread_info",u"c2c_unread_info",b"c2c_unread_info",u"discuss_unread_info",b"discuss_unread_info",u"group_unread_info",b"group_unread_info",u"thirdqq_unread_info",b"thirdqq_unread_info"]) -> None: ... + def HasField(self, field_name: Literal["c2c_unread_info",b"c2c_unread_info","discuss_unread_info",b"discuss_unread_info","group_unread_info",b"group_unread_info","thirdqq_unread_info",b"thirdqq_unread_info"]) -> bool: ... + def ClearField(self, field_name: Literal["binduin_unread_info",b"binduin_unread_info","c2c_unread_info",b"c2c_unread_info","discuss_unread_info",b"discuss_unread_info","group_unread_info",b"group_unread_info","thirdqq_unread_info",b"thirdqq_unread_info"]) -> None: ... class PubGroupTmp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int SIG_FIELD_NUMBER: int GROUP_UIN_FIELD_NUMBER: int - to_uin: int = ... - sig: bytes = ... - group_uin: int = ... - + to_uin: int + sig: bytes + group_uin: int def __init__(self, *, - to_uin : Optional[int] = ..., - sig : Optional[bytes] = ..., - group_uin : Optional[int] = ..., + to_uin: Optional[int] = ..., + sig: Optional[bytes] = ..., + group_uin: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"group_uin",b"group_uin",u"sig",b"sig",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"group_uin",b"group_uin",u"sig",b"sig",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["group_uin",b"group_uin","sig",b"sig","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["group_uin",b"group_uin","sig",b"sig","to_uin",b"to_uin"]) -> None: ... class PublicPlat(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int SIG_FIELD_NUMBER: int - to_uin: int = ... - sig: bytes = ... - + to_uin: int + sig: bytes def __init__(self, *, - to_uin : Optional[int] = ..., - sig : Optional[bytes] = ..., + to_uin: Optional[int] = ..., + sig: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"sig",b"sig",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"sig",b"sig",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["sig",b"sig","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["sig",b"sig","to_uin",b"to_uin"]) -> None: ... class QQQueryBusinessTmp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int SIG_FIELD_NUMBER: int - to_uin: int = ... - sig: bytes = ... - + to_uin: int + sig: bytes def __init__(self, *, - to_uin : Optional[int] = ..., - sig : Optional[bytes] = ..., + to_uin: Optional[int] = ..., + sig: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"sig",b"sig",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"sig",b"sig",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["sig",b"sig","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["sig",b"sig","to_uin",b"to_uin"]) -> None: ... class RichStatusTmp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int SIG_FIELD_NUMBER: int - to_uin: int = ... - sig: bytes = ... - + to_uin: int + sig: bytes def __init__(self, *, - to_uin : Optional[int] = ..., - sig : Optional[bytes] = ..., + to_uin: Optional[int] = ..., + sig: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"sig",b"sig",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"sig",b"sig",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["sig",b"sig","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["sig",b"sig","to_uin",b"to_uin"]) -> None: ... class RoutingHead(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor C2C_FIELD_NUMBER: int GRP_FIELD_NUMBER: int GRP_TMP_FIELD_NUMBER: int @@ -1928,99 +1787,85 @@ class RoutingHead(Message): NEARBY_DATING_TMP_FIELD_NUMBER: int NEARBY_ASSISTANT_TMP_FIELD_NUMBER: int COMM_TMP_FIELD_NUMBER: int - @property def c2c(self) -> C2C: ... - @property def grp(self) -> Grp: ... - @property def grp_tmp(self) -> GrpTmp: ... - @property def dis(self) -> Dis: ... - @property def dis_tmp(self) -> DisTmp: ... - @property def wpa_tmp(self) -> WPATmp: ... - @property - def public_plat(self) -> PublicPlat: ... - + def public_plat(self) -> PublicPlat: + """optional SecretFileHead secret_file = 7;""" + pass @property def trans_msg(self) -> TransMsg: ... - @property def address_list(self) -> AddressListTmp: ... - @property def rich_status_tmp(self) -> RichStatusTmp: ... - @property def trans_cmd(self) -> TransCmd: ... - @property def accost_tmp(self) -> AccostTmp: ... - @property def pub_group_tmp(self) -> PubGroupTmp: ... - @property def trans_0_x211(self) -> Trans0x211: ... - @property def business_wpa_tmp(self) -> BusinessWPATmp: ... - @property def auth_tmp(self) -> AuthTmp: ... - @property def bsns_tmp(self) -> BsnsTmp: ... - @property def qq_querybusiness_tmp(self) -> QQQueryBusinessTmp: ... - @property def nearby_dating_tmp(self) -> NearByDatingTmp: ... - @property def nearby_assistant_tmp(self) -> NearByAssistantTmp: ... - @property def comm_tmp(self) -> CommTmp: ... - def __init__(self, *, - c2c : Optional[C2C] = ..., - grp : Optional[Grp] = ..., - grp_tmp : Optional[GrpTmp] = ..., - dis : Optional[Dis] = ..., - dis_tmp : Optional[DisTmp] = ..., - wpa_tmp : Optional[WPATmp] = ..., - public_plat : Optional[PublicPlat] = ..., - trans_msg : Optional[TransMsg] = ..., - address_list : Optional[AddressListTmp] = ..., - rich_status_tmp : Optional[RichStatusTmp] = ..., - trans_cmd : Optional[TransCmd] = ..., - accost_tmp : Optional[AccostTmp] = ..., - pub_group_tmp : Optional[PubGroupTmp] = ..., - trans_0_x211 : Optional[Trans0x211] = ..., - business_wpa_tmp : Optional[BusinessWPATmp] = ..., - auth_tmp : Optional[AuthTmp] = ..., - bsns_tmp : Optional[BsnsTmp] = ..., - qq_querybusiness_tmp : Optional[QQQueryBusinessTmp] = ..., - nearby_dating_tmp : Optional[NearByDatingTmp] = ..., - nearby_assistant_tmp : Optional[NearByAssistantTmp] = ..., - comm_tmp : Optional[CommTmp] = ..., - ) -> None: ... - def HasField(self, field_name: Literal[u"accost_tmp",b"accost_tmp",u"address_list",b"address_list",u"auth_tmp",b"auth_tmp",u"bsns_tmp",b"bsns_tmp",u"business_wpa_tmp",b"business_wpa_tmp",u"c2c",b"c2c",u"comm_tmp",b"comm_tmp",u"dis",b"dis",u"dis_tmp",b"dis_tmp",u"grp",b"grp",u"grp_tmp",b"grp_tmp",u"nearby_assistant_tmp",b"nearby_assistant_tmp",u"nearby_dating_tmp",b"nearby_dating_tmp",u"pub_group_tmp",b"pub_group_tmp",u"public_plat",b"public_plat",u"qq_querybusiness_tmp",b"qq_querybusiness_tmp",u"rich_status_tmp",b"rich_status_tmp",u"trans_0_x211",b"trans_0_x211",u"trans_cmd",b"trans_cmd",u"trans_msg",b"trans_msg",u"wpa_tmp",b"wpa_tmp"]) -> bool: ... - def ClearField(self, field_name: Literal[u"accost_tmp",b"accost_tmp",u"address_list",b"address_list",u"auth_tmp",b"auth_tmp",u"bsns_tmp",b"bsns_tmp",u"business_wpa_tmp",b"business_wpa_tmp",u"c2c",b"c2c",u"comm_tmp",b"comm_tmp",u"dis",b"dis",u"dis_tmp",b"dis_tmp",u"grp",b"grp",u"grp_tmp",b"grp_tmp",u"nearby_assistant_tmp",b"nearby_assistant_tmp",u"nearby_dating_tmp",b"nearby_dating_tmp",u"pub_group_tmp",b"pub_group_tmp",u"public_plat",b"public_plat",u"qq_querybusiness_tmp",b"qq_querybusiness_tmp",u"rich_status_tmp",b"rich_status_tmp",u"trans_0_x211",b"trans_0_x211",u"trans_cmd",b"trans_cmd",u"trans_msg",b"trans_msg",u"wpa_tmp",b"wpa_tmp"]) -> None: ... + c2c: Optional[C2C] = ..., + grp: Optional[Grp] = ..., + grp_tmp: Optional[GrpTmp] = ..., + dis: Optional[Dis] = ..., + dis_tmp: Optional[DisTmp] = ..., + wpa_tmp: Optional[WPATmp] = ..., + public_plat: Optional[PublicPlat] = ..., + trans_msg: Optional[TransMsg] = ..., + address_list: Optional[AddressListTmp] = ..., + rich_status_tmp: Optional[RichStatusTmp] = ..., + trans_cmd: Optional[TransCmd] = ..., + accost_tmp: Optional[AccostTmp] = ..., + pub_group_tmp: Optional[PubGroupTmp] = ..., + trans_0_x211: Optional[Trans0x211] = ..., + business_wpa_tmp: Optional[BusinessWPATmp] = ..., + auth_tmp: Optional[AuthTmp] = ..., + bsns_tmp: Optional[BsnsTmp] = ..., + qq_querybusiness_tmp: Optional[QQQueryBusinessTmp] = ..., + nearby_dating_tmp: Optional[NearByDatingTmp] = ..., + nearby_assistant_tmp: Optional[NearByAssistantTmp] = ..., + comm_tmp: Optional[CommTmp] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["accost_tmp",b"accost_tmp","address_list",b"address_list","auth_tmp",b"auth_tmp","bsns_tmp",b"bsns_tmp","business_wpa_tmp",b"business_wpa_tmp","c2c",b"c2c","comm_tmp",b"comm_tmp","dis",b"dis","dis_tmp",b"dis_tmp","grp",b"grp","grp_tmp",b"grp_tmp","nearby_assistant_tmp",b"nearby_assistant_tmp","nearby_dating_tmp",b"nearby_dating_tmp","pub_group_tmp",b"pub_group_tmp","public_plat",b"public_plat","qq_querybusiness_tmp",b"qq_querybusiness_tmp","rich_status_tmp",b"rich_status_tmp","trans_0_x211",b"trans_0_x211","trans_cmd",b"trans_cmd","trans_msg",b"trans_msg","wpa_tmp",b"wpa_tmp"]) -> bool: ... + def ClearField(self, field_name: Literal["accost_tmp",b"accost_tmp","address_list",b"address_list","auth_tmp",b"auth_tmp","bsns_tmp",b"bsns_tmp","business_wpa_tmp",b"business_wpa_tmp","c2c",b"c2c","comm_tmp",b"comm_tmp","dis",b"dis","dis_tmp",b"dis_tmp","grp",b"grp","grp_tmp",b"grp_tmp","nearby_assistant_tmp",b"nearby_assistant_tmp","nearby_dating_tmp",b"nearby_dating_tmp","pub_group_tmp",b"pub_group_tmp","public_plat",b"public_plat","qq_querybusiness_tmp",b"qq_querybusiness_tmp","rich_status_tmp",b"rich_status_tmp","trans_0_x211",b"trans_0_x211","trans_cmd",b"trans_cmd","trans_msg",b"trans_msg","wpa_tmp",b"wpa_tmp"]) -> None: ... class Trans0x211(Message): - DESCRIPTOR: Descriptor = ... + """message SecretFileHead { + optional SubMsgType0xc1.MsgBody secret_file_msg = 1; + optional SubMsgType0x1a.MsgBody secret_file_status = 2; + } + + """ + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int CC_CMD_FIELD_NUMBER: int INST_CTRL_FIELD_NUMBER: int @@ -2028,145 +1873,136 @@ class Trans0x211(Message): C2C_TYPE_FIELD_NUMBER: int SERVICE_TYPE_FIELD_NUMBER: int DATALINE_FLAG_FIELD_NUMBER: int - to_uin: int = ... - cc_cmd: int = ... - sig: bytes = ... - c2c_type: int = ... - service_type: int = ... - dataline_flag: int = ... - + to_uin: int + cc_cmd: int @property def inst_ctrl(self) -> InstCtrl: ... - + sig: bytes + c2c_type: int + service_type: int + dataline_flag: int def __init__(self, *, - to_uin : Optional[int] = ..., - cc_cmd : Optional[int] = ..., - inst_ctrl : Optional[InstCtrl] = ..., - sig : Optional[bytes] = ..., - c2c_type : Optional[int] = ..., - service_type : Optional[int] = ..., - dataline_flag : Optional[int] = ..., + to_uin: Optional[int] = ..., + cc_cmd: Optional[int] = ..., + inst_ctrl: Optional[InstCtrl] = ..., + sig: Optional[bytes] = ..., + c2c_type: Optional[int] = ..., + service_type: Optional[int] = ..., + dataline_flag: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"c2c_type",b"c2c_type",u"cc_cmd",b"cc_cmd",u"dataline_flag",b"dataline_flag",u"inst_ctrl",b"inst_ctrl",u"service_type",b"service_type",u"sig",b"sig",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"c2c_type",b"c2c_type",u"cc_cmd",b"cc_cmd",u"dataline_flag",b"dataline_flag",u"inst_ctrl",b"inst_ctrl",u"service_type",b"service_type",u"sig",b"sig",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["c2c_type",b"c2c_type","cc_cmd",b"cc_cmd","dataline_flag",b"dataline_flag","inst_ctrl",b"inst_ctrl","service_type",b"service_type","sig",b"sig","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["c2c_type",b"c2c_type","cc_cmd",b"cc_cmd","dataline_flag",b"dataline_flag","inst_ctrl",b"inst_ctrl","service_type",b"service_type","sig",b"sig","to_uin",b"to_uin"]) -> None: ... class TransCmd(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int TYPE_FIELD_NUMBER: int - to_uin: int = ... - type: int = ... - + to_uin: int + type: int def __init__(self, *, - to_uin : Optional[int] = ..., - type : Optional[int] = ..., + to_uin: Optional[int] = ..., + type: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"to_uin",b"to_uin",u"type",b"type"]) -> bool: ... - def ClearField(self, field_name: Literal[u"to_uin",b"to_uin",u"type",b"type"]) -> None: ... + def HasField(self, field_name: Literal["to_uin",b"to_uin","type",b"type"]) -> bool: ... + def ClearField(self, field_name: Literal["to_uin",b"to_uin","type",b"type"]) -> None: ... class TransMsg(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int C2C_CMD_FIELD_NUMBER: int - to_uin: int = ... - c2c_cmd: int = ... - + to_uin: int + c2c_cmd: int def __init__(self, *, - to_uin : Optional[int] = ..., - c2c_cmd : Optional[int] = ..., + to_uin: Optional[int] = ..., + c2c_cmd: Optional[int] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"c2c_cmd",b"c2c_cmd",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"c2c_cmd",b"c2c_cmd",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["c2c_cmd",b"c2c_cmd","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["c2c_cmd",b"c2c_cmd","to_uin",b"to_uin"]) -> None: ... class TransReq(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor COMMAND_FIELD_NUMBER: int REQ_TAG_FIELD_NUMBER: int REQ_BUFF_FIELD_NUMBER: int - command: int = ... - req_tag: int = ... - req_buff: bytes = ... - + command: int + req_tag: int + req_buff: bytes def __init__(self, *, - command : Optional[int] = ..., - req_tag : Optional[int] = ..., - req_buff : Optional[bytes] = ..., + command: Optional[int] = ..., + req_tag: Optional[int] = ..., + req_buff: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"command",b"command",u"req_buff",b"req_buff",u"req_tag",b"req_tag"]) -> bool: ... - def ClearField(self, field_name: Literal[u"command",b"command",u"req_buff",b"req_buff",u"req_tag",b"req_tag"]) -> None: ... + def HasField(self, field_name: Literal["command",b"command","req_buff",b"req_buff","req_tag",b"req_tag"]) -> bool: ... + def ClearField(self, field_name: Literal["command",b"command","req_buff",b"req_buff","req_tag",b"req_tag"]) -> None: ... class TransResp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor RESULT_FIELD_NUMBER: int ERRMSG_FIELD_NUMBER: int RESP_TAG_FIELD_NUMBER: int RESP_BUFF_FIELD_NUMBER: int - result: int = ... - errmsg: Text = ... - resp_tag: int = ... - resp_buff: bytes = ... - + result: int + errmsg: Text + resp_tag: int + resp_buff: bytes def __init__(self, *, - result : Optional[int] = ..., - errmsg : Optional[Text] = ..., - resp_tag : Optional[int] = ..., - resp_buff : Optional[bytes] = ..., + result: Optional[int] = ..., + errmsg: Optional[Text] = ..., + resp_tag: Optional[int] = ..., + resp_buff: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"errmsg",b"errmsg",u"resp_buff",b"resp_buff",u"resp_tag",b"resp_tag",u"result",b"result"]) -> bool: ... - def ClearField(self, field_name: Literal[u"errmsg",b"errmsg",u"resp_buff",b"resp_buff",u"resp_tag",b"resp_tag",u"result",b"result"]) -> None: ... + def HasField(self, field_name: Literal["errmsg",b"errmsg","resp_buff",b"resp_buff","resp_tag",b"resp_tag","result",b"result"]) -> bool: ... + def ClearField(self, field_name: Literal["errmsg",b"errmsg","resp_buff",b"resp_buff","resp_tag",b"resp_tag","result",b"result"]) -> None: ... class TransSvrInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor SUB_TYPE_FIELD_NUMBER: int RET_CODE_FIELD_NUMBER: int ERR_MSG_FIELD_NUMBER: int TRANS_INFO_FIELD_NUMBER: int - sub_type: int = ... - ret_code: int = ... - err_msg: bytes = ... - trans_info: bytes = ... - + sub_type: int + ret_code: int + err_msg: bytes + trans_info: bytes def __init__(self, *, - sub_type : Optional[int] = ..., - ret_code : Optional[int] = ..., - err_msg : Optional[bytes] = ..., - trans_info : Optional[bytes] = ..., + sub_type: Optional[int] = ..., + ret_code: Optional[int] = ..., + err_msg: Optional[bytes] = ..., + trans_info: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"err_msg",b"err_msg",u"ret_code",b"ret_code",u"sub_type",b"sub_type",u"trans_info",b"trans_info"]) -> bool: ... - def ClearField(self, field_name: Literal[u"err_msg",b"err_msg",u"ret_code",b"ret_code",u"sub_type",b"sub_type",u"trans_info",b"trans_info"]) -> None: ... + def HasField(self, field_name: Literal["err_msg",b"err_msg","ret_code",b"ret_code","sub_type",b"sub_type","trans_info",b"trans_info"]) -> bool: ... + def ClearField(self, field_name: Literal["err_msg",b"err_msg","ret_code",b"ret_code","sub_type",b"sub_type","trans_info",b"trans_info"]) -> None: ... class WPATmp(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor TO_UIN_FIELD_NUMBER: int SIG_FIELD_NUMBER: int - to_uin: int = ... - sig: bytes = ... - + to_uin: int + sig: bytes def __init__(self, *, - to_uin : Optional[int] = ..., - sig : Optional[bytes] = ..., + to_uin: Optional[int] = ..., + sig: Optional[bytes] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"sig",b"sig",u"to_uin",b"to_uin"]) -> bool: ... - def ClearField(self, field_name: Literal[u"sig",b"sig",u"to_uin",b"to_uin"]) -> None: ... + def HasField(self, field_name: Literal["sig",b"sig","to_uin",b"to_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["sig",b"sig","to_uin",b"to_uin"]) -> None: ... class WithDrawWordingInfo(Message): - DESCRIPTOR: Descriptor = ... + DESCRIPTOR: Descriptor ITEM_ID_FIELD_NUMBER: int ITEM_NAME_FIELD_NUMBER: int - item_id: int = ... - item_name: Text = ... - + item_id: int + item_name: Text def __init__(self, *, - item_id : Optional[int] = ..., - item_name : Optional[Text] = ..., + item_id: Optional[int] = ..., + item_name: Optional[Text] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"item_id",b"item_id",u"item_name",b"item_name"]) -> bool: ... - def ClearField(self, field_name: Literal[u"item_id",b"item_id",u"item_name",b"item_name"]) -> None: ... + def HasField(self, field_name: Literal["item_id",b"item_id","item_name",b"item_name"]) -> bool: ... + def ClearField(self, field_name: Literal["item_id",b"item_id","item_name",b"item_name"]) -> None: ... diff --git a/cai/pb/wtlogin/data_pb2.py b/cai/pb/wtlogin/data_pb2.py index b865a13c..bf938f56 100644 --- a/cai/pb/wtlogin/data_pb2.py +++ b/cai/pb/wtlogin/data_pb2.py @@ -3,6 +3,7 @@ # source: cai/pb/wtlogin/data.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -13,183 +14,12 @@ -DESCRIPTOR = _descriptor.FileDescriptor( - name='cai/pb/wtlogin/data.proto', - package='wtlogin', - syntax='proto2', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x19\x63\x61i/pb/wtlogin/data.proto\x12\x07wtlogin\"\xc3\x01\n\x0c\x44\x65viceReport\x12\x12\n\nbootloader\x18\x01 \x01(\t\x12\x14\n\x0cproc_version\x18\x02 \x01(\t\x12\x10\n\x08\x63odename\x18\x03 \x01(\t\x12\x13\n\x0bincremental\x18\x04 \x01(\t\x12\x13\n\x0b\x66ingerprint\x18\x05 \x01(\t\x12\x0f\n\x07\x62oot_id\x18\x06 \x01(\t\x12\x12\n\nandroid_id\x18\x07 \x01(\t\x12\x11\n\tbase_band\x18\x08 \x01(\t\x12\x15\n\rinner_version\x18\t \x01(\t\"\x98\x01\n\x0cSecTransInfo\x12\x13\n\x0bphone_brand\x18\x01 \x01(\t\x12\x12\n\nmodel_type\x18\x02 \x01(\t\x12\x10\n\x08wifi_mac\x18\x03 \x01(\t\x12\r\n\x05\x62ssid\x18\x04 \x01(\t\x12\x13\n\x0bos_language\x18\x05 \x01(\t\x12\x13\n\x0bqq_language\x18\x06 \x01(\r\x12\x14\n\x0cgps_location\x18\x07 \x01(\t' -) +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19\x63\x61i/pb/wtlogin/data.proto\x12\x07wtlogin\"\xc3\x01\n\x0c\x44\x65viceReport\x12\x12\n\nbootloader\x18\x01 \x01(\t\x12\x14\n\x0cproc_version\x18\x02 \x01(\t\x12\x10\n\x08\x63odename\x18\x03 \x01(\t\x12\x13\n\x0bincremental\x18\x04 \x01(\t\x12\x13\n\x0b\x66ingerprint\x18\x05 \x01(\t\x12\x0f\n\x07\x62oot_id\x18\x06 \x01(\t\x12\x12\n\nandroid_id\x18\x07 \x01(\t\x12\x11\n\tbase_band\x18\x08 \x01(\t\x12\x15\n\rinner_version\x18\t \x01(\t\"\x98\x01\n\x0cSecTransInfo\x12\x13\n\x0bphone_brand\x18\x01 \x01(\t\x12\x12\n\nmodel_type\x18\x02 \x01(\t\x12\x10\n\x08wifi_mac\x18\x03 \x01(\t\x12\r\n\x05\x62ssid\x18\x04 \x01(\t\x12\x13\n\x0bos_language\x18\x05 \x01(\t\x12\x13\n\x0bqq_language\x18\x06 \x01(\r\x12\x14\n\x0cgps_location\x18\x07 \x01(\t') - -_DEVICEREPORT = _descriptor.Descriptor( - name='DeviceReport', - full_name='wtlogin.DeviceReport', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='bootloader', full_name='wtlogin.DeviceReport.bootloader', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='proc_version', full_name='wtlogin.DeviceReport.proc_version', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='codename', full_name='wtlogin.DeviceReport.codename', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='incremental', full_name='wtlogin.DeviceReport.incremental', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='fingerprint', full_name='wtlogin.DeviceReport.fingerprint', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='boot_id', full_name='wtlogin.DeviceReport.boot_id', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='android_id', full_name='wtlogin.DeviceReport.android_id', index=6, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='base_band', full_name='wtlogin.DeviceReport.base_band', index=7, - number=8, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='inner_version', full_name='wtlogin.DeviceReport.inner_version', index=8, - number=9, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=39, - serialized_end=234, -) - - -_SECTRANSINFO = _descriptor.Descriptor( - name='SecTransInfo', - full_name='wtlogin.SecTransInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='phone_brand', full_name='wtlogin.SecTransInfo.phone_brand', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='model_type', full_name='wtlogin.SecTransInfo.model_type', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='wifi_mac', full_name='wtlogin.SecTransInfo.wifi_mac', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bssid', full_name='wtlogin.SecTransInfo.bssid', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='os_language', full_name='wtlogin.SecTransInfo.os_language', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='qq_language', full_name='wtlogin.SecTransInfo.qq_language', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='gps_location', full_name='wtlogin.SecTransInfo.gps_location', index=6, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=237, - serialized_end=389, -) - -DESCRIPTOR.message_types_by_name['DeviceReport'] = _DEVICEREPORT -DESCRIPTOR.message_types_by_name['SecTransInfo'] = _SECTRANSINFO -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - +_DEVICEREPORT = DESCRIPTOR.message_types_by_name['DeviceReport'] +_SECTRANSINFO = DESCRIPTOR.message_types_by_name['SecTransInfo'] DeviceReport = _reflection.GeneratedProtocolMessageType('DeviceReport', (_message.Message,), { 'DESCRIPTOR' : _DEVICEREPORT, '__module__' : 'cai.pb.wtlogin.data_pb2' @@ -204,5 +34,11 @@ }) _sym_db.RegisterMessage(SecTransInfo) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _DEVICEREPORT._serialized_start=39 + _DEVICEREPORT._serialized_end=234 + _SECTRANSINFO._serialized_start=237 + _SECTRANSINFO._serialized_end=389 # @@protoc_insertion_point(module_scope) diff --git a/cai/pb/wtlogin/data_pb2.pyi b/cai/pb/wtlogin/data_pb2.pyi index c000f034..2d6b8d36 100644 --- a/cai/pb/wtlogin/data_pb2.pyi +++ b/cai/pb/wtlogin/data_pb2.pyi @@ -26,10 +26,11 @@ from typing_extensions import ( ) -DESCRIPTOR: FileDescriptor = ... +DESCRIPTOR: FileDescriptor class DeviceReport(Message): - DESCRIPTOR: Descriptor = ... + """oicq/wlogin_sdk/pb/device_report.java""" + DESCRIPTOR: Descriptor BOOTLOADER_FIELD_NUMBER: int PROC_VERSION_FIELD_NUMBER: int CODENAME_FIELD_NUMBER: int @@ -39,33 +40,33 @@ class DeviceReport(Message): ANDROID_ID_FIELD_NUMBER: int BASE_BAND_FIELD_NUMBER: int INNER_VERSION_FIELD_NUMBER: int - bootloader: Text = ... - proc_version: Text = ... - codename: Text = ... - incremental: Text = ... - fingerprint: Text = ... - boot_id: Text = ... - android_id: Text = ... - base_band: Text = ... - inner_version: Text = ... - + bootloader: Text + proc_version: Text + codename: Text + incremental: Text + fingerprint: Text + boot_id: Text + android_id: Text + base_band: Text + inner_version: Text def __init__(self, *, - bootloader : Optional[Text] = ..., - proc_version : Optional[Text] = ..., - codename : Optional[Text] = ..., - incremental : Optional[Text] = ..., - fingerprint : Optional[Text] = ..., - boot_id : Optional[Text] = ..., - android_id : Optional[Text] = ..., - base_band : Optional[Text] = ..., - inner_version : Optional[Text] = ..., + bootloader: Optional[Text] = ..., + proc_version: Optional[Text] = ..., + codename: Optional[Text] = ..., + incremental: Optional[Text] = ..., + fingerprint: Optional[Text] = ..., + boot_id: Optional[Text] = ..., + android_id: Optional[Text] = ..., + base_band: Optional[Text] = ..., + inner_version: Optional[Text] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"android_id",b"android_id",u"base_band",b"base_band",u"boot_id",b"boot_id",u"bootloader",b"bootloader",u"codename",b"codename",u"fingerprint",b"fingerprint",u"incremental",b"incremental",u"inner_version",b"inner_version",u"proc_version",b"proc_version"]) -> bool: ... - def ClearField(self, field_name: Literal[u"android_id",b"android_id",u"base_band",b"base_band",u"boot_id",b"boot_id",u"bootloader",b"bootloader",u"codename",b"codename",u"fingerprint",b"fingerprint",u"incremental",b"incremental",u"inner_version",b"inner_version",u"proc_version",b"proc_version"]) -> None: ... + def HasField(self, field_name: Literal["android_id",b"android_id","base_band",b"base_band","boot_id",b"boot_id","bootloader",b"bootloader","codename",b"codename","fingerprint",b"fingerprint","incremental",b"incremental","inner_version",b"inner_version","proc_version",b"proc_version"]) -> bool: ... + def ClearField(self, field_name: Literal["android_id",b"android_id","base_band",b"base_band","boot_id",b"boot_id","bootloader",b"bootloader","codename",b"codename","fingerprint",b"fingerprint","incremental",b"incremental","inner_version",b"inner_version","proc_version",b"proc_version"]) -> None: ... class SecTransInfo(Message): - DESCRIPTOR: Descriptor = ... + """oicq/wlogin_sdk/pb/sec_trans.java""" + DESCRIPTOR: Descriptor PHONE_BRAND_FIELD_NUMBER: int MODEL_TYPE_FIELD_NUMBER: int WIFI_MAC_FIELD_NUMBER: int @@ -73,23 +74,22 @@ class SecTransInfo(Message): OS_LANGUAGE_FIELD_NUMBER: int QQ_LANGUAGE_FIELD_NUMBER: int GPS_LOCATION_FIELD_NUMBER: int - phone_brand: Text = ... - model_type: Text = ... - wifi_mac: Text = ... - bssid: Text = ... - os_language: Text = ... - qq_language: int = ... - gps_location: Text = ... - + phone_brand: Text + model_type: Text + wifi_mac: Text + bssid: Text + os_language: Text + qq_language: int + gps_location: Text def __init__(self, *, - phone_brand : Optional[Text] = ..., - model_type : Optional[Text] = ..., - wifi_mac : Optional[Text] = ..., - bssid : Optional[Text] = ..., - os_language : Optional[Text] = ..., - qq_language : Optional[int] = ..., - gps_location : Optional[Text] = ..., + phone_brand: Optional[Text] = ..., + model_type: Optional[Text] = ..., + wifi_mac: Optional[Text] = ..., + bssid: Optional[Text] = ..., + os_language: Optional[Text] = ..., + qq_language: Optional[int] = ..., + gps_location: Optional[Text] = ..., ) -> None: ... - def HasField(self, field_name: Literal[u"bssid",b"bssid",u"gps_location",b"gps_location",u"model_type",b"model_type",u"os_language",b"os_language",u"phone_brand",b"phone_brand",u"qq_language",b"qq_language",u"wifi_mac",b"wifi_mac"]) -> bool: ... - def ClearField(self, field_name: Literal[u"bssid",b"bssid",u"gps_location",b"gps_location",u"model_type",b"model_type",u"os_language",b"os_language",u"phone_brand",b"phone_brand",u"qq_language",b"qq_language",u"wifi_mac",b"wifi_mac"]) -> None: ... + def HasField(self, field_name: Literal["bssid",b"bssid","gps_location",b"gps_location","model_type",b"model_type","os_language",b"os_language","phone_brand",b"phone_brand","qq_language",b"qq_language","wifi_mac",b"wifi_mac"]) -> bool: ... + def ClearField(self, field_name: Literal["bssid",b"bssid","gps_location",b"gps_location","model_type",b"model_type","os_language",b"os_language","phone_brand",b"phone_brand","qq_language",b"qq_language","wifi_mac",b"wifi_mac"]) -> None: ... From cc2c19ba34d58621450c3af0152588f4b979fccb Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Fri, 8 Apr 2022 14:21:44 +0800 Subject: [PATCH 071/113] :arrow_up: upgrade oidb proto files --- cai/client/online_push/__init__.py | 14 +- .../oidb/{group0x857 => cmd0x857}/__init__.py | 0 .../cmd0x857/group_open_sys_msg/__init__.py | 1 + .../group_open_sys_msg.proto | 47 + .../group_open_sys_msg_pb2.py | 74 + .../group_open_sys_msg_pb2.pyi | 161 +++ .../im/oidb/cmd0x857/troop_tips/__init__.py | 1 + .../oidb/cmd0x857/troop_tips/troop_tips.proto | 412 ++++++ .../cmd0x857/troop_tips/troop_tips_pb2.py | 439 ++++++ .../cmd0x857/troop_tips/troop_tips_pb2.pyi | 1261 +++++++++++++++++ cai/pb/im/oidb/group0x857/group0x857.proto | 83 -- cai/pb/im/oidb/group0x857/group0x857_pb2.py | 105 -- cai/pb/im/oidb/group0x857/group0x857_pb2.pyi | 267 ---- 13 files changed, 2403 insertions(+), 462 deletions(-) rename cai/pb/im/oidb/{group0x857 => cmd0x857}/__init__.py (100%) create mode 100644 cai/pb/im/oidb/cmd0x857/group_open_sys_msg/__init__.py create mode 100644 cai/pb/im/oidb/cmd0x857/group_open_sys_msg/group_open_sys_msg.proto create mode 100644 cai/pb/im/oidb/cmd0x857/group_open_sys_msg/group_open_sys_msg_pb2.py create mode 100644 cai/pb/im/oidb/cmd0x857/group_open_sys_msg/group_open_sys_msg_pb2.pyi create mode 100644 cai/pb/im/oidb/cmd0x857/troop_tips/__init__.py create mode 100644 cai/pb/im/oidb/cmd0x857/troop_tips/troop_tips.proto create mode 100644 cai/pb/im/oidb/cmd0x857/troop_tips/troop_tips_pb2.py create mode 100644 cai/pb/im/oidb/cmd0x857/troop_tips/troop_tips_pb2.pyi delete mode 100644 cai/pb/im/oidb/group0x857/group0x857.proto delete mode 100644 cai/pb/im/oidb/group0x857/group0x857_pb2.py delete mode 100644 cai/pb/im/oidb/group0x857/group0x857_pb2.pyi diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index 785f700a..bccd6f84 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -18,7 +18,7 @@ from cai.client.message_service import MESSAGE_DECODERS from cai.client.packet import UniPacket, IncomingPacket from cai.utils.jce import RequestPacket, RequestPacketVersion3 -from cai.pb.im.oidb.group0x857.group0x857_pb2 import TemplParam, NotifyMsgBody +from cai.pb.im.oidb.cmd0x857.troop_tips import TemplParam, NotifyMsgBody from .jce import DelMsgInfo, DeviceInfo, SvcRespPushMsg from .command import PushMsg, PushMsgError, PushMsgCommand @@ -271,19 +271,19 @@ async def handle_req_push( if stype == 0x14: # nudge client.dispatch_event( events.NudgeEvent( - **_parse_poke(notify.optGeneralGrayTip.msgTemplParam), + **_parse_poke(notify.general_gray_tip.templ_param), group=gid, ) ) elif stype == 0x11: # recall - msg = notify.optMsgRecall.recalledMsgList[0] + msg = notify.recall.recalled_msg_list[0] client.dispatch_event( events.MemberRecallMessageEvent( gid, - notify.optMsgRecall.uin, - notify.optMsgRecall.opType, - msg.authorUin, - msg.msgRandom, + notify.recall.uin, + notify.recall.op_type, + msg.author_uin, + msg.msg_random, msg.seq, msg.time, ) diff --git a/cai/pb/im/oidb/group0x857/__init__.py b/cai/pb/im/oidb/cmd0x857/__init__.py similarity index 100% rename from cai/pb/im/oidb/group0x857/__init__.py rename to cai/pb/im/oidb/cmd0x857/__init__.py diff --git a/cai/pb/im/oidb/cmd0x857/group_open_sys_msg/__init__.py b/cai/pb/im/oidb/cmd0x857/group_open_sys_msg/__init__.py new file mode 100644 index 00000000..c87bd76f --- /dev/null +++ b/cai/pb/im/oidb/cmd0x857/group_open_sys_msg/__init__.py @@ -0,0 +1 @@ +from .group_open_sys_msg_pb2 import * diff --git a/cai/pb/im/oidb/cmd0x857/group_open_sys_msg/group_open_sys_msg.proto b/cai/pb/im/oidb/cmd0x857/group_open_sys_msg/group_open_sys_msg.proto new file mode 100644 index 00000000..bd67e595 --- /dev/null +++ b/cai/pb/im/oidb/cmd0x857/group_open_sys_msg/group_open_sys_msg.proto @@ -0,0 +1,47 @@ +syntax = "proto2"; +package im.oidb.cmd0x857.group_open_sys_msg; + +// im/oidb/cmd0x857/GroupOpenSysMsg.java + +message LightApp { + optional string app = 1; + optional string view = 2; + optional string desc = 3; + optional string prompt = 4; + optional string ver = 5; + optional string meta = 6; + optional string config = 7; + optional Source source = 8; +} + +message RichMsg { + optional string title = 1; + optional string desc = 2; + optional string brief = 3; + optional string cover = 4; + optional string url = 5; + optional Source source = 6; +} + +message Sender { + optional uint64 uin = 1; + optional string nick = 2; + optional string avatar = 3; + optional string url = 4; +} + +message Source { + optional string name = 1; + optional string icon = 2; + optional string url = 3; +} + +message SysMsgBody { + optional uint64 group_id = 1; + optional uint64 appid = 2; + optional Sender sender = 3; + optional uint32 type = 4; + optional string content = 5; + optional RichMsg rich_msg = 6; + optional LightApp light_app = 7; +} diff --git a/cai/pb/im/oidb/cmd0x857/group_open_sys_msg/group_open_sys_msg_pb2.py b/cai/pb/im/oidb/cmd0x857/group_open_sys_msg/group_open_sys_msg_pb2.py new file mode 100644 index 00000000..968a2131 --- /dev/null +++ b/cai/pb/im/oidb/cmd0x857/group_open_sys_msg/group_open_sys_msg_pb2.py @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: cai/pb/im/oidb/cmd0x857/group_open_sys_msg/group_open_sys_msg.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\nCcai/pb/im/oidb/cmd0x857/group_open_sys_msg/group_open_sys_msg.proto\x12#im.oidb.cmd0x857.group_open_sys_msg\"\xab\x01\n\x08LightApp\x12\x0b\n\x03\x61pp\x18\x01 \x01(\t\x12\x0c\n\x04view\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x65sc\x18\x03 \x01(\t\x12\x0e\n\x06prompt\x18\x04 \x01(\t\x12\x0b\n\x03ver\x18\x05 \x01(\t\x12\x0c\n\x04meta\x18\x06 \x01(\t\x12\x0e\n\x06\x63onfig\x18\x07 \x01(\t\x12;\n\x06source\x18\x08 \x01(\x0b\x32+.im.oidb.cmd0x857.group_open_sys_msg.Source\"\x8e\x01\n\x07RichMsg\x12\r\n\x05title\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x65sc\x18\x02 \x01(\t\x12\r\n\x05\x62rief\x18\x03 \x01(\t\x12\r\n\x05\x63over\x18\x04 \x01(\t\x12\x0b\n\x03url\x18\x05 \x01(\t\x12;\n\x06source\x18\x06 \x01(\x0b\x32+.im.oidb.cmd0x857.group_open_sys_msg.Source\"@\n\x06Sender\x12\x0b\n\x03uin\x18\x01 \x01(\x04\x12\x0c\n\x04nick\x18\x02 \x01(\t\x12\x0e\n\x06\x61vatar\x18\x03 \x01(\t\x12\x0b\n\x03url\x18\x04 \x01(\t\"1\n\x06Source\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04icon\x18\x02 \x01(\t\x12\x0b\n\x03url\x18\x03 \x01(\t\"\x8b\x02\n\nSysMsgBody\x12\x10\n\x08group_id\x18\x01 \x01(\x04\x12\r\n\x05\x61ppid\x18\x02 \x01(\x04\x12;\n\x06sender\x18\x03 \x01(\x0b\x32+.im.oidb.cmd0x857.group_open_sys_msg.Sender\x12\x0c\n\x04type\x18\x04 \x01(\r\x12\x0f\n\x07\x63ontent\x18\x05 \x01(\t\x12>\n\x08rich_msg\x18\x06 \x01(\x0b\x32,.im.oidb.cmd0x857.group_open_sys_msg.RichMsg\x12@\n\tlight_app\x18\x07 \x01(\x0b\x32-.im.oidb.cmd0x857.group_open_sys_msg.LightApp') + + + +_LIGHTAPP = DESCRIPTOR.message_types_by_name['LightApp'] +_RICHMSG = DESCRIPTOR.message_types_by_name['RichMsg'] +_SENDER = DESCRIPTOR.message_types_by_name['Sender'] +_SOURCE = DESCRIPTOR.message_types_by_name['Source'] +_SYSMSGBODY = DESCRIPTOR.message_types_by_name['SysMsgBody'] +LightApp = _reflection.GeneratedProtocolMessageType('LightApp', (_message.Message,), { + 'DESCRIPTOR' : _LIGHTAPP, + '__module__' : 'cai.pb.im.oidb.cmd0x857.group_open_sys_msg.group_open_sys_msg_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.group_open_sys_msg.LightApp) + }) +_sym_db.RegisterMessage(LightApp) + +RichMsg = _reflection.GeneratedProtocolMessageType('RichMsg', (_message.Message,), { + 'DESCRIPTOR' : _RICHMSG, + '__module__' : 'cai.pb.im.oidb.cmd0x857.group_open_sys_msg.group_open_sys_msg_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.group_open_sys_msg.RichMsg) + }) +_sym_db.RegisterMessage(RichMsg) + +Sender = _reflection.GeneratedProtocolMessageType('Sender', (_message.Message,), { + 'DESCRIPTOR' : _SENDER, + '__module__' : 'cai.pb.im.oidb.cmd0x857.group_open_sys_msg.group_open_sys_msg_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.group_open_sys_msg.Sender) + }) +_sym_db.RegisterMessage(Sender) + +Source = _reflection.GeneratedProtocolMessageType('Source', (_message.Message,), { + 'DESCRIPTOR' : _SOURCE, + '__module__' : 'cai.pb.im.oidb.cmd0x857.group_open_sys_msg.group_open_sys_msg_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.group_open_sys_msg.Source) + }) +_sym_db.RegisterMessage(Source) + +SysMsgBody = _reflection.GeneratedProtocolMessageType('SysMsgBody', (_message.Message,), { + 'DESCRIPTOR' : _SYSMSGBODY, + '__module__' : 'cai.pb.im.oidb.cmd0x857.group_open_sys_msg.group_open_sys_msg_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.group_open_sys_msg.SysMsgBody) + }) +_sym_db.RegisterMessage(SysMsgBody) + +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _LIGHTAPP._serialized_start=109 + _LIGHTAPP._serialized_end=280 + _RICHMSG._serialized_start=283 + _RICHMSG._serialized_end=425 + _SENDER._serialized_start=427 + _SENDER._serialized_end=491 + _SOURCE._serialized_start=493 + _SOURCE._serialized_end=542 + _SYSMSGBODY._serialized_start=545 + _SYSMSGBODY._serialized_end=812 +# @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/oidb/cmd0x857/group_open_sys_msg/group_open_sys_msg_pb2.pyi b/cai/pb/im/oidb/cmd0x857/group_open_sys_msg/group_open_sys_msg_pb2.pyi new file mode 100644 index 00000000..03d0da15 --- /dev/null +++ b/cai/pb/im/oidb/cmd0x857/group_open_sys_msg/group_open_sys_msg_pb2.pyi @@ -0,0 +1,161 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +from builtins import ( + bool, + int, +) + +from google.protobuf.descriptor import ( + Descriptor, + FileDescriptor, +) + +from google.protobuf.message import ( + Message, +) + +from typing import ( + Optional, + Text, +) + +from typing_extensions import ( + Literal, +) + + +DESCRIPTOR: FileDescriptor + +class LightApp(Message): + """im/oidb/cmd0x857/GroupOpenSysMsg.java + + """ + DESCRIPTOR: Descriptor + APP_FIELD_NUMBER: int + VIEW_FIELD_NUMBER: int + DESC_FIELD_NUMBER: int + PROMPT_FIELD_NUMBER: int + VER_FIELD_NUMBER: int + META_FIELD_NUMBER: int + CONFIG_FIELD_NUMBER: int + SOURCE_FIELD_NUMBER: int + app: Text + view: Text + desc: Text + prompt: Text + ver: Text + meta: Text + config: Text + @property + def source(self) -> Source: ... + def __init__(self, + *, + app: Optional[Text] = ..., + view: Optional[Text] = ..., + desc: Optional[Text] = ..., + prompt: Optional[Text] = ..., + ver: Optional[Text] = ..., + meta: Optional[Text] = ..., + config: Optional[Text] = ..., + source: Optional[Source] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["app",b"app","config",b"config","desc",b"desc","meta",b"meta","prompt",b"prompt","source",b"source","ver",b"ver","view",b"view"]) -> bool: ... + def ClearField(self, field_name: Literal["app",b"app","config",b"config","desc",b"desc","meta",b"meta","prompt",b"prompt","source",b"source","ver",b"ver","view",b"view"]) -> None: ... + +class RichMsg(Message): + DESCRIPTOR: Descriptor + TITLE_FIELD_NUMBER: int + DESC_FIELD_NUMBER: int + BRIEF_FIELD_NUMBER: int + COVER_FIELD_NUMBER: int + URL_FIELD_NUMBER: int + SOURCE_FIELD_NUMBER: int + title: Text + desc: Text + brief: Text + cover: Text + url: Text + @property + def source(self) -> Source: ... + def __init__(self, + *, + title: Optional[Text] = ..., + desc: Optional[Text] = ..., + brief: Optional[Text] = ..., + cover: Optional[Text] = ..., + url: Optional[Text] = ..., + source: Optional[Source] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["brief",b"brief","cover",b"cover","desc",b"desc","source",b"source","title",b"title","url",b"url"]) -> bool: ... + def ClearField(self, field_name: Literal["brief",b"brief","cover",b"cover","desc",b"desc","source",b"source","title",b"title","url",b"url"]) -> None: ... + +class Sender(Message): + DESCRIPTOR: Descriptor + UIN_FIELD_NUMBER: int + NICK_FIELD_NUMBER: int + AVATAR_FIELD_NUMBER: int + URL_FIELD_NUMBER: int + uin: int + nick: Text + avatar: Text + url: Text + def __init__(self, + *, + uin: Optional[int] = ..., + nick: Optional[Text] = ..., + avatar: Optional[Text] = ..., + url: Optional[Text] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["avatar",b"avatar","nick",b"nick","uin",b"uin","url",b"url"]) -> bool: ... + def ClearField(self, field_name: Literal["avatar",b"avatar","nick",b"nick","uin",b"uin","url",b"url"]) -> None: ... + +class Source(Message): + DESCRIPTOR: Descriptor + NAME_FIELD_NUMBER: int + ICON_FIELD_NUMBER: int + URL_FIELD_NUMBER: int + name: Text + icon: Text + url: Text + def __init__(self, + *, + name: Optional[Text] = ..., + icon: Optional[Text] = ..., + url: Optional[Text] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["icon",b"icon","name",b"name","url",b"url"]) -> bool: ... + def ClearField(self, field_name: Literal["icon",b"icon","name",b"name","url",b"url"]) -> None: ... + +class SysMsgBody(Message): + DESCRIPTOR: Descriptor + GROUP_ID_FIELD_NUMBER: int + APPID_FIELD_NUMBER: int + SENDER_FIELD_NUMBER: int + TYPE_FIELD_NUMBER: int + CONTENT_FIELD_NUMBER: int + RICH_MSG_FIELD_NUMBER: int + LIGHT_APP_FIELD_NUMBER: int + group_id: int + appid: int + @property + def sender(self) -> Sender: ... + type: int + content: Text + @property + def rich_msg(self) -> RichMsg: ... + @property + def light_app(self) -> LightApp: ... + def __init__(self, + *, + group_id: Optional[int] = ..., + appid: Optional[int] = ..., + sender: Optional[Sender] = ..., + type: Optional[int] = ..., + content: Optional[Text] = ..., + rich_msg: Optional[RichMsg] = ..., + light_app: Optional[LightApp] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["appid",b"appid","content",b"content","group_id",b"group_id","light_app",b"light_app","rich_msg",b"rich_msg","sender",b"sender","type",b"type"]) -> bool: ... + def ClearField(self, field_name: Literal["appid",b"appid","content",b"content","group_id",b"group_id","light_app",b"light_app","rich_msg",b"rich_msg","sender",b"sender","type",b"type"]) -> None: ... diff --git a/cai/pb/im/oidb/cmd0x857/troop_tips/__init__.py b/cai/pb/im/oidb/cmd0x857/troop_tips/__init__.py new file mode 100644 index 00000000..6f4e17ff --- /dev/null +++ b/cai/pb/im/oidb/cmd0x857/troop_tips/__init__.py @@ -0,0 +1 @@ +from .troop_tips_pb2 import * diff --git a/cai/pb/im/oidb/cmd0x857/troop_tips/troop_tips.proto b/cai/pb/im/oidb/cmd0x857/troop_tips/troop_tips.proto new file mode 100644 index 00000000..df81bebb --- /dev/null +++ b/cai/pb/im/oidb/cmd0x857/troop_tips/troop_tips.proto @@ -0,0 +1,412 @@ +syntax = "proto2"; +package im.oidb.cmd0x857.troop_tips; + +// tencent/im/oidb/cmd0x857/TroopTips0x857.java + +message AIOGrayTipsInfo { + optional uint32 show_lastest = 1; + optional bytes content = 2; + optional uint32 remind = 3; + optional bytes brief = 4; + optional uint64 receiver_uin = 5; + optional uint32 reliao_admin_opt = 6; + optional uint32 robot_group_opt = 7; +} + +message AIOTopTipsInfo { + optional bytes content = 1; + optional uint32 icon = 2; + optional uint32 enum_action = 3; + optional bytes url = 4; + optional bytes data = 5; + optional bytes data_i = 6; + optional bytes data_a = 7; + optional bytes data_p = 8; +} + +message FloatedTipsInfo { + optional bytes content = 1; +} + +message GeneralGrayTipInfo { + optional uint64 busi_type = 1; + optional uint64 busi_id = 2; + optional uint32 ctrl_flag = 3; + optional uint32 c2c_type = 4; + optional uint32 service_type = 5; + optional uint64 templ_id = 6; + repeated TemplParam templ_param = 7; + optional bytes content = 8; + optional uint64 tips_seq_id = 10; + optional bytes pb_reserv = 100; +} + +message GoldMsgTipsElem { + optional uint32 type = 1; + optional string billno = 2; + optional uint32 result = 3; + optional uint32 amount = 4; + optional uint32 total = 5; + optional uint32 interval = 6; + optional uint32 finish = 7; + repeated uint64 uin = 8; + optional uint32 action = 9; +} + +message GrayData { + optional uint32 all_read = 1; + optional string feed_id = 2; +} + +message GroupAnnounceTBCInfo { + optional bytes feeds_id = 1; + optional uint64 group_id = 2; + optional uint32 action = 3; +} + +message GroupAsyncNotify { + optional uint32 msg_type = 1; + optional uint64 msg_seq = 2; +} + +message GroupInfoChange { + optional uint32 group_honor_switch = 1; + optional uint32 group_member_level_switch = 2; + optional uint32 group_flagext4 = 3; + optional uint32 appeal_deadline = 4; + optional uint32 group_flag = 5; + optional uint32 group_flagext3 = 7; + optional uint32 group_class_ext = 8; + optional uint32 group_info_ext_seq = 9; +} + +message GroupNotifyInfo { + optional uint32 auto_pull_flag = 1; + optional bytes feeds_id = 2; +} + +message InstCtrl { + repeated InstInfo send_to_inst = 1; + repeated InstInfo exclude_inst = 2; + optional InstInfo from_inst = 3; +} + +message InstInfo { + optional uint32 apppid = 1; + optional uint32 instid = 2; + optional uint32 platform = 3; + optional uint32 open_appid = 4; + optional uint32 productid = 5; + optional uint32 sso_bid = 6; + optional bytes guid = 7; + optional uint32 ver_min = 8; + optional uint32 ver_max = 9; +} + +message LbsShareChangePushInfo { + optional uint32 msg_type = 1; + optional bytes msg_info = 2; + optional bytes version_ctrl = 3; + optional uint64 group_id = 4; + optional uint64 oper_uin = 5; + optional bytes gray_tips = 6; + optional uint64 msg_seq = 7; + optional uint32 join_nums = 8; + optional uint32 push_type = 99; + optional bytes ext_info = 100; +} + +message LuckyBagNotify { + optional bytes msg_tips = 1; +} + +message MediaChangePushInfo { + optional uint32 msg_type = 1; + optional bytes msg_info = 2; + optional bytes version_ctrl = 3; + optional uint64 group_id = 4; + optional uint64 oper_uin = 5; + optional bytes gray_tips = 6; + optional uint64 msg_seq = 7; + optional uint32 join_nums = 8; + optional PersonalSetting per_setting = 9; + optional uint32 play_mode = 10; + optional bool is_join_when_start = 11; + optional uint32 media_type = 99; + optional bytes ext_info = 100; + + message PersonalSetting { + optional uint32 theme_id = 1; + optional uint32 player_id = 2; + optional uint32 font_id = 3; + } +} + +message MessageBoxInfo { + optional bytes content = 1; + optional bytes title = 2; + optional bytes button = 3; +} + +message MessageRecallReminder { + optional uint64 uin = 1; + optional bytes nickname = 2; + repeated MessageMeta recalled_msg_list = 3; + optional bytes reminder_content = 4; + optional bytes userdef = 5; + optional uint32 group_type = 6; + optional uint32 op_type = 7; + optional uint64 admin_uin = 8; + optional WithDrawWordingInfo wording_info = 9; + + message MessageMeta { + optional uint32 seq = 1; + optional uint32 time = 2; + optional uint32 msg_random = 3; + optional uint32 msg_type = 4; + optional uint32 msg_flag = 5; + optional uint64 author_uin = 6; + optional uint32 is_anony_msg = 7; + } + + message WithDrawWordingInfo { + optional int32 item_id = 1; + optional string item_name = 2; + } +} + +message MiniAppNotify { + optional bytes msg = 1; +} + +message NotifyMsgBody { + optional uint32 enum_type = 1; + optional uint64 msg_time = 2; + optional uint64 msg_expires = 3; + optional uint64 group_code = 4; + optional AIOGrayTipsInfo graytips = 5; + optional MessageBoxInfo messagebox = 6; + optional FloatedTipsInfo floatedtips = 7; + optional AIOTopTipsInfo toptips = 8; + optional RedGrayTipsInfo redtips = 9; + optional GroupNotifyInfo group_notify = 10; + optional MessageRecallReminder recall = 11; + optional ThemeStateNotify theme_notify = 12; + optional uint32 service_type = 13; + optional NotifyObjmsgUpdate objmsg_update = 14; + optional WereWolfPush werewolf_push = 15; + // optional apollo_game_status.STCMGameMessage stcm_game_state = 16; + // optional apollo_push_msgInfo.STPushMsgElem apllo_msg_push = 17; + optional GoldMsgTipsElem goldtips = 18; + optional MiniAppNotify miniapp_notify = 20; + optional uint64 sender_uin = 21; + optional LuckyBagNotify luckybag_notify = 22; + optional TroopFormGrayTipsInfo troopformtips_push = 23; + optional MediaChangePushInfo media_push = 24; + optional GeneralGrayTipInfo general_gray_tip = 26; + optional VideoChangePushInfo video_push = 27; + optional LbsShareChangePushInfo lbs_share_change_plus_info = 28; + optional SingChangePushInfo sing_push = 29; + optional GroupInfoChange group_info_change = 30; + optional GroupAnnounceTBCInfo group_announce_tbc_info = 31; + optional QQVedioGamePushInfo qq_vedio_game_push_info = 32; + optional QQGroupDigestMsg qq_group_digest_msg = 33; + optional StudyRoomMemberChangePush study_room_member_msg = 34; + optional QQVaLiveNotifyMsg qq_live_notify = 35; + optional GroupAsyncNotify group_async_notidy = 36; + optional uint64 group_cur_msg_seq = 37; + optional QQGroupDigestMsgSummary group_digest_msg_summary = 38; + optional uint64 sysdb_msg_id = 39; + optional RevertGrayTipsMsgTraceless revert_graytips_traceless = 40; +} + +message NotifyObjmsgUpdate { + optional bytes objmsg_id = 1; + optional uint32 update_type = 2; + optional bytes ext_msg = 3; +} + +message QQGroupDigestMsg { + optional uint64 group_code = 1; + optional uint32 seq = 2; + optional uint32 random = 3; + optional int32 op_type = 4; + optional uint64 sender = 5; + optional uint64 digest_oper = 6; + optional uint32 op_time = 7; + optional uint32 lastest_msg_seq = 8; + optional bytes oper_nick = 9; + optional bytes sender_nick = 10; + optional int32 ext_info = 11; +} + +message QQGroupDigestMsgSummary { + optional uint64 digest_oper = 1; + optional int32 op_type = 2; + optional uint32 op_time = 3; + optional bytes digest_nick = 4; + optional int32 succ_cnt = 5; + repeated QQGroupDigestSummaryInfo summary_info = 6; +} + +message QQGroupDigestSummaryInfo { + optional uint32 seq = 1; + optional uint32 random = 2; + optional uint32 error_code = 3; +} + +message QQVaLiveNotifyMsg { + optional bytes uid = 1; + optional int32 notify_type = 2; + optional bytes ext1 = 3; + optional bytes ext2 = 4; + optional bytes ext3 = 5; +} + +message QQVedioGamePushInfo { + optional uint32 msg_type = 1; + optional uint64 group_code = 2; + optional uint64 oper_uin = 3; + optional bytes version_ctrl = 4; + optional bytes ext_info = 5; +} + +message RedGrayTipsInfo { + optional uint32 show_lastest = 1; + optional uint64 sender_uin = 2; + optional uint64 receiver_uin = 3; + optional bytes sender_rich_content = 4; + optional bytes receiver_rich_content = 5; + optional bytes authkey = 6; + optional sint32 msgtype = 7; + optional uint32 lucky_flag = 8; + optional uint32 hide_flag = 9; + optional bytes pc_body = 10; + optional uint32 icon = 11; + optional uint64 lucky_uin = 12; + optional uint32 time = 13; + optional uint32 random = 14; + optional bytes broadcast_rich_content = 15; + optional bytes idiom = 16; + optional uint32 idiom_seq = 17; + optional bytes idiom_alpha = 18; + optional bytes jumpurl = 19; + optional uint32 subchannel = 20; + optional bytes poem_rule = 21; +} + +message ReqBody { + optional uint64 group_code = 1; + repeated uint64 memberuins = 2; + optional uint32 offline = 3; + optional InstCtrl inst_ctrl = 4; + optional bytes msg = 5; + optional uint32 busi_type = 6; +} + +message RevertGrayTipsMsgTraceless { + optional uint64 from = 1; + optional uint64 to = 2; + optional uint64 group_code = 3; + optional uint64 busi_id = 4; + optional uint64 tips_seq_id = 5; +} + +message RspBody { + optional uint64 group_code = 1; +} + +message SingChangePushInfo { + optional uint64 seq = 1; + optional uint32 action_type = 2; + optional uint64 group_id = 3; + optional uint64 oper_uin = 4; + optional bytes gray_tips = 5; + optional uint32 join_nums = 6; +} + +message StudyRoomMemberChangePush { + optional uint32 member_count = 1; +} + +message TemplParam { + optional bytes name = 1; + optional bytes value = 2; +} + +message ThemeStateNotify { + optional uint32 state = 1; + optional bytes feeds_id = 2; + optional bytes theme_name = 3; + optional uint64 action_uin = 4; + optional uint64 create_uin = 5; +} + +message TroopFormGrayTipsInfo { + optional uint64 writer_uin = 1; + optional uint64 creator_uin = 2; + optional bytes rich_content = 3; + optional bytes opt_bytes_url = 4; + optional bytes creator_nick = 5; +} + +message VideoChangePushInfo { + optional uint64 seq = 1; + optional uint32 action_type = 2; + optional uint64 group_id = 3; + optional uint64 oper_uin = 4; + optional bytes gray_tips = 5; + optional uint32 join_nums = 6; + optional uint32 join_state = 7; + optional bytes ext_info = 100; +} + +message WereWolfPush { + optional uint32 push_type = 1; + optional uint64 game_room = 2; + optional uint32 enum_game_state = 3; + optional uint32 game_round = 4; + repeated Role roles = 5; + optional uint64 speaker = 6; + optional uint64 judge_uin = 7; + optional bytes judge_words = 8; + optional uint32 enum_operation = 9; + optional uint64 src_user = 10; + optional uint64 dst_user = 11; + repeated uint64 dead_users = 12; + optional uint32 game_result = 13; + optional uint32 timeout_sec = 14; + optional uint32 kill_confirmed = 15; + optional bytes judge_nickname = 16; + repeated uint64 voted_tie_users = 17; + + message GameRecord { + optional uint32 total = 1; + optional uint32 win = 2; + optional uint32 lose = 3; + optional uint32 draw = 4; + } + + message Role { + optional uint64 uin = 1; + optional uint32 enum_type = 2; + optional uint32 enum_state = 3; + optional uint32 can_speak = 4; + optional uint32 can_listen = 5; + optional uint32 position = 6; + optional uint32 can_vote = 7; + optional uint32 can_voted = 8; + optional uint32 already_checked = 9; + optional uint32 already_saved = 10; + optional uint32 already_poisoned = 11; + optional uint32 player_state = 12; + optional uint32 enum_dead_op = 13; + optional uint32 enum_operation = 14; + optional uint64 dst_user = 15; + optional uint32 operation_round = 16; + optional GameRecord game_record = 17; + optional uint32 is_werewolf = 18; + optional uint64 defended_user = 19; + optional uint32 is_sheriff = 20; + } +} diff --git a/cai/pb/im/oidb/cmd0x857/troop_tips/troop_tips_pb2.py b/cai/pb/im/oidb/cmd0x857/troop_tips/troop_tips_pb2.py new file mode 100644 index 00000000..b0f2f199 --- /dev/null +++ b/cai/pb/im/oidb/cmd0x857/troop_tips/troop_tips_pb2.py @@ -0,0 +1,439 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: cai/pb/im/oidb/cmd0x857/troop_tips/troop_tips.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n3cai/pb/im/oidb/cmd0x857/troop_tips/troop_tips.proto\x12\x1bim.oidb.cmd0x857.troop_tips\"\xa0\x01\n\x0f\x41IOGrayTipsInfo\x12\x14\n\x0cshow_lastest\x18\x01 \x01(\r\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\x12\x0e\n\x06remind\x18\x03 \x01(\r\x12\r\n\x05\x62rief\x18\x04 \x01(\x0c\x12\x14\n\x0creceiver_uin\x18\x05 \x01(\x04\x12\x18\n\x10reliao_admin_opt\x18\x06 \x01(\r\x12\x17\n\x0frobot_group_opt\x18\x07 \x01(\r\"\x8f\x01\n\x0e\x41IOTopTipsInfo\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\x0c\x12\x0c\n\x04icon\x18\x02 \x01(\r\x12\x13\n\x0b\x65num_action\x18\x03 \x01(\r\x12\x0b\n\x03url\x18\x04 \x01(\x0c\x12\x0c\n\x04\x64\x61ta\x18\x05 \x01(\x0c\x12\x0e\n\x06\x64\x61ta_i\x18\x06 \x01(\x0c\x12\x0e\n\x06\x64\x61ta_a\x18\x07 \x01(\x0c\x12\x0e\n\x06\x64\x61ta_p\x18\x08 \x01(\x0c\"\"\n\x0f\x46loatedTipsInfo\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\x0c\"\xfc\x01\n\x12GeneralGrayTipInfo\x12\x11\n\tbusi_type\x18\x01 \x01(\x04\x12\x0f\n\x07\x62usi_id\x18\x02 \x01(\x04\x12\x11\n\tctrl_flag\x18\x03 \x01(\r\x12\x10\n\x08\x63\x32\x63_type\x18\x04 \x01(\r\x12\x14\n\x0cservice_type\x18\x05 \x01(\r\x12\x10\n\x08templ_id\x18\x06 \x01(\x04\x12<\n\x0btempl_param\x18\x07 \x03(\x0b\x32\'.im.oidb.cmd0x857.troop_tips.TemplParam\x12\x0f\n\x07\x63ontent\x18\x08 \x01(\x0c\x12\x13\n\x0btips_seq_id\x18\n \x01(\x04\x12\x11\n\tpb_reserv\x18\x64 \x01(\x0c\"\x9d\x01\n\x0fGoldMsgTipsElem\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x0e\n\x06\x62illno\x18\x02 \x01(\t\x12\x0e\n\x06result\x18\x03 \x01(\r\x12\x0e\n\x06\x61mount\x18\x04 \x01(\r\x12\r\n\x05total\x18\x05 \x01(\r\x12\x10\n\x08interval\x18\x06 \x01(\r\x12\x0e\n\x06\x66inish\x18\x07 \x01(\r\x12\x0b\n\x03uin\x18\x08 \x03(\x04\x12\x0e\n\x06\x61\x63tion\x18\t \x01(\r\"-\n\x08GrayData\x12\x10\n\x08\x61ll_read\x18\x01 \x01(\r\x12\x0f\n\x07\x66\x65\x65\x64_id\x18\x02 \x01(\t\"J\n\x14GroupAnnounceTBCInfo\x12\x10\n\x08\x66\x65\x65\x64s_id\x18\x01 \x01(\x0c\x12\x10\n\x08group_id\x18\x02 \x01(\x04\x12\x0e\n\x06\x61\x63tion\x18\x03 \x01(\r\"5\n\x10GroupAsyncNotify\x12\x10\n\x08msg_type\x18\x01 \x01(\r\x12\x0f\n\x07msg_seq\x18\x02 \x01(\x04\"\xe2\x01\n\x0fGroupInfoChange\x12\x1a\n\x12group_honor_switch\x18\x01 \x01(\r\x12!\n\x19group_member_level_switch\x18\x02 \x01(\r\x12\x16\n\x0egroup_flagext4\x18\x03 \x01(\r\x12\x17\n\x0f\x61ppeal_deadline\x18\x04 \x01(\r\x12\x12\n\ngroup_flag\x18\x05 \x01(\r\x12\x16\n\x0egroup_flagext3\x18\x07 \x01(\r\x12\x17\n\x0fgroup_class_ext\x18\x08 \x01(\r\x12\x1a\n\x12group_info_ext_seq\x18\t \x01(\r\";\n\x0fGroupNotifyInfo\x12\x16\n\x0e\x61uto_pull_flag\x18\x01 \x01(\r\x12\x10\n\x08\x66\x65\x65\x64s_id\x18\x02 \x01(\x0c\"\xbe\x01\n\x08InstCtrl\x12;\n\x0csend_to_inst\x18\x01 \x03(\x0b\x32%.im.oidb.cmd0x857.troop_tips.InstInfo\x12;\n\x0c\x65xclude_inst\x18\x02 \x03(\x0b\x32%.im.oidb.cmd0x857.troop_tips.InstInfo\x12\x38\n\tfrom_inst\x18\x03 \x01(\x0b\x32%.im.oidb.cmd0x857.troop_tips.InstInfo\"\xa4\x01\n\x08InstInfo\x12\x0e\n\x06\x61pppid\x18\x01 \x01(\r\x12\x0e\n\x06instid\x18\x02 \x01(\r\x12\x10\n\x08platform\x18\x03 \x01(\r\x12\x12\n\nopen_appid\x18\x04 \x01(\r\x12\x11\n\tproductid\x18\x05 \x01(\r\x12\x0f\n\x07sso_bid\x18\x06 \x01(\r\x12\x0c\n\x04guid\x18\x07 \x01(\x0c\x12\x0f\n\x07ver_min\x18\x08 \x01(\r\x12\x0f\n\x07ver_max\x18\t \x01(\r\"\xd2\x01\n\x16LbsShareChangePushInfo\x12\x10\n\x08msg_type\x18\x01 \x01(\r\x12\x10\n\x08msg_info\x18\x02 \x01(\x0c\x12\x14\n\x0cversion_ctrl\x18\x03 \x01(\x0c\x12\x10\n\x08group_id\x18\x04 \x01(\x04\x12\x10\n\x08oper_uin\x18\x05 \x01(\x04\x12\x11\n\tgray_tips\x18\x06 \x01(\x0c\x12\x0f\n\x07msg_seq\x18\x07 \x01(\x04\x12\x11\n\tjoin_nums\x18\x08 \x01(\r\x12\x11\n\tpush_type\x18\x63 \x01(\r\x12\x10\n\x08\x65xt_info\x18\x64 \x01(\x0c\"\"\n\x0eLuckyBagNotify\x12\x10\n\x08msg_tips\x18\x01 \x01(\x0c\"\x9f\x03\n\x13MediaChangePushInfo\x12\x10\n\x08msg_type\x18\x01 \x01(\r\x12\x10\n\x08msg_info\x18\x02 \x01(\x0c\x12\x14\n\x0cversion_ctrl\x18\x03 \x01(\x0c\x12\x10\n\x08group_id\x18\x04 \x01(\x04\x12\x10\n\x08oper_uin\x18\x05 \x01(\x04\x12\x11\n\tgray_tips\x18\x06 \x01(\x0c\x12\x0f\n\x07msg_seq\x18\x07 \x01(\x04\x12\x11\n\tjoin_nums\x18\x08 \x01(\r\x12U\n\x0bper_setting\x18\t \x01(\x0b\x32@.im.oidb.cmd0x857.troop_tips.MediaChangePushInfo.PersonalSetting\x12\x11\n\tplay_mode\x18\n \x01(\r\x12\x1a\n\x12is_join_when_start\x18\x0b \x01(\x08\x12\x12\n\nmedia_type\x18\x63 \x01(\r\x12\x10\n\x08\x65xt_info\x18\x64 \x01(\x0c\x1aG\n\x0fPersonalSetting\x12\x10\n\x08theme_id\x18\x01 \x01(\r\x12\x11\n\tplayer_id\x18\x02 \x01(\r\x12\x0f\n\x07\x66ont_id\x18\x03 \x01(\r\"@\n\x0eMessageBoxInfo\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\x0c\x12\r\n\x05title\x18\x02 \x01(\x0c\x12\x0e\n\x06\x62utton\x18\x03 \x01(\x0c\"\x9a\x04\n\x15MessageRecallReminder\x12\x0b\n\x03uin\x18\x01 \x01(\x04\x12\x10\n\x08nickname\x18\x02 \x01(\x0c\x12Y\n\x11recalled_msg_list\x18\x03 \x03(\x0b\x32>.im.oidb.cmd0x857.troop_tips.MessageRecallReminder.MessageMeta\x12\x18\n\x10reminder_content\x18\x04 \x01(\x0c\x12\x0f\n\x07userdef\x18\x05 \x01(\x0c\x12\x12\n\ngroup_type\x18\x06 \x01(\r\x12\x0f\n\x07op_type\x18\x07 \x01(\r\x12\x11\n\tadmin_uin\x18\x08 \x01(\x04\x12\\\n\x0cwording_info\x18\t \x01(\x0b\x32\x46.im.oidb.cmd0x857.troop_tips.MessageRecallReminder.WithDrawWordingInfo\x1a\x8a\x01\n\x0bMessageMeta\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x0c\n\x04time\x18\x02 \x01(\r\x12\x12\n\nmsg_random\x18\x03 \x01(\r\x12\x10\n\x08msg_type\x18\x04 \x01(\r\x12\x10\n\x08msg_flag\x18\x05 \x01(\r\x12\x12\n\nauthor_uin\x18\x06 \x01(\x04\x12\x14\n\x0cis_anony_msg\x18\x07 \x01(\r\x1a\x39\n\x13WithDrawWordingInfo\x12\x0f\n\x07item_id\x18\x01 \x01(\x05\x12\x11\n\titem_name\x18\x02 \x01(\t\"\x1c\n\rMiniAppNotify\x12\x0b\n\x03msg\x18\x01 \x01(\x0c\"\xb8\x11\n\rNotifyMsgBody\x12\x11\n\tenum_type\x18\x01 \x01(\r\x12\x10\n\x08msg_time\x18\x02 \x01(\x04\x12\x13\n\x0bmsg_expires\x18\x03 \x01(\x04\x12\x12\n\ngroup_code\x18\x04 \x01(\x04\x12>\n\x08graytips\x18\x05 \x01(\x0b\x32,.im.oidb.cmd0x857.troop_tips.AIOGrayTipsInfo\x12?\n\nmessagebox\x18\x06 \x01(\x0b\x32+.im.oidb.cmd0x857.troop_tips.MessageBoxInfo\x12\x41\n\x0b\x66loatedtips\x18\x07 \x01(\x0b\x32,.im.oidb.cmd0x857.troop_tips.FloatedTipsInfo\x12<\n\x07toptips\x18\x08 \x01(\x0b\x32+.im.oidb.cmd0x857.troop_tips.AIOTopTipsInfo\x12=\n\x07redtips\x18\t \x01(\x0b\x32,.im.oidb.cmd0x857.troop_tips.RedGrayTipsInfo\x12\x42\n\x0cgroup_notify\x18\n \x01(\x0b\x32,.im.oidb.cmd0x857.troop_tips.GroupNotifyInfo\x12\x42\n\x06recall\x18\x0b \x01(\x0b\x32\x32.im.oidb.cmd0x857.troop_tips.MessageRecallReminder\x12\x43\n\x0ctheme_notify\x18\x0c \x01(\x0b\x32-.im.oidb.cmd0x857.troop_tips.ThemeStateNotify\x12\x14\n\x0cservice_type\x18\r \x01(\r\x12\x46\n\robjmsg_update\x18\x0e \x01(\x0b\x32/.im.oidb.cmd0x857.troop_tips.NotifyObjmsgUpdate\x12@\n\rwerewolf_push\x18\x0f \x01(\x0b\x32).im.oidb.cmd0x857.troop_tips.WereWolfPush\x12>\n\x08goldtips\x18\x12 \x01(\x0b\x32,.im.oidb.cmd0x857.troop_tips.GoldMsgTipsElem\x12\x42\n\x0eminiapp_notify\x18\x14 \x01(\x0b\x32*.im.oidb.cmd0x857.troop_tips.MiniAppNotify\x12\x12\n\nsender_uin\x18\x15 \x01(\x04\x12\x44\n\x0fluckybag_notify\x18\x16 \x01(\x0b\x32+.im.oidb.cmd0x857.troop_tips.LuckyBagNotify\x12N\n\x12troopformtips_push\x18\x17 \x01(\x0b\x32\x32.im.oidb.cmd0x857.troop_tips.TroopFormGrayTipsInfo\x12\x44\n\nmedia_push\x18\x18 \x01(\x0b\x32\x30.im.oidb.cmd0x857.troop_tips.MediaChangePushInfo\x12I\n\x10general_gray_tip\x18\x1a \x01(\x0b\x32/.im.oidb.cmd0x857.troop_tips.GeneralGrayTipInfo\x12\x44\n\nvideo_push\x18\x1b \x01(\x0b\x32\x30.im.oidb.cmd0x857.troop_tips.VideoChangePushInfo\x12W\n\x1albs_share_change_plus_info\x18\x1c \x01(\x0b\x32\x33.im.oidb.cmd0x857.troop_tips.LbsShareChangePushInfo\x12\x42\n\tsing_push\x18\x1d \x01(\x0b\x32/.im.oidb.cmd0x857.troop_tips.SingChangePushInfo\x12G\n\x11group_info_change\x18\x1e \x01(\x0b\x32,.im.oidb.cmd0x857.troop_tips.GroupInfoChange\x12R\n\x17group_announce_tbc_info\x18\x1f \x01(\x0b\x32\x31.im.oidb.cmd0x857.troop_tips.GroupAnnounceTBCInfo\x12Q\n\x17qq_vedio_game_push_info\x18 \x01(\x0b\x32\x30.im.oidb.cmd0x857.troop_tips.QQVedioGamePushInfo\x12J\n\x13qq_group_digest_msg\x18! \x01(\x0b\x32-.im.oidb.cmd0x857.troop_tips.QQGroupDigestMsg\x12U\n\x15study_room_member_msg\x18\" \x01(\x0b\x32\x36.im.oidb.cmd0x857.troop_tips.StudyRoomMemberChangePush\x12\x46\n\x0eqq_live_notify\x18# \x01(\x0b\x32..im.oidb.cmd0x857.troop_tips.QQVaLiveNotifyMsg\x12I\n\x12group_async_notidy\x18$ \x01(\x0b\x32-.im.oidb.cmd0x857.troop_tips.GroupAsyncNotify\x12\x19\n\x11group_cur_msg_seq\x18% \x01(\x04\x12V\n\x18group_digest_msg_summary\x18& \x01(\x0b\x32\x34.im.oidb.cmd0x857.troop_tips.QQGroupDigestMsgSummary\x12\x14\n\x0csysdb_msg_id\x18\' \x01(\x04\x12Z\n\x19revert_graytips_traceless\x18( \x01(\x0b\x32\x37.im.oidb.cmd0x857.troop_tips.RevertGrayTipsMsgTraceless\"M\n\x12NotifyObjmsgUpdate\x12\x11\n\tobjmsg_id\x18\x01 \x01(\x0c\x12\x13\n\x0bupdate_type\x18\x02 \x01(\r\x12\x0f\n\x07\x65xt_msg\x18\x03 \x01(\x0c\"\xdd\x01\n\x10QQGroupDigestMsg\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x0b\n\x03seq\x18\x02 \x01(\r\x12\x0e\n\x06random\x18\x03 \x01(\r\x12\x0f\n\x07op_type\x18\x04 \x01(\x05\x12\x0e\n\x06sender\x18\x05 \x01(\x04\x12\x13\n\x0b\x64igest_oper\x18\x06 \x01(\x04\x12\x0f\n\x07op_time\x18\x07 \x01(\r\x12\x17\n\x0flastest_msg_seq\x18\x08 \x01(\r\x12\x11\n\toper_nick\x18\t \x01(\x0c\x12\x13\n\x0bsender_nick\x18\n \x01(\x0c\x12\x10\n\x08\x65xt_info\x18\x0b \x01(\x05\"\xc4\x01\n\x17QQGroupDigestMsgSummary\x12\x13\n\x0b\x64igest_oper\x18\x01 \x01(\x04\x12\x0f\n\x07op_type\x18\x02 \x01(\x05\x12\x0f\n\x07op_time\x18\x03 \x01(\r\x12\x13\n\x0b\x64igest_nick\x18\x04 \x01(\x0c\x12\x10\n\x08succ_cnt\x18\x05 \x01(\x05\x12K\n\x0csummary_info\x18\x06 \x03(\x0b\x32\x35.im.oidb.cmd0x857.troop_tips.QQGroupDigestSummaryInfo\"K\n\x18QQGroupDigestSummaryInfo\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x0e\n\x06random\x18\x02 \x01(\r\x12\x12\n\nerror_code\x18\x03 \x01(\r\"_\n\x11QQVaLiveNotifyMsg\x12\x0b\n\x03uid\x18\x01 \x01(\x0c\x12\x13\n\x0bnotify_type\x18\x02 \x01(\x05\x12\x0c\n\x04\x65xt1\x18\x03 \x01(\x0c\x12\x0c\n\x04\x65xt2\x18\x04 \x01(\x0c\x12\x0c\n\x04\x65xt3\x18\x05 \x01(\x0c\"u\n\x13QQVedioGamePushInfo\x12\x10\n\x08msg_type\x18\x01 \x01(\r\x12\x12\n\ngroup_code\x18\x02 \x01(\x04\x12\x10\n\x08oper_uin\x18\x03 \x01(\x04\x12\x14\n\x0cversion_ctrl\x18\x04 \x01(\x0c\x12\x10\n\x08\x65xt_info\x18\x05 \x01(\x0c\"\xb5\x03\n\x0fRedGrayTipsInfo\x12\x14\n\x0cshow_lastest\x18\x01 \x01(\r\x12\x12\n\nsender_uin\x18\x02 \x01(\x04\x12\x14\n\x0creceiver_uin\x18\x03 \x01(\x04\x12\x1b\n\x13sender_rich_content\x18\x04 \x01(\x0c\x12\x1d\n\x15receiver_rich_content\x18\x05 \x01(\x0c\x12\x0f\n\x07\x61uthkey\x18\x06 \x01(\x0c\x12\x0f\n\x07msgtype\x18\x07 \x01(\x11\x12\x12\n\nlucky_flag\x18\x08 \x01(\r\x12\x11\n\thide_flag\x18\t \x01(\r\x12\x0f\n\x07pc_body\x18\n \x01(\x0c\x12\x0c\n\x04icon\x18\x0b \x01(\r\x12\x11\n\tlucky_uin\x18\x0c \x01(\x04\x12\x0c\n\x04time\x18\r \x01(\r\x12\x0e\n\x06random\x18\x0e \x01(\r\x12\x1e\n\x16\x62roadcast_rich_content\x18\x0f \x01(\x0c\x12\r\n\x05idiom\x18\x10 \x01(\x0c\x12\x11\n\tidiom_seq\x18\x11 \x01(\r\x12\x13\n\x0bidiom_alpha\x18\x12 \x01(\x0c\x12\x0f\n\x07jumpurl\x18\x13 \x01(\x0c\x12\x12\n\nsubchannel\x18\x14 \x01(\r\x12\x11\n\tpoem_rule\x18\x15 \x01(\x0c\"\x9c\x01\n\x07ReqBody\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\x12\x12\n\nmemberuins\x18\x02 \x03(\x04\x12\x0f\n\x07offline\x18\x03 \x01(\r\x12\x38\n\tinst_ctrl\x18\x04 \x01(\x0b\x32%.im.oidb.cmd0x857.troop_tips.InstCtrl\x12\x0b\n\x03msg\x18\x05 \x01(\x0c\x12\x11\n\tbusi_type\x18\x06 \x01(\r\"p\n\x1aRevertGrayTipsMsgTraceless\x12\x0c\n\x04\x66rom\x18\x01 \x01(\x04\x12\n\n\x02to\x18\x02 \x01(\x04\x12\x12\n\ngroup_code\x18\x03 \x01(\x04\x12\x0f\n\x07\x62usi_id\x18\x04 \x01(\x04\x12\x13\n\x0btips_seq_id\x18\x05 \x01(\x04\"\x1d\n\x07RspBody\x12\x12\n\ngroup_code\x18\x01 \x01(\x04\"\x80\x01\n\x12SingChangePushInfo\x12\x0b\n\x03seq\x18\x01 \x01(\x04\x12\x13\n\x0b\x61\x63tion_type\x18\x02 \x01(\r\x12\x10\n\x08group_id\x18\x03 \x01(\x04\x12\x10\n\x08oper_uin\x18\x04 \x01(\x04\x12\x11\n\tgray_tips\x18\x05 \x01(\x0c\x12\x11\n\tjoin_nums\x18\x06 \x01(\r\"1\n\x19StudyRoomMemberChangePush\x12\x14\n\x0cmember_count\x18\x01 \x01(\r\")\n\nTemplParam\x12\x0c\n\x04name\x18\x01 \x01(\x0c\x12\r\n\x05value\x18\x02 \x01(\x0c\"o\n\x10ThemeStateNotify\x12\r\n\x05state\x18\x01 \x01(\r\x12\x10\n\x08\x66\x65\x65\x64s_id\x18\x02 \x01(\x0c\x12\x12\n\ntheme_name\x18\x03 \x01(\x0c\x12\x12\n\naction_uin\x18\x04 \x01(\x04\x12\x12\n\ncreate_uin\x18\x05 \x01(\x04\"\x83\x01\n\x15TroopFormGrayTipsInfo\x12\x12\n\nwriter_uin\x18\x01 \x01(\x04\x12\x13\n\x0b\x63reator_uin\x18\x02 \x01(\x04\x12\x14\n\x0crich_content\x18\x03 \x01(\x0c\x12\x15\n\ropt_bytes_url\x18\x04 \x01(\x0c\x12\x14\n\x0c\x63reator_nick\x18\x05 \x01(\x0c\"\xa7\x01\n\x13VideoChangePushInfo\x12\x0b\n\x03seq\x18\x01 \x01(\x04\x12\x13\n\x0b\x61\x63tion_type\x18\x02 \x01(\r\x12\x10\n\x08group_id\x18\x03 \x01(\x04\x12\x10\n\x08oper_uin\x18\x04 \x01(\x04\x12\x11\n\tgray_tips\x18\x05 \x01(\x0c\x12\x11\n\tjoin_nums\x18\x06 \x01(\r\x12\x12\n\njoin_state\x18\x07 \x01(\r\x12\x10\n\x08\x65xt_info\x18\x64 \x01(\x0c\"\xc1\x07\n\x0cWereWolfPush\x12\x11\n\tpush_type\x18\x01 \x01(\r\x12\x11\n\tgame_room\x18\x02 \x01(\x04\x12\x17\n\x0f\x65num_game_state\x18\x03 \x01(\r\x12\x12\n\ngame_round\x18\x04 \x01(\r\x12=\n\x05roles\x18\x05 \x03(\x0b\x32..im.oidb.cmd0x857.troop_tips.WereWolfPush.Role\x12\x0f\n\x07speaker\x18\x06 \x01(\x04\x12\x11\n\tjudge_uin\x18\x07 \x01(\x04\x12\x13\n\x0bjudge_words\x18\x08 \x01(\x0c\x12\x16\n\x0e\x65num_operation\x18\t \x01(\r\x12\x10\n\x08src_user\x18\n \x01(\x04\x12\x10\n\x08\x64st_user\x18\x0b \x01(\x04\x12\x12\n\ndead_users\x18\x0c \x03(\x04\x12\x13\n\x0bgame_result\x18\r \x01(\r\x12\x13\n\x0btimeout_sec\x18\x0e \x01(\r\x12\x16\n\x0ekill_confirmed\x18\x0f \x01(\r\x12\x16\n\x0ejudge_nickname\x18\x10 \x01(\x0c\x12\x17\n\x0fvoted_tie_users\x18\x11 \x03(\x04\x1a\x44\n\nGameRecord\x12\r\n\x05total\x18\x01 \x01(\r\x12\x0b\n\x03win\x18\x02 \x01(\r\x12\x0c\n\x04lose\x18\x03 \x01(\r\x12\x0c\n\x04\x64raw\x18\x04 \x01(\r\x1a\xdc\x03\n\x04Role\x12\x0b\n\x03uin\x18\x01 \x01(\x04\x12\x11\n\tenum_type\x18\x02 \x01(\r\x12\x12\n\nenum_state\x18\x03 \x01(\r\x12\x11\n\tcan_speak\x18\x04 \x01(\r\x12\x12\n\ncan_listen\x18\x05 \x01(\r\x12\x10\n\x08position\x18\x06 \x01(\r\x12\x10\n\x08\x63\x61n_vote\x18\x07 \x01(\r\x12\x11\n\tcan_voted\x18\x08 \x01(\r\x12\x17\n\x0f\x61lready_checked\x18\t \x01(\r\x12\x15\n\ralready_saved\x18\n \x01(\r\x12\x18\n\x10\x61lready_poisoned\x18\x0b \x01(\r\x12\x14\n\x0cplayer_state\x18\x0c \x01(\r\x12\x14\n\x0c\x65num_dead_op\x18\r \x01(\r\x12\x16\n\x0e\x65num_operation\x18\x0e \x01(\r\x12\x10\n\x08\x64st_user\x18\x0f \x01(\x04\x12\x17\n\x0foperation_round\x18\x10 \x01(\r\x12I\n\x0bgame_record\x18\x11 \x01(\x0b\x32\x34.im.oidb.cmd0x857.troop_tips.WereWolfPush.GameRecord\x12\x13\n\x0bis_werewolf\x18\x12 \x01(\r\x12\x15\n\rdefended_user\x18\x13 \x01(\x04\x12\x12\n\nis_sheriff\x18\x14 \x01(\r') + + + +_AIOGRAYTIPSINFO = DESCRIPTOR.message_types_by_name['AIOGrayTipsInfo'] +_AIOTOPTIPSINFO = DESCRIPTOR.message_types_by_name['AIOTopTipsInfo'] +_FLOATEDTIPSINFO = DESCRIPTOR.message_types_by_name['FloatedTipsInfo'] +_GENERALGRAYTIPINFO = DESCRIPTOR.message_types_by_name['GeneralGrayTipInfo'] +_GOLDMSGTIPSELEM = DESCRIPTOR.message_types_by_name['GoldMsgTipsElem'] +_GRAYDATA = DESCRIPTOR.message_types_by_name['GrayData'] +_GROUPANNOUNCETBCINFO = DESCRIPTOR.message_types_by_name['GroupAnnounceTBCInfo'] +_GROUPASYNCNOTIFY = DESCRIPTOR.message_types_by_name['GroupAsyncNotify'] +_GROUPINFOCHANGE = DESCRIPTOR.message_types_by_name['GroupInfoChange'] +_GROUPNOTIFYINFO = DESCRIPTOR.message_types_by_name['GroupNotifyInfo'] +_INSTCTRL = DESCRIPTOR.message_types_by_name['InstCtrl'] +_INSTINFO = DESCRIPTOR.message_types_by_name['InstInfo'] +_LBSSHARECHANGEPUSHINFO = DESCRIPTOR.message_types_by_name['LbsShareChangePushInfo'] +_LUCKYBAGNOTIFY = DESCRIPTOR.message_types_by_name['LuckyBagNotify'] +_MEDIACHANGEPUSHINFO = DESCRIPTOR.message_types_by_name['MediaChangePushInfo'] +_MEDIACHANGEPUSHINFO_PERSONALSETTING = _MEDIACHANGEPUSHINFO.nested_types_by_name['PersonalSetting'] +_MESSAGEBOXINFO = DESCRIPTOR.message_types_by_name['MessageBoxInfo'] +_MESSAGERECALLREMINDER = DESCRIPTOR.message_types_by_name['MessageRecallReminder'] +_MESSAGERECALLREMINDER_MESSAGEMETA = _MESSAGERECALLREMINDER.nested_types_by_name['MessageMeta'] +_MESSAGERECALLREMINDER_WITHDRAWWORDINGINFO = _MESSAGERECALLREMINDER.nested_types_by_name['WithDrawWordingInfo'] +_MINIAPPNOTIFY = DESCRIPTOR.message_types_by_name['MiniAppNotify'] +_NOTIFYMSGBODY = DESCRIPTOR.message_types_by_name['NotifyMsgBody'] +_NOTIFYOBJMSGUPDATE = DESCRIPTOR.message_types_by_name['NotifyObjmsgUpdate'] +_QQGROUPDIGESTMSG = DESCRIPTOR.message_types_by_name['QQGroupDigestMsg'] +_QQGROUPDIGESTMSGSUMMARY = DESCRIPTOR.message_types_by_name['QQGroupDigestMsgSummary'] +_QQGROUPDIGESTSUMMARYINFO = DESCRIPTOR.message_types_by_name['QQGroupDigestSummaryInfo'] +_QQVALIVENOTIFYMSG = DESCRIPTOR.message_types_by_name['QQVaLiveNotifyMsg'] +_QQVEDIOGAMEPUSHINFO = DESCRIPTOR.message_types_by_name['QQVedioGamePushInfo'] +_REDGRAYTIPSINFO = DESCRIPTOR.message_types_by_name['RedGrayTipsInfo'] +_REQBODY = DESCRIPTOR.message_types_by_name['ReqBody'] +_REVERTGRAYTIPSMSGTRACELESS = DESCRIPTOR.message_types_by_name['RevertGrayTipsMsgTraceless'] +_RSPBODY = DESCRIPTOR.message_types_by_name['RspBody'] +_SINGCHANGEPUSHINFO = DESCRIPTOR.message_types_by_name['SingChangePushInfo'] +_STUDYROOMMEMBERCHANGEPUSH = DESCRIPTOR.message_types_by_name['StudyRoomMemberChangePush'] +_TEMPLPARAM = DESCRIPTOR.message_types_by_name['TemplParam'] +_THEMESTATENOTIFY = DESCRIPTOR.message_types_by_name['ThemeStateNotify'] +_TROOPFORMGRAYTIPSINFO = DESCRIPTOR.message_types_by_name['TroopFormGrayTipsInfo'] +_VIDEOCHANGEPUSHINFO = DESCRIPTOR.message_types_by_name['VideoChangePushInfo'] +_WEREWOLFPUSH = DESCRIPTOR.message_types_by_name['WereWolfPush'] +_WEREWOLFPUSH_GAMERECORD = _WEREWOLFPUSH.nested_types_by_name['GameRecord'] +_WEREWOLFPUSH_ROLE = _WEREWOLFPUSH.nested_types_by_name['Role'] +AIOGrayTipsInfo = _reflection.GeneratedProtocolMessageType('AIOGrayTipsInfo', (_message.Message,), { + 'DESCRIPTOR' : _AIOGRAYTIPSINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.AIOGrayTipsInfo) + }) +_sym_db.RegisterMessage(AIOGrayTipsInfo) + +AIOTopTipsInfo = _reflection.GeneratedProtocolMessageType('AIOTopTipsInfo', (_message.Message,), { + 'DESCRIPTOR' : _AIOTOPTIPSINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.AIOTopTipsInfo) + }) +_sym_db.RegisterMessage(AIOTopTipsInfo) + +FloatedTipsInfo = _reflection.GeneratedProtocolMessageType('FloatedTipsInfo', (_message.Message,), { + 'DESCRIPTOR' : _FLOATEDTIPSINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.FloatedTipsInfo) + }) +_sym_db.RegisterMessage(FloatedTipsInfo) + +GeneralGrayTipInfo = _reflection.GeneratedProtocolMessageType('GeneralGrayTipInfo', (_message.Message,), { + 'DESCRIPTOR' : _GENERALGRAYTIPINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.GeneralGrayTipInfo) + }) +_sym_db.RegisterMessage(GeneralGrayTipInfo) + +GoldMsgTipsElem = _reflection.GeneratedProtocolMessageType('GoldMsgTipsElem', (_message.Message,), { + 'DESCRIPTOR' : _GOLDMSGTIPSELEM, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.GoldMsgTipsElem) + }) +_sym_db.RegisterMessage(GoldMsgTipsElem) + +GrayData = _reflection.GeneratedProtocolMessageType('GrayData', (_message.Message,), { + 'DESCRIPTOR' : _GRAYDATA, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.GrayData) + }) +_sym_db.RegisterMessage(GrayData) + +GroupAnnounceTBCInfo = _reflection.GeneratedProtocolMessageType('GroupAnnounceTBCInfo', (_message.Message,), { + 'DESCRIPTOR' : _GROUPANNOUNCETBCINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.GroupAnnounceTBCInfo) + }) +_sym_db.RegisterMessage(GroupAnnounceTBCInfo) + +GroupAsyncNotify = _reflection.GeneratedProtocolMessageType('GroupAsyncNotify', (_message.Message,), { + 'DESCRIPTOR' : _GROUPASYNCNOTIFY, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.GroupAsyncNotify) + }) +_sym_db.RegisterMessage(GroupAsyncNotify) + +GroupInfoChange = _reflection.GeneratedProtocolMessageType('GroupInfoChange', (_message.Message,), { + 'DESCRIPTOR' : _GROUPINFOCHANGE, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.GroupInfoChange) + }) +_sym_db.RegisterMessage(GroupInfoChange) + +GroupNotifyInfo = _reflection.GeneratedProtocolMessageType('GroupNotifyInfo', (_message.Message,), { + 'DESCRIPTOR' : _GROUPNOTIFYINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.GroupNotifyInfo) + }) +_sym_db.RegisterMessage(GroupNotifyInfo) + +InstCtrl = _reflection.GeneratedProtocolMessageType('InstCtrl', (_message.Message,), { + 'DESCRIPTOR' : _INSTCTRL, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.InstCtrl) + }) +_sym_db.RegisterMessage(InstCtrl) + +InstInfo = _reflection.GeneratedProtocolMessageType('InstInfo', (_message.Message,), { + 'DESCRIPTOR' : _INSTINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.InstInfo) + }) +_sym_db.RegisterMessage(InstInfo) + +LbsShareChangePushInfo = _reflection.GeneratedProtocolMessageType('LbsShareChangePushInfo', (_message.Message,), { + 'DESCRIPTOR' : _LBSSHARECHANGEPUSHINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.LbsShareChangePushInfo) + }) +_sym_db.RegisterMessage(LbsShareChangePushInfo) + +LuckyBagNotify = _reflection.GeneratedProtocolMessageType('LuckyBagNotify', (_message.Message,), { + 'DESCRIPTOR' : _LUCKYBAGNOTIFY, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.LuckyBagNotify) + }) +_sym_db.RegisterMessage(LuckyBagNotify) + +MediaChangePushInfo = _reflection.GeneratedProtocolMessageType('MediaChangePushInfo', (_message.Message,), { + + 'PersonalSetting' : _reflection.GeneratedProtocolMessageType('PersonalSetting', (_message.Message,), { + 'DESCRIPTOR' : _MEDIACHANGEPUSHINFO_PERSONALSETTING, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.MediaChangePushInfo.PersonalSetting) + }) + , + 'DESCRIPTOR' : _MEDIACHANGEPUSHINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.MediaChangePushInfo) + }) +_sym_db.RegisterMessage(MediaChangePushInfo) +_sym_db.RegisterMessage(MediaChangePushInfo.PersonalSetting) + +MessageBoxInfo = _reflection.GeneratedProtocolMessageType('MessageBoxInfo', (_message.Message,), { + 'DESCRIPTOR' : _MESSAGEBOXINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.MessageBoxInfo) + }) +_sym_db.RegisterMessage(MessageBoxInfo) + +MessageRecallReminder = _reflection.GeneratedProtocolMessageType('MessageRecallReminder', (_message.Message,), { + + 'MessageMeta' : _reflection.GeneratedProtocolMessageType('MessageMeta', (_message.Message,), { + 'DESCRIPTOR' : _MESSAGERECALLREMINDER_MESSAGEMETA, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.MessageRecallReminder.MessageMeta) + }) + , + + 'WithDrawWordingInfo' : _reflection.GeneratedProtocolMessageType('WithDrawWordingInfo', (_message.Message,), { + 'DESCRIPTOR' : _MESSAGERECALLREMINDER_WITHDRAWWORDINGINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.MessageRecallReminder.WithDrawWordingInfo) + }) + , + 'DESCRIPTOR' : _MESSAGERECALLREMINDER, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.MessageRecallReminder) + }) +_sym_db.RegisterMessage(MessageRecallReminder) +_sym_db.RegisterMessage(MessageRecallReminder.MessageMeta) +_sym_db.RegisterMessage(MessageRecallReminder.WithDrawWordingInfo) + +MiniAppNotify = _reflection.GeneratedProtocolMessageType('MiniAppNotify', (_message.Message,), { + 'DESCRIPTOR' : _MINIAPPNOTIFY, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.MiniAppNotify) + }) +_sym_db.RegisterMessage(MiniAppNotify) + +NotifyMsgBody = _reflection.GeneratedProtocolMessageType('NotifyMsgBody', (_message.Message,), { + 'DESCRIPTOR' : _NOTIFYMSGBODY, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.NotifyMsgBody) + }) +_sym_db.RegisterMessage(NotifyMsgBody) + +NotifyObjmsgUpdate = _reflection.GeneratedProtocolMessageType('NotifyObjmsgUpdate', (_message.Message,), { + 'DESCRIPTOR' : _NOTIFYOBJMSGUPDATE, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.NotifyObjmsgUpdate) + }) +_sym_db.RegisterMessage(NotifyObjmsgUpdate) + +QQGroupDigestMsg = _reflection.GeneratedProtocolMessageType('QQGroupDigestMsg', (_message.Message,), { + 'DESCRIPTOR' : _QQGROUPDIGESTMSG, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.QQGroupDigestMsg) + }) +_sym_db.RegisterMessage(QQGroupDigestMsg) + +QQGroupDigestMsgSummary = _reflection.GeneratedProtocolMessageType('QQGroupDigestMsgSummary', (_message.Message,), { + 'DESCRIPTOR' : _QQGROUPDIGESTMSGSUMMARY, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.QQGroupDigestMsgSummary) + }) +_sym_db.RegisterMessage(QQGroupDigestMsgSummary) + +QQGroupDigestSummaryInfo = _reflection.GeneratedProtocolMessageType('QQGroupDigestSummaryInfo', (_message.Message,), { + 'DESCRIPTOR' : _QQGROUPDIGESTSUMMARYINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.QQGroupDigestSummaryInfo) + }) +_sym_db.RegisterMessage(QQGroupDigestSummaryInfo) + +QQVaLiveNotifyMsg = _reflection.GeneratedProtocolMessageType('QQVaLiveNotifyMsg', (_message.Message,), { + 'DESCRIPTOR' : _QQVALIVENOTIFYMSG, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.QQVaLiveNotifyMsg) + }) +_sym_db.RegisterMessage(QQVaLiveNotifyMsg) + +QQVedioGamePushInfo = _reflection.GeneratedProtocolMessageType('QQVedioGamePushInfo', (_message.Message,), { + 'DESCRIPTOR' : _QQVEDIOGAMEPUSHINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.QQVedioGamePushInfo) + }) +_sym_db.RegisterMessage(QQVedioGamePushInfo) + +RedGrayTipsInfo = _reflection.GeneratedProtocolMessageType('RedGrayTipsInfo', (_message.Message,), { + 'DESCRIPTOR' : _REDGRAYTIPSINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.RedGrayTipsInfo) + }) +_sym_db.RegisterMessage(RedGrayTipsInfo) + +ReqBody = _reflection.GeneratedProtocolMessageType('ReqBody', (_message.Message,), { + 'DESCRIPTOR' : _REQBODY, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.ReqBody) + }) +_sym_db.RegisterMessage(ReqBody) + +RevertGrayTipsMsgTraceless = _reflection.GeneratedProtocolMessageType('RevertGrayTipsMsgTraceless', (_message.Message,), { + 'DESCRIPTOR' : _REVERTGRAYTIPSMSGTRACELESS, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.RevertGrayTipsMsgTraceless) + }) +_sym_db.RegisterMessage(RevertGrayTipsMsgTraceless) + +RspBody = _reflection.GeneratedProtocolMessageType('RspBody', (_message.Message,), { + 'DESCRIPTOR' : _RSPBODY, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.RspBody) + }) +_sym_db.RegisterMessage(RspBody) + +SingChangePushInfo = _reflection.GeneratedProtocolMessageType('SingChangePushInfo', (_message.Message,), { + 'DESCRIPTOR' : _SINGCHANGEPUSHINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.SingChangePushInfo) + }) +_sym_db.RegisterMessage(SingChangePushInfo) + +StudyRoomMemberChangePush = _reflection.GeneratedProtocolMessageType('StudyRoomMemberChangePush', (_message.Message,), { + 'DESCRIPTOR' : _STUDYROOMMEMBERCHANGEPUSH, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.StudyRoomMemberChangePush) + }) +_sym_db.RegisterMessage(StudyRoomMemberChangePush) + +TemplParam = _reflection.GeneratedProtocolMessageType('TemplParam', (_message.Message,), { + 'DESCRIPTOR' : _TEMPLPARAM, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.TemplParam) + }) +_sym_db.RegisterMessage(TemplParam) + +ThemeStateNotify = _reflection.GeneratedProtocolMessageType('ThemeStateNotify', (_message.Message,), { + 'DESCRIPTOR' : _THEMESTATENOTIFY, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.ThemeStateNotify) + }) +_sym_db.RegisterMessage(ThemeStateNotify) + +TroopFormGrayTipsInfo = _reflection.GeneratedProtocolMessageType('TroopFormGrayTipsInfo', (_message.Message,), { + 'DESCRIPTOR' : _TROOPFORMGRAYTIPSINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.TroopFormGrayTipsInfo) + }) +_sym_db.RegisterMessage(TroopFormGrayTipsInfo) + +VideoChangePushInfo = _reflection.GeneratedProtocolMessageType('VideoChangePushInfo', (_message.Message,), { + 'DESCRIPTOR' : _VIDEOCHANGEPUSHINFO, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.VideoChangePushInfo) + }) +_sym_db.RegisterMessage(VideoChangePushInfo) + +WereWolfPush = _reflection.GeneratedProtocolMessageType('WereWolfPush', (_message.Message,), { + + 'GameRecord' : _reflection.GeneratedProtocolMessageType('GameRecord', (_message.Message,), { + 'DESCRIPTOR' : _WEREWOLFPUSH_GAMERECORD, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.WereWolfPush.GameRecord) + }) + , + + 'Role' : _reflection.GeneratedProtocolMessageType('Role', (_message.Message,), { + 'DESCRIPTOR' : _WEREWOLFPUSH_ROLE, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.WereWolfPush.Role) + }) + , + 'DESCRIPTOR' : _WEREWOLFPUSH, + '__module__' : 'cai.pb.im.oidb.cmd0x857.troop_tips.troop_tips_pb2' + # @@protoc_insertion_point(class_scope:im.oidb.cmd0x857.troop_tips.WereWolfPush) + }) +_sym_db.RegisterMessage(WereWolfPush) +_sym_db.RegisterMessage(WereWolfPush.GameRecord) +_sym_db.RegisterMessage(WereWolfPush.Role) + +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _AIOGRAYTIPSINFO._serialized_start=85 + _AIOGRAYTIPSINFO._serialized_end=245 + _AIOTOPTIPSINFO._serialized_start=248 + _AIOTOPTIPSINFO._serialized_end=391 + _FLOATEDTIPSINFO._serialized_start=393 + _FLOATEDTIPSINFO._serialized_end=427 + _GENERALGRAYTIPINFO._serialized_start=430 + _GENERALGRAYTIPINFO._serialized_end=682 + _GOLDMSGTIPSELEM._serialized_start=685 + _GOLDMSGTIPSELEM._serialized_end=842 + _GRAYDATA._serialized_start=844 + _GRAYDATA._serialized_end=889 + _GROUPANNOUNCETBCINFO._serialized_start=891 + _GROUPANNOUNCETBCINFO._serialized_end=965 + _GROUPASYNCNOTIFY._serialized_start=967 + _GROUPASYNCNOTIFY._serialized_end=1020 + _GROUPINFOCHANGE._serialized_start=1023 + _GROUPINFOCHANGE._serialized_end=1249 + _GROUPNOTIFYINFO._serialized_start=1251 + _GROUPNOTIFYINFO._serialized_end=1310 + _INSTCTRL._serialized_start=1313 + _INSTCTRL._serialized_end=1503 + _INSTINFO._serialized_start=1506 + _INSTINFO._serialized_end=1670 + _LBSSHARECHANGEPUSHINFO._serialized_start=1673 + _LBSSHARECHANGEPUSHINFO._serialized_end=1883 + _LUCKYBAGNOTIFY._serialized_start=1885 + _LUCKYBAGNOTIFY._serialized_end=1919 + _MEDIACHANGEPUSHINFO._serialized_start=1922 + _MEDIACHANGEPUSHINFO._serialized_end=2337 + _MEDIACHANGEPUSHINFO_PERSONALSETTING._serialized_start=2266 + _MEDIACHANGEPUSHINFO_PERSONALSETTING._serialized_end=2337 + _MESSAGEBOXINFO._serialized_start=2339 + _MESSAGEBOXINFO._serialized_end=2403 + _MESSAGERECALLREMINDER._serialized_start=2406 + _MESSAGERECALLREMINDER._serialized_end=2944 + _MESSAGERECALLREMINDER_MESSAGEMETA._serialized_start=2747 + _MESSAGERECALLREMINDER_MESSAGEMETA._serialized_end=2885 + _MESSAGERECALLREMINDER_WITHDRAWWORDINGINFO._serialized_start=2887 + _MESSAGERECALLREMINDER_WITHDRAWWORDINGINFO._serialized_end=2944 + _MINIAPPNOTIFY._serialized_start=2946 + _MINIAPPNOTIFY._serialized_end=2974 + _NOTIFYMSGBODY._serialized_start=2977 + _NOTIFYMSGBODY._serialized_end=5209 + _NOTIFYOBJMSGUPDATE._serialized_start=5211 + _NOTIFYOBJMSGUPDATE._serialized_end=5288 + _QQGROUPDIGESTMSG._serialized_start=5291 + _QQGROUPDIGESTMSG._serialized_end=5512 + _QQGROUPDIGESTMSGSUMMARY._serialized_start=5515 + _QQGROUPDIGESTMSGSUMMARY._serialized_end=5711 + _QQGROUPDIGESTSUMMARYINFO._serialized_start=5713 + _QQGROUPDIGESTSUMMARYINFO._serialized_end=5788 + _QQVALIVENOTIFYMSG._serialized_start=5790 + _QQVALIVENOTIFYMSG._serialized_end=5885 + _QQVEDIOGAMEPUSHINFO._serialized_start=5887 + _QQVEDIOGAMEPUSHINFO._serialized_end=6004 + _REDGRAYTIPSINFO._serialized_start=6007 + _REDGRAYTIPSINFO._serialized_end=6444 + _REQBODY._serialized_start=6447 + _REQBODY._serialized_end=6603 + _REVERTGRAYTIPSMSGTRACELESS._serialized_start=6605 + _REVERTGRAYTIPSMSGTRACELESS._serialized_end=6717 + _RSPBODY._serialized_start=6719 + _RSPBODY._serialized_end=6748 + _SINGCHANGEPUSHINFO._serialized_start=6751 + _SINGCHANGEPUSHINFO._serialized_end=6879 + _STUDYROOMMEMBERCHANGEPUSH._serialized_start=6881 + _STUDYROOMMEMBERCHANGEPUSH._serialized_end=6930 + _TEMPLPARAM._serialized_start=6932 + _TEMPLPARAM._serialized_end=6973 + _THEMESTATENOTIFY._serialized_start=6975 + _THEMESTATENOTIFY._serialized_end=7086 + _TROOPFORMGRAYTIPSINFO._serialized_start=7089 + _TROOPFORMGRAYTIPSINFO._serialized_end=7220 + _VIDEOCHANGEPUSHINFO._serialized_start=7223 + _VIDEOCHANGEPUSHINFO._serialized_end=7390 + _WEREWOLFPUSH._serialized_start=7393 + _WEREWOLFPUSH._serialized_end=8354 + _WEREWOLFPUSH_GAMERECORD._serialized_start=7807 + _WEREWOLFPUSH_GAMERECORD._serialized_end=7875 + _WEREWOLFPUSH_ROLE._serialized_start=7878 + _WEREWOLFPUSH_ROLE._serialized_end=8354 +# @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/oidb/cmd0x857/troop_tips/troop_tips_pb2.pyi b/cai/pb/im/oidb/cmd0x857/troop_tips/troop_tips_pb2.pyi new file mode 100644 index 00000000..decaed08 --- /dev/null +++ b/cai/pb/im/oidb/cmd0x857/troop_tips/troop_tips_pb2.pyi @@ -0,0 +1,1261 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +from builtins import ( + bool, + bytes, + int, +) + +from google.protobuf.descriptor import ( + Descriptor, + FileDescriptor, +) + +from google.protobuf.internal.containers import ( + RepeatedCompositeFieldContainer, + RepeatedScalarFieldContainer, +) + +from google.protobuf.message import ( + Message, +) + +from typing import ( + Iterable, + Optional, + Text, +) + +from typing_extensions import ( + Literal, +) + + +DESCRIPTOR: FileDescriptor + +class AIOGrayTipsInfo(Message): + """tencent/im/oidb/cmd0x857/TroopTips0x857.java + + """ + DESCRIPTOR: Descriptor + SHOW_LASTEST_FIELD_NUMBER: int + CONTENT_FIELD_NUMBER: int + REMIND_FIELD_NUMBER: int + BRIEF_FIELD_NUMBER: int + RECEIVER_UIN_FIELD_NUMBER: int + RELIAO_ADMIN_OPT_FIELD_NUMBER: int + ROBOT_GROUP_OPT_FIELD_NUMBER: int + show_lastest: int + content: bytes + remind: int + brief: bytes + receiver_uin: int + reliao_admin_opt: int + robot_group_opt: int + def __init__(self, + *, + show_lastest: Optional[int] = ..., + content: Optional[bytes] = ..., + remind: Optional[int] = ..., + brief: Optional[bytes] = ..., + receiver_uin: Optional[int] = ..., + reliao_admin_opt: Optional[int] = ..., + robot_group_opt: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["brief",b"brief","content",b"content","receiver_uin",b"receiver_uin","reliao_admin_opt",b"reliao_admin_opt","remind",b"remind","robot_group_opt",b"robot_group_opt","show_lastest",b"show_lastest"]) -> bool: ... + def ClearField(self, field_name: Literal["brief",b"brief","content",b"content","receiver_uin",b"receiver_uin","reliao_admin_opt",b"reliao_admin_opt","remind",b"remind","robot_group_opt",b"robot_group_opt","show_lastest",b"show_lastest"]) -> None: ... + +class AIOTopTipsInfo(Message): + DESCRIPTOR: Descriptor + CONTENT_FIELD_NUMBER: int + ICON_FIELD_NUMBER: int + ENUM_ACTION_FIELD_NUMBER: int + URL_FIELD_NUMBER: int + DATA_FIELD_NUMBER: int + DATA_I_FIELD_NUMBER: int + DATA_A_FIELD_NUMBER: int + DATA_P_FIELD_NUMBER: int + content: bytes + icon: int + enum_action: int + url: bytes + data: bytes + data_i: bytes + data_a: bytes + data_p: bytes + def __init__(self, + *, + content: Optional[bytes] = ..., + icon: Optional[int] = ..., + enum_action: Optional[int] = ..., + url: Optional[bytes] = ..., + data: Optional[bytes] = ..., + data_i: Optional[bytes] = ..., + data_a: Optional[bytes] = ..., + data_p: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["content",b"content","data",b"data","data_a",b"data_a","data_i",b"data_i","data_p",b"data_p","enum_action",b"enum_action","icon",b"icon","url",b"url"]) -> bool: ... + def ClearField(self, field_name: Literal["content",b"content","data",b"data","data_a",b"data_a","data_i",b"data_i","data_p",b"data_p","enum_action",b"enum_action","icon",b"icon","url",b"url"]) -> None: ... + +class FloatedTipsInfo(Message): + DESCRIPTOR: Descriptor + CONTENT_FIELD_NUMBER: int + content: bytes + def __init__(self, + *, + content: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["content",b"content"]) -> bool: ... + def ClearField(self, field_name: Literal["content",b"content"]) -> None: ... + +class GeneralGrayTipInfo(Message): + DESCRIPTOR: Descriptor + BUSI_TYPE_FIELD_NUMBER: int + BUSI_ID_FIELD_NUMBER: int + CTRL_FLAG_FIELD_NUMBER: int + C2C_TYPE_FIELD_NUMBER: int + SERVICE_TYPE_FIELD_NUMBER: int + TEMPL_ID_FIELD_NUMBER: int + TEMPL_PARAM_FIELD_NUMBER: int + CONTENT_FIELD_NUMBER: int + TIPS_SEQ_ID_FIELD_NUMBER: int + PB_RESERV_FIELD_NUMBER: int + busi_type: int + busi_id: int + ctrl_flag: int + c2c_type: int + service_type: int + templ_id: int + @property + def templ_param(self) -> RepeatedCompositeFieldContainer[TemplParam]: ... + content: bytes + tips_seq_id: int + pb_reserv: bytes + def __init__(self, + *, + busi_type: Optional[int] = ..., + busi_id: Optional[int] = ..., + ctrl_flag: Optional[int] = ..., + c2c_type: Optional[int] = ..., + service_type: Optional[int] = ..., + templ_id: Optional[int] = ..., + templ_param: Optional[Iterable[TemplParam]] = ..., + content: Optional[bytes] = ..., + tips_seq_id: Optional[int] = ..., + pb_reserv: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["busi_id",b"busi_id","busi_type",b"busi_type","c2c_type",b"c2c_type","content",b"content","ctrl_flag",b"ctrl_flag","pb_reserv",b"pb_reserv","service_type",b"service_type","templ_id",b"templ_id","tips_seq_id",b"tips_seq_id"]) -> bool: ... + def ClearField(self, field_name: Literal["busi_id",b"busi_id","busi_type",b"busi_type","c2c_type",b"c2c_type","content",b"content","ctrl_flag",b"ctrl_flag","pb_reserv",b"pb_reserv","service_type",b"service_type","templ_id",b"templ_id","templ_param",b"templ_param","tips_seq_id",b"tips_seq_id"]) -> None: ... + +class GoldMsgTipsElem(Message): + DESCRIPTOR: Descriptor + TYPE_FIELD_NUMBER: int + BILLNO_FIELD_NUMBER: int + RESULT_FIELD_NUMBER: int + AMOUNT_FIELD_NUMBER: int + TOTAL_FIELD_NUMBER: int + INTERVAL_FIELD_NUMBER: int + FINISH_FIELD_NUMBER: int + UIN_FIELD_NUMBER: int + ACTION_FIELD_NUMBER: int + type: int + billno: Text + result: int + amount: int + total: int + interval: int + finish: int + @property + def uin(self) -> RepeatedScalarFieldContainer[int]: ... + action: int + def __init__(self, + *, + type: Optional[int] = ..., + billno: Optional[Text] = ..., + result: Optional[int] = ..., + amount: Optional[int] = ..., + total: Optional[int] = ..., + interval: Optional[int] = ..., + finish: Optional[int] = ..., + uin: Optional[Iterable[int]] = ..., + action: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["action",b"action","amount",b"amount","billno",b"billno","finish",b"finish","interval",b"interval","result",b"result","total",b"total","type",b"type"]) -> bool: ... + def ClearField(self, field_name: Literal["action",b"action","amount",b"amount","billno",b"billno","finish",b"finish","interval",b"interval","result",b"result","total",b"total","type",b"type","uin",b"uin"]) -> None: ... + +class GrayData(Message): + DESCRIPTOR: Descriptor + ALL_READ_FIELD_NUMBER: int + FEED_ID_FIELD_NUMBER: int + all_read: int + feed_id: Text + def __init__(self, + *, + all_read: Optional[int] = ..., + feed_id: Optional[Text] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["all_read",b"all_read","feed_id",b"feed_id"]) -> bool: ... + def ClearField(self, field_name: Literal["all_read",b"all_read","feed_id",b"feed_id"]) -> None: ... + +class GroupAnnounceTBCInfo(Message): + DESCRIPTOR: Descriptor + FEEDS_ID_FIELD_NUMBER: int + GROUP_ID_FIELD_NUMBER: int + ACTION_FIELD_NUMBER: int + feeds_id: bytes + group_id: int + action: int + def __init__(self, + *, + feeds_id: Optional[bytes] = ..., + group_id: Optional[int] = ..., + action: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["action",b"action","feeds_id",b"feeds_id","group_id",b"group_id"]) -> bool: ... + def ClearField(self, field_name: Literal["action",b"action","feeds_id",b"feeds_id","group_id",b"group_id"]) -> None: ... + +class GroupAsyncNotify(Message): + DESCRIPTOR: Descriptor + MSG_TYPE_FIELD_NUMBER: int + MSG_SEQ_FIELD_NUMBER: int + msg_type: int + msg_seq: int + def __init__(self, + *, + msg_type: Optional[int] = ..., + msg_seq: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["msg_seq",b"msg_seq","msg_type",b"msg_type"]) -> bool: ... + def ClearField(self, field_name: Literal["msg_seq",b"msg_seq","msg_type",b"msg_type"]) -> None: ... + +class GroupInfoChange(Message): + DESCRIPTOR: Descriptor + GROUP_HONOR_SWITCH_FIELD_NUMBER: int + GROUP_MEMBER_LEVEL_SWITCH_FIELD_NUMBER: int + GROUP_FLAGEXT4_FIELD_NUMBER: int + APPEAL_DEADLINE_FIELD_NUMBER: int + GROUP_FLAG_FIELD_NUMBER: int + GROUP_FLAGEXT3_FIELD_NUMBER: int + GROUP_CLASS_EXT_FIELD_NUMBER: int + GROUP_INFO_EXT_SEQ_FIELD_NUMBER: int + group_honor_switch: int + group_member_level_switch: int + group_flagext4: int + appeal_deadline: int + group_flag: int + group_flagext3: int + group_class_ext: int + group_info_ext_seq: int + def __init__(self, + *, + group_honor_switch: Optional[int] = ..., + group_member_level_switch: Optional[int] = ..., + group_flagext4: Optional[int] = ..., + appeal_deadline: Optional[int] = ..., + group_flag: Optional[int] = ..., + group_flagext3: Optional[int] = ..., + group_class_ext: Optional[int] = ..., + group_info_ext_seq: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["appeal_deadline",b"appeal_deadline","group_class_ext",b"group_class_ext","group_flag",b"group_flag","group_flagext3",b"group_flagext3","group_flagext4",b"group_flagext4","group_honor_switch",b"group_honor_switch","group_info_ext_seq",b"group_info_ext_seq","group_member_level_switch",b"group_member_level_switch"]) -> bool: ... + def ClearField(self, field_name: Literal["appeal_deadline",b"appeal_deadline","group_class_ext",b"group_class_ext","group_flag",b"group_flag","group_flagext3",b"group_flagext3","group_flagext4",b"group_flagext4","group_honor_switch",b"group_honor_switch","group_info_ext_seq",b"group_info_ext_seq","group_member_level_switch",b"group_member_level_switch"]) -> None: ... + +class GroupNotifyInfo(Message): + DESCRIPTOR: Descriptor + AUTO_PULL_FLAG_FIELD_NUMBER: int + FEEDS_ID_FIELD_NUMBER: int + auto_pull_flag: int + feeds_id: bytes + def __init__(self, + *, + auto_pull_flag: Optional[int] = ..., + feeds_id: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["auto_pull_flag",b"auto_pull_flag","feeds_id",b"feeds_id"]) -> bool: ... + def ClearField(self, field_name: Literal["auto_pull_flag",b"auto_pull_flag","feeds_id",b"feeds_id"]) -> None: ... + +class InstCtrl(Message): + DESCRIPTOR: Descriptor + SEND_TO_INST_FIELD_NUMBER: int + EXCLUDE_INST_FIELD_NUMBER: int + FROM_INST_FIELD_NUMBER: int + @property + def send_to_inst(self) -> RepeatedCompositeFieldContainer[InstInfo]: ... + @property + def exclude_inst(self) -> RepeatedCompositeFieldContainer[InstInfo]: ... + @property + def from_inst(self) -> InstInfo: ... + def __init__(self, + *, + send_to_inst: Optional[Iterable[InstInfo]] = ..., + exclude_inst: Optional[Iterable[InstInfo]] = ..., + from_inst: Optional[InstInfo] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["from_inst",b"from_inst"]) -> bool: ... + def ClearField(self, field_name: Literal["exclude_inst",b"exclude_inst","from_inst",b"from_inst","send_to_inst",b"send_to_inst"]) -> None: ... + +class InstInfo(Message): + DESCRIPTOR: Descriptor + APPPID_FIELD_NUMBER: int + INSTID_FIELD_NUMBER: int + PLATFORM_FIELD_NUMBER: int + OPEN_APPID_FIELD_NUMBER: int + PRODUCTID_FIELD_NUMBER: int + SSO_BID_FIELD_NUMBER: int + GUID_FIELD_NUMBER: int + VER_MIN_FIELD_NUMBER: int + VER_MAX_FIELD_NUMBER: int + apppid: int + instid: int + platform: int + open_appid: int + productid: int + sso_bid: int + guid: bytes + ver_min: int + ver_max: int + def __init__(self, + *, + apppid: Optional[int] = ..., + instid: Optional[int] = ..., + platform: Optional[int] = ..., + open_appid: Optional[int] = ..., + productid: Optional[int] = ..., + sso_bid: Optional[int] = ..., + guid: Optional[bytes] = ..., + ver_min: Optional[int] = ..., + ver_max: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["apppid",b"apppid","guid",b"guid","instid",b"instid","open_appid",b"open_appid","platform",b"platform","productid",b"productid","sso_bid",b"sso_bid","ver_max",b"ver_max","ver_min",b"ver_min"]) -> bool: ... + def ClearField(self, field_name: Literal["apppid",b"apppid","guid",b"guid","instid",b"instid","open_appid",b"open_appid","platform",b"platform","productid",b"productid","sso_bid",b"sso_bid","ver_max",b"ver_max","ver_min",b"ver_min"]) -> None: ... + +class LbsShareChangePushInfo(Message): + DESCRIPTOR: Descriptor + MSG_TYPE_FIELD_NUMBER: int + MSG_INFO_FIELD_NUMBER: int + VERSION_CTRL_FIELD_NUMBER: int + GROUP_ID_FIELD_NUMBER: int + OPER_UIN_FIELD_NUMBER: int + GRAY_TIPS_FIELD_NUMBER: int + MSG_SEQ_FIELD_NUMBER: int + JOIN_NUMS_FIELD_NUMBER: int + PUSH_TYPE_FIELD_NUMBER: int + EXT_INFO_FIELD_NUMBER: int + msg_type: int + msg_info: bytes + version_ctrl: bytes + group_id: int + oper_uin: int + gray_tips: bytes + msg_seq: int + join_nums: int + push_type: int + ext_info: bytes + def __init__(self, + *, + msg_type: Optional[int] = ..., + msg_info: Optional[bytes] = ..., + version_ctrl: Optional[bytes] = ..., + group_id: Optional[int] = ..., + oper_uin: Optional[int] = ..., + gray_tips: Optional[bytes] = ..., + msg_seq: Optional[int] = ..., + join_nums: Optional[int] = ..., + push_type: Optional[int] = ..., + ext_info: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["ext_info",b"ext_info","gray_tips",b"gray_tips","group_id",b"group_id","join_nums",b"join_nums","msg_info",b"msg_info","msg_seq",b"msg_seq","msg_type",b"msg_type","oper_uin",b"oper_uin","push_type",b"push_type","version_ctrl",b"version_ctrl"]) -> bool: ... + def ClearField(self, field_name: Literal["ext_info",b"ext_info","gray_tips",b"gray_tips","group_id",b"group_id","join_nums",b"join_nums","msg_info",b"msg_info","msg_seq",b"msg_seq","msg_type",b"msg_type","oper_uin",b"oper_uin","push_type",b"push_type","version_ctrl",b"version_ctrl"]) -> None: ... + +class LuckyBagNotify(Message): + DESCRIPTOR: Descriptor + MSG_TIPS_FIELD_NUMBER: int + msg_tips: bytes + def __init__(self, + *, + msg_tips: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["msg_tips",b"msg_tips"]) -> bool: ... + def ClearField(self, field_name: Literal["msg_tips",b"msg_tips"]) -> None: ... + +class MediaChangePushInfo(Message): + DESCRIPTOR: Descriptor + class PersonalSetting(Message): + DESCRIPTOR: Descriptor + THEME_ID_FIELD_NUMBER: int + PLAYER_ID_FIELD_NUMBER: int + FONT_ID_FIELD_NUMBER: int + theme_id: int + player_id: int + font_id: int + def __init__(self, + *, + theme_id: Optional[int] = ..., + player_id: Optional[int] = ..., + font_id: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["font_id",b"font_id","player_id",b"player_id","theme_id",b"theme_id"]) -> bool: ... + def ClearField(self, field_name: Literal["font_id",b"font_id","player_id",b"player_id","theme_id",b"theme_id"]) -> None: ... + + MSG_TYPE_FIELD_NUMBER: int + MSG_INFO_FIELD_NUMBER: int + VERSION_CTRL_FIELD_NUMBER: int + GROUP_ID_FIELD_NUMBER: int + OPER_UIN_FIELD_NUMBER: int + GRAY_TIPS_FIELD_NUMBER: int + MSG_SEQ_FIELD_NUMBER: int + JOIN_NUMS_FIELD_NUMBER: int + PER_SETTING_FIELD_NUMBER: int + PLAY_MODE_FIELD_NUMBER: int + IS_JOIN_WHEN_START_FIELD_NUMBER: int + MEDIA_TYPE_FIELD_NUMBER: int + EXT_INFO_FIELD_NUMBER: int + msg_type: int + msg_info: bytes + version_ctrl: bytes + group_id: int + oper_uin: int + gray_tips: bytes + msg_seq: int + join_nums: int + @property + def per_setting(self) -> MediaChangePushInfo.PersonalSetting: ... + play_mode: int + is_join_when_start: bool + media_type: int + ext_info: bytes + def __init__(self, + *, + msg_type: Optional[int] = ..., + msg_info: Optional[bytes] = ..., + version_ctrl: Optional[bytes] = ..., + group_id: Optional[int] = ..., + oper_uin: Optional[int] = ..., + gray_tips: Optional[bytes] = ..., + msg_seq: Optional[int] = ..., + join_nums: Optional[int] = ..., + per_setting: Optional[MediaChangePushInfo.PersonalSetting] = ..., + play_mode: Optional[int] = ..., + is_join_when_start: Optional[bool] = ..., + media_type: Optional[int] = ..., + ext_info: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["ext_info",b"ext_info","gray_tips",b"gray_tips","group_id",b"group_id","is_join_when_start",b"is_join_when_start","join_nums",b"join_nums","media_type",b"media_type","msg_info",b"msg_info","msg_seq",b"msg_seq","msg_type",b"msg_type","oper_uin",b"oper_uin","per_setting",b"per_setting","play_mode",b"play_mode","version_ctrl",b"version_ctrl"]) -> bool: ... + def ClearField(self, field_name: Literal["ext_info",b"ext_info","gray_tips",b"gray_tips","group_id",b"group_id","is_join_when_start",b"is_join_when_start","join_nums",b"join_nums","media_type",b"media_type","msg_info",b"msg_info","msg_seq",b"msg_seq","msg_type",b"msg_type","oper_uin",b"oper_uin","per_setting",b"per_setting","play_mode",b"play_mode","version_ctrl",b"version_ctrl"]) -> None: ... + +class MessageBoxInfo(Message): + DESCRIPTOR: Descriptor + CONTENT_FIELD_NUMBER: int + TITLE_FIELD_NUMBER: int + BUTTON_FIELD_NUMBER: int + content: bytes + title: bytes + button: bytes + def __init__(self, + *, + content: Optional[bytes] = ..., + title: Optional[bytes] = ..., + button: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["button",b"button","content",b"content","title",b"title"]) -> bool: ... + def ClearField(self, field_name: Literal["button",b"button","content",b"content","title",b"title"]) -> None: ... + +class MessageRecallReminder(Message): + DESCRIPTOR: Descriptor + class MessageMeta(Message): + DESCRIPTOR: Descriptor + SEQ_FIELD_NUMBER: int + TIME_FIELD_NUMBER: int + MSG_RANDOM_FIELD_NUMBER: int + MSG_TYPE_FIELD_NUMBER: int + MSG_FLAG_FIELD_NUMBER: int + AUTHOR_UIN_FIELD_NUMBER: int + IS_ANONY_MSG_FIELD_NUMBER: int + seq: int + time: int + msg_random: int + msg_type: int + msg_flag: int + author_uin: int + is_anony_msg: int + def __init__(self, + *, + seq: Optional[int] = ..., + time: Optional[int] = ..., + msg_random: Optional[int] = ..., + msg_type: Optional[int] = ..., + msg_flag: Optional[int] = ..., + author_uin: Optional[int] = ..., + is_anony_msg: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["author_uin",b"author_uin","is_anony_msg",b"is_anony_msg","msg_flag",b"msg_flag","msg_random",b"msg_random","msg_type",b"msg_type","seq",b"seq","time",b"time"]) -> bool: ... + def ClearField(self, field_name: Literal["author_uin",b"author_uin","is_anony_msg",b"is_anony_msg","msg_flag",b"msg_flag","msg_random",b"msg_random","msg_type",b"msg_type","seq",b"seq","time",b"time"]) -> None: ... + + class WithDrawWordingInfo(Message): + DESCRIPTOR: Descriptor + ITEM_ID_FIELD_NUMBER: int + ITEM_NAME_FIELD_NUMBER: int + item_id: int + item_name: Text + def __init__(self, + *, + item_id: Optional[int] = ..., + item_name: Optional[Text] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["item_id",b"item_id","item_name",b"item_name"]) -> bool: ... + def ClearField(self, field_name: Literal["item_id",b"item_id","item_name",b"item_name"]) -> None: ... + + UIN_FIELD_NUMBER: int + NICKNAME_FIELD_NUMBER: int + RECALLED_MSG_LIST_FIELD_NUMBER: int + REMINDER_CONTENT_FIELD_NUMBER: int + USERDEF_FIELD_NUMBER: int + GROUP_TYPE_FIELD_NUMBER: int + OP_TYPE_FIELD_NUMBER: int + ADMIN_UIN_FIELD_NUMBER: int + WORDING_INFO_FIELD_NUMBER: int + uin: int + nickname: bytes + @property + def recalled_msg_list(self) -> RepeatedCompositeFieldContainer[MessageRecallReminder.MessageMeta]: ... + reminder_content: bytes + userdef: bytes + group_type: int + op_type: int + admin_uin: int + @property + def wording_info(self) -> MessageRecallReminder.WithDrawWordingInfo: ... + def __init__(self, + *, + uin: Optional[int] = ..., + nickname: Optional[bytes] = ..., + recalled_msg_list: Optional[Iterable[MessageRecallReminder.MessageMeta]] = ..., + reminder_content: Optional[bytes] = ..., + userdef: Optional[bytes] = ..., + group_type: Optional[int] = ..., + op_type: Optional[int] = ..., + admin_uin: Optional[int] = ..., + wording_info: Optional[MessageRecallReminder.WithDrawWordingInfo] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["admin_uin",b"admin_uin","group_type",b"group_type","nickname",b"nickname","op_type",b"op_type","reminder_content",b"reminder_content","uin",b"uin","userdef",b"userdef","wording_info",b"wording_info"]) -> bool: ... + def ClearField(self, field_name: Literal["admin_uin",b"admin_uin","group_type",b"group_type","nickname",b"nickname","op_type",b"op_type","recalled_msg_list",b"recalled_msg_list","reminder_content",b"reminder_content","uin",b"uin","userdef",b"userdef","wording_info",b"wording_info"]) -> None: ... + +class MiniAppNotify(Message): + DESCRIPTOR: Descriptor + MSG_FIELD_NUMBER: int + msg: bytes + def __init__(self, + *, + msg: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["msg",b"msg"]) -> bool: ... + def ClearField(self, field_name: Literal["msg",b"msg"]) -> None: ... + +class NotifyMsgBody(Message): + DESCRIPTOR: Descriptor + ENUM_TYPE_FIELD_NUMBER: int + MSG_TIME_FIELD_NUMBER: int + MSG_EXPIRES_FIELD_NUMBER: int + GROUP_CODE_FIELD_NUMBER: int + GRAYTIPS_FIELD_NUMBER: int + MESSAGEBOX_FIELD_NUMBER: int + FLOATEDTIPS_FIELD_NUMBER: int + TOPTIPS_FIELD_NUMBER: int + REDTIPS_FIELD_NUMBER: int + GROUP_NOTIFY_FIELD_NUMBER: int + RECALL_FIELD_NUMBER: int + THEME_NOTIFY_FIELD_NUMBER: int + SERVICE_TYPE_FIELD_NUMBER: int + OBJMSG_UPDATE_FIELD_NUMBER: int + WEREWOLF_PUSH_FIELD_NUMBER: int + GOLDTIPS_FIELD_NUMBER: int + MINIAPP_NOTIFY_FIELD_NUMBER: int + SENDER_UIN_FIELD_NUMBER: int + LUCKYBAG_NOTIFY_FIELD_NUMBER: int + TROOPFORMTIPS_PUSH_FIELD_NUMBER: int + MEDIA_PUSH_FIELD_NUMBER: int + GENERAL_GRAY_TIP_FIELD_NUMBER: int + VIDEO_PUSH_FIELD_NUMBER: int + LBS_SHARE_CHANGE_PLUS_INFO_FIELD_NUMBER: int + SING_PUSH_FIELD_NUMBER: int + GROUP_INFO_CHANGE_FIELD_NUMBER: int + GROUP_ANNOUNCE_TBC_INFO_FIELD_NUMBER: int + QQ_VEDIO_GAME_PUSH_INFO_FIELD_NUMBER: int + QQ_GROUP_DIGEST_MSG_FIELD_NUMBER: int + STUDY_ROOM_MEMBER_MSG_FIELD_NUMBER: int + QQ_LIVE_NOTIFY_FIELD_NUMBER: int + GROUP_ASYNC_NOTIDY_FIELD_NUMBER: int + GROUP_CUR_MSG_SEQ_FIELD_NUMBER: int + GROUP_DIGEST_MSG_SUMMARY_FIELD_NUMBER: int + SYSDB_MSG_ID_FIELD_NUMBER: int + REVERT_GRAYTIPS_TRACELESS_FIELD_NUMBER: int + enum_type: int + msg_time: int + msg_expires: int + group_code: int + @property + def graytips(self) -> AIOGrayTipsInfo: ... + @property + def messagebox(self) -> MessageBoxInfo: ... + @property + def floatedtips(self) -> FloatedTipsInfo: ... + @property + def toptips(self) -> AIOTopTipsInfo: ... + @property + def redtips(self) -> RedGrayTipsInfo: ... + @property + def group_notify(self) -> GroupNotifyInfo: ... + @property + def recall(self) -> MessageRecallReminder: ... + @property + def theme_notify(self) -> ThemeStateNotify: ... + service_type: int + @property + def objmsg_update(self) -> NotifyObjmsgUpdate: ... + @property + def werewolf_push(self) -> WereWolfPush: ... + @property + def goldtips(self) -> GoldMsgTipsElem: + """optional apollo_game_status.STCMGameMessage stcm_game_state = 16; + optional apollo_push_msgInfo.STPushMsgElem apllo_msg_push = 17; + """ + pass + @property + def miniapp_notify(self) -> MiniAppNotify: ... + sender_uin: int + @property + def luckybag_notify(self) -> LuckyBagNotify: ... + @property + def troopformtips_push(self) -> TroopFormGrayTipsInfo: ... + @property + def media_push(self) -> MediaChangePushInfo: ... + @property + def general_gray_tip(self) -> GeneralGrayTipInfo: ... + @property + def video_push(self) -> VideoChangePushInfo: ... + @property + def lbs_share_change_plus_info(self) -> LbsShareChangePushInfo: ... + @property + def sing_push(self) -> SingChangePushInfo: ... + @property + def group_info_change(self) -> GroupInfoChange: ... + @property + def group_announce_tbc_info(self) -> GroupAnnounceTBCInfo: ... + @property + def qq_vedio_game_push_info(self) -> QQVedioGamePushInfo: ... + @property + def qq_group_digest_msg(self) -> QQGroupDigestMsg: ... + @property + def study_room_member_msg(self) -> StudyRoomMemberChangePush: ... + @property + def qq_live_notify(self) -> QQVaLiveNotifyMsg: ... + @property + def group_async_notidy(self) -> GroupAsyncNotify: ... + group_cur_msg_seq: int + @property + def group_digest_msg_summary(self) -> QQGroupDigestMsgSummary: ... + sysdb_msg_id: int + @property + def revert_graytips_traceless(self) -> RevertGrayTipsMsgTraceless: ... + def __init__(self, + *, + enum_type: Optional[int] = ..., + msg_time: Optional[int] = ..., + msg_expires: Optional[int] = ..., + group_code: Optional[int] = ..., + graytips: Optional[AIOGrayTipsInfo] = ..., + messagebox: Optional[MessageBoxInfo] = ..., + floatedtips: Optional[FloatedTipsInfo] = ..., + toptips: Optional[AIOTopTipsInfo] = ..., + redtips: Optional[RedGrayTipsInfo] = ..., + group_notify: Optional[GroupNotifyInfo] = ..., + recall: Optional[MessageRecallReminder] = ..., + theme_notify: Optional[ThemeStateNotify] = ..., + service_type: Optional[int] = ..., + objmsg_update: Optional[NotifyObjmsgUpdate] = ..., + werewolf_push: Optional[WereWolfPush] = ..., + goldtips: Optional[GoldMsgTipsElem] = ..., + miniapp_notify: Optional[MiniAppNotify] = ..., + sender_uin: Optional[int] = ..., + luckybag_notify: Optional[LuckyBagNotify] = ..., + troopformtips_push: Optional[TroopFormGrayTipsInfo] = ..., + media_push: Optional[MediaChangePushInfo] = ..., + general_gray_tip: Optional[GeneralGrayTipInfo] = ..., + video_push: Optional[VideoChangePushInfo] = ..., + lbs_share_change_plus_info: Optional[LbsShareChangePushInfo] = ..., + sing_push: Optional[SingChangePushInfo] = ..., + group_info_change: Optional[GroupInfoChange] = ..., + group_announce_tbc_info: Optional[GroupAnnounceTBCInfo] = ..., + qq_vedio_game_push_info: Optional[QQVedioGamePushInfo] = ..., + qq_group_digest_msg: Optional[QQGroupDigestMsg] = ..., + study_room_member_msg: Optional[StudyRoomMemberChangePush] = ..., + qq_live_notify: Optional[QQVaLiveNotifyMsg] = ..., + group_async_notidy: Optional[GroupAsyncNotify] = ..., + group_cur_msg_seq: Optional[int] = ..., + group_digest_msg_summary: Optional[QQGroupDigestMsgSummary] = ..., + sysdb_msg_id: Optional[int] = ..., + revert_graytips_traceless: Optional[RevertGrayTipsMsgTraceless] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["enum_type",b"enum_type","floatedtips",b"floatedtips","general_gray_tip",b"general_gray_tip","goldtips",b"goldtips","graytips",b"graytips","group_announce_tbc_info",b"group_announce_tbc_info","group_async_notidy",b"group_async_notidy","group_code",b"group_code","group_cur_msg_seq",b"group_cur_msg_seq","group_digest_msg_summary",b"group_digest_msg_summary","group_info_change",b"group_info_change","group_notify",b"group_notify","lbs_share_change_plus_info",b"lbs_share_change_plus_info","luckybag_notify",b"luckybag_notify","media_push",b"media_push","messagebox",b"messagebox","miniapp_notify",b"miniapp_notify","msg_expires",b"msg_expires","msg_time",b"msg_time","objmsg_update",b"objmsg_update","qq_group_digest_msg",b"qq_group_digest_msg","qq_live_notify",b"qq_live_notify","qq_vedio_game_push_info",b"qq_vedio_game_push_info","recall",b"recall","redtips",b"redtips","revert_graytips_traceless",b"revert_graytips_traceless","sender_uin",b"sender_uin","service_type",b"service_type","sing_push",b"sing_push","study_room_member_msg",b"study_room_member_msg","sysdb_msg_id",b"sysdb_msg_id","theme_notify",b"theme_notify","toptips",b"toptips","troopformtips_push",b"troopformtips_push","video_push",b"video_push","werewolf_push",b"werewolf_push"]) -> bool: ... + def ClearField(self, field_name: Literal["enum_type",b"enum_type","floatedtips",b"floatedtips","general_gray_tip",b"general_gray_tip","goldtips",b"goldtips","graytips",b"graytips","group_announce_tbc_info",b"group_announce_tbc_info","group_async_notidy",b"group_async_notidy","group_code",b"group_code","group_cur_msg_seq",b"group_cur_msg_seq","group_digest_msg_summary",b"group_digest_msg_summary","group_info_change",b"group_info_change","group_notify",b"group_notify","lbs_share_change_plus_info",b"lbs_share_change_plus_info","luckybag_notify",b"luckybag_notify","media_push",b"media_push","messagebox",b"messagebox","miniapp_notify",b"miniapp_notify","msg_expires",b"msg_expires","msg_time",b"msg_time","objmsg_update",b"objmsg_update","qq_group_digest_msg",b"qq_group_digest_msg","qq_live_notify",b"qq_live_notify","qq_vedio_game_push_info",b"qq_vedio_game_push_info","recall",b"recall","redtips",b"redtips","revert_graytips_traceless",b"revert_graytips_traceless","sender_uin",b"sender_uin","service_type",b"service_type","sing_push",b"sing_push","study_room_member_msg",b"study_room_member_msg","sysdb_msg_id",b"sysdb_msg_id","theme_notify",b"theme_notify","toptips",b"toptips","troopformtips_push",b"troopformtips_push","video_push",b"video_push","werewolf_push",b"werewolf_push"]) -> None: ... + +class NotifyObjmsgUpdate(Message): + DESCRIPTOR: Descriptor + OBJMSG_ID_FIELD_NUMBER: int + UPDATE_TYPE_FIELD_NUMBER: int + EXT_MSG_FIELD_NUMBER: int + objmsg_id: bytes + update_type: int + ext_msg: bytes + def __init__(self, + *, + objmsg_id: Optional[bytes] = ..., + update_type: Optional[int] = ..., + ext_msg: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["ext_msg",b"ext_msg","objmsg_id",b"objmsg_id","update_type",b"update_type"]) -> bool: ... + def ClearField(self, field_name: Literal["ext_msg",b"ext_msg","objmsg_id",b"objmsg_id","update_type",b"update_type"]) -> None: ... + +class QQGroupDigestMsg(Message): + DESCRIPTOR: Descriptor + GROUP_CODE_FIELD_NUMBER: int + SEQ_FIELD_NUMBER: int + RANDOM_FIELD_NUMBER: int + OP_TYPE_FIELD_NUMBER: int + SENDER_FIELD_NUMBER: int + DIGEST_OPER_FIELD_NUMBER: int + OP_TIME_FIELD_NUMBER: int + LASTEST_MSG_SEQ_FIELD_NUMBER: int + OPER_NICK_FIELD_NUMBER: int + SENDER_NICK_FIELD_NUMBER: int + EXT_INFO_FIELD_NUMBER: int + group_code: int + seq: int + random: int + op_type: int + sender: int + digest_oper: int + op_time: int + lastest_msg_seq: int + oper_nick: bytes + sender_nick: bytes + ext_info: int + def __init__(self, + *, + group_code: Optional[int] = ..., + seq: Optional[int] = ..., + random: Optional[int] = ..., + op_type: Optional[int] = ..., + sender: Optional[int] = ..., + digest_oper: Optional[int] = ..., + op_time: Optional[int] = ..., + lastest_msg_seq: Optional[int] = ..., + oper_nick: Optional[bytes] = ..., + sender_nick: Optional[bytes] = ..., + ext_info: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["digest_oper",b"digest_oper","ext_info",b"ext_info","group_code",b"group_code","lastest_msg_seq",b"lastest_msg_seq","op_time",b"op_time","op_type",b"op_type","oper_nick",b"oper_nick","random",b"random","sender",b"sender","sender_nick",b"sender_nick","seq",b"seq"]) -> bool: ... + def ClearField(self, field_name: Literal["digest_oper",b"digest_oper","ext_info",b"ext_info","group_code",b"group_code","lastest_msg_seq",b"lastest_msg_seq","op_time",b"op_time","op_type",b"op_type","oper_nick",b"oper_nick","random",b"random","sender",b"sender","sender_nick",b"sender_nick","seq",b"seq"]) -> None: ... + +class QQGroupDigestMsgSummary(Message): + DESCRIPTOR: Descriptor + DIGEST_OPER_FIELD_NUMBER: int + OP_TYPE_FIELD_NUMBER: int + OP_TIME_FIELD_NUMBER: int + DIGEST_NICK_FIELD_NUMBER: int + SUCC_CNT_FIELD_NUMBER: int + SUMMARY_INFO_FIELD_NUMBER: int + digest_oper: int + op_type: int + op_time: int + digest_nick: bytes + succ_cnt: int + @property + def summary_info(self) -> RepeatedCompositeFieldContainer[QQGroupDigestSummaryInfo]: ... + def __init__(self, + *, + digest_oper: Optional[int] = ..., + op_type: Optional[int] = ..., + op_time: Optional[int] = ..., + digest_nick: Optional[bytes] = ..., + succ_cnt: Optional[int] = ..., + summary_info: Optional[Iterable[QQGroupDigestSummaryInfo]] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["digest_nick",b"digest_nick","digest_oper",b"digest_oper","op_time",b"op_time","op_type",b"op_type","succ_cnt",b"succ_cnt"]) -> bool: ... + def ClearField(self, field_name: Literal["digest_nick",b"digest_nick","digest_oper",b"digest_oper","op_time",b"op_time","op_type",b"op_type","succ_cnt",b"succ_cnt","summary_info",b"summary_info"]) -> None: ... + +class QQGroupDigestSummaryInfo(Message): + DESCRIPTOR: Descriptor + SEQ_FIELD_NUMBER: int + RANDOM_FIELD_NUMBER: int + ERROR_CODE_FIELD_NUMBER: int + seq: int + random: int + error_code: int + def __init__(self, + *, + seq: Optional[int] = ..., + random: Optional[int] = ..., + error_code: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["error_code",b"error_code","random",b"random","seq",b"seq"]) -> bool: ... + def ClearField(self, field_name: Literal["error_code",b"error_code","random",b"random","seq",b"seq"]) -> None: ... + +class QQVaLiveNotifyMsg(Message): + DESCRIPTOR: Descriptor + UID_FIELD_NUMBER: int + NOTIFY_TYPE_FIELD_NUMBER: int + EXT1_FIELD_NUMBER: int + EXT2_FIELD_NUMBER: int + EXT3_FIELD_NUMBER: int + uid: bytes + notify_type: int + ext1: bytes + ext2: bytes + ext3: bytes + def __init__(self, + *, + uid: Optional[bytes] = ..., + notify_type: Optional[int] = ..., + ext1: Optional[bytes] = ..., + ext2: Optional[bytes] = ..., + ext3: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["ext1",b"ext1","ext2",b"ext2","ext3",b"ext3","notify_type",b"notify_type","uid",b"uid"]) -> bool: ... + def ClearField(self, field_name: Literal["ext1",b"ext1","ext2",b"ext2","ext3",b"ext3","notify_type",b"notify_type","uid",b"uid"]) -> None: ... + +class QQVedioGamePushInfo(Message): + DESCRIPTOR: Descriptor + MSG_TYPE_FIELD_NUMBER: int + GROUP_CODE_FIELD_NUMBER: int + OPER_UIN_FIELD_NUMBER: int + VERSION_CTRL_FIELD_NUMBER: int + EXT_INFO_FIELD_NUMBER: int + msg_type: int + group_code: int + oper_uin: int + version_ctrl: bytes + ext_info: bytes + def __init__(self, + *, + msg_type: Optional[int] = ..., + group_code: Optional[int] = ..., + oper_uin: Optional[int] = ..., + version_ctrl: Optional[bytes] = ..., + ext_info: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["ext_info",b"ext_info","group_code",b"group_code","msg_type",b"msg_type","oper_uin",b"oper_uin","version_ctrl",b"version_ctrl"]) -> bool: ... + def ClearField(self, field_name: Literal["ext_info",b"ext_info","group_code",b"group_code","msg_type",b"msg_type","oper_uin",b"oper_uin","version_ctrl",b"version_ctrl"]) -> None: ... + +class RedGrayTipsInfo(Message): + DESCRIPTOR: Descriptor + SHOW_LASTEST_FIELD_NUMBER: int + SENDER_UIN_FIELD_NUMBER: int + RECEIVER_UIN_FIELD_NUMBER: int + SENDER_RICH_CONTENT_FIELD_NUMBER: int + RECEIVER_RICH_CONTENT_FIELD_NUMBER: int + AUTHKEY_FIELD_NUMBER: int + MSGTYPE_FIELD_NUMBER: int + LUCKY_FLAG_FIELD_NUMBER: int + HIDE_FLAG_FIELD_NUMBER: int + PC_BODY_FIELD_NUMBER: int + ICON_FIELD_NUMBER: int + LUCKY_UIN_FIELD_NUMBER: int + TIME_FIELD_NUMBER: int + RANDOM_FIELD_NUMBER: int + BROADCAST_RICH_CONTENT_FIELD_NUMBER: int + IDIOM_FIELD_NUMBER: int + IDIOM_SEQ_FIELD_NUMBER: int + IDIOM_ALPHA_FIELD_NUMBER: int + JUMPURL_FIELD_NUMBER: int + SUBCHANNEL_FIELD_NUMBER: int + POEM_RULE_FIELD_NUMBER: int + show_lastest: int + sender_uin: int + receiver_uin: int + sender_rich_content: bytes + receiver_rich_content: bytes + authkey: bytes + msgtype: int + lucky_flag: int + hide_flag: int + pc_body: bytes + icon: int + lucky_uin: int + time: int + random: int + broadcast_rich_content: bytes + idiom: bytes + idiom_seq: int + idiom_alpha: bytes + jumpurl: bytes + subchannel: int + poem_rule: bytes + def __init__(self, + *, + show_lastest: Optional[int] = ..., + sender_uin: Optional[int] = ..., + receiver_uin: Optional[int] = ..., + sender_rich_content: Optional[bytes] = ..., + receiver_rich_content: Optional[bytes] = ..., + authkey: Optional[bytes] = ..., + msgtype: Optional[int] = ..., + lucky_flag: Optional[int] = ..., + hide_flag: Optional[int] = ..., + pc_body: Optional[bytes] = ..., + icon: Optional[int] = ..., + lucky_uin: Optional[int] = ..., + time: Optional[int] = ..., + random: Optional[int] = ..., + broadcast_rich_content: Optional[bytes] = ..., + idiom: Optional[bytes] = ..., + idiom_seq: Optional[int] = ..., + idiom_alpha: Optional[bytes] = ..., + jumpurl: Optional[bytes] = ..., + subchannel: Optional[int] = ..., + poem_rule: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["authkey",b"authkey","broadcast_rich_content",b"broadcast_rich_content","hide_flag",b"hide_flag","icon",b"icon","idiom",b"idiom","idiom_alpha",b"idiom_alpha","idiom_seq",b"idiom_seq","jumpurl",b"jumpurl","lucky_flag",b"lucky_flag","lucky_uin",b"lucky_uin","msgtype",b"msgtype","pc_body",b"pc_body","poem_rule",b"poem_rule","random",b"random","receiver_rich_content",b"receiver_rich_content","receiver_uin",b"receiver_uin","sender_rich_content",b"sender_rich_content","sender_uin",b"sender_uin","show_lastest",b"show_lastest","subchannel",b"subchannel","time",b"time"]) -> bool: ... + def ClearField(self, field_name: Literal["authkey",b"authkey","broadcast_rich_content",b"broadcast_rich_content","hide_flag",b"hide_flag","icon",b"icon","idiom",b"idiom","idiom_alpha",b"idiom_alpha","idiom_seq",b"idiom_seq","jumpurl",b"jumpurl","lucky_flag",b"lucky_flag","lucky_uin",b"lucky_uin","msgtype",b"msgtype","pc_body",b"pc_body","poem_rule",b"poem_rule","random",b"random","receiver_rich_content",b"receiver_rich_content","receiver_uin",b"receiver_uin","sender_rich_content",b"sender_rich_content","sender_uin",b"sender_uin","show_lastest",b"show_lastest","subchannel",b"subchannel","time",b"time"]) -> None: ... + +class ReqBody(Message): + DESCRIPTOR: Descriptor + GROUP_CODE_FIELD_NUMBER: int + MEMBERUINS_FIELD_NUMBER: int + OFFLINE_FIELD_NUMBER: int + INST_CTRL_FIELD_NUMBER: int + MSG_FIELD_NUMBER: int + BUSI_TYPE_FIELD_NUMBER: int + group_code: int + @property + def memberuins(self) -> RepeatedScalarFieldContainer[int]: ... + offline: int + @property + def inst_ctrl(self) -> InstCtrl: ... + msg: bytes + busi_type: int + def __init__(self, + *, + group_code: Optional[int] = ..., + memberuins: Optional[Iterable[int]] = ..., + offline: Optional[int] = ..., + inst_ctrl: Optional[InstCtrl] = ..., + msg: Optional[bytes] = ..., + busi_type: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["busi_type",b"busi_type","group_code",b"group_code","inst_ctrl",b"inst_ctrl","msg",b"msg","offline",b"offline"]) -> bool: ... + def ClearField(self, field_name: Literal["busi_type",b"busi_type","group_code",b"group_code","inst_ctrl",b"inst_ctrl","memberuins",b"memberuins","msg",b"msg","offline",b"offline"]) -> None: ... + +class RevertGrayTipsMsgTraceless(Message): + DESCRIPTOR: Descriptor + FROM_FIELD_NUMBER: int + TO_FIELD_NUMBER: int + GROUP_CODE_FIELD_NUMBER: int + BUSI_ID_FIELD_NUMBER: int + TIPS_SEQ_ID_FIELD_NUMBER: int + to: int + group_code: int + busi_id: int + tips_seq_id: int + def __init__(self, + *, + to: Optional[int] = ..., + group_code: Optional[int] = ..., + busi_id: Optional[int] = ..., + tips_seq_id: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["busi_id",b"busi_id","from",b"from","group_code",b"group_code","tips_seq_id",b"tips_seq_id","to",b"to"]) -> bool: ... + def ClearField(self, field_name: Literal["busi_id",b"busi_id","from",b"from","group_code",b"group_code","tips_seq_id",b"tips_seq_id","to",b"to"]) -> None: ... + +class RspBody(Message): + DESCRIPTOR: Descriptor + GROUP_CODE_FIELD_NUMBER: int + group_code: int + def __init__(self, + *, + group_code: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["group_code",b"group_code"]) -> bool: ... + def ClearField(self, field_name: Literal["group_code",b"group_code"]) -> None: ... + +class SingChangePushInfo(Message): + DESCRIPTOR: Descriptor + SEQ_FIELD_NUMBER: int + ACTION_TYPE_FIELD_NUMBER: int + GROUP_ID_FIELD_NUMBER: int + OPER_UIN_FIELD_NUMBER: int + GRAY_TIPS_FIELD_NUMBER: int + JOIN_NUMS_FIELD_NUMBER: int + seq: int + action_type: int + group_id: int + oper_uin: int + gray_tips: bytes + join_nums: int + def __init__(self, + *, + seq: Optional[int] = ..., + action_type: Optional[int] = ..., + group_id: Optional[int] = ..., + oper_uin: Optional[int] = ..., + gray_tips: Optional[bytes] = ..., + join_nums: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["action_type",b"action_type","gray_tips",b"gray_tips","group_id",b"group_id","join_nums",b"join_nums","oper_uin",b"oper_uin","seq",b"seq"]) -> bool: ... + def ClearField(self, field_name: Literal["action_type",b"action_type","gray_tips",b"gray_tips","group_id",b"group_id","join_nums",b"join_nums","oper_uin",b"oper_uin","seq",b"seq"]) -> None: ... + +class StudyRoomMemberChangePush(Message): + DESCRIPTOR: Descriptor + MEMBER_COUNT_FIELD_NUMBER: int + member_count: int + def __init__(self, + *, + member_count: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["member_count",b"member_count"]) -> bool: ... + def ClearField(self, field_name: Literal["member_count",b"member_count"]) -> None: ... + +class TemplParam(Message): + DESCRIPTOR: Descriptor + NAME_FIELD_NUMBER: int + VALUE_FIELD_NUMBER: int + name: bytes + value: bytes + def __init__(self, + *, + name: Optional[bytes] = ..., + value: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["name",b"name","value",b"value"]) -> bool: ... + def ClearField(self, field_name: Literal["name",b"name","value",b"value"]) -> None: ... + +class ThemeStateNotify(Message): + DESCRIPTOR: Descriptor + STATE_FIELD_NUMBER: int + FEEDS_ID_FIELD_NUMBER: int + THEME_NAME_FIELD_NUMBER: int + ACTION_UIN_FIELD_NUMBER: int + CREATE_UIN_FIELD_NUMBER: int + state: int + feeds_id: bytes + theme_name: bytes + action_uin: int + create_uin: int + def __init__(self, + *, + state: Optional[int] = ..., + feeds_id: Optional[bytes] = ..., + theme_name: Optional[bytes] = ..., + action_uin: Optional[int] = ..., + create_uin: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["action_uin",b"action_uin","create_uin",b"create_uin","feeds_id",b"feeds_id","state",b"state","theme_name",b"theme_name"]) -> bool: ... + def ClearField(self, field_name: Literal["action_uin",b"action_uin","create_uin",b"create_uin","feeds_id",b"feeds_id","state",b"state","theme_name",b"theme_name"]) -> None: ... + +class TroopFormGrayTipsInfo(Message): + DESCRIPTOR: Descriptor + WRITER_UIN_FIELD_NUMBER: int + CREATOR_UIN_FIELD_NUMBER: int + RICH_CONTENT_FIELD_NUMBER: int + OPT_BYTES_URL_FIELD_NUMBER: int + CREATOR_NICK_FIELD_NUMBER: int + writer_uin: int + creator_uin: int + rich_content: bytes + opt_bytes_url: bytes + creator_nick: bytes + def __init__(self, + *, + writer_uin: Optional[int] = ..., + creator_uin: Optional[int] = ..., + rich_content: Optional[bytes] = ..., + opt_bytes_url: Optional[bytes] = ..., + creator_nick: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["creator_nick",b"creator_nick","creator_uin",b"creator_uin","opt_bytes_url",b"opt_bytes_url","rich_content",b"rich_content","writer_uin",b"writer_uin"]) -> bool: ... + def ClearField(self, field_name: Literal["creator_nick",b"creator_nick","creator_uin",b"creator_uin","opt_bytes_url",b"opt_bytes_url","rich_content",b"rich_content","writer_uin",b"writer_uin"]) -> None: ... + +class VideoChangePushInfo(Message): + DESCRIPTOR: Descriptor + SEQ_FIELD_NUMBER: int + ACTION_TYPE_FIELD_NUMBER: int + GROUP_ID_FIELD_NUMBER: int + OPER_UIN_FIELD_NUMBER: int + GRAY_TIPS_FIELD_NUMBER: int + JOIN_NUMS_FIELD_NUMBER: int + JOIN_STATE_FIELD_NUMBER: int + EXT_INFO_FIELD_NUMBER: int + seq: int + action_type: int + group_id: int + oper_uin: int + gray_tips: bytes + join_nums: int + join_state: int + ext_info: bytes + def __init__(self, + *, + seq: Optional[int] = ..., + action_type: Optional[int] = ..., + group_id: Optional[int] = ..., + oper_uin: Optional[int] = ..., + gray_tips: Optional[bytes] = ..., + join_nums: Optional[int] = ..., + join_state: Optional[int] = ..., + ext_info: Optional[bytes] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["action_type",b"action_type","ext_info",b"ext_info","gray_tips",b"gray_tips","group_id",b"group_id","join_nums",b"join_nums","join_state",b"join_state","oper_uin",b"oper_uin","seq",b"seq"]) -> bool: ... + def ClearField(self, field_name: Literal["action_type",b"action_type","ext_info",b"ext_info","gray_tips",b"gray_tips","group_id",b"group_id","join_nums",b"join_nums","join_state",b"join_state","oper_uin",b"oper_uin","seq",b"seq"]) -> None: ... + +class WereWolfPush(Message): + DESCRIPTOR: Descriptor + class GameRecord(Message): + DESCRIPTOR: Descriptor + TOTAL_FIELD_NUMBER: int + WIN_FIELD_NUMBER: int + LOSE_FIELD_NUMBER: int + DRAW_FIELD_NUMBER: int + total: int + win: int + lose: int + draw: int + def __init__(self, + *, + total: Optional[int] = ..., + win: Optional[int] = ..., + lose: Optional[int] = ..., + draw: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["draw",b"draw","lose",b"lose","total",b"total","win",b"win"]) -> bool: ... + def ClearField(self, field_name: Literal["draw",b"draw","lose",b"lose","total",b"total","win",b"win"]) -> None: ... + + class Role(Message): + DESCRIPTOR: Descriptor + UIN_FIELD_NUMBER: int + ENUM_TYPE_FIELD_NUMBER: int + ENUM_STATE_FIELD_NUMBER: int + CAN_SPEAK_FIELD_NUMBER: int + CAN_LISTEN_FIELD_NUMBER: int + POSITION_FIELD_NUMBER: int + CAN_VOTE_FIELD_NUMBER: int + CAN_VOTED_FIELD_NUMBER: int + ALREADY_CHECKED_FIELD_NUMBER: int + ALREADY_SAVED_FIELD_NUMBER: int + ALREADY_POISONED_FIELD_NUMBER: int + PLAYER_STATE_FIELD_NUMBER: int + ENUM_DEAD_OP_FIELD_NUMBER: int + ENUM_OPERATION_FIELD_NUMBER: int + DST_USER_FIELD_NUMBER: int + OPERATION_ROUND_FIELD_NUMBER: int + GAME_RECORD_FIELD_NUMBER: int + IS_WEREWOLF_FIELD_NUMBER: int + DEFENDED_USER_FIELD_NUMBER: int + IS_SHERIFF_FIELD_NUMBER: int + uin: int + enum_type: int + enum_state: int + can_speak: int + can_listen: int + position: int + can_vote: int + can_voted: int + already_checked: int + already_saved: int + already_poisoned: int + player_state: int + enum_dead_op: int + enum_operation: int + dst_user: int + operation_round: int + @property + def game_record(self) -> WereWolfPush.GameRecord: ... + is_werewolf: int + defended_user: int + is_sheriff: int + def __init__(self, + *, + uin: Optional[int] = ..., + enum_type: Optional[int] = ..., + enum_state: Optional[int] = ..., + can_speak: Optional[int] = ..., + can_listen: Optional[int] = ..., + position: Optional[int] = ..., + can_vote: Optional[int] = ..., + can_voted: Optional[int] = ..., + already_checked: Optional[int] = ..., + already_saved: Optional[int] = ..., + already_poisoned: Optional[int] = ..., + player_state: Optional[int] = ..., + enum_dead_op: Optional[int] = ..., + enum_operation: Optional[int] = ..., + dst_user: Optional[int] = ..., + operation_round: Optional[int] = ..., + game_record: Optional[WereWolfPush.GameRecord] = ..., + is_werewolf: Optional[int] = ..., + defended_user: Optional[int] = ..., + is_sheriff: Optional[int] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["already_checked",b"already_checked","already_poisoned",b"already_poisoned","already_saved",b"already_saved","can_listen",b"can_listen","can_speak",b"can_speak","can_vote",b"can_vote","can_voted",b"can_voted","defended_user",b"defended_user","dst_user",b"dst_user","enum_dead_op",b"enum_dead_op","enum_operation",b"enum_operation","enum_state",b"enum_state","enum_type",b"enum_type","game_record",b"game_record","is_sheriff",b"is_sheriff","is_werewolf",b"is_werewolf","operation_round",b"operation_round","player_state",b"player_state","position",b"position","uin",b"uin"]) -> bool: ... + def ClearField(self, field_name: Literal["already_checked",b"already_checked","already_poisoned",b"already_poisoned","already_saved",b"already_saved","can_listen",b"can_listen","can_speak",b"can_speak","can_vote",b"can_vote","can_voted",b"can_voted","defended_user",b"defended_user","dst_user",b"dst_user","enum_dead_op",b"enum_dead_op","enum_operation",b"enum_operation","enum_state",b"enum_state","enum_type",b"enum_type","game_record",b"game_record","is_sheriff",b"is_sheriff","is_werewolf",b"is_werewolf","operation_round",b"operation_round","player_state",b"player_state","position",b"position","uin",b"uin"]) -> None: ... + + PUSH_TYPE_FIELD_NUMBER: int + GAME_ROOM_FIELD_NUMBER: int + ENUM_GAME_STATE_FIELD_NUMBER: int + GAME_ROUND_FIELD_NUMBER: int + ROLES_FIELD_NUMBER: int + SPEAKER_FIELD_NUMBER: int + JUDGE_UIN_FIELD_NUMBER: int + JUDGE_WORDS_FIELD_NUMBER: int + ENUM_OPERATION_FIELD_NUMBER: int + SRC_USER_FIELD_NUMBER: int + DST_USER_FIELD_NUMBER: int + DEAD_USERS_FIELD_NUMBER: int + GAME_RESULT_FIELD_NUMBER: int + TIMEOUT_SEC_FIELD_NUMBER: int + KILL_CONFIRMED_FIELD_NUMBER: int + JUDGE_NICKNAME_FIELD_NUMBER: int + VOTED_TIE_USERS_FIELD_NUMBER: int + push_type: int + game_room: int + enum_game_state: int + game_round: int + @property + def roles(self) -> RepeatedCompositeFieldContainer[WereWolfPush.Role]: ... + speaker: int + judge_uin: int + judge_words: bytes + enum_operation: int + src_user: int + dst_user: int + @property + def dead_users(self) -> RepeatedScalarFieldContainer[int]: ... + game_result: int + timeout_sec: int + kill_confirmed: int + judge_nickname: bytes + @property + def voted_tie_users(self) -> RepeatedScalarFieldContainer[int]: ... + def __init__(self, + *, + push_type: Optional[int] = ..., + game_room: Optional[int] = ..., + enum_game_state: Optional[int] = ..., + game_round: Optional[int] = ..., + roles: Optional[Iterable[WereWolfPush.Role]] = ..., + speaker: Optional[int] = ..., + judge_uin: Optional[int] = ..., + judge_words: Optional[bytes] = ..., + enum_operation: Optional[int] = ..., + src_user: Optional[int] = ..., + dst_user: Optional[int] = ..., + dead_users: Optional[Iterable[int]] = ..., + game_result: Optional[int] = ..., + timeout_sec: Optional[int] = ..., + kill_confirmed: Optional[int] = ..., + judge_nickname: Optional[bytes] = ..., + voted_tie_users: Optional[Iterable[int]] = ..., + ) -> None: ... + def HasField(self, field_name: Literal["dst_user",b"dst_user","enum_game_state",b"enum_game_state","enum_operation",b"enum_operation","game_result",b"game_result","game_room",b"game_room","game_round",b"game_round","judge_nickname",b"judge_nickname","judge_uin",b"judge_uin","judge_words",b"judge_words","kill_confirmed",b"kill_confirmed","push_type",b"push_type","speaker",b"speaker","src_user",b"src_user","timeout_sec",b"timeout_sec"]) -> bool: ... + def ClearField(self, field_name: Literal["dead_users",b"dead_users","dst_user",b"dst_user","enum_game_state",b"enum_game_state","enum_operation",b"enum_operation","game_result",b"game_result","game_room",b"game_room","game_round",b"game_round","judge_nickname",b"judge_nickname","judge_uin",b"judge_uin","judge_words",b"judge_words","kill_confirmed",b"kill_confirmed","push_type",b"push_type","roles",b"roles","speaker",b"speaker","src_user",b"src_user","timeout_sec",b"timeout_sec","voted_tie_users",b"voted_tie_users"]) -> None: ... diff --git a/cai/pb/im/oidb/group0x857/group0x857.proto b/cai/pb/im/oidb/group0x857/group0x857.proto deleted file mode 100644 index 6989c805..00000000 --- a/cai/pb/im/oidb/group0x857/group0x857.proto +++ /dev/null @@ -1,83 +0,0 @@ -syntax = "proto3"; - -option go_package = "github.com/Mrs4s/MiraiGo/client/pb/notify"; - -message NotifyMsgBody { - AIOGrayTipsInfo optMsgGrayTips = 5; - RedGrayTipsInfo optMsgRedTips = 9; - MessageRecallReminder optMsgRecall = 11; - GeneralGrayTipInfo optGeneralGrayTip = 26; - QQGroupDigestMsg qqGroupDigestMsg = 33; - int32 serviceType = 13; -} - -message AIOGrayTipsInfo{ - uint32 showLatest = 1; - bytes content = 2; - uint32 remind = 3; - bytes brief = 4; - uint64 receiverUin = 5; - uint32 reliaoAdminOpt = 6; -} - -message GeneralGrayTipInfo { - uint64 busiType = 1; - uint64 busiId = 2; - uint32 ctrlFlag = 3; - uint32 c2cType = 4; - uint32 serviceType = 5; - uint64 templId = 6; - repeated TemplParam msgTemplParam = 7; - string content = 8; -} - -message TemplParam { - string name = 1; - string value = 2; -} - -message MessageRecallReminder { - int64 uin = 1; - bytes nickname = 2; - repeated RecalledMessageMeta recalledMsgList = 3; - bytes reminderContent = 4; - bytes userdef = 5; - int32 groupType = 6; - int32 opType = 7; -} - -message RecalledMessageMeta { - int32 seq = 1; - int32 time = 2; - int32 msgRandom = 3; - int32 msgType = 4; - int32 msgFlag = 5; - int64 authorUin = 6; -} - -message RedGrayTipsInfo { - uint32 showLatest = 1; - uint64 senderUin = 2; - uint64 receiverUin = 3; - string senderRichContent = 4; - string receiverRichContent = 5; - bytes authKey = 6; - sint32 msgType = 7; - uint32 luckyFlag = 8; - uint32 hideFlag = 9; - uint64 luckyUin = 12; -} - -message QQGroupDigestMsg { - uint64 groupCode = 1; - uint32 seq = 2; - uint32 random = 3; - int32 opType = 4; - uint64 sender = 5; - uint64 digestOper = 6; - uint32 opTime = 7; - uint32 lastestMsgSeq = 8; - bytes operNick = 9; - bytes senderNick = 10; - int32 extInfo = 11; -} diff --git a/cai/pb/im/oidb/group0x857/group0x857_pb2.py b/cai/pb/im/oidb/group0x857/group0x857_pb2.py deleted file mode 100644 index 7bee7469..00000000 --- a/cai/pb/im/oidb/group0x857/group0x857_pb2.py +++ /dev/null @@ -1,105 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: cai/pb/im/oidb/group0x857/group0x857.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*cai/pb/im/oidb/group0x857/group0x857.proto\"\x82\x02\n\rNotifyMsgBody\x12(\n\x0eoptMsgGrayTips\x18\x05 \x01(\x0b\x32\x10.AIOGrayTipsInfo\x12\'\n\roptMsgRedTips\x18\t \x01(\x0b\x32\x10.RedGrayTipsInfo\x12,\n\x0coptMsgRecall\x18\x0b \x01(\x0b\x32\x16.MessageRecallReminder\x12.\n\x11optGeneralGrayTip\x18\x1a \x01(\x0b\x32\x13.GeneralGrayTipInfo\x12+\n\x10qqGroupDigestMsg\x18! \x01(\x0b\x32\x11.QQGroupDigestMsg\x12\x13\n\x0bserviceType\x18\r \x01(\x05\"\x82\x01\n\x0f\x41IOGrayTipsInfo\x12\x12\n\nshowLatest\x18\x01 \x01(\r\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\x12\x0e\n\x06remind\x18\x03 \x01(\r\x12\r\n\x05\x62rief\x18\x04 \x01(\x0c\x12\x13\n\x0breceiverUin\x18\x05 \x01(\x04\x12\x16\n\x0ereliaoAdminOpt\x18\x06 \x01(\r\"\xb4\x01\n\x12GeneralGrayTipInfo\x12\x10\n\x08\x62usiType\x18\x01 \x01(\x04\x12\x0e\n\x06\x62usiId\x18\x02 \x01(\x04\x12\x10\n\x08\x63trlFlag\x18\x03 \x01(\r\x12\x0f\n\x07\x63\x32\x63Type\x18\x04 \x01(\r\x12\x13\n\x0bserviceType\x18\x05 \x01(\r\x12\x0f\n\x07templId\x18\x06 \x01(\x04\x12\"\n\rmsgTemplParam\x18\x07 \x03(\x0b\x32\x0b.TemplParam\x12\x0f\n\x07\x63ontent\x18\x08 \x01(\t\")\n\nTemplParam\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xb2\x01\n\x15MessageRecallReminder\x12\x0b\n\x03uin\x18\x01 \x01(\x03\x12\x10\n\x08nickname\x18\x02 \x01(\x0c\x12-\n\x0frecalledMsgList\x18\x03 \x03(\x0b\x32\x14.RecalledMessageMeta\x12\x17\n\x0freminderContent\x18\x04 \x01(\x0c\x12\x0f\n\x07userdef\x18\x05 \x01(\x0c\x12\x11\n\tgroupType\x18\x06 \x01(\x05\x12\x0e\n\x06opType\x18\x07 \x01(\x05\"x\n\x13RecalledMessageMeta\x12\x0b\n\x03seq\x18\x01 \x01(\x05\x12\x0c\n\x04time\x18\x02 \x01(\x05\x12\x11\n\tmsgRandom\x18\x03 \x01(\x05\x12\x0f\n\x07msgType\x18\x04 \x01(\x05\x12\x0f\n\x07msgFlag\x18\x05 \x01(\x05\x12\x11\n\tauthorUin\x18\x06 \x01(\x03\"\xde\x01\n\x0fRedGrayTipsInfo\x12\x12\n\nshowLatest\x18\x01 \x01(\r\x12\x11\n\tsenderUin\x18\x02 \x01(\x04\x12\x13\n\x0breceiverUin\x18\x03 \x01(\x04\x12\x19\n\x11senderRichContent\x18\x04 \x01(\t\x12\x1b\n\x13receiverRichContent\x18\x05 \x01(\t\x12\x0f\n\x07\x61uthKey\x18\x06 \x01(\x0c\x12\x0f\n\x07msgType\x18\x07 \x01(\x11\x12\x11\n\tluckyFlag\x18\x08 \x01(\r\x12\x10\n\x08hideFlag\x18\t \x01(\r\x12\x10\n\x08luckyUin\x18\x0c \x01(\x04\"\xd4\x01\n\x10QQGroupDigestMsg\x12\x11\n\tgroupCode\x18\x01 \x01(\x04\x12\x0b\n\x03seq\x18\x02 \x01(\r\x12\x0e\n\x06random\x18\x03 \x01(\r\x12\x0e\n\x06opType\x18\x04 \x01(\x05\x12\x0e\n\x06sender\x18\x05 \x01(\x04\x12\x12\n\ndigestOper\x18\x06 \x01(\x04\x12\x0e\n\x06opTime\x18\x07 \x01(\r\x12\x15\n\rlastestMsgSeq\x18\x08 \x01(\r\x12\x10\n\x08operNick\x18\t \x01(\x0c\x12\x12\n\nsenderNick\x18\n \x01(\x0c\x12\x0f\n\x07\x65xtInfo\x18\x0b \x01(\x05\x42+Z)github.com/Mrs4s/MiraiGo/client/pb/notifyb\x06proto3') - - - -_NOTIFYMSGBODY = DESCRIPTOR.message_types_by_name['NotifyMsgBody'] -_AIOGRAYTIPSINFO = DESCRIPTOR.message_types_by_name['AIOGrayTipsInfo'] -_GENERALGRAYTIPINFO = DESCRIPTOR.message_types_by_name['GeneralGrayTipInfo'] -_TEMPLPARAM = DESCRIPTOR.message_types_by_name['TemplParam'] -_MESSAGERECALLREMINDER = DESCRIPTOR.message_types_by_name['MessageRecallReminder'] -_RECALLEDMESSAGEMETA = DESCRIPTOR.message_types_by_name['RecalledMessageMeta'] -_REDGRAYTIPSINFO = DESCRIPTOR.message_types_by_name['RedGrayTipsInfo'] -_QQGROUPDIGESTMSG = DESCRIPTOR.message_types_by_name['QQGroupDigestMsg'] -NotifyMsgBody = _reflection.GeneratedProtocolMessageType('NotifyMsgBody', (_message.Message,), { - 'DESCRIPTOR' : _NOTIFYMSGBODY, - '__module__' : 'cai.pb.im.oidb.group0x857.group0x857_pb2' - # @@protoc_insertion_point(class_scope:NotifyMsgBody) - }) -_sym_db.RegisterMessage(NotifyMsgBody) - -AIOGrayTipsInfo = _reflection.GeneratedProtocolMessageType('AIOGrayTipsInfo', (_message.Message,), { - 'DESCRIPTOR' : _AIOGRAYTIPSINFO, - '__module__' : 'cai.pb.im.oidb.group0x857.group0x857_pb2' - # @@protoc_insertion_point(class_scope:AIOGrayTipsInfo) - }) -_sym_db.RegisterMessage(AIOGrayTipsInfo) - -GeneralGrayTipInfo = _reflection.GeneratedProtocolMessageType('GeneralGrayTipInfo', (_message.Message,), { - 'DESCRIPTOR' : _GENERALGRAYTIPINFO, - '__module__' : 'cai.pb.im.oidb.group0x857.group0x857_pb2' - # @@protoc_insertion_point(class_scope:GeneralGrayTipInfo) - }) -_sym_db.RegisterMessage(GeneralGrayTipInfo) - -TemplParam = _reflection.GeneratedProtocolMessageType('TemplParam', (_message.Message,), { - 'DESCRIPTOR' : _TEMPLPARAM, - '__module__' : 'cai.pb.im.oidb.group0x857.group0x857_pb2' - # @@protoc_insertion_point(class_scope:TemplParam) - }) -_sym_db.RegisterMessage(TemplParam) - -MessageRecallReminder = _reflection.GeneratedProtocolMessageType('MessageRecallReminder', (_message.Message,), { - 'DESCRIPTOR' : _MESSAGERECALLREMINDER, - '__module__' : 'cai.pb.im.oidb.group0x857.group0x857_pb2' - # @@protoc_insertion_point(class_scope:MessageRecallReminder) - }) -_sym_db.RegisterMessage(MessageRecallReminder) - -RecalledMessageMeta = _reflection.GeneratedProtocolMessageType('RecalledMessageMeta', (_message.Message,), { - 'DESCRIPTOR' : _RECALLEDMESSAGEMETA, - '__module__' : 'cai.pb.im.oidb.group0x857.group0x857_pb2' - # @@protoc_insertion_point(class_scope:RecalledMessageMeta) - }) -_sym_db.RegisterMessage(RecalledMessageMeta) - -RedGrayTipsInfo = _reflection.GeneratedProtocolMessageType('RedGrayTipsInfo', (_message.Message,), { - 'DESCRIPTOR' : _REDGRAYTIPSINFO, - '__module__' : 'cai.pb.im.oidb.group0x857.group0x857_pb2' - # @@protoc_insertion_point(class_scope:RedGrayTipsInfo) - }) -_sym_db.RegisterMessage(RedGrayTipsInfo) - -QQGroupDigestMsg = _reflection.GeneratedProtocolMessageType('QQGroupDigestMsg', (_message.Message,), { - 'DESCRIPTOR' : _QQGROUPDIGESTMSG, - '__module__' : 'cai.pb.im.oidb.group0x857.group0x857_pb2' - # @@protoc_insertion_point(class_scope:QQGroupDigestMsg) - }) -_sym_db.RegisterMessage(QQGroupDigestMsg) - -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'Z)github.com/Mrs4s/MiraiGo/client/pb/notify' - _NOTIFYMSGBODY._serialized_start=47 - _NOTIFYMSGBODY._serialized_end=305 - _AIOGRAYTIPSINFO._serialized_start=308 - _AIOGRAYTIPSINFO._serialized_end=438 - _GENERALGRAYTIPINFO._serialized_start=441 - _GENERALGRAYTIPINFO._serialized_end=621 - _TEMPLPARAM._serialized_start=623 - _TEMPLPARAM._serialized_end=664 - _MESSAGERECALLREMINDER._serialized_start=667 - _MESSAGERECALLREMINDER._serialized_end=845 - _RECALLEDMESSAGEMETA._serialized_start=847 - _RECALLEDMESSAGEMETA._serialized_end=967 - _REDGRAYTIPSINFO._serialized_start=970 - _REDGRAYTIPSINFO._serialized_end=1192 - _QQGROUPDIGESTMSG._serialized_start=1195 - _QQGROUPDIGESTMSG._serialized_end=1407 -# @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/oidb/group0x857/group0x857_pb2.pyi b/cai/pb/im/oidb/group0x857/group0x857_pb2.pyi deleted file mode 100644 index 7fa6257b..00000000 --- a/cai/pb/im/oidb/group0x857/group0x857_pb2.pyi +++ /dev/null @@ -1,267 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -from builtins import ( - bool, - bytes, - int, -) - -from google.protobuf.descriptor import ( - Descriptor, - FileDescriptor, -) - -from google.protobuf.internal.containers import ( - RepeatedCompositeFieldContainer, -) - -from google.protobuf.message import ( - Message, -) - -from typing import ( - Iterable, - Optional, - Text, -) - -from typing_extensions import ( - Literal, -) - - -DESCRIPTOR: FileDescriptor - -class NotifyMsgBody(Message): - DESCRIPTOR: Descriptor - OPTMSGGRAYTIPS_FIELD_NUMBER: int - OPTMSGREDTIPS_FIELD_NUMBER: int - OPTMSGRECALL_FIELD_NUMBER: int - OPTGENERALGRAYTIP_FIELD_NUMBER: int - QQGROUPDIGESTMSG_FIELD_NUMBER: int - SERVICETYPE_FIELD_NUMBER: int - @property - def optMsgGrayTips(self) -> AIOGrayTipsInfo: ... - @property - def optMsgRedTips(self) -> RedGrayTipsInfo: ... - @property - def optMsgRecall(self) -> MessageRecallReminder: ... - @property - def optGeneralGrayTip(self) -> GeneralGrayTipInfo: ... - @property - def qqGroupDigestMsg(self) -> QQGroupDigestMsg: ... - serviceType: int - def __init__(self, - *, - optMsgGrayTips: Optional[AIOGrayTipsInfo] = ..., - optMsgRedTips: Optional[RedGrayTipsInfo] = ..., - optMsgRecall: Optional[MessageRecallReminder] = ..., - optGeneralGrayTip: Optional[GeneralGrayTipInfo] = ..., - qqGroupDigestMsg: Optional[QQGroupDigestMsg] = ..., - serviceType: int = ..., - ) -> None: ... - def HasField(self, field_name: Literal["optGeneralGrayTip",b"optGeneralGrayTip","optMsgGrayTips",b"optMsgGrayTips","optMsgRecall",b"optMsgRecall","optMsgRedTips",b"optMsgRedTips","qqGroupDigestMsg",b"qqGroupDigestMsg"]) -> bool: ... - def ClearField(self, field_name: Literal["optGeneralGrayTip",b"optGeneralGrayTip","optMsgGrayTips",b"optMsgGrayTips","optMsgRecall",b"optMsgRecall","optMsgRedTips",b"optMsgRedTips","qqGroupDigestMsg",b"qqGroupDigestMsg","serviceType",b"serviceType"]) -> None: ... - -class AIOGrayTipsInfo(Message): - DESCRIPTOR: Descriptor - SHOWLATEST_FIELD_NUMBER: int - CONTENT_FIELD_NUMBER: int - REMIND_FIELD_NUMBER: int - BRIEF_FIELD_NUMBER: int - RECEIVERUIN_FIELD_NUMBER: int - RELIAOADMINOPT_FIELD_NUMBER: int - showLatest: int - content: bytes - remind: int - brief: bytes - receiverUin: int - reliaoAdminOpt: int - def __init__(self, - *, - showLatest: int = ..., - content: bytes = ..., - remind: int = ..., - brief: bytes = ..., - receiverUin: int = ..., - reliaoAdminOpt: int = ..., - ) -> None: ... - def ClearField(self, field_name: Literal["brief",b"brief","content",b"content","receiverUin",b"receiverUin","reliaoAdminOpt",b"reliaoAdminOpt","remind",b"remind","showLatest",b"showLatest"]) -> None: ... - -class GeneralGrayTipInfo(Message): - DESCRIPTOR: Descriptor - BUSITYPE_FIELD_NUMBER: int - BUSIID_FIELD_NUMBER: int - CTRLFLAG_FIELD_NUMBER: int - C2CTYPE_FIELD_NUMBER: int - SERVICETYPE_FIELD_NUMBER: int - TEMPLID_FIELD_NUMBER: int - MSGTEMPLPARAM_FIELD_NUMBER: int - CONTENT_FIELD_NUMBER: int - busiType: int - busiId: int - ctrlFlag: int - c2cType: int - serviceType: int - templId: int - @property - def msgTemplParam(self) -> RepeatedCompositeFieldContainer[TemplParam]: ... - content: Text - def __init__(self, - *, - busiType: int = ..., - busiId: int = ..., - ctrlFlag: int = ..., - c2cType: int = ..., - serviceType: int = ..., - templId: int = ..., - msgTemplParam: Optional[Iterable[TemplParam]] = ..., - content: Text = ..., - ) -> None: ... - def ClearField(self, field_name: Literal["busiId",b"busiId","busiType",b"busiType","c2cType",b"c2cType","content",b"content","ctrlFlag",b"ctrlFlag","msgTemplParam",b"msgTemplParam","serviceType",b"serviceType","templId",b"templId"]) -> None: ... - -class TemplParam(Message): - DESCRIPTOR: Descriptor - NAME_FIELD_NUMBER: int - VALUE_FIELD_NUMBER: int - name: Text - value: Text - def __init__(self, - *, - name: Text = ..., - value: Text = ..., - ) -> None: ... - def ClearField(self, field_name: Literal["name",b"name","value",b"value"]) -> None: ... - -class MessageRecallReminder(Message): - DESCRIPTOR: Descriptor - UIN_FIELD_NUMBER: int - NICKNAME_FIELD_NUMBER: int - RECALLEDMSGLIST_FIELD_NUMBER: int - REMINDERCONTENT_FIELD_NUMBER: int - USERDEF_FIELD_NUMBER: int - GROUPTYPE_FIELD_NUMBER: int - OPTYPE_FIELD_NUMBER: int - uin: int - nickname: bytes - @property - def recalledMsgList(self) -> RepeatedCompositeFieldContainer[RecalledMessageMeta]: ... - reminderContent: bytes - userdef: bytes - groupType: int - opType: int - def __init__(self, - *, - uin: int = ..., - nickname: bytes = ..., - recalledMsgList: Optional[Iterable[RecalledMessageMeta]] = ..., - reminderContent: bytes = ..., - userdef: bytes = ..., - groupType: int = ..., - opType: int = ..., - ) -> None: ... - def ClearField(self, field_name: Literal["groupType",b"groupType","nickname",b"nickname","opType",b"opType","recalledMsgList",b"recalledMsgList","reminderContent",b"reminderContent","uin",b"uin","userdef",b"userdef"]) -> None: ... - -class RecalledMessageMeta(Message): - DESCRIPTOR: Descriptor - SEQ_FIELD_NUMBER: int - TIME_FIELD_NUMBER: int - MSGRANDOM_FIELD_NUMBER: int - MSGTYPE_FIELD_NUMBER: int - MSGFLAG_FIELD_NUMBER: int - AUTHORUIN_FIELD_NUMBER: int - seq: int - time: int - msgRandom: int - msgType: int - msgFlag: int - authorUin: int - def __init__(self, - *, - seq: int = ..., - time: int = ..., - msgRandom: int = ..., - msgType: int = ..., - msgFlag: int = ..., - authorUin: int = ..., - ) -> None: ... - def ClearField(self, field_name: Literal["authorUin",b"authorUin","msgFlag",b"msgFlag","msgRandom",b"msgRandom","msgType",b"msgType","seq",b"seq","time",b"time"]) -> None: ... - -class RedGrayTipsInfo(Message): - DESCRIPTOR: Descriptor - SHOWLATEST_FIELD_NUMBER: int - SENDERUIN_FIELD_NUMBER: int - RECEIVERUIN_FIELD_NUMBER: int - SENDERRICHCONTENT_FIELD_NUMBER: int - RECEIVERRICHCONTENT_FIELD_NUMBER: int - AUTHKEY_FIELD_NUMBER: int - MSGTYPE_FIELD_NUMBER: int - LUCKYFLAG_FIELD_NUMBER: int - HIDEFLAG_FIELD_NUMBER: int - LUCKYUIN_FIELD_NUMBER: int - showLatest: int - senderUin: int - receiverUin: int - senderRichContent: Text - receiverRichContent: Text - authKey: bytes - msgType: int - luckyFlag: int - hideFlag: int - luckyUin: int - def __init__(self, - *, - showLatest: int = ..., - senderUin: int = ..., - receiverUin: int = ..., - senderRichContent: Text = ..., - receiverRichContent: Text = ..., - authKey: bytes = ..., - msgType: int = ..., - luckyFlag: int = ..., - hideFlag: int = ..., - luckyUin: int = ..., - ) -> None: ... - def ClearField(self, field_name: Literal["authKey",b"authKey","hideFlag",b"hideFlag","luckyFlag",b"luckyFlag","luckyUin",b"luckyUin","msgType",b"msgType","receiverRichContent",b"receiverRichContent","receiverUin",b"receiverUin","senderRichContent",b"senderRichContent","senderUin",b"senderUin","showLatest",b"showLatest"]) -> None: ... - -class QQGroupDigestMsg(Message): - DESCRIPTOR: Descriptor - GROUPCODE_FIELD_NUMBER: int - SEQ_FIELD_NUMBER: int - RANDOM_FIELD_NUMBER: int - OPTYPE_FIELD_NUMBER: int - SENDER_FIELD_NUMBER: int - DIGESTOPER_FIELD_NUMBER: int - OPTIME_FIELD_NUMBER: int - LASTESTMSGSEQ_FIELD_NUMBER: int - OPERNICK_FIELD_NUMBER: int - SENDERNICK_FIELD_NUMBER: int - EXTINFO_FIELD_NUMBER: int - groupCode: int - seq: int - random: int - opType: int - sender: int - digestOper: int - opTime: int - lastestMsgSeq: int - operNick: bytes - senderNick: bytes - extInfo: int - def __init__(self, - *, - groupCode: int = ..., - seq: int = ..., - random: int = ..., - opType: int = ..., - sender: int = ..., - digestOper: int = ..., - opTime: int = ..., - lastestMsgSeq: int = ..., - operNick: bytes = ..., - senderNick: bytes = ..., - extInfo: int = ..., - ) -> None: ... - def ClearField(self, field_name: Literal["digestOper",b"digestOper","extInfo",b"extInfo","groupCode",b"groupCode","lastestMsgSeq",b"lastestMsgSeq","opTime",b"opTime","opType",b"opType","operNick",b"operNick","random",b"random","sender",b"sender","senderNick",b"senderNick","seq",b"seq"]) -> None: ... From 7d7677a1b06b233f47925d7acc8a05c76b5c9b7f Mon Sep 17 00:00:00 2001 From: a1025 Date: Sat, 9 Apr 2022 01:26:29 +0800 Subject: [PATCH 072/113] add: reconnect fallback --- cai/client/client.py | 8 +++++++- examples/friend_group.py | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/cai/client/client.py b/cai/client/client.py index e8d904f5..4813db7c 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -388,7 +388,13 @@ async def reconnect_and_login( ) -> None: await self.reconnect(change_server=change_server, server=server) # FIXME: register reason msfByNetChange? - await self._init(drop_offline_msg=False) + try: + await self._init(drop_offline_msg=False) + except asyncio.exceptions.TimeoutError: # fallback + log.network.warning("register failed, trying to re-login") + await self.disconnect() + await self.connect() + await self.login() async def close(self) -> None: """Close the client and logout.""" diff --git a/examples/friend_group.py b/examples/friend_group.py index 7a660ade..d2e56f12 100644 --- a/examples/friend_group.py +++ b/examples/friend_group.py @@ -11,7 +11,7 @@ import asyncio from hashlib import md5 -import cai +from cai.api.client import Client async def run(): @@ -26,6 +26,7 @@ async def run(): ) return + client = Client() client = await cai.login(account, md5(password.encode()).digest()) # friend From 73912cef0ffd208c9e0cc450ba75aa3dfe93c23e Mon Sep 17 00:00:00 2001 From: a1025 Date: Sat, 9 Apr 2022 02:04:55 +0800 Subject: [PATCH 073/113] f**k u, tencent --- cai/client/online_push/__init__.py | 79 ++++++++++++++---------------- cai/client/online_push/jce.py | 28 +++++++++++ cai/pb/im/op/__init__.py | 0 cai/pb/im/op/online_push.proto | 8 +++ cai/pb/im/op/online_push_pb2.py | 34 +++++++++++++ cai/pb/im/op/online_push_pb2.pyi | 46 +++++++++++++++++ 6 files changed, 153 insertions(+), 42 deletions(-) create mode 100644 cai/pb/im/op/__init__.py create mode 100644 cai/pb/im/op/online_push.proto create mode 100644 cai/pb/im/op/online_push_pb2.py create mode 100644 cai/pb/im/op/online_push_pb2.pyi diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index bccd6f84..b2914fc1 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -19,8 +19,9 @@ from cai.client.packet import UniPacket, IncomingPacket from cai.utils.jce import RequestPacket, RequestPacketVersion3 from cai.pb.im.oidb.cmd0x857.troop_tips import TemplParam, NotifyMsgBody +from cai.pb.im.op.online_push_pb2 import DelMsgCookies -from .jce import DelMsgInfo, DeviceInfo, SvcRespPushMsg +from .jce import DelMsgInfo, DeviceInfo, SvcRespPushMsg, SvcReqPushMsg from .command import PushMsg, PushMsgError, PushMsgCommand if TYPE_CHECKING: @@ -38,6 +39,7 @@ def encode_push_response( push_token: Optional[bytes] = None, service_type: int = 0, device_info: Optional[DeviceInfo] = None, + req_id: int = 0 ) -> Packet: """Build online push response packet. @@ -74,6 +76,7 @@ def encode_push_response( ) payload = SvcRespPushMsg.to_bytes(0, resp) req_packet = RequestPacketVersion3( + req_id=req_id, servant_name="OnlinePush", func_name="SvcRespPushMsg", data=types.MAP({types.STRING("resp"): types.BYTES(payload)}), @@ -225,42 +228,21 @@ def _parse_poke(params: Sequence[TemplParam]) -> dict: return res -# OnlinePush.SvcRespPushMsg -# def encode_resp_push_pkg( -# uin: int, svrip: int, seq: int, items: Sequence[DelMsgInfo] -# ) -> bytes: -# pkg = SvcRespPushMsg( -# uin=uin, del_infos=items, svrip=svrip & 0xFFFFFFFF, service_type=0 -# ) -# return RequestPacketVersion3( -# servant_name="OnlinePush", -# func_name="SvcRespPushMsg", -# req_id=seq, -# data=types.MAP( -# { -# types.STRING("SvcRespPushMsg"): types.BYTES( -# SvcRespPushMsg.to_bytes(0, pkg) -# ) -# } -# ), -# ).encode() - - # OnlinePush.ReqPush async def handle_req_push( client: "Client", packet: IncomingPacket ) -> PushMsgCommand: - body = JceDecoder.decode_bytes( - JceDecoder.decode_single( # type: ignore - RequestPacket.decode(packet.data).buffer - )[1]["req"]["OnlinePushPack.SvcReqPushMsg"] - )[0] + req_pkg = RequestPacket.decode(packet.data) + + body = SvcReqPushMsg.decode( + JceDecoder.decode_single(req_pkg.buffer)[1]["req"]["OnlinePushPack.SvcReqPushMsg"] # type: ignore + ).body _uin, stime, push_type, content = ( - body[0], - body[1], - body[2][0][2], - body[2][0][6], + body.uin, + body.msg_time, + body.msg_info[0].msg_type, + body.msg_info[0].msg, ) if push_type == 732: # group @@ -304,19 +286,32 @@ async def handle_req_push( pass # TODO: parse friend event - await client.send_and_wait( # resp ack - seq=client.next_seq(), - command_name="OnlinePush.RespPush", - packet=encode_push_response( - body[1], - client._session_id, - _uin, - client._siginfo.d2key, - body[3] & 0xFFFFFFFF, - [DelMsgInfo(from_uin=_uin, msg_seq=body[1], msg_time=stime)], - ), + seq = client.next_seq() + pkg = encode_push_response( + seq, + client._session_id, + _uin, + client._siginfo.d2key, + body.svrip, + [ + DelMsgInfo( + from_uin=info.from_uin, + msg_seq=info.msg_seq, + msg_time=info.msg_time, + msg_cookies=DelMsgCookies( + msg_type=info.msg_type, + msg_uid=info.msg_uid, + type=3, + xid=50015 + ).SerializeToString() + ) for info in body.msg_info + ], + req_id=req_pkg.req_id ) + # FIXME: useless + await client.send(seq, "OnlinePush.RespPush", pkg) + return PushMsgCommand( packet.uin, packet.seq, packet.ret_code, packet.command_name ) diff --git a/cai/client/online_push/jce.py b/cai/client/online_push/jce.py index 4cc8d5d5..7bfa6db5 100644 --- a/cai/client/online_push/jce.py +++ b/cai/client/online_push/jce.py @@ -49,6 +49,22 @@ class DeviceInfo(JceStruct): ios_idfa: types.STRING = JceField("", jce_id=5) +class MsgInfo(JceStruct): + from_uin: types.INT64 = JceField(jce_id=0) + msg_time: types.INT64 = JceField(jce_id=1) + msg_type: types.INT8 = JceField(jce_id=2) + msg_seq: types.INT8 = JceField(jce_id=3) + str_msg: types.STRING = JceField("", jce_id=4) + real_msg_time: types.INT32 = JceField(0, jce_id=5) + msg: types.BYTES = JceField(jce_id=6) + share_id: types.INT64 = JceField(0, jce_id=7) + msg_cookie: types.BYTES = JceField(bytes(), jce_id=8) + app_share_cookie: types.BYTES = JceField(bytes(), jce_id=9) + msg_uid: types.INT64 = JceField(0, jce_id=10) + last_change_time: types.INT64 = JceField(0, jce_id=11) + # TODO: missed + + class SvcRespPushMsg(JceStruct): """OnlinePush Service Push Response Packet. @@ -62,3 +78,15 @@ class SvcRespPushMsg(JceStruct): push_token: Optional[types.BYTES] = JceField(None, jce_id=3) service_type: types.INT32 = JceField(0, jce_id=4) device_info: Optional[DeviceInfo] = JceField(None, jce_id=5) + + +class _SvcReqPushMsg(JceStruct): + uin: types.INT64 = JceField(jce_id=0) + msg_time: types.INT64 = JceField(jce_id=1) + msg_info: types.LIST[MsgInfo] = JceField(jce_id=2) + svrip: types.INT32 = JceField(0, jce_id=3) + sync_cookie: types.BYTES = JceField(bytes(), jce_id=4) + + +class SvcReqPushMsg(JceStruct): + body: _SvcReqPushMsg = JceField(jce_id=0) diff --git a/cai/pb/im/op/__init__.py b/cai/pb/im/op/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cai/pb/im/op/online_push.proto b/cai/pb/im/op/online_push.proto new file mode 100644 index 00000000..313545db --- /dev/null +++ b/cai/pb/im/op/online_push.proto @@ -0,0 +1,8 @@ +syntax = "proto3"; + +message DelMsgCookies { + int32 msg_type = 1; + int64 msg_uid = 2; + int32 type = 3; // idk, value is 3 + int32 xid = 4; // idk, value is 50015 +} diff --git a/cai/pb/im/op/online_push_pb2.py b/cai/pb/im/op/online_push_pb2.py new file mode 100644 index 00000000..b744b0d8 --- /dev/null +++ b/cai/pb/im/op/online_push_pb2.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: online_push.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11online_push.proto\"M\n\rDelMsgCookies\x12\x10\n\x08msg_type\x18\x01 \x01(\x05\x12\x0f\n\x07msg_uid\x18\x02 \x01(\x03\x12\x0c\n\x04type\x18\x03 \x01(\x05\x12\x0b\n\x03xid\x18\x04 \x01(\x05\x62\x06proto3') + + + +_DELMSGCOOKIES = DESCRIPTOR.message_types_by_name['DelMsgCookies'] +DelMsgCookies = _reflection.GeneratedProtocolMessageType('DelMsgCookies', (_message.Message,), { + 'DESCRIPTOR' : _DELMSGCOOKIES, + '__module__' : 'online_push_pb2' + # @@protoc_insertion_point(class_scope:DelMsgCookies) + }) +_sym_db.RegisterMessage(DelMsgCookies) + +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _DELMSGCOOKIES._serialized_start=21 + _DELMSGCOOKIES._serialized_end=98 +# @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/op/online_push_pb2.pyi b/cai/pb/im/op/online_push_pb2.pyi new file mode 100644 index 00000000..6e54e27e --- /dev/null +++ b/cai/pb/im/op/online_push_pb2.pyi @@ -0,0 +1,46 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +from builtins import ( + int, +) + +from google.protobuf.descriptor import ( + Descriptor, + FileDescriptor, +) + +from google.protobuf.message import ( + Message, +) + +from typing_extensions import ( + Literal, +) + + +DESCRIPTOR: FileDescriptor + +class DelMsgCookies(Message): + DESCRIPTOR: Descriptor + MSG_TYPE_FIELD_NUMBER: int + MSG_UID_FIELD_NUMBER: int + TYPE_FIELD_NUMBER: int + XID_FIELD_NUMBER: int + msg_type: int + msg_uid: int + type: int + """idk, value is 3""" + + xid: int + """idk, value is 50015""" + + def __init__(self, + *, + msg_type: int = ..., + msg_uid: int = ..., + type: int = ..., + xid: int = ..., + ) -> None: ... + def ClearField(self, field_name: Literal["msg_type",b"msg_type","msg_uid",b"msg_uid","type",b"type","xid",b"xid"]) -> None: ... From 7415cf1ead9018e940495bb404d954ff159c7d8a Mon Sep 17 00:00:00 2001 From: a1025 Date: Sat, 9 Apr 2022 02:14:33 +0800 Subject: [PATCH 074/113] update: close client when force_offline triggered --- cai/client/client.py | 5 ++--- cai/client/message_service/__init__.py | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cai/client/client.py b/cai/client/client.py index 4813db7c..f6abb4b7 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -347,7 +347,7 @@ def _recv_done_cb(self, task: asyncio.Task): asyncio.create_task(self.reconnect_and_login()) else: log.network.warning("receiver stopped") - asyncio.create_task(self.disconnect()) + asyncio.create_task(self.close()) async def disconnect(self) -> None: """Disconnect if already connected to the server.""" @@ -392,8 +392,7 @@ async def reconnect_and_login( await self._init(drop_offline_msg=False) except asyncio.exceptions.TimeoutError: # fallback log.network.warning("register failed, trying to re-login") - await self.disconnect() - await self.connect() + await self.reconnect() await self.login() async def close(self) -> None: diff --git a/cai/client/message_service/__init__.py b/cai/client/message_service/__init__.py index 515d4cf6..46deac95 100644 --- a/cai/client/message_service/__init__.py +++ b/cai/client/message_service/__init__.py @@ -307,6 +307,7 @@ async def handle_force_offline( client: "Client", packet: IncomingPacket ) -> PushForceOfflineCommand: client._status = OnlineStatus.Offline + client._reconnect = False await client.disconnect() request = PushForceOfflineCommand.decode_response( packet.uin, From 79ac21dfb9b82fc16ae1e66779584de38cc1e94c Mon Sep 17 00:00:00 2001 From: a1025 Date: Sat, 9 Apr 2022 02:30:16 +0800 Subject: [PATCH 075/113] add: ignore repeat event --- cai/client/online_push/__init__.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index b2914fc1..4fa478d3 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -228,12 +228,21 @@ def _parse_poke(params: Sequence[TemplParam]) -> dict: return res +repeat_ev = set() + # OnlinePush.ReqPush async def handle_req_push( client: "Client", packet: IncomingPacket ) -> PushMsgCommand: req_pkg = RequestPacket.decode(packet.data) + # sbtx + if req_pkg.req_id in repeat_ev: + repeat_ev.remove(req_pkg.req_id) + return PushMsgCommand(packet.uin, packet.seq, packet.ret_code, packet.command_name) + else: + repeat_ev.add(req_pkg.req_id) + body = SvcReqPushMsg.decode( JceDecoder.decode_single(req_pkg.buffer)[1]["req"]["OnlinePushPack.SvcReqPushMsg"] # type: ignore ).body From 15e0728966a00f2fba7192c1d48a321ab21b9668 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sat, 9 Apr 2022 02:45:51 +0800 Subject: [PATCH 076/113] fix: nudge event --- cai/client/online_push/__init__.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index 4fa478d3..4ac33a61 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -214,17 +214,20 @@ async def handle_push_msg( return push -def _parse_poke(params: Sequence[TemplParam]) -> dict: +def _parse_poke(params: Sequence[TemplParam], default: int) -> dict: res = {"target": None, "sender": None, "action": None, "suffix": None} for p in params: - if p.name == "uin_str1": - res["sender"] = int(p.value) - elif p.name == "uin_str2": - res["target"] = int(p.value) - elif p.name == "suffix_str": - res["suffix"] = p.value - elif p.name == "action_str": - res["action"] = p.value + name, value = p.name.decode(), p.value.decode() + if name == "uin_str1": + res["sender"] = int(value) + elif name == "uin_str2": + res["target"] = int(value) + elif name == "suffix_str": + res["suffix"] = value + elif name == "action_str": + res["action"] = value + if not res["target"]: + res["target"] = default return res @@ -262,7 +265,7 @@ async def handle_req_push( if stype == 0x14: # nudge client.dispatch_event( events.NudgeEvent( - **_parse_poke(notify.general_gray_tip.templ_param), + **_parse_poke(notify.general_gray_tip.templ_param, default=_uin), group=gid, ) ) From 3587d32d76a6824da9f9788ed07bc53f98ffecab Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Sat, 9 Apr 2022 13:15:54 +0800 Subject: [PATCH 077/113] :art: rewrite reqpush --- cai/client/message_service/jce.py | 54 +------- cai/client/online_push/__init__.py | 200 ++++++++++++++++------------- cai/client/online_push/command.py | 52 ++++++++ cai/client/online_push/jce.py | 84 +++++++++--- 4 files changed, 228 insertions(+), 162 deletions(-) diff --git a/cai/client/message_service/jce.py b/cai/client/message_service/jce.py index 8b3dba1c..6965d71d 100644 --- a/cai/client/message_service/jce.py +++ b/cai/client/message_service/jce.py @@ -13,59 +13,7 @@ from jce import JceField, JceStruct, types -from cai.client.qq_service.jce import StShareData - - -# Push Notify -class CPicInfo(JceStruct): - """MessageSvc Online Push CPic Info jce packet. - - Note: - Source: OnlinePushPack.CPicInfo - """ - - path: types.BYTES = JceField(jce_id=0) - host: types.BYTES = JceField(bytes(), jce_id=1) - - -class TempMsgHead(JceStruct): - """MessageSvc Online Push Temp Message Head jce packet. - - Note: - Source: OnlinePushPack.TempMsgHead - """ - - c2c_type: types.INT32 = JceField(0, jce_id=0) - service_type: types.INT32 = JceField(0, jce_id=1) - - -class MessageInfo(JceStruct): - """MessageSvc Online Push Message Info jce packet. - - Note: - Source: OnlinePushPack.MsgInfo - """ - - from_uin: types.INT64 = JceField(jce_id=0) - message_time: types.INT64 = JceField(jce_id=1) - message_type: types.INT16 = JceField(jce_id=2) - message_seq: types.INT16 = JceField(jce_id=3) - message: types.STRING = JceField(jce_id=4) - real_message_time: types.INT32 = JceField(0, jce_id=5) - vec_message: types.BYTES = JceField(bytes(), jce_id=6) - app_share_id: types.INT64 = JceField(0, jce_id=7) - message_cookies: types.BYTES = JceField(bytes(), jce_id=8) - app_share_cookie: types.BYTES = JceField(bytes(), jce_id=9) - message_uid: types.INT64 = JceField(0, jce_id=10) - last_change_time: types.INT64 = JceField(0, jce_id=11) - cpic_info: types.LIST[CPicInfo] = JceField([], jce_id=12) - share_data: Optional[StShareData] = JceField(None, jce_id=13) - from_inst_id: types.INT64 = JceField(0, jce_id=14) - remark_of_sender: types.BYTES = JceField(bytes(), jce_id=15) - from_mobile: types.STRING = JceField("", jce_id=16) - from_name: types.STRING = JceField("", jce_id=17) - nickname: types.LIST[types.STRING] = JceField([], jce_id=18) - c2c_temp_msg_head: Optional[TempMsgHead] = JceField(None, jce_id=19) +from cai.client.online_push.jce import MessageInfo class RequestPushNotify(JceStruct): diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index 4ac33a61..73580e6a 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -15,14 +15,20 @@ from cai.log import logger from cai.client import events from cai.utils.binary import Packet +from cai.pb.im.op.online_push_pb2 import DelMsgCookies from cai.client.message_service import MESSAGE_DECODERS from cai.client.packet import UniPacket, IncomingPacket from cai.utils.jce import RequestPacket, RequestPacketVersion3 from cai.pb.im.oidb.cmd0x857.troop_tips import TemplParam, NotifyMsgBody -from cai.pb.im.op.online_push_pb2 import DelMsgCookies -from .jce import DelMsgInfo, DeviceInfo, SvcRespPushMsg, SvcReqPushMsg -from .command import PushMsg, PushMsgError, PushMsgCommand +from .jce import DelMsgInfo, DeviceInfo, SvcReqPushMsg, SvcRespPushMsg +from .command import ( + PushMsg, + SvcReqPush, + PushMsgError, + PushMsgCommand, + SvcReqPushCommand, +) if TYPE_CHECKING: from cai.client import Client @@ -39,7 +45,7 @@ def encode_push_response( push_token: Optional[bytes] = None, service_type: int = 0, device_info: Optional[DeviceInfo] = None, - req_id: int = 0 + req_id: int = 0, ) -> Packet: """Build online push response packet. @@ -236,97 +242,111 @@ def _parse_poke(params: Sequence[TemplParam], default: int) -> dict: # OnlinePush.ReqPush async def handle_req_push( client: "Client", packet: IncomingPacket -) -> PushMsgCommand: - req_pkg = RequestPacket.decode(packet.data) - - # sbtx - if req_pkg.req_id in repeat_ev: - repeat_ev.remove(req_pkg.req_id) - return PushMsgCommand(packet.uin, packet.seq, packet.ret_code, packet.command_name) - else: - repeat_ev.add(req_pkg.req_id) - - body = SvcReqPushMsg.decode( - JceDecoder.decode_single(req_pkg.buffer)[1]["req"]["OnlinePushPack.SvcReqPushMsg"] # type: ignore - ).body - - _uin, stime, push_type, content = ( - body.uin, - body.msg_time, - body.msg_info[0].msg_type, - body.msg_info[0].msg, +) -> SvcReqPushCommand: + """Handle Request Push Command. + + Note: + Source: com.tencent.imcore.message.OnLinePushMessageProcessor.ProcessOneMsg.a + """ + push = SvcReqPushCommand.decode_response( + packet.uin, + packet.seq, + packet.ret_code, + packet.command_name, + packet.data, ) - if push_type == 732: # group - gid = int.from_bytes(content[0:4], "big") - stype = content[4] - if stype in (0x14, 0x11): - notify = NotifyMsgBody.FromString(content[7:]) - if stype == 0x14: # nudge - client.dispatch_event( - events.NudgeEvent( - **_parse_poke(notify.general_gray_tip.templ_param, default=_uin), - group=gid, - ) + # FIXME: cache and remove duplicates + + if isinstance(push, SvcReqPush): + seq = client.next_seq() + pkg = encode_push_response( + seq, + client._session_id, + push.message.uin, + client._siginfo.d2key, + push.message.svrip, + [ + DelMsgInfo( + from_uin=info.from_uin, + msg_seq=info.message_seq, + msg_time=info.message_time, + msg_cookies=DelMsgCookies( + msg_type=info.message_type, + msg_uid=info.message_uid, + type=3, + xid=50015, + ).SerializeToString(), ) - elif stype == 0x11: # recall - msg = notify.recall.recalled_msg_list[0] - client.dispatch_event( - events.MemberRecallMessageEvent( - gid, - notify.recall.uin, - notify.recall.op_type, - msg.author_uin, - msg.msg_random, - msg.seq, - msg.time, + for info in push.message.msg_info + ], + req_id=push.seq, + ) + await client.send(seq, "OnlinePush.RespPush", pkg) + + for message in push.message.msg_info: + if message.message_type == 169: + # handleC2COnlinePushMsgResp + pass + elif message.message_type == 8: + # HandleShMsgType0x08 + pass + elif message.message_type == 132: + # HandleShMsgType0x84 + pass + elif message.message_type == 732: + content = message.vec_message + sub_type = content[4] + gid = int.from_bytes(content[:4], "big") + + if sub_type in (0x14, 0x11): + notify = NotifyMsgBody.FromString(content[7:]) + if sub_type == 0x14: # nudge + client.dispatch_event( + events.NudgeEvent( + **_parse_poke( + notify.general_gray_tip.templ_param, + default=message.from_uin, + ), + group=gid, + ) + ) + elif sub_type == 0x11: # recall + msg = notify.recall.recalled_msg_list[0] + client.dispatch_event( + events.MemberRecallMessageEvent( + gid, + notify.recall.uin, + notify.recall.op_type, + msg.author_uin, + msg.msg_random, + msg.seq, + msg.time, + ) + ) + elif sub_type == 0x0C: # mute event + operator = int.from_bytes( + content[6:10], "big", signed=False ) - ) - elif stype == 0x0C: # mute event - operator = int.from_bytes(content[6:10], "big", signed=False) - target = int.from_bytes(content[16:20], "big", signed=False) - duration = int.from_bytes(content[20:24], "big", signed=False) - if duration > 0: # muted - client.dispatch_event( - events.MemberMutedEvent(gid, operator, target, duration) - ) - else: - client.dispatch_event( - events.MemberUnMutedEvent(gid, operator, target) - ) - elif push_type == 528: - pass - # TODO: parse friend event - - seq = client.next_seq() - pkg = encode_push_response( - seq, - client._session_id, - _uin, - client._siginfo.d2key, - body.svrip, - [ - DelMsgInfo( - from_uin=info.from_uin, - msg_seq=info.msg_seq, - msg_time=info.msg_time, - msg_cookies=DelMsgCookies( - msg_type=info.msg_type, - msg_uid=info.msg_uid, - type=3, - xid=50015 - ).SerializeToString() - ) for info in body.msg_info - ], - req_id=req_pkg.req_id - ) - - # FIXME: useless - await client.send(seq, "OnlinePush.RespPush", pkg) + target = int.from_bytes(content[16:20], "big", signed=False) + duration = int.from_bytes( + content[20:24], "big", signed=False + ) + if duration > 0: # muted + client.dispatch_event( + events.MemberMutedEvent( + gid, operator, target, duration + ) + ) + else: + client.dispatch_event( + events.MemberUnMutedEvent(gid, operator, target) + ) + elif message.message_type == 528: + # TODO: parse friend event + pass - return PushMsgCommand( - packet.uin, packet.seq, packet.ret_code, packet.command_name - ) + return push __all__ = [ diff --git a/cai/client/online_push/command.py b/cai/client/online_push/command.py index bf08cff4..a52daf2b 100644 --- a/cai/client/online_push/command.py +++ b/cai/client/online_push/command.py @@ -13,6 +13,9 @@ from cai.client.command import Command from cai.pb.msf.msg.onlinepush import PbPushMsg +from cai.utils.jce import RequestPacketVersion2 + +from .jce import SvcReqPushMsg @dataclass @@ -61,3 +64,52 @@ class PushMsg(PushMsgCommand): @dataclass class PushMsgError(PushMsgCommand): message: str + + +@dataclass +class SvcReqPushCommand(Command): + @classmethod + def decode_response( + cls, uin: int, seq: int, ret_code: int, command_name: str, data: bytes + ) -> "SvcReqPushCommand": + """Decode OnlinePush request push packet. + + Note: + Source: com.tencent.mobileqq.service.message.MessageFactoryReceiver.l + + Args: + 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. + """ + if ret_code != 0 or not data: + return SvcReqPushCommand(uin, seq, ret_code, command_name) + + try: + req_packet = RequestPacketVersion2.decode(data) + svc_req_push = SvcReqPushMsg.decode( + req_packet.data["req"][ # type: ignore + "OnlinePushPack.SvcReqPushMsg" + ][1:-1] + ) + return SvcReqPush(uin, seq, ret_code, command_name, svc_req_push) + except Exception as e: + return SvcReqPushError( + uin, + seq, + ret_code, + command_name, + f"Error when decoding response! {repr(e)}", + ) + + +@dataclass +class SvcReqPush(SvcReqPushCommand): + message: SvcReqPushMsg + + +@dataclass +class SvcReqPushError(SvcReqPushCommand): + message: str diff --git a/cai/client/online_push/jce.py b/cai/client/online_push/jce.py index 7bfa6db5..d1c35af4 100644 --- a/cai/client/online_push/jce.py +++ b/cai/client/online_push/jce.py @@ -13,6 +13,8 @@ from jce import JceField, JceStruct, types +from cai.client.qq_service.jce import StShareData + class DelMsgInfo(JceStruct): """OnlinePush Delete Message Info Packet. @@ -49,20 +51,62 @@ class DeviceInfo(JceStruct): ios_idfa: types.STRING = JceField("", jce_id=5) -class MsgInfo(JceStruct): +class CPicInfo(JceStruct): + """MessageSvc Online Push CPic Info jce packet. + + Note: + Source: OnlinePushPack.CPicInfo + """ + + path: types.BYTES = JceField(jce_id=0) + host: types.BYTES = JceField(bytes(), jce_id=1) + + +class TempMsgHead(JceStruct): + """MessageSvc Online Push Temp Message Head jce packet. + + Note: + Source: OnlinePushPack.TempMsgHead + """ + + c2c_type: types.INT32 = JceField(0, jce_id=0) + service_type: types.INT32 = JceField(0, jce_id=1) + + +class MessageInfo(JceStruct): + """MessageSvc Online Push Message Info jce packet. + + Note: + Source: OnlinePushPack.MsgInfo + """ + from_uin: types.INT64 = JceField(jce_id=0) - msg_time: types.INT64 = JceField(jce_id=1) - msg_type: types.INT8 = JceField(jce_id=2) - msg_seq: types.INT8 = JceField(jce_id=3) - str_msg: types.STRING = JceField("", jce_id=4) - real_msg_time: types.INT32 = JceField(0, jce_id=5) - msg: types.BYTES = JceField(jce_id=6) - share_id: types.INT64 = JceField(0, jce_id=7) - msg_cookie: types.BYTES = JceField(bytes(), jce_id=8) + message_time: types.INT64 = JceField(jce_id=1) + message_type: types.INT16 = JceField(jce_id=2) + message_seq: types.INT16 = JceField(jce_id=3) + message: types.STRING = JceField(jce_id=4) + real_message_time: types.INT32 = JceField(0, jce_id=5) + vec_message: types.BYTES = JceField(bytes(), jce_id=6) + app_share_id: types.INT64 = JceField(0, jce_id=7) + message_cookies: types.BYTES = JceField(bytes(), jce_id=8) app_share_cookie: types.BYTES = JceField(bytes(), jce_id=9) - msg_uid: types.INT64 = JceField(0, jce_id=10) + message_uid: types.INT64 = JceField(0, jce_id=10) last_change_time: types.INT64 = JceField(0, jce_id=11) - # TODO: missed + cpic_info: types.LIST[CPicInfo] = JceField([], jce_id=12) + share_data: Optional[StShareData] = JceField(None, jce_id=13) + from_inst_id: types.INT64 = JceField(0, jce_id=14) + remark_of_sender: types.BYTES = JceField(bytes(), jce_id=15) + from_mobile: types.STRING = JceField("", jce_id=16) + from_name: types.STRING = JceField("", jce_id=17) + nickname: types.LIST[types.STRING] = JceField([], jce_id=18) + c2c_temp_msg_head: Optional[TempMsgHead] = JceField(None, jce_id=19) + + +class UinPairMsg(JceStruct): + last_read_time: types.INT64 = JceField(0, jce_id=1) + peer_uin: types.INT64 = JceField(0, jce_id=2) + msg_completed: types.INT64 = JceField(0, jce_id=3) + msg_info: Optional[types.LIST[MessageInfo]] = JceField(None, jce_id=4) class SvcRespPushMsg(JceStruct): @@ -80,13 +124,15 @@ class SvcRespPushMsg(JceStruct): device_info: Optional[DeviceInfo] = JceField(None, jce_id=5) -class _SvcReqPushMsg(JceStruct): +class SvcReqPushMsg(JceStruct): uin: types.INT64 = JceField(jce_id=0) msg_time: types.INT64 = JceField(jce_id=1) - msg_info: types.LIST[MsgInfo] = JceField(jce_id=2) - svrip: types.INT32 = JceField(0, jce_id=3) - sync_cookie: types.BYTES = JceField(bytes(), jce_id=4) - - -class SvcReqPushMsg(JceStruct): - body: _SvcReqPushMsg = JceField(jce_id=0) + msg_info: types.LIST[MessageInfo] = JceField(jce_id=2) + svrip: types.INT32 = JceField(jce_id=3) + sync_cookie: Optional[types.BYTES] = JceField(None, jce_id=4) + uinpair_msg: Optional[types.LIST[UinPairMsg]] = JceField(None, jce_id=5) + preview: Optional[types.MAP[types.STRING, types.BYTES]] = JceField( + None, jce_id=6 + ) + user_active: types.INT32 = JceField(0, jce_id=7) + general_flag: types.INT32 = JceField(0, jce_id=12) From 49e177b44f369c9ed0c024f369f9b60003e44037 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sat, 9 Apr 2022 13:17:37 +0800 Subject: [PATCH 078/113] fix: reconnect fail --- cai/client/client.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cai/client/client.py b/cai/client/client.py index f6abb4b7..f06b986d 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -369,6 +369,7 @@ async def reconnect( if not change_server and self._connection: log.network.warning("reconnecting...") await self._connection.reconnect() + asyncio.create_task(self.receive()).add_done_callback(self._recv_done_cb) log.network.info("reconnected") return @@ -389,7 +390,7 @@ async def reconnect_and_login( await self.reconnect(change_server=change_server, server=server) # FIXME: register reason msfByNetChange? try: - await self._init(drop_offline_msg=False) + await self._init() except asyncio.exceptions.TimeoutError: # fallback log.network.warning("register failed, trying to re-login") await self.reconnect() From 6ce883cd23b05cd646c26a8ab0f55279674efc6c Mon Sep 17 00:00:00 2001 From: a1025 Date: Sat, 9 Apr 2022 13:21:16 +0800 Subject: [PATCH 079/113] fix: drop msg when reconnect --- cai/client/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cai/client/client.py b/cai/client/client.py index f06b986d..da6209a2 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -390,7 +390,7 @@ async def reconnect_and_login( await self.reconnect(change_server=change_server, server=server) # FIXME: register reason msfByNetChange? try: - await self._init() + await self._init(drop_offline_msg=False) except asyncio.exceptions.TimeoutError: # fallback log.network.warning("register failed, trying to re-login") await self.reconnect() From 83f2d132dd25ae7ad1190b36ee327d18ae9f61e4 Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Sat, 9 Apr 2022 13:40:05 +0800 Subject: [PATCH 080/113] :wheelchair: refactor receiver start --- cai/client/client.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/cai/client/client.py b/cai/client/client.py index da6209a2..3d7ea719 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -321,8 +321,7 @@ async def connect(self, server: Optional[SsoServer] = None) -> None: self._connection = await connect( _server.host, _server.port, ssl=False, timeout=3.0 ) - task = asyncio.create_task(self.receive()) - task.add_done_callback(self._recv_done_cb) + self._start_receiver() except ConnectionError as e: raise except Exception as e: @@ -331,6 +330,10 @@ async def connect(self, server: Optional[SsoServer] = None) -> None: f"server({_server.host}:{_server.port}): " + repr(e) ) + def _start_receiver(self): + task = asyncio.create_task(self.receive()) + task.add_done_callback(self._recv_done_cb) + def _recv_done_cb(self, task: asyncio.Task): if self._reconnect: if ( @@ -369,7 +372,7 @@ async def reconnect( if not change_server and self._connection: log.network.warning("reconnecting...") await self._connection.reconnect() - asyncio.create_task(self.receive()).add_done_callback(self._recv_done_cb) + self._start_receiver() log.network.info("reconnected") return From 7f8fb29b5c4f51559414a61eb97f716f12edbaa3 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sat, 9 Apr 2022 15:14:30 +0800 Subject: [PATCH 081/113] add: remove duplicates req --- cai/client/online_push/__init__.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index 73580e6a..6d362f84 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -256,9 +256,12 @@ async def handle_req_push( packet.data, ) - # FIXME: cache and remove duplicates - if isinstance(push, SvcReqPush): + if push.seq in client._msg_cache: # duplicates msg, drop + return push + else: + client._msg_cache[push.seq] = None + seq = client.next_seq() pkg = encode_push_response( seq, @@ -282,7 +285,7 @@ async def handle_req_push( ], req_id=push.seq, ) - await client.send(seq, "OnlinePush.RespPush", pkg) + #await client.send(seq, "OnlinePush.RespPush", pkg) for message in push.message.msg_info: if message.message_type == 169: From 016b31eb83bce32d3bdc7b5fe8101fc2129096b6 Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Sat, 9 Apr 2022 16:32:23 +0800 Subject: [PATCH 082/113] :wheelchair: improve online push cache --- cai/client/client.py | 9 +++--- cai/client/message_service/__init__.py | 11 ++++--- cai/client/online_push/__init__.py | 43 ++++++++++++++------------ 3 files changed, 35 insertions(+), 28 deletions(-) diff --git a/cai/client/client.py b/cai/client/client.py index 3d7ea719..84968566 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -149,7 +149,7 @@ def __init__( apk_info: ApkInfo, *, auto_reconnect: bool = True, - max_reconnections: Optional[int] = 3, + max_reconnections: int = 3, ): # client info self._device: DeviceInfo = device @@ -196,12 +196,13 @@ def __init__( self._sync_cookie: bytes = bytes() self._pubaccount_cookie: bytes = bytes() self._msg_cache: TTLCache = TTLCache(maxsize=1024, ttl=3600) + self._online_push_cache: TTLCache = TTLCache(maxsize=1024, ttl=3600) self._receive_store: FutureStore[int, Command] = FutureStore() # connection info self._reconnect: bool = auto_reconnect self._reconnect_times: int = 0 - self._max_reconnections: Optional[int] = max_reconnections + self._max_reconnections: int = max_reconnections self._closed: asyncio.Event = asyncio.Event() def __str__(self) -> str: @@ -394,9 +395,9 @@ async def reconnect_and_login( # FIXME: register reason msfByNetChange? try: await self._init(drop_offline_msg=False) - except asyncio.exceptions.TimeoutError: # fallback + except asyncio.TimeoutError: log.network.warning("register failed, trying to re-login") - await self.reconnect() + await self.reconnect(change_server=True, server=server) await self.login() async def close(self) -> None: diff --git a/cai/client/message_service/__init__.py b/cai/client/message_service/__init__.py index 46deac95..acdf0c69 100644 --- a/cai/client/message_service/__init__.py +++ b/cai/client/message_service/__init__.py @@ -155,12 +155,15 @@ async def handle_get_message( key = ( f"{message.head.from_uin}" - f"{message.head.type}" - f"{message.head.time}" + f"{message.head.to_uin}" + f"{message.head.seq}" + f"{message.head.uid}" ) - if key in client._msg_cache: - continue + # refresh key ttl first + should_skip = key in client._msg_cache client._msg_cache[key] = None + if should_skip: + continue # drop messages when init if client._init_flag: diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index 6d362f84..e9454fe5 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -8,20 +8,20 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ -from typing import TYPE_CHECKING, List, Tuple, Optional, Sequence +from typing import TYPE_CHECKING, List, Optional, Sequence -from jce import JceStruct, JceDecoder, types +from jce import types from cai.log import logger from cai.client import events from cai.utils.binary import Packet +from cai.utils.jce import RequestPacketVersion3 from cai.pb.im.op.online_push_pb2 import DelMsgCookies from cai.client.message_service import MESSAGE_DECODERS from cai.client.packet import UniPacket, IncomingPacket -from cai.utils.jce import RequestPacket, RequestPacketVersion3 from cai.pb.im.oidb.cmd0x857.troop_tips import TemplParam, NotifyMsgBody -from .jce import DelMsgInfo, DeviceInfo, SvcReqPushMsg, SvcRespPushMsg +from .jce import DelMsgInfo, DeviceInfo, SvcRespPushMsg from .command import ( PushMsg, SvcReqPush, @@ -237,8 +237,6 @@ def _parse_poke(params: Sequence[TemplParam], default: int) -> dict: return res -repeat_ev = set() - # OnlinePush.ReqPush async def handle_req_push( client: "Client", packet: IncomingPacket @@ -257,11 +255,6 @@ async def handle_req_push( ) if isinstance(push, SvcReqPush): - if push.seq in client._msg_cache: # duplicates msg, drop - return push - else: - client._msg_cache[push.seq] = None - seq = client.next_seq() pkg = encode_push_response( seq, @@ -285,20 +278,30 @@ async def handle_req_push( ], req_id=push.seq, ) - #await client.send(seq, "OnlinePush.RespPush", pkg) + # await client.send(seq, "OnlinePush.RespPush", pkg) + + for info in push.message.msg_info: + key = ( + f"{info.message_seq}" + f"{info.message_time}" + f"{info.message_uid}" + ) + should_skip = key in client._online_push_cache + client._online_push_cache[key] = None + if should_skip: + continue - for message in push.message.msg_info: - if message.message_type == 169: + if info.message_type == 169: # handleC2COnlinePushMsgResp pass - elif message.message_type == 8: + elif info.message_type == 8: # HandleShMsgType0x08 pass - elif message.message_type == 132: + elif info.message_type == 132: # HandleShMsgType0x84 pass - elif message.message_type == 732: - content = message.vec_message + elif info.message_type == 732: + content = info.vec_message sub_type = content[4] gid = int.from_bytes(content[:4], "big") @@ -309,7 +312,7 @@ async def handle_req_push( events.NudgeEvent( **_parse_poke( notify.general_gray_tip.templ_param, - default=message.from_uin, + default=info.from_uin, ), group=gid, ) @@ -345,7 +348,7 @@ async def handle_req_push( client.dispatch_event( events.MemberUnMutedEvent(gid, operator, target) ) - elif message.message_type == 528: + elif info.message_type == 528: # TODO: parse friend event pass From e66eeef239013925d9fef4d89c9112815b43494f Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Sat, 9 Apr 2022 17:15:39 +0800 Subject: [PATCH 083/113] :construction: process del msg --- cai/client/online_push/__init__.py | 32 +++++++-------------- cai/client/online_push/jce.py | 16 +++++------ cai/pb/im/op/__init__.py | 0 cai/pb/im/op/online_push.proto | 8 ------ cai/pb/im/op/online_push_pb2.py | 34 ---------------------- cai/pb/im/op/online_push_pb2.pyi | 46 ------------------------------ 6 files changed, 19 insertions(+), 117 deletions(-) delete mode 100644 cai/pb/im/op/__init__.py delete mode 100644 cai/pb/im/op/online_push.proto delete mode 100644 cai/pb/im/op/online_push_pb2.py delete mode 100644 cai/pb/im/op/online_push_pb2.pyi diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index e9454fe5..32690aa9 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -16,7 +16,6 @@ from cai.client import events from cai.utils.binary import Packet from cai.utils.jce import RequestPacketVersion3 -from cai.pb.im.op.online_push_pb2 import DelMsgCookies from cai.client.message_service import MESSAGE_DECODERS from cai.client.packet import UniPacket, IncomingPacket from cai.pb.im.oidb.cmd0x857.troop_tips import TemplParam, NotifyMsgBody @@ -265,43 +264,34 @@ async def handle_req_push( [ DelMsgInfo( from_uin=info.from_uin, - msg_seq=info.message_seq, - msg_time=info.message_time, - msg_cookies=DelMsgCookies( - msg_type=info.message_type, - msg_uid=info.message_uid, - type=3, - xid=50015, - ).SerializeToString(), + msg_seq=info.msg_seq, + msg_time=info.msg_time, + msg_cookies=info.msg_cookies, ) for info in push.message.msg_info ], req_id=push.seq, ) - # await client.send(seq, "OnlinePush.RespPush", pkg) + await client.send(seq, "OnlinePush.RespPush", pkg) for info in push.message.msg_info: - key = ( - f"{info.message_seq}" - f"{info.message_time}" - f"{info.message_uid}" - ) + key = f"{info.msg_seq}" f"{info.msg_time}" f"{info.msg_uid}" should_skip = key in client._online_push_cache client._online_push_cache[key] = None if should_skip: continue - if info.message_type == 169: + if info.msg_type == 169: # handleC2COnlinePushMsgResp pass - elif info.message_type == 8: + elif info.msg_type == 8: # HandleShMsgType0x08 pass - elif info.message_type == 132: + elif info.msg_type == 132: # HandleShMsgType0x84 pass - elif info.message_type == 732: - content = info.vec_message + elif info.msg_type == 732: + content = info.vec_msg sub_type = content[4] gid = int.from_bytes(content[:4], "big") @@ -348,7 +338,7 @@ async def handle_req_push( client.dispatch_event( events.MemberUnMutedEvent(gid, operator, target) ) - elif info.message_type == 528: + elif info.msg_type == 528: # TODO: parse friend event pass diff --git a/cai/client/online_push/jce.py b/cai/client/online_push/jce.py index d1c35af4..46986871 100644 --- a/cai/client/online_push/jce.py +++ b/cai/client/online_push/jce.py @@ -81,16 +81,16 @@ class MessageInfo(JceStruct): """ from_uin: types.INT64 = JceField(jce_id=0) - message_time: types.INT64 = JceField(jce_id=1) - message_type: types.INT16 = JceField(jce_id=2) - message_seq: types.INT16 = JceField(jce_id=3) - message: types.STRING = JceField(jce_id=4) - real_message_time: types.INT32 = JceField(0, jce_id=5) - vec_message: types.BYTES = JceField(bytes(), jce_id=6) + msg_time: types.INT64 = JceField(jce_id=1) + msg_type: types.INT16 = JceField(jce_id=2) + msg_seq: types.INT16 = JceField(jce_id=3) + msg: types.STRING = JceField(jce_id=4) + real_msg_time: types.INT32 = JceField(0, jce_id=5) + vec_msg: types.BYTES = JceField(bytes(), jce_id=6) app_share_id: types.INT64 = JceField(0, jce_id=7) - message_cookies: types.BYTES = JceField(bytes(), jce_id=8) + msg_cookies: types.BYTES = JceField(bytes(), jce_id=8) app_share_cookie: types.BYTES = JceField(bytes(), jce_id=9) - message_uid: types.INT64 = JceField(0, jce_id=10) + msg_uid: types.INT64 = JceField(0, jce_id=10) last_change_time: types.INT64 = JceField(0, jce_id=11) cpic_info: types.LIST[CPicInfo] = JceField([], jce_id=12) share_data: Optional[StShareData] = JceField(None, jce_id=13) diff --git a/cai/pb/im/op/__init__.py b/cai/pb/im/op/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/cai/pb/im/op/online_push.proto b/cai/pb/im/op/online_push.proto deleted file mode 100644 index 313545db..00000000 --- a/cai/pb/im/op/online_push.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -message DelMsgCookies { - int32 msg_type = 1; - int64 msg_uid = 2; - int32 type = 3; // idk, value is 3 - int32 xid = 4; // idk, value is 50015 -} diff --git a/cai/pb/im/op/online_push_pb2.py b/cai/pb/im/op/online_push_pb2.py deleted file mode 100644 index b744b0d8..00000000 --- a/cai/pb/im/op/online_push_pb2.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: online_push.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11online_push.proto\"M\n\rDelMsgCookies\x12\x10\n\x08msg_type\x18\x01 \x01(\x05\x12\x0f\n\x07msg_uid\x18\x02 \x01(\x03\x12\x0c\n\x04type\x18\x03 \x01(\x05\x12\x0b\n\x03xid\x18\x04 \x01(\x05\x62\x06proto3') - - - -_DELMSGCOOKIES = DESCRIPTOR.message_types_by_name['DelMsgCookies'] -DelMsgCookies = _reflection.GeneratedProtocolMessageType('DelMsgCookies', (_message.Message,), { - 'DESCRIPTOR' : _DELMSGCOOKIES, - '__module__' : 'online_push_pb2' - # @@protoc_insertion_point(class_scope:DelMsgCookies) - }) -_sym_db.RegisterMessage(DelMsgCookies) - -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - _DELMSGCOOKIES._serialized_start=21 - _DELMSGCOOKIES._serialized_end=98 -# @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/op/online_push_pb2.pyi b/cai/pb/im/op/online_push_pb2.pyi deleted file mode 100644 index 6e54e27e..00000000 --- a/cai/pb/im/op/online_push_pb2.pyi +++ /dev/null @@ -1,46 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -from builtins import ( - int, -) - -from google.protobuf.descriptor import ( - Descriptor, - FileDescriptor, -) - -from google.protobuf.message import ( - Message, -) - -from typing_extensions import ( - Literal, -) - - -DESCRIPTOR: FileDescriptor - -class DelMsgCookies(Message): - DESCRIPTOR: Descriptor - MSG_TYPE_FIELD_NUMBER: int - MSG_UID_FIELD_NUMBER: int - TYPE_FIELD_NUMBER: int - XID_FIELD_NUMBER: int - msg_type: int - msg_uid: int - type: int - """idk, value is 3""" - - xid: int - """idk, value is 50015""" - - def __init__(self, - *, - msg_type: int = ..., - msg_uid: int = ..., - type: int = ..., - xid: int = ..., - ) -> None: ... - def ClearField(self, field_name: Literal["msg_type",b"msg_type","msg_uid",b"msg_uid","type",b"type","xid",b"xid"]) -> None: ... From e099cfa68ac7bad0b63e4158f466ae0d511dd48c Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Sat, 9 Apr 2022 17:51:36 +0800 Subject: [PATCH 084/113] :wrench: improve account settings cache --- cai/api/client.py | 15 +++++---------- cai/settings/device.py | 31 +++++++++++-------------------- cai/settings/protocol.py | 29 ++++++++++------------------- cai/storage/__init__.py | 38 +++++++++++++++++++------------------- examples/login.py | 6 +----- 5 files changed, 46 insertions(+), 73 deletions(-) diff --git a/cai/api/client.py b/cai/api/client.py index 76b917c4..66205bb3 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -13,10 +13,10 @@ from cai import log from cai.client import OnlineStatus from cai.client import Client as client_t -from cai.settings.protocol import ApkInfo +from cai.settings.device import get_device from cai.pb.msf.msg.svc import PbSendMsgResp from cai.client.highway import HighWaySession -from cai.settings.device import DeviceInfo, new_device +from cai.settings.protocol import get_protocol from cai.client.message_service.encoders import build_msg, make_group_msg_pkg from cai.client.message_service.models import ( Element, @@ -35,20 +35,15 @@ ) -def make_client( - uin: int, - passwd: Union[str, bytes], - apk_info: ApkInfo, - device: Optional[DeviceInfo] = None, -) -> client_t: +def make_client(uin: int, passwd: Union[str, bytes]) -> client_t: if not (isinstance(passwd, bytes) and len(passwd) == 16): # not a vailed md5 passwd if isinstance(passwd, bytes): passwd = hashlib.md5(passwd).digest() else: passwd = hashlib.md5(passwd.encode()).digest() - if not device: - device = new_device() + device = get_device(uin) + apk_info = get_protocol(uin) return client_t(uin, passwd, device, apk_info) diff --git a/cai/settings/device.py b/cai/settings/device.py index fd0726ad..81c3b1a4 100644 --- a/cai/settings/device.py +++ b/cai/settings/device.py @@ -11,7 +11,6 @@ https://github.com/cscs181/CAI/blob/master/LICENSE """ import os -import time import uuid import random import secrets @@ -23,8 +22,6 @@ from cai.storage import Storage from cai.utils.dataclass import JsonableDataclass -_device: Optional["DeviceInfo"] = None - @dataclass(init=True, eq=False) class Version(JsonableDataclass): @@ -232,35 +229,29 @@ def new_device( ) -def get_device(cache: bool = True) -> DeviceInfo: - global _device - if cache and _device: - return _device +def get_device(uin: int, cache: bool = True) -> DeviceInfo: + cache_file = Storage.get_account_cache_dir(uin) / "device.json" + backup_file = Storage.get_account_cache_dir(uin) / "device.json.bak" device: DeviceInfo - if not os.path.exists(Storage.device_file): - device = new_device() - with open(Storage.device_file, "w") as f: - device.to_file(f) - else: - with open(Storage.device_file, "r+") as f: + if cache and cache_file.exists(): + with cache_file.open("r+") as f: try: device = DeviceInfo.from_file(f) except Exception as e: - backup_file = f"{Storage.device_file}.{int(time.time())}.bak" logger.error( "Error when loading device info from config file:\n\n" + repr(e) - + f"\n\nRegenerating device info in `{Storage.device_file}`! " + + f"\n\nRegenerating device info in `{cache_file}`! " + f"The original device info has been backed up in `{backup_file}`." ) f.seek(0) - with open(backup_file, "w") as fb: - fb.write(f.read()) + backup_file.write_text(f.read()) device = new_device() f.seek(0) f.truncate(0) device.to_file(f) - - _device = device - return _device + else: + device = new_device() + cache_file.write_text(device.to_json()) + return device diff --git a/cai/settings/protocol.py b/cai/settings/protocol.py index b7eaf766..8dcd75fb 100644 --- a/cai/settings/protocol.py +++ b/cai/settings/protocol.py @@ -10,15 +10,10 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ -import os -from typing import Optional, NamedTuple +from typing import NamedTuple from cai.storage import Storage -MISSING = "MISSING" - -_protocol: Optional["ApkInfo"] = None - class ApkInfo(NamedTuple): apk_id: str @@ -176,18 +171,14 @@ def get_apk_info(_type: str = "IPAD") -> ApkInfo: return info[_type] -def get_protocol(cache: bool = True) -> ApkInfo: - global _protocol - if cache and _protocol: - return _protocol +def get_protocol(uin: int, cache: bool = True) -> ApkInfo: + protocol_file = Storage.get_account_cache_dir(uin) / "protocol" - type_ = os.getenv(Storage.protocol_env_name, MISSING) - if type_ is MISSING and os.path.exists(Storage.protocol_file): - with open(Storage.protocol_file, "r") as f: - type_ = f.read() - elif type_ is MISSING: + if protocol_file.exists(): + type_ = protocol_file.read_text() + else: type_ = "IPAD" - with open(Storage.protocol_file, "w") as f: - f.write("IPAD") - _protocol = get_apk_info(type_) - return _protocol + protocol_file.write_text(type_) + + protocol = get_apk_info(type_) + return protocol diff --git a/cai/storage/__init__.py b/cai/storage/__init__.py index 31571d60..e3e62fd3 100644 --- a/cai/storage/__init__.py +++ b/cai/storage/__init__.py @@ -10,6 +10,7 @@ """ import os import shutil +from pathlib import Path from .utils import user_cache_dir, user_config_dir @@ -18,37 +19,36 @@ class Storage: app_name: str = "CAI" # application config dir - default_app_dir: str = user_config_dir(app_name, roaming=True) - app_dir: str = os.getenv(f"{app_name}_APP_DIR", default_app_dir) - if not os.path.exists(app_dir): - os.makedirs(app_dir) - if not os.path.isdir(app_dir): + _default_app_dir: str = user_config_dir(app_name, roaming=True) + app_dir: Path = Path(os.getenv(f"{app_name}_APP_DIR", _default_app_dir)) + app_dir.mkdir(parents=True, exist_ok=True) + if not app_dir.is_dir(): raise RuntimeError( f"Application directory {app_dir} is not a directory!" ) # application cache dir - default_cache_dir: str = user_cache_dir(app_name) - cache_dir: str = os.getenv(f"{app_name}_CACHE_DIR", default_cache_dir) - if not os.path.exists(cache_dir): - os.makedirs(cache_dir) - if not os.path.isdir(cache_dir): + _default_cache_dir: str = user_cache_dir(app_name) + cache_dir: Path = Path( + os.getenv(f"{app_name}_CACHE_DIR", _default_cache_dir) + ) + cache_dir.mkdir(parents=True, exist_ok=True) + if not cache_dir.is_dir(): raise RuntimeError( f"Application Cache directory {cache_dir} is not a directory!" ) - # cai.settings.device - device_file: str = os.path.join(app_dir, "device.json") - - # cai.settings.protocol - protocol_env_name: str = f"{app_name}_PROTOCOL" - protocol_file: str = os.path.join(app_dir, "protocol") + @classmethod + def get_account_cache_dir(cls, uin: int) -> Path: + cache = cls.cache_dir / str(uin) + cache.mkdir(parents=True, exist_ok=True) + return cache @classmethod def clear_cache(cls): # FIXME: delete used dir only - for path in os.listdir(cls.cache_dir): - if os.path.isdir(path): + for path in cls.cache_dir.iterdir(): + if path.is_dir(): shutil.rmtree(path) else: - os.remove(path) + path.unlink() diff --git a/examples/login.py b/examples/login.py index fd869e3a..b2c48d61 100644 --- a/examples/login.py +++ b/examples/login.py @@ -17,8 +17,6 @@ from PIL import Image from cai.api import Client, make_client -from cai.settings.device import get_device -from cai.settings.protocol import get_apk_info from cai.client.message_service.models import TextElement from cai.client import Event, GroupMessage, OnlineStatus, PrivateMessage from cai.exceptions import ( @@ -38,9 +36,7 @@ async def run(closed: asyncio.Event): assert password and account, ValueError("account or password not set") account = int(account) - ci = Client( - make_client(account, password, get_apk_info(), device=get_device()) - ) + ci = Client(make_client(account, password)) try: await ci.login() From 4d4a6b057856bf8bead39609b66925513a31c3e9 Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Sat, 9 Apr 2022 20:25:52 +0800 Subject: [PATCH 085/113] :bug: fix delete online push seq error --- cai/client/online_push/__init__.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index 32690aa9..167e2b3a 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -44,7 +44,6 @@ def encode_push_response( push_token: Optional[bytes] = None, service_type: int = 0, device_info: Optional[DeviceInfo] = None, - req_id: int = 0, ) -> Packet: """Build online push response packet. @@ -81,7 +80,6 @@ def encode_push_response( ) payload = SvcRespPushMsg.to_bytes(0, resp) req_packet = RequestPacketVersion3( - req_id=req_id, servant_name="OnlinePush", func_name="SvcRespPushMsg", data=types.MAP({types.STRING("resp"): types.BYTES(payload)}), @@ -254,9 +252,8 @@ async def handle_req_push( ) if isinstance(push, SvcReqPush): - seq = client.next_seq() pkg = encode_push_response( - seq, + push.seq, client._session_id, push.message.uin, client._siginfo.d2key, @@ -270,9 +267,8 @@ async def handle_req_push( ) for info in push.message.msg_info ], - req_id=push.seq, ) - await client.send(seq, "OnlinePush.RespPush", pkg) + await client.send(push.seq, "OnlinePush.RespPush", pkg) for info in push.message.msg_info: key = f"{info.msg_seq}" f"{info.msg_time}" f"{info.msg_uid}" From 0254e5aa5e50f81137149ea8e8f3af562dbe7c6b Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Sat, 9 Apr 2022 20:42:30 +0800 Subject: [PATCH 086/113] :bug: fix incoming packet signed seq --- cai/client/packet.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cai/client/packet.py b/cai/client/packet.py index 79929d4d..bac60eab 100644 --- a/cai/client/packet.py +++ b/cai/client/packet.py @@ -244,8 +244,8 @@ def parse_sso_frame( compress_type, ) = ( sso_frame.start() - .uint32() - .uint32() + .int32() + .int32() .int32() .bytes_with_length(4, 4) .string(4, 4) From 3e6a61e025824fec05c0dea7008098f6a0544970 Mon Sep 17 00:00:00 2001 From: a1025 Date: Sat, 9 Apr 2022 21:11:16 +0800 Subject: [PATCH 087/113] fix: unipkg seq signed --- cai/client/packet.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cai/client/packet.py b/cai/client/packet.py index 79929d4d..b59da8fd 100644 --- a/cai/client/packet.py +++ b/cai/client/packet.py @@ -152,7 +152,7 @@ def build( ) data.write_with_length(body, offset=4) return cls().write_with_length( - struct.pack(">IBIB", 0xB, body_type, seq, 0), + struct.pack(">IBiB", 0xB, body_type, seq, 0), struct.pack(">I", len(str(uin)) + 4), str(uin).encode(), qqtea_encrypt(bytes(data), key), From 7752c206693d8f9d597bea5c7b0b6afaecadab8d Mon Sep 17 00:00:00 2001 From: a1025 Date: Sat, 9 Apr 2022 21:12:45 +0800 Subject: [PATCH 088/113] change: incoming log message --- cai/client/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cai/client/client.py b/cai/client/client.py index da6209a2..3ae61c0b 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -520,7 +520,7 @@ async def receive(self): self._siginfo.wt_session_ticket_key, ) log.network.debug( - f"(receive: {packet.ret_code}): {packet.command_name}" + f"(receive: {packet.seq}): {packet.command_name}" ) # do not block receive asyncio.create_task(self._handle_incoming_packet(packet)) From 1d0bd8235b784d527518a06b1a383e94a1acbf0e Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Sun, 10 Apr 2022 15:18:03 +0800 Subject: [PATCH 089/113] :wrench: fix config dir error --- cai/settings/device.py | 4 ++-- cai/settings/protocol.py | 4 ++-- cai/storage/__init__.py | 6 ++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/cai/settings/device.py b/cai/settings/device.py index 81c3b1a4..19621c1e 100644 --- a/cai/settings/device.py +++ b/cai/settings/device.py @@ -230,8 +230,8 @@ def new_device( def get_device(uin: int, cache: bool = True) -> DeviceInfo: - cache_file = Storage.get_account_cache_dir(uin) / "device.json" - backup_file = Storage.get_account_cache_dir(uin) / "device.json.bak" + cache_file = Storage.get_account_config_dir(uin) / "device.json" + backup_file = Storage.get_account_config_dir(uin) / "device.json.bak" device: DeviceInfo if cache and cache_file.exists(): diff --git a/cai/settings/protocol.py b/cai/settings/protocol.py index 8dcd75fb..a9121d0b 100644 --- a/cai/settings/protocol.py +++ b/cai/settings/protocol.py @@ -172,9 +172,9 @@ def get_apk_info(_type: str = "IPAD") -> ApkInfo: def get_protocol(uin: int, cache: bool = True) -> ApkInfo: - protocol_file = Storage.get_account_cache_dir(uin) / "protocol" + protocol_file = Storage.get_account_config_dir(uin) / "protocol" - if protocol_file.exists(): + if cache and protocol_file.exists(): type_ = protocol_file.read_text() else: type_ = "IPAD" diff --git a/cai/storage/__init__.py b/cai/storage/__init__.py index e3e62fd3..d7404235 100644 --- a/cai/storage/__init__.py +++ b/cai/storage/__init__.py @@ -44,6 +44,12 @@ def get_account_cache_dir(cls, uin: int) -> Path: cache.mkdir(parents=True, exist_ok=True) return cache + @classmethod + def get_account_config_dir(cls, uin: int) -> Path: + config = cls.app_dir / str(uin) + config.mkdir(parents=True, exist_ok=True) + return config + @classmethod def clear_cache(cls): # FIXME: delete used dir only From 1a819ebdc29735401c0630c5f9a273431b238ca0 Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Sun, 10 Apr 2022 16:24:39 +0800 Subject: [PATCH 090/113] :construction: process onlinepush reqpush types --- cai/client/events/__init__.py | 24 ++-- cai/client/events/group.py | 52 +++++--- cai/client/online_push/__init__.py | 75 ++--------- cai/client/online_push/decoders.py | 194 +++++++++++++++++++++++++++++ examples/login.py | 46 +++---- 5 files changed, 276 insertions(+), 115 deletions(-) create mode 100644 cai/client/online_push/decoders.py diff --git a/cai/client/events/__init__.py b/cai/client/events/__init__.py index 183ef0b9..d7859013 100644 --- a/cai/client/events/__init__.py +++ b/cai/client/events/__init__.py @@ -1,18 +1,22 @@ -from .common import NudgeEvent +from .base import Event as Event +from .group import GroupEvent as GroupEvent +from .common import NudgeEvent as NudgeEvent +from .group import GroupRedbagEvent as GroupRedbagEvent +from .group import MemberMutedEvent as MemberMutedEvent +from .group import MemberUnMutedEvent as MemberUnMutedEvent +from .group import GroupNameChangedEvent as GroupNameChangedEvent +from .group import GroupMessageRecalledEvent as GroupMessageRecalledEvent from .group import ( - GroupEvent, - MemberMutedEvent, - MemberUnMutedEvent, - MemberRecallMessageEvent, + GroupMemberSpecialTitleChangedEvent as GroupMemberSpecialTitleChangedEvent, ) -# from .friend import * - - __all__ = [ + "Event", "GroupEvent", + "NudgeEvent", "MemberMutedEvent", "MemberUnMutedEvent", - "MemberRecallMessageEvent", - "NudgeEvent", + "GroupMemberSpecialTitleChangedEvent", + "GroupNameChangedEvent", + "GroupMessageRecalledEvent", ] diff --git a/cai/client/events/group.py b/cai/client/events/group.py index ff61ec8d..93675b7d 100644 --- a/cai/client/events/group.py +++ b/cai/client/events/group.py @@ -1,36 +1,60 @@ from dataclasses import dataclass +from typing import Any, Dict, List from .base import Event +@dataclass class GroupEvent(Event): + group_id: int + @property def type(self) -> str: return self.__class__.__name__ @dataclass -class MemberMutedEvent(GroupEvent): - group: int - operator: int - target: int - duration: int +class _GroupGrayTipEvent(GroupEvent): + text: str + raw_text: str + cmds: List[Dict[str, Any]] +# FIXME: unhandle details @dataclass -class MemberUnMutedEvent(GroupEvent): - group: int +class GroupRedbagEvent(GroupEvent): + sender_id: int + + +@dataclass +class GroupMemberSpecialTitleChangedEvent(_GroupGrayTipEvent): + user_id: int + + +@dataclass +class GroupNameChangedEvent(_GroupGrayTipEvent): + ... + + +@dataclass +class GroupMessageRecalledEvent(GroupEvent): + operator_id: int + author_id: int + msg_seq: int + msg_time: int + msg_type: int + msg_random: int + is_anony_msg: bool + + +@dataclass +class MemberMutedEvent(GroupEvent): operator: int target: int + duration: int @dataclass -class MemberRecallMessageEvent(GroupEvent): - group: int +class MemberUnMutedEvent(GroupEvent): operator: int - operator_type: int target: int - - msg_rand: int - msg_seq: int - msg_time: int diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index 167e2b3a..150cbafb 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -18,8 +18,9 @@ from cai.utils.jce import RequestPacketVersion3 from cai.client.message_service import MESSAGE_DECODERS from cai.client.packet import UniPacket, IncomingPacket -from cai.pb.im.oidb.cmd0x857.troop_tips import TemplParam, NotifyMsgBody +from cai.pb.im.oidb.cmd0x857.troop_tips import TemplParam +from .decoders import ONLINEPUSH_DECODERS from .jce import DelMsgInfo, DeviceInfo, SvcRespPushMsg from .command import ( PushMsg, @@ -271,73 +272,21 @@ async def handle_req_push( await client.send(push.seq, "OnlinePush.RespPush", pkg) for info in push.message.msg_info: - key = f"{info.msg_seq}" f"{info.msg_time}" f"{info.msg_uid}" + key = f"{info.msg_seq}{info.msg_time}{info.msg_uid}" should_skip = key in client._online_push_cache client._online_push_cache[key] = None if should_skip: continue - if info.msg_type == 169: - # handleC2COnlinePushMsgResp - pass - elif info.msg_type == 8: - # HandleShMsgType0x08 - pass - elif info.msg_type == 132: - # HandleShMsgType0x84 - pass - elif info.msg_type == 732: - content = info.vec_msg - sub_type = content[4] - gid = int.from_bytes(content[:4], "big") - - if sub_type in (0x14, 0x11): - notify = NotifyMsgBody.FromString(content[7:]) - if sub_type == 0x14: # nudge - client.dispatch_event( - events.NudgeEvent( - **_parse_poke( - notify.general_gray_tip.templ_param, - default=info.from_uin, - ), - group=gid, - ) - ) - elif sub_type == 0x11: # recall - msg = notify.recall.recalled_msg_list[0] - client.dispatch_event( - events.MemberRecallMessageEvent( - gid, - notify.recall.uin, - notify.recall.op_type, - msg.author_uin, - msg.msg_random, - msg.seq, - msg.time, - ) - ) - elif sub_type == 0x0C: # mute event - operator = int.from_bytes( - content[6:10], "big", signed=False - ) - target = int.from_bytes(content[16:20], "big", signed=False) - duration = int.from_bytes( - content[20:24], "big", signed=False - ) - if duration > 0: # muted - client.dispatch_event( - events.MemberMutedEvent( - gid, operator, target, duration - ) - ) - else: - client.dispatch_event( - events.MemberUnMutedEvent(gid, operator, target) - ) - elif info.msg_type == 528: - # TODO: parse friend event - pass - + Decoder = ONLINEPUSH_DECODERS.get(info.msg_type, None) + if not Decoder: + logger.debug( + f"{push.command_name}: " + f"Received unknown onlinepush type {info.msg_type}." + ) + continue + for event in Decoder(info): + client.dispatch_event(event) return push diff --git a/cai/client/online_push/decoders.py b/cai/client/online_push/decoders.py new file mode 100644 index 00000000..75d352ab --- /dev/null +++ b/cai/client/online_push/decoders.py @@ -0,0 +1,194 @@ +import re +import json +from typing import Any, Dict, List, Tuple, Callable, Iterator + +from cai.log import logger +from cai.client.events import Event +from cai.pb.im.oidb.cmd0x857.troop_tips import NotifyMsgBody +from cai.client.events.group import ( + GroupRedbagEvent, + GroupNameChangedEvent, + GroupMessageRecalledEvent, + GroupMemberSpecialTitleChangedEvent, +) + +from .jce import MessageInfo + +DT = Callable[[MessageInfo], Iterator[Event]] + + +def parse_cmds(content: str) -> Tuple[str, List[Dict[str, Any]]]: + cmds: List[Dict[str, Any]] = [] + texts: List[str] = [] + text_begin = 0 + for cmd in re.finditer(r"<([^>]+)>", content): + texts.append(content[text_begin : cmd.pos + cmd.start()]) + text_begin = cmd.pos + cmd.end() + cmd_obj = json.loads(cmd.group(1)) + cmd_obj["start_index"] = cmd.pos + cmd.start() + cmd_obj["end_index"] = cmd.pos + cmd.end() + cmds.append(cmd_obj) + if "text" in cmd_obj: + texts.append(cmd_obj["text"]) + texts.append(content[text_begin:]) + return "".join(texts), cmds + + +class GroupEventDecoder: + __slots__ = () + + @classmethod + def decode(cls, info: MessageInfo) -> Iterator[Event]: + """Group Event Decoder. + + Note: + Source: + com.tencent.imcore.message.OnLinePushMessageProcessor.ProcessOneMsg.a + """ + content = info.vec_msg + sub_type = content[4] + + sub_decoders: Dict[int, DT] = { + # 6: cls.decode_troop_exit, # troop exit message + # 11: cls.decode_group_visitor_join, # group visitor join tencent.im.group.cmd0x2dc + 12: cls.decode_troop_gag, + # 13: cls.decode_group_visitor_join, + 14: cls.decode_troop_gag, + # 15: cls.decode_troop, # troop manager + 16: cls.decode_troop_tips, + 17: cls.decode_troop_tips, + 20: cls.decode_troop_tips, + 21: cls.decode_troop_tips, + } + Decoder = sub_decoders.get(sub_type, None) + if not Decoder: + logger.debug( + "OnlinePush.ReqPush: GroupEventDecoder cannot " + f"decode event with subtype {sub_type}" + ) + return + yield from Decoder(info) + + @classmethod + def decode_troop_gag(cls, info: MessageInfo) -> Iterator[Event]: + """Troop Gag Manager. + + Sub Type: 12, 14 + """ + ... + + @classmethod + def decode_troop_tips(cls, info: MessageInfo) -> Iterator[Event]: + """Troop Tips Message Manager. + + Sub Type: 16, 17, 20, 21 + + Prompt Type: + 1: red/gray tip + 2: ignore + 3: ignore + 4: ignore + 5: ignore + 6: troop feeds + 7: message recall + 8: ignore + 9: notify obj msg update push + 10: 0x857 werewolf push + 11: 0x857 game status notify + 12: apollo msg + 13: gold msg tips + 14: ignore + 15: miniapp notify -> group open sys msg + 16: ignore + 17: recv msg set changed + 18: prompt troop form tips + 19: msg media push + 20: general gray tip + 21: msg video push + 22: troop location push + 23: msg sing push + 24: group info change + 25: group announce tbc info + 26: qq video game push + 27: group digest msg + 28: ignore + 29: ignore + 30: qq live notify + 31: group digest msg summary + 32: revert gray tips traceless + """ + content = info.vec_msg + if len(content) <= 7: + raise StopIteration + tip = NotifyMsgBody.FromString(content[7:]) + prompt_type = tip.enum_type + group_id = tip.group_code + service_type = tip.service_type + if prompt_type == 1: + if tip.HasField("redtips"): + # FIXME: more detailed events + yield GroupRedbagEvent( + group_id=group_id, sender_id=tip.redtips.sender_uin + ) + if tip.HasField("graytips"): + content = tip.graytips.content.decode("utf-8") + if content: + text, cmds = parse_cmds(content) + if service_type == 6: + yield GroupMemberSpecialTitleChangedEvent( + group_id=group_id, + text=text, + raw_text=content, + cmds=cmds, + user_id=tip.graytips.receiver_uin, + ) + elif service_type == 11: + # Unknown + pass + elif service_type == 12: + yield GroupNameChangedEvent( + group_id=group_id, + text=text, + raw_text=content, + cmds=cmds, + ) + else: + logger.debug( + f"Unknown service type: {service_type}, content: {content}" + ) + elif prompt_type == 7: + if tip.HasField("recall"): + msg_list = tip.recall.recalled_msg_list + for msg in msg_list: + yield GroupMessageRecalledEvent( + group_id=group_id, + operator_id=tip.recall.uin, + author_id=msg.author_uin, + msg_seq=msg.seq, + msg_time=msg.time, + msg_type=msg.msg_type, + msg_random=msg.msg_random, + is_anony_msg=bool(msg.is_anony_msg), + ) + elif prompt_type == 20: + if tip.HasField("general_gray_tip"): + ... + elif prompt_type == 24: + if tip.HasField("group_info_change"): + ... + elif prompt_type == 27: + if tip.HasField("qq_group_digest_msg"): + ... + + +ONLINEPUSH_DECODERS: Dict[int, DT] = { + # 169: handleC2COnlinePushMsgResp, + # 8: HandleShMsgType0x08 + # 132: HandleShMsgType0x84 + 732: GroupEventDecoder.decode +} +"""Online Push ReqPush Decoders. + +Note: + Source: com.tencent.imcore.message.OnLinePushMessageProcessor.ProcessOneMsg.a +""" diff --git a/examples/login.py b/examples/login.py index b2c48d61..b523fa46 100644 --- a/examples/login.py +++ b/examples/login.py @@ -8,6 +8,7 @@ """ import os import sys +import signal import asyncio import logging import functools @@ -29,30 +30,13 @@ ) -async def run(closed: asyncio.Event): - account = os.getenv("ACCOUNT", "") - password = os.getenv("PASSWORD") +async def run(ci: Client): try: - assert password and account, ValueError("account or password not set") - - account = int(account) - ci = Client(make_client(account, password)) - - try: - await ci.login() - print(f"Login Success! Client status: {ci.client.status!r}") - except Exception as e: - await handle_failure(ci, e) - ci.client.add_event_listener(functools.partial(listen_message, ci)) - while True: - for status in OnlineStatus: - if status == OnlineStatus.Offline: - continue - print(status, "Changed") - # await ci.set_status(status, 67, True) - await asyncio.sleep(360) - finally: - closed.set() + await ci.login() + print(f"Login Success! Client status: {ci.client.status!r}") + except Exception as e: + await handle_failure(ci, e) + ci.client.add_event_listener(functools.partial(listen_message, ci)) async def listen_message(client: Client, _, event: Event): @@ -169,14 +153,20 @@ async def handle_failure(client: Client, exception: Exception): format="%(asctime)s %(name)s[%(levelname)s]: %(message)s", ) + account = os.getenv("ACCOUNT", "") + password = os.getenv("PASSWORD") + assert password and account, ValueError("account or password not set") + account = int(account) + ci = Client(make_client(account, password)) + close = asyncio.Event() async def wait_cleanup(): await close.wait() + await ci.client.close() loop = asyncio.get_event_loop() - loop.create_task(run(close)) - try: - loop.run_until_complete(wait_cleanup()) - except KeyboardInterrupt: - close.set() + loop.add_signal_handler(signal.SIGINT, close.set) + loop.add_signal_handler(signal.SIGTERM, close.set) + loop.create_task(run(ci)) + loop.run_until_complete(wait_cleanup()) From a99179e26df7a38eac95bc5dd8ccda3edb7c89cd Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Mon, 11 Apr 2022 12:18:37 +0800 Subject: [PATCH 091/113] :sparkles: parse nudge event --- cai/client/events/group.py | 30 ++++++++++++++++++++++++++++++ cai/client/online_push/decoders.py | 18 ++++++++++++++++-- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/cai/client/events/group.py b/cai/client/events/group.py index 93675b7d..013ea571 100644 --- a/cai/client/events/group.py +++ b/cai/client/events/group.py @@ -20,6 +20,13 @@ class _GroupGrayTipEvent(GroupEvent): cmds: List[Dict[str, Any]] +@dataclass +class _GroupGeneralGrayTipEvent(GroupEvent): + template_id: int + template_text: str + template_params: Dict[str, str] + + # FIXME: unhandle details @dataclass class GroupRedbagEvent(GroupEvent): @@ -47,6 +54,29 @@ class GroupMessageRecalledEvent(GroupEvent): is_anony_msg: bool +@dataclass +class GroupNudgeEvent(_GroupGeneralGrayTipEvent): + @property + def sender_id(self) -> int: + return int(self.template_params["uin_str1"]) + + @property + def receiver_id(self) -> int: + return int(self.template_params["uin_str2"]) + + @property + def action_text(self) -> str: + return self.template_params["action_str"] + + @property + def action_img(self) -> str: + return self.template_params["action_img_url"] + + @property + def suffix_text(self) -> str: + return self.template_params["suffix_str"] + + @dataclass class MemberMutedEvent(GroupEvent): operator: int diff --git a/cai/client/online_push/decoders.py b/cai/client/online_push/decoders.py index 75d352ab..eefbfbcb 100644 --- a/cai/client/online_push/decoders.py +++ b/cai/client/online_push/decoders.py @@ -6,6 +6,7 @@ from cai.client.events import Event from cai.pb.im.oidb.cmd0x857.troop_tips import NotifyMsgBody from cai.client.events.group import ( + GroupNudgeEvent, GroupRedbagEvent, GroupNameChangedEvent, GroupMessageRecalledEvent, @@ -119,7 +120,7 @@ def decode_troop_tips(cls, info: MessageInfo) -> Iterator[Event]: """ content = info.vec_msg if len(content) <= 7: - raise StopIteration + return tip = NotifyMsgBody.FromString(content[7:]) prompt_type = tip.enum_type group_id = tip.group_code @@ -172,7 +173,20 @@ def decode_troop_tips(cls, info: MessageInfo) -> Iterator[Event]: ) elif prompt_type == 20: if tip.HasField("general_gray_tip"): - ... + graytip = tip.general_gray_tip + busi_type = graytip.busi_type + busi_id = graytip.busi_id + if busi_type == 12 and busi_id == 1061: + # com.tencent.mobileqq.activity.aio.avatardoubletap.PaiYiPaiMsgUtil + yield GroupNudgeEvent( + group_id=group_id, + template_id=graytip.templ_id, + template_text=graytip.content.decode("utf-8"), + template_params=dict( + (p.name.decode("utf-8"), p.value.decode("utf-8")) + for p in graytip.templ_param + ), + ) elif prompt_type == 24: if tip.HasField("group_info_change"): ... From 3369b13855db8706d842d86eacd87e4e30188011 Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Mon, 11 Apr 2022 14:33:23 +0800 Subject: [PATCH 092/113] :sparkles: add group lucky character events --- cai/client/events/group.py | 67 ++++++++++++++++++++++++++---- cai/client/online_push/decoders.py | 61 +++++++++++++++++++++++++++ 2 files changed, 121 insertions(+), 7 deletions(-) diff --git a/cai/client/events/group.py b/cai/client/events/group.py index 013ea571..2a55fa07 100644 --- a/cai/client/events/group.py +++ b/cai/client/events/group.py @@ -13,6 +13,7 @@ def type(self) -> str: return self.__class__.__name__ +# online push graytip @dataclass class _GroupGrayTipEvent(GroupEvent): text: str @@ -20,13 +21,6 @@ class _GroupGrayTipEvent(GroupEvent): cmds: List[Dict[str, Any]] -@dataclass -class _GroupGeneralGrayTipEvent(GroupEvent): - template_id: int - template_text: str - template_params: Dict[str, str] - - # FIXME: unhandle details @dataclass class GroupRedbagEvent(GroupEvent): @@ -43,6 +37,7 @@ class GroupNameChangedEvent(_GroupGrayTipEvent): ... +# online push msg recall @dataclass class GroupMessageRecalledEvent(GroupEvent): operator_id: int @@ -54,6 +49,14 @@ class GroupMessageRecalledEvent(GroupEvent): is_anony_msg: bool +# online push general graytip +@dataclass +class _GroupGeneralGrayTipEvent(GroupEvent): + template_id: int + template_text: str + template_params: Dict[str, str] + + @dataclass class GroupNudgeEvent(_GroupGeneralGrayTipEvent): @property @@ -77,6 +80,56 @@ def suffix_text(self) -> str: return self.template_params["suffix_str"] +@dataclass +class GroupLuckyCharacterEvent(_GroupGeneralGrayTipEvent): + @property + def user_id(self) -> int: + return int(self.template_params["uin"]) + + @property + def detail_url(self) -> str: + return self.template_params["detail_url"] + + +@dataclass +class GroupLuckyCharacterInitEvent(GroupLuckyCharacterEvent): # 抽中并开启 + @property + def lucky_character_url(self) -> str: + return self.template_params["img_url"] + + +@dataclass +class GroupLuckyCharacterNewEvent(GroupLuckyCharacterEvent): # 抽中 + @property + def lucky_character_url(self) -> str: + return self.template_params["img_url"] + + +@dataclass +class GroupLuckyCharacterChangedEvent(GroupLuckyCharacterEvent): # 更换 + @property + def previous_character_url(self) -> str: + return self.template_params["img_url_1"] + + @property + def new_character_url(self) -> str: + return self.template_params["img_url_2"] + + +@dataclass +class GroupLuckyCharacterClosedEvent(GroupLuckyCharacterEvent): # 关闭 + @property + def lucky_character_url(self) -> str: + return self.template_params["img_url"] + + +@dataclass +class GroupLuckyCharacterOpenedEvent(GroupLuckyCharacterEvent): # 开启 + @property + def lucky_character_url(self) -> str: + return self.template_params["img_url"] + + @dataclass class MemberMutedEvent(GroupEvent): operator: int diff --git a/cai/client/online_push/decoders.py b/cai/client/online_push/decoders.py index eefbfbcb..a77ba88e 100644 --- a/cai/client/online_push/decoders.py +++ b/cai/client/online_push/decoders.py @@ -10,6 +10,11 @@ GroupRedbagEvent, GroupNameChangedEvent, GroupMessageRecalledEvent, + GroupLuckyCharacterNewEvent, + GroupLuckyCharacterInitEvent, + GroupLuckyCharacterClosedEvent, + GroupLuckyCharacterOpenedEvent, + GroupLuckyCharacterChangedEvent, GroupMemberSpecialTitleChangedEvent, ) @@ -187,12 +192,68 @@ def decode_troop_tips(cls, info: MessageInfo) -> Iterator[Event]: for p in graytip.templ_param ), ) + # elif busi_type == 12 and busi_id == 1062: + # # 动作,效果 + elif busi_id == 1069: # busi_type == 1 + yield GroupLuckyCharacterInitEvent( + group_id=group_id, + template_id=graytip.templ_id, + template_text=graytip.content.decode("utf-8"), + template_params=dict( + (p.name.decode("utf-8"), p.value.decode("utf-8")) + for p in graytip.templ_param + ), + ) + elif busi_id == 1070: + yield GroupLuckyCharacterNewEvent( + group_id=group_id, + template_id=graytip.templ_id, + template_text=graytip.content.decode("utf-8"), + template_params=dict( + (p.name.decode("utf-8"), p.value.decode("utf-8")) + for p in graytip.templ_param + ), + ) + elif busi_id == 1071: + yield GroupLuckyCharacterChangedEvent( + group_id=group_id, + template_id=graytip.templ_id, + template_text=graytip.content.decode("utf-8"), + template_params=dict( + (p.name.decode("utf-8"), p.value.decode("utf-8")) + for p in graytip.templ_param + ), + ) + elif busi_id == 1072: + yield GroupLuckyCharacterClosedEvent( + group_id=group_id, + template_id=graytip.templ_id, + template_text=graytip.content.decode("utf-8"), + template_params=dict( + (p.name.decode("utf-8"), p.value.decode("utf-8")) + for p in graytip.templ_param + ), + ) + elif busi_id == 1073: + yield GroupLuckyCharacterOpenedEvent( + group_id=group_id, + template_id=graytip.templ_id, + template_text=graytip.content.decode("utf-8"), + template_params=dict( + (p.name.decode("utf-8"), p.value.decode("utf-8")) + for p in graytip.templ_param + ), + ) + # TODO: busi_id 1052, 1053, 1054, 1067 group honor elif prompt_type == 24: if tip.HasField("group_info_change"): ... elif prompt_type == 27: if tip.HasField("qq_group_digest_msg"): ... + elif prompt_type == 32: + if tip.HasField("revert_graytips_traceless"): + ... ONLINEPUSH_DECODERS: Dict[int, DT] = { From 1b8005902ac4b0c89a50e3dafe59f46ebd7c9bac Mon Sep 17 00:00:00 2001 From: local Date: Mon, 11 Apr 2022 16:18:18 +0800 Subject: [PATCH 093/113] fix: receiver bug --- cai/client/client.py | 12 ++++++++---- cai/connection/__init__.py | 1 - 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/cai/client/client.py b/cai/client/client.py index 470837dc..79aee216 100644 --- a/cai/client/client.py +++ b/cai/client/client.py @@ -352,6 +352,7 @@ def _recv_done_cb(self, task: asyncio.Task): else: log.network.warning("receiver stopped") asyncio.create_task(self.close()) + task.cancel() async def disconnect(self) -> None: """Disconnect if already connected to the server.""" @@ -516,7 +517,13 @@ async def receive(self): - 4 ) # FIXME: length < 0 ? + data = await self.connection.read_bytes(length) + except ConnectionError as e: + log.logger.error(f"{self.uin} connection lost: {str(e)}") + break + + try: packet = IncomingPacket.parse( data, self._key, @@ -528,11 +535,8 @@ async def receive(self): ) # do not block receive asyncio.create_task(self._handle_incoming_packet(packet)) - except ConnectionAbortedError as e: - log.logger.error(f"{self.uin} connection lost: {str(e)}") - break except Exception as e: - log.logger.exception(e) + log.logger.exception("Unexpected error raised") @property def listeners(self) -> Set[LT]: diff --git a/cai/connection/__init__.py b/cai/connection/__init__.py index 750a9499..5d35def1 100644 --- a/cai/connection/__init__.py +++ b/cai/connection/__init__.py @@ -97,7 +97,6 @@ async def _connect(self): async def close(self): if self._writer: self._writer.close() - await self._writer.wait_closed() self._writer = None self._reader = None self._closed.set() From 69c097ff99cc0f63ea024919449a4362be551f6e Mon Sep 17 00:00:00 2001 From: wyapx Date: Tue, 12 Apr 2022 12:11:54 +0800 Subject: [PATCH 094/113] add: CustomDataElement --- cai/client/message_service/decoders.py | 7 +++++++ cai/client/message_service/encoders.py | 7 +++++++ cai/client/message_service/models.py | 10 ++++++++++ 3 files changed, 24 insertions(+) diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index f17b2f50..3b1ed163 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -36,6 +36,7 @@ VoiceElement, PrivateMessage, RichMsgElement, + CustomDataElement, FlashImageElement, SmallEmojiElement, ) @@ -215,6 +216,12 @@ def parse_elements(elems: Sequence[Elem], ptt: Optional[Ptt]) -> List[Element]: + "/0", ) ) + elif elem.HasField("open_qq_data"): + res.append( + CustomDataElement( + data=elem.open_qq_data.car_qq_data + ) + ) elif elem.HasField("common_elem"): service_type = elem.common_elem.service_type # PokeMsgElemDecoder diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py index 98b454cd..aba6b6fa 100644 --- a/cai/client/message_service/encoders.py +++ b/cai/client/message_service/encoders.py @@ -19,6 +19,7 @@ CustomFace, ShakeWindow, LightAppElem, + OpenQQData ) from . import models @@ -131,6 +132,12 @@ def build_msg(elements: Sequence[models.Element]) -> MsgBody: elif isinstance(e, models.VoiceElement): ptt = e.to_ptt() break + elif isinstance(e, models.CustomDataElement): + ret.append( + Elem( + open_qq_data=OpenQQData(car_qq_data=e.data) + ) + ) else: raise NotImplementedError(e) diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index 821bd3f6..19eba9bf 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -232,3 +232,13 @@ class ShakeElement(Element): @property def type(self) -> str: return "shake" + + +@dataclass +class CustomDataElement(Element): + data: bytes + + @property + def type(self) -> str: + return "custom_daata" + From 454f2744719c5b26e660cb0660bbed1948dd7fa9 Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Tue, 12 Apr 2022 13:42:38 +0800 Subject: [PATCH 095/113] :construction: process event type default --- cai/client/events/base.py | 8 ++++---- cai/client/events/group.py | 4 ---- cai/client/online_push/__init__.py | 17 ----------------- 3 files changed, 4 insertions(+), 25 deletions(-) diff --git a/cai/client/events/base.py b/cai/client/events/base.py index 953d5927..5a3b1c92 100644 --- a/cai/client/events/base.py +++ b/cai/client/events/base.py @@ -9,11 +9,11 @@ https://github.com/cscs181/CAI/blob/master/LICENSE """ -import abc +from dataclasses import dataclass -class Event(abc.ABC): +@dataclass +class Event: @property - @abc.abstractmethod def type(self) -> str: - raise NotImplementedError + return self.__class__.__name__ diff --git a/cai/client/events/group.py b/cai/client/events/group.py index 2a55fa07..2b5011e6 100644 --- a/cai/client/events/group.py +++ b/cai/client/events/group.py @@ -8,10 +8,6 @@ class GroupEvent(Event): group_id: int - @property - def type(self) -> str: - return self.__class__.__name__ - # online push graytip @dataclass diff --git a/cai/client/online_push/__init__.py b/cai/client/online_push/__init__.py index 150cbafb..dd53ab41 100644 --- a/cai/client/online_push/__init__.py +++ b/cai/client/online_push/__init__.py @@ -218,23 +218,6 @@ async def handle_push_msg( return push -def _parse_poke(params: Sequence[TemplParam], default: int) -> dict: - res = {"target": None, "sender": None, "action": None, "suffix": None} - for p in params: - name, value = p.name.decode(), p.value.decode() - if name == "uin_str1": - res["sender"] = int(value) - elif name == "uin_str2": - res["target"] = int(value) - elif name == "suffix_str": - res["suffix"] = value - elif name == "action_str": - res["action"] = value - if not res["target"]: - res["target"] = default - return res - - # OnlinePush.ReqPush async def handle_req_push( client: "Client", packet: IncomingPacket From c7313716437772f3c46ce921c0abe62cd296c37f Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Tue, 12 Apr 2022 13:46:44 +0800 Subject: [PATCH 096/113] :memo: update readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 19c23b5f..7f152217 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,8 @@ _✨ Yet Another Bot Framework for Tencent QQ Written in Python ✨_ - - QQ Chat + + QQ Chat

From 60f7f84682d729fe8aa35860889d0a30151cc921 Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Tue, 12 Apr 2022 14:41:08 +0800 Subject: [PATCH 097/113] :sparkles: add group member mute event --- cai/client/events/__init__.py | 8 +++---- cai/client/events/group.py | 12 +++++----- cai/client/online_push/decoders.py | 36 +++++++++++++++++++++++++++++- 3 files changed, 45 insertions(+), 11 deletions(-) diff --git a/cai/client/events/__init__.py b/cai/client/events/__init__.py index d7859013..bf311aa3 100644 --- a/cai/client/events/__init__.py +++ b/cai/client/events/__init__.py @@ -2,9 +2,9 @@ from .group import GroupEvent as GroupEvent from .common import NudgeEvent as NudgeEvent from .group import GroupRedbagEvent as GroupRedbagEvent -from .group import MemberMutedEvent as MemberMutedEvent -from .group import MemberUnMutedEvent as MemberUnMutedEvent +from .group import GroupMemberMutedEvent as GroupMemberMutedEvent from .group import GroupNameChangedEvent as GroupNameChangedEvent +from .group import GroupMemberUnMutedEvent as GroupMemberUnMutedEvent from .group import GroupMessageRecalledEvent as GroupMessageRecalledEvent from .group import ( GroupMemberSpecialTitleChangedEvent as GroupMemberSpecialTitleChangedEvent, @@ -14,8 +14,8 @@ "Event", "GroupEvent", "NudgeEvent", - "MemberMutedEvent", - "MemberUnMutedEvent", + "GroupMemberMutedEvent", + "GroupMemberUnMutedEvent", "GroupMemberSpecialTitleChangedEvent", "GroupNameChangedEvent", "GroupMessageRecalledEvent", diff --git a/cai/client/events/group.py b/cai/client/events/group.py index 2b5011e6..fcf2a4e5 100644 --- a/cai/client/events/group.py +++ b/cai/client/events/group.py @@ -127,13 +127,13 @@ def lucky_character_url(self) -> str: @dataclass -class MemberMutedEvent(GroupEvent): - operator: int - target: int +class GroupMemberMutedEvent(GroupEvent): + operator_id: int + target_id: int duration: int @dataclass -class MemberUnMutedEvent(GroupEvent): - operator: int - target: int +class GroupMemberUnMutedEvent(GroupEvent): + operator_id: int + target_id: int diff --git a/cai/client/online_push/decoders.py b/cai/client/online_push/decoders.py index a77ba88e..560858d9 100644 --- a/cai/client/online_push/decoders.py +++ b/cai/client/online_push/decoders.py @@ -4,11 +4,14 @@ from cai.log import logger from cai.client.events import Event +from cai.utils.binary import Packet from cai.pb.im.oidb.cmd0x857.troop_tips import NotifyMsgBody from cai.client.events.group import ( GroupNudgeEvent, GroupRedbagEvent, + GroupMemberMutedEvent, GroupNameChangedEvent, + GroupMemberUnMutedEvent, GroupMessageRecalledEvent, GroupLuckyCharacterNewEvent, GroupLuckyCharacterInitEvent, @@ -80,8 +83,36 @@ def decode_troop_gag(cls, info: MessageInfo) -> Iterator[Event]: """Troop Gag Manager. Sub Type: 12, 14 + + Note: + Source: com.tencent.mobileqq.troop.utils.TroopGagMgr.a """ - ... + data = Packet(info.vec_msg) + group_id, sub_type = data.start().uint32().uint8().execute() + if sub_type == 12: + operator_id = data.start().offset(6).uint32().execute()[0] + + offset = 16 + count = info.vec_msg[14] + for _ in range(count): + target_id, duration = ( + data.start().offset(offset).uint32().uint32().execute() + ) + offset += 8 + if duration > 0: + yield GroupMemberMutedEvent( + group_id=group_id, + operator_id=operator_id, + target_id=target_id, + duration=duration, + ) + else: + yield GroupMemberUnMutedEvent( + group_id=group_id, + operator_id=operator_id, + target_id=target_id, + ) + # elif sub_type == 14: @classmethod def decode_troop_tips(cls, info: MessageInfo) -> Iterator[Event]: @@ -122,6 +153,9 @@ def decode_troop_tips(cls, info: MessageInfo) -> Iterator[Event]: 30: qq live notify 31: group digest msg summary 32: revert gray tips traceless + + Note: + Source: com.tencent.mobileqq.troop.utils.TroopTipsMsgMgr.a """ content = info.vec_msg if len(content) <= 7: From 0799e2abe79681954a14620637e59b9327bc8d37 Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Tue, 12 Apr 2022 17:11:48 +0800 Subject: [PATCH 098/113] :construction: move comments --- cai/client/message_service/decoders.py | 38 ++++++++++++++++++-------- cai/client/online_push/decoders.py | 13 +++++---- 2 files changed, 33 insertions(+), 18 deletions(-) diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index 3b1ed163..950281d9 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -13,8 +13,8 @@ from typing import Dict, List, Callable, Optional, Sequence from cai.log import logger +from cai.client.events import Event from cai.pb.msf.msg.comm import Msg -from cai.client.events.base import Event from cai.pb.im.msg.msg_body import Ptt, Elem from cai.pb.im.msg.service.comm_elem import ( MsgElemInfo_servtype2, @@ -217,11 +217,7 @@ def parse_elements(elems: Sequence[Elem], ptt: Optional[Ptt]) -> List[Element]: ) ) elif elem.HasField("open_qq_data"): - res.append( - CustomDataElement( - data=elem.open_qq_data.car_qq_data - ) - ) + res.append(CustomDataElement(data=elem.open_qq_data.car_qq_data)) elif elem.HasField("common_elem"): service_type = elem.common_elem.service_type # PokeMsgElemDecoder @@ -275,14 +271,15 @@ def parse_elements(elems: Sequence[Elem], ptt: Optional[Ptt]) -> List[Element]: class BuddyMessageDecoder: + """Buddy Message Decoder. + + Note: + Source: + com.tencent.mobileqq.service.message.codec.decoder.buddyMessage.BuddyMessageDecoder + """ + @classmethod def decode(cls, message: Msg) -> Optional[Event]: - """Buddy Message Decoder. - - Note: - Source: - com.tencent.mobileqq.service.message.codec.decoder.buddyMessage.BuddyMessageDecoder - """ sub_decoders: Dict[int, Callable[[Msg], Optional[Event]]] = { 11: cls.decode_normal_buddy, # 129: OnlineFileDecoder, @@ -344,10 +341,27 @@ def decode_normal_buddy(cls, message: Msg) -> Optional[Event]: class TroopMessageDecoder: + """Troop Message Decoder(Processor). + + Note: + Source: com.tencent.mobileqq.troop.data.TroopMessageProcessor + """ + + __slots__ = () + long_msg_fragment_store: Dict[int, List[Msg]] = {} @classmethod def decode(cls, message: Msg) -> Optional[Event]: + """Troop Message Processor. + + Note: + Source: + + com.tencent.mobileqq.troop.data.TroopMessageProcessor.a + + com.tencent.imcore.message.BaseMessageProcessorForTroopAndDisc.a + """ if not message.head.HasField("group_info"): return diff --git a/cai/client/online_push/decoders.py b/cai/client/online_push/decoders.py index 560858d9..46501fb4 100644 --- a/cai/client/online_push/decoders.py +++ b/cai/client/online_push/decoders.py @@ -44,16 +44,17 @@ def parse_cmds(content: str) -> Tuple[str, List[Dict[str, Any]]]: class GroupEventDecoder: + """Group Event Decoder. + + Note: + Source: + com.tencent.imcore.message.OnLinePushMessageProcessor.ProcessOneMsg.a + """ + __slots__ = () @classmethod def decode(cls, info: MessageInfo) -> Iterator[Event]: - """Group Event Decoder. - - Note: - Source: - com.tencent.imcore.message.OnLinePushMessageProcessor.ProcessOneMsg.a - """ content = info.vec_msg sub_type = content[4] From 0999df1ecca4dcdbf258bbdc5b445a6b626d0c15 Mon Sep 17 00:00:00 2001 From: pad Date: Wed, 13 Apr 2022 18:01:15 +0800 Subject: [PATCH 099/113] add: part of oidb packet --- cai/client/oidb/builder.py | 55 +++++++++++++++++++++++++++++++ cai/client/packet.py | 1 + cai/pb/im/oidb/__init__.py | 2 ++ cai/pb/im/oidb/oidb.proto | 19 +++++++++++ cai/pb/im/oidb/oidb_pb2.py | 44 +++++++++++++++++++++++++ cai/pb/im/oidb/oidb_pb2.pyi | 65 +++++++++++++++++++++++++++++++++++++ 6 files changed, 186 insertions(+) create mode 100644 cai/client/oidb/builder.py create mode 100644 cai/pb/im/oidb/oidb.proto create mode 100644 cai/pb/im/oidb/oidb_pb2.py create mode 100644 cai/pb/im/oidb/oidb_pb2.pyi diff --git a/cai/client/oidb/builder.py b/cai/client/oidb/builder.py new file mode 100644 index 00000000..70334064 --- /dev/null +++ b/cai/client/oidb/builder.py @@ -0,0 +1,55 @@ +import struct +from cai.pb.im.oidb import OidbSsoPacket, DED3ReqBody + + +def build_oidb_sso_packet(cmd: int, service_type: int, body: bytes) -> bytes: + return OidbSsoPacket( + command=cmd, + service_type=service_type, + body=body + ).SerializeToString() + + +# SendNudge, Oidb.0xed3 +def build_send_nudge_pkg(target_uin: int, group: int = None, from_uin: int = None) -> bytes: + if not (group or from_uin): + raise ValueError("no sender") + return build_oidb_sso_packet( + 3795, 1, + DED3ReqBody( + to_uin=target_uin, + group_code=group, + from_uin=from_uin + ).SerializeToString() + ) + + +# SetAdmin, Oidb.0x55c_1 +def build_set_admin_pkg(target_uin: int, group: int, is_admin: bool) -> bytes: + return build_oidb_sso_packet( + 1372, 1, + struct.pack( + "!II?", + group, + target_uin, + is_admin + ) + ) + + +# MuteMember, Oidb.0x570_8 +def build_mute_member_pkg(target_uin: int, group: int, duration: int) -> bytes: + if duration < 0: + return ValueError("duration must be a positive value") + return build_oidb_sso_packet( + 1392, 8, + struct.pack( + "!IQQQQHII", + group, + 0, 0, 0, 0, # 32 bytes padding + 1, + target_uin, + duration + ) + ) + diff --git a/cai/client/packet.py b/cai/client/packet.py index 26e8845f..f78d1f47 100644 --- a/cai/client/packet.py +++ b/cai/client/packet.py @@ -348,3 +348,4 @@ def parse_oicq_body( raise NotImplementedError else: raise ValueError(f"Unknown encrypt type: {encrypt_type}") + diff --git a/cai/pb/im/oidb/__init__.py b/cai/pb/im/oidb/__init__.py index 562fb8b7..3d5876ea 100644 --- a/cai/pb/im/oidb/__init__.py +++ b/cai/pb/im/oidb/__init__.py @@ -14,3 +14,5 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ + +from .oidb_pb2 import * diff --git a/cai/pb/im/oidb/oidb.proto b/cai/pb/im/oidb/oidb.proto new file mode 100644 index 00000000..95a32997 --- /dev/null +++ b/cai/pb/im/oidb/oidb.proto @@ -0,0 +1,19 @@ +syntax = "proto3"; + + +message OidbSsoPacket { + int32 command = 1; + int32 service_type = 2; + optional int32 result = 3; + bytes body = 4; + optional string error_msg = 5; + string client_version = 6; +} + +message DED3ReqBody { + int64 to_uin = 1; + int64 group_code = 2; + int32 msg_seq = 3; + int32 msg_rand = 4; + int64 from_uin = 5; +} diff --git a/cai/pb/im/oidb/oidb_pb2.py b/cai/pb/im/oidb/oidb_pb2.py new file mode 100644 index 00000000..2a83b31d --- /dev/null +++ b/cai/pb/im/oidb/oidb_pb2.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: oidb.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\noidb.proto\"\xa2\x01\n\rOidbSsoPacket\x12\x0f\n\x07\x63ommand\x18\x01 \x01(\x05\x12\x14\n\x0cservice_type\x18\x02 \x01(\x05\x12\x13\n\x06result\x18\x03 \x01(\x05H\x00\x88\x01\x01\x12\x0c\n\x04\x62ody\x18\x04 \x01(\x0c\x12\x16\n\terror_msg\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x16\n\x0e\x63lient_version\x18\x06 \x01(\tB\t\n\x07_resultB\x0c\n\n_error_msg\"f\n\x0b\x44\x45\x44\x33ReqBody\x12\x0e\n\x06to_uin\x18\x01 \x01(\x03\x12\x12\n\ngroup_code\x18\x02 \x01(\x03\x12\x0f\n\x07msg_seq\x18\x03 \x01(\x05\x12\x10\n\x08msg_rand\x18\x04 \x01(\x05\x12\x10\n\x08\x66rom_uin\x18\x05 \x01(\x03\x62\x06proto3') + + + +_OIDBSSOPACKET = DESCRIPTOR.message_types_by_name['OidbSsoPacket'] +_DED3REQBODY = DESCRIPTOR.message_types_by_name['DED3ReqBody'] +OidbSsoPacket = _reflection.GeneratedProtocolMessageType('OidbSsoPacket', (_message.Message,), { + 'DESCRIPTOR' : _OIDBSSOPACKET, + '__module__' : 'oidb_pb2' + # @@protoc_insertion_point(class_scope:OidbSsoPacket) + }) +_sym_db.RegisterMessage(OidbSsoPacket) + +DED3ReqBody = _reflection.GeneratedProtocolMessageType('DED3ReqBody', (_message.Message,), { + 'DESCRIPTOR' : _DED3REQBODY, + '__module__' : 'oidb_pb2' + # @@protoc_insertion_point(class_scope:DED3ReqBody) + }) +_sym_db.RegisterMessage(DED3ReqBody) + +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _OIDBSSOPACKET._serialized_start=15 + _OIDBSSOPACKET._serialized_end=177 + _DED3REQBODY._serialized_start=179 + _DED3REQBODY._serialized_end=281 +# @@protoc_insertion_point(module_scope) diff --git a/cai/pb/im/oidb/oidb_pb2.pyi b/cai/pb/im/oidb/oidb_pb2.pyi new file mode 100644 index 00000000..a56fe0a0 --- /dev/null +++ b/cai/pb/im/oidb/oidb_pb2.pyi @@ -0,0 +1,65 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import typing +import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class OidbSsoPacket(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + COMMAND_FIELD_NUMBER: builtins.int + SERVICE_TYPE_FIELD_NUMBER: builtins.int + RESULT_FIELD_NUMBER: builtins.int + BODY_FIELD_NUMBER: builtins.int + ERROR_MSG_FIELD_NUMBER: builtins.int + CLIENT_VERSION_FIELD_NUMBER: builtins.int + command: builtins.int + service_type: builtins.int + result: builtins.int + body: builtins.bytes + error_msg: typing.Text + client_version: typing.Text + def __init__(self, + *, + command: builtins.int = ..., + service_type: builtins.int = ..., + result: typing.Optional[builtins.int] = ..., + body: builtins.bytes = ..., + error_msg: typing.Optional[typing.Text] = ..., + client_version: typing.Text = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["_error_msg",b"_error_msg","_result",b"_result","error_msg",b"error_msg","result",b"result"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_error_msg",b"_error_msg","_result",b"_result","body",b"body","client_version",b"client_version","command",b"command","error_msg",b"error_msg","result",b"result","service_type",b"service_type"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["_error_msg",b"_error_msg"]) -> typing.Optional[typing_extensions.Literal["error_msg"]]: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["_result",b"_result"]) -> typing.Optional[typing_extensions.Literal["result"]]: ... +global___OidbSsoPacket = OidbSsoPacket + +class DED3ReqBody(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + TO_UIN_FIELD_NUMBER: builtins.int + GROUP_CODE_FIELD_NUMBER: builtins.int + MSG_SEQ_FIELD_NUMBER: builtins.int + MSG_RAND_FIELD_NUMBER: builtins.int + FROM_UIN_FIELD_NUMBER: builtins.int + to_uin: builtins.int + group_code: builtins.int + msg_seq: builtins.int + msg_rand: builtins.int + from_uin: builtins.int + def __init__(self, + *, + to_uin: builtins.int = ..., + group_code: builtins.int = ..., + msg_seq: builtins.int = ..., + msg_rand: builtins.int = ..., + from_uin: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["from_uin",b"from_uin","group_code",b"group_code","msg_rand",b"msg_rand","msg_seq",b"msg_seq","to_uin",b"to_uin"]) -> None: ... +global___DED3ReqBody = DED3ReqBody From 808aa0196d72ae05b2825fd53b59b930b14ea42b Mon Sep 17 00:00:00 2001 From: pad Date: Wed, 13 Apr 2022 18:12:33 +0800 Subject: [PATCH 100/113] add: group operation --- cai/api/group.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/cai/api/group.py b/cai/api/group.py index b16536c7..dbdc405b 100644 --- a/cai/api/group.py +++ b/cai/api/group.py @@ -11,6 +11,7 @@ from cai.client import GroupMember from cai.client import Group as group_t +from cai.client.oidb import builder from .base import BaseAPI @@ -81,5 +82,34 @@ async def get_group_member_list( """ return await self._executor("get_group_member_list", group, cache) + async def set_group_admin(self, group: int, uin: int, is_admin: bool): + await self.client.send_unipkg_and_wait( + "Oidb.0x55c_1", + builder.build_set_admin_pkg( + target_uin=uin, + group=group, + is_admin=is_admin + ) + ) + + async def mute_member(self, group: int, uin: int, duration: int): + await self.client.send_unipkg_and_wait( + "Oidb.0x570_8", + builder.build_mute_member_pkg( + target_uin=uin, + group=group, + duration=duration + ) + ) + + async def send_group_nudge(self, group: int, uin: int): + await self.client.send_unipkg_and_wait( + "Oidb.0xed3", + builder.build_send_nudge_pkg( + target_uin=uin, + group=group + ) + ) + __all__ = ["Group"] From df052cf1cf4c0e1d33525ea0d7df6257d2acfcab Mon Sep 17 00:00:00 2001 From: wyapx Date: Wed, 13 Apr 2022 18:31:56 +0800 Subject: [PATCH 101/113] fix: stupid problem --- cai/api/group.py | 6 +++--- cai/client/oidb/builder.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cai/api/group.py b/cai/api/group.py index dbdc405b..32e3f28b 100644 --- a/cai/api/group.py +++ b/cai/api/group.py @@ -84,7 +84,7 @@ async def get_group_member_list( async def set_group_admin(self, group: int, uin: int, is_admin: bool): await self.client.send_unipkg_and_wait( - "Oidb.0x55c_1", + "OidbSvc.0x55c_1", builder.build_set_admin_pkg( target_uin=uin, group=group, @@ -94,7 +94,7 @@ async def set_group_admin(self, group: int, uin: int, is_admin: bool): async def mute_member(self, group: int, uin: int, duration: int): await self.client.send_unipkg_and_wait( - "Oidb.0x570_8", + "OidbSvc.0x570_8", builder.build_mute_member_pkg( target_uin=uin, group=group, @@ -104,7 +104,7 @@ async def mute_member(self, group: int, uin: int, duration: int): async def send_group_nudge(self, group: int, uin: int): await self.client.send_unipkg_and_wait( - "Oidb.0xed3", + "OidbSvc.0xed3", builder.build_send_nudge_pkg( target_uin=uin, group=group diff --git a/cai/client/oidb/builder.py b/cai/client/oidb/builder.py index 70334064..b5b0fb7b 100644 --- a/cai/client/oidb/builder.py +++ b/cai/client/oidb/builder.py @@ -10,7 +10,7 @@ def build_oidb_sso_packet(cmd: int, service_type: int, body: bytes) -> bytes: ).SerializeToString() -# SendNudge, Oidb.0xed3 +# SendNudge, OidbSvc.0xed3 def build_send_nudge_pkg(target_uin: int, group: int = None, from_uin: int = None) -> bytes: if not (group or from_uin): raise ValueError("no sender") @@ -24,7 +24,7 @@ def build_send_nudge_pkg(target_uin: int, group: int = None, from_uin: int = Non ) -# SetAdmin, Oidb.0x55c_1 +# SetAdmin, OidbSvc.0x55c_1 def build_set_admin_pkg(target_uin: int, group: int, is_admin: bool) -> bytes: return build_oidb_sso_packet( 1372, 1, @@ -37,7 +37,7 @@ def build_set_admin_pkg(target_uin: int, group: int, is_admin: bool) -> bytes: ) -# MuteMember, Oidb.0x570_8 +# MuteMember, OidbSvc.0x570_8 def build_mute_member_pkg(target_uin: int, group: int, duration: int) -> bytes: if duration < 0: return ValueError("duration must be a positive value") From 2dcf545a9f76ef40e969d18ac6a810482f57e710 Mon Sep 17 00:00:00 2001 From: yanyongyu <42488585+yanyongyu@users.noreply.github.com> Date: Wed, 13 Apr 2022 19:16:50 +0800 Subject: [PATCH 102/113] :bug: fix group mute count decode error --- cai/client/online_push/decoders.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cai/client/online_push/decoders.py b/cai/client/online_push/decoders.py index 46501fb4..b0b29624 100644 --- a/cai/client/online_push/decoders.py +++ b/cai/client/online_push/decoders.py @@ -91,10 +91,11 @@ def decode_troop_gag(cls, info: MessageInfo) -> Iterator[Event]: data = Packet(info.vec_msg) group_id, sub_type = data.start().uint32().uint8().execute() if sub_type == 12: - operator_id = data.start().offset(6).uint32().execute()[0] + operator_id, count = ( + data.start().offset(6).uint32().offset(4).uint16().execute() + ) offset = 16 - count = info.vec_msg[14] for _ in range(count): target_id, duration = ( data.start().offset(offset).uint32().uint32().execute() From 19dd4db88f828e745b767db38f3483793f23bbb7 Mon Sep 17 00:00:00 2001 From: a1025 Date: Thu, 7 Apr 2022 14:37:10 +0800 Subject: [PATCH 103/113] remove: unused file --- cai/utils/gcode.py | 38 -------------------------------------- 1 file changed, 38 deletions(-) delete mode 100644 cai/utils/gcode.py diff --git a/cai/utils/gcode.py b/cai/utils/gcode.py deleted file mode 100644 index 53b5714a..00000000 --- a/cai/utils/gcode.py +++ /dev/null @@ -1,38 +0,0 @@ -class GroupIdConvertor: - @staticmethod - def to_group_code(group_id: int) -> int: - left = group_id // 1000000 - if 0 + 202 <= left <= 10 + 202: - left -= 202 - elif 11 + 480 - 11 <= left <= 19 + 480 - 11: - left -= 480 - 11 - elif 20 + 2100 - 20 <= left <= 66 + 2100 - 20: - left -= 2100 - 20 - elif 67 + 2010 - 67 <= left <= 156 + 2010 - 67: - left -= 2010 - 67 - elif 157 + 2147 - 157 <= left <= 209 + 2147 - 157: - left -= 2147 - 157 - elif 210 + 4100 - 210 <= left <= 309 + 4100 - 210: - left -= 4100 - 210 - elif 310 + 3800 - 310 <= left <= 499 + 3800 - 310: - left -= 3800 - 310 - return int(left * 1000000 + group_id % 1000000) - - @staticmethod - def to_group_uin(group_code: int) -> int: - left = group_code // 1000000 - if 0 <= left <= 10: - left += 202 - elif 11 <= left <= 19: - left += 480 - 11 - elif 20 <= left <= 66: - left += 2100 - 20 - elif 67 <= left <= 156: - left += 2010 - 67 - elif 157 <= left <= 209: - left += 2147 - 157 - elif 210 <= left <= 309: - left += 4100 - 210 - elif 310 <= left <= 499: - left += 3800 - 310 - return int(left * 1000000 + group_code % 1000000) From c3b8c5a14a13f7acff7b39b46e8762b2866a927f Mon Sep 17 00:00:00 2001 From: wyapx Date: Fri, 15 Apr 2022 08:00:17 +0800 Subject: [PATCH 104/113] add: image decoder --- cai/client/highway/encoders.py | 54 ++++++++++++++++----- cai/client/highway/highway.py | 27 ++++------- cai/utils/image/__init__.py | 0 cai/utils/image/decoder.py | 88 ++++++++++++++++++++++++++++++++++ cai/utils/image/enum.py | 10 ++++ 5 files changed, 148 insertions(+), 31 deletions(-) create mode 100644 cai/utils/image/__init__.py create mode 100644 cai/utils/image/decoder.py create mode 100644 cai/utils/image/enum.py diff --git a/cai/client/highway/encoders.py b/cai/client/highway/encoders.py index 30425329..c20392d7 100644 --- a/cai/client/highway/encoders.py +++ b/cai/client/highway/encoders.py @@ -1,13 +1,34 @@ from cai.pb.im.cs.cmd0x388 import ReqBody, TryUpImgReq, TryUpPttReq +from typing import Sequence, Optional def encode_d388_req( - group_code: int, uin: int, md5: bytes, size: int, subcmd: int + subcmd: int, + tryup_img: Sequence[TryUpImgReq] = None, + tryup_ptt: Sequence[TryUpPttReq] = None, + ext: Optional[bytes] = None ) -> ReqBody: - img, ptt = None, None - if subcmd == 1: # upload img - fn = md5.hex().upper() + ".jpg" - img = [ + return ReqBody( + net_type=8, + subcmd=subcmd, + tryup_img_req=tryup_img, + tryup_ptt_req=tryup_ptt, + extension=ext + ) + + +def encode_upload_img_req( + group_code: int, + uin: int, + md5: bytes, + size: int, + suffix: str = None, + pic_type: int = 1003 +) -> ReqBody: + fn = f"{md5.hex().upper()}.{'jpg' if not suffix else suffix}" + return encode_d388_req( + subcmd=1, + tryup_img=[ TryUpImgReq( group_code=group_code, src_uin=uin, @@ -18,7 +39,7 @@ def encode_d388_req( src_term=5, platform_type=9, bu_type=1, - pic_type=1003, + pic_type=pic_type, pic_width=1920, pic_height=903, build_ver=b"8.8.50.2324", @@ -27,13 +48,23 @@ def encode_d388_req( srv_upload=0, ) ] - elif subcmd == 3: # voice - ptt = [ + ) + +def encode_upload_voice_req( + group_code: int, + uin: int, + md5: bytes, + size: int, + suffix: str = None, +) -> ReqBody: + return encode_d388_req( + subcmd=3, + tryup_ptt=[ TryUpPttReq( group_code=group_code, src_uin=uin, file_md5=md5, - file_name=(md5.hex().upper() + ".amr").encode(), + file_name=f"{md5.hex().upper()}.{'amr' if not suffix else suffix}".encode(), file_size=size, voice_length=size, voice_type=1, @@ -46,8 +77,5 @@ def encode_d388_req( new_up_chan=True, ) ] - else: - ValueError("unsupported subcmd:", subcmd) - return ReqBody( - net_type=8, subcmd=subcmd, tryup_img_req=img, tryup_ptt_req=ptt ) + diff --git a/cai/client/highway/highway.py b/cai/client/highway/highway.py index 13a77d5c..6d7acdba 100644 --- a/cai/client/highway/highway.py +++ b/cai/client/highway/highway.py @@ -3,9 +3,10 @@ from hashlib import md5 from typing import TYPE_CHECKING, List, Tuple, BinaryIO, Optional +from cai.utils.image import decoder from cai.pb.highway.protocol.highway_head_pb2 import highway_head -from .encoders import encode_d388_req +from .encoders import encode_upload_img_req, encode_upload_voice_req from .frame import read_frame, write_frame from .utils import to_id, timeit, calc_file_md5_and_length from ..message_service.models import ImageElement, VoiceElement @@ -77,12 +78,13 @@ async def _upload_controller( async def upload_image(self, file: BinaryIO, gid: int) -> ImageElement: fmd5, fl = calc_file_md5_and_length(file) + info = decoder.decode(file) ret = decode_upload_image_resp( ( await self._client.send_unipkg_and_wait( "ImgStore.GroupPicUp", - encode_d388_req( - gid, self._client.uin, fmd5, fl, 1 + encode_upload_img_req( + gid, self._client.uin, fmd5, fl, suffix=info.img_type, pic_type=info.pic_type ).SerializeToString(), ) ).data @@ -96,23 +98,12 @@ async def upload_image(self, file: BinaryIO, gid: int) -> ImageElement: ret.uploadAddr, file, 2, ret.uploadKey # send to group ) - ret = decode_upload_image_resp( - ( - await self._client.send_unipkg_and_wait( - "ImgStore.GroupPicUp", - encode_d388_req( - gid, self._client.uin, fmd5, fl, 1 - ).SerializeToString(), - ) - ).data - ) - if ret.hasMetaData: image_type = ret.fileType w, h = ret.width, ret.height else: - image_type = 1000 - w, h = (800, 600) + image_type = info.pic_type + w, h = info.width, info.height return ImageElement( id=ret.fileId, @@ -127,8 +118,8 @@ async def upload_image(self, file: BinaryIO, gid: int) -> ImageElement: async def upload_voice(self, file: BinaryIO, gid: int) -> VoiceElement: fmd5, fl = calc_file_md5_and_length(file) - ext = encode_d388_req( - gid, self._client.uin, fmd5, fl, 3 + ext = encode_upload_voice_req( + gid, self._client.uin, fmd5, fl ).SerializeToString() if not (self._session_key and self._session_sig): self._decode_bdh_session() diff --git a/cai/utils/image/__init__.py b/cai/utils/image/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cai/utils/image/decoder.py b/cai/utils/image/decoder.py new file mode 100644 index 00000000..153b0ccb --- /dev/null +++ b/cai/utils/image/decoder.py @@ -0,0 +1,88 @@ +import struct +import binascii +from typing import BinaryIO +from dataclasses import dataclass + +from .enum import ImageType + + +@dataclass +class ImageInfo: + img_type: str + width: int + height: int + depth: int + + @property + def pic_type(self) -> ImageType: + return ImageType(self.img_type) + + +class BaseDecoder: + @classmethod + def decode(cls, fio: BinaryIO) -> ImageInfo: + raise NotImplementedError + + +class JPEGDecoder(BaseDecoder): + @classmethod + def decode(cls, fio: BinaryIO) -> ImageInfo: + if fio.read(2) != b"\xff\xd8": + raise TypeError("not a valid jpeg file") + while True: + if fio.read(1) != b"\xff": + raise ValueError("decoder fail") + btype = fio.read(1) + data = fio.read( + int.from_bytes(fio.read(2), "big") - 2 + ) + # if btype == b"\xe0": + # _, _, hdpi, wdpi, *_ = struct.unpack("!BBBHHBB", data[5:]) + if btype == b"\xc0": + depth, height, width, _ = struct.unpack("!BHHB", data[:6]) + print(width, height) + return ImageInfo("jpg", width, height, depth) + + +class PNGDecoder(BaseDecoder): + @classmethod + def decode(cls, fio: BinaryIO) -> ImageInfo: + if fio.read(8).hex() != "89504e470d0a1a0a": + raise TypeError("not a valid png file") + while True: + raw_head = fio.read(8) + if not raw_head: + break + elif len(raw_head) != 8: + raise ValueError("decoder fail") + length, btype = struct.unpack("!I4s", raw_head) + data = fio.read(length) + if binascii.crc32(raw_head[4:] + data) != int.from_bytes(fio.read(4), "big"): + raise ValueError("CRC not match") + elif btype == b"IHDR": + width, height, depth, *_ = struct.unpack("!IIBBBBB", data) + return ImageInfo("png", width, height, depth) + # else: + # print(length, btype) + + +class GIFDecoder(BaseDecoder): + @classmethod + def decode(cls, fio: BinaryIO) -> ImageInfo: + if fio.read(6) != b"GIF89a": + raise TypeError("not a valid gif file") + width, height, flag, *_ = struct.unpack("> 4) + 2) + + +def decode(f: BinaryIO) -> ImageInfo: + head = f.read(3) + f.seek(0) + if head[:-1] == b"\xff\xd8": + return JPEGDecoder.decode(f) + elif head.hex() == "89504e": + return PNGDecoder.decode(f) + elif head == b"GIF": + return GIFDecoder.decode(f) + else: + raise NotImplementedError diff --git a/cai/utils/image/enum.py b/cai/utils/image/enum.py new file mode 100644 index 00000000..846f13c4 --- /dev/null +++ b/cai/utils/image/enum.py @@ -0,0 +1,10 @@ +from enum import IntEnum + + +class ImageType(IntEnum): + img = 1000 + gif = 2000 + # jpg = 1003 + + def _missing_(cls, value: object): + return cls.img From 0c508c583f32a15f2073a8d297661696b229dfd4 Mon Sep 17 00:00:00 2001 From: wyapx Date: Fri, 15 Apr 2022 08:03:01 +0800 Subject: [PATCH 105/113] fix: image/enum.py --- cai/utils/image/enum.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cai/utils/image/enum.py b/cai/utils/image/enum.py index 846f13c4..89b919dd 100644 --- a/cai/utils/image/enum.py +++ b/cai/utils/image/enum.py @@ -6,5 +6,6 @@ class ImageType(IntEnum): gif = 2000 # jpg = 1003 + @classmethod def _missing_(cls, value: object): return cls.img From 1d7efc740e041885fc4a729099b7502e39f94b35 Mon Sep 17 00:00:00 2001 From: wyapx Date: Fri, 15 Apr 2022 08:31:31 +0800 Subject: [PATCH 106/113] update: image/enum.py --- cai/utils/image/enum.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/cai/utils/image/enum.py b/cai/utils/image/enum.py index 89b919dd..665e06b5 100644 --- a/cai/utils/image/enum.py +++ b/cai/utils/image/enum.py @@ -2,10 +2,13 @@ class ImageType(IntEnum): - img = 1000 + jpg = 1000 + png = 1001 + webp = 1002 + bmp = 1005 gif = 2000 - # jpg = 1003 + apng = 2001 @classmethod def _missing_(cls, value: object): - return cls.img + return cls.jpg From 95df06510db3fd1bbde4f4bb389f14b7001eecea Mon Sep 17 00:00:00 2001 From: wyapx Date: Fri, 15 Apr 2022 17:56:17 +0800 Subject: [PATCH 107/113] fix: image upload --- cai/client/highway/encoders.py | 23 ++++++++++++----------- cai/client/highway/highway.py | 16 ++++++++++++---- cai/utils/image/decoder.py | 4 ++-- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/cai/client/highway/encoders.py b/cai/client/highway/encoders.py index c20392d7..63bd0d7f 100644 --- a/cai/client/highway/encoders.py +++ b/cai/client/highway/encoders.py @@ -1,19 +1,20 @@ from cai.pb.im.cs.cmd0x388 import ReqBody, TryUpImgReq, TryUpPttReq -from typing import Sequence, Optional +from typing import Sequence, TYPE_CHECKING + +if TYPE_CHECKING: + from cai.utils.image.decoder import ImageInfo def encode_d388_req( subcmd: int, tryup_img: Sequence[TryUpImgReq] = None, - tryup_ptt: Sequence[TryUpPttReq] = None, - ext: Optional[bytes] = None + tryup_ptt: Sequence[TryUpPttReq] = None ) -> ReqBody: return ReqBody( net_type=8, subcmd=subcmd, tryup_img_req=tryup_img, - tryup_ptt_req=tryup_ptt, - extension=ext + tryup_ptt_req=tryup_ptt ) @@ -22,10 +23,10 @@ def encode_upload_img_req( uin: int, md5: bytes, size: int, - suffix: str = None, - pic_type: int = 1003 + info: "ImageInfo" ) -> ReqBody: - fn = f"{md5.hex().upper()}.{'jpg' if not suffix else suffix}" + fn = f"{md5.hex().upper()}.{info.name or 'jpg'}" + print(info, fn) return encode_d388_req( subcmd=1, tryup_img=[ @@ -39,9 +40,9 @@ def encode_upload_img_req( src_term=5, platform_type=9, bu_type=1, - pic_type=pic_type, - pic_width=1920, - pic_height=903, + pic_type=info.pic_type.value, + pic_width=info.width, + pic_height=info.height, build_ver=b"8.8.50.2324", app_pic_type=1052, original_pic=1, diff --git a/cai/client/highway/highway.py b/cai/client/highway/highway.py index 6d7acdba..684c0957 100644 --- a/cai/client/highway/highway.py +++ b/cai/client/highway/highway.py @@ -79,13 +79,12 @@ async def _upload_controller( async def upload_image(self, file: BinaryIO, gid: int) -> ImageElement: fmd5, fl = calc_file_md5_and_length(file) info = decoder.decode(file) + file.seek(0) ret = decode_upload_image_resp( ( await self._client.send_unipkg_and_wait( "ImgStore.GroupPicUp", - encode_upload_img_req( - gid, self._client.uin, fmd5, fl, suffix=info.img_type, pic_type=info.pic_type - ).SerializeToString(), + encode_upload_img_req(gid, self._client.uin, fmd5, fl, info).SerializeToString(), ) ).data ) @@ -98,6 +97,15 @@ async def upload_image(self, file: BinaryIO, gid: int) -> ImageElement: ret.uploadAddr, file, 2, ret.uploadKey # send to group ) + ret = decode_upload_image_resp( + ( + await self._client.send_unipkg_and_wait( + "ImgStore.GroupPicUp", + encode_upload_img_req(gid, self._client.uin, fmd5, fl, info).SerializeToString(), + ) + ).data + ) + if ret.hasMetaData: image_type = ret.fileType w, h = ret.width, ret.height @@ -107,7 +115,7 @@ async def upload_image(self, file: BinaryIO, gid: int) -> ImageElement: return ImageElement( id=ret.fileId, - filename=to_id(fmd5) + ".png", + filename=to_id(fmd5) + f".{info.name}", size=fl, width=w, height=h, diff --git a/cai/utils/image/decoder.py b/cai/utils/image/decoder.py index 153b0ccb..1e10b244 100644 --- a/cai/utils/image/decoder.py +++ b/cai/utils/image/decoder.py @@ -8,14 +8,14 @@ @dataclass class ImageInfo: - img_type: str + name: str width: int height: int depth: int @property def pic_type(self) -> ImageType: - return ImageType(self.img_type) + return getattr(ImageType, self.name) class BaseDecoder: From ec74eda0f954313732ef0f118c7a80ab89bc95c6 Mon Sep 17 00:00:00 2001 From: wyapx Date: Fri, 15 Apr 2022 18:14:38 +0800 Subject: [PATCH 108/113] fix: some design problem --- cai/client/highway/decoders.py | 1 + cai/client/highway/highway.py | 9 --------- cai/client/highway/utils.py | 2 +- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/cai/client/highway/decoders.py b/cai/client/highway/decoders.py index 0fd6ee01..63b234e6 100644 --- a/cai/client/highway/decoders.py +++ b/cai/client/highway/decoders.py @@ -27,6 +27,7 @@ def decode_upload_image_resp(data: bytes) -> ImageUploadResponse: return ImageUploadResponse(isExists=True, fileId=pkg.fileid) return ImageUploadResponse( isExists=False, + fileId=pkg.fileid, uploadAddr=[(itoa(a), p) for a, p in zip(pkg.up_ip, pkg.up_port)], uploadKey=pkg.up_ukey, ) diff --git a/cai/client/highway/highway.py b/cai/client/highway/highway.py index 684c0957..f8653351 100644 --- a/cai/client/highway/highway.py +++ b/cai/client/highway/highway.py @@ -97,15 +97,6 @@ async def upload_image(self, file: BinaryIO, gid: int) -> ImageElement: ret.uploadAddr, file, 2, ret.uploadKey # send to group ) - ret = decode_upload_image_resp( - ( - await self._client.send_unipkg_and_wait( - "ImgStore.GroupPicUp", - encode_upload_img_req(gid, self._client.uin, fmd5, fl, info).SerializeToString(), - ) - ).data - ) - if ret.hasMetaData: image_type = ret.fileType w, h = ret.width, ret.height diff --git a/cai/client/highway/utils.py b/cai/client/highway/utils.py index 3eb68bfa..9cb764c3 100644 --- a/cai/client/highway/utils.py +++ b/cai/client/highway/utils.py @@ -23,7 +23,7 @@ def itoa(i: int) -> str: # int to address(str) def to_id(b_uuid: bytes) -> str: - return "{%s}" % uuid.UUID(bytes=b_uuid) + return b_uuid.hex() async def timeit(func: Awaitable) -> Tuple[float, Any]: From abca32bd6db53fe618df30744e8cadda84ecdf5a Mon Sep 17 00:00:00 2001 From: wyapx Date: Sat, 16 Apr 2022 12:33:22 +0800 Subject: [PATCH 109/113] add: parse GroupFile --- cai/client/highway/encoders.py | 2 +- cai/client/highway/utils.py | 2 +- cai/client/message_service/decoders.py | 13 +++++++++++++ cai/client/message_service/models.py | 11 +++++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/cai/client/highway/encoders.py b/cai/client/highway/encoders.py index 63bd0d7f..65344eb3 100644 --- a/cai/client/highway/encoders.py +++ b/cai/client/highway/encoders.py @@ -51,6 +51,7 @@ def encode_upload_img_req( ] ) + def encode_upload_voice_req( group_code: int, uin: int, @@ -79,4 +80,3 @@ def encode_upload_voice_req( ) ] ) - diff --git a/cai/client/highway/utils.py b/cai/client/highway/utils.py index 9cb764c3..f86ce7c6 100644 --- a/cai/client/highway/utils.py +++ b/cai/client/highway/utils.py @@ -23,7 +23,7 @@ def itoa(i: int) -> str: # int to address(str) def to_id(b_uuid: bytes) -> str: - return b_uuid.hex() + return f"{{{uuid.UUID(bytes=b_uuid)}}}" async def timeit(func: Awaitable) -> Tuple[float, Any]: diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index 950281d9..4ea14826 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -16,6 +16,7 @@ from cai.client.events import Event from cai.pb.msf.msg.comm import Msg from cai.pb.im.msg.msg_body import Ptt, Elem +from cai.pb.im.msg.obj_msg import ObjMsg from cai.pb.im.msg.service.comm_elem import ( MsgElemInfo_servtype2, MsgElemInfo_servtype3, @@ -39,6 +40,7 @@ CustomDataElement, FlashImageElement, SmallEmojiElement, + GroupFileElement, ) @@ -266,6 +268,17 @@ def parse_elements(elems: Sequence[Elem], ptt: Optional[Ptt]) -> List[Element]: stype=elem.shake_window.type, uin=elem.shake_window.uin ) ) + elif elem.HasField("trans_elem_info"): + if elem.trans_elem_info.elem_type == 24: # QQ File + if elem.trans_elem_info.elem_value[0]: + obj = ObjMsg.FromString(elem.trans_elem_info.elem_value[3:]) + for info in obj.content_info: + res.append(GroupFileElement( + info.file.file_name, + info.file.file_size, + info.file.file_path.decode(), + bytes.fromhex(info.file.file_md5.decode()) + )) index += 1 return res diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index 19eba9bf..334d9789 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -242,3 +242,14 @@ class CustomDataElement(Element): def type(self) -> str: return "custom_daata" + +@dataclass +class GroupFileElement(Element): + name: str + size: int + path: str + md5: bytes + + @property + def type(self) -> str: + return "group_file" From 1f4d1a3d491cc45f7716c3fa23935ed6502332ad Mon Sep 17 00:00:00 2001 From: wyapx Date: Sat, 16 Apr 2022 13:59:22 +0800 Subject: [PATCH 110/113] add: BMPDecoder & optimized code --- cai/client/highway/encoders.py | 1 - cai/client/highway/highway.py | 1 - cai/client/highway/utils.py | 2 +- cai/utils/image/decoder.py | 33 +++++++++++++++++++++++++-------- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/cai/client/highway/encoders.py b/cai/client/highway/encoders.py index 65344eb3..76f57a6f 100644 --- a/cai/client/highway/encoders.py +++ b/cai/client/highway/encoders.py @@ -26,7 +26,6 @@ def encode_upload_img_req( info: "ImageInfo" ) -> ReqBody: fn = f"{md5.hex().upper()}.{info.name or 'jpg'}" - print(info, fn) return encode_d388_req( subcmd=1, tryup_img=[ diff --git a/cai/client/highway/highway.py b/cai/client/highway/highway.py index f8653351..6538e668 100644 --- a/cai/client/highway/highway.py +++ b/cai/client/highway/highway.py @@ -79,7 +79,6 @@ async def _upload_controller( async def upload_image(self, file: BinaryIO, gid: int) -> ImageElement: fmd5, fl = calc_file_md5_and_length(file) info = decoder.decode(file) - file.seek(0) ret = decode_upload_image_resp( ( await self._client.send_unipkg_and_wait( diff --git a/cai/client/highway/utils.py b/cai/client/highway/utils.py index f86ce7c6..d701eaf8 100644 --- a/cai/client/highway/utils.py +++ b/cai/client/highway/utils.py @@ -23,7 +23,7 @@ def itoa(i: int) -> str: # int to address(str) def to_id(b_uuid: bytes) -> str: - return f"{{{uuid.UUID(bytes=b_uuid)}}}" + return f"{{{str(uuid.UUID(bytes=b_uuid)).upper()}}}" async def timeit(func: Awaitable) -> Tuple[float, Any]: diff --git a/cai/utils/image/decoder.py b/cai/utils/image/decoder.py index 1e10b244..480aab59 100644 --- a/cai/utils/image/decoder.py +++ b/cai/utils/image/decoder.py @@ -75,14 +75,31 @@ def decode(cls, fio: BinaryIO) -> ImageInfo: return ImageInfo("gif", width, height, ((flag ^ 0x80) >> 4) + 2) +class BMPDecoder(BaseDecoder): + @classmethod + def decode(cls, fio: BinaryIO) -> ImageInfo: + if fio.read(2) != b"BM": + raise TypeError("not a valid bmp file") + fio.read(12) # offset + data = fio.read(16) + print(data) + _, width, height, _, depth = struct.unpack(" ImageInfo: head = f.read(3) f.seek(0) - if head[:-1] == b"\xff\xd8": - return JPEGDecoder.decode(f) - elif head.hex() == "89504e": - return PNGDecoder.decode(f) - elif head == b"GIF": - return GIFDecoder.decode(f) - else: - raise NotImplementedError + try: + if head[:-1] == b"\xff\xd8": + return JPEGDecoder.decode(f) + elif head.hex() == "89504e": + return PNGDecoder.decode(f) + elif head == b"GIF": + return GIFDecoder.decode(f) + elif head[:-1] == b"BM": + return BMPDecoder.decode(f) + else: + raise NotImplementedError + finally: + f.seek(0) From 0656836f5bdc5c89da636c437911fc4656abd770 Mon Sep 17 00:00:00 2001 From: wyapx Date: Sat, 16 Apr 2022 14:01:04 +0800 Subject: [PATCH 111/113] remove: unused code --- cai/utils/image/decoder.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/cai/utils/image/decoder.py b/cai/utils/image/decoder.py index 480aab59..f7a5ef20 100644 --- a/cai/utils/image/decoder.py +++ b/cai/utils/image/decoder.py @@ -36,8 +36,6 @@ def decode(cls, fio: BinaryIO) -> ImageInfo: data = fio.read( int.from_bytes(fio.read(2), "big") - 2 ) - # if btype == b"\xe0": - # _, _, hdpi, wdpi, *_ = struct.unpack("!BBBHHBB", data[5:]) if btype == b"\xc0": depth, height, width, _ = struct.unpack("!BHHB", data[:6]) print(width, height) @@ -62,8 +60,6 @@ def decode(cls, fio: BinaryIO) -> ImageInfo: elif btype == b"IHDR": width, height, depth, *_ = struct.unpack("!IIBBBBB", data) return ImageInfo("png", width, height, depth) - # else: - # print(length, btype) class GIFDecoder(BaseDecoder): @@ -82,7 +78,6 @@ def decode(cls, fio: BinaryIO) -> ImageInfo: raise TypeError("not a valid bmp file") fio.read(12) # offset data = fio.read(16) - print(data) _, width, height, _, depth = struct.unpack(" Date: Mon, 18 Apr 2022 14:47:16 +0800 Subject: [PATCH 112/113] fix: send image fail --- cai/client/message_service/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cai/client/message_service/models.py b/cai/client/message_service/models.py index 334d9789..60547d19 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message_service/models.py @@ -124,7 +124,7 @@ class ImageElement(Element): width: int height: int md5: bytes - id: Optional[int] = -1 + id: Optional[int] = 0 url: Optional[str] = None filetype: Optional[int] = 1000 From 3c9c9d19b10472acf667176885356aeea1a29db0 Mon Sep 17 00:00:00 2001 From: Ju4tCode <42488585+yanyongyu@users.noreply.github.com> Date: Sun, 29 May 2022 10:26:03 +0000 Subject: [PATCH 113/113] :art: improve parse message element --- cai/api/client.py | 2 +- cai/client/events/__init__.py | 29 +- cai/client/events/common.py | 17 - cai/client/events/friend.py | 25 +- cai/client/events/group.py | 16 + cai/client/highway/highway.py | 2 +- cai/client/message/__init__.py | 258 +++++++++++++ .../{message_service => message}/models.py | 62 +--- cai/client/message_service/__init__.py | 2 +- cai/client/message_service/decoders.py | 343 +++--------------- cai/client/message_service/encoders.py | 2 +- examples/login.py | 2 +- 12 files changed, 378 insertions(+), 382 deletions(-) delete mode 100644 cai/client/events/common.py create mode 100644 cai/client/message/__init__.py rename cai/client/{message_service => message}/models.py (78%) diff --git a/cai/api/client.py b/cai/api/client.py index 66205bb3..6759740a 100644 --- a/cai/api/client.py +++ b/cai/api/client.py @@ -18,7 +18,7 @@ from cai.client.highway import HighWaySession from cai.settings.protocol import get_protocol from cai.client.message_service.encoders import build_msg, make_group_msg_pkg -from cai.client.message_service.models import ( +from cai.client.message.models import ( Element, ImageElement, VoiceElement, diff --git a/cai/client/events/__init__.py b/cai/client/events/__init__.py index bf311aa3..72e041e2 100644 --- a/cai/client/events/__init__.py +++ b/cai/client/events/__init__.py @@ -1,22 +1,27 @@ +# base from .base import Event as Event from .group import GroupEvent as GroupEvent -from .common import NudgeEvent as NudgeEvent +from .friend import PrivateEvent as PrivateEvent +from .group import GroupNudgeEvent as GroupNudgeEvent from .group import GroupRedbagEvent as GroupRedbagEvent +from .group import GroupMessageEvent as GroupMessageEvent +from .friend import PrivateMessageEvent as PrivateMessageEvent from .group import GroupMemberMutedEvent as GroupMemberMutedEvent from .group import GroupNameChangedEvent as GroupNameChangedEvent from .group import GroupMemberUnMutedEvent as GroupMemberUnMutedEvent +from .group import GroupLuckyCharacterEvent as GroupLuckyCharacterEvent from .group import GroupMessageRecalledEvent as GroupMessageRecalledEvent +from .group import GroupLuckyCharacterNewEvent as GroupLuckyCharacterNewEvent +from .group import GroupLuckyCharacterInitEvent as GroupLuckyCharacterInitEvent +from .group import ( + GroupLuckyCharacterClosedEvent as GroupLuckyCharacterClosedEvent, +) +from .group import ( + GroupLuckyCharacterOpenedEvent as GroupLuckyCharacterOpenedEvent, +) +from .group import ( + GroupLuckyCharacterChangedEvent as GroupLuckyCharacterChangedEvent, +) from .group import ( GroupMemberSpecialTitleChangedEvent as GroupMemberSpecialTitleChangedEvent, ) - -__all__ = [ - "Event", - "GroupEvent", - "NudgeEvent", - "GroupMemberMutedEvent", - "GroupMemberUnMutedEvent", - "GroupMemberSpecialTitleChangedEvent", - "GroupNameChangedEvent", - "GroupMessageRecalledEvent", -] diff --git a/cai/client/events/common.py b/cai/client/events/common.py deleted file mode 100644 index 5a4d1524..00000000 --- a/cai/client/events/common.py +++ /dev/null @@ -1,17 +0,0 @@ -from typing import Optional -from dataclasses import dataclass - -from .base import Event - - -@dataclass -class NudgeEvent(Event): - sender: int - target: int - action: str - suffix: Optional[str] - group: Optional[int] = None - - @property - def type(self) -> str: - return "NudgeEvent" diff --git a/cai/client/events/friend.py b/cai/client/events/friend.py index db4e5dd7..5ced4963 100644 --- a/cai/client/events/friend.py +++ b/cai/client/events/friend.py @@ -1 +1,24 @@ -# TODO: PR Welcome +from typing import List +from dataclasses import dataclass + +from cai.pb.msf.msg.comm import Msg +from cai.client.message import Element + +from .base import Event + + +@dataclass +class PrivateEvent(Event): + user_id: int + + +# message service get message +@dataclass +class PrivateMessageEvent(PrivateEvent): + _msg: Msg + seq: int + time: int + auto_reply: bool + user_nick: str + to_id: int + message: List[Element] diff --git a/cai/client/events/group.py b/cai/client/events/group.py index fcf2a4e5..3023a9bb 100644 --- a/cai/client/events/group.py +++ b/cai/client/events/group.py @@ -1,6 +1,9 @@ from dataclasses import dataclass from typing import Any, Dict, List +from cai.pb.msf.msg.comm import Msg +from cai.client.message import Element + from .base import Event @@ -9,6 +12,19 @@ class GroupEvent(Event): group_id: int +# online push push msg +@dataclass +class GroupMessageEvent(GroupEvent): + _msg: Msg + seq: int + time: int + group_name: str + group_level: int + from_uin: int + from_group_card: str + message: List[Element] + + # online push graytip @dataclass class _GroupGrayTipEvent(GroupEvent): diff --git a/cai/client/highway/highway.py b/cai/client/highway/highway.py index 6538e668..593794a3 100644 --- a/cai/client/highway/highway.py +++ b/cai/client/highway/highway.py @@ -9,7 +9,7 @@ from .encoders import encode_upload_img_req, encode_upload_voice_req from .frame import read_frame, write_frame from .utils import to_id, timeit, calc_file_md5_and_length -from ..message_service.models import ImageElement, VoiceElement +from ..message.models import ImageElement, VoiceElement from .decoders import decode_upload_ptt_resp, decode_upload_image_resp if TYPE_CHECKING: diff --git a/cai/client/message/__init__.py b/cai/client/message/__init__.py new file mode 100644 index 00000000..62666d2d --- /dev/null +++ b/cai/client/message/__init__.py @@ -0,0 +1,258 @@ +import zlib +from typing import List, Sequence + +from cai.pb.im.msg.obj_msg import ObjMsg +from cai.pb.im.msg.msg_body import Ptt, Elem +from cai.pb.im.msg.service.comm_elem import ( + MsgElemInfo_servtype2, + MsgElemInfo_servtype3, + MsgElemInfo_servtype33, +) + +from .models import * + + +def parse_elements(elems: Sequence[Elem]) -> List[Element]: + """Parse message rich text elements. + + Only parse ``text``, ``face``, ``small_smoji``, ``common_elem service 33`` + for plain text. + + Note: + Source: com.tencent.imcore.message.ext.codec.decoder.pbelement.* + + Args: + elems (Sequence[Elem]): Sequence of rich text elements. + ptt (Ptt) + + Returns: + List[Element]: List of decoded message elements. + """ + res: List[Element] = [] + index = 0 + while index < len(elems): + elem = elems[index] + # SrcElemDecoder + if elem.HasField("src_msg"): + if len(elem.src_msg.orig_seqs) > 0: + # preprocess + # Delete redundancy data + # if index == 2: # Sent by PC + # res = [] + # else: + # index += 1 # pass + res.append( + ReplyElement( + elem.src_msg.orig_seqs[0], + elem.src_msg.time, + elem.src_msg.sender_uin, + parse_elements(elem.src_msg.elems), + elem.src_msg.troop_name.decode("utf-8") or None, + ) + ) + # TextElemDecoder + elif elem.HasField("text"): + if elem.text.attr_6_buf: + if elem.text.attr_6_buf[6]: # AtAll + res.append(AtAllElement()) + else: + res.append( + AtElement( + int.from_bytes( + elem.text.attr_6_buf[7:11], "big", signed=False + ), + elem.text.str.decode("utf-8"), + ) + ) + else: + res.append(TextElement(elem.text.str.decode("utf-8"))) + elif elem.HasField("rich_msg"): + if elem.rich_msg.template_1[0]: + content = zlib.decompress(elem.rich_msg.template_1[1:]) + else: + content = elem.rich_msg.template_1[1:] + return [ + RichMsgElement( + content, + elem.rich_msg.service_id if content[0] == 60 else -1, + ) + ] + elif elem.HasField("light_app"): + if elem.light_app.data[0]: + content = zlib.decompress(elem.light_app.data[1:]) + else: + content = elem.light_app.data[1:] + return [RichMsgElement(content, -2)] + # TextElemDecoder + elif elem.HasField("face"): + res.append(FaceElement(elem.face.index)) + # TextElemDecoder + elif elem.HasField("small_emoji"): + index += 1 + text = elems[index].text.str.decode("utf-8") + res.append( + SmallEmojiElement( + elem.small_emoji.pack_id_sum, + text, + # bytes( + # [ + # 0x1FF + # if elem.small_emoji.image_type & 0xFFFF == 2 + # else 0xFF, + # elem.small_emoji.pack_id_sum & 0xFFFF, + # elem.small_emoji.pack_id_sum >> 16 & 0xFF, + # elem.small_emoji.pack_id_sum >> 24, + # ] + # ), + ) + ) + # PictureElemDecoder + elif elem.HasField("custom_face"): + if elem.custom_face.md5 and elem.custom_face.orig_url: + res.append( + ImageElement( + filename=elem.custom_face.file_path, + size=elem.custom_face.size, + width=elem.custom_face.width, + height=elem.custom_face.height, + md5=elem.custom_face.md5, + url="https://gchat.qpic.cn" + elem.custom_face.orig_url, + ) + ) + elif elem.custom_face.md5: + res.append( + ImageElement( + filename=elem.custom_face.file_path, + size=elem.custom_face.size, + width=elem.custom_face.width, + height=elem.custom_face.height, + md5=elem.custom_face.md5, + url="https://gchat.qpic.cn/gchatpic_new/0/0-0-" + + elem.custom_face.md5.decode().upper() + + "/0", + ) + ) + # PictureElemDecoder + elif elem.HasField("not_online_image"): + if elem.not_online_image.orig_url: + res.append( + ImageElement( + filename=elem.not_online_image.file_path.decode( + "utf-8" + ), + size=elem.not_online_image.file_len, + width=elem.not_online_image.pic_width, + height=elem.not_online_image.pic_height, + md5=elem.not_online_image.pic_md5, + url="https://c2cpicdw.qpic.cn" + + elem.not_online_image.orig_url, + ) + ) + elif ( + elem.not_online_image.res_id + or elem.not_online_image.download_path + ): + res.append( + ImageElement( + filename=elem.not_online_image.file_path.decode( + "utf-8" + ), + size=elem.not_online_image.file_len, + width=elem.not_online_image.pic_width, + height=elem.not_online_image.pic_height, + md5=elem.not_online_image.pic_md5, + url="https://c2cpicdw.qpic.cn/offpic_new/0/" + + ( + elem.not_online_image.res_id + or elem.not_online_image.download_path + ).decode("utf-8") + + "/0", + ) + ) + elif elem.HasField("open_qq_data"): + res.append(CustomDataElement(data=elem.open_qq_data.car_qq_data)) + elif elem.HasField("common_elem"): + service_type = elem.common_elem.service_type + # PokeMsgElemDecoder + if service_type == 2: + poke = MsgElemInfo_servtype2.FromString( + elem.common_elem.pb_elem + ) + res = [ + PokeElement( + poke.poke_type + if poke.vaspoke_id == 0xFFFFFFFF + else poke.vaspoke_id, + poke.vaspoke_name.decode("utf-8"), + poke.poke_strength, + poke.double_hit, + ) + ] + break + elif service_type == 3: + flash = MsgElemInfo_servtype3.FromString( + elem.common_elem.pb_elem + ) + if flash.flash_troop_pic: + res.append( + FlashImageElement( + id=flash.flash_troop_pic.file_id, + filename=flash.flash_troop_pic.file_path, + filetype=flash.flash_troop_pic.file_type, + size=flash.flash_troop_pic.size, + md5=flash.flash_troop_pic.md5, + width=flash.flash_troop_pic.width, + height=flash.flash_troop_pic.height, + url=f"https://gchat.qpic.cn/gchatpic_new/0/0-0-{flash.flash_troop_pic.md5.hex().upper()}/0", + ) + ) + break + # TextElemDecoder + elif service_type == 33: + info = MsgElemInfo_servtype33.FromString( + elem.common_elem.pb_elem + ) + res.append(FaceElement(info.index)) + elif elem.HasField("shake_window"): + res.append( + ShakeElement( + stype=elem.shake_window.type, uin=elem.shake_window.uin + ) + ) + elif elem.HasField("trans_elem_info"): + if elem.trans_elem_info.elem_type == 24: # QQ File + if elem.trans_elem_info.elem_value[0]: + obj = ObjMsg.FromString(elem.trans_elem_info.elem_value[3:]) + for info in obj.content_info: + res.append( + GroupFileElement( + info.file.file_name, + info.file.file_size, + info.file.file_path.decode(), + bytes.fromhex(info.file.file_md5.decode()), + ) + ) + index += 1 + return res + + +def parse_ptt(ptt: Ptt) -> VoiceElement: + """Parse message ptt elements. + + Note: + Source: com.tencent.mobileqq.service.message.codec.decoder.PTTDecoder + + Args: + ptt (Ptt): ptt element in msg + + Returns: + VoiceElement: Parsed VoiceElement object. + """ + return VoiceElement( + file_name=ptt.file_name.decode(), + file_type=ptt.file_type, + file_size=ptt.file_size, + file_uuid=ptt.file_uuid, + file_md5=ptt.file_md5, + url=ptt.down_para.decode(), + ) diff --git a/cai/client/message_service/models.py b/cai/client/message/models.py similarity index 78% rename from cai/client/message_service/models.py rename to cai/client/message/models.py index 60547d19..5ac921b9 100644 --- a/cai/client/message_service/models.py +++ b/cai/client/message/models.py @@ -28,39 +28,6 @@ class PokeType(IntEnum): FangDaZhao = 6 -@dataclass -class PrivateMessage(Event): - _msg: Msg - seq: int - time: int - auto_reply: bool - from_uin: int - from_nick: str - to_uin: int - message: List["Element"] - - @property - def type(self) -> str: - return "private_message" - - -@dataclass -class GroupMessage(Event): - _msg: Msg - seq: int - time: int - group_id: int - group_name: str - group_level: int - from_uin: int - from_group_card: str - message: List["Element"] - - @property - def type(self) -> str: - return "group_message" - - class Element(abc.ABC): @property @abc.abstractmethod @@ -156,11 +123,10 @@ def type(self) -> str: class VoiceElement(Element): file_name: str file_type: int - from_uin: int - md5: bytes - size: int - group_file_key: bytes - url: str = None + file_size: int + file_uuid: bytes + file_md5: bytes + url: str @property def type(self) -> str: @@ -170,16 +136,16 @@ def type(self) -> str: def _pb_reserve(self) -> bytes: return bytes([8, 0, 40, 0, 56, 0]) - def to_ptt(self) -> Ptt: - return Ptt( - file_type=self.file_type, - src_uin=self.from_uin, - file_md5=self.md5, - file_name=self.file_name.encode(), - file_size=self.size, - pb_reserve=self._pb_reserve, - valid=True, - ) + # def to_ptt(self) -> Ptt: + # return Ptt( + # file_type=self.file_type, + # src_uin=self.from_uin, + # file_md5=self.md5, + # file_name=self.file_name.encode(), + # file_size=self.size, + # pb_reserve=self._pb_reserve, + # valid=True, + # ) @dataclass diff --git a/cai/client/message_service/__init__.py b/cai/client/message_service/__init__.py index acdf0c69..190a6f55 100644 --- a/cai/client/message_service/__init__.py +++ b/cai/client/message_service/__init__.py @@ -19,7 +19,7 @@ from cai.pb.msf.msg.svc import PbGetMsgReq, PbDeleteMsgReq from .decoders import MESSAGE_DECODERS -from .models import GroupMessage, PrivateMessage +from ..message.models import GroupMessage, PrivateMessage from .command import ( PushNotify, GetMessageFail, diff --git a/cai/client/message_service/decoders.py b/cai/client/message_service/decoders.py index 4ea14826..9b3dd5f4 100644 --- a/cai/client/message_service/decoders.py +++ b/cai/client/message_service/decoders.py @@ -8,279 +8,13 @@ .. _LICENSE: https://github.com/cscs181/CAI/blob/master/LICENSE """ -import zlib from itertools import chain -from typing import Dict, List, Callable, Optional, Sequence +from typing import Dict, List, Callable, Optional from cai.log import logger -from cai.client.events import Event from cai.pb.msf.msg.comm import Msg -from cai.pb.im.msg.msg_body import Ptt, Elem -from cai.pb.im.msg.obj_msg import ObjMsg -from cai.pb.im.msg.service.comm_elem import ( - MsgElemInfo_servtype2, - MsgElemInfo_servtype3, - MsgElemInfo_servtype33, -) - -from .models import ( - Element, - AtElement, - FaceElement, - PokeElement, - TextElement, - AtAllElement, - GroupMessage, - ImageElement, - ReplyElement, - ShakeElement, - VoiceElement, - PrivateMessage, - RichMsgElement, - CustomDataElement, - FlashImageElement, - SmallEmojiElement, - GroupFileElement, -) - - -def parse_elements(elems: Sequence[Elem], ptt: Optional[Ptt]) -> List[Element]: - """Parse message rich text elements. - - Only parse ``text``, ``face``, ``small_smoji``, ``common_elem service 33`` - for plain text. - - Note: - Source: com.tencent.imcore.message.ext.codec.decoder.pbelement.* - - Args: - elems (Sequence[Elem]): Sequence of rich text elements. - ptt (Ptt) - - Returns: - List[Element]: List of decoded message elements. - """ - if ptt: - if ptt.file_name.endswith(b".amr"): - info = {} - for bl in ptt.down_para.decode().split("&")[1:]: - k, v = bl.split("=", 1) - info[k] = v - return [ - VoiceElement( - ptt.file_name.decode(), - info["filetype"], - ptt.src_uin, - ptt.file_md5, - ptt.file_size, - bytes.fromhex(info["rkey"]), - "https://grouptalk.c2c.qq.com" + ptt.down_para.decode(), - ) - ] - res: List[Element] = [] - index = 0 - while index < len(elems): - elem = elems[index] - # SrcElemDecoder - if elem.HasField("src_msg"): - if len(elem.src_msg.orig_seqs) > 0: - # preprocess - # Delete redundancy data - if index == 2: # Sent by PC - res = [] - else: - index += 1 # pass - res.append( - ReplyElement( - elem.src_msg.orig_seqs[0], - elem.src_msg.time, - elem.src_msg.sender_uin, - parse_elements(elem.src_msg.elems, None), - elem.src_msg.troop_name.decode("utf-8") or None, - ) - ) - # TextElemDecoder - elif elem.HasField("text"): - if elem.text.attr_6_buf: - if elem.text.attr_6_buf[6]: # AtAll - res.append(AtAllElement()) - else: - res.append( - AtElement( - int.from_bytes( - elem.text.attr_6_buf[7:11], "big", signed=False - ), - elem.text.str.decode("utf-8"), - ) - ) - else: - res.append(TextElement(elem.text.str.decode("utf-8"))) - elif elem.HasField("rich_msg"): - if elem.rich_msg.template_1[0]: - content = zlib.decompress(elem.rich_msg.template_1[1:]) - else: - content = elem.rich_msg.template_1[1:] - return [ - RichMsgElement( - content, - elem.rich_msg.service_id if content[0] == 60 else -1, - ) - ] - elif elem.HasField("light_app"): - if elem.light_app.data[0]: - content = zlib.decompress(elem.light_app.data[1:]) - else: - content = elem.light_app.data[1:] - return [RichMsgElement(content, -2)] - # TextElemDecoder - elif elem.HasField("face"): - res.append(FaceElement(elem.face.index)) - # TextElemDecoder - elif elem.HasField("small_emoji"): - index += 1 - text = elems[index].text.str.decode("utf-8") - res.append( - SmallEmojiElement( - elem.small_emoji.pack_id_sum, - text, - # bytes( - # [ - # 0x1FF - # if elem.small_emoji.image_type & 0xFFFF == 2 - # else 0xFF, - # elem.small_emoji.pack_id_sum & 0xFFFF, - # elem.small_emoji.pack_id_sum >> 16 & 0xFF, - # elem.small_emoji.pack_id_sum >> 24, - # ] - # ), - ) - ) - # PictureElemDecoder - elif elem.HasField("custom_face"): - if elem.custom_face.md5 and elem.custom_face.orig_url: - res.append( - ImageElement( - filename=elem.custom_face.file_path, - size=elem.custom_face.size, - width=elem.custom_face.width, - height=elem.custom_face.height, - md5=elem.custom_face.md5, - url="https://gchat.qpic.cn" + elem.custom_face.orig_url, - ) - ) - elif elem.custom_face.md5: - res.append( - ImageElement( - filename=elem.custom_face.file_path, - size=elem.custom_face.size, - width=elem.custom_face.width, - height=elem.custom_face.height, - md5=elem.custom_face.md5, - url="https://gchat.qpic.cn/gchatpic_new/0/0-0-" - + elem.custom_face.md5.decode().upper() - + "/0", - ) - ) - # PictureElemDecoder - elif elem.HasField("not_online_image"): - if elem.not_online_image.orig_url: - res.append( - ImageElement( - filename=elem.not_online_image.file_path.decode( - "utf-8" - ), - size=elem.not_online_image.file_len, - width=elem.not_online_image.pic_width, - height=elem.not_online_image.pic_height, - md5=elem.not_online_image.pic_md5, - url="https://c2cpicdw.qpic.cn" - + elem.not_online_image.orig_url, - ) - ) - elif ( - elem.not_online_image.res_id - or elem.not_online_image.download_path - ): - res.append( - ImageElement( - filename=elem.not_online_image.file_path.decode( - "utf-8" - ), - size=elem.not_online_image.file_len, - width=elem.not_online_image.pic_width, - height=elem.not_online_image.pic_height, - md5=elem.not_online_image.pic_md5, - url="https://c2cpicdw.qpic.cn/offpic_new/0/" - + ( - elem.not_online_image.res_id - or elem.not_online_image.download_path - ).decode("utf-8") - + "/0", - ) - ) - elif elem.HasField("open_qq_data"): - res.append(CustomDataElement(data=elem.open_qq_data.car_qq_data)) - elif elem.HasField("common_elem"): - service_type = elem.common_elem.service_type - # PokeMsgElemDecoder - if service_type == 2: - poke = MsgElemInfo_servtype2.FromString( - elem.common_elem.pb_elem - ) - res = [ - PokeElement( - poke.poke_type - if poke.vaspoke_id == 0xFFFFFFFF - else poke.vaspoke_id, - poke.vaspoke_name.decode("utf-8"), - poke.poke_strength, - poke.double_hit, - ) - ] - break - elif service_type == 3: - flash = MsgElemInfo_servtype3.FromString( - elem.common_elem.pb_elem - ) - if flash.flash_troop_pic: - res.append( - FlashImageElement( - id=flash.flash_troop_pic.file_id, - filename=flash.flash_troop_pic.file_path, - filetype=flash.flash_troop_pic.file_type, - size=flash.flash_troop_pic.size, - md5=flash.flash_troop_pic.md5, - width=flash.flash_troop_pic.width, - height=flash.flash_troop_pic.height, - url=f"https://gchat.qpic.cn/gchatpic_new/0/0-0-{flash.flash_troop_pic.md5.hex().upper()}/0", - ) - ) - break - # TextElemDecoder - elif service_type == 33: - info = MsgElemInfo_servtype33.FromString( - elem.common_elem.pb_elem - ) - res.append(FaceElement(info.index)) - elif elem.HasField("shake_window"): - res.append( - ShakeElement( - stype=elem.shake_window.type, uin=elem.shake_window.uin - ) - ) - elif elem.HasField("trans_elem_info"): - if elem.trans_elem_info.elem_type == 24: # QQ File - if elem.trans_elem_info.elem_value[0]: - obj = ObjMsg.FromString(elem.trans_elem_info.elem_value[3:]) - for info in obj.content_info: - res.append(GroupFileElement( - info.file.file_name, - info.file.file_size, - info.file.file_path.decode(), - bytes.fromhex(info.file.file_md5.decode()) - )) - index += 1 - return res +from cai.client.message import parse_ptt, parse_elements +from cai.client.events import Event, GroupMessageEvent, PrivateMessageEvent class BuddyMessageDecoder: @@ -304,7 +38,7 @@ def decode(cls, message: Msg) -> Optional[Event]: # 242: OfflineFileDecoder, # 243: OfflineFileDecoder, } - Decoder = sub_decoders.get(message.head.c2c_cmd, None) + Decoder = sub_decoders.get(message.head.c2c_cmd) if not Decoder: logger.debug( "MessageSvc.PbGetMsg: BuddyMessageDecoder cannot " @@ -338,18 +72,20 @@ def decode_normal_buddy(cls, message: Msg) -> Optional[Event]: from_uin = message.head.from_uin from_nick = message.head.from_nick to_uin = message.head.to_uin - elems = message.body.rich_text.elems - ptt = message.body.rich_text.ptt - - return PrivateMessage( - message, - seq, - time, - auto_reply, - from_uin, - from_nick, - to_uin, - parse_elements(elems, ptt), + parsed_elems = [] + if message.body.rich_text.HasField("ptt"): + parsed_elems.append(parse_ptt(message.body.rich_text.ptt)) + parsed_elems.extend(parse_elements(message.body.rich_text.elems)) + + return PrivateMessageEvent( + _msg=message, + seq=seq, + time=time, + auto_reply=auto_reply, + user_id=from_uin, + user_nick=from_nick, + to_id=to_uin, + message=parsed_elems, ) @@ -383,8 +119,13 @@ def decode(cls, message: Msg) -> Optional[Event]: from_uin = message.head.from_uin troop = message.head.group_info content_head = message.content_head + parsed_elems = [] + ptts = ( + [message.body.rich_text.ptt] + if message.body.rich_text.HasField("ptt") + else [] + ) elems = message.body.rich_text.elems - ptt = message.body.rich_text.ptt # long msg fragment if content_head.pkg_num > 1: @@ -396,25 +137,29 @@ def decode(cls, message: Msg) -> Optional[Event]: return cls.long_msg_fragment_store.pop(content_head.div_seq) + f = sorted(fragments, key=lambda f: f.content_head.pkg_index) + ptts = [ + msg.body.rich_text.ptt + for msg in f + if msg.body.rich_text.HasField("ptt") + ] elems = list( - chain.from_iterable( - msg.body.rich_text.elems - for msg in sorted( - fragments, key=lambda f: f.content_head.pkg_index - ) - ) + chain.from_iterable(msg.body.rich_text.elems for msg in f) ) - return GroupMessage( - message, - seq, - time, - troop.group_code, - troop.group_name.decode("utf-8"), - troop.group_level, - from_uin, - troop.group_card.decode("utf-8"), - parse_elements(elems, ptt), + parsed_elems.extend(map(parse_ptt, ptts)) + parsed_elems.extend(parse_elements(elems)) + + return GroupMessageEvent( + _msg=message, + seq=seq, + time=time, + group_id=troop.group_code, + group_name=troop.group_name.decode("utf-8"), + group_level=troop.group_level, + from_uin=from_uin, + from_group_card=troop.group_card.decode("utf-8"), + message=parsed_elems, ) diff --git a/cai/client/message_service/encoders.py b/cai/client/message_service/encoders.py index aba6b6fa..1ef8be04 100644 --- a/cai/client/message_service/encoders.py +++ b/cai/client/message_service/encoders.py @@ -22,7 +22,7 @@ OpenQQData ) -from . import models +from ..message import models # todo: https://github.com/mamoe/mirai/blob/7d3971259de59cede94b7a55650c8a6ad4346a59/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbSendMsg.kt#L103 # https://github.com/mamoe/mirai/blob/74fc5a50376ed0330b984af51e0fabc2147afdbb/mirai-core/src/commonMain/kotlin/contact/SendMessageHandler.kt diff --git a/examples/login.py b/examples/login.py index b523fa46..ee946f8c 100644 --- a/examples/login.py +++ b/examples/login.py @@ -18,7 +18,7 @@ from PIL import Image from cai.api import Client, make_client -from cai.client.message_service.models import TextElement +from cai.client.message.models import TextElement from cai.client import Event, GroupMessage, OnlineStatus, PrivateMessage from cai.exceptions import ( LoginException,