110 lines
2.9 KiB
Python
110 lines
2.9 KiB
Python
"""Discovered RPC operations, not an authorization or live support guarantee."""
|
|
|
|
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class OfficialCapability:
|
|
method: str
|
|
implemented: bool
|
|
effect: str
|
|
evidence: str
|
|
|
|
|
|
READ_OPERATIONS = frozenset(
|
|
{"app.getRobots", "appFrame.getFrame", "appFrame.getFrameCovers"}
|
|
)
|
|
DISCOVERED_METHODS = (
|
|
"app.addFriendRobot",
|
|
"app.addShareRobot",
|
|
"app.bindRobot",
|
|
"app.changePassword",
|
|
"app.cleanMemory",
|
|
"app.createCustomRole",
|
|
"app.createPointOrder",
|
|
"app.deleteFriendRobot",
|
|
"app.forgetPassword",
|
|
"app.getChatHistory",
|
|
"app.getCustomRoleInfo",
|
|
"app.getDistributors",
|
|
"app.getFirmwares",
|
|
"app.getPayOrder",
|
|
"app.getPayOrderList",
|
|
"app.getPoints",
|
|
"app.getRedeem",
|
|
"app.getRobot",
|
|
"app.getRobotByUUID",
|
|
"app.getRobots",
|
|
"app.getUserInfo",
|
|
"app.login",
|
|
"app.redeemRobotPointByCode",
|
|
"app.register",
|
|
"app.removeShare",
|
|
"app.sendChat",
|
|
"app.sendCtrl",
|
|
"app.setRobotNetwork",
|
|
"app.setTimezone",
|
|
"app.setUpgradeFirmware",
|
|
"app.testCustomRoleVoice",
|
|
"app.unlink",
|
|
"app.updateCustomRole",
|
|
"app.updateRobot",
|
|
"app.wxlogin",
|
|
"appFrame.addFrameArtist",
|
|
"appFrame.addFrameGalleryImage",
|
|
"appFrame.addTag",
|
|
"appFrame.changeFrameImageName",
|
|
"appFrame.changeName",
|
|
"appFrame.chat",
|
|
"appFrame.deleteAllImage",
|
|
"appFrame.deleteImage",
|
|
"appFrame.displayImage",
|
|
"appFrame.enablePair",
|
|
"appFrame.enableShareCode",
|
|
"appFrame.getFrame",
|
|
"appFrame.getFrameArtists",
|
|
"appFrame.getFrameCovers",
|
|
"appFrame.getFrameGalleryImages",
|
|
"appFrame.getFrameGallerys",
|
|
"appFrame.getFrameSplashs",
|
|
"appFrame.getImages",
|
|
"appFrame.getShareImages",
|
|
"appFrame.importImagesByTransferToken",
|
|
"appFrame.likeImage",
|
|
"appFrame.recognizeVoice",
|
|
"appFrame.refreshImage",
|
|
"appFrame.refreshShareUUID",
|
|
"appFrame.removeTag",
|
|
"appFrame.reportFrameImage",
|
|
"appFrame.reset",
|
|
"appFrame.setFrameCover",
|
|
"appFrame.setFrameImageChangeInterval",
|
|
"appFrame.setFrameImageChangeMinute",
|
|
"appFrame.setFrameImageChangeTags",
|
|
"appFrame.setFrameImageChangeType",
|
|
"appFrame.setImageTags",
|
|
"appFrame.setRotate",
|
|
"appFrame.setSplash",
|
|
"appFrame.shareImage",
|
|
"appFrame.text2speech",
|
|
"appFrame.uploadImage",
|
|
)
|
|
|
|
|
|
def capabilities() -> tuple[OfficialCapability, ...]:
|
|
return tuple(
|
|
OfficialCapability(
|
|
method=method,
|
|
implemented=method in READ_OPERATIONS or method == "app.login",
|
|
effect="read"
|
|
if method in READ_OPERATIONS
|
|
else "authentication"
|
|
if method == "app.login"
|
|
else "unverified",
|
|
evidence="live_verified"
|
|
if method in READ_OPERATIONS or method == "app.login"
|
|
else "apk_discovered",
|
|
)
|
|
for method in DISCOVERED_METHODS
|
|
)
|