diff --git a/404.html b/404.html new file mode 100644 index 00000000..716a1046 --- /dev/null +++ b/404.html @@ -0,0 +1,40 @@ + + + + + + + + OpenShamrock + + + + + + +
跳至主要內容

404

页面不存在

这 是 四 零 四 !

+ + + diff --git a/advanced/index.html b/advanced/index.html new file mode 100644 index 00000000..eed00f48 --- /dev/null +++ b/advanced/index.html @@ -0,0 +1,40 @@ + + + + + + + + 进阶 | OpenShamrock + + + + + + +
跳至主要內容

进阶

小于 1 分钟

+ + + diff --git a/advanced/voice.html b/advanced/voice.html new file mode 100644 index 00000000..0edcb37f --- /dev/null +++ b/advanced/voice.html @@ -0,0 +1,40 @@ + + + + + + + + 语音支持 | OpenShamrock + + + + + + +
跳至主要內容

语音支持

小于 1 分钟

安装 SILK 语音引擎

Shamrock 的语音解码器已经模块化,你可以自行选择安装。
如果未安装 SILK 语音引擎,Shamrock 则无法发送 mp3/flac/wav/ogg 等格式的语音消息。

为了完整支持语音消息,你需要安装 SILK 语音引擎。

  • 下载 AudioLibrary 语音支持库,请下载对应架构的文件,否则可能无法运行。
  • 将全部文件解压到 Shamrock 主目录 下的 lib 文件夹中

AudioLibrary-Arm64open in new windowAudioLibrary-X64open in new window

关于 Shamrock 主目录,请参考 目录定义

提示

如果没有 lib 文件夹,请自行创建。
请你下载对应的正确的架构的lib,在模拟器上即使对应架构也可能报错?

+ + + diff --git a/api/account.html b/api/account.html new file mode 100644 index 00000000..dbc02298 --- /dev/null +++ b/api/account.html @@ -0,0 +1,83 @@ + + + + + + + + 账号相关 | OpenShamrock + + + + + + +
跳至主要內容

账号相关

大约 2 分钟

注意

对于 Shamrock 尚未实现的 API,会在标题添加标记 未实现

获取登录号信息

该接口用于获取 QQ 用户的登录号信息。

API 端点

/get_login_info

参数

提示

该接口无输入参数。

响应

字段类型说明
user_idint64QQ 号
nicknamestring昵称

设置 QQ 个人资料

该接口用于设置 QQ 用户的个人资料信息。

API 端点

/set_qq_profile

参数

字段类型必须说明
nicknamestring昵称
companystring公司
emailstring邮箱
collegestring大学
personal_notestring个人备注
ageint32年龄
birthdaystring生日(格式:YYYY-MM-DD)

响应

该接口将返回基本的 json 。

获取在线机型

该接口用于获取 QQ 在线机型。

API 端点

/_get_model_show

参数

字段类型必须说明
modelstring机型

响应

字段类型说明
variantsList<ModelDetail>机型列表

ModelDetail

字段类型说明
model_showstring机型名称
need_paybool是否需要付费

设置在线机型

该接口用于设置 QQ 在线机型。

API 端点

/_set_model_show

参数

字段类型必须说明
modelstring机型
manustring厂商

响应

该接口将返回处理结果,其中 data 字段无数据。

获取当前账号在线客户端列表 未实现

该接口用于获取当前账号在线客户端列表。

API 端点

/get_online_clients

参数

字段类型说明
no_cachebool是否无视缓存

响应

字段类型说明
clientsObject<Device>在线客户端列表

Device

字段类型说明
app_idint64客户端ID
device_namestring设备名称
device_kindstring设备类型
+ + + diff --git a/api/contact.html b/api/contact.html new file mode 100644 index 00000000..b5646ec8 --- /dev/null +++ b/api/contact.html @@ -0,0 +1,262 @@ + + + + + + + + 联系人相关 | OpenShamrock + + + + + + +
跳至主要內容

联系人相关

大约 7 分钟

注意

对于 Shamrock 尚未实现的 API,会在标题添加标记 未实现

获取陌生人信息

该接口用于获取陌生人的信息。

API 端点

/get_stranger_info

参数

字段类型必须说明
user_idint64QQ 号

响应

注意

该 API 可能会返回不存在于以下表格中的字段,请不要作为参考使用。

字段类型说明
user_idint64QQ 号
nicknamestring昵称
ageint32年龄
sexstring性别
extobject扩展字段(一堆垃圾)

获取好友列表

该接口用于获取好友列表。

API 端点

/get_friend_list

参数

提示

该接口无输入参数,除 refresh 参数决定是否刷新数据。可能不是立即生效。

响应

该接口返回的 data 数据为数组,每个元素为一个好友的信息,具体如下。

字段类型说明
user_idint64QQ 号
user_namestring昵称
user_displaynamestring显示名
user_remarkstring备注
ageint32年龄
genderint32性别
group_idint64分组 ID
platformstring平台
term_typestring终端类型

获取单向好友列表 未实现

该接口用于获取单向好友列表。

API 端点

/get_unidirectional_friend_list

参数

提示

该 API 无需参数

响应

响应内容为 json 数组, 每个元素如下:

字段名数据类型说明
user_idint64QQ 号
nicknamestring昵称
sourcestring来源

获取群信息

该接口用于获取群信息。

API 端点

/get_group_info

参数

字段类型必须说明
group_idint64群号

响应

注意

该 API 可能会返回不存在于以下表格中的字段,请不要作为参考使用。

字段类型说明
group_idint64群号
group_namestring群名称
group_remarkstring群备注
group_uinint64群 Uin
adminsList<int64>管理员列表
class_textstring群分类
is_frozenbool是否冻结
max_memberint32最大成员数
max_member_countint32最大成员数
member_numint32成员数量
member_countint32成员数量

获取群列表

该接口用于获取群列表。

API 端点

/get_group_list

参数

提示

该 API 无需参数

响应

该接口返回的 data 数据为数组,每个元素为一个群的信息,具体如下。

字段类型说明
group_idint64群号
group_namestring群名称
group_remarkstring群备注
group_uinint64群 Uin
adminsList<int64>管理员列表
class_textstring群分类
is_frozenbool是否冻结
max_memberint32最大成员数
max_member_countint32最大成员数
member_numint32成员数量
member_countint32成员数量

获取群成员信息

该接口用于获取群成员信息。

API 端点

/get_group_member_info

参数

字段类型必须说明
group_idint64群号
user_idint64QQ 号

响应

字段类型说明
user_idint64QQ 号
group_idint64群号
user_namestring昵称
sexstring性别
titlestring专属头衔
title_expire_timeint64专属头衔过期时间戳
nicknamestring群昵称
user_displaynamestring显示名
distanceint32距离
honorList<int32>群荣誉
join_timeint64入群时间
last_active_timeint64最后发言时间
last_sent_timeint64最后发言时间
unique_namestring群头衔
areastring地区
levelstring成员等级
rolestring角色
unfriendlybool是否不良记录成员
card_changeablebool是否允许修改群名片

获取群成员列表

该接口用于获取群成员列表。

API 端点

/get_group_member_list

参数

字段类型必须说明
group_idint64群号

响应

该接口返回的 data 数据为数组,每个元素为一个群成员的信息,具体如下。

字段类型说明
user_idint64QQ 号
group_idint64群号
user_namestring昵称
sexstring性别
titlestring专属头衔
title_expire_timeint64专属头衔过期时间戳
nicknamestring群昵称
user_displaynamestring显示名
distanceint32距离
honorList<int32>群荣誉
join_timeint64入群时间
last_active_timeint64最后发言时间
last_sent_timeint64最后发言时间
unique_namestring群头衔
areastring地区
levelstring成员等级
rolestring角色
unfriendlybool是否不良记录成员
card_changeablebool是否允许修改群名片

获取群荣誉信息

该接口用于获取群荣誉信息。

API 端点

/get_group_honor_info

参数

字段类型必须说明
group_idint64群号

响应

字段类型说明
group_idint64群号
current_talkativeList<HonorInfo>当前龙王
talkative_listList<HonorInfo>历史龙王
performer_listList<HonorInfo>群聊之火
legend_listList<HonorInfo>群聊炽焰
strong_newbie_listList<HonorInfo>冒尖小春笋
emotion_listList<HonorInfo>快乐之源
allList<HonorInfo>全部荣誉

HonorInfo

字段类型说明
user_idint64QQ 号
nicknamestring昵称
avatarstring头像链接
day_countint32持续天数
idint32ID
descriptionstring描述

获取群系统消息

该接口用于获取群系统消息。

API 端点

/get_group_system_msg

响应

字段类型说明
invited_requestsList<InvitedRequest>邀请消息列表
join_requestsList<JoinRequest>进群消息列表

注意

如果列表不存在任何消息, 将返回 null

InvitedRequest

字段类型说明
request_idint64请求ID
invitor_uinint64邀请者
invitor_nickstring邀请者昵称
group_idint64群号
group_namestring群名
checkedbool是否已被处理
actorint64处理者, 未处理为0
requester_uinint64被邀请者ID
flagstringflag,用于处理请求

JoinRequest

字段类型说明
request_idint64请求ID
requester_uinint64请求者ID
requester_nickstring请求者昵称
messagestring验证消息
group_idint64群号
group_namestring群名
checkedbool是否已被处理
actorint64处理者, 未处理为0
flagstringflag,用于处理请求

获取好友系统消息

该接口用于获取好友系统消息。

API 端点

/get_friend_system_msg

响应

该接口返回的 data 数据为数组,每个元素为一个好友请求的系统信息,具体如下。

字段类型说明
request_idint64请求id
requester_uinint64请求者QQ号
requester_nickstring请求者昵称
sourcestring来源
messagestring附加消息
source_group_namestring来源群名称,仅当从群添加好友时存在
source_group_idint64来源群号,仅当从群添加好友时存在
sexstring请求者性别
agestring请求者年龄
msg_detailstring处理结果
statusstring可选值:已同意已拒绝,为空则表示尚未处理
flagstringflag,用于处理请求

获取精华消息列表

该接口用于获取精华消息列表。

API 端点

/get_essence_msg_list

参数

字段类型说明
group_idint64群号

响应

响应内容为 JSON 数组,每个元素如下:

字段名数据类型说明
sender_idint64发送者QQ 号
sender_nickstring发送者昵称
sender_timeint64消息发送时间
operator_idint64操作者QQ 号
operator_nickstring操作者昵称
operator_timeint64精华设置时间
message_idint32消息ID,可能为0表示找不到消息映射
message_seqint32消息seq

QQ是否在黑名单内

获取好友/陌生人是否处于黑名单列表。

API 端点

/is_blacklist_uin

参数

字段类型必须说明
user_idint64QQ账号

响应

字段类型说明
isbool是否是黑名单
+ + + diff --git a/api/dispose.html b/api/dispose.html new file mode 100644 index 00000000..d3cb3829 --- /dev/null +++ b/api/dispose.html @@ -0,0 +1,40 @@ + + + + + + + + 处理相关 | OpenShamrock + + + + + + +
跳至主要內容

处理相关

小于 1 分钟

注意

对于 Shamrock 尚未实现的 API,会在标题添加标记 未实现

处理加好友请求

该接口用于处理加好友请求。

API 端点

/set_friend_add_request

参数

字段名数据类型默认值说明
flagstring-加好友请求的 flag(需从上报的数据中获得)
approvebooleantrue是否同意请求
remarkstring添加后的好友备注(仅在同意时有效)

响应

该接口将返回处理结果,其中 data 字段无数据。

处理加群请求/邀请

该接口用于处理加群请求/邀请。

API 端点

/set_group_add_request

参数

字段名数据类型默认值说明
flagstring-加群请求的 flag(需从上报的数据中获得)
sub_type 或 typestring-addinvite, 请求类型(需要和上报消息中的 sub_type 字段相符)
approvebooleantrue是否同意请求/邀请
reasonstring拒绝理由(仅在拒绝时有效)

响应

该接口将返回处理结果,其中 data 字段无数据。

+ + + diff --git a/api/fav.html b/api/fav.html new file mode 100644 index 00000000..a7ab3500 --- /dev/null +++ b/api/fav.html @@ -0,0 +1,83 @@ + + + + + + + + QQ收藏 接口 | OpenShamrock + + + + + + +
跳至主要內容

QQ收藏 接口

大约 1 分钟

注意

这里的API处于实验性阶段,不会进行大量维护和更新,由于过于简单,如果需要某些功能可以自行PR!

获取收藏列表

获取收藏列表

API端点

/fav/get_item_list (HTTP)

fav.get_item_list (WebSocket)

参数

字段类型必须说明默认值
page_sizeint32获取的数量
categoryint32分类
start_posint32开始的位置

响应

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "items": [
+      {
+        "id": "1-1-9dec6664-dcb7-4b46-986f-xxxxxx",
+        "author_type": 2,
+        "author": 2806922524,
+        "author_name": "2806922524",
+        "group_name": "ˢʰᵃᵐʳᵒᶜᵏ",
+        "group_id": 333425833,
+        "client_version": "8.9.12820",
+        "time": 1703004793000
+      }
+    ]
+  },
+  "echo": ""
+}
+

获取指定收藏的内容

获取收藏内容

API端点

/fav/get_item_content (HTTP)

fav.get_item_content (WebSocket)

参数

字段类型必须说明默认值
idstringid

响应

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "content": "在想可不可以在手机上跑bot()"
+  },
+  "echo": ""
+}
+

添加文本收藏

添加一段文字到QQ收藏

API端点

/fav/add_text_msg (HTTP)

fav.add_text_msg (WebSocket)

参数

字段类型必须说明默认值
contentstring内容

响应

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "id": "xxxxxxxx"
+  },
+  "echo": ""
+}
+

添加图片收藏

添加一个图片到QQ收藏

API端点

/fav/add_image_msg (HTTP)

fav.add_image_msg (WebSocket)

参数

字段类型必须说明默认值
filestring图片base64或者绝对路径或者URL

响应

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "id": "xxxxxxxx"
+  },
+  "echo": ""
+}
+
+ + + diff --git a/api/file.html b/api/file.html new file mode 100644 index 00000000..cf3f2294 --- /dev/null +++ b/api/file.html @@ -0,0 +1,81 @@ + + + + + + + + 文件相关 | OpenShamrock + + + + + + +
跳至主要內容

文件相关

大约 4 分钟

注意

对于 Shamrock 尚未实现的 API,会在标题添加标记 未实现

上传私聊文件

该接口用于上传私聊文件。

注意

只能上传本地文件, 需要上传 http 文件的话请先下载至本地

API 端点

/upload_private_file

参数

字段类型说明
user_idint64目标
filestring本地文件路径文件base64文件url
namestring文件名称

注意

本地文件路径为绝对路径,文件base64为base64://开头,文件url则应该是正确的http请求地址。

响应

字段类型说明
msg_idint32消息id
bizidint32
md5stringMD5
file_idstring文件uuid

上传群文件

该接口用于上传群文件。

注意

只能上传本地文件, 需要上传 http 文件的话请先下载至本地

API 端点

/upload_group_file

参数

字段类型说明
group_idint64群号
filestring本地文件路径文件base64文件url
namestring文件名称

注意

本地文件路径为绝对路径,文件base64为base64://开头,文件url则应该是正确的http请求地址。

响应

字段类型说明
msg_idint32消息id
bizidint32
md5stringMD5
file_idstring文件uuid

注意

参数 folder在Shamrock不受支持。

删除群文件

该接口用于删除群文件。

API 端点

/delete_group_file

参数

字段类型说明
group_idint64群号
file_idstring文件ID 参考 File 对象
busidint32文件类型 参考 File 对象

提示

该 API 无响应数据

创建群文件文件夹

该接口用于创建群文件文件夹。

注意

仅能在根目录创建文件夹

API 端点

/create_group_file_folder

参数

字段类型说明
group_idint64群号
namestring群文件夹名字

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "folder_id": "/ad86c100-031d-4139-8cab-c6c661a413ba",
+    "parent_folder_id": "/",
+    "folder_name": "测试",
+    "create_time": 1706269735,
+    "modify_time": 1706269735,
+    "creator_uin": 1650114384,
+    "modifier_uin": 1650114384
+  },
+  "message": "成功",
+  "echo": 111
+}
+

重命名群文件夹

把已经存在的群文件夹改个名字。

API 端点

/rename_group_folder

字段类型说明
group_idint64群号
folder_idstring群文件夹ID
namestring群文件夹名字

响应解释

可通过返回的状态码判断重命名是否成功。

删除群文件文件夹

该接口用于删除群文件文件夹。

API 端点

/delete_group_folder

参数

字段类型说明
group_idint64群号
folder_idstring文件夹ID 参考 Folder 对象

响应解释

可通过返回的状态码判断删除是否成功。

获取群文件系统信息

该接口用于获取群文件系统信息。

API 端点

/get_group_file_system_info

参数

字段类型说明
group_idint64群号

响应

字段类型说明
file_countint32文件总数
limit_countint32文件上限
used_spaceint64已使用空间
total_spaceint64空间上限

获取群根目录文件列表

该接口用于获取群根目录文件列表。

API 端点

/get_group_root_files

参数

字段类型说明
group_idint64群号

响应

字段类型说明
filesList<File>文件列表
foldersList<Folder>文件夹列表

File

字段类型说明
group_idint32群号
file_idstring文件ID
file_namestring文件名
busidint32文件类型
file_sizeint64文件大小
upload_timeint64上传时间
dead_timeint64过期时间,永久文件恒为0
modify_timeint64最后修改时间
download_timesint32下载次数
uploaderint64上传者ID
uploader_namestring上传者名字
md5stringmd5
shastringsha
sha3stringsha3 可能获取不到

Folder

字段类型说明
group_idint32群号
folder_idstring文件夹ID
folder_namestring文件名
create_timeint64创建时间
creatorint64创建者
creator_namestring创建者名字
total_file_countint32子文件数量

获取群子目录文件列表

该接口用于获取群子目录文件列表。

API 端点

/get_group_files_by_folder

参数

字段类型说明
group_idint64群号
folder_idstring文件夹ID 参考 Folder 对象

响应

字段类型说明
filesFile[]文件列表
foldersFolder[]文件夹列表

获取群文件资源链接

该接口用于获取群文件资源链接。

API 端点

/get_group_file_url

参数

字段类型说明
group_idint64群号
file_idstring文件ID 参考 File 对象
busidint32文件类型 参考 File 对象

响应

字段类型说明
urlstring文件下载链接
+ + + diff --git a/api/group.html b/api/group.html new file mode 100644 index 00000000..d41f455e --- /dev/null +++ b/api/group.html @@ -0,0 +1,63 @@ + + + + + + + + 群聊相关 | OpenShamrock + + + + + + +
跳至主要內容

群聊相关

大约 5 分钟

注意

对于 Shamrock 尚未实现的 API,会在标题添加标记 未实现

设置群名

该接口用于设置群名。

API 端点

/set_group_name

参数

字段名数据类型说明
group_idint64群号
group_namestring新群名

提示

该 API 无响应数据

响应

该接口将返回处理结果,其中 data 字段无数据。。

设置群头像 未实现

该接口用于设置群头像。

API 端点

/set_group_portrait

参数

字段类型说明
group_idint64群号
filestring图片文件名
cacheint表示是否使用已缓存的文件

[1] file 参数支持以下几种格式:

  • 绝对路径, 例如 file:///sdcard/Pictures/shamrock.png, 格式使用 file URIopen in new window
  • 网络 URL, 例如 http://i1.piimg.com/567571/fdd6e7b6d93f1ef0.jpg
  • Base64 编码, 例如 base64://iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAIAAADJt1n/AAAAKElEQVQ4EWPk5+RmIBcwkasRpG9UM4mhNxpgowFGMARGEwnBIEJVAAAdBgBNAZf+QAAAAABJRU5ErkJggg==

[2] cache参数: 通过网络 URL 发送时有效, 1表示使用缓存, 0关闭关闭缓存, 默认 为1

设置群管理员

该接口用于设置群管理员。

API 端点

/set_group_admin

参数

字段类型必须说明
group_idint64群号
user_idint64QQ 号
enablebool是否设置

响应

该接口将返回处理结果,其中 data 字段无数据。。

设置群名片

该接口用于设置群成员名片。

API 端点

/set_group_card

参数

字段名数据类型默认值说明
group_idint64-群号
user_idint64-要设置的 QQ 号
cardstring群名片内容, 不填或空字符串表示删除群名片

提示

该 API 无响应数据

设置群聊备注

该接口用于设置群聊备注。

API 端点

/set_group_remark

参数

字段名数据类型默认值说明
group_idint64-群号
remarkstring群备注, 不填或空字符串表示删除群备注

提示

该 API 无响应数据

设置群组专属头衔

该接口用于设置群组专属头衔。

API 端点

/set_group_special_title

参数

字段类型必须说明
group_idint64群号
user_idint64QQ 号
special_titlestring头衔

响应

该接口将返回处理结果,其中 data 字段无数据。。

群单人禁言

该接口用于群单人禁言。

API 端点

/set_group_ban

参数

提示

duration0 时,将解除禁言。

字段类型必须说明
group_idint64群号
user_idint64QQ 号
durationint64禁言时长

响应

该接口将返回处理结果,其中 data 字段无数据。。

群全员禁言

该接口用于群全员禁言。

API 端点

/set_group_whole_ban

参数

字段名数据类型默认值说明
group_idint64-群号
enablebooleantrue是否禁言

提示

该 API 无响应数据

响应

该接口将返回处理结果,其中 data 字段无数据。。

设置精华消息

该接口用于设置精华消息。

API 端点

/set_essence_msg

参数

字段类型说明
message_idint32消息ID

提示

该 API 没有响应数据

移出精华消息

该接口用于移出精华消息。

API 端点

/delete_essence_msg

参数

字段类型说明
message_idint32消息ID

提示

该 API 没有响应数据

群打卡

该接口用于群打卡。

API 端点

/send_group_sign

参数

字段名数据类型说明
group_idint64群号

响应

该接口将返回处理结果,其中 data 字段无数据。

发送群公告

该接口用于发送群公告。

API 端点

/_send_group_notice

参数

字段名数据类型默认值说明
group_idint64群号
contentstring公告内容
imagestring图片(可选),支持base64、http(s)和本地路径

响应

该接口将返回处理结果,其中 data 字段无数据。

获取群公告

该接口用于获取群公告。

API 端点

/_get_group_notice

参数

字段名数据类型默认值说明
group_idint64群号

响应数据

data 的响应内容为 json 数组,每个元素内容如下:

字段类型说明
sender_idint64公告发表者
publish_timeint64公告发表时间
messageObject<Message>公告内容

message

字段类型说明
textstring公告内容
imagesList<Images>公告图片

images

字段类型说明
heightstring图片高度
widthstring图片宽度
idstring图片ID,可用https://gdynamic.qpic.cn/gdynamic/{id}/628获取

群组踢人

该接口用于群组踢人。

API 端点

/set_group_kick

参数

字段类型必须说明
group_idint64群号
user_idint64QQ 号
reject_add_requestbool是否拒绝再次加群

响应

该接口将返回处理结果,其中 data 字段无数据。

退出群组

该接口用于退出群组。

API 端点

/set_group_leave

参数

字段类型必须说明
group_idint64群号

响应

该接口将返回处理结果,其中 data 字段无数据。。

群戳一戳

该接口用于群戳一戳。

API 端点

/group_touch - 用于HTTP

/poke - 用于主动WebSocket与被动WebSocket

参数

字段类型必须说明
group_idint64群号
user_idint64QQ 号

响应

该接口将返回处理结果,其中 data 字段无数据。。

获取被禁言的群成员列表

用于获取群聊谁谁谁啊犯贱或者被二比滥权管理或者某群主时援交手滑禁言掉的人的列表。

API端点

/get_prohibited_member_list

参数

字段类型必须说明
group_idint64群号

响应

字段类型说明
user_idint64QQ 号
timeint64禁言结束时间

获取群 @全体成员 剩余次数

当机器人是管理员时可用

API端点

/get_group_at_all_remain

参数

字段类型必须说明
group_idint64群号

响应

字段类型说明
can_at_allbool是否可以 @全体成员
remain_at_all_count_for_groupint32群内所有管理当天剩余 @全体成员 次数
remain_at_all_count_for_uinint32Bot 当天剩余 @全体成员 次数

设置消息底部评论小表情

貌似是从别的地方抄的奇怪功能,目前版本(9.0.15)只在部分群聊进行灰度测试!

API 端点

/set_group_comment_face

参数

字段类型必须说明
group_idint64群号
msg_idint32消息ID
face_idint32表情ID
is_setbool是否设置或取消评论

响应

该接口将返回处理结果,其中 data 字段无数据。。

+ + + diff --git a/api/guild.html b/api/guild.html new file mode 100644 index 00000000..a42e5330 --- /dev/null +++ b/api/guild.html @@ -0,0 +1,369 @@ + + + + + + + + 频道相关 | OpenShamrock + + + + + + +
跳至主要內容

频道相关

大约 5 分钟

注意

对于 Shamrock 尚未实现的 API,会在标题添加标记 未实现

获取频道系统内BOT的资料

该接口用于获取频道系统内BOT的资料。

API 端点

/get_guild_service_profile

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "nickname": "田所浩二",
+    "tiny_id": 1145141919810,
+    "avatar_url": "http://thirdqq.qlogo.cn/g?b=oidb&k=***&kti=***&s=0&t=***"
+  },
+  "echo": 123446
+}
+

获取频道列表

获取频道列表,数据相比于Go-CQHTTP会有一点不一样。

API 端点

/get_guild_list

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "guild_list": [
+      {
+        "guild_id": 111111111111111,
+        "guild_name": "北京大学频道",
+        "guild_display_id": "abcdefg",
+        "profile": "北京大学交流频道",
+        "status": {
+          "is_enable": true,
+          "is_banned": false,
+          "is_frozen": false
+        },
+        "owner_id": 22222222222222,
+        "shutup_expire_time": 0,
+        "allow_search": true
+      }
+    ]
+  },
+  "message": "success",
+  "echo": 111
+}
+

通过访客获取频道元数据

获取频道元数据,例如当前成员数量之类。

API 端点

/get_guild_meta_by_guest

参数

字段类型说明
guild_iduint64频道ID

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "guild_id": 11111111111,
+    "guild_name": "北京大学交流频道",
+    "guild_profile": "",
+    "create_time": 1606878500,
+    "max_member_count": 100000,
+    "max_robot_count": 100,
+    "max_admin_count": 50,
+    "member_count": 6241,
+    "owner_id": 2222222221,
+    "guild_display_id": ""
+  },
+  "echo": 111
+}
+

获取子频道列表

获取一个频道的子频道(channel)列表。

API 端点

/get_guild_channel_list

参数

字段类型说明
guild_iduint64频道ID
refreshbool是否刷新数据,默认false

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "channel_list": [
+      {
+        "owner_guild_id": 1111111111111111111,
+        "channel_id": 639093000,
+        "channel_uin": 639093000,
+        "guild_id": "1111111111111111111",
+        "channel_type": 2,
+        "channel_name": "Test",
+        "create_time": 1606879350,
+        "max_member_count": 99,
+        "creator_tiny_id": 124105218677239793,
+        "talk_permission": 1,
+        "visible_type": 1,
+        "current_slow_mode": 0,
+        "slow_modes": [],
+        "icon_url": "",
+        "jump_switch": 0,
+        "jump_type": 0,
+        "jump_url": "",
+        "category_id": 0,
+        "my_talk_permission": 2
+      },
+      {
+        "owner_guild_id": 1111111111111111111,
+        "channel_id": 639093001,
+        "channel_uin": 639093001,
+        "guild_id": "1111111111111111111",
+        "channel_type": 1,
+        "channel_name": "闲聊吹水",
+        "create_time": 1606878501,
+        "max_member_count": 0,
+        "creator_tiny_id": 124105218677239793,
+        "talk_permission": 1,
+        "visible_type": 1,
+        "current_slow_mode": 0,
+        "slow_modes": [
+          {
+            "slow_mode_key": 0,
+            "slow_mode_text": "关闭",
+            "speak_frequency": 0,
+            "slow_mode_circle": 0
+          },
+          {
+            "slow_mode_key": 1,
+            "slow_mode_text": "每分钟1条",
+            "speak_frequency": 1,
+            "slow_mode_circle": 60
+          },
+          {
+            "slow_mode_key": 2,
+            "slow_mode_text": "每分钟2条",
+            "speak_frequency": 2,
+            "slow_mode_circle": 60
+          },
+          {
+            "slow_mode_key": 3,
+            "slow_mode_text": "每分钟5条",
+            "speak_frequency": 5,
+            "slow_mode_circle": 60
+          },
+          {
+            "slow_mode_key": 4,
+            "slow_mode_text": "每分钟10条",
+            "speak_frequency": 10,
+            "slow_mode_circle": 60
+          },
+          {
+            "slow_mode_key": 5,
+            "slow_mode_text": "每5分钟1条",
+            "speak_frequency": 1,
+            "slow_mode_circle": 300
+          },
+          {
+            "slow_mode_key": 6,
+            "slow_mode_text": "每10分钟1条",
+            "speak_frequency": 1,
+            "slow_mode_circle": 600
+          },
+          {
+            "slow_mode_key": 7,
+            "slow_mode_text": "每15分钟1条",
+            "speak_frequency": 1,
+            "slow_mode_circle": 900
+          },
+          {
+            "slow_mode_key": 8,
+            "slow_mode_text": "每30分钟1条",
+            "speak_frequency": 1,
+            "slow_mode_circle": 1800
+          },
+          {
+            "slow_mode_key": 9,
+            "slow_mode_text": "每1小时1条",
+            "speak_frequency": 1,
+            "slow_mode_circle": 3600
+          },
+          {
+            "slow_mode_key": 10,
+            "slow_mode_text": "每12小时1条",
+            "speak_frequency": 1,
+            "slow_mode_circle": 43200
+          },
+          {
+            "slow_mode_key": 11,
+            "slow_mode_text": "每24小时1条",
+            "speak_frequency": 1,
+            "slow_mode_circle": 86400
+          }
+        ],
+        "icon_url": "",
+        "jump_switch": 0,
+        "jump_type": 0,
+        "jump_url": "",
+        "category_id": 0,
+        "my_talk_permission": 2
+      }
+    ]
+  },
+  "message": "success",
+  "echo": 111
+}
+

已知子频道类型列表

类型说明
1文字频道
2语音频道
5直播频道
7主题频道

获取频道成员列表

获取一个频道成员列表,但是因为数据量大,可能需要分页。

API 端点

/get_guild_member_list

参数

字段类型说明
guild_iduint64频道ID
next_tokenstring不提供则从首页开始获取
allbool是否一次性获取完所有成员,默认false
refreshbool是否刷新数据,默认false

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "members": [
+      {
+        "tiny_id": 144115218185291865,
+        "title": "频道助手",
+        "nickname": "频道助手",
+        "role_id": 2,
+        "role_name": "小管家",
+        "role_color": 4294936110,
+        "join_time": 1606878501,
+        "robot_type": 1,
+        "type": 1,
+        "in_black": false,
+        "platform": 0
+      }
+    ],
+    "next_token": "0800100118032001",
+    "finished": true
+  },
+  "echo": ""
+}
+

单独获取频道成员资料

单独获取频道成员信息,附带有权限信息和身份组哦~!

API 端点

/get_guild_member_profile

参数

字段类型说明
guild_iduint64频道ID
user_iduint64成员tinyId

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "tiny_id": 123456,
+    "nickname": "***",
+    "avatar_url": "https://qqchannel-profile-1251316161.file.myqcloud.com/***",
+    "join_time": 1606878500,
+    "roles": [
+      {
+        "role_id": "4",
+        "role_name": "频道主",
+        "color": 4294917938,
+        "permission": [
+          {
+            "root_id": 10000,
+            "child_ids": [10001, 10002, 10003, 10004, 10005]
+          },
+          {
+            "root_id": 20000,
+            "child_ids": [
+              20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20009, 20010, 20011, 20012,
+              20013, 20014, 20015, 20018, 20019
+            ]
+          },
+          {
+            "root_id": 30000,
+            "child_ids": [30001, 30002, 30003, 30004, 30005, 30006, 30007, 90002]
+          },
+          {
+            "root_id": 40000,
+            "child_ids": [40001, 40002]
+          },
+          {
+            "root_id": 50000,
+            "child_ids": [50001]
+          },
+          {
+            "root_id": 60000,
+            "child_ids": [60001]
+          },
+          {
+            "root_id": 70000,
+            "child_ids": [70001, 70002, 70003, 70004, 70005, 70006, 70007]
+          },
+          {
+            "root_id": 80000,
+            "child_ids": [80001, 80002]
+          },
+          {
+            "root_id": 90000,
+            "child_ids": [90001, 30003]
+          },
+          {
+            "root_id": 100000,
+            "child_ids": [100001, 100002]
+          },
+          {
+            "root_id": 1,
+            "child_ids": [1001, 1002, 1003, 1004, 1005]
+          },
+          {
+            "root_id": 2,
+            "child_ids": [
+              2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014,
+              2015, 2016, 2017, 2018
+            ]
+          },
+          {
+            "root_id": 3,
+            "child_ids": [3001, 3002, 3003, 3004, 3005, 3006]
+          },
+          {
+            "root_id": 4,
+            "child_ids": [4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008]
+          },
+          {
+            "root_id": 5,
+            "child_ids": [5001]
+          },
+          {
+            "root_id": 6,
+            "child_ids": [6001, 6002, 6003]
+          }
+        ],
+        "type": 0,
+        "display_name": "频道主"
+      },
+      {
+        "role_id": "15",
+        "role_name": "15活跃值",
+        "color": 4278190080,
+        "permission": [],
+        "type": 100,
+        "display_name": ""
+      }
+    ]
+  },
+  "echo": 111
+}
+

发送信息到子频道

发送频道内信息,需要单独的API哦,不要使用/send_message去发频道消息,发不出去的~~

API 端点

/send_guild_channel_msg

参数

字段类型说明
guild_iduint64频道ID
channel_iduint64子频道ID
messagestring or Message消息体,可为消息段或者CQ码
auto_escapebool是否解析CQ码,true为不解析,默认false
retry_cntint32消息发送失败,最大重试次数,默认3
recall_durationint64自动撤回间隔(毫秒),默认不撤回

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "message_id": 1933593189,
+    "time": 1706909190
+  },
+  "echo": 111
+}
+

获取话题频道帖子

该API接口已经被遗弃!

获取频道帖子广场帖子

新的获取帖子广场的帖子哦!

API 端点

/get_guild_feeds

参数

字段类型说明
guild_iduint64频道ID
fromuint32开始获取的位置

响应示例

该请求携带了大量原生响应数据,无法详细介绍,请自行测试!

获取频道角色列表

获取身份组列表,包括隐藏的身份组哦~~

API 端点

/get_guild_roles

参数

字段类型说明
guild_iduint64频道ID

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "roles": [
+      {
+        "argb_color": 4286151052,
+        "disabled": false,
+        "independent": false,
+        "max_count": 1000,
+        "member_count": 0,
+        "owned": false,
+        "role_id": 1,
+        "role_name": "普通成员",
+        "permission": []
+      }
+    ]
+  },
+  "echo": 111
+}
+

获取频道消息

该接口不会实现,因为您可以调用/get_msg来获取来自频道的消息,无需实现一个专属的接口。

删除频道角色

删除一个身份组,首先,你得保证你有权限,因为这个API不会提供任何返回数据哦!

API 端点

/delete_guild_role

参数

字段类型说明
guild_iduint64频道ID
role_iduint64角色ID

响应

该 API 无响应数据

设置用户在频道中的角色

设置用户身份组。

API端点

/set_guild_member_role

参数

字段类型说明
guild_iduint64频道ID
role_iduint64角色ID
setbool设置还是移除,默认false
usersstring or vector<int64>批量设置用户s
user_idint64单独设置某个用户的身份

如果users是字符串那么其格式为123456,6656656526,2652656,以逗号分隔每个tinyId

修改频道角色

修改频道角色,暂不支持设置权限,如有需要请提交issue

API 端点

/update_guild_role

参数

字段类型说明
guild_iduint64频道ID
role_iduint64角色ID
namestring名称
colorint64颜色ARGB

响应

该 API 无响应数据

创建频道角色

创建频道身份组。

API 端点

/create_guild_role

参数

字段类型说明
guild_iduint64频道ID
namestring名称
colorint64颜色ARGB
initial_usersvector<int64>默认身份组成员

如果是HTTP请求,则initial_users使用字符串,以,为用户tiny_id分隔。

响应

字段类型说明
role_iduint64角色ID
+ + + diff --git a/api/index.html b/api/index.html new file mode 100644 index 00000000..fb1132e2 --- /dev/null +++ b/api/index.html @@ -0,0 +1,40 @@ + + + + + + + + 接口 | OpenShamrock + + + + + + +
跳至主要內容

接口

小于 1 分钟

+ + + diff --git a/api/message.html b/api/message.html new file mode 100644 index 00000000..b7a54163 --- /dev/null +++ b/api/message.html @@ -0,0 +1,129 @@ + + + + + + + + 消息相关 | OpenShamrock + + + + + + +
跳至主要內容

消息相关

大约 4 分钟

注意

对于 Shamrock 尚未实现的 API,会在标题添加标记 未实现

发送私聊消息

该接口用于发送私聊消息。

API 端点

/send_private_msg

参数

字段类型必须说明
user_idint64QQ 号
messagestring / object / array消息内容
auto_escapebool是否解析 CQ 码(true为不解析)。
recall_durationint64自动撤回时间间隔(毫秒)

message格式可为消息段object,或消息段组合array

响应

字段类型说明
message_idint32消息 ID
timeint64时间戳

发送群聊消息

该接口用于发送群聊消息。

API 端点

/send_group_msg

参数

字段类型必须说明
group_idint64群号
messagestring / object / array消息内容
auto_escapebool是否解析 CQ 码(true为不解析)。
recall_durationint64自动撤回时间间隔(毫秒)

message格式同/send_private_msg

响应

字段类型说明
message_idint32消息 ID
timeint64时间戳

发送消息

该接口用于发送消息。

API 端点

/send_msg

参数

字段类型必须说明
message_typestring消息类型
user_idint64QQ 号
group_idint64群号
discuss_idint64讨论组号
messagestring / object / array消息内容
auto_escapebool是否解析 CQ 码(true为不解析)。
recall_durationint64自动撤回时间间隔(毫秒)

message格式同/send_private_msg

注意

当前发送消息的 API 暂不支持发送讨论组消息。

响应

字段类型说明
message_idint32消息 ID
timeint64时间戳

获取消息

API 端点

/get_msg

参数

字段类型必须说明
message_idint32消息 ID

响应

字段类型说明
timeint64时间戳
message_typestring消息类型
message_idint32消息 ID
real_idint32真实 ID
senderObject<Sender>发送人信息
messageobject消息体
group_idint64群号
target_idint64消息目标(私聊)
peer_idint64消息接收者,群聊是群号,私聊时是目标QQ

peer_id是其他同类框架所表达的target_id!

Sender

字段类型说明
user_idint64QQ 号
nicknamestring昵称
sexstring性别
ageint32年龄
uidstringUID

撤回消息

该接口用于撤回消息。

API 端点

/delete_msg

参数

字段类型必须说明
message_idint32消息 ID

响应

该接口将返回处理结果,其中 data 字段无数据。。

获取历史消息

API 端点

/get_history_msg

参数

字段类型必须说明
message_typestring消息 类型
user_idint64私聊QQ
group_idint64群号
countint32获取的消息数量(默认为20)
message_seqint32起始消息的message_id(默认为0,表示从最后一条发言往前)

响应

字段类型说明
messagesMessage[]消息集

Message

字段类型说明
timeint64时间戳
message_typestring消息类型
message_idint32消息 ID
real_idint32真实 ID
senderObject<Sender>发送人信息
messageobject消息体
group_idint64群号
target_idint64消息目标(私聊)
peer_idint64消息接收者,群聊是群号,私聊时是目标QQ

peer_id是其他同类框架所表达的target_id!

获取群聊历史消息

API 端点

/get_group_msg_history

参数

字段类型必须说明
group_idint64群号
countint32获取的消息数量(默认为20)
message_seqint32起始消息的message_id(默认为0,表示从最后一条发言往前)

响应

字段类型说明
messagesMessage[]消息集

清除本地缓存消息

该接口用于清除本地消息缓存。

API 端点

/clear_msgs

参数

字段类型必须说明
message_typestring消息 类型
user_idint64私聊QQ
group_idint64群号

响应

该接口将返回处理结果,其中 data 字段无数据。

获取合并转发消息内容

获取合并转发内容

API 端点

/get_forward_msg

参数

字段类型必须说明
idstring消息资源ID(卡片消息里面的resId)

由于QQ内部错误,该接口可能导致闪退等问题的出现!一般是闪退一次后再次重新启动便不再闪退,但是可能无法获取合并转发的内容!

响应

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "messages": [
+      {
+        "time": 1699375697,
+        "message_type": "private",
+        "message_id": 123456,
+        "real_id": 0,
+        "sender": {
+          "user_id": 114514,
+          "nickname": "伏秋洛~",
+          "sex": "unknown",
+          "age": 0,
+          "uid": "u_xxxx"
+        },
+        "message": [
+          {
+            "type": "text",
+            "data": {
+              "text": "aaaaaaaaaa"
+            }
+          }
+        ],
+        "peer_id": 114514,
+        "target_id": 114514
+      }
+    ]
+  },
+  "echo": ""
+}
+

发送群聊合并转发

发送群聊合并转发。

API 端点

/send_group_forward_msg

参数

字段类型必须说明
group_idint64发送到的目标群号
messagesfoward message[]合并转发消息集

响应

由于QQ限制,该接口的响应结果暂不具备意义,其中:message_id不匹配、forward_id为空。

字段类型说明
message_idint32消息 ID
forward_idint32转发 ID
{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "message_id": 251425915,
+    "forward_id": ""
+  }
+}
+

示例

直接引用消息的合并转发,id为消息id

[
+  {
+    "type": "node",
+    "data": {
+      "id": "123"
+    }
+  },
+  {
+    "type": "node",
+    "data": {
+      "id": "456"
+    }
+  }
+]
+

注意

Shamrock 不同于 go-cqhttp ,消息节点无法自定义发送者QQ号(设置头像)与昵称。

自定义消息合并转发:

[
+  {
+    "type": "node",
+    "data": {
+      "content": [
+        {
+          "type": "text",
+          "data": {
+            "text": "测试消息1"
+          }
+        }
+      ]
+    }
+  },
+  {
+    "type": "node",
+    "data": {
+      "content": "[CQ:image,file=xxxxx]测试消息2"
+    }
+  }
+]
+

引用自定义混合合并转发:

[
+  {
+    "type": "node",
+    "data": {
+      "content": "我是自定义消息"
+    }
+  },
+  {
+    "type": "node",
+    "data": {
+      "id": "123"
+    }
+  }
+]
+

发送私聊合并转发

发送私聊合并转发。

API 端点

/send_private_forward_msg

参数

字段类型必须说明
user_idint64发送到的目标QQ
messagesfoward message[]合并转发消息集

响应

/send_private_forward_msg

+ + + diff --git a/api/other.html b/api/other.html new file mode 100644 index 00000000..ce52827f --- /dev/null +++ b/api/other.html @@ -0,0 +1,254 @@ + + + + + + + + 其他接口 | OpenShamrock + + + + + + +
跳至主要內容

其他接口

大约 3 分钟

获取城市ADCode

API 端点

/get_weather_city_code

参数

字段类型必须说明
citystring城市

响应

[
+  {
+    "adcode": 10000,
+    "province": "广西",
+    "city": "柳州"
+  }
+]
+

获取天气

该接口用于获取天气,该接口调用来自QQ官方服务。

API 端点

/get_weather

参数

字段类型必须说明
codestringADCode
citystring城市

响应

{
+  "weatherInfo": {
+    "all_astro": [],
+    "lifeindex_forecast_list": [],
+    "weekly_astro": [],
+    "ret": 0,
+    "weather_info": {
+      "temper": "16",
+      "air_humidity": "98",
+      "wind_power": "微风",
+      "wind_direct": "西南风",
+      "weather": "多云",
+      "pubtime": "01:40",
+      "updatetime": 1695664205,
+      "weather_type": "多云",
+      "weather_type_id": "202",
+      "type_id_new": 2,
+      "concrete_type": 2,
+      "sunrise": "06:05",
+      "sunset": "18:06"
+    },
+    "air_info": null,
+    "forecast_list": {
+      "weatherForecast": [
+        {
+          "day_weather": "阴",
+          "night_weather": "多云",
+          "day_temper": "22",
+          "night_temper": "15",
+          "day_wind_direct": "西南风",
+          "night_wind_direct": "变向风",
+          "day_wind_power": "微风",
+          "night_wind_power": "微风",
+          "sunrise_time": "06:05",
+          "sunset_time": "18:06",
+          "pubtime": "202309251800",
+          "day": 0,
+          "day_weather_type": "阴天",
+          "night_weather_type": "多云",
+          "day_weather_type_id": "203",
+          "night_weather_type_id": "202",
+          "day_type_id_new": 3,
+          "day_concrete_type": 3,
+          "night_type_id_new": 2,
+          "night_concrete_type": 2,
+          "pm": "82",
+          "wind_power_desc": ""
+        },
+        ...
+      ],
+      "updatetime": 1695664205,
+      "tomorrowPrompt": "",
+      "weeklyPrompt": ""
+    },
+    "forecast": {
+      "day_weather": "多云",
+      "night_weather": "晴",
+      "day_temper": "24",
+      "night_temper": "16",
+      "day_wind_direct": "变向风",
+      "night_wind_direct": "变向风",
+      "day_wind_power": "微风",
+      "night_wind_power": "微风",
+      "sunrise_time": "06:06",
+      "sunset_time": "18:04",
+      "pubtime": "202309251800",
+      "day": 1,
+      "day_weather_type": "多云",
+      "night_weather_type": "晴",
+      "day_weather_type_id": "202",
+      "night_weather_type_id": "201",
+      "day_type_id_new": 2,
+      "day_concrete_type": 2,
+      "night_type_id_new": 1,
+      "night_concrete_type": 1,
+      "pm": "146",
+      "wind_power_desc": ""
+    },
+    "hourinfo_list": null,
+    "almanac": "",
+    "warning_list": {
+      "lst_warning": [],
+      "last_proc_time": 0
+    },
+    "astro": null,
+    "city": "北京",
+    "area": "",
+    "adcode": 110000,
+    "area_id": 101010100,
+    "en_name": "Beijing",
+    "update_time": 1695664205,
+    "tips_list": null,
+    "lifeindex_list": null,
+    "current_time": 1695664515,
+    "user_weekly_astro": null,
+    "weekly_summary": null
+  },
+  "qrcode": "data:image/png;base64,...",
+  "poster": "",
+  "share": {
+    "data": {
+      "app": "com.tencent.weather.share",
+      "config": {
+        "autosize": 0,
+        "ctime": 1695664515,
+        "forward": 0,
+        "round": 0,
+        "token": "49441099828d62f0ded8112849bce839"
+      },
+      "desc": "",
+      "meta": {
+        "share": {
+          "adcode": 110000,
+          "air_info": null,
+          "area": "",
+          "city": "北京",
+          "current_time": 1695664515,
+          "forecast_list": {
+            "tomorrowPrompt": "",
+            "updatetime": 1695664205,
+            "weatherForecast": [
+              {
+                "day": 0,
+                "day_concrete_type": 3,
+                "day_temper": "22",
+                "day_type_id_new": 3,
+                "day_weather": "阴",
+                "day_weather_type": "阴天",
+                "day_weather_type_id": "203",
+                "day_wind_direct": "西南风",
+                "day_wind_power": "微风",
+                "night_concrete_type": 2,
+                "night_temper": "15",
+                "night_type_id_new": 2,
+                "night_weather": "多云",
+                "night_weather_type": "多云",
+                "night_weather_type_id": "202",
+                "night_wind_direct": "变向风",
+                "night_wind_power": "微风",
+                "pm": "82",
+                "pubtime": "202309251800",
+                "sunrise_time": "06:05",
+                "sunset_time": "18:06",
+                "wind_power_desc": ""
+              },
+              ...
+            ],
+            "weeklyPrompt": ""
+          },
+          "update_time": 1695664205,
+          "weather_info": {
+            "air_humidity": "98",
+            "concrete_type": 2,
+            "pubtime": "01:40",
+            "sunrise": "06:05",
+            "sunset": "18:06",
+            "temper": "16",
+            "type_id_new": 2,
+            "updatetime": 1695664205,
+            "weather": "多云",
+            "weather_type": "多云",
+            "weather_type_id": "202",
+            "wind_direct": "西南风",
+            "wind_power": "微风"
+          }
+        }
+      },
+      "prompt": "[分享]北京 多云 16°",
+      "ver": "1.0.0.1",
+      "view": "share"
+    },
+    "code": 0
+  }
+}
+

[实验] 上传群图片

该接口用于上传群聊图片, 注意该接口是上传群消息的图片,不是群文件,也不是群相册。

API 端点

/upload_group_image

请求类型

POST

参数

字段类型必须说明
picstring图片base64
senderint64QQ
troopint64图片发送到的群聊

API 端点

get_cookies

参数

字段类型必须说明
domainstring域名

响应

字段类型说明
cookiesstring指定域名下的 Cookie

获取 CSRF 令牌

API 端点

get_csrf_token

参数

字段类型必须说明
domainstring域名

响应

字段类型说明
tokenstring指定域名下的 CSRF 令牌

获取Cookie

API 端点

get_cookies

参数

字段类型必须说明
domainstring域名

响应

字段类型说明
cookiesstring指定域名下的 Cookie

API 端点

get_credentials

参数

字段类型必须说明
domainstring域名

响应

字段类型说明
cookiesstring指定域名下的 Cookie
tokenstring指定域名下的 CSRF 令牌
+ + + diff --git a/api/request-response.html b/api/request-response.html new file mode 100644 index 00000000..fd1227e0 --- /dev/null +++ b/api/request-response.html @@ -0,0 +1,68 @@ + + + + + + + + 请求与响应 | OpenShamrock + + + + + + +
跳至主要內容

请求与响应

大约 2 分钟

提示

Shamrock 为您提供了一个支持 OneBot 标准的 HTTP API。
您可以通过发送 HTTP 请求来与 Shamrock 进行交互。

请求

提示

Shamrock 目前支持 GET 和 POST 两种请求方式。
在大部分情况下,您可以使用 GET 请求来与 Shamrock 进行交互。
但是,如果您需要向 Shamrock 发送大量数据,或者需要向 Shamrock 发送二进制数据,您需要使用 POST 请求。

GET 请求

GET 请求的 URL 由以下部分组成:

http://<host>:<port>/<endpoint>?<params>
+

链接中的含义如下:

  • <host>:Shamrock 的 IP 地址或域名
  • <port>:Shamrock 的 HTTP API 端口
  • <endpoint>:Shamrock 的 HTTP API 端点
  • <params>:HTTP GET 请求的参数

POST 请求

POST 请求的 URL 由以下部分组成:

http://<host>:<port>/<endpoint>
+

链接中的含义如下:

  • <host>:Shamrock 的 IP 地址或域名
  • <port>:Shamrock 的 HTTP API 端口
  • <endpoint>:Shamrock 的 HTTP API 端点

请求格式

POST 请求的数据格式为 JSON

{
+  "param1": "value1",
+  "param2": "value2",
+  ...
+}
+

POST 请求的数据格式为表单

param1=value1&param2=value2&...
+

大多数情况下,推荐使用 JSON 格式的 POST 请求。

WebSocket 请求

Shamrock 支持使用 WebSocket 进行通信。

可选的 WebSocket 地址有两种:

  • ws://<host>:<port>
  • ws://<host>:<port>/api

区别在于,/ 除了发送和响应 API 请求外,还支持事件上报功能。

请求格式

Shamrock 使用 WebSocket 时,请求的数据格式为 JSON

{
+  "action": "send_private_msg", // 请求 API 端点
+  "params": {
+    // 请求参数
+    "user_id": 10000,
+    "message": "hello"
+  },
+  "echo": "123456" // 自定义的回显字段
+}
+

对于 echo 字段,Shamrock 会在响应中原样返回。

响应

Shamrock 的响应格式为 JSON

{
+  "status": "ok", // 状态,ok 为成功,其他将在下文中详细说明
+  "retcode": 0, // 返回码,0 为成功,非 0 为失败
+  "msg": "", // 错误信息,仅在 API 调用失败时出现
+  "wording": "", // 对错误信息的描述,仅在 API 调用失败时出现
+  "data": {
+    // 响应数据
+    "message_id": 123456
+  },
+  "echo": "123456" // 请求中的回显字段
+}
+

状态

Shamrock 的响应状态有以下几种:

  • ok:成功
  • failed:失败
+ + + diff --git a/api/resources.html b/api/resources.html new file mode 100644 index 00000000..ccc42a04 --- /dev/null +++ b/api/resources.html @@ -0,0 +1,40 @@ + + + + + + + + 资源相关 | OpenShamrock + + + + + + +
跳至主要內容

资源相关

大约 2 分钟

注意

对于 Shamrock 尚未实现的 API,会在标题添加标记 未实现

获取图片

该接口用于获取图片,只能获取已缓存的图片。

API 端点

/get_image

参数

字段类型必须说明
filestring文件 MD5

响应

字段类型说明
sizeint64文件大小
urlstring文件 URL
filenamestring文件 名称

检查是否可以发送图片 未实现

该接口用于检查是否可以发送图片。

API 端点

/can_send_image

参数

提示

该 API 无需参数

响应

字段名数据类型说明
yesboolean是或否

图片 OCR 未实现

该接口用于图片 OCR。

API 端点

/ocr_image

参数

字段类型说明
imagestring图片ID

响应

字段类型说明
textsList<TextDetection>OCR结果
languagestring语言

TextDetection

字段类型说明
textstring文本
confidenceint32置信度
coordinatesvector2[]二维数组表示的坐标

获取语音

该接口用于获取语音。

API 端点

/get_record

参数

字段类型必须说明
filestring文件 MD5
out_formatstring输出格式

响应

字段类型说明
filestring文件路径
urlstring文件 URL

检查是否可以发送语音 未实现

该接口用于检查是否可以发送语音。

API 端点

/can_send_record

参数

提示

该 API 无需参数

响应

字段名数据类型说明
yesboolean是或否

API 端点

/get_record

提示

要使用此接口, 通常需要安装 ffmpeg, 请参考 OneBot 实现的相关说明。

参数

字段名数据类型默认值说明
filestring-收到的语音文件名(消息段的 file 参数), 如 0B38145AA44505000B38145AA4450500.silk
out_formatstring-要转换到的格式, 目前支持 mp3amrwmam4aspxoggwavflac

响应

字段名数据类型说明
filestring转换后的语音文件路径, 如 /home/somebody/cqhttp/data/record/0B38145AA44505000B38145AA4450500.mp3

获取文件 未实现

该接口用于获取文件。

获取视频 未实现

该接口用于获取视频。

获取缩略图 未实现

该接口用于获取缩略图。

+ + + diff --git a/api/shamrock.html b/api/shamrock.html new file mode 100644 index 00000000..a2cd9240 --- /dev/null +++ b/api/shamrock.html @@ -0,0 +1,65 @@ + + + + + + + + Shamrock 接口 | OpenShamrock + + + + + + +
跳至主要內容

Shamrock 接口

大约 3 分钟

切换账号

某个账号因为某种原因寄了,允许切换备用能源!

API端点

/switch_account

参数

字段类型必须说明默认值
user_idint64QQ

响应

是否正常执行切换账号请求的响应。

上传文件到缓存目录 (HTTP)

API 端点

/upload_file

注意

该接口仅仅为HTTP POST提供,WebSocket请使用另外一个。

参数

file格式上传文件,不要使用binary

响应

{
+  "file": "/scard/Android/data/com.tencent.mobileqq/Tencent/Shamrock/xxxx"
+}
+

上传文件到缓存目录 (WebSocket + HTTP)

API 端点

/upload_file_to_shamrock

注意

该接口仅仅为WebSocket提供。

参数

名称类型作用
md5string文件hex格式的md5值,32长度的字符串,整个文件的md5
offsetuint64文件分段上传偏移,默认值为0,从头上传
chunkstring文件分段上传数据块(base64),无需开头base64://
file_sizeuint64总文件大小

响应数据

名称类型作用
file_sizeuint64总文件大小
finishbool是否完成上传
pathstring该文件在安卓系统(shamrock环境)的路径

让Shamrock下载文件到缓存目录

用法二选一:

1.仅发送url,由Shamrock自己访问该url来下载文件

2.仅发送文件base64,Shamrock解码后直接转存为文件

url和base64至少一个不能为空

同时发送url和base64时,使用url

API 端点

/download_file

参数

字段类型必须说明默认值
urlstring下载地址
namestring文件名称文件md5
rootstring保存文件的根目录,注意请确保QQ可以访问Shamrock缓存目录
base64string文件base64内容
thread_cntint32下载的线程数量
headersstring or array请求头

headers为string时示例

"headers": "User-Agent=YOUR_UA[\r\n]Referer=https://www.baidu.com"
+

headers为array时示例

"headers": [
+    "User-Agent=YOUR_UA",
+    "Referer=https://www.baidu.com"
+]
+

[\r\n] 为换行符, 使用http请求时请注意编码

响应

{
+  "file": "/scard/Android/data/com.tencent.mobileqq/Tencent/Shamrock/xxxx"
+}
+

通过这个API下载的文件能直接放入CQ码作为图片发送

调用后会阻塞直到下载完成后才会返回数据,请注意下载大文件时的超时

清除缓存

API 端点

clean_cache

参数

该接口没有参数

响应

{
+  "status": "ok",
+  "retcode": 0
+}
+

获取手机电池信息

API 端点

/get_device_battery

响应

{
+  "battery": 44,
+  "scale": 3102000,
+  "status": 2
+}
+

获取Shamerock启动时间

API 端点

/get_start_time

请求类型

POST | GET | 不支持WS

响应

{
+  "status": "ok",
+  "retcode": 0,
+  "data": 1696749716155
+}
+

获取Shamrock日志

API 端点

/log

请求类型

POST | GET | 不支持WS

参数

字段类型必须说明默认值
startint32开始的行
recentbool是否只显示最近的日志false

远程Shell执行

该接口默认关闭,需要在实验室设置手动打开!注意,该接口可能导致您的隐私数据泄露,请勿公开在未知的网络,或者泄露您的token。

请求类型

POST

参数

字段类型必须说明默认值
cmdarray 或 string命令内容
dirstring当前所处的目录

关闭Shamrock

API 端点

/shut

请求类型

POST | GET | 不支持WS

响应

无响应

获取所有支持的动作

API 端点

/get_supported_actions

响应

{ "status": "ok", "retcode": 0, "data": [ "set_group_ban", "clean_cache", "clear_msgs", "create_group_file_folder", "delete_essence_message", "delete_essence_msg", "delete_group_file", "delete_group_folder", "delete_msg", "delete_message", "download_file", "fav.add_image_msg", "fav.add_text_msg", "fav.get_item_content", "fav.get_item_list", "get_csrf_token", "get_cookie", "get_cookies", "get_credentials", "get_device_battery", "get_essence_message_list", "get_essence_msg_list", "get_forward_msg", "get_friend_list", "get_friend_system_msg", "get_group_file_system_info", "get_group_file_url", "get_group_msg_history", "get_group_notice", "_get_group_notice", "get_group_at_all_remain", "get_group_root_files", "get_group_files_by_folder", "get_group_system_msg", "get_guild_list", "get_guild_service_profile", "get_history_msg", "get_http_cookies", "get_image", "get_latest_events", "get_login_info", "get_model_show", "_get_model_show", "get_msg", "get_message", "get_not_joined_group_info", "_get_online_clients", "get_profile_card", "get_user_info", "get_prohibited_member_list", "get_record", "get_self_info", "status", "get_status", "_get_stranger_info", "get_stranger_info", "get_supported_actions", "get_troop_honor_info", "get_group_honor_info", "get_group_info", "get_group_list", "get_group_member_info", "get_group_member_list", "get_uid", "get_uin_by_uid", "get_version", "get_version_info", "get_weather", "get_weather_city_code", "poke", "is_blacklist_uin", "kick_group_member", "set_group_kick", "set_group_leave", "leave_group", "set_group_card", "set_group_name", ".handle_quick_operation_async", "rename_group_folder", "restart_me", "sanc_qrcode", "send_forward_msg", "send_group_forward_msg", "send_group_msg", "send_group_message", "send_group_announcement", "send_group_notice", "send_group_sign", "send_like", "send_message", "send_msg", "send_private_forward_msg", "send_private_message", "send_private_msg", "set_essence_message", "set_essence_msg", "set_friend_add_request", "set_group_add_request", "set_group_admin", "set_group_comment_face", "set_group_special_title", "set_group_whole_ban", "_set_model_show", "set_qq_profile", "switch_account", "test", "upload_group_file", "upload_private_file" ], "echo": "" }

+ + + diff --git a/api/user.html b/api/user.html new file mode 100644 index 00000000..4374f000 --- /dev/null +++ b/api/user.html @@ -0,0 +1,40 @@ + + + + + + + + 用户相关 | OpenShamrock + + + + + + +
跳至主要內容

用户相关

小于 1 分钟

注意

对于 Shamrock 尚未实现的 API,会在标题添加标记 未实现

删除好友 未实现

该接口用于删除好友。

API 端点

/delete_friend

参数

字段名数据类型默认值说明
user_idint64-好友 QQ 号

响应

该接口将返回处理结果,其中 data 字段无数据。

删除单向好友 未实现

该接口用于删除单向好友。

API 端点

/delete_unidirectional_friend

参数

字段类型说明
user_idint64单向好友QQ号

响应

该接口将返回处理结果,其中 data 字段无数据。

点赞资料卡

API 端点

send_like

参数

字段类型必须说明
timeint32点赞次数
user_idint64点赞的目标用户

响应

该接口将返回处理结果,其中 data 字段无数据。

+ + + diff --git a/assets/404.html-8fe39d90.js b/assets/404.html-8fe39d90.js new file mode 100644 index 00000000..6768af24 --- /dev/null +++ b/assets/404.html-8fe39d90.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as t,c}from"./app-edf8b1e7.js";const o={};function r(_,n){return t(),c("div")}const f=e(o,[["render",r],["__file","404.html.vue"]]);export{f as default}; diff --git a/assets/404.html-f04ced3e.js b/assets/404.html-f04ced3e.js new file mode 100644 index 00000000..33005046 --- /dev/null +++ b/assets/404.html-f04ced3e.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-3706649a","path":"/404.html","title":"","lang":"zh-CN","frontmatter":{"layout":"NotFound"},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":""}');export{t as data}; diff --git a/assets/SearchResult-67b7b903.js b/assets/SearchResult-67b7b903.js new file mode 100644 index 00000000..da2acda2 --- /dev/null +++ b/assets/SearchResult-67b7b903.js @@ -0,0 +1 @@ +import{u as I,f as ee,g as j,h as B,Z as ae,i as le,t as se,j as x,k as D,l as te,m as M,n as l,p as _,q as F,s as U,v as re,x as ue,y as ie,z as ne,R as oe,O as ce,A as ve,B as pe,C as he,D as ye,E as de,F as me,G as b,H as fe}from"./app-edf8b1e7.js";const ge="SEARCH_PRO_QUERY_HISTORY",y=I(ge,[]),He=()=>{const{queryHistoryCount:r}=b,n=r>0;return{enabled:n,queryHistory:y,addQueryHistory:t=>{n&&(y.value.length{y.value=[...y.value.slice(0,t),...y.value.slice(t+1)]}}},Re="SEARCH_PRO_RESULT_HISTORY",{resultHistoryCount:E}=b,d=I(Re,[]),Qe=()=>{const r=j(),n=E>0,t=s=>r.resolve({name:s.key,..."anchor"in s?{hash:`#${s.anchor}`}:{}}).fullPath;return{enabled:n,resultHistory:d,addResultHistory:s=>{if(n){const u={link:t(s),display:s.display};"header"in s&&(u.header=s.header),d.value.length{d.value=[...d.value.slice(0,s),...d.value.slice(s+1)]}}},ke=r=>{const n=oe(),t=B(),{search:s,terminate:u}=ce(),f=x(!1),g=ve([]);return pe(()=>{const m=()=>{g.value=[],f.value=!1},w=fe(H=>{f.value=!0,H?s({type:"search",query:H,locale:t.value,options:n}).then(h=>{g.value=h,f.value=!1}).catch(h=>{console.error(h),m()}):m()},b.searchDelay);M([r,t],()=>w(r.value),{immediate:!0}),he(()=>{u()})}),{searching:f,results:g}};var we=ee({name:"SearchResult",props:{query:{type:String,required:!0},isFocusing:Boolean},emits:["close","updateQuery"],setup(r,{emit:n}){const t=j(),s=B(),u=ae(le),{enabled:f,addQueryHistory:g,queryHistory:m,removeQueryHistory:w}=He(),{enabled:H,resultHistory:h,addResultHistory:O,removeResultHistory:Y}=Qe(),P=f||H,S=se(r,"query"),{results:R,searching:z}=ke(S),o=x({isQuery:!0,index:0}),p=x(0),c=x(0),L=D(()=>P&&(m.value.length>0||h.value.length>0)),C=D(()=>R.value.length>0),q=D(()=>R.value[p.value]||null),T=e=>t.resolve({name:e.key,..."anchor"in e?{hash:`#${e.anchor}`}:{}}).fullPath,G=()=>{const{isQuery:e,index:a}=o.value;a===0?o.value={isQuery:!e,index:e?h.value.length-1:m.value.length-1}:o.value={isQuery:e,index:a-1}},V=()=>{const{isQuery:e,index:a}=o.value;a===(e?m.value.length-1:h.value.length-1)?o.value={isQuery:!e,index:0}:o.value={isQuery:e,index:a+1}},Z=()=>{p.value=p.value>0?p.value-1:R.value.length-1,c.value=q.value.contents.length-1},J=()=>{p.value=p.value{c.value{c.value>0?c.value=c.value-1:Z()},A=e=>e.map(a=>ye(a)?a:l(a[0],a[1])),W=e=>{if(e.type==="customField"){const a=de[e.index]||"$content",[i,k=""]=me(a)?a[s.value].split("$content"):a.split("$content");return e.display.map(v=>l("div",A([i,...v,k])))}return e.display.map(a=>l("div",A(a)))},Q=()=>{p.value=0,c.value=0,n("updateQuery",""),n("close")};return te("keydown",e=>{if(r.isFocusing){if(C.value){if(e.key==="ArrowUp")N();else if(e.key==="ArrowDown")K();else if(e.key==="Enter"){const a=q.value.contents[c.value],i=T(a);g(r.query),O(a),t.push(i),Q()}}else if(H){if(e.key==="ArrowUp")G();else if(e.key==="ArrowDown")V();else if(e.key==="Enter"){const{index:a}=o.value;o.value.isQuery?(n("updateQuery",m.value[a]),e.preventDefault()):(t.push(h.value[a].link),Q())}}}}),M([p,c],()=>{var e;(e=document.querySelector(".search-pro-result-list-item.active .search-pro-result-item.active"))==null||e.scrollIntoView(!1)},{flush:"post"}),()=>l("div",{class:["search-pro-result-wrapper",{empty:S.value?!C.value:!L.value}],id:"search-pro-results"},S.value===""?P?L.value?[f?l("ul",{class:"search-pro-result-list"},l("li",{class:"search-pro-result-list-item"},[l("div",{class:"search-pro-result-title"},u.value.history),m.value.map((e,a)=>l("div",{class:["search-pro-result-item",{active:o.value.isQuery&&o.value.index===a}],onClick:()=>{n("updateQuery",e)}},[l(_,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},e),l("button",{class:"search-pro-remove-icon",innerHTML:F,onClick:i=>{i.preventDefault(),i.stopPropagation(),w(a)}})]))])):null,H?l("ul",{class:"search-pro-result-list"},l("li",{class:"search-pro-result-list-item"},[l("div",{class:"search-pro-result-title"},u.value.history),h.value.map((e,a)=>l(U,{to:e.link,class:["search-pro-result-item",{active:!o.value.isQuery&&o.value.index===a}],onClick:()=>{Q()}},()=>[l(_,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},[e.header?l("div",{class:"content-header"},e.header):null,l("div",e.display.map(i=>A(i)).flat())]),l("button",{class:"search-pro-remove-icon",innerHTML:F,onClick:i=>{i.preventDefault(),i.stopPropagation(),Y(a)}})]))])):null]:u.value.emptyHistory:u.value.emptyResult:z.value?l(re,{hint:u.value.searching}):C.value?l("ul",{class:"search-pro-result-list"},R.value.map(({title:e,contents:a},i)=>{const k=p.value===i;return l("li",{class:["search-pro-result-list-item",{active:k}]},[l("div",{class:"search-pro-result-title"},e||u.value.defaultTitle),a.map((v,X)=>{const $=k&&c.value===X;return l(U,{to:T(v),class:["search-pro-result-item",{active:$,"aria-selected":$}],onClick:()=>{g(r.query),O(v),Q()}},()=>[v.type==="text"?null:l(v.type==="title"?ue:v.type==="heading"?ie:ne,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},[v.type==="text"&&v.header?l("div",{class:"content-header"},v.header):null,l("div",W(v))])])})])})):u.value.emptyResult)}});export{we as default}; diff --git a/assets/account.html-2b51ead3.js b/assets/account.html-2b51ead3.js new file mode 100644 index 00000000..d99adabf --- /dev/null +++ b/assets/account.html-2b51ead3.js @@ -0,0 +1,44 @@ +import{_ as c}from"./plugin-vue_export-helper-c27b6911.js";import{r as i,o as p,c as h,a as t,d as n,b as d,w as a,e as l}from"./app-edf8b1e7.js";const u={},b={class:"hint-container warning"},k=t("p",{class:"hint-container-title"},"注意",-1),m=l('

获取登录号信息

该接口用于获取 QQ 用户的登录号信息。

API 端点

/get_login_info

参数

提示

该接口无输入参数。

响应

',7),v=t("table",null,[t("thead",null,[t("tr",null,[t("th",null,"字段"),t("th",null,"类型"),t("th",null,"说明")])]),t("tbody",null,[t("tr",null,[t("td",null,"user_id"),t("td",null,"int64"),t("td",null,"QQ 号")]),t("tr",null,[t("td",null,"nickname"),t("td",null,"string"),t("td",null,"昵称")])])],-1),_=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),n(` + `),t("span",{class:"token property"},'"status"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token string"},'"ok"'),t("span",{class:"token punctuation"},","),n(` + `),t("span",{class:"token property"},'"retcode"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token number"},"0"),t("span",{class:"token punctuation"},","),n(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token punctuation"},"{"),n(` + `),t("span",{class:"token property"},'"user_id"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token number"},"2854200454"),t("span",{class:"token punctuation"},","),n(` + `),t("span",{class:"token property"},'"nickname"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token string"},'"Shamrock"'),n(` + `),t("span",{class:"token punctuation"},"}"),n(` +`),t("span",{class:"token punctuation"},"}"),n(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),y=l('

设置 QQ 个人资料

该接口用于设置 QQ 用户的个人资料信息。

API 端点

/set_qq_profile

参数

字段类型必须说明
nicknamestring昵称
companystring公司
emailstring邮箱
collegestring大学
personal_notestring个人备注
ageint32年龄
birthdaystring生日(格式:YYYY-MM-DD)

响应

该接口将返回基本的 json 。

获取在线机型

该接口用于获取 QQ 在线机型。

API 端点

/_get_model_show

参数

',13),g=t("table",null,[t("thead",null,[t("tr",null,[t("th",null,"字段"),t("th",null,"类型"),t("th",null,"必须"),t("th",null,"说明")])]),t("tbody",null,[t("tr",null,[t("td",null,"model"),t("td",null,"string"),t("td",null,"是"),t("td",null,"机型")])])],-1),f=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),n(` + `),t("span",{class:"token property"},'"model"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token string"},'"OPPO"'),n(` +`),t("span",{class:"token punctuation"},"}"),n(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),x=t("h3",{id:"响应-2",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#响应-2","aria-hidden":"true"},"#"),n(" 响应")],-1),P=t("table",null,[t("thead",null,[t("tr",null,[t("th",null,"字段"),t("th",null,"类型"),t("th",null,"说明")])]),t("tbody",null,[t("tr",null,[t("td",null,"variants"),t("td",null,[n("List<"),t("a",{href:"#modeldetail"},"ModelDetail"),n(">")]),t("td",null,"机型列表")])])],-1),A=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),n(` + `),t("span",{class:"token property"},'"status"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token string"},'"ok"'),t("span",{class:"token punctuation"},","),n(` + `),t("span",{class:"token property"},'"retcode"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token number"},"0"),t("span",{class:"token punctuation"},","),n(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token punctuation"},"{"),n(` + `),t("span",{class:"token property"},'"variants"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token punctuation"},"["),n(` + `),t("span",{class:"token punctuation"},"{"),n(` + `),t("span",{class:"token property"},'"model_show"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token string"},'"OPPO (黑色)"'),t("span",{class:"token punctuation"},","),n(` + `),t("span",{class:"token property"},'"need_pay"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token boolean"},"true"),n(` + `),t("span",{class:"token punctuation"},"}"),t("span",{class:"token punctuation"},","),n(` + `),t("span",{class:"token punctuation"},"{"),n(` + `),t("span",{class:"token property"},'"model_show"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token string"},'"OPPO (白色)"'),t("span",{class:"token punctuation"},","),n(` + `),t("span",{class:"token property"},'"need_pay"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token boolean"},"true"),n(` + `),t("span",{class:"token punctuation"},"}"),t("span",{class:"token punctuation"},","),n(` + `),t("span",{class:"token punctuation"},"{"),n(` + `),t("span",{class:"token property"},'"model_show"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token string"},'"OPPO (银色)"'),t("span",{class:"token punctuation"},","),n(` + `),t("span",{class:"token property"},'"need_pay"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token boolean"},"true"),n(` + `),t("span",{class:"token punctuation"},"}"),t("span",{class:"token punctuation"},","),n(` + `),t("span",{class:"token punctuation"},"{"),n(` + `),t("span",{class:"token property"},'"model_show"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token string"},'"OPPO (灰色)"'),t("span",{class:"token punctuation"},","),n(` + `),t("span",{class:"token property"},'"need_pay"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token boolean"},"true"),n(` + `),t("span",{class:"token punctuation"},"}"),t("span",{class:"token punctuation"},","),n(` + `),t("span",{class:"token punctuation"},"{"),n(` + `),t("span",{class:"token property"},'"model_show"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token string"},'"OPPO (金色)"'),t("span",{class:"token punctuation"},","),n(` + `),t("span",{class:"token property"},'"need_pay"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token boolean"},"true"),n(` + `),t("span",{class:"token punctuation"},"}"),t("span",{class:"token punctuation"},","),n(` + `),t("span",{class:"token punctuation"},"{"),n(` + `),t("span",{class:"token property"},'"model_show"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token string"},'"OPPO"'),t("span",{class:"token punctuation"},","),n(` + `),t("span",{class:"token property"},'"need_pay"'),t("span",{class:"token operator"},":"),n(),t("span",{class:"token boolean"},"false"),n(` + `),t("span",{class:"token punctuation"},"}"),n(` + `),t("span",{class:"token punctuation"},"]"),n(` + `),t("span",{class:"token punctuation"},"}"),n(` +`),t("span",{class:"token punctuation"},"}"),n(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),O=l('

ModelDetail

字段类型说明
model_showstring机型名称
need_paybool是否需要付费

设置在线机型

该接口用于设置 QQ 在线机型。

API 端点

/_set_model_show

参数

字段类型必须说明
modelstring机型
manustring厂商

响应

该接口将返回处理结果,其中 data 字段无数据。

',10),w={id:"获取当前账号在线客户端列表",tabindex:"-1"},Q=t("a",{class:"header-anchor",href:"#获取当前账号在线客户端列表","aria-hidden":"true"},"#",-1),j=l('

该接口用于获取当前账号在线客户端列表。

API 端点

/get_online_clients

参数

字段类型说明
no_cachebool是否无视缓存

响应

字段类型说明
clientsObject<Device>在线客户端列表

Device

字段类型说明
app_idint64客户端ID
device_namestring设备名称
device_kindstring设备类型
',9);function D(I,q){const r=i("Badge"),o=i("Tabs");return p(),h("div",null,[t("div",b,[k,t("p",null,[n("对于 Shamrock 尚未实现的 API,会在标题添加标记 "),d(r,{text:"未实现",type:"danger",vertical:"baseline"})])]),m,d(o,{id:"28",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:a(({value:e,isActive:s})=>[n("响应字段")]),title1:a(({value:e,isActive:s})=>[n("响应示例")]),tab0:a(({value:e,isActive:s})=>[v]),tab1:a(({value:e,isActive:s})=>[_]),_:1}),y,d(o,{id:"228",data:[{id:"参数字段"},{id:"参数示例"}]},{title0:a(({value:e,isActive:s})=>[n("参数字段")]),title1:a(({value:e,isActive:s})=>[n("参数示例")]),tab0:a(({value:e,isActive:s})=>[g]),tab1:a(({value:e,isActive:s})=>[f]),_:1}),x,d(o,{id:"272",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:a(({value:e,isActive:s})=>[n("响应字段")]),title1:a(({value:e,isActive:s})=>[n("响应示例")]),tab0:a(({value:e,isActive:s})=>[P]),tab1:a(({value:e,isActive:s})=>[A]),_:1}),O,t("h2",w,[Q,n(" 获取当前账号在线客户端列表 "),d(r,{text:"未实现",type:"danger"})]),j])}const N=c(u,[["render",D],["__file","account.html.vue"]]);export{N as default}; diff --git a/assets/account.html-90bd473f.js b/assets/account.html-90bd473f.js new file mode 100644 index 00000000..14e5a210 --- /dev/null +++ b/assets/account.html-90bd473f.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-ba4144cc","path":"/api/account.html","title":"账号相关","lang":"zh-CN","frontmatter":{"title":"账号相关","icon":"user"},"headers":[{"level":2,"title":"获取登录号信息","slug":"获取登录号信息","link":"#获取登录号信息","children":[{"level":3,"title":"API 端点","slug":"api-端点","link":"#api-端点","children":[]},{"level":3,"title":"参数","slug":"参数","link":"#参数","children":[]},{"level":3,"title":"响应","slug":"响应","link":"#响应","children":[]}]},{"level":2,"title":"设置 QQ 个人资料","slug":"设置-qq-个人资料","link":"#设置-qq-个人资料","children":[{"level":3,"title":"API 端点","slug":"api-端点-1","link":"#api-端点-1","children":[]},{"level":3,"title":"参数","slug":"参数-1","link":"#参数-1","children":[]},{"level":3,"title":"响应","slug":"响应-1","link":"#响应-1","children":[]}]},{"level":2,"title":"获取在线机型","slug":"获取在线机型","link":"#获取在线机型","children":[{"level":3,"title":"API 端点","slug":"api-端点-2","link":"#api-端点-2","children":[]},{"level":3,"title":"参数","slug":"参数-2","link":"#参数-2","children":[]},{"level":3,"title":"响应","slug":"响应-2","link":"#响应-2","children":[]}]},{"level":2,"title":"设置在线机型","slug":"设置在线机型","link":"#设置在线机型","children":[{"level":3,"title":"API 端点","slug":"api-端点-3","link":"#api-端点-3","children":[]},{"level":3,"title":"参数","slug":"参数-3","link":"#参数-3","children":[]},{"level":3,"title":"响应","slug":"响应-3","link":"#响应-3","children":[]}]},{"level":2,"title":"获取当前账号在线客户端列表","slug":"获取当前账号在线客户端列表","link":"#获取当前账号在线客户端列表","children":[{"level":3,"title":"API 端点","slug":"api-端点-4","link":"#api-端点-4","children":[]},{"level":3,"title":"参数","slug":"参数-4","link":"#参数-4","children":[]},{"level":3,"title":"响应","slug":"响应-4","link":"#响应-4","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1698464511000,"contributors":[{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":1.7,"words":511},"filePathRelative":"api/account.md","localizedDate":"2023年10月28日","excerpt":""}');export{l as data}; diff --git a/assets/advanced.html-87780180.js b/assets/advanced.html-87780180.js new file mode 100644 index 00000000..a5defb9c --- /dev/null +++ b/assets/advanced.html-87780180.js @@ -0,0 +1,8 @@ +import{_ as h}from"./plugin-vue_export-helper-c27b6911.js";import{r as o,o as l,c as u,a as t,d as e,b as a,w as n,e as i}from"./app-edf8b1e7.js";const p={},_={class:"hint-container warning"},b=t("p",{class:"hint-container-title"},"注意",-1),m=i('

合并转发

字段类型必填说明
idstring合并转发resid

合并转发(节点)

字段类型必填说明
idint64 or string消息ID
',4),v={id:"xml-消息",tabindex:"-1"},g=t("a",{class:"header-anchor",href:"#xml-消息","aria-hidden":"true"},"#",-1),x=i('

JSON 消息

参数

字段类型必填说明
datastringJSON 数据
',3),k=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:json,data={"app":"com.tencent.structmsg","config":{"autosize":true,"ctime":1621234567,"forward":true,"token":"shamrock"},"desc":"这是一条 JSON 消息"...}] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),f=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),e(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token string"},'"json"'),t("span",{class:"token punctuation"},","),e(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token punctuation"},"{"),e(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token string"},'"{\\"app\\":\\"com.tencent.structmsg\\",\\"config\\":{\\"autosize\\":true,\\"ctime\\":1621234567,\\"forward\\":true,\\"token\\":\\"shamrock\\"},\\"desc\\":\\"这是一条 JSON 消息\\"...}"'),e(` + `),t("span",{class:"token punctuation"},"}"),e(` +`),t("span",{class:"token punctuation"},"}"),e(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),y={id:"文本转语音",tabindex:"-1"},N=t("a",{class:"header-anchor",href:"#文本转语音","aria-hidden":"true"},"#",-1);function j(S,w){const s=o("Badge"),c=o("Tabs");return l(),u("div",null,[t("div",_,[b,t("p",null,[e("对于 Shamrock 未实现的消息类型,会在标题添加标记 "),a(s,{text:"未实现",type:"danger",vertical:"baseline"})])]),m,t("h2",v,[g,e(" XML 消息 "),a(s,{text:"未实现",type:"danger"})]),x,a(c,{id:"158",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:n(({value:d,isActive:r})=>[e("CQ 码")]),title1:n(({value:d,isActive:r})=>[e("消息段")]),tab0:n(({value:d,isActive:r})=>[k]),tab1:n(({value:d,isActive:r})=>[f]),_:1}),t("h2",y,[N,e(" 文本转语音 "),a(s,{text:"未实现",type:"danger"})])])}const A=h(p,[["render",j],["__file","advanced.html.vue"]]);export{A as default}; diff --git a/assets/advanced.html-cf16f849.js b/assets/advanced.html-cf16f849.js new file mode 100644 index 00000000..e5724448 --- /dev/null +++ b/assets/advanced.html-cf16f849.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-75ed5c96","path":"/message/advanced.html","title":"高级消息","lang":"zh-CN","frontmatter":{"title":"高级消息","icon":"layer-group"},"headers":[{"level":2,"title":"合并转发","slug":"合并转发","link":"#合并转发","children":[]},{"level":2,"title":"合并转发(节点)","slug":"合并转发-节点","link":"#合并转发-节点","children":[]},{"level":2,"title":"XML 消息","slug":"xml-消息","link":"#xml-消息","children":[]},{"level":2,"title":"JSON 消息","slug":"json-消息","link":"#json-消息","children":[{"level":3,"title":"参数","slug":"参数","link":"#参数","children":[]}]},{"level":2,"title":"文本转语音","slug":"文本转语音","link":"#文本转语音","children":[]}],"git":{"createdTime":1698464511000,"updatedTime":1708669619000,"contributors":[{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":3},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":0.63,"words":188},"filePathRelative":"message/advanced.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/app-edf8b1e7.js b/assets/app-edf8b1e7.js new file mode 100644 index 00000000..a84c5564 --- /dev/null +++ b/assets/app-edf8b1e7.js @@ -0,0 +1,8 @@ +const Rc="modulepreload",Oc=function(e){return"/OpenShamrock/"+e},Ro={},H=function(t,n,r){if(!n||n.length===0)return t();const l=document.getElementsByTagName("link");return Promise.all(n.map(o=>{if(o=Oc(o),o in Ro)return;Ro[o]=!0;const s=o.endsWith(".css"),a=s?'[rel="stylesheet"]':"";if(!!r)for(let f=l.length-1;f>=0;f--){const d=l[f];if(d.href===o&&(!s||d.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${a}`))return;const c=document.createElement("link");if(c.rel=s?"stylesheet":Rc,s||(c.as="script",c.crossOrigin=""),c.href=o,document.head.appendChild(c),s)return new Promise((f,d)=>{c.addEventListener("load",f),c.addEventListener("error",()=>d(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t()).catch(o=>{const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=o,window.dispatchEvent(s),!s.defaultPrevented)throw o})};function Nl(e,t){const n=Object.create(null),r=e.split(",");for(let l=0;l!!n[l.toLowerCase()]:l=>!!n[l]}const we={},un=[],nt=()=>{},Mc=()=>!1,$c=/^on[^a-z]/,qn=e=>$c.test(e),Dl=e=>e.startsWith("onUpdate:"),Te=Object.assign,Hl=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Nc=Object.prototype.hasOwnProperty,se=(e,t)=>Nc.call(e,t),Y=Array.isArray,On=e=>Pr(e)==="[object Map]",Dc=e=>Pr(e)==="[object Set]",ee=e=>typeof e=="function",fe=e=>typeof e=="string",Fl=e=>typeof e=="symbol",Ee=e=>e!==null&&typeof e=="object",Zs=e=>Ee(e)&&ee(e.then)&&ee(e.catch),Hc=Object.prototype.toString,Pr=e=>Hc.call(e),Fc=e=>Pr(e).slice(8,-1),Bc=e=>Pr(e)==="[object Object]",Bl=e=>fe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Mn=Nl(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ir=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Vc=/-(\w)/g,qe=Ir(e=>e.replace(Vc,(t,n)=>n?n.toUpperCase():"")),zc=/\B([A-Z])/g,Tn=Ir(e=>e.replace(zc,"-$1").toLowerCase()),Yn=Ir(e=>e.charAt(0).toUpperCase()+e.slice(1)),Kr=Ir(e=>e?`on${Yn(e)}`:""),Vn=(e,t)=>!Object.is(e,t),Ur=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},jc=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Wc=e=>{const t=fe(e)?Number(e):NaN;return isNaN(t)?e:t};let Oo;const hl=()=>Oo||(Oo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Vl(e){if(Y(e)){const t={};for(let n=0;n{if(n){const r=n.split(Uc);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function zl(e){let t="";if(fe(e))t=e;else if(Y(e))for(let n=0;n{const t=new Set(e);return t.w=0,t.n=0,t},Xs=e=>(e.w&$t)>0,Qs=e=>(e.n&$t)>0,eu=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(f==="length"||f>=i)&&a.push(c)})}else switch(n!==void 0&&a.push(s.get(n)),t){case"add":Y(e)?Bl(n)&&a.push(s.get("length")):(a.push(s.get(Kt)),On(e)&&a.push(s.get(ml)));break;case"delete":Y(e)||(a.push(s.get(Kt)),On(e)&&a.push(s.get(ml)));break;case"set":On(e)&&a.push(s.get(Kt));break}if(a.length===1)a[0]&&gl(a[0]);else{const i=[];for(const c of a)c&&i.push(...c);gl(jl(i))}}function gl(e,t){const n=Y(e)?e:[...e];for(const r of n)r.computed&&$o(r);for(const r of n)r.computed||$o(r)}function $o(e,t){(e!==et||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function nu(e,t){var n;return(n=_r.get(e))==null?void 0:n.get(t)}const ru=Nl("__proto__,__v_isRef,__isVue"),ta=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Fl)),lu=Kl(),ou=Kl(!1,!0),su=Kl(!0),No=au();function au(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=le(this);for(let o=0,s=this.length;o{e[t]=function(...n){Cn();const r=le(this)[t].apply(this,n);return kn(),r}}),e}function iu(e){const t=le(this);return Fe(t,"has",e),t.hasOwnProperty(e)}function Kl(e=!1,t=!1){return function(r,l,o){if(l==="__v_isReactive")return!e;if(l==="__v_isReadonly")return e;if(l==="__v_isShallow")return t;if(l==="__v_raw"&&o===(e?t?Cu:sa:t?oa:la).get(r))return r;const s=Y(r);if(!e){if(s&&se(No,l))return Reflect.get(No,l,o);if(l==="hasOwnProperty")return iu}const a=Reflect.get(r,l,o);return(Fl(l)?ta.has(l):ru(l))||(e||Fe(r,"get",l),t)?a:xe(a)?s&&Bl(l)?a:a.value:Ee(a)?e?qt(a):Xn(a):a}}const cu=na(),uu=na(!0);function na(e=!1){return function(n,r,l,o){let s=n[r];if(vn(s)&&xe(s)&&!xe(l))return!1;if(!e&&(!wr(l)&&!vn(l)&&(s=le(s),l=le(l)),!Y(n)&&xe(s)&&!xe(l)))return s.value=l,!0;const a=Y(n)&&Bl(r)?Number(r)e,Rr=e=>Reflect.getPrototypeOf(e);function or(e,t,n=!1,r=!1){e=e.__v_raw;const l=le(e),o=le(t);n||(t!==o&&Fe(l,"get",t),Fe(l,"get",o));const{has:s}=Rr(l),a=r?Ul:n?ql:zn;if(s.call(l,t))return a(e.get(t));if(s.call(l,o))return a(e.get(o));e!==l&&e.get(t)}function sr(e,t=!1){const n=this.__v_raw,r=le(n),l=le(e);return t||(e!==l&&Fe(r,"has",e),Fe(r,"has",l)),e===l?n.has(e):n.has(e)||n.has(l)}function ar(e,t=!1){return e=e.__v_raw,!t&&Fe(le(e),"iterate",Kt),Reflect.get(e,"size",e)}function Do(e){e=le(e);const t=le(this);return Rr(t).has.call(t,e)||(t.add(e),wt(t,"add",e,e)),this}function Ho(e,t){t=le(t);const n=le(this),{has:r,get:l}=Rr(n);let o=r.call(n,e);o||(e=le(e),o=r.call(n,e));const s=l.call(n,e);return n.set(e,t),o?Vn(t,s)&&wt(n,"set",e,t):wt(n,"add",e,t),this}function Fo(e){const t=le(this),{has:n,get:r}=Rr(t);let l=n.call(t,e);l||(e=le(e),l=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return l&&wt(t,"delete",e,void 0),o}function Bo(){const e=le(this),t=e.size!==0,n=e.clear();return t&&wt(e,"clear",void 0,void 0),n}function ir(e,t){return function(r,l){const o=this,s=o.__v_raw,a=le(s),i=t?Ul:e?ql:zn;return!e&&Fe(a,"iterate",Kt),s.forEach((c,f)=>r.call(l,i(c),i(f),o))}}function cr(e,t,n){return function(...r){const l=this.__v_raw,o=le(l),s=On(o),a=e==="entries"||e===Symbol.iterator&&s,i=e==="keys"&&s,c=l[e](...r),f=n?Ul:t?ql:zn;return!t&&Fe(o,"iterate",i?ml:Kt),{next(){const{value:d,done:p}=c.next();return p?{value:d,done:p}:{value:a?[f(d[0]),f(d[1])]:f(d),done:p}},[Symbol.iterator](){return this}}}}function St(e){return function(...t){return e==="delete"?!1:this}}function mu(){const e={get(o){return or(this,o)},get size(){return ar(this)},has:sr,add:Do,set:Ho,delete:Fo,clear:Bo,forEach:ir(!1,!1)},t={get(o){return or(this,o,!1,!0)},get size(){return ar(this)},has:sr,add:Do,set:Ho,delete:Fo,clear:Bo,forEach:ir(!1,!0)},n={get(o){return or(this,o,!0)},get size(){return ar(this,!0)},has(o){return sr.call(this,o,!0)},add:St("add"),set:St("set"),delete:St("delete"),clear:St("clear"),forEach:ir(!0,!1)},r={get(o){return or(this,o,!0,!0)},get size(){return ar(this,!0)},has(o){return sr.call(this,o,!0)},add:St("add"),set:St("set"),delete:St("delete"),clear:St("clear"),forEach:ir(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=cr(o,!1,!1),n[o]=cr(o,!0,!1),t[o]=cr(o,!1,!0),r[o]=cr(o,!0,!0)}),[e,n,t,r]}const[gu,bu,yu,_u]=mu();function Gl(e,t){const n=t?e?_u:yu:e?bu:gu;return(r,l,o)=>l==="__v_isReactive"?!e:l==="__v_isReadonly"?e:l==="__v_raw"?r:Reflect.get(se(n,l)&&l in r?n:r,l,o)}const wu={get:Gl(!1,!1)},Eu={get:Gl(!1,!0)},Tu={get:Gl(!0,!1)},la=new WeakMap,oa=new WeakMap,sa=new WeakMap,Cu=new WeakMap;function ku(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function xu(e){return e.__v_skip||!Object.isExtensible(e)?0:ku(Fc(e))}function Xn(e){return vn(e)?e:Zl(e,!1,ra,wu,la)}function aa(e){return Zl(e,!1,vu,Eu,oa)}function qt(e){return Zl(e,!0,hu,Tu,sa)}function Zl(e,t,n,r,l){if(!Ee(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=l.get(e);if(o)return o;const s=xu(e);if(s===0)return e;const a=new Proxy(e,s===2?r:n);return l.set(e,a),a}function fn(e){return vn(e)?fn(e.__v_raw):!!(e&&e.__v_isReactive)}function vn(e){return!!(e&&e.__v_isReadonly)}function wr(e){return!!(e&&e.__v_isShallow)}function ia(e){return fn(e)||vn(e)}function le(e){const t=e&&e.__v_raw;return t?le(t):e}function ca(e){return yr(e,"__v_skip",!0),e}const zn=e=>Ee(e)?Xn(e):e,ql=e=>Ee(e)?qt(e):e;function Yl(e){Ot&&et&&(e=le(e),ea(e.dep||(e.dep=jl())))}function Xl(e,t){e=le(e);const n=e.dep;n&&gl(n)}function xe(e){return!!(e&&e.__v_isRef===!0)}function X(e){return ua(e,!1)}function Ye(e){return ua(e,!0)}function ua(e,t){return xe(e)?e:new Su(e,t)}class Su{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:le(t),this._value=n?t:zn(t)}get value(){return Yl(this),this._value}set value(t){const n=this.__v_isShallow||wr(t)||vn(t);t=n?t:le(t),Vn(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:zn(t),Xl(this))}}function Ut(e){return xe(e)?e.value:e}const Lu={get:(e,t,n)=>Ut(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const l=e[t];return xe(l)&&!xe(n)?(l.value=n,!0):Reflect.set(e,t,n,r)}};function fa(e){return fn(e)?e:new Proxy(e,Lu)}class Au{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Yl(this),()=>Xl(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function da(e){return new Au(e)}class Pu{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return nu(le(this._object),this._key)}}class Iu{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Or(e,t,n){return xe(e)?e:ee(e)?new Iu(e):Ee(e)&&arguments.length>1?Ru(e,t,n):X(e)}function Ru(e,t,n){const r=e[t];return xe(r)?r:new Pu(e,t,n)}class Ou{constructor(t,n,r,l){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new Wl(t,()=>{this._dirty||(this._dirty=!0,Xl(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!l,this.__v_isReadonly=r}get value(){const t=le(this);return Yl(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function Mu(e,t,n=!1){let r,l;const o=ee(e);return o?(r=e,l=nt):(r=e.get,l=e.set),new Ou(r,l,o||!l,n)}function Mt(e,t,n,r){let l;try{l=r?e(...r):e()}catch(o){Qn(o,t,n)}return l}function Ze(e,t,n,r){if(ee(e)){const o=Mt(e,t,n,r);return o&&Zs(o)&&o.catch(s=>{Qn(s,t,n)}),o}const l=[];for(let o=0;o>>1;Wn(Oe[r])ut&&Oe.splice(t,1)}function Hu(e){Y(e)?dn.push(...e):(!bt||!bt.includes(e,e.allowRecurse?zt+1:zt))&&dn.push(e),ha()}function Vo(e,t=jn?ut+1:0){for(;tWn(n)-Wn(r)),zt=0;zte.id==null?1/0:e.id,Fu=(e,t)=>{const n=Wn(e)-Wn(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function va(e){bl=!1,jn=!0,Oe.sort(Fu);const t=nt;try{for(ut=0;utfe(h)?h.trim():h)),d&&(l=n.map(jc))}let a,i=r[a=Kr(t)]||r[a=Kr(qe(t))];!i&&o&&(i=r[a=Kr(Tn(t))]),i&&Ze(i,e,6,l);const c=r[a+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Ze(c,e,6,l)}}function ma(e,t,n=!1){const r=t.emitsCache,l=r.get(e);if(l!==void 0)return l;const o=e.emits;let s={},a=!1;if(!ee(e)){const i=c=>{const f=ma(c,t,!0);f&&(a=!0,Te(s,f))};!n&&t.mixins.length&&t.mixins.forEach(i),e.extends&&i(e.extends),e.mixins&&e.mixins.forEach(i)}return!o&&!a?(Ee(e)&&r.set(e,null),null):(Y(o)?o.forEach(i=>s[i]=null):Te(s,o),Ee(e)&&r.set(e,s),s)}function $r(e,t){return!e||!qn(t)?!1:(t=t.slice(2).replace(/Once$/,""),se(e,t[0].toLowerCase()+t.slice(1))||se(e,Tn(t))||se(e,t))}let Ue=null,ga=null;function Tr(e){const t=Ue;return Ue=e,ga=e&&e.type.__scopeId||null,t}function Vu(e,t=Ue,n){if(!t||e._n)return e;const r=(...l)=>{r._d&&Jo(-1);const o=Tr(t);let s;try{s=e(...l)}finally{Tr(o),r._d&&Jo(1)}return s};return r._n=!0,r._c=!0,r._d=!0,r}function Gr(e){const{type:t,vnode:n,proxy:r,withProxy:l,props:o,propsOptions:[s],slots:a,attrs:i,emit:c,render:f,renderCache:d,data:p,setupState:h,ctx:b,inheritAttrs:w}=e;let E,g;const y=Tr(e);try{if(n.shapeFlag&4){const R=l||r;E=Je(f.call(R,R,d,o,h,p,b)),g=i}else{const R=t;E=Je(R.length>1?R(o,{attrs:i,slots:a,emit:c}):R(o,null)),g=t.props?i:zu(i)}}catch(R){Hn.length=0,Qn(R,e,1),E=Se(ft)}let P=E;if(g&&w!==!1){const R=Object.keys(g),{shapeFlag:V}=P;R.length&&V&7&&(s&&R.some(Dl)&&(g=ju(g,s)),P=Nt(P,g))}return n.dirs&&(P=Nt(P),P.dirs=P.dirs?P.dirs.concat(n.dirs):n.dirs),n.transition&&(P.transition=n.transition),E=P,Tr(y),E}const zu=e=>{let t;for(const n in e)(n==="class"||n==="style"||qn(n))&&((t||(t={}))[n]=e[n]);return t},ju=(e,t)=>{const n={};for(const r in e)(!Dl(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Wu(e,t,n){const{props:r,children:l,component:o}=e,{props:s,children:a,patchFlag:i}=t,c=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&i>=0){if(i&1024)return!0;if(i&16)return r?zo(r,s,c):!!s;if(i&8){const f=t.dynamicProps;for(let d=0;de.__isSuspense;function ba(e,t){t&&t.pendingBranch?Y(e)?t.effects.push(...e):t.effects.push(e):Hu(e)}function ya(e,t){return Jl(e,null,t)}const ur={};function ae(e,t,n){return Jl(e,t,n)}function Jl(e,t,{immediate:n,deep:r,flush:l,onTrack:o,onTrigger:s}=we){var a;const i=Ys()===((a=ke)==null?void 0:a.scope)?ke:null;let c,f=!1,d=!1;if(xe(e)?(c=()=>e.value,f=wr(e)):fn(e)?(c=()=>e,r=!0):Y(e)?(d=!0,f=e.some(R=>fn(R)||wr(R)),c=()=>e.map(R=>{if(xe(R))return R.value;if(fn(R))return sn(R);if(ee(R))return Mt(R,i,2)})):ee(e)?t?c=()=>Mt(e,i,2):c=()=>{if(!(i&&i.isUnmounted))return p&&p(),Ze(e,i,3,[h])}:c=nt,t&&r){const R=c;c=()=>sn(R())}let p,h=R=>{p=y.onStop=()=>{Mt(R,i,4)}},b;if(bn)if(h=nt,t?n&&Ze(t,i,3,[c(),d?[]:void 0,h]):c(),l==="sync"){const R=Vf();b=R.__watcherHandles||(R.__watcherHandles=[])}else return nt;let w=d?new Array(e.length).fill(ur):ur;const E=()=>{if(y.active)if(t){const R=y.run();(r||f||(d?R.some((V,I)=>Vn(V,w[I])):Vn(R,w)))&&(p&&p(),Ze(t,i,3,[R,w===ur?void 0:d&&w[0]===ur?[]:w,h]),w=R)}else y.run()};E.allowRecurse=!!t;let g;l==="sync"?g=E:l==="post"?g=()=>Ne(E,i&&i.suspense):(E.pre=!0,i&&(E.id=i.uid),g=()=>Mr(E));const y=new Wl(c,g);t?n?E():w=y.run():l==="post"?Ne(y.run.bind(y),i&&i.suspense):y.run();const P=()=>{y.stop(),i&&i.scope&&Hl(i.scope.effects,y)};return b&&b.push(P),P}function Gu(e,t,n){const r=this.proxy,l=fe(e)?e.includes(".")?_a(r,e):()=>r[e]:e.bind(r,r);let o;ee(t)?o=t:(o=t.handler,n=t);const s=ke;gn(this);const a=Jl(l,o.bind(r),n);return s?gn(s):Zt(),a}function _a(e,t){const n=t.split(".");return()=>{let r=e;for(let l=0;l{sn(n,t)});else if(Bc(e))for(const n in e)sn(e[n],t);return e}function ct(e,t,n,r){const l=e.dirs,o=t&&t.dirs;for(let s=0;s{e.isMounted=!0}),to(()=>{e.isUnmounting=!0}),e}const We=[Function,Array],Ea={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:We,onEnter:We,onAfterEnter:We,onEnterCancelled:We,onBeforeLeave:We,onLeave:We,onAfterLeave:We,onLeaveCancelled:We,onBeforeAppear:We,onAppear:We,onAfterAppear:We,onAppearCancelled:We},Zu={name:"BaseTransition",props:Ea,setup(e,{slots:t}){const n=Qt(),r=wa();let l;return()=>{const o=t.default&&eo(t.default(),!0);if(!o||!o.length)return;let s=o[0];if(o.length>1){for(const w of o)if(w.type!==ft){s=w;break}}const a=le(e),{mode:i}=a;if(r.isLeaving)return Zr(s);const c=jo(s);if(!c)return Zr(s);const f=Kn(c,a,r,n);Un(c,f);const d=n.subTree,p=d&&jo(d);let h=!1;const{getTransitionKey:b}=c.type;if(b){const w=b();l===void 0?l=w:w!==l&&(l=w,h=!0)}if(p&&p.type!==ft&&(!jt(c,p)||h)){const w=Kn(p,a,r,n);if(Un(p,w),i==="out-in")return r.isLeaving=!0,w.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},Zr(s);i==="in-out"&&c.type!==ft&&(w.delayLeave=(E,g,y)=>{const P=Ta(r,p);P[String(p.key)]=p,E._leaveCb=()=>{g(),E._leaveCb=void 0,delete f.delayedLeave},f.delayedLeave=y})}return s}}},qu=Zu;function Ta(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Kn(e,t,n,r){const{appear:l,mode:o,persisted:s=!1,onBeforeEnter:a,onEnter:i,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:d,onLeave:p,onAfterLeave:h,onLeaveCancelled:b,onBeforeAppear:w,onAppear:E,onAfterAppear:g,onAppearCancelled:y}=t,P=String(e.key),R=Ta(n,e),V=(C,z)=>{C&&Ze(C,r,9,z)},I=(C,z)=>{const q=z[1];V(C,z),Y(C)?C.every(ne=>ne.length<=1)&&q():C.length<=1&&q()},N={mode:o,persisted:s,beforeEnter(C){let z=a;if(!n.isMounted)if(l)z=w||a;else return;C._leaveCb&&C._leaveCb(!0);const q=R[P];q&&jt(e,q)&&q.el._leaveCb&&q.el._leaveCb(),V(z,[C])},enter(C){let z=i,q=c,ne=f;if(!n.isMounted)if(l)z=E||i,q=g||c,ne=y||f;else return;let B=!1;const J=C._enterCb=K=>{B||(B=!0,K?V(ne,[C]):V(q,[C]),N.delayedLeave&&N.delayedLeave(),C._enterCb=void 0)};z?I(z,[C,J]):J()},leave(C,z){const q=String(e.key);if(C._enterCb&&C._enterCb(!0),n.isUnmounting)return z();V(d,[C]);let ne=!1;const B=C._leaveCb=J=>{ne||(ne=!0,z(),J?V(b,[C]):V(h,[C]),C._leaveCb=void 0,R[q]===e&&delete R[q])};R[q]=e,p?I(p,[C,B]):B()},clone(C){return Kn(C,t,n,r)}};return N}function Zr(e){if(Jn(e))return e=Nt(e),e.children=null,e}function jo(e){return Jn(e)?e.children?e.children[0]:void 0:e}function Un(e,t){e.shapeFlag&6&&e.component?Un(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function eo(e,t=!1,n){let r=[],l=0;for(let o=0;o1)for(let o=0;oTe({name:e.name},t,{setup:e}))():e}const $n=e=>!!e.type.__asyncLoader;function re(e){ee(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:l=200,timeout:o,suspensible:s=!0,onError:a}=e;let i=null,c,f=0;const d=()=>(f++,i=null,p()),p=()=>{let h;return i||(h=i=t().catch(b=>{if(b=b instanceof Error?b:new Error(String(b)),a)return new Promise((w,E)=>{a(b,()=>w(d()),()=>E(b),f+1)});throw b}).then(b=>h!==i&&i?i:(b&&(b.__esModule||b[Symbol.toStringTag]==="Module")&&(b=b.default),c=b,b)))};return W({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return c},setup(){const h=ke;if(c)return()=>qr(c,h);const b=y=>{i=null,Qn(y,h,13,!r)};if(s&&h.suspense||bn)return p().then(y=>()=>qr(y,h)).catch(y=>(b(y),()=>r?Se(r,{error:y}):null));const w=X(!1),E=X(),g=X(!!l);return l&&setTimeout(()=>{g.value=!1},l),o!=null&&setTimeout(()=>{if(!w.value&&!E.value){const y=new Error(`Async component timed out after ${o}ms.`);b(y),E.value=y}},o),p().then(()=>{w.value=!0,h.parent&&Jn(h.parent.vnode)&&Mr(h.parent.update)}).catch(y=>{b(y),E.value=y}),()=>{if(w.value&&c)return qr(c,h);if(E.value&&r)return Se(r,{error:E.value});if(n&&!g.value)return Se(n)}}})}function qr(e,t){const{ref:n,props:r,children:l,ce:o}=t.vnode,s=Se(e,r,l);return s.ref=n,s.ce=o,delete t.vnode.ce,s}const Jn=e=>e.type.__isKeepAlive;function Yu(e,t){Ca(e,"a",t)}function Xu(e,t){Ca(e,"da",t)}function Ca(e,t,n=ke){const r=e.__wdc||(e.__wdc=()=>{let l=n;for(;l;){if(l.isDeactivated)return;l=l.parent}return e()});if(Nr(t,r,n),n){let l=n.parent;for(;l&&l.parent;)Jn(l.parent.vnode)&&Qu(r,t,n,l),l=l.parent}}function Qu(e,t,n,r){const l=Nr(t,e,r,!0);Xt(()=>{Hl(r[t],l)},n)}function Nr(e,t,n=ke,r=!1){if(n){const l=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...s)=>{if(n.isUnmounted)return;Cn(),gn(n);const a=Ze(t,n,e,s);return Zt(),kn(),a});return r?l.unshift(o):l.push(o),o}}const Ct=e=>(t,n=ke)=>(!bn||e==="sp")&&Nr(e,(...r)=>t(...r),n),Ju=Ct("bm"),_e=Ct("m"),ef=Ct("bu"),ka=Ct("u"),to=Ct("bum"),Xt=Ct("um"),tf=Ct("sp"),nf=Ct("rtg"),rf=Ct("rtc");function lf(e,t=ke){Nr("ec",e,t)}const xa="components";function rt(e,t){return sf(xa,e,!0,t)||e}const of=Symbol.for("v-ndc");function sf(e,t,n=!0,r=!1){const l=Ue||ke;if(l){const o=l.type;if(e===xa){const a=Hf(o,!1);if(a&&(a===t||a===qe(t)||a===Yn(qe(t))))return o}const s=Wo(l[e]||o[e],t)||Wo(l.appContext[e],t);return!s&&r?o:s}}function Wo(e,t){return e&&(e[t]||e[qe(t)]||e[Yn(qe(t))])}const yl=e=>e?Ha(e)?so(e)||e.proxy:yl(e.parent):null,Nn=Te(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>yl(e.parent),$root:e=>yl(e.root),$emit:e=>e.emit,$options:e=>no(e),$forceUpdate:e=>e.f||(e.f=()=>Mr(e.update)),$nextTick:e=>e.n||(e.n=Yt.bind(e.proxy)),$watch:e=>Gu.bind(e)}),Yr=(e,t)=>e!==we&&!e.__isScriptSetup&&se(e,t),af={get({_:e},t){const{ctx:n,setupState:r,data:l,props:o,accessCache:s,type:a,appContext:i}=e;let c;if(t[0]!=="$"){const h=s[t];if(h!==void 0)switch(h){case 1:return r[t];case 2:return l[t];case 4:return n[t];case 3:return o[t]}else{if(Yr(r,t))return s[t]=1,r[t];if(l!==we&&se(l,t))return s[t]=2,l[t];if((c=e.propsOptions[0])&&se(c,t))return s[t]=3,o[t];if(n!==we&&se(n,t))return s[t]=4,n[t];_l&&(s[t]=0)}}const f=Nn[t];let d,p;if(f)return t==="$attrs"&&Fe(e,"get",t),f(e);if((d=a.__cssModules)&&(d=d[t]))return d;if(n!==we&&se(n,t))return s[t]=4,n[t];if(p=i.config.globalProperties,se(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:l,ctx:o}=e;return Yr(l,t)?(l[t]=n,!0):r!==we&&se(r,t)?(r[t]=n,!0):se(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:l,propsOptions:o}},s){let a;return!!n[s]||e!==we&&se(e,s)||Yr(t,s)||(a=o[0])&&se(a,s)||se(r,s)||se(Nn,s)||se(l.config.globalProperties,s)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:se(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Ko(e){return Y(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let _l=!0;function cf(e){const t=no(e),n=e.proxy,r=e.ctx;_l=!1,t.beforeCreate&&Uo(t.beforeCreate,e,"bc");const{data:l,computed:o,methods:s,watch:a,provide:i,inject:c,created:f,beforeMount:d,mounted:p,beforeUpdate:h,updated:b,activated:w,deactivated:E,beforeDestroy:g,beforeUnmount:y,destroyed:P,unmounted:R,render:V,renderTracked:I,renderTriggered:N,errorCaptured:C,serverPrefetch:z,expose:q,inheritAttrs:ne,components:B,directives:J,filters:K}=t;if(c&&uf(c,r,null),s)for(const ve in s){const ce=s[ve];ee(ce)&&(r[ve]=ce.bind(n))}if(l){const ve=l.call(n,n);Ee(ve)&&(e.data=Xn(ve))}if(_l=!0,o)for(const ve in o){const ce=o[ve],pt=ee(ce)?ce.bind(n,n):ee(ce.get)?ce.get.bind(n,n):nt,xt=!ee(ce)&&ee(ce.set)?ce.set.bind(n):nt,at=x({get:pt,set:xt});Object.defineProperty(r,ve,{enumerable:!0,configurable:!0,get:()=>at.value,set:$e=>at.value=$e})}if(a)for(const ve in a)Sa(a[ve],r,n,ve);if(i){const ve=ee(i)?i.call(n):i;Reflect.ownKeys(ve).forEach(ce=>{Gt(ce,ve[ce])})}f&&Uo(f,e,"c");function ie(ve,ce){Y(ce)?ce.forEach(pt=>ve(pt.bind(n))):ce&&ve(ce.bind(n))}if(ie(Ju,d),ie(_e,p),ie(ef,h),ie(ka,b),ie(Yu,w),ie(Xu,E),ie(lf,C),ie(rf,I),ie(nf,N),ie(to,y),ie(Xt,R),ie(tf,z),Y(q))if(q.length){const ve=e.exposed||(e.exposed={});q.forEach(ce=>{Object.defineProperty(ve,ce,{get:()=>n[ce],set:pt=>n[ce]=pt})})}else e.exposed||(e.exposed={});V&&e.render===nt&&(e.render=V),ne!=null&&(e.inheritAttrs=ne),B&&(e.components=B),J&&(e.directives=J)}function uf(e,t,n=nt){Y(e)&&(e=wl(e));for(const r in e){const l=e[r];let o;Ee(l)?"default"in l?o=be(l.from||r,l.default,!0):o=be(l.from||r):o=be(l),xe(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:s=>o.value=s}):t[r]=o}}function Uo(e,t,n){Ze(Y(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Sa(e,t,n,r){const l=r.includes(".")?_a(n,r):()=>n[r];if(fe(e)){const o=t[e];ee(o)&&ae(l,o)}else if(ee(e))ae(l,e.bind(n));else if(Ee(e))if(Y(e))e.forEach(o=>Sa(o,t,n,r));else{const o=ee(e.handler)?e.handler.bind(n):t[e.handler];ee(o)&&ae(l,o,e)}}function no(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:l,optionsCache:o,config:{optionMergeStrategies:s}}=e.appContext,a=o.get(t);let i;return a?i=a:!l.length&&!n&&!r?i=t:(i={},l.length&&l.forEach(c=>Cr(i,c,s,!0)),Cr(i,t,s)),Ee(t)&&o.set(t,i),i}function Cr(e,t,n,r=!1){const{mixins:l,extends:o}=t;o&&Cr(e,o,n,!0),l&&l.forEach(s=>Cr(e,s,n,!0));for(const s in t)if(!(r&&s==="expose")){const a=ff[s]||n&&n[s];e[s]=a?a(e[s],t[s]):t[s]}return e}const ff={data:Go,props:Zo,emits:Zo,methods:Rn,computed:Rn,beforeCreate:Me,created:Me,beforeMount:Me,mounted:Me,beforeUpdate:Me,updated:Me,beforeDestroy:Me,beforeUnmount:Me,destroyed:Me,unmounted:Me,activated:Me,deactivated:Me,errorCaptured:Me,serverPrefetch:Me,components:Rn,directives:Rn,watch:pf,provide:Go,inject:df};function Go(e,t){return t?e?function(){return Te(ee(e)?e.call(this,this):e,ee(t)?t.call(this,this):t)}:t:e}function df(e,t){return Rn(wl(e),wl(t))}function wl(e){if(Y(e)){const t={};for(let n=0;n1)return n&&ee(t)?t.call(r&&r.proxy):t}}function mf(e,t,n,r=!1){const l={},o={};yr(o,Dr,1),e.propsDefaults=Object.create(null),Aa(e,t,l,o);for(const s in e.propsOptions[0])s in l||(l[s]=void 0);n?e.props=r?l:aa(l):e.type.props?e.props=l:e.props=o,e.attrs=o}function gf(e,t,n,r){const{props:l,attrs:o,vnode:{patchFlag:s}}=e,a=le(l),[i]=e.propsOptions;let c=!1;if((r||s>0)&&!(s&16)){if(s&8){const f=e.vnode.dynamicProps;for(let d=0;d{i=!0;const[p,h]=Pa(d,t,!0);Te(s,p),h&&a.push(...h)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!i)return Ee(e)&&r.set(e,un),un;if(Y(o))for(let f=0;f-1,h[1]=w<0||b-1||se(h,"default"))&&a.push(d)}}}const c=[s,a];return Ee(e)&&r.set(e,c),c}function qo(e){return e[0]!=="$"}function Yo(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function Xo(e,t){return Yo(e)===Yo(t)}function Qo(e,t){return Y(t)?t.findIndex(n=>Xo(n,e)):ee(t)&&Xo(t,e)?0:-1}const Ia=e=>e[0]==="_"||e==="$stable",ro=e=>Y(e)?e.map(Je):[Je(e)],bf=(e,t,n)=>{if(t._n)return t;const r=Vu((...l)=>ro(t(...l)),n);return r._c=!1,r},Ra=(e,t,n)=>{const r=e._ctx;for(const l in e){if(Ia(l))continue;const o=e[l];if(ee(o))t[l]=bf(l,o,r);else if(o!=null){const s=ro(o);t[l]=()=>s}}},Oa=(e,t)=>{const n=ro(t);e.slots.default=()=>n},yf=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=le(t),yr(t,"_",n)):Ra(t,e.slots={})}else e.slots={},t&&Oa(e,t);yr(e.slots,Dr,1)},_f=(e,t,n)=>{const{vnode:r,slots:l}=e;let o=!0,s=we;if(r.shapeFlag&32){const a=t._;a?n&&a===1?o=!1:(Te(l,t),!n&&a===1&&delete l._):(o=!t.$stable,Ra(t,l)),s=t}else t&&(Oa(e,t),s={default:1});if(o)for(const a in l)!Ia(a)&&!(a in s)&&delete l[a]};function xr(e,t,n,r,l=!1){if(Y(e)){e.forEach((p,h)=>xr(p,t&&(Y(t)?t[h]:t),n,r,l));return}if($n(r)&&!l)return;const o=r.shapeFlag&4?so(r.component)||r.component.proxy:r.el,s=l?null:o,{i:a,r:i}=e,c=t&&t.r,f=a.refs===we?a.refs={}:a.refs,d=a.setupState;if(c!=null&&c!==i&&(fe(c)?(f[c]=null,se(d,c)&&(d[c]=null)):xe(c)&&(c.value=null)),ee(i))Mt(i,a,12,[s,f]);else{const p=fe(i),h=xe(i);if(p||h){const b=()=>{if(e.f){const w=p?se(d,i)?d[i]:f[i]:i.value;l?Y(w)&&Hl(w,o):Y(w)?w.includes(o)||w.push(o):p?(f[i]=[o],se(d,i)&&(d[i]=f[i])):(i.value=[o],e.k&&(f[e.k]=i.value))}else p?(f[i]=s,se(d,i)&&(d[i]=s)):h&&(i.value=s,e.k&&(f[e.k]=s))};s?(b.id=-1,Ne(b,n)):b()}}}let Lt=!1;const fr=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",dr=e=>e.nodeType===8;function wf(e){const{mt:t,p:n,o:{patchProp:r,createText:l,nextSibling:o,parentNode:s,remove:a,insert:i,createComment:c}}=e,f=(g,y)=>{if(!y.hasChildNodes()){n(null,g,y),Er(),y._vnode=g;return}Lt=!1,d(y.firstChild,g,null,null,null),Er(),y._vnode=g,Lt&&console.error("Hydration completed but contains mismatches.")},d=(g,y,P,R,V,I=!1)=>{const N=dr(g)&&g.data==="[",C=()=>w(g,y,P,R,V,N),{type:z,ref:q,shapeFlag:ne,patchFlag:B}=y;let J=g.nodeType;y.el=g,B===-2&&(I=!1,y.dynamicChildren=null);let K=null;switch(z){case mn:J!==3?y.children===""?(i(y.el=l(""),s(g),g),K=g):K=C():(g.data!==y.children&&(Lt=!0,g.data=y.children),K=o(g));break;case ft:J!==8||N?K=C():K=o(g);break;case Dn:if(N&&(g=o(g),J=g.nodeType),J===1||J===3){K=g;const Pe=!y.children.length;for(let ie=0;ie{I=I||!!y.dynamicChildren;const{type:N,props:C,patchFlag:z,shapeFlag:q,dirs:ne}=y,B=N==="input"&&ne||N==="option";if(B||z!==-1){if(ne&&ct(y,null,P,"created"),C)if(B||!I||z&48)for(const K in C)(B&&K.endsWith("value")||qn(K)&&!Mn(K))&&r(g,K,null,C[K],!1,void 0,P);else C.onClick&&r(g,"onClick",null,C.onClick,!1,void 0,P);let J;if((J=C&&C.onVnodeBeforeMount)&&Ke(J,P,y),ne&&ct(y,null,P,"beforeMount"),((J=C&&C.onVnodeMounted)||ne)&&ba(()=>{J&&Ke(J,P,y),ne&&ct(y,null,P,"mounted")},R),q&16&&!(C&&(C.innerHTML||C.textContent))){let K=h(g.firstChild,y,g,P,R,V,I);for(;K;){Lt=!0;const Pe=K;K=K.nextSibling,a(Pe)}}else q&8&&g.textContent!==y.children&&(Lt=!0,g.textContent=y.children)}return g.nextSibling},h=(g,y,P,R,V,I,N)=>{N=N||!!y.dynamicChildren;const C=y.children,z=C.length;for(let q=0;q{const{slotScopeIds:N}=y;N&&(V=V?V.concat(N):N);const C=s(g),z=h(o(g),y,C,P,R,V,I);return z&&dr(z)&&z.data==="]"?o(y.anchor=z):(Lt=!0,i(y.anchor=c("]"),C,z),z)},w=(g,y,P,R,V,I)=>{if(Lt=!0,y.el=null,I){const z=E(g);for(;;){const q=o(g);if(q&&q!==z)a(q);else break}}const N=o(g),C=s(g);return a(g),n(null,y,C,N,P,R,fr(C),V),N},E=g=>{let y=0;for(;g;)if(g=o(g),g&&dr(g)&&(g.data==="["&&y++,g.data==="]")){if(y===0)return o(g);y--}return g};return[f,d]}const Ne=ba;function Ef(e){return Tf(e,wf)}function Tf(e,t){const n=hl();n.__VUE__=!0;const{insert:r,remove:l,patchProp:o,createElement:s,createText:a,createComment:i,setText:c,setElementText:f,parentNode:d,nextSibling:p,setScopeId:h=nt,insertStaticContent:b}=e,w=(v,m,_,T=null,S=null,L=null,D=!1,O=null,M=!!m.dynamicChildren)=>{if(v===m)return;v&&!jt(v,m)&&(T=k(v),$e(v,S,L,!0),v=null),m.patchFlag===-2&&(M=!1,m.dynamicChildren=null);const{type:A,ref:G,shapeFlag:j}=m;switch(A){case mn:E(v,m,_,T);break;case ft:g(v,m,_,T);break;case Dn:v==null&&y(m,_,T,D);break;case je:B(v,m,_,T,S,L,D,O,M);break;default:j&1?V(v,m,_,T,S,L,D,O,M):j&6?J(v,m,_,T,S,L,D,O,M):(j&64||j&128)&&A.process(v,m,_,T,S,L,D,O,M,$)}G!=null&&S&&xr(G,v&&v.ref,L,m||v,!m)},E=(v,m,_,T)=>{if(v==null)r(m.el=a(m.children),_,T);else{const S=m.el=v.el;m.children!==v.children&&c(S,m.children)}},g=(v,m,_,T)=>{v==null?r(m.el=i(m.children||""),_,T):m.el=v.el},y=(v,m,_,T)=>{[v.el,v.anchor]=b(v.children,m,_,T,v.el,v.anchor)},P=({el:v,anchor:m},_,T)=>{let S;for(;v&&v!==m;)S=p(v),r(v,_,T),v=S;r(m,_,T)},R=({el:v,anchor:m})=>{let _;for(;v&&v!==m;)_=p(v),l(v),v=_;l(m)},V=(v,m,_,T,S,L,D,O,M)=>{D=D||m.type==="svg",v==null?I(m,_,T,S,L,D,O,M):z(v,m,S,L,D,O,M)},I=(v,m,_,T,S,L,D,O)=>{let M,A;const{type:G,props:j,shapeFlag:Z,transition:Q,dirs:te}=v;if(M=v.el=s(v.type,L,j&&j.is,j),Z&8?f(M,v.children):Z&16&&C(v.children,M,null,T,S,L&&G!=="foreignObject",D,O),te&&ct(v,null,T,"created"),N(M,v,v.scopeId,D,T),j){for(const pe in j)pe!=="value"&&!Mn(pe)&&o(M,pe,null,j[pe],L,v.children,T,S,Re);"value"in j&&o(M,"value",null,j.value),(A=j.onVnodeBeforeMount)&&Ke(A,T,v)}te&&ct(v,null,T,"beforeMount");const ge=(!S||S&&!S.pendingBranch)&&Q&&!Q.persisted;ge&&Q.beforeEnter(M),r(M,m,_),((A=j&&j.onVnodeMounted)||ge||te)&&Ne(()=>{A&&Ke(A,T,v),ge&&Q.enter(M),te&&ct(v,null,T,"mounted")},S)},N=(v,m,_,T,S)=>{if(_&&h(v,_),T)for(let L=0;L{for(let A=M;A{const O=m.el=v.el;let{patchFlag:M,dynamicChildren:A,dirs:G}=m;M|=v.patchFlag&16;const j=v.props||we,Z=m.props||we;let Q;_&&Bt(_,!1),(Q=Z.onVnodeBeforeUpdate)&&Ke(Q,_,m,v),G&&ct(m,v,_,"beforeUpdate"),_&&Bt(_,!0);const te=S&&m.type!=="foreignObject";if(A?q(v.dynamicChildren,A,O,_,T,te,L):D||ce(v,m,O,null,_,T,te,L,!1),M>0){if(M&16)ne(O,m,j,Z,_,T,S);else if(M&2&&j.class!==Z.class&&o(O,"class",null,Z.class,S),M&4&&o(O,"style",j.style,Z.style,S),M&8){const ge=m.dynamicProps;for(let pe=0;pe{Q&&Ke(Q,_,m,v),G&&ct(m,v,_,"updated")},T)},q=(v,m,_,T,S,L,D)=>{for(let O=0;O{if(_!==T){if(_!==we)for(const O in _)!Mn(O)&&!(O in T)&&o(v,O,_[O],null,D,m.children,S,L,Re);for(const O in T){if(Mn(O))continue;const M=T[O],A=_[O];M!==A&&O!=="value"&&o(v,O,A,M,D,m.children,S,L,Re)}"value"in T&&o(v,"value",_.value,T.value)}},B=(v,m,_,T,S,L,D,O,M)=>{const A=m.el=v?v.el:a(""),G=m.anchor=v?v.anchor:a("");let{patchFlag:j,dynamicChildren:Z,slotScopeIds:Q}=m;Q&&(O=O?O.concat(Q):Q),v==null?(r(A,_,T),r(G,_,T),C(m.children,_,G,S,L,D,O,M)):j>0&&j&64&&Z&&v.dynamicChildren?(q(v.dynamicChildren,Z,_,S,L,D,O),(m.key!=null||S&&m===S.subTree)&&Ma(v,m,!0)):ce(v,m,_,G,S,L,D,O,M)},J=(v,m,_,T,S,L,D,O,M)=>{m.slotScopeIds=O,v==null?m.shapeFlag&512?S.ctx.activate(m,_,T,D,M):K(m,_,T,S,L,D,M):Pe(v,m,M)},K=(v,m,_,T,S,L,D)=>{const O=v.component=Of(v,T,S);if(Jn(v)&&(O.ctx.renderer=$),Mf(O),O.asyncDep){if(S&&S.registerDep(O,ie),!v.el){const M=O.subTree=Se(ft);g(null,M,m,_)}return}ie(O,v,m,_,S,L,D)},Pe=(v,m,_)=>{const T=m.component=v.component;if(Wu(v,m,_))if(T.asyncDep&&!T.asyncResolved){ve(T,m,_);return}else T.next=m,Du(T.update),T.update();else m.el=v.el,T.vnode=m},ie=(v,m,_,T,S,L,D)=>{const O=()=>{if(v.isMounted){let{next:G,bu:j,u:Z,parent:Q,vnode:te}=v,ge=G,pe;Bt(v,!1),G?(G.el=te.el,ve(v,G,D)):G=te,j&&Ur(j),(pe=G.props&&G.props.onVnodeBeforeUpdate)&&Ke(pe,Q,G,te),Bt(v,!0);const Ce=Gr(v),Qe=v.subTree;v.subTree=Ce,w(Qe,Ce,d(Qe.el),k(Qe),v,S,L),G.el=Ce.el,ge===null&&Ku(v,Ce.el),Z&&Ne(Z,S),(pe=G.props&&G.props.onVnodeUpdated)&&Ne(()=>Ke(pe,Q,G,te),S)}else{let G;const{el:j,props:Z}=m,{bm:Q,m:te,parent:ge}=v,pe=$n(m);if(Bt(v,!1),Q&&Ur(Q),!pe&&(G=Z&&Z.onVnodeBeforeMount)&&Ke(G,ge,m),Bt(v,!0),j&&ue){const Ce=()=>{v.subTree=Gr(v),ue(j,v.subTree,v,S,null)};pe?m.type.__asyncLoader().then(()=>!v.isUnmounted&&Ce()):Ce()}else{const Ce=v.subTree=Gr(v);w(null,Ce,_,T,v,S,L),m.el=Ce.el}if(te&&Ne(te,S),!pe&&(G=Z&&Z.onVnodeMounted)){const Ce=m;Ne(()=>Ke(G,ge,Ce),S)}(m.shapeFlag&256||ge&&$n(ge.vnode)&&ge.vnode.shapeFlag&256)&&v.a&&Ne(v.a,S),v.isMounted=!0,m=_=T=null}},M=v.effect=new Wl(O,()=>Mr(A),v.scope),A=v.update=()=>M.run();A.id=v.uid,Bt(v,!0),A()},ve=(v,m,_)=>{m.component=v;const T=v.vnode.props;v.vnode=m,v.next=null,gf(v,m.props,T,_),_f(v,m.children,_),Cn(),Vo(),kn()},ce=(v,m,_,T,S,L,D,O,M=!1)=>{const A=v&&v.children,G=v?v.shapeFlag:0,j=m.children,{patchFlag:Z,shapeFlag:Q}=m;if(Z>0){if(Z&128){xt(A,j,_,T,S,L,D,O,M);return}else if(Z&256){pt(A,j,_,T,S,L,D,O,M);return}}Q&8?(G&16&&Re(A,S,L),j!==A&&f(_,j)):G&16?Q&16?xt(A,j,_,T,S,L,D,O,M):Re(A,S,L,!0):(G&8&&f(_,""),Q&16&&C(j,_,T,S,L,D,O,M))},pt=(v,m,_,T,S,L,D,O,M)=>{v=v||un,m=m||un;const A=v.length,G=m.length,j=Math.min(A,G);let Z;for(Z=0;ZG?Re(v,S,L,!0,!1,j):C(m,_,T,S,L,D,O,M,j)},xt=(v,m,_,T,S,L,D,O,M)=>{let A=0;const G=m.length;let j=v.length-1,Z=G-1;for(;A<=j&&A<=Z;){const Q=v[A],te=m[A]=M?It(m[A]):Je(m[A]);if(jt(Q,te))w(Q,te,_,null,S,L,D,O,M);else break;A++}for(;A<=j&&A<=Z;){const Q=v[j],te=m[Z]=M?It(m[Z]):Je(m[Z]);if(jt(Q,te))w(Q,te,_,null,S,L,D,O,M);else break;j--,Z--}if(A>j){if(A<=Z){const Q=Z+1,te=QZ)for(;A<=j;)$e(v[A],S,L,!0),A++;else{const Q=A,te=A,ge=new Map;for(A=te;A<=Z;A++){const Ve=m[A]=M?It(m[A]):Je(m[A]);Ve.key!=null&&ge.set(Ve.key,A)}let pe,Ce=0;const Qe=Z-te+1;let nn=!1,Ao=0;const Ln=new Array(Qe);for(A=0;A=Qe){$e(Ve,S,L,!0);continue}let it;if(Ve.key!=null)it=ge.get(Ve.key);else for(pe=te;pe<=Z;pe++)if(Ln[pe-te]===0&&jt(Ve,m[pe])){it=pe;break}it===void 0?$e(Ve,S,L,!0):(Ln[it-te]=A+1,it>=Ao?Ao=it:nn=!0,w(Ve,m[it],_,null,S,L,D,O,M),Ce++)}const Po=nn?Cf(Ln):un;for(pe=Po.length-1,A=Qe-1;A>=0;A--){const Ve=te+A,it=m[Ve],Io=Ve+1{const{el:L,type:D,transition:O,children:M,shapeFlag:A}=v;if(A&6){at(v.component.subTree,m,_,T);return}if(A&128){v.suspense.move(m,_,T);return}if(A&64){D.move(v,m,_,$);return}if(D===je){r(L,m,_);for(let j=0;jO.enter(L),S);else{const{leave:j,delayLeave:Z,afterLeave:Q}=O,te=()=>r(L,m,_),ge=()=>{j(L,()=>{te(),Q&&Q()})};Z?Z(L,te,ge):ge()}else r(L,m,_)},$e=(v,m,_,T=!1,S=!1)=>{const{type:L,props:D,ref:O,children:M,dynamicChildren:A,shapeFlag:G,patchFlag:j,dirs:Z}=v;if(O!=null&&xr(O,null,_,v,!0),G&256){m.ctx.deactivate(v);return}const Q=G&1&&Z,te=!$n(v);let ge;if(te&&(ge=D&&D.onVnodeBeforeUnmount)&&Ke(ge,m,v),G&6)lr(v.component,_,T);else{if(G&128){v.suspense.unmount(_,T);return}Q&&ct(v,null,m,"beforeUnmount"),G&64?v.type.remove(v,m,_,S,$,T):A&&(L!==je||j>0&&j&64)?Re(A,m,_,!1,!0):(L===je&&j&384||!S&&G&16)&&Re(M,m,_),T&&en(v)}(te&&(ge=D&&D.onVnodeUnmounted)||Q)&&Ne(()=>{ge&&Ke(ge,m,v),Q&&ct(v,null,m,"unmounted")},_)},en=v=>{const{type:m,el:_,anchor:T,transition:S}=v;if(m===je){tn(_,T);return}if(m===Dn){R(v);return}const L=()=>{l(_),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(v.shapeFlag&1&&S&&!S.persisted){const{leave:D,delayLeave:O}=S,M=()=>D(_,L);O?O(v.el,L,M):M()}else L()},tn=(v,m)=>{let _;for(;v!==m;)_=p(v),l(v),v=_;l(m)},lr=(v,m,_)=>{const{bum:T,scope:S,update:L,subTree:D,um:O}=v;T&&Ur(T),S.stop(),L&&(L.active=!1,$e(D,v,m,_)),O&&Ne(O,m),Ne(()=>{v.isUnmounted=!0},m),m&&m.pendingBranch&&!m.isUnmounted&&v.asyncDep&&!v.asyncResolved&&v.suspenseId===m.pendingId&&(m.deps--,m.deps===0&&m.resolve())},Re=(v,m,_,T=!1,S=!1,L=0)=>{for(let D=L;Dv.shapeFlag&6?k(v.component.subTree):v.shapeFlag&128?v.suspense.next():p(v.anchor||v.el),F=(v,m,_)=>{v==null?m._vnode&&$e(m._vnode,null,null,!0):w(m._vnode||null,v,m,null,null,null,_),Vo(),Er(),m._vnode=v},$={p:w,um:$e,m:at,r:en,mt:K,mc:C,pc:ce,pbc:q,n:k,o:e};let U,ue;return t&&([U,ue]=t($)),{render:F,hydrate:U,createApp:vf(F,U)}}function Bt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Ma(e,t,n=!1){const r=e.children,l=t.children;if(Y(r)&&Y(l))for(let o=0;o>1,e[n[a]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,s=n[o-1];o-- >0;)n[o]=s,s=t[s];return n}const kf=e=>e.__isTeleport,je=Symbol.for("v-fgt"),mn=Symbol.for("v-txt"),ft=Symbol.for("v-cmt"),Dn=Symbol.for("v-stc"),Hn=[];let tt=null;function E0(e=!1){Hn.push(tt=e?null:[])}function xf(){Hn.pop(),tt=Hn[Hn.length-1]||null}let Gn=1;function Jo(e){Gn+=e}function Sf(e){return e.dynamicChildren=Gn>0?tt||un:null,xf(),Gn>0&&tt&&tt.push(e),e}function T0(e,t,n,r,l,o){return Sf(Na(e,t,n,r,l,o,!0))}function Tl(e){return e?e.__v_isVNode===!0:!1}function jt(e,t){return e.type===t.type&&e.key===t.key}const Dr="__vInternal",$a=({key:e})=>e??null,br=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?fe(e)||xe(e)||ee(e)?{i:Ue,r:e,k:t,f:!!n}:e:null);function Na(e,t=null,n=null,r=0,l=null,o=e===je?0:1,s=!1,a=!1){const i={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&$a(t),ref:t&&br(t),scopeId:ga,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:l,dynamicChildren:null,appContext:null,ctx:Ue};return a?(lo(i,n),o&128&&e.normalize(i)):n&&(i.shapeFlag|=fe(n)?8:16),Gn>0&&!s&&tt&&(i.patchFlag>0||o&6)&&i.patchFlag!==32&&tt.push(i),i}const Se=Lf;function Lf(e,t=null,n=null,r=0,l=null,o=!1){if((!e||e===of)&&(e=ft),Tl(e)){const a=Nt(e,t,!0);return n&&lo(a,n),Gn>0&&!o&&tt&&(a.shapeFlag&6?tt[tt.indexOf(e)]=a:tt.push(a)),a.patchFlag|=-2,a}if(Ff(e)&&(e=e.__vccOpts),t){t=Af(t);let{class:a,style:i}=t;a&&!fe(a)&&(t.class=zl(a)),Ee(i)&&(ia(i)&&!Y(i)&&(i=Te({},i)),t.style=Vl(i))}const s=fe(e)?1:Uu(e)?128:kf(e)?64:Ee(e)?4:ee(e)?2:0;return Na(e,t,n,r,l,s,o,!0)}function Af(e){return e?ia(e)||Dr in e?Te({},e):e:null}function Nt(e,t,n=!1){const{props:r,ref:l,patchFlag:o,children:s}=e,a=t?Pf(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&$a(a),ref:t&&t.ref?n&&l?Y(l)?l.concat(br(t)):[l,br(t)]:br(t):l,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==je?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Nt(e.ssContent),ssFallback:e.ssFallback&&Nt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Da(e=" ",t=0){return Se(mn,null,e,t)}function C0(e,t){const n=Se(Dn,null,e);return n.staticCount=t,n}function Je(e){return e==null||typeof e=="boolean"?Se(ft):Y(e)?Se(je,null,e.slice()):typeof e=="object"?It(e):Se(mn,null,String(e))}function It(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Nt(e)}function lo(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(Y(t))n=16;else if(typeof t=="object")if(r&65){const l=t.default;l&&(l._c&&(l._d=!1),lo(e,l()),l._c&&(l._d=!0));return}else{n=32;const l=t._;!l&&!(Dr in t)?t._ctx=Ue:l===3&&Ue&&(Ue.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ee(t)?(t={default:t,_ctx:Ue},n=32):(t=String(t),r&64?(n=16,t=[Da(t)]):n=8);e.children=t,e.shapeFlag|=n}function Pf(...e){const t={};for(let n=0;nke||Ue;let oo,rn,es="__VUE_INSTANCE_SETTERS__";(rn=hl()[es])||(rn=hl()[es]=[]),rn.push(e=>ke=e),oo=e=>{rn.length>1?rn.forEach(t=>t(e)):rn[0](e)};const gn=e=>{oo(e),e.scope.on()},Zt=()=>{ke&&ke.scope.off(),oo(null)};function Ha(e){return e.vnode.shapeFlag&4}let bn=!1;function Mf(e,t=!1){bn=t;const{props:n,children:r}=e.vnode,l=Ha(e);mf(e,n,l,t),yf(e,r);const o=l?$f(e,t):void 0;return bn=!1,o}function $f(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=ca(new Proxy(e.ctx,af));const{setup:r}=n;if(r){const l=e.setupContext=r.length>1?Df(e):null;gn(e),Cn();const o=Mt(r,e,0,[e.props,l]);if(kn(),Zt(),Zs(o)){if(o.then(Zt,Zt),t)return o.then(s=>{ts(e,s,t)}).catch(s=>{Qn(s,e,0)});e.asyncDep=o}else ts(e,o,t)}else Fa(e,t)}function ts(e,t,n){ee(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Ee(t)&&(e.setupState=fa(t)),Fa(e,n)}let ns;function Fa(e,t,n){const r=e.type;if(!e.render){if(!t&&ns&&!r.render){const l=r.template||no(e).template;if(l){const{isCustomElement:o,compilerOptions:s}=e.appContext.config,{delimiters:a,compilerOptions:i}=r,c=Te(Te({isCustomElement:o,delimiters:a},s),i);r.render=ns(l,c)}}e.render=r.render||nt}gn(e),Cn(),cf(e),kn(),Zt()}function Nf(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return Fe(e,"get","$attrs"),t[n]}}))}function Df(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Nf(e)},slots:e.slots,emit:e.emit,expose:t}}function so(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(fa(ca(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Nn)return Nn[n](e)},has(t,n){return n in t||n in Nn}}))}function Hf(e,t=!0){return ee(e)?e.displayName||e.name:e.name||t&&e.__name}function Ff(e){return ee(e)&&"__vccOpts"in e}const x=(e,t)=>Mu(e,t,bn);function u(e,t,n){const r=arguments.length;return r===2?Ee(t)&&!Y(t)?Tl(t)?Se(e,null,[t]):Se(e,t):Se(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Tl(n)&&(n=[n]),Se(e,t,n))}const Bf=Symbol.for("v-scx"),Vf=()=>be(Bf),zf="3.3.4",jf="http://www.w3.org/2000/svg",Wt=typeof document<"u"?document:null,rs=Wt&&Wt.createElement("template"),Wf={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const l=t?Wt.createElementNS(jf,e):Wt.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&l.setAttribute("multiple",r.multiple),l},createText:e=>Wt.createTextNode(e),createComment:e=>Wt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Wt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,l,o){const s=n?n.previousSibling:t.lastChild;if(l&&(l===o||l.nextSibling))for(;t.insertBefore(l.cloneNode(!0),n),!(l===o||!(l=l.nextSibling)););else{rs.innerHTML=r?`${e}`:e;const a=rs.content;if(r){const i=a.firstChild;for(;i.firstChild;)a.appendChild(i.firstChild);a.removeChild(i)}t.insertBefore(a,n)}return[s?s.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Kf(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Uf(e,t,n){const r=e.style,l=fe(n);if(n&&!l){if(t&&!fe(t))for(const o in t)n[o]==null&&Cl(r,o,"");for(const o in n)Cl(r,o,n[o])}else{const o=r.display;l?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=o)}}const ls=/\s*!important$/;function Cl(e,t,n){if(Y(n))n.forEach(r=>Cl(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Gf(e,t);ls.test(n)?e.setProperty(Tn(r),n.replace(ls,""),"important"):e[r]=n}}const os=["Webkit","Moz","ms"],Xr={};function Gf(e,t){const n=Xr[t];if(n)return n;let r=qe(t);if(r!=="filter"&&r in e)return Xr[t]=r;r=Yn(r);for(let l=0;lQr||(ed.then(()=>Qr=0),Qr=Date.now());function nd(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Ze(rd(r,n.value),t,5,[r])};return n.value=e,n.attached=td(),n}function rd(e,t){if(Y(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>l=>!l._stopped&&r&&r(l))}else return t}const is=/^on[a-z]/,ld=(e,t,n,r,l=!1,o,s,a,i)=>{t==="class"?Kf(e,r,l):t==="style"?Uf(e,n,r):qn(t)?Dl(t)||Qf(e,t,n,r,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):od(e,t,r,l))?qf(e,t,r,o,s,a,i):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Zf(e,t,r,l))};function od(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&is.test(t)&&ee(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||is.test(t)&&fe(n)?!1:t in e}const At="transition",An="animation",Dt=(e,{slots:t})=>u(qu,Va(e),t);Dt.displayName="Transition";const Ba={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},sd=Dt.props=Te({},Ea,Ba),Vt=(e,t=[])=>{Y(e)?e.forEach(n=>n(...t)):e&&e(...t)},cs=e=>e?Y(e)?e.some(t=>t.length>1):e.length>1:!1;function Va(e){const t={};for(const B in e)B in Ba||(t[B]=e[B]);if(e.css===!1)return t;const{name:n="v",type:r,duration:l,enterFromClass:o=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:i=o,appearActiveClass:c=s,appearToClass:f=a,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=e,b=ad(l),w=b&&b[0],E=b&&b[1],{onBeforeEnter:g,onEnter:y,onEnterCancelled:P,onLeave:R,onLeaveCancelled:V,onBeforeAppear:I=g,onAppear:N=y,onAppearCancelled:C=P}=t,z=(B,J,K)=>{Pt(B,J?f:a),Pt(B,J?c:s),K&&K()},q=(B,J)=>{B._isLeaving=!1,Pt(B,d),Pt(B,h),Pt(B,p),J&&J()},ne=B=>(J,K)=>{const Pe=B?N:y,ie=()=>z(J,B,K);Vt(Pe,[J,ie]),us(()=>{Pt(J,B?i:o),vt(J,B?f:a),cs(Pe)||fs(J,r,w,ie)})};return Te(t,{onBeforeEnter(B){Vt(g,[B]),vt(B,o),vt(B,s)},onBeforeAppear(B){Vt(I,[B]),vt(B,i),vt(B,c)},onEnter:ne(!1),onAppear:ne(!0),onLeave(B,J){B._isLeaving=!0;const K=()=>q(B,J);vt(B,d),ja(),vt(B,p),us(()=>{B._isLeaving&&(Pt(B,d),vt(B,h),cs(R)||fs(B,r,E,K))}),Vt(R,[B,K])},onEnterCancelled(B){z(B,!1),Vt(P,[B])},onAppearCancelled(B){z(B,!0),Vt(C,[B])},onLeaveCancelled(B){q(B),Vt(V,[B])}})}function ad(e){if(e==null)return null;if(Ee(e))return[Jr(e.enter),Jr(e.leave)];{const t=Jr(e);return[t,t]}}function Jr(e){return Wc(e)}function vt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Pt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function us(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let id=0;function fs(e,t,n,r){const l=e._endId=++id,o=()=>{l===e._endId&&r()};if(n)return setTimeout(o,n);const{type:s,timeout:a,propCount:i}=za(e,t);if(!s)return r();const c=s+"end";let f=0;const d=()=>{e.removeEventListener(c,p),o()},p=h=>{h.target===e&&++f>=i&&d()};setTimeout(()=>{f(n[b]||"").split(", "),l=r(`${At}Delay`),o=r(`${At}Duration`),s=ds(l,o),a=r(`${An}Delay`),i=r(`${An}Duration`),c=ds(a,i);let f=null,d=0,p=0;t===At?s>0&&(f=At,d=s,p=o.length):t===An?c>0&&(f=An,d=c,p=i.length):(d=Math.max(s,c),f=d>0?s>c?At:An:null,p=f?f===At?o.length:i.length:0);const h=f===At&&/\b(transform|all)(,|$)/.test(r(`${At}Property`).toString());return{type:f,timeout:d,propCount:p,hasTransform:h}}function ds(e,t){for(;e.lengthps(n)+ps(e[r])))}function ps(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function ja(){return document.body.offsetHeight}const Wa=new WeakMap,Ka=new WeakMap,Ua={name:"TransitionGroup",props:Te({},sd,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Qt(),r=wa();let l,o;return ka(()=>{if(!l.length)return;const s=e.moveClass||`${e.name||"v"}-move`;if(!hd(l[0].el,n.vnode.el,s))return;l.forEach(fd),l.forEach(dd);const a=l.filter(pd);ja(),a.forEach(i=>{const c=i.el,f=c.style;vt(c,s),f.transform=f.webkitTransform=f.transitionDuration="";const d=c._moveCb=p=>{p&&p.target!==c||(!p||/transform$/.test(p.propertyName))&&(c.removeEventListener("transitionend",d),c._moveCb=null,Pt(c,s))};c.addEventListener("transitionend",d)})}),()=>{const s=le(e),a=Va(s);let i=s.tag||je;l=o,o=t.default?eo(t.default()):[];for(let c=0;cdelete e.mode;Ua.props;const ud=Ua;function fd(e){const t=e.el;t._moveCb&&t._moveCb(),t._enterCb&&t._enterCb()}function dd(e){Ka.set(e,e.el.getBoundingClientRect())}function pd(e){const t=Wa.get(e),n=Ka.get(e),r=t.left-n.left,l=t.top-n.top;if(r||l){const o=e.el.style;return o.transform=o.webkitTransform=`translate(${r}px,${l}px)`,o.transitionDuration="0s",e}}function hd(e,t,n){const r=e.cloneNode();e._vtc&&e._vtc.forEach(s=>{s.split(/\s+/).forEach(a=>a&&r.classList.remove(a))}),n.split(/\s+/).forEach(s=>s&&r.classList.add(s)),r.style.display="none";const l=t.nodeType===1?t:t.parentNode;l.appendChild(r);const{hasTransform:o}=za(r);return l.removeChild(r),o}const vd=Te({patchProp:ld},Wf);let el,hs=!1;function md(){return el=hs?el:Ef(vd),hs=!0,el}const gd=(...e)=>{const t=md().createApp(...e),{mount:n}=t;return t.mount=r=>{const l=bd(r);if(l)return n(l,!0,l instanceof SVGElement)},t};function bd(e){return fe(e)?document.querySelector(e):e}const yd={"v-8daa1a0e":()=>H(()=>import("./index.html-7ea406c2.js"),[]).then(({data:e})=>e),"v-638c1d18":()=>H(()=>import("./index.html-f5c92ed1.js"),[]).then(({data:e})=>e),"v-fc42014a":()=>H(()=>import("./voice.html-e8e18946.js"),[]).then(({data:e})=>e),"v-744497ce":()=>H(()=>import("./index.html-983e0a4a.js"),[]).then(({data:e})=>e),"v-ba4144cc":()=>H(()=>import("./account.html-90bd473f.js"),[]).then(({data:e})=>e),"v-a405f8f2":()=>H(()=>import("./contact.html-3cff63b3.js"),[]).then(({data:e})=>e),"v-e0692e30":()=>H(()=>import("./dispose.html-102b9d52.js"),[]).then(({data:e})=>e),"v-504f4f28":()=>H(()=>import("./fav.html-20a3b00e.js"),[]).then(({data:e})=>e),"v-a83cae62":()=>H(()=>import("./file.html-dfe880a4.js"),[]).then(({data:e})=>e),"v-23159ff0":()=>H(()=>import("./group.html-ec66990a.js"),[]).then(({data:e})=>e),"v-4b693314":()=>H(()=>import("./guild.html-6966c300.js"),[]).then(({data:e})=>e),"v-15298000":()=>H(()=>import("./message.html-01bc5fb8.js"),[]).then(({data:e})=>e),"v-d1b14bd2":()=>H(()=>import("./other.html-32d2e4de.js"),[]).then(({data:e})=>e),"v-50f1df6c":()=>H(()=>import("./request-response.html-2fa1a2de.js"),[]).then(({data:e})=>e),"v-d0532dbc":()=>H(()=>import("./resources.html-4ff72615.js"),[]).then(({data:e})=>e),"v-1f099f65":()=>H(()=>import("./shamrock.html-93415924.js"),[]).then(({data:e})=>e),"v-0e934be0":()=>H(()=>import("./user.html-cf480335.js"),[]).then(({data:e})=>e),"v-7ca4f50e":()=>H(()=>import("./index.html-258d0d5f.js"),[]).then(({data:e})=>e),"v-32977d7c":()=>H(()=>import("./general-data.html-b027dcd6.js"),[]).then(({data:e})=>e),"v-70b00580":()=>H(()=>import("./message.html-0ca9d8ee.js"),[]).then(({data:e})=>e),"v-386d2733":()=>H(()=>import("./notice.html-5519df6e.js"),[]).then(({data:e})=>e),"v-61fe5fb8":()=>H(()=>import("./request.html-0743679e.js"),[]).then(({data:e})=>e),"v-fffb8e28":()=>H(()=>import("./index.html-0199c0aa.js"),[]).then(({data:e})=>e),"v-4f4ccb8f":()=>H(()=>import("./configuration.html-c1e61f48.js"),[]).then(({data:e})=>e),"v-37e1c06f":()=>H(()=>import("./faq.html-b8980499.js"),[]).then(({data:e})=>e),"v-fb0f0066":()=>H(()=>import("./getting-started.html-717781e9.js"),[]).then(({data:e})=>e),"v-89c429fe":()=>H(()=>import("./index.html-2510ab56.js"),[]).then(({data:e})=>e),"v-75ed5c96":()=>H(()=>import("./advanced.html-cf16f849.js"),[]).then(({data:e})=>e),"v-e108f4be":()=>H(()=>import("./format.html-2e24f616.js"),[]).then(({data:e})=>e),"v-30c0fd36":()=>H(()=>import("./media.html-5b7447ab.js"),[]).then(({data:e})=>e),"v-28fa56b1":()=>H(()=>import("./normal.html-a29eb19d.js"),[]).then(({data:e})=>e),"v-41fe057e":()=>H(()=>import("./special.html-2e3560dc.js"),[]).then(({data:e})=>e),"v-3706649a":()=>H(()=>import("./404.html-f04ced3e.js"),[]).then(({data:e})=>e)},_d=JSON.parse('{"base":"/OpenShamrock/","lang":"zh-CN","title":"OpenShamrock","description":"","head":[["meta",{"name":"viewport","content":"width=device-width,initial-scale=1,user-scalable=no"}],["script",{"async":true,"src":"https://umami.zhenxin.me/script.js","data-website-id":"a3220f2d-2267-4b95-b4aa-a5964cda0a0d"}],["link",{"rel":"icon","href":"/OpenShamrock/shamrock.webp"}]],"locales":{}}');var wd=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),Ed=e=>{const t=new Set,n=[];return e.forEach(r=>{const l=wd(r);t.has(l)||(t.add(l),n.push(r))}),n},Td=e=>e[e.length-1]==="/"||e.endsWith(".html")?e:`${e}/`,Cd=e=>e.startsWith("ftp://"),xn=e=>/^(https?:)?\/\//.test(e),kd=/.md((\?|#).*)?$/,Sr=(e,t="/")=>!!(xn(e)||Cd(e)||e.startsWith("/")&&!e.startsWith(t)&&!kd.test(e)),Ga=e=>/^mailto:/.test(e),xd=e=>/^tel:/.test(e),ao=e=>Object.prototype.toString.call(e)==="[object Object]",io=e=>e[e.length-1]==="/"?e.slice(0,-1):e,Za=e=>e[0]==="/"?e.slice(1):e,Sd=(e,t)=>{const n=Object.keys(e).sort((r,l)=>{const o=l.split("/").length-r.split("/").length;return o!==0?o:l.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"};const qa={"v-8daa1a0e":re(()=>H(()=>import("./index.html-061944dc.js"),["assets/index.html-061944dc.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-638c1d18":re(()=>H(()=>import("./index.html-7b2996b5.js"),["assets/index.html-7b2996b5.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-fc42014a":re(()=>H(()=>import("./voice.html-a3a687f3.js"),["assets/voice.html-a3a687f3.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-744497ce":re(()=>H(()=>import("./index.html-8d913685.js"),["assets/index.html-8d913685.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-ba4144cc":re(()=>H(()=>import("./account.html-2b51ead3.js"),["assets/account.html-2b51ead3.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-a405f8f2":re(()=>H(()=>import("./contact.html-086627fd.js"),["assets/contact.html-086627fd.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-e0692e30":re(()=>H(()=>import("./dispose.html-b9b3b569.js"),["assets/dispose.html-b9b3b569.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-504f4f28":re(()=>H(()=>import("./fav.html-2a68d12c.js"),["assets/fav.html-2a68d12c.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-a83cae62":re(()=>H(()=>import("./file.html-873076e9.js"),["assets/file.html-873076e9.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-23159ff0":re(()=>H(()=>import("./group.html-d11fdb99.js"),["assets/group.html-d11fdb99.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4b693314":re(()=>H(()=>import("./guild.html-081b5f38.js"),["assets/guild.html-081b5f38.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-15298000":re(()=>H(()=>import("./message.html-921e9a24.js"),["assets/message.html-921e9a24.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-d1b14bd2":re(()=>H(()=>import("./other.html-db200010.js"),["assets/other.html-db200010.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-50f1df6c":re(()=>H(()=>import("./request-response.html-0fb1896d.js"),["assets/request-response.html-0fb1896d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-d0532dbc":re(()=>H(()=>import("./resources.html-e4aa1e2b.js"),["assets/resources.html-e4aa1e2b.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-1f099f65":re(()=>H(()=>import("./shamrock.html-22c72fef.js"),["assets/shamrock.html-22c72fef.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-0e934be0":re(()=>H(()=>import("./user.html-ccc3ea56.js"),["assets/user.html-ccc3ea56.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-7ca4f50e":re(()=>H(()=>import("./index.html-02864eab.js"),["assets/index.html-02864eab.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-32977d7c":re(()=>H(()=>import("./general-data.html-fa6997a7.js"),["assets/general-data.html-fa6997a7.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-70b00580":re(()=>H(()=>import("./message.html-084f1447.js"),["assets/message.html-084f1447.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-386d2733":re(()=>H(()=>import("./notice.html-9aae265d.js"),["assets/notice.html-9aae265d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-61fe5fb8":re(()=>H(()=>import("./request.html-e5727604.js"),["assets/request.html-e5727604.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-fffb8e28":re(()=>H(()=>import("./index.html-8c5205d0.js"),["assets/index.html-8c5205d0.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-4f4ccb8f":re(()=>H(()=>import("./configuration.html-a2ca3d1d.js"),["assets/configuration.html-a2ca3d1d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-37e1c06f":re(()=>H(()=>import("./faq.html-23bd903d.js"),["assets/faq.html-23bd903d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-fb0f0066":re(()=>H(()=>import("./getting-started.html-33fa2926.js"),["assets/getting-started.html-33fa2926.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-89c429fe":re(()=>H(()=>import("./index.html-0feb9f4d.js"),["assets/index.html-0feb9f4d.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-75ed5c96":re(()=>H(()=>import("./advanced.html-87780180.js"),["assets/advanced.html-87780180.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-e108f4be":re(()=>H(()=>import("./format.html-f6f78276.js"),["assets/format.html-f6f78276.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-30c0fd36":re(()=>H(()=>import("./media.html-26e079f3.js"),["assets/media.html-26e079f3.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-28fa56b1":re(()=>H(()=>import("./normal.html-f51d1b4f.js"),["assets/normal.html-f51d1b4f.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-41fe057e":re(()=>H(()=>import("./special.html-0dd674b5.js"),["assets/special.html-0dd674b5.js","assets/plugin-vue_export-helper-c27b6911.js"])),"v-3706649a":re(()=>H(()=>import("./404.html-8fe39d90.js"),["assets/404.html-8fe39d90.js","assets/plugin-vue_export-helper-c27b6911.js"]))};var Ld=Symbol(""),Ya=Symbol(""),Ad=qt({key:"",path:"",title:"",lang:"",frontmatter:{},headers:[]}),he=()=>{const e=be(Ya);if(!e)throw new Error("pageData() is called without provider.");return e},Xa=Symbol(""),Ae=()=>{const e=be(Xa);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},Qa=Symbol(""),Pd=()=>{const e=be(Qa);if(!e)throw new Error("usePageHead() is called without provider.");return e},Id=Symbol(""),Ja=Symbol(""),ei=()=>{const e=be(Ja);if(!e)throw new Error("usePageLang() is called without provider.");return e},ti=Symbol(""),Rd=()=>{const e=be(ti);if(!e)throw new Error("usePageLayout() is called without provider.");return e},Od=X(yd),co=Symbol(""),Jt=()=>{const e=be(co);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},an=X(_d),ni=()=>an,ri=Symbol(""),Hr=()=>{const e=be(ri);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},Md=Symbol(""),$d="Layout",Nd="NotFound",mt=Xn({resolveLayouts:e=>e.reduce((t,n)=>({...t,...n.layouts}),{}),resolvePageData:async e=>{const t=Od.value[e];return await(t==null?void 0:t())??Ad},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,t,n)=>{const r=fe(t.description)?t.description:n.description,l=[...Y(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return Ed(l)},resolvePageHeadTitle:(e,t)=>[e.title,t.title].filter(n=>!!n).join(" | "),resolvePageLang:(e,t)=>e.lang||t.lang||"en-US",resolvePageLayout:(e,t)=>{let n;if(e.path){const r=e.frontmatter.layout;fe(r)?n=r:n=$d}else n=Nd;return t[n]},resolveRouteLocale:(e,t)=>Sd(e,t),resolveSiteLocaleData:(e,t)=>({...e,...e.locales[t]})}),Fr=W({name:"ClientOnly",setup(e,t){const n=X(!1);return _e(()=>{n.value=!0}),()=>{var r,l;return n.value?(l=(r=t.slots).default)==null?void 0:l.call(r):null}}}),li=W({name:"Content",props:{pageKey:{type:String,required:!1,default:""}},setup(e){const t=he(),n=x(()=>qa[e.pageKey||t.value.key]);return()=>n.value?u(n.value):u("div","404 Not Found")}}),st=(e={})=>e,De=e=>xn(e)?e:`/OpenShamrock/${Za(e)}`;const Dd={};/*! + * vue-router v4.2.5 + * (c) 2023 Eduardo San Martin Morote + * @license MIT + */const on=typeof window<"u";function Hd(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const de=Object.assign;function tl(e,t){const n={};for(const r in t){const l=t[r];n[r]=ot(l)?l.map(e):e(l)}return n}const Fn=()=>{},ot=Array.isArray,Fd=/\/$/,Bd=e=>e.replace(Fd,"");function nl(e,t,n="/"){let r,l={},o="",s="";const a=t.indexOf("#");let i=t.indexOf("?");return a=0&&(i=-1),i>-1&&(r=t.slice(0,i),o=t.slice(i+1,a>-1?a:t.length),l=e(o)),a>-1&&(r=r||t.slice(0,a),s=t.slice(a,t.length)),r=Wd(r??t,n),{fullPath:r+(o&&"?")+o+s,path:r,query:l,hash:s}}function Vd(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function vs(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function zd(e,t,n){const r=t.matched.length-1,l=n.matched.length-1;return r>-1&&r===l&&yn(t.matched[r],n.matched[l])&&oi(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function yn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function oi(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!jd(e[n],t[n]))return!1;return!0}function jd(e,t){return ot(e)?ms(e,t):ot(t)?ms(t,e):e===t}function ms(e,t){return ot(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Wd(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),l=r[r.length-1];(l===".."||l===".")&&r.push("");let o=n.length-1,s,a;for(s=0;s1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(s-(s===r.length?1:0)).join("/")}var Zn;(function(e){e.pop="pop",e.push="push"})(Zn||(Zn={}));var Bn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Bn||(Bn={}));function Kd(e){if(!e)if(on){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Bd(e)}const Ud=/^[^#]+#/;function Gd(e,t){return e.replace(Ud,"#")+t}function Zd(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const Br=()=>({left:window.pageXOffset,top:window.pageYOffset});function qd(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),l=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!l)return;t=Zd(l,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function gs(e,t){return(history.state?history.state.position-t:-1)+e}const kl=new Map;function Yd(e,t){kl.set(e,t)}function Xd(e){const t=kl.get(e);return kl.delete(e),t}let Qd=()=>location.protocol+"//"+location.host;function si(e,t){const{pathname:n,search:r,hash:l}=t,o=e.indexOf("#");if(o>-1){let a=l.includes(e.slice(o))?e.slice(o).length:1,i=l.slice(a);return i[0]!=="/"&&(i="/"+i),vs(i,"")}return vs(n,e)+r+l}function Jd(e,t,n,r){let l=[],o=[],s=null;const a=({state:p})=>{const h=si(e,location),b=n.value,w=t.value;let E=0;if(p){if(n.value=h,t.value=p,s&&s===b){s=null;return}E=w?p.position-w.position:0}else r(h);l.forEach(g=>{g(n.value,b,{delta:E,type:Zn.pop,direction:E?E>0?Bn.forward:Bn.back:Bn.unknown})})};function i(){s=n.value}function c(p){l.push(p);const h=()=>{const b=l.indexOf(p);b>-1&&l.splice(b,1)};return o.push(h),h}function f(){const{history:p}=window;p.state&&p.replaceState(de({},p.state,{scroll:Br()}),"")}function d(){for(const p of o)p();o=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",f)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",f,{passive:!0}),{pauseListeners:i,listen:c,destroy:d}}function bs(e,t,n,r=!1,l=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:l?Br():null}}function ep(e){const{history:t,location:n}=window,r={value:si(e,n)},l={value:t.state};l.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(i,c,f){const d=e.indexOf("#"),p=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+i:Qd()+e+i;try{t[f?"replaceState":"pushState"](c,"",p),l.value=c}catch(h){console.error(h),n[f?"replace":"assign"](p)}}function s(i,c){const f=de({},t.state,bs(l.value.back,i,l.value.forward,!0),c,{position:l.value.position});o(i,f,!0),r.value=i}function a(i,c){const f=de({},l.value,t.state,{forward:i,scroll:Br()});o(f.current,f,!0);const d=de({},bs(r.value,i,null),{position:f.position+1},c);o(i,d,!1),r.value=i}return{location:r,state:l,push:a,replace:s}}function tp(e){e=Kd(e);const t=ep(e),n=Jd(e,t.state,t.location,t.replace);function r(o,s=!0){s||n.pauseListeners(),history.go(o)}const l=de({location:"",base:e,go:r,createHref:Gd.bind(null,e)},t,n);return Object.defineProperty(l,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(l,"state",{enumerable:!0,get:()=>t.state.value}),l}function np(e){return typeof e=="string"||e&&typeof e=="object"}function ai(e){return typeof e=="string"||typeof e=="symbol"}const gt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},ii=Symbol("");var ys;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(ys||(ys={}));function _n(e,t){return de(new Error,{type:e,[ii]:!0},t)}function ht(e,t){return e instanceof Error&&ii in e&&(t==null||!!(e.type&t))}const _s="[^/]+?",rp={sensitive:!1,strict:!1,start:!0,end:!0},lp=/[.+*?^${}()[\]/\\]/g;function op(e,t){const n=de({},rp,t),r=[];let l=n.start?"^":"";const o=[];for(const c of e){const f=c.length?[]:[90];n.strict&&!c.length&&(l+="/");for(let d=0;dt.length?t.length===1&&t[0]===40+40?1:-1:0}function ap(e,t){let n=0;const r=e.score,l=t.score;for(;n0&&t[t.length-1]<0}const ip={type:0,value:""},cp=/[a-zA-Z0-9_]/;function up(e){if(!e)return[[]];if(e==="/")return[[ip]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(h){throw new Error(`ERR (${n})/"${c}": ${h}`)}let n=0,r=n;const l=[];let o;function s(){o&&l.push(o),o=[]}let a=0,i,c="",f="";function d(){c&&(n===0?o.push({type:0,value:c}):n===1||n===2||n===3?(o.length>1&&(i==="*"||i==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:c,regexp:f,repeatable:i==="*"||i==="+",optional:i==="*"||i==="?"})):t("Invalid state to consume buffer"),c="")}function p(){c+=i}for(;a{s(y)}:Fn}function s(f){if(ai(f)){const d=r.get(f);d&&(r.delete(f),n.splice(n.indexOf(d),1),d.children.forEach(s),d.alias.forEach(s))}else{const d=n.indexOf(f);d>-1&&(n.splice(d,1),f.record.name&&r.delete(f.record.name),f.children.forEach(s),f.alias.forEach(s))}}function a(){return n}function i(f){let d=0;for(;d=0&&(f.record.path!==n[d].record.path||!ci(f,n[d]));)d++;n.splice(d,0,f),f.record.name&&!Ts(f)&&r.set(f.record.name,f)}function c(f,d){let p,h={},b,w;if("name"in f&&f.name){if(p=r.get(f.name),!p)throw _n(1,{location:f});w=p.record.name,h=de(Es(d.params,p.keys.filter(y=>!y.optional).map(y=>y.name)),f.params&&Es(f.params,p.keys.map(y=>y.name))),b=p.stringify(h)}else if("path"in f)b=f.path,p=n.find(y=>y.re.test(b)),p&&(h=p.parse(b),w=p.record.name);else{if(p=d.name?r.get(d.name):n.find(y=>y.re.test(d.path)),!p)throw _n(1,{location:f,currentLocation:d});w=p.record.name,h=de({},d.params,f.params),b=p.stringify(h)}const E=[];let g=p;for(;g;)E.unshift(g.record),g=g.parent;return{name:w,path:b,params:h,matched:E,meta:vp(E)}}return e.forEach(f=>o(f)),{addRoute:o,resolve:c,removeRoute:s,getRoutes:a,getRecordMatcher:l}}function Es(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function pp(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:hp(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function hp(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function Ts(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function vp(e){return e.reduce((t,n)=>de(t,n.meta),{})}function Cs(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function ci(e,t){return t.children.some(n=>n===e||ci(e,n))}const ui=/#/g,mp=/&/g,gp=/\//g,bp=/=/g,yp=/\?/g,fi=/\+/g,_p=/%5B/g,wp=/%5D/g,di=/%5E/g,Ep=/%60/g,pi=/%7B/g,Tp=/%7C/g,hi=/%7D/g,Cp=/%20/g;function uo(e){return encodeURI(""+e).replace(Tp,"|").replace(_p,"[").replace(wp,"]")}function kp(e){return uo(e).replace(pi,"{").replace(hi,"}").replace(di,"^")}function xl(e){return uo(e).replace(fi,"%2B").replace(Cp,"+").replace(ui,"%23").replace(mp,"%26").replace(Ep,"`").replace(pi,"{").replace(hi,"}").replace(di,"^")}function xp(e){return xl(e).replace(bp,"%3D")}function Sp(e){return uo(e).replace(ui,"%23").replace(yp,"%3F")}function Lp(e){return e==null?"":Sp(e).replace(gp,"%2F")}function Lr(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function Ap(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let l=0;lo&&xl(o)):[r&&xl(r)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function Pp(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=ot(r)?r.map(l=>l==null?null:""+l):r==null?r:""+r)}return t}const Ip=Symbol(""),xs=Symbol(""),Vr=Symbol(""),fo=Symbol(""),Sl=Symbol("");function Pn(){let e=[];function t(r){return e.push(r),()=>{const l=e.indexOf(r);l>-1&&e.splice(l,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Rt(e,t,n,r,l){const o=r&&(r.enterCallbacks[l]=r.enterCallbacks[l]||[]);return()=>new Promise((s,a)=>{const i=d=>{d===!1?a(_n(4,{from:n,to:t})):d instanceof Error?a(d):np(d)?a(_n(2,{from:t,to:d})):(o&&r.enterCallbacks[l]===o&&typeof d=="function"&&o.push(d),s())},c=e.call(r&&r.instances[l],t,n,i);let f=Promise.resolve(c);e.length<3&&(f=f.then(i)),f.catch(d=>a(d))})}function rl(e,t,n,r){const l=[];for(const o of e)for(const s in o.components){let a=o.components[s];if(!(t!=="beforeRouteEnter"&&!o.instances[s]))if(Rp(a)){const c=(a.__vccOpts||a)[t];c&&l.push(Rt(c,n,r,o,s))}else{let i=a();l.push(()=>i.then(c=>{if(!c)return Promise.reject(new Error(`Couldn't resolve component "${s}" at "${o.path}"`));const f=Hd(c)?c.default:c;o.components[s]=f;const p=(f.__vccOpts||f)[t];return p&&Rt(p,n,r,o,s)()}))}}return l}function Rp(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Ll(e){const t=be(Vr),n=be(fo),r=x(()=>t.resolve(Ut(e.to))),l=x(()=>{const{matched:i}=r.value,{length:c}=i,f=i[c-1],d=n.matched;if(!f||!d.length)return-1;const p=d.findIndex(yn.bind(null,f));if(p>-1)return p;const h=Ss(i[c-2]);return c>1&&Ss(f)===h&&d[d.length-1].path!==h?d.findIndex(yn.bind(null,i[c-2])):p}),o=x(()=>l.value>-1&&Np(n.params,r.value.params)),s=x(()=>l.value>-1&&l.value===n.matched.length-1&&oi(n.params,r.value.params));function a(i={}){return $p(i)?t[Ut(e.replace)?"replace":"push"](Ut(e.to)).catch(Fn):Promise.resolve()}return{route:r,href:x(()=>r.value.href),isActive:o,isExactActive:s,navigate:a}}const Op=W({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Ll,setup(e,{slots:t}){const n=Xn(Ll(e)),{options:r}=be(Vr),l=x(()=>({[Ls(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Ls(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&t.default(n);return e.custom?o:u("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:l.value},o)}}}),Mp=Op;function $p(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Np(e,t){for(const n in t){const r=t[n],l=e[n];if(typeof r=="string"){if(r!==l)return!1}else if(!ot(l)||l.length!==r.length||r.some((o,s)=>o!==l[s]))return!1}return!0}function Ss(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ls=(e,t,n)=>e??t??n,Dp=W({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=be(Sl),l=x(()=>e.route||r.value),o=be(xs,0),s=x(()=>{let c=Ut(o);const{matched:f}=l.value;let d;for(;(d=f[c])&&!d.components;)c++;return c}),a=x(()=>l.value.matched[s.value]);Gt(xs,x(()=>s.value+1)),Gt(Ip,a),Gt(Sl,l);const i=X();return ae(()=>[i.value,a.value,e.name],([c,f,d],[p,h,b])=>{f&&(f.instances[d]=c,h&&h!==f&&c&&c===p&&(f.leaveGuards.size||(f.leaveGuards=h.leaveGuards),f.updateGuards.size||(f.updateGuards=h.updateGuards))),c&&f&&(!h||!yn(f,h)||!p)&&(f.enterCallbacks[d]||[]).forEach(w=>w(c))},{flush:"post"}),()=>{const c=l.value,f=e.name,d=a.value,p=d&&d.components[f];if(!p)return As(n.default,{Component:p,route:c});const h=d.props[f],b=h?h===!0?c.params:typeof h=="function"?h(c):h:null,E=u(p,de({},b,t,{onVnodeUnmounted:g=>{g.component.isUnmounted&&(d.instances[f]=null)},ref:i}));return As(n.default,{Component:E,route:c})||E}}});function As(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const vi=Dp;function Hp(e){const t=dp(e.routes,e),n=e.parseQuery||Ap,r=e.stringifyQuery||ks,l=e.history,o=Pn(),s=Pn(),a=Pn(),i=Ye(gt);let c=gt;on&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=tl.bind(null,k=>""+k),d=tl.bind(null,Lp),p=tl.bind(null,Lr);function h(k,F){let $,U;return ai(k)?($=t.getRecordMatcher(k),U=F):U=k,t.addRoute(U,$)}function b(k){const F=t.getRecordMatcher(k);F&&t.removeRoute(F)}function w(){return t.getRoutes().map(k=>k.record)}function E(k){return!!t.getRecordMatcher(k)}function g(k,F){if(F=de({},F||i.value),typeof k=="string"){const _=nl(n,k,F.path),T=t.resolve({path:_.path},F),S=l.createHref(_.fullPath);return de(_,T,{params:p(T.params),hash:Lr(_.hash),redirectedFrom:void 0,href:S})}let $;if("path"in k)$=de({},k,{path:nl(n,k.path,F.path).path});else{const _=de({},k.params);for(const T in _)_[T]==null&&delete _[T];$=de({},k,{params:d(_)}),F.params=d(F.params)}const U=t.resolve($,F),ue=k.hash||"";U.params=f(p(U.params));const v=Vd(r,de({},k,{hash:kp(ue),path:U.path})),m=l.createHref(v);return de({fullPath:v,hash:ue,query:r===ks?Pp(k.query):k.query||{}},U,{redirectedFrom:void 0,href:m})}function y(k){return typeof k=="string"?nl(n,k,i.value.path):de({},k)}function P(k,F){if(c!==k)return _n(8,{from:F,to:k})}function R(k){return N(k)}function V(k){return R(de(y(k),{replace:!0}))}function I(k){const F=k.matched[k.matched.length-1];if(F&&F.redirect){const{redirect:$}=F;let U=typeof $=="function"?$(k):$;return typeof U=="string"&&(U=U.includes("?")||U.includes("#")?U=y(U):{path:U},U.params={}),de({query:k.query,hash:k.hash,params:"path"in U?{}:k.params},U)}}function N(k,F){const $=c=g(k),U=i.value,ue=k.state,v=k.force,m=k.replace===!0,_=I($);if(_)return N(de(y(_),{state:typeof _=="object"?de({},ue,_.state):ue,force:v,replace:m}),F||$);const T=$;T.redirectedFrom=F;let S;return!v&&zd(r,U,$)&&(S=_n(16,{to:T,from:U}),at(U,U,!0,!1)),(S?Promise.resolve(S):q(T,U)).catch(L=>ht(L)?ht(L,2)?L:xt(L):ce(L,T,U)).then(L=>{if(L){if(ht(L,2))return N(de({replace:m},y(L.to),{state:typeof L.to=="object"?de({},ue,L.to.state):ue,force:v}),F||T)}else L=B(T,U,!0,m,ue);return ne(T,U,L),L})}function C(k,F){const $=P(k,F);return $?Promise.reject($):Promise.resolve()}function z(k){const F=tn.values().next().value;return F&&typeof F.runWithContext=="function"?F.runWithContext(k):k()}function q(k,F){let $;const[U,ue,v]=Fp(k,F);$=rl(U.reverse(),"beforeRouteLeave",k,F);for(const _ of U)_.leaveGuards.forEach(T=>{$.push(Rt(T,k,F))});const m=C.bind(null,k,F);return $.push(m),Re($).then(()=>{$=[];for(const _ of o.list())$.push(Rt(_,k,F));return $.push(m),Re($)}).then(()=>{$=rl(ue,"beforeRouteUpdate",k,F);for(const _ of ue)_.updateGuards.forEach(T=>{$.push(Rt(T,k,F))});return $.push(m),Re($)}).then(()=>{$=[];for(const _ of v)if(_.beforeEnter)if(ot(_.beforeEnter))for(const T of _.beforeEnter)$.push(Rt(T,k,F));else $.push(Rt(_.beforeEnter,k,F));return $.push(m),Re($)}).then(()=>(k.matched.forEach(_=>_.enterCallbacks={}),$=rl(v,"beforeRouteEnter",k,F),$.push(m),Re($))).then(()=>{$=[];for(const _ of s.list())$.push(Rt(_,k,F));return $.push(m),Re($)}).catch(_=>ht(_,8)?_:Promise.reject(_))}function ne(k,F,$){a.list().forEach(U=>z(()=>U(k,F,$)))}function B(k,F,$,U,ue){const v=P(k,F);if(v)return v;const m=F===gt,_=on?history.state:{};$&&(U||m?l.replace(k.fullPath,de({scroll:m&&_&&_.scroll},ue)):l.push(k.fullPath,ue)),i.value=k,at(k,F,$,m),xt()}let J;function K(){J||(J=l.listen((k,F,$)=>{if(!lr.listening)return;const U=g(k),ue=I(U);if(ue){N(de(ue,{replace:!0}),U).catch(Fn);return}c=U;const v=i.value;on&&Yd(gs(v.fullPath,$.delta),Br()),q(U,v).catch(m=>ht(m,12)?m:ht(m,2)?(N(m.to,U).then(_=>{ht(_,20)&&!$.delta&&$.type===Zn.pop&&l.go(-1,!1)}).catch(Fn),Promise.reject()):($.delta&&l.go(-$.delta,!1),ce(m,U,v))).then(m=>{m=m||B(U,v,!1),m&&($.delta&&!ht(m,8)?l.go(-$.delta,!1):$.type===Zn.pop&&ht(m,20)&&l.go(-1,!1)),ne(U,v,m)}).catch(Fn)}))}let Pe=Pn(),ie=Pn(),ve;function ce(k,F,$){xt(k);const U=ie.list();return U.length?U.forEach(ue=>ue(k,F,$)):console.error(k),Promise.reject(k)}function pt(){return ve&&i.value!==gt?Promise.resolve():new Promise((k,F)=>{Pe.add([k,F])})}function xt(k){return ve||(ve=!k,K(),Pe.list().forEach(([F,$])=>k?$(k):F()),Pe.reset()),k}function at(k,F,$,U){const{scrollBehavior:ue}=e;if(!on||!ue)return Promise.resolve();const v=!$&&Xd(gs(k.fullPath,0))||(U||!$)&&history.state&&history.state.scroll||null;return Yt().then(()=>ue(k,F,v)).then(m=>m&&qd(m)).catch(m=>ce(m,k,F))}const $e=k=>l.go(k);let en;const tn=new Set,lr={currentRoute:i,listening:!0,addRoute:h,removeRoute:b,hasRoute:E,getRoutes:w,resolve:g,options:e,push:R,replace:V,go:$e,back:()=>$e(-1),forward:()=>$e(1),beforeEach:o.add,beforeResolve:s.add,afterEach:a.add,onError:ie.add,isReady:pt,install(k){const F=this;k.component("RouterLink",Mp),k.component("RouterView",vi),k.config.globalProperties.$router=F,Object.defineProperty(k.config.globalProperties,"$route",{enumerable:!0,get:()=>Ut(i)}),on&&!en&&i.value===gt&&(en=!0,R(l.location).catch(ue=>{}));const $={};for(const ue in gt)Object.defineProperty($,ue,{get:()=>i.value[ue],enumerable:!0});k.provide(Vr,F),k.provide(fo,aa($)),k.provide(Sl,i);const U=k.unmount;tn.add(k),k.unmount=function(){tn.delete(k),tn.size<1&&(c=gt,J&&J(),J=null,i.value=gt,en=!1,ve=!1),U()}}};function Re(k){return k.reduce((F,$)=>F.then(()=>z($)),Promise.resolve())}return lr}function Fp(e,t){const n=[],r=[],l=[],o=Math.max(t.matched.length,e.matched.length);for(let s=0;syn(c,a))?r.push(a):n.push(a));const i=e.matched[s];i&&(t.matched.find(c=>yn(c,i))||l.push(i))}return[n,r,l]}function Xe(){return be(Vr)}function kt(){return be(fo)}const ye=({name:e="",color:t="currentColor"},{slots:n})=>{var r;return u("svg",{xmlns:"http://www.w3.org/2000/svg",class:["icon",`${e}-icon`],viewBox:"0 0 1024 1024",fill:t,"aria-label":`${e} icon`},(r=n.default)==null?void 0:r.call(n))};ye.displayName="IconBase";const mi=(e,{slots:t})=>{var n;return(n=t.default)==null?void 0:n.call(t)},Bp=e=>[/\((ipad);[-\w),; ]+apple/i,/applecoremedia\/[\w.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i].some(t=>t.test(e)),Vp=e=>[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/cfnetwork\/.+darwin/i].some(t=>t.test(e)),zp=e=>[/(mac os x) ?([\w. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i].some(t=>t.test(e)),jp=(e="")=>{if(e){if(typeof e=="number")return new Date(e);const t=Date.parse(e.toString());if(!Number.isNaN(t))return new Date(t)}return null},gi=(e,t)=>{let n=1;for(let r=0;r>6;return n+=n<<3,n^=n>>11,n%t},bi=Array.isArray,Wp=e=>typeof e=="function",Kp=e=>typeof e=="string";var Up=e=>e.startsWith("ftp://"),po=e=>/^(https?:)?\/\//.test(e),Gp=/.md((\?|#).*)?$/,Zp=(e,t="/")=>!!(po(e)||Up(e)||e.startsWith("/")&&!e.startsWith(t)&&!Gp.test(e)),yi=e=>Object.prototype.toString.call(e)==="[object Object]";function qp(){const e=X(!1);return Qt()&&_e(()=>{e.value=!0}),e}function Yp(e){return qp(),x(()=>!!e())}const Et=e=>typeof e=="string",wn=(e,t)=>Et(e)&&e.startsWith(t),ln=(e,t)=>Et(e)&&e.endsWith(t),_i=Object.entries,Xp=Object.fromEntries,er=Object.keys,Qp=e=>(e.endsWith(".md")&&(e=`${e.slice(0,-3)}.html`),!e.endsWith("/")&&!e.endsWith(".html")&&(e=`${e}.html`),e=e.replace(/(^|\/)(?:README|index).html$/i,"$1"),e),wi=e=>{const[t,n=""]=e.split("#");return t?`${Qp(t)}${n?`#${n}`:""}`:e},Ps=e=>yi(e)&&Et(e.name),Is=(e,t=!1)=>e?bi(e)?e.map(n=>Et(n)?{name:n}:Ps(n)?n:null).filter(n=>n!==null):Et(e)?[{name:e}]:Ps(e)?[e]:(console.error(`Expect "author" to be \`AuthorInfo[] | AuthorInfo | string[] | string ${t?"":"| false"} | undefined\`, but got`,e),[]):[],Ei=(e,t)=>{if(e){if(bi(e)&&e.every(Et))return e;if(Et(e))return[e];console.error(`Expect ${t||"value"} to be \`string[] | string | undefined\`, but got`,e)}return[]},Jp=e=>Ei(e,"category"),eh=e=>Ei(e,"tag"),ho=e=>wn(e,"/"),Ti=/#.*$/u,th=e=>{const t=Ti.exec(e);return t?t[0]:""},Rs=e=>decodeURI(e).replace(Ti,"").replace(/(index)?\.(md|html)$/,""),vo=(e,t)=>{if(t===void 0)return!1;const n=Rs(e.path),r=Rs(t),l=th(t);return l?l===e.hash&&(!r||n===r):n===r},nh=e=>po(e)?e:`https://github.com/${e}`,Ci=e=>!po(e)||/github\.com/.test(e)?"GitHub":/bitbucket\.org/.test(e)?"Bitbucket":/gitlab\.com/.test(e)?"GitLab":/gitee\.com/.test(e)?"Gitee":null,Ar=(e,...t)=>{const n=e.resolve(...t),r=n.matched[n.matched.length-1];if(!(r!=null&&r.redirect))return n;const{redirect:l}=r,o=Wp(l)?l(n):l,s=Kp(o)?{path:o}:o;return Ar(e,{hash:n.hash,query:n.query,params:n.params,...s})},rh=e=>{if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget){const t=e.currentTarget.getAttribute("target");if(t!=null&&t.match(/\b_blank\b/i))return}return e.preventDefault(),!0}},lt=({to:e="",class:t="",...n},{slots:r})=>{var l;const o=Xe(),s=(a={})=>rh(a)?o.push(e).catch():Promise.resolve();return u("a",{...n,class:["vp-link",t],href:De(wi(e)),onClick:s},(l=r.default)==null?void 0:l.call(r))};lt.displayName="VPLink";const ki=()=>u(ye,{name:"github"},()=>u("path",{d:"M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"}));ki.displayName="GitHubIcon";const xi=()=>u(ye,{name:"gitlab"},()=>u("path",{d:"M229.333 78.688C223.52 62 199.895 62 193.895 78.688L87.958 406.438h247.5c-.188 0-106.125-327.75-106.125-327.75zM33.77 571.438c-4.875 15 .563 31.687 13.313 41.25l464.812 345L87.77 406.438zm301.5-165 176.813 551.25 176.812-551.25zm655.125 165-54-165-424.312 551.25 464.812-345c12.938-9.563 18.188-26.25 13.5-41.25zM830.27 78.688c-5.812-16.688-29.437-16.688-35.437 0l-106.125 327.75h247.5z"}));xi.displayName="GitLabIcon";const Si=()=>u(ye,{name:"gitee"},()=>u("path",{d:"M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm242.97-533.34H482.39a23.7 23.7 0 0 0-23.7 23.7l-.03 59.28c0 13.08 10.59 23.7 23.7 23.7h165.96a23.7 23.7 0 0 1 23.7 23.7v11.85a71.1 71.1 0 0 1-71.1 71.1H375.71a23.7 23.7 0 0 1-23.7-23.7V423.11a71.1 71.1 0 0 1 71.1-71.1h331.8a23.7 23.7 0 0 0 23.7-23.7l.06-59.25a23.73 23.73 0 0 0-23.7-23.73H423.11a177.78 177.78 0 0 0-177.78 177.75v331.83c0 13.08 10.62 23.7 23.7 23.7h349.62a159.99 159.99 0 0 0 159.99-159.99V482.33a23.7 23.7 0 0 0-23.7-23.7z"}));Si.displayName="GiteeIcon";const Li=()=>u(ye,{name:"bitbucket"},()=>u("path",{d:"M575.256 490.862c6.29 47.981-52.005 85.723-92.563 61.147-45.714-20.004-45.714-92.562-1.133-113.152 38.29-23.442 93.696 7.424 93.696 52.005zm63.451-11.996c-10.276-81.152-102.29-134.839-177.152-101.156-47.433 21.138-79.433 71.424-77.129 124.562 2.853 69.705 69.157 126.866 138.862 120.576S647.3 548.571 638.708 478.83zm136.558-309.723c-25.161-33.134-67.986-38.839-105.728-45.13-106.862-17.151-216.576-17.7-323.438 1.134-35.438 5.706-75.447 11.996-97.719 43.996 36.572 34.304 88.576 39.424 135.424 45.129 84.553 10.862 171.447 11.447 256 .585 47.433-5.705 99.987-10.276 135.424-45.714zm32.585 591.433c-16.018 55.99-6.839 131.438-66.304 163.986-102.29 56.576-226.304 62.867-338.87 42.862-59.43-10.862-129.135-29.696-161.72-85.723-14.3-54.858-23.442-110.848-32.585-166.84l3.438-9.142 10.276-5.157c170.277 112.567 408.576 112.567 579.438 0 26.844 8.01 6.84 40.558 6.29 60.014zm103.424-549.157c-19.42 125.148-41.728 249.71-63.415 374.272-6.29 36.572-41.728 57.162-71.424 72.558-106.862 53.724-231.424 62.866-348.562 50.286-79.433-8.558-160.585-29.696-225.134-79.433-30.28-23.443-30.28-63.415-35.986-97.134-20.005-117.138-42.862-234.277-57.161-352.585 6.839-51.42 64.585-73.728 107.447-89.71 57.16-21.138 118.272-30.866 178.87-36.571 129.134-12.58 261.157-8.01 386.304 28.562 44.581 13.13 92.563 31.415 122.844 69.705 13.714 17.7 9.143 40.01 6.29 60.014z"}));Li.displayName="BitbucketIcon";const Ai=()=>u(ye,{name:"source"},()=>u("path",{d:"M601.92 475.2c0 76.428-8.91 83.754-28.512 99.594-14.652 11.88-43.956 14.058-78.012 16.434-18.81 1.386-40.392 2.97-62.172 6.534-18.612 2.97-36.432 9.306-53.064 17.424V299.772c37.818-21.978 63.36-62.766 63.36-109.692 0-69.894-56.826-126.72-126.72-126.72S190.08 120.186 190.08 190.08c0 46.926 25.542 87.714 63.36 109.692v414.216c-37.818 21.978-63.36 62.766-63.36 109.692 0 69.894 56.826 126.72 126.72 126.72s126.72-56.826 126.72-126.72c0-31.086-11.286-59.598-29.7-81.576 13.266-9.504 27.522-17.226 39.996-19.206 16.038-2.574 32.868-3.762 50.688-5.148 48.312-3.366 103.158-7.326 148.896-44.55 61.182-49.698 74.25-103.158 75.24-187.902V475.2h-126.72zM316.8 126.72c34.848 0 63.36 28.512 63.36 63.36s-28.512 63.36-63.36 63.36-63.36-28.512-63.36-63.36 28.512-63.36 63.36-63.36zm0 760.32c-34.848 0-63.36-28.512-63.36-63.36s28.512-63.36 63.36-63.36 63.36 28.512 63.36 63.36-28.512 63.36-63.36 63.36zM823.68 158.4h-95.04V63.36h-126.72v95.04h-95.04v126.72h95.04v95.04h126.72v-95.04h95.04z"}));Ai.displayName="SourceIcon";const _t=(e,t)=>{const n=t?t._instance:Qt();return yi(n==null?void 0:n.appContext.components)&&(e in n.appContext.components||qe(e)in n.appContext.components||Yn(qe(e))in n.appContext.components)},lh=()=>Yp(()=>typeof window<"u"&&window.navigator&&"userAgent"in window.navigator),Pi=()=>{const e=lh();return x(()=>e.value&&/\b(?:Android|iPhone)/i.test(navigator.userAgent))},Ht=e=>{const t=Jt();return x(()=>e[t.value])};function Os(e,t){var n;const r=Ye();return ya(()=>{r.value=e()},{...t,flush:(n=t==null?void 0:t.flush)!=null?n:"sync"}),qt(r)}function oh(e,t){let n,r,l;const o=X(!0),s=()=>{o.value=!0,l()};ae(e,s,{flush:"sync"});const a=typeof t=="function"?t:t.get,i=typeof t=="function"?void 0:t.set,c=da((f,d)=>(r=f,l=d,{get(){return o.value&&(n=a(),o.value=!1),r(),n},set(p){i==null||i(p)}}));return Object.isExtensible(c)&&(c.trigger=s),c}function Sn(e){return Ys()?(Jc(e),!0):!1}function Ie(e){return typeof e=="function"?e():Ut(e)}const tr=typeof window<"u"&&typeof document<"u",sh=Object.prototype.toString,ah=e=>sh.call(e)==="[object Object]",Tt=()=>{},Al=ih();function ih(){var e;return tr&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent)}function mo(e,t){function n(...r){return new Promise((l,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(l).catch(o)})}return n}const Ii=e=>e();function ch(e,t={}){let n,r,l=Tt;const o=a=>{clearTimeout(a),l(),l=Tt};return a=>{const i=Ie(e),c=Ie(t.maxWait);return n&&o(n),i<=0||c!==void 0&&c<=0?(r&&(o(r),r=null),Promise.resolve(a())):new Promise((f,d)=>{l=t.rejectOnCancel?d:f,c&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(a())},c)),n=setTimeout(()=>{r&&o(r),r=null,f(a())},i)})}}function uh(e,t=!0,n=!0,r=!1){let l=0,o,s=!0,a=Tt,i;const c=()=>{o&&(clearTimeout(o),o=void 0,a(),a=Tt)};return d=>{const p=Ie(e),h=Date.now()-l,b=()=>i=d();return c(),p<=0?(l=Date.now(),b()):(h>p&&(n||!s)?(l=Date.now(),b()):t&&(i=new Promise((w,E)=>{a=r?E:w,o=setTimeout(()=>{l=Date.now(),s=!0,w(b()),c()},Math.max(0,p-h))})),!n&&!o&&(o=setTimeout(()=>s=!0,p)),s=!1,i)}}function fh(e=Ii){const t=X(!0);function n(){t.value=!1}function r(){t.value=!0}const l=(...o)=>{t.value&&e(...o)};return{isActive:qt(t),pause:n,resume:r,eventFilter:l}}function dh(...e){if(e.length!==1)return Or(...e);const t=e[0];return typeof t=="function"?qt(da(()=>({get:t,set:Tt}))):X(t)}function ph(e,t=200,n={}){return mo(ch(t,n),e)}function hh(e,t=200,n=!1,r=!0,l=!1){return mo(uh(t,n,r,l),e)}function vh(e,t,n={}){const{eventFilter:r=Ii,...l}=n;return ae(e,mo(r,t),l)}function mh(e,t,n={}){const{eventFilter:r,...l}=n,{eventFilter:o,pause:s,resume:a,isActive:i}=fh(r);return{stop:vh(e,t,{...l,eventFilter:o}),pause:s,resume:a,isActive:i}}function Ri(e,t=!0){Qt()?_e(e):t?e():Yt(e)}function gh(e){Qt()&&Xt(e)}function bh(e,t,n={}){const{immediate:r=!0}=n,l=X(!1);let o=null;function s(){o&&(clearTimeout(o),o=null)}function a(){l.value=!1,s()}function i(...c){s(),l.value=!0,o=setTimeout(()=>{l.value=!1,o=null,e(...c)},Ie(t))}return r&&(l.value=!0,tr&&i()),Sn(a),{isPending:qt(l),start:i,stop:a}}function Ms(e=!1,t={}){const{truthyValue:n=!0,falsyValue:r=!1}=t,l=xe(e),o=X(e);function s(a){if(arguments.length)return o.value=a,o.value;{const i=Ie(n);return o.value=o.value===i?Ie(r):i,o.value}}return l?s:[o,s]}function Ge(e){var t;const n=Ie(e);return(t=n==null?void 0:n.$el)!=null?t:n}const dt=tr?window:void 0,Oi=tr?window.document:void 0,yh=tr?window.navigator:void 0;function Le(...e){let t,n,r,l;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,l]=e,t=dt):[t,n,r,l]=e,!t)return Tt;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],s=()=>{o.forEach(f=>f()),o.length=0},a=(f,d,p,h)=>(f.addEventListener(d,p,h),()=>f.removeEventListener(d,p,h)),i=ae(()=>[Ge(t),Ie(l)],([f,d])=>{if(s(),!f)return;const p=ah(d)?{...d}:d;o.push(...n.flatMap(h=>r.map(b=>a(f,h,b,p))))},{immediate:!0,flush:"post"}),c=()=>{i(),s()};return Sn(c),c}let $s=!1;function _h(e,t,n={}){const{window:r=dt,ignore:l=[],capture:o=!0,detectIframe:s=!1}=n;if(!r)return;Al&&!$s&&($s=!0,Array.from(r.document.body.children).forEach(p=>p.addEventListener("click",Tt)),r.document.documentElement.addEventListener("click",Tt));let a=!0;const i=p=>l.some(h=>{if(typeof h=="string")return Array.from(r.document.querySelectorAll(h)).some(b=>b===p.target||p.composedPath().includes(b));{const b=Ge(h);return b&&(p.target===b||p.composedPath().includes(b))}}),f=[Le(r,"click",p=>{const h=Ge(e);if(!(!h||h===p.target||p.composedPath().includes(h))){if(p.detail===0&&(a=!i(p)),!a){a=!0;return}t(p)}},{passive:!0,capture:o}),Le(r,"pointerdown",p=>{const h=Ge(e);h&&(a=!p.composedPath().includes(h)&&!i(p))},{passive:!0}),s&&Le(r,"blur",p=>{setTimeout(()=>{var h;const b=Ge(e);((h=r.document.activeElement)==null?void 0:h.tagName)==="IFRAME"&&!(b!=null&&b.contains(r.document.activeElement))&&t(p)},0)})].filter(Boolean);return()=>f.forEach(p=>p())}function wh(){const e=X(!1);return Qt()&&_e(()=>{e.value=!0}),e}function zr(e){const t=wh();return x(()=>(t.value,!!e()))}function Mi(e,t={}){const{window:n=dt}=t,r=zr(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let l;const o=X(!1),s=c=>{o.value=c.matches},a=()=>{l&&("removeEventListener"in l?l.removeEventListener("change",s):l.removeListener(s))},i=ya(()=>{r.value&&(a(),l=n.matchMedia(Ie(e)),"addEventListener"in l?l.addEventListener("change",s):l.addListener(s),o.value=l.matches)});return Sn(()=>{i(),a(),l=void 0}),o}function Eh(e={}){const{navigator:t=yh,read:n=!1,source:r,copiedDuring:l=1500,legacy:o=!1}=e,s=zr(()=>t&&"clipboard"in t),a=x(()=>s.value||o),i=X(""),c=X(!1),f=bh(()=>c.value=!1,l);function d(){s.value?t.clipboard.readText().then(w=>{i.value=w}):i.value=b()}a.value&&n&&Le(["copy","cut"],d);async function p(w=Ie(r)){a.value&&w!=null&&(s.value?await t.clipboard.writeText(w):h(w),i.value=w,c.value=!0,f.start())}function h(w){const E=document.createElement("textarea");E.value=w??"",E.style.position="absolute",E.style.opacity="0",document.body.appendChild(E),E.select(),document.execCommand("copy"),E.remove()}function b(){var w,E,g;return(g=(E=(w=document==null?void 0:document.getSelection)==null?void 0:w.call(document))==null?void 0:E.toString())!=null?g:""}return{isSupported:a,text:i,copied:c,copy:p}}const pr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},hr="__vueuse_ssr_handlers__",Th=Ch();function Ch(){return hr in pr||(pr[hr]=pr[hr]||{}),pr[hr]}function kh(e,t){return Th[e]||t}function xh(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Sh={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Ns="vueuse-storage";function go(e,t,n,r={}){var l;const{flush:o="pre",deep:s=!0,listenToStorageChanges:a=!0,writeDefaults:i=!0,mergeDefaults:c=!1,shallow:f,window:d=dt,eventFilter:p,onError:h=C=>{console.error(C)}}=r,b=(f?Ye:X)(t);if(!n)try{n=kh("getDefaultStorage",()=>{var C;return(C=dt)==null?void 0:C.localStorage})()}catch(C){h(C)}if(!n)return b;const w=Ie(t),E=xh(w),g=(l=r.serializer)!=null?l:Sh[E],{pause:y,resume:P}=mh(b,()=>R(b.value),{flush:o,deep:s,eventFilter:p});return d&&a&&(Le(d,"storage",N),Le(d,Ns,I)),N(),b;function R(C){try{if(C==null)n.removeItem(e);else{const z=g.write(C),q=n.getItem(e);q!==z&&(n.setItem(e,z),d&&d.dispatchEvent(new CustomEvent(Ns,{detail:{key:e,oldValue:q,newValue:z,storageArea:n}})))}}catch(z){h(z)}}function V(C){const z=C?C.newValue:n.getItem(e);if(z==null)return i&&w!==null&&n.setItem(e,g.write(w)),w;if(!C&&c){const q=g.read(z);return typeof c=="function"?c(q,w):E==="object"&&!Array.isArray(q)?{...w,...q}:q}else return typeof z!="string"?z:g.read(z)}function I(C){N(C.detail)}function N(C){if(!(C&&C.storageArea!==n)){if(C&&C.key==null){b.value=w;return}if(!(C&&C.key!==e)){y();try{(C==null?void 0:C.newValue)!==g.write(b.value)&&(b.value=V(C))}catch(z){h(z)}finally{C?Yt(P):P()}}}}}function Lh(e){return Mi("(prefers-color-scheme: dark)",e)}function Ah(e,t,n={}){const{window:r=dt,...l}=n;let o;const s=zr(()=>r&&"ResizeObserver"in r),a=()=>{o&&(o.disconnect(),o=void 0)},i=x(()=>Array.isArray(e)?e.map(d=>Ge(d)):[Ge(e)]),c=ae(i,d=>{if(a(),s.value&&r){o=new ResizeObserver(t);for(const p of d)p&&o.observe(p,l)}},{immediate:!0,flush:"post",deep:!0}),f=()=>{a(),c()};return Sn(f),{isSupported:s,stop:f}}function Ph(e,t={width:0,height:0},n={}){const{window:r=dt,box:l="content-box"}=n,o=x(()=>{var i,c;return(c=(i=Ge(e))==null?void 0:i.namespaceURI)==null?void 0:c.includes("svg")}),s=X(t.width),a=X(t.height);return Ah(e,([i])=>{const c=l==="border-box"?i.borderBoxSize:l==="content-box"?i.contentBoxSize:i.devicePixelContentBoxSize;if(r&&o.value){const f=Ge(e);if(f){const d=r.getComputedStyle(f);s.value=Number.parseFloat(d.width),a.value=Number.parseFloat(d.height)}}else if(c){const f=Array.isArray(c)?c:[c];s.value=f.reduce((d,{inlineSize:p})=>d+p,0),a.value=f.reduce((d,{blockSize:p})=>d+p,0)}else s.value=i.contentRect.width,a.value=i.contentRect.height},n),ae(()=>Ge(e),i=>{s.value=i?t.width:0,a.value=i?t.height:0}),{width:s,height:a}}const Ds=["fullscreenchange","webkitfullscreenchange","webkitendfullscreen","mozfullscreenchange","MSFullscreenChange"];function bo(e,t={}){const{document:n=Oi,autoExit:r=!1}=t,l=x(()=>{var g;return(g=Ge(e))!=null?g:n==null?void 0:n.querySelector("html")}),o=X(!1),s=x(()=>["requestFullscreen","webkitRequestFullscreen","webkitEnterFullscreen","webkitEnterFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen"].find(g=>n&&g in n||l.value&&g in l.value)),a=x(()=>["exitFullscreen","webkitExitFullscreen","webkitExitFullScreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen"].find(g=>n&&g in n||l.value&&g in l.value)),i=x(()=>["fullScreen","webkitIsFullScreen","webkitDisplayingFullscreen","mozFullScreen","msFullscreenElement"].find(g=>n&&g in n||l.value&&g in l.value)),c=["fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement"].find(g=>n&&g in n),f=zr(()=>l.value&&n&&s.value!==void 0&&a.value!==void 0&&i.value!==void 0),d=()=>c?(n==null?void 0:n[c])===l.value:!1,p=()=>{if(i.value){if(n&&n[i.value]!=null)return n[i.value];{const g=l.value;if((g==null?void 0:g[i.value])!=null)return!!g[i.value]}}return!1};async function h(){if(!(!f.value||!o.value)){if(a.value)if((n==null?void 0:n[a.value])!=null)await n[a.value]();else{const g=l.value;(g==null?void 0:g[a.value])!=null&&await g[a.value]()}o.value=!1}}async function b(){if(!f.value||o.value)return;p()&&await h();const g=l.value;s.value&&(g==null?void 0:g[s.value])!=null&&(await g[s.value](),o.value=!0)}async function w(){await(o.value?h():b())}const E=()=>{const g=p();(!g||g&&d())&&(o.value=g)};return Le(n,Ds,E,!1),Le(()=>Ge(l),Ds,E,!1),r&&Sn(h),{isSupported:f,isFullscreen:o,enter:b,exit:h,toggle:w}}function ll(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function k0(e,t,n={}){const{window:r=dt}=n;return go(e,t,r==null?void 0:r.localStorage,n)}function ol(e,t=Tt,n={}){const{immediate:r=!0,manual:l=!1,type:o="text/javascript",async:s=!0,crossOrigin:a,referrerPolicy:i,noModule:c,defer:f,document:d=Oi,attrs:p={}}=n,h=X(null);let b=null;const w=y=>new Promise((P,R)=>{const V=C=>(h.value=C,P(C),C);if(!d){P(!1);return}let I=!1,N=d.querySelector(`script[src="${Ie(e)}"]`);N?N.hasAttribute("data-loaded")&&V(N):(N=d.createElement("script"),N.type=o,N.async=s,N.src=Ie(e),f&&(N.defer=f),a&&(N.crossOrigin=a),c&&(N.noModule=c),i&&(N.referrerPolicy=i),Object.entries(p).forEach(([C,z])=>N==null?void 0:N.setAttribute(C,z)),I=!0),N.addEventListener("error",C=>R(C)),N.addEventListener("abort",C=>R(C)),N.addEventListener("load",()=>{N.setAttribute("data-loaded","true"),t(N),V(N)}),I&&(N=d.head.appendChild(N)),y||V(N)}),E=(y=!0)=>(b||(b=w(y)),b),g=()=>{if(!d)return;b=null,h.value&&(h.value=null);const y=d.querySelector(`script[src="${Ie(e)}"]`);y&&d.head.removeChild(y)};return r&&!l&&Ri(E),l||gh(g),{scriptTag:h,load:E,unload:g}}function $i(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}function yo(e,t=!1){const n=X(t);let r=null,l;ae(dh(e),a=>{const i=ll(Ie(a));if(i){const c=i;l=c.style.overflow,n.value&&(c.style.overflow="hidden")}},{immediate:!0});const o=()=>{const a=ll(Ie(e));!a||n.value||(Al&&(r=Le(a,"touchmove",i=>{Ih(i)},{passive:!1})),a.style.overflow="hidden",n.value=!0)},s=()=>{const a=ll(Ie(e));!a||!n.value||(Al&&(r==null||r()),a.style.overflow=l,n.value=!1)};return Sn(s),x({get(){return n.value},set(a){a?o():s()}})}function Rh({window:e=dt}={}){if(!e)return{x:X(0),y:X(0)};const t=X(e.scrollX),n=X(e.scrollY);return Le(e,"scroll",()=>{t.value=e.scrollX,n.value=e.scrollY},{capture:!1,passive:!0}),{x:t,y:n}}function Oh(e={}){const{window:t=dt,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:l=!0,includeScrollbar:o=!0}=e,s=X(n),a=X(r),i=()=>{t&&(o?(s.value=t.innerWidth,a.value=t.innerHeight):(s.value=t.document.documentElement.clientWidth,a.value=t.document.documentElement.clientHeight))};if(i(),Ri(i),Le("resize",i,{passive:!0}),l){const c=Mi("(orientation: portrait)");ae(c,()=>i())}return{width:s,height:a}}const Ni=({type:e="info",text:t="",vertical:n,color:r},{slots:l})=>{var o;return u("span",{class:["vp-badge",e,{diy:r}],style:{verticalAlign:n??!1,backgroundColor:r??!1}},((o=l.default)==null?void 0:o.call(l))||t)};Ni.displayName="Badge";var Mh=W({name:"FontIcon",props:{icon:{type:String,default:""},color:{type:String,default:""},size:{type:[String,Number],default:""}},setup(e){const t=x(()=>{const r=["font-icon icon"],l=`fas fa-${e.icon}`;return r.push("fa-fw fa-sm"),r.push(e.icon.includes(" ")?e.icon:l),r}),n=x(()=>{const r={};return e.color&&(r.color=e.color),e.size&&(r["font-size"]=Number.isNaN(Number(e.size))?e.size:`${e.size}px`),er(r).length?r:null});return()=>e.icon?u("span",{key:e.icon,class:t.value,style:n.value}):null}});const Di=()=>u(ye,{name:"back-to-top"},()=>[u("path",{d:"M512 843.2c-36.2 0-66.4-13.6-85.8-21.8-10.8-4.6-22.6 3.6-21.8 15.2l7 102c.4 6.2 7.6 9.4 12.6 5.6l29-22c3.6-2.8 9-1.8 11.4 2l41 64.2c3 4.8 10.2 4.8 13.2 0l41-64.2c2.4-3.8 7.8-4.8 11.4-2l29 22c5 3.8 12.2.6 12.6-5.6l7-102c.8-11.6-11-20-21.8-15.2-19.6 8.2-49.6 21.8-85.8 21.8z"}),u("path",{d:"m795.4 586.2-96-98.2C699.4 172 513 32 513 32S324.8 172 324.8 488l-96 98.2c-3.6 3.6-5.2 9-4.4 14.2L261.2 824c1.8 11.4 14.2 17 23.6 10.8L419 744s41.4 40 94.2 40c52.8 0 92.2-40 92.2-40l134.2 90.8c9.2 6.2 21.6.6 23.6-10.8l37-223.8c.4-5.2-1.2-10.4-4.8-14zM513 384c-34 0-61.4-28.6-61.4-64s27.6-64 61.4-64c34 0 61.4 28.6 61.4 64S547 384 513 384z"})]);Di.displayName="BackToTopIcon";var $h=W({name:"BackToTop",props:{threshold:{type:Number,default:100},noProgress:Boolean},setup(e){const t=Ae(),n=Ht({"/":{backToTop:"返回顶部"}}),r=Ye(),{height:l}=Ph(r),{height:o}=Oh(),{y:s}=Rh(),a=x(()=>t.value.backToTop!==!1&&s.value>e.threshold),i=x(()=>s.value/(l.value-o.value));return _e(()=>{r.value=document.body}),()=>u(Dt,{name:"fade"},()=>a.value?u("button",{type:"button",class:"vp-back-to-top-button","aria-label":n.value.backToTop,"data-balloon-pos":"left",onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})}},[e.noProgress?null:u("svg",{class:"vp-scroll-progress"},u("circle",{cx:"50%",cy:"50%",style:{"stroke-dasharray":`calc(${Math.PI*i.value*100}% - ${4*Math.PI}px) calc(${Math.PI*100}% - ${4*Math.PI}px)`}})),u(Di)]):null)}});const Nh=st({enhance:({app:e})=>{_t("Badge")||e.component("Badge",Ni),_t("FontIcon")||e.component("FontIcon",Mh)},setup:()=>{ol("https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/brands.min.js",()=>{},{attrs:{"data-auto-replace-svg":"nest"}}),ol("https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/solid.min.js",()=>{},{attrs:{"data-auto-replace-svg":"nest"}}),ol("https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/fontawesome.min.js",()=>{},{attrs:{"data-auto-replace-svg":"nest"}})},rootComponents:[()=>u($h,{})]});function Dh(e,t,n){var r,l,o;t===void 0&&(t=50),n===void 0&&(n={});var s=(r=n.isImmediate)!=null&&r,a=(l=n.callback)!=null&&l,i=n.maxWait,c=Date.now(),f=[];function d(){if(i!==void 0){var h=Date.now()-c;if(h+t>=i)return i-h}return t}var p=function(){var h=[].slice.call(arguments),b=this;return new Promise(function(w,E){var g=s&&o===void 0;if(o!==void 0&&clearTimeout(o),o=setTimeout(function(){if(o=void 0,c=Date.now(),!s){var P=e.apply(b,h);a&&a(P),f.forEach(function(R){return(0,R.resolve)(P)}),f=[]}},d()),g){var y=e.apply(b,h);return a&&a(y),w(y)}f.push({resolve:w,reject:E})})};return p.cancel=function(h){o!==void 0&&clearTimeout(o),f.forEach(function(b){return(0,b.reject)(h)}),f=[]},p}const Hh=({headerLinkSelector:e,headerAnchorSelector:t,delay:n,offset:r=5})=>{const l=Xe(),s=Dh(()=>{var w,E;const a=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(a-0)p.some(y=>y.hash===g.hash));for(let g=0;g=(((w=y.parentElement)==null?void 0:w.offsetTop)??0)-r,V=!P||a<(((E=P.parentElement)==null?void 0:E.offsetTop)??0)-r;if(!(R&&V))continue;const N=decodeURIComponent(l.currentRoute.value.hash),C=decodeURIComponent(y.hash);if(N===C)return;if(d){for(let z=g+1;z{window.addEventListener("scroll",s)}),to(()=>{window.removeEventListener("scroll",s)})},Hs=async(e,t)=>{const{scrollBehavior:n}=e.options;e.options.scrollBehavior=void 0,await e.replace({query:e.currentRoute.value.query,hash:t}).finally(()=>e.options.scrollBehavior=n)},Fh=".vp-sidebar-link, .toc-link",Bh=".header-anchor",Vh=200,zh=5,jh=st({setup(){Hh({headerLinkSelector:Fh,headerAnchorSelector:Bh,delay:Vh,offset:zh})}});let Hi=()=>null;const Fi=Symbol(""),Wh=e=>{Hi=e},Kh=()=>be(Fi),Uh=e=>{e.provide(Fi,Hi)};var Gh=W({name:"AutoCatalog",props:{base:{type:String,default:""},level:{type:Number,default:3},index:Boolean},setup(e){const t=Kh(),n=Ht({"/":{title:"目录",empty:"暂无目录"}}),r=he(),l=Xe(),o=ni(),s=c=>{const f=c.I;return typeof f>"u"||f},a=()=>{const c=e.base||r.value.path.replace(/\/[^/]+$/,"/"),f=l.getRoutes(),d=[];return f.filter(({meta:p,path:h})=>{if(!wn(h,c)||h===c)return!1;if(c==="/"){const b=er(o.value.locales).filter(w=>w!=="/");if(h==="/404.html"||b.some(w=>wn(h,w)))return!1}return(ln(h,".html")&&!ln(h,"/index.html")||ln(h,"/"))&&s(p)}).map(({path:p,meta:h})=>{const b=p.substring(c.length).split("/").length;return{title:h.t||"",icon:h.i,base:p.replace(/\/[^/]+\/?$/,"/"),order:h.O||null,level:ln(p,"/")?b-1:b,path:p}}).filter(({title:p,level:h})=>p&&h<=e.level).sort(({title:p,level:h,path:b,order:w},{title:E,level:g,path:y,order:P})=>h-g||(ln(b,"/index.html")?-1:ln(y,"/index.html")?1:w===null?P===null?p.localeCompare(E):P:P===null?w:w>0?P>0?w-P:-1:P<0?w-P:1)).forEach(p=>{var h;const{base:b,level:w}=p;switch(w){case 1:d.push(p);break;case 2:{const E=d.find(g=>g.path===b);E&&(E.children??(E.children=[])).push(p);break}default:{const E=d.find(g=>g.path===b.replace(/\/[^/]+\/$/,"/"));if(E){const g=(h=E.children)==null?void 0:h.find(y=>y.path===b);g&&(g.children??(g.children=[])).push(p)}}}}),d},i=x(()=>a());return()=>u("div",{class:"vp-catalog"},[u("h2",{class:"vp-catalog-main-title"},n.value.title),i.value.length?i.value.map(({children:c=[],icon:f,path:d,title:p},h)=>[u("h3",{id:p,class:["vp-catalog-child-title",{"has-children":c.length}]},[u("a",{href:`#${p}`,class:"header-anchor","aria-hidden":!0},"#"),u(lt,{class:"vp-catalog-title",to:d},()=>[e.index?`${h+1}.`:null,f&&t?u(t,{icon:f}):null,p||d])]),c.length?u("ul",{class:"vp-catalog-child-catalogs"},c.map(({children:b=[],icon:w,path:E,title:g},y)=>u("li",{class:"vp-child-catalog"},[u("div",{class:["vp-catalog-sub-title",{"has-children":b.length}]},[u("a",{href:`#${g}`,class:"header-anchor"},"#"),u(lt,{class:"vp-catalog-title",to:E},()=>[e.index?`${h+1}.${y+1}`:null,w&&t?u(t,{icon:w}):null,g||E])]),b.length?u("div",{class:"v-sub-catalogs"},b.map(({icon:P,path:R,title:V},I)=>u(lt,{class:"vp-sub-catalog",to:R},()=>[e.index?`${h+1}.${y+1}.${I+1}`:null,P&&t?u(t,{icon:P}):null,V||R]))):null]))):null]):u("p",{class:"vp-empty-catalog"},n.value.empty)])}}),Zh=st({enhance:({app:e})=>{Uh(e),_t("AutoCatalog",e)||e.component("AutoCatalog",Gh)}});const qh=u("svg",{class:"external-link-icon",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"},[u("path",{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}),u("polygon",{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"})]),Bi=W({name:"ExternalLinkIcon",props:{locales:{type:Object,required:!1,default:()=>({})}},setup(e){const t=Jt(),n=x(()=>e.locales[t.value]??{openInNewWindow:"open in new window"});return()=>u("span",[qh,u("span",{class:"external-link-icon-sr-only"},n.value.openInNewWindow)])}}),Yh={},Xh=st({enhance({app:e}){e.component("ExternalLinkIcon",u(Bi,{locales:Yh}))}});/** + * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT + */const oe={settings:{minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
'},status:null,set:e=>{const t=oe.isStarted();e=sl(e,oe.settings.minimum,1),oe.status=e===1?null:e;const n=oe.render(!t),r=n.querySelector(oe.settings.barSelector),l=oe.settings.speed,o=oe.settings.easing;return n.offsetWidth,Qh(s=>{vr(r,{transform:"translate3d("+Fs(e)+"%,0,0)",transition:"all "+l+"ms "+o}),e===1?(vr(n,{transition:"none",opacity:"1"}),n.offsetWidth,setTimeout(function(){vr(n,{transition:"all "+l+"ms linear",opacity:"0"}),setTimeout(function(){oe.remove(),s()},l)},l)):setTimeout(()=>s(),l)}),oe},isStarted:()=>typeof oe.status=="number",start:()=>{oe.status||oe.set(0);const e=()=>{setTimeout(()=>{oe.status&&(oe.trickle(),e())},oe.settings.trickleSpeed)};return oe.settings.trickle&&e(),oe},done:e=>!e&&!oe.status?oe:oe.inc(.3+.5*Math.random()).set(1),inc:e=>{let t=oe.status;return t?(typeof e!="number"&&(e=(1-t)*sl(Math.random()*t,.1,.95)),t=sl(t+e,0,.994),oe.set(t)):oe.start()},trickle:()=>oe.inc(Math.random()*oe.settings.trickleRate),render:e=>{if(oe.isRendered())return document.getElementById("nprogress");Bs(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=oe.settings.template;const n=t.querySelector(oe.settings.barSelector),r=e?"-100":Fs(oe.status||0),l=document.querySelector(oe.settings.parent);return vr(n,{transition:"all 0 linear",transform:"translate3d("+r+"%,0,0)"}),l!==document.body&&Bs(l,"nprogress-custom-parent"),l==null||l.appendChild(t),t},remove:()=>{Vs(document.documentElement,"nprogress-busy"),Vs(document.querySelector(oe.settings.parent),"nprogress-custom-parent");const e=document.getElementById("nprogress");e&&Jh(e)},isRendered:()=>!!document.getElementById("nprogress")},sl=(e,t,n)=>en?n:e,Fs=e=>(-1+e)*100,Qh=function(){const e=[];function t(){const n=e.shift();n&&n(t)}return function(n){e.push(n),e.length===1&&t()}}(),vr=function(){const e=["Webkit","O","Moz","ms"],t={};function n(s){return s.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(a,i){return i.toUpperCase()})}function r(s){const a=document.body.style;if(s in a)return s;let i=e.length;const c=s.charAt(0).toUpperCase()+s.slice(1);let f;for(;i--;)if(f=e[i]+c,f in a)return f;return s}function l(s){return s=n(s),t[s]??(t[s]=r(s))}function o(s,a,i){a=l(a),s.style[a]=i}return function(s,a){for(const i in a){const c=a[i];c!==void 0&&Object.prototype.hasOwnProperty.call(a,i)&&o(s,i,c)}}}(),Vi=(e,t)=>(typeof e=="string"?e:_o(e)).indexOf(" "+t+" ")>=0,Bs=(e,t)=>{const n=_o(e),r=n+t;Vi(n,t)||(e.className=r.substring(1))},Vs=(e,t)=>{const n=_o(e);if(!Vi(e,t))return;const r=n.replace(" "+t+" "," ");e.className=r.substring(1,r.length-1)},_o=e=>(" "+(e.className||"")+" ").replace(/\s+/gi," "),Jh=e=>{e&&e.parentNode&&e.parentNode.removeChild(e)};const e1=()=>{_e(()=>{const e=Xe(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||oe.start()}),e.afterEach(n=>{t.add(n.path),oe.done()})})},t1=st({setup(){e1()}}),n1=JSON.parse('{"encrypt":{},"logo":"/shamrock.webp","repo":"whitechi73/OpenShamrock","docsRepo":"whitechi73/OpenShamrock","docsBranch":"docs","docsDir":"docs","locales":{"/":{"lang":"zh-CN","navbarLocales":{"langName":"简体中文","selectLangAriaLabel":"选择语言"},"metaLocales":{"author":"作者","date":"写作日期","origin":"原创","views":"访问量","category":"分类","tag":"标签","readingTime":"阅读时间","words":"字数","toc":"此页内容","prev":"上一页","next":"下一页","lastUpdated":"上次编辑于","contributors":"贡献者","editLink":"编辑此页","print":"打印"},"outlookLocales":{"themeColor":"主题色","darkmode":"外观","fullscreen":"全屏"},"routeLocales":{"skipToContent":"跳至主要內容","notFoundTitle":"页面不存在","notFoundMsg":["这里什么也没有","我们是怎么来到这儿的?","这 是 四 零 四 !","看起来你访问了一个失效的链接"],"back":"返回上一页","home":"带我回家","openInNewWindow":"Open in new window"},"navbar":["/guide","/advanced","/api","/message","/event"],"sidebar":[{"text":"指南","prefix":"guide","icon":"lightbulb","collapsible":true,"children":["getting-started","configuration","faq"]},{"text":"进阶","prefix":"advanced","icon":"gem","collapsible":true,"children":["voice"]},{"text":"接口","prefix":"api","icon":"laptop-code","collapsible":true,"children":["request-response","account","contact","user","message","resources","dispose","group","file","shamrock","other"]},{"text":"消息","prefix":"message","icon":"comment","collapsible":true,"children":["format","normal","media","special","advanced"]},{"text":"事件","prefix":"event","icon":"bell","collapsible":true,"children":["general-data","message","notice","request"]}]}}}'),r1=X(n1),zi=()=>r1,ji=Symbol(""),l1=()=>{const e=be(ji);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},o1=(e,t)=>{const{locales:n,...r}=e;return{...r,...n==null?void 0:n[t]}},s1=st({enhance({app:e}){const t=zi(),n=e._context.provides[co],r=x(()=>o1(t.value,n.value));e.provide(ji,r),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return r.value}}})}});const a1=800,i1=2e3,c1={"/":{copy:"复制代码",copied:"已复制",hint:"复制成功"}},u1=!1,f1=['.theme-hope-content div[class*="language-"] pre'],zs=!1,al=new Map,d1=()=>{const{copy:e}=Eh({legacy:!0}),t=Ht(c1),n=he(),r=Pi(),l=a=>{if(!a.hasAttribute("copy-code-registered")){const i=document.createElement("button");i.type="button",i.classList.add("copy-code-button"),i.innerHTML='
',i.setAttribute("aria-label",t.value.copy),i.setAttribute("data-copied",t.value.copied),a.parentElement&&a.parentElement.insertBefore(i,a),a.setAttribute("copy-code-registered","")}},o=()=>Yt().then(()=>new Promise(a=>{setTimeout(()=>{f1.forEach(i=>{document.querySelectorAll(i).forEach(l)}),a()},a1)})),s=(a,i,c)=>{let{innerText:f=""}=i;/language-(shellscript|shell|bash|sh|zsh)/.test(a.classList.toString())&&(f=f.replace(/^ *(\$|>) /gm,"")),e(f).then(()=>{c.classList.add("copied"),clearTimeout(al.get(c));const d=setTimeout(()=>{c.classList.remove("copied"),c.blur(),al.delete(c)},i1);al.set(c,d)})};_e(()=>{(!r.value||zs)&&o(),Le("click",a=>{const i=a.target;if(i.matches('div[class*="language-"] > button.copy')){const c=i.parentElement,f=i.nextElementSibling;f&&s(c,f,i)}else if(i.matches('div[class*="language-"] div.copy-icon')){const c=i.parentElement,f=c.parentElement,d=c.nextElementSibling;d&&s(f,d,c)}}),ae(()=>n.value.path,()=>{(!r.value||zs)&&o()})})};var p1=st({setup:()=>{d1()}});const il=go("VUEPRESS_TAB_STORE",{});var h1=W({name:"Tabs",props:{active:{type:Number,default:0},data:{type:Array,required:!0},id:{type:String,required:!0},tabId:{type:String,default:""}},slots:Object,setup(e,{slots:t}){const n=X(e.active),r=Ye([]),l=()=>{e.tabId&&(il.value[e.tabId]=e.data[n.value].id)},o=(c=n.value)=>{n.value=c{n.value=c>0?c-1:r.value.length-1,r.value[n.value].focus()},a=(c,f)=>{c.key===" "||c.key==="Enter"?(c.preventDefault(),n.value=f):c.key==="ArrowRight"?(c.preventDefault(),o()):c.key==="ArrowLeft"&&(c.preventDefault(),s()),l()},i=()=>{if(e.tabId){const c=e.data.findIndex(({id:f})=>il.value[e.tabId]===f);if(c!==-1)return c}return e.active};return _e(()=>{n.value=i(),ae(()=>il.value[e.tabId],(c,f)=>{if(e.tabId&&c!==f){const d=e.data.findIndex(({id:p})=>p===c);d!==-1&&(n.value=d)}})}),()=>e.data.length?u("div",{class:"vp-tabs"},[u("div",{class:"vp-tabs-nav",role:"tablist"},e.data.map(({id:c},f)=>{const d=f===n.value;return u("button",{type:"button",ref:p=>{p&&(r.value[f]=p)},class:["vp-tab-nav",{active:d}],role:"tab","aria-controls":`tab-${e.id}-${f}`,"aria-selected":d,onClick:()=>{n.value=f,l()},onKeydown:p=>a(p,f)},t[`title${f}`]({value:c,isActive:d}))})),e.data.map(({id:c},f)=>{const d=f===n.value;return u("div",{class:["vp-tab",{active:d}],id:`tab-${e.id}-${f}`,role:"tabpanel","aria-expanded":d},t[`tab${f}`]({value:c,isActive:d}))})]):null}});const v1=st({enhance:({app:e})=>{e.component("Tabs",h1)},setup:()=>{}});let m1={};const Wi=Symbol(""),g1=()=>be(Wi),b1=e=>{e.provide(Wi,m1)};const y1=".theme-hope-content :not(a) > img:not([no-view])",_1={"/":{closeTitle:"关闭",downloadTitle:"下载图片",fullscreenTitle:"切换全屏",zoomTitle:"缩放",arrowPrevTitle:"上一个 (左箭头)",arrowNextTitle:"下一个 (右箭头)"}},w1=800,E1='
',T1=e=>fe(e)?Array.from(document.querySelectorAll(e)):e.map(t=>Array.from(document.querySelectorAll(t))).flat(),Ki=e=>new Promise((t,n)=>{e.complete?t({type:"image",element:e,src:e.src,width:e.naturalWidth,height:e.naturalHeight,alt:e.alt,msrc:e.src}):(e.onload=()=>t(Ki(e)),e.onerror=r=>n(r))}),C1=()=>{const{isSupported:e,toggle:t}=bo(),n=g1(),r=Ht(_1),l=he();let o;const s=i=>{i.on("uiRegister",()=>{e&&i.ui.registerElement({name:"fullscreen",order:7,isButton:!0,html:'',onClick:()=>{t()}}),i.ui.registerElement({name:"download",order:8,isButton:!0,tagName:"a",html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-download"},onInit:(c,f)=>{c.setAttribute("download",""),c.setAttribute("target","_blank"),c.setAttribute("rel","noopener"),f.on("change",()=>{c.setAttribute("href",f.currSlide.data.src)})}}),i.ui.registerElement({name:"bulletsIndicator",className:"photo-swipe-bullets-indicator",appendTo:"wrapper",onInit:(c,f)=>{const d=[];let p=-1;for(let h=0;h{f.goTo(d.indexOf(w.target))},d.push(b),c.appendChild(b)}f.on("change",()=>{p>=0&&d[p].classList.remove("active"),d[f.currIndex].classList.add("active"),p=f.currIndex})}})})},a=()=>Promise.all([H(()=>import("./photoswipe.esm-5762295a.js"),[]),Yt().then(()=>new Promise(i=>setTimeout(i,w1)).then(()=>T1(y1)))]).then(([{default:i},c])=>{const f=c.map(d=>({html:E1,element:d,msrc:d.src}));c.forEach((d,p)=>{const h=()=>{o=new i({preloaderDelay:0,showHideAnimationType:"zoom",...r.value,...n,dataSource:f,index:p,closeOnVerticalDrag:!0,wheelToZoom:!1}),s(o),o.addFilter("thumbEl",()=>d),o.addFilter("placeholderSrc",()=>d.src),o.init()};d.style.cursor="zoom-in",d.addEventListener("click",()=>{h()}),d.addEventListener("keypress",({key:b})=>{b==="Enter"&&h()})}),c.forEach((d,p)=>{Ki(d).then(h=>{f.splice(p,1,h),o==null||o.refreshSlideContent(p)})})});_e(()=>{Le("wheel",()=>{o==null||o.close()}),a(),ae(()=>l.value.path,()=>a())})};var k1=st({enhance:({app:e})=>{b1(e)},setup:()=>{C1()}});const Ui=()=>{const e=he();return x(()=>e.value.readingTime??null)},Pl=typeof{"/":{word:"约 $word 字",less1Minute:"小于 1 分钟",time:"大约 $time 分钟"}}>"u"?null:{"/":{word:"约 $word 字",less1Minute:"小于 1 分钟",time:"大约 $time 分钟"}},x1=(e,t)=>{const{minutes:n,words:r}=e,{less1Minute:l,word:o,time:s}=t;return{time:n<1?l:s.replace("$time",Math.round(n).toString()),words:o.replace("$word",r.toString())}},js={words:"",time:""},S1=()=>Pl?Ht(Pl):x(()=>null),L1=()=>{if(typeof Pl>"u")return x(()=>js);const e=Ui(),t=S1();return x(()=>e.value&&t.value?x1(e.value,t.value):js)},nr=()=>zi(),me=()=>l1(),jr=()=>x(()=>!!nr().value.pure);var cl=W({name:"EmptyComponent",setup:()=>()=>null});const A1="719px",P1="1440px",I1="false",wo={mobileBreakPoint:A1,pcBreakPoint:P1,enableThemeColor:I1},Eo={},Gi=e=>{const{icon:t="",color:n,size:r}=e,l={};return n&&(l.color=n),r&&(l.height=Number.isNaN(Number(r))?r:`${r}px`),xn(t)?u("img",{class:"icon",src:t,"no-view":"",style:l}):ho(t)?u("img",{class:"icon",src:De(t),"no-view":"",style:l}):u(rt("FontIcon"),e)};Gi.displayName="HopeIcon";var Be=Gi,yt=(e=>(e.type="y",e.title="t",e.shortTitle="s",e.icon="i",e.author="a",e.date="d",e.localizedDate="l",e.category="c",e.tag="g",e.isEncrypted="n",e.isOriginal="o",e.readingTime="r",e.excerpt="e",e.sticky="u",e.cover="v",e.index="I",e.order="O",e))(yt||{}),R1=(e=>(e.article="a",e.home="h",e.slide="s",e.page="p",e))(R1||{});const pn=(e,t,n=!1)=>{let r=Ar(e,wi(encodeURI(t)));r.name==="404"&&(r=Ar(e,t));const{fullPath:l,meta:o,name:s}=r;return{text:!n&&o[yt.shortTitle]?o[yt.shortTitle]:o[yt.title]||t,link:s==="404"?t:l,...o[yt.icon]?{icon:o[yt.icon]}:{}}},O1=()=>{const e=Xe(),t=kt();return n=>{if(n)if(ho(n))t.path!==n&&e.push(n);else if(xn(n)||Ga(n))window&&window.open(n);else{const r=t.path.slice(0,t.path.lastIndexOf("/"));e.push(`${r}/${encodeURI(n)}`)}}},Zi=()=>{const e=me(),t=Ae();return x(()=>{const{author:n}=t.value;return n?Is(n):n===!1?[]:Is(e.value.author,!1)})},M1=()=>{const e=Ae();return x(()=>Jp(e.value.category).map(t=>({name:t,path:""})))},$1=()=>{const e=Ae();return x(()=>eh(e.value.tag).map(t=>({name:t,path:""})))},N1=()=>{const e=Ae(),t=he();return x(()=>{const n=jp(e.value.date);if(n)return n;const{createdTime:r}=t.value.git||{};return r?new Date(r):null})},D1=()=>{const e=me(),t=he(),n=Ae(),r=Zi(),l=M1(),o=$1(),s=N1(),a=Ui(),i=L1(),c=x(()=>({author:r.value,category:l.value,date:s.value,localizedDate:t.value.localizedDate,tag:o.value,isOriginal:n.value.isOriginal||!1,readingTime:a.value,readingTimeLocale:i.value,pageview:"pageview"in n.value?n.value.pageview:!0})),f=x(()=>"pageInfo"in n.value?n.value.pageInfo:"pageInfo"in e.value?e.value.pageInfo:null);return{info:c,items:f}},{mobileBreakPoint:H1,pcBreakPoint:F1}=wo,Ws=e=>e.endsWith("px")?Number(e.slice(0,-2)):null,Wr=()=>{const e=X(!1),t=X(!1),n=()=>{e.value=window.innerWidth<=(Ws(H1)??719),t.value=window.innerWidth>=(Ws(F1)??1440)};return _e(()=>{n(),Le("resize",n,!1),Le("orientationchange",n,!1)}),{isMobile:e,isPC:t}},qi=Symbol(""),rr=()=>{const e=be(qi);if(!e)throw new Error("useDarkmode() is called without provider.");return e},B1=e=>{const t=nr(),n=Lh(),r=go("vuepress-theme-hope-scheme","auto"),l=x(()=>t.value.darkmode||"switch"),o=x(()=>{const a=l.value;return a==="disable"?!1:a==="enable"?!0:a==="auto"?n.value:a==="toggle"?r.value==="dark":r.value==="dark"||r.value==="auto"&&n.value}),s=x(()=>{const a=l.value;return a==="switch"||a==="toggle"});e.provide(qi,{canToggle:s,config:l,isDarkmode:o,status:r}),Object.defineProperties(e.config.globalProperties,{$isDarkmode:{get:()=>o.value}})},V1=()=>{const{isDarkmode:e}=rr(),t=(n=e.value)=>document.documentElement.setAttribute("data-theme",n?"dark":"light");_e(()=>{ae(e,t,{immediate:!0})})};var He=W({name:"AutoLink",inheritAttrs:!1,props:{config:{type:Object,required:!0},exact:Boolean,noExternalLinkIcon:Boolean},emits:["focusout"],slots:Object,setup(e,{attrs:t,emit:n,slots:r}){const l=kt(),o=ni(),s=Or(e,"config"),a=x(()=>xn(s.value.link)),i=x(()=>Ga(s.value.link)||xd(s.value.link)),c=x(()=>i.value?void 0:s.value.target||(a.value?"_blank":void 0)),f=x(()=>c.value==="_blank"),d=x(()=>!a.value&&!i.value&&!f.value),p=x(()=>i.value?void 0:s.value.rel||(f.value?"noopener noreferrer":void 0)),h=x(()=>s.value.ariaLabel||s.value.text),b=x(()=>{if(e.exact)return!1;const E=er(o.value.locales);return E.length?E.every(g=>g!==s.value.link):s.value.link!=="/"}),w=x(()=>d.value?s.value.activeMatch?new RegExp(s.value.activeMatch).test(l.path):b.value?wn(l.path,s.value.link):l.path===s.value.link:!1);return()=>{const{before:E,after:g,default:y}=r,{text:P,icon:R,link:V}=s.value;return d.value?u(lt,{to:V,"aria-label":h.value,...t,class:["nav-link",{active:w.value},t.class],onFocusout:()=>n("focusout")},()=>y?y():[E?E():u(Be,{icon:R}),P,g==null?void 0:g()]):u("a",{href:V,rel:p.value,target:c.value,"aria-label":h.value,...t,class:["nav-link",t.class],onFocusout:()=>n("focusout")},y?y():[E?E():u(Be,{icon:R}),P,e.noExternalLinkIcon?null:u(Bi),g==null?void 0:g()])}}});const En=(e,t,n=!1)=>"activeMatch"in t?new RegExp(t.activeMatch).test(e.path):vo(e,t.link)?!0:t.children&&!n?t.children.some(r=>En(e,r)):!1,Yi=(e,t)=>t.type==="group"?t.children.some(n=>n.type==="group"?Yi(e,n):n.type==="page"&&En(e,n,!0))||"prefix"in t&&vo(e,t.prefix):!1,Xi=(e,t)=>fe(e.link)?u(He,{...t,config:e}):u("p",t,[u(Be,{icon:e.icon}),e.text]),Qi=e=>{const t=kt();return e?u("ul",{class:"vp-sidebar-sub-headers"},e.map(n=>{const r=En(t,n,!0);return u("li",{class:"vp-sidebar-sub-header"},[Xi(n,{class:["vp-sidebar-link","vp-heading",{active:r}]}),Qi(n.children)])})):null},ul=(e="",t="")=>ho(t)?t:`${Td(e)}${t}`,z1=(e,t)=>{const n=he();return{type:"heading",text:e.title,link:`${n.value.path}#${e.slug}`,children:To(e.children,t)}},To=(e,t)=>t>0?e.map(n=>z1(n,t-1)):[],Ji=e=>{const t=he();return To(t.value.headers,e)},Il=(e,t,n="")=>{const r=Xe(),l=he(),o=(s,a=n)=>{var i;const c=fe(s)?pn(r,ul(a,s)):s.link?{...s,...Sr(s.link)?{}:{link:pn(r,ul(a,s.link)).link}}:s;if("children"in c){const f=ul(a,c.prefix),d=c.children==="structure"?Eo[f]:c.children;return{type:"group",...c,prefix:f,children:d.map(p=>o(p,f))}}return{type:"page",...c,children:c.link===l.value.path?To(((i=l.value.headers[0])==null?void 0:i.level)===1?l.value.headers[0].children:l.value.headers,t):[]}};return e.map(s=>o(s))},j1=(e,t)=>{const n=he(),r=er(e).sort((l,o)=>o.length-l.length);for(const l of r)if(wn(decodeURI(n.value.path),l)){const o=e[l];return o?Il(o==="structure"?Eo[l]:o==="heading"?Ji(t):o,t,l):[]}return console.warn(`${n.value.path} is missing sidebar config.`),[]},W1=(e,t)=>{const n=Jt();return e===!1?[]:e==="heading"?Ji(t):e==="structure"?Il(Eo[n.value],t,n.value):Y(e)?Il(e,t):ao(e)?j1(e,t):[]},ec=Symbol(""),K1=()=>{const e=Ae(),t=me(),n=x(()=>e.value.home?!1:e.value.sidebar??t.value.sidebar??"structure"),r=x(()=>e.value.headerDepth??t.value.headerDepth??2),l=x(()=>W1(n.value,r.value));Gt(ec,l)},Co=()=>{const e=be(ec);if(!e)throw new Error("useSidebarItems() is called without provider.");return e};var U1=W({name:"PageFooter",setup(){const e=Ae(),t=me(),n=Zi(),r=x(()=>{const{copyright:s,footer:a}=e.value;return a!==!1&&!!(s||a||t.value.displayFooter)}),l=x(()=>{const{footer:s}=e.value;return s===!1?!1:fe(s)?s:t.value.footer||""}),o=x(()=>"copyright"in e.value?e.value.copyright:"copyright"in t.value?t.value.copyright:n.value.length?`Copyright © ${new Date().getFullYear()} ${n.value[0].name}`:!1);return()=>r.value?u("footer",{class:"vp-footer-wrapper"},[l.value?u("div",{class:"vp-footer",innerHTML:l.value}):null,o.value?u("div",{class:"vp-copyright",innerHTML:o.value}):null]):null}}),G1=W({name:"NavbarDropdownLink",props:{config:{type:Object,required:!0}},slots:Object,setup(e,{slots:t}){const n=he(),r=Or(e,"config"),l=x(()=>r.value.ariaLabel||r.value.text),o=X(!1);ae(()=>n.value.path,()=>{o.value=!1});const s=a=>{a.detail===0&&(o.value=!o.value)};return()=>{var a;return u("div",{class:["dropdown-wrapper",{open:o.value}]},[u("button",{type:"button",class:"dropdown-title","aria-label":l.value,onClick:s},[((a=t.title)==null?void 0:a.call(t))||u("span",{class:"title"},[u(Be,{icon:r.value.icon}),e.config.text]),u("span",{class:"arrow"}),u("ul",{class:"nav-dropdown"},r.value.children.map((i,c)=>{const f=c===r.value.children.length-1;return u("li",{class:"dropdown-item"},"children"in i?[u("h4",{class:"dropdown-subtitle"},i.link?u(He,{config:i,onFocusout:()=>{i.children.length===0&&f&&(o.value=!1)}}):u("span",i.text)),u("ul",{class:"dropdown-subitem-wrapper"},i.children.map((d,p)=>u("li",{class:"dropdown-subitem"},u(He,{config:d,onFocusout:()=>{p===i.children.length-1&&f&&(o.value=!1)}}))))]:u(He,{config:i,onFocusout:()=>{f&&(o.value=!1)}}))}))])])}}});const tc=(e,t,n="")=>fe(t)?pn(e,`${n}${t}`):"children"in t?{...t,...t.link&&!Sr(t.link)?pn(e,`${n}${t.link}`):{},children:t.children.map(r=>tc(e,r,`${n}${t.prefix||""}`))}:{...t,link:Sr(t.link)?t.link:pn(e,`${n}${t.link}`).link},nc=()=>{const e=me(),t=Xe(),n=()=>(e.value.navbar||[]).map(l=>tc(t,l)),r=X(n());return ae(e,()=>{r.value=n()}),r},Z1=()=>{const e=me(),t=x(()=>e.value.repo||null),n=x(()=>t.value?nh(t.value):null),r=x(()=>t.value?Ci(t.value):null),l=x(()=>n.value?e.value.repoLabel??(r.value===null?"Source":r.value):null);return x(()=>!n.value||!l.value||e.value.repoDisplay===!1?null:{type:r.value||"Source",label:l.value,link:n.value})};var q1=W({name:"NavScreenDropdown",props:{config:{type:Object,required:!0}},setup(e){const t=he(),n=Or(e,"config"),r=x(()=>n.value.ariaLabel||n.value.text),l=X(!1);ae(()=>t.value.path,()=>{l.value=!1});const o=(s,a)=>a[a.length-1]===s;return()=>[u("button",{type:"button",class:["nav-screen-dropdown-title",{active:l.value}],"aria-label":r.value,onClick:()=>{l.value=!l.value}},[u("span",{class:"title"},[u(Be,{icon:n.value.icon}),e.config.text]),u("span",{class:["arrow",l.value?"down":"end"]})]),u("ul",{class:["nav-screen-dropdown",{hide:!l.value}]},n.value.children.map(s=>u("li",{class:"dropdown-item"},"children"in s?[u("h4",{class:"dropdown-subtitle"},s.link?u(He,{config:s,onFocusout:()=>{o(s,n.value.children)&&s.children.length===0&&(l.value=!1)}}):u("span",s.text)),u("ul",{class:"dropdown-subitem-wrapper"},s.children.map(a=>u("li",{class:"dropdown-subitem"},u(He,{config:a,onFocusout:()=>{o(a,s.children)&&o(s,n.value.children)&&(l.value=!1)}}))))]:u(He,{config:s,onFocusout:()=>{o(s,n.value.children)&&(l.value=!1)}}))))]}}),Y1=W({name:"NavScreenLinks",setup(){const e=nc();return()=>e.value.length?u("nav",{class:"nav-screen-links"},e.value.map(t=>u("div",{class:"navbar-links-item"},"children"in t?u(q1,{config:t}):u(He,{config:t})))):null}});const rc=()=>u(ye,{name:"dark"},()=>u("path",{d:"M524.8 938.667h-4.267a439.893 439.893 0 0 1-313.173-134.4 446.293 446.293 0 0 1-11.093-597.334A432.213 432.213 0 0 1 366.933 90.027a42.667 42.667 0 0 1 45.227 9.386 42.667 42.667 0 0 1 10.24 42.667 358.4 358.4 0 0 0 82.773 375.893 361.387 361.387 0 0 0 376.747 82.774 42.667 42.667 0 0 1 54.187 55.04 433.493 433.493 0 0 1-99.84 154.88 438.613 438.613 0 0 1-311.467 128z"}));rc.displayName="DarkIcon";const lc=()=>u(ye,{name:"light"},()=>u("path",{d:"M952 552h-80a40 40 0 0 1 0-80h80a40 40 0 0 1 0 80zM801.88 280.08a41 41 0 0 1-57.96-57.96l57.96-58a41.04 41.04 0 0 1 58 58l-58 57.96zM512 752a240 240 0 1 1 0-480 240 240 0 0 1 0 480zm0-560a40 40 0 0 1-40-40V72a40 40 0 0 1 80 0v80a40 40 0 0 1-40 40zm-289.88 88.08-58-57.96a41.04 41.04 0 0 1 58-58l57.96 58a41 41 0 0 1-57.96 57.96zM192 512a40 40 0 0 1-40 40H72a40 40 0 0 1 0-80h80a40 40 0 0 1 40 40zm30.12 231.92a41 41 0 0 1 57.96 57.96l-57.96 58a41.04 41.04 0 0 1-58-58l58-57.96zM512 832a40 40 0 0 1 40 40v80a40 40 0 0 1-80 0v-80a40 40 0 0 1 40-40zm289.88-88.08 58 57.96a41.04 41.04 0 0 1-58 58l-57.96-58a41 41 0 0 1 57.96-57.96z"}));lc.displayName="LightIcon";const oc=()=>u(ye,{name:"auto"},()=>u("path",{d:"M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm0-840c-198.78 0-360 161.22-360 360 0 198.84 161.22 360 360 360s360-161.16 360-360c0-198.78-161.22-360-360-360zm0 660V212c165.72 0 300 134.34 300 300 0 165.72-134.28 300-300 300z"}));oc.displayName="AutoIcon";const sc=()=>u(ye,{name:"enter-fullscreen"},()=>u("path",{d:"M762.773 90.24h-497.28c-96.106 0-174.4 78.293-174.4 174.4v497.28c0 96.107 78.294 174.4 174.4 174.4h497.28c96.107 0 175.04-78.293 174.4-174.4V264.64c0-96.213-78.186-174.4-174.4-174.4zm-387.2 761.173H215.04c-21.867 0-40.427-17.92-41.067-41.066V649.92c0-22.507 17.92-40.427 40.427-40.427 11.307 0 21.227 4.694 28.48 11.947 7.253 7.253 11.947 17.92 11.947 28.48v62.293l145.28-145.28c15.893-15.893 41.813-15.893 57.706 0 15.894 15.894 15.894 41.814 0 57.707l-145.28 145.28h62.294c22.506 0 40.426 17.92 40.426 40.427s-17.173 41.066-39.68 41.066zM650.24 165.76h160.427c21.866 0 40.426 17.92 41.066 41.067v160.426c0 22.507-17.92 40.427-40.426 40.427-11.307 0-21.227-4.693-28.48-11.947-7.254-7.253-11.947-17.92-11.947-28.48v-62.186L625.6 450.347c-15.893 15.893-41.813 15.893-57.707 0-15.893-15.894-15.893-41.814 0-57.707l145.28-145.28H650.88c-22.507 0-40.427-17.92-40.427-40.427s17.174-41.173 39.787-41.173z"}));sc.displayName="EnterFullScreenIcon";const ac=()=>u(ye,{name:"cancel-fullscreen"},()=>u("path",{d:"M778.468 78.62H247.922c-102.514 0-186.027 83.513-186.027 186.027V795.08c0 102.514 83.513 186.027 186.027 186.027h530.432c102.514 0 186.71-83.513 186.026-186.027V264.647C964.494 162.02 880.981 78.62 778.468 78.62zM250.88 574.35h171.122c23.324 0 43.122 19.115 43.804 43.805v171.121c0 24.008-19.114 43.122-43.122 43.122-12.06 0-22.641-5.006-30.378-12.743s-12.743-19.115-12.743-30.379V722.83L224.597 877.91c-16.953 16.952-44.6 16.952-61.553 0-16.953-16.954-16.953-44.602 0-61.554L318.009 661.39h-66.446c-24.007 0-43.122-19.114-43.122-43.122 0-24.12 18.432-43.918 42.439-43.918zm521.899-98.873H601.657c-23.325 0-43.122-19.114-43.805-43.804V260.55c0-24.007 19.115-43.122 43.122-43.122 12.06 0 22.642 5.007 30.379 12.743s12.743 19.115 12.743 30.38v66.445l154.965-154.965c16.953-16.953 44.601-16.953 61.554 0 16.953 16.953 16.953 44.6 0 61.554L705.536 388.55h66.446c24.007 0 43.122 19.115 43.122 43.122.114 24.007-18.318 43.804-42.325 43.804z"}));ac.displayName="CancelFullScreenIcon";const ic=()=>u(ye,{name:"outlook"},()=>[u("path",{d:"M224 800c0 9.6 3.2 44.8 6.4 54.4 6.4 48-48 76.8-48 76.8s80 41.6 147.2 0 134.4-134.4 38.4-195.2c-22.4-12.8-41.6-19.2-57.6-19.2C259.2 716.8 227.2 761.6 224 800zM560 675.2l-32 51.2c-51.2 51.2-83.2 32-83.2 32 25.6 67.2 0 112-12.8 128 25.6 6.4 51.2 9.6 80 9.6 54.4 0 102.4-9.6 150.4-32l0 0c3.2 0 3.2-3.2 3.2-3.2 22.4-16 12.8-35.2 6.4-44.8-9.6-12.8-12.8-25.6-12.8-41.6 0-54.4 60.8-99.2 137.6-99.2 6.4 0 12.8 0 22.4 0 12.8 0 38.4 9.6 48-25.6 0-3.2 0-3.2 3.2-6.4 0-3.2 3.2-6.4 3.2-6.4 6.4-16 6.4-16 6.4-19.2 9.6-35.2 16-73.6 16-115.2 0-105.6-41.6-198.4-108.8-268.8C704 396.8 560 675.2 560 675.2zM224 419.2c0-28.8 22.4-51.2 51.2-51.2 28.8 0 51.2 22.4 51.2 51.2 0 28.8-22.4 51.2-51.2 51.2C246.4 470.4 224 448 224 419.2zM320 284.8c0-22.4 19.2-41.6 41.6-41.6 22.4 0 41.6 19.2 41.6 41.6 0 22.4-19.2 41.6-41.6 41.6C339.2 326.4 320 307.2 320 284.8zM457.6 208c0-12.8 12.8-25.6 25.6-25.6 12.8 0 25.6 12.8 25.6 25.6 0 12.8-12.8 25.6-25.6 25.6C470.4 233.6 457.6 220.8 457.6 208zM128 505.6C128 592 153.6 672 201.6 736c28.8-60.8 112-60.8 124.8-60.8-16-51.2 16-99.2 16-99.2l316.8-422.4c-48-19.2-99.2-32-150.4-32C297.6 118.4 128 291.2 128 505.6zM764.8 86.4c-22.4 19.2-390.4 518.4-390.4 518.4-22.4 28.8-12.8 76.8 22.4 99.2l9.6 6.4c35.2 22.4 80 12.8 99.2-25.6 0 0 6.4-12.8 9.6-19.2 54.4-105.6 275.2-524.8 288-553.6 6.4-19.2-3.2-32-19.2-32C777.6 76.8 771.2 80 764.8 86.4z"})]);ic.displayName="OutlookIcon";var cc=W({name:"AppearanceSwitch",setup(){const{config:e,status:t}=rr(),n=()=>{e.value==="switch"?t.value={light:"dark",dark:"auto",auto:"light"}[t.value]:t.value=t.value==="light"?"dark":"light"};return()=>u("button",{type:"button",id:"appearance-switch",onClick:()=>n()},[u(oc,{style:{display:t.value==="auto"?"block":"none"}}),u(rc,{style:{display:t.value==="dark"?"block":"none"}}),u(lc,{style:{display:t.value==="light"?"block":"none"}})])}}),X1=W({name:"AppearanceMode",setup(){const e=me(),{canToggle:t}=rr(),n=x(()=>e.value.outlookLocales.darkmode);return()=>t.value?u("div",{class:"appearance-wrapper"},[u("label",{class:"appearance-title",for:"appearance-switch"},n.value),u(cc)]):null}});const fl="VUEPRESS_THEME_COLOR";var Q1=W({name:"ThemeColorPicker",props:{themeColor:{type:Object,required:!0}},setup(e){const t=(n="")=>{const r=document.documentElement.classList,l=er(e.themeColor);if(!n){localStorage.removeItem(fl),r.remove(...l);return}r.remove(...l.filter(o=>o!==n)),r.add(n),localStorage.setItem(fl,n)};return _e(()=>{const n=localStorage.getItem(fl);n&&t(n)}),()=>u("ul",{id:"theme-color-picker"},[u("li",u("span",{class:"theme-color",onClick:()=>t()})),_i(e.themeColor).map(([n,r])=>u("li",u("span",{style:{background:r},onClick:()=>t(n)})))])}});const hn=wo.enableThemeColor==="true",J1=hn?Xp(_i(wo).filter(([e])=>e.startsWith("theme-"))):{};var ev=W({name:"ThemeColor",setup(){const e=me(),t=x(()=>e.value.outlookLocales.themeColor);return()=>hn?u("div",{class:"theme-color-wrapper"},[u("label",{class:"theme-color-title",for:"theme-color-picker"},t.value),u(Q1,{themeColor:J1})]):null}}),uc=W({name:"ToggleFullScreenButton",setup(){const e=me(),{isSupported:t,isFullscreen:n,toggle:r}=bo(),l=x(()=>e.value.outlookLocales.fullscreen);return()=>t?u("div",{class:"full-screen-wrapper"},[u("label",{class:"full-screen-title",for:"full-screen-switch"},l.value),u("button",{type:"button",id:"full-screen-switch",class:"full-screen",ariaPressed:n.value,onClick:()=>r()},n.value?u(ac):u(sc))]):null}}),fc=W({name:"OutlookSettings",setup(){const e=nr(),t=jr(),n=x(()=>!t.value&&e.value.fullscreen);return()=>u(Fr,()=>[hn?u(ev):null,u(X1),n.value?u(uc):null])}}),tv=W({name:"NavScreen",props:{show:Boolean},emits:["close"],slots:Object,setup(e,{emit:t,slots:n}){const r=he(),{isMobile:l}=Wr(),o=Ye(),s=yo(o);return _e(()=>{o.value=document.body,ae(l,a=>{!a&&e.show&&(s.value=!1,t("close"))}),ae(()=>r.value.path,()=>{s.value=!1,t("close")})}),Xt(()=>{s.value=!1}),()=>u(Dt,{name:"fade",onEnter:()=>{s.value=!0},onAfterLeave:()=>{s.value=!1}},()=>{var a,i;return e.show?u("div",{id:"nav-screen"},u("div",{class:"vp-nav-screen-container"},[(a=n.before)==null?void 0:a.call(n),u(Y1),u("div",{class:"vp-outlook-wrapper"},u(fc)),(i=n.after)==null?void 0:i.call(n)])):null})}}),nv=W({name:"NavbarBrand",setup(){const e=Jt(),t=Hr(),n=me(),r=x(()=>n.value.home||e.value),l=x(()=>t.value.title),o=x(()=>n.value.navTitle??l.value),s=x(()=>n.value.logo?De(n.value.logo):null),a=x(()=>n.value.logoDark?De(n.value.logoDark):null);return()=>u(lt,{to:r.value,class:"vp-brand"},()=>[s.value?u("img",{class:["vp-nav-logo",{light:!!a.value}],src:s.value,alt:l.value}):null,a.value?u("img",{class:["vp-nav-logo dark"],src:a.value,alt:l.value}):null,o.value?u("span",{class:["vp-site-name",{"hide-in-pad":s.value&&n.value.hideSiteNameOnMobile!==!1}]},o.value):null])}}),rv=W({name:"NavbarLinks",setup(){const e=nc();return()=>e.value.length?u("nav",{class:"vp-nav-links"},e.value.map(t=>u("div",{class:"nav-item hide-in-mobile"},"children"in t?u(G1,{config:t}):u(He,{config:t})))):null}}),lv=W({name:"RepoLink",components:{BitbucketIcon:Li,GiteeIcon:Si,GitHubIcon:ki,GitLabIcon:xi,SourceIcon:Ai},setup(){const e=Z1();return()=>e.value?u("div",{class:"nav-item vp-repo"},u("a",{class:"vp-repo-link",href:e.value.link,target:"_blank",rel:"noopener noreferrer","aria-label":e.value.label},u(rt(`${e.value.type}Icon`),{style:{width:"1.25rem",height:"1.25rem",verticalAlign:"middle"}}))):null}});const dc=({active:e=!1},{emit:t})=>u("button",{type:"button",class:["vp-toggle-navbar-button",{"is-active":e}],"aria-label":"Toggle Navbar","aria-expanded":e,"aria-controls":"nav-screen",onClick:()=>t("toggle")},u("span",[u("span",{class:"vp-top"}),u("span",{class:"vp-middle"}),u("span",{class:"vp-bottom"})]));dc.displayName="ToggleNavbarButton";var ov=dc;const Rl=(e,{emit:t})=>u("button",{type:"button",class:"vp-toggle-sidebar-button",title:"Toggle Sidebar",onClick:()=>t("toggle")},u("span",{class:"icon"}));Rl.displayName="ToggleSidebarButton",Rl.emits=["toggle"];var sv=Rl,av=W({name:"OutlookButton",setup(){const{isSupported:e}=bo(),t=nr(),n=jr(),r=he(),{canToggle:l}=rr(),o=X(!1),s=x(()=>!n.value&&t.value.fullscreen&&e);return ae(()=>r.value.path,()=>{o.value=!1}),()=>l.value||s.value||hn?u("div",{class:"nav-item hide-in-mobile"},l.value&&!s.value&&!hn?u(cc):s.value&&!l.value&&!hn?u(uc):u("button",{type:"button",class:["outlook-button",{open:o.value}],tabindex:"-1","aria-hidden":!0},[u(ic),u("div",{class:"outlook-dropdown"},u(fc))])):null}}),iv=W({name:"NavBar",emits:["toggleSidebar"],slots:Object,setup(e,{emit:t,slots:n}){const r=me(),{isMobile:l}=Wr(),o=X(!1),s=x(()=>{const{navbarAutoHide:f="mobile"}=r.value;return f!=="none"&&(f==="always"||l.value)}),a=x(()=>r.value.navbarLayout||{start:["Brand"],center:["Links"],end:["Language","Repo","Outlook","Search"]}),i={Brand:nv,Language:cl,Links:rv,Repo:lv,Outlook:av,Search:_t("Docsearch")?rt("Docsearch"):_t("SearchBox")?rt("SearchBox"):cl},c=f=>i[f]??(_t(f)?rt(f):cl);return()=>{var f,d,p,h,b,w;return[u("header",{id:"navbar",class:["vp-navbar",{"auto-hide":s.value,"hide-icon":r.value.navbarIcon===!1}]},[u("div",{class:"vp-navbar-start"},[u(sv,{onToggle:()=>{o.value&&(o.value=!1),t("toggleSidebar")}}),(f=n.startBefore)==null?void 0:f.call(n),(a.value.start||[]).map(E=>u(c(E))),(d=n.startAfter)==null?void 0:d.call(n)]),u("div",{class:"vp-navbar-center"},[(p=n.centerBefore)==null?void 0:p.call(n),(a.value.center||[]).map(E=>u(c(E))),(h=n.centerAfter)==null?void 0:h.call(n)]),u("div",{class:"vp-navbar-end"},[(b=n.endBefore)==null?void 0:b.call(n),(a.value.end||[]).map(E=>u(c(E))),(w=n.endAfter)==null?void 0:w.call(n),u(ov,{active:o.value,onToggle:()=>{o.value=!o.value}})])]),u(tv,{show:o.value,onClose:()=>{o.value=!1}},{before:()=>{var E;return(E=n.screenTop)==null?void 0:E.call(n)},after:()=>{var E;return(E=n.screenBottom)==null?void 0:E.call(n)}})]}}}),cv=W({name:"SidebarChild",props:{config:{type:Object,required:!0}},setup(e){const t=kt();return()=>[Xi(e.config,{class:["vp-sidebar-link",`vp-sidebar-${e.config.type}`,{active:En(t,e.config,!0)}],exact:!0}),Qi(e.config.children)]}}),uv=W({name:"SidebarGroup",props:{config:{type:Object,required:!0},open:{type:Boolean,required:!0}},emits:["toggle"],setup(e,{emit:t}){const n=kt(),r=x(()=>En(n,e.config)),l=x(()=>En(n,e.config,!0));return()=>{const{collapsible:o,children:s=[],icon:a,prefix:i,link:c,text:f}=e.config;return u("section",{class:"vp-sidebar-group"},[u(o?"button":"p",{class:["vp-sidebar-heading",{clickable:o||c,exact:l.value,active:r.value}],...o?{type:"button",onClick:()=>t("toggle"),onKeydown:d=>{d.key==="Enter"&&t("toggle")}}:{}},[u(Be,{icon:a}),c?u(He,{class:"vp-sidebar-title",config:{text:f,link:c},noExternalLinkIcon:!0}):u("span",{class:"vp-sidebar-title"},f),o?u("span",{class:["vp-arrow",e.open?"down":"end"]}):null]),e.open||!o?u(pc,{key:i,config:s}):null])}}}),pc=W({name:"SidebarLinks",props:{config:{type:Array,required:!0}},setup(e){const t=kt(),n=X(-1),r=l=>{n.value=l===n.value?-1:l};return ae(()=>t.path,()=>{const l=e.config.findIndex(o=>Yi(t,o));n.value=l},{immediate:!0,flush:"post"}),()=>u("ul",{class:"vp-sidebar-links"},e.config.map((l,o)=>u("li",l.type==="group"?u(uv,{config:l,open:o===n.value,onToggle:()=>r(o)}):u(cv,{config:l}))))}}),fv=W({name:"SideBar",slots:Object,setup(e,{slots:t}){const n=kt(),r=me(),l=Co(),o=Ye();return _e(()=>{ae(()=>n.hash,s=>{const a=document.querySelector(`.vp-sidebar a.vp-sidebar-link[href="${n.path}${s}"]`);if(!a)return;const{top:i,height:c}=o.value.getBoundingClientRect(),{top:f,height:d}=a.getBoundingClientRect();fi+c&&a.scrollIntoView(!1)},{immediate:!0})}),()=>{var s,a,i;return u("aside",{ref:o,id:"sidebar",class:["vp-sidebar",{"hide-icon":r.value.sidebarIcon===!1}]},[(s=t.top)==null?void 0:s.call(t),((a=t.default)==null?void 0:a.call(t))||u(pc,{config:l.value}),(i=t.bottom)==null?void 0:i.call(t)])}}}),hc=W({name:"CommonWrapper",props:{containerClass:{type:String,default:""},noNavbar:Boolean,noSidebar:Boolean,noToc:Boolean},slots:Object,setup(e,{slots:t}){const n=Xe(),r=he(),l=Ae(),o=me(),{isMobile:s,isPC:a}=Wr(),[i,c]=Ms(!1),[f,d]=Ms(!1),p=Co(),h=X(!1),b=x(()=>e.noNavbar||l.value.navbar===!1||o.value.navbar===!1?!1:!!(r.value.title||o.value.logo||o.value.repo||o.value.navbar)),w=x(()=>e.noSidebar?!1:l.value.sidebar!==!1&&p.value.length!==0&&!l.value.home),E=x(()=>e.noToc||l.value.home?!1:l.value.toc||o.value.toc!==!1&&l.value.toc!==!1),g={x:0,y:0},y=I=>{g.x=I.changedTouches[0].clientX,g.y=I.changedTouches[0].clientY},P=I=>{const N=I.changedTouches[0].clientX-g.x,C=I.changedTouches[0].clientY-g.y;Math.abs(N)>Math.abs(C)*1.5&&Math.abs(N)>40&&(N>0&&g.x<=80?c(!0):c(!1))},R=()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;let V=0;return Le("scroll",hh(()=>{const I=R();I<=58||I{I||c(!1)}),_e(()=>{const I=yo(document.body);ae(i,C=>{I.value=C});const N=n.afterEach(()=>{c(!1)});Xt(()=>{I.value=!1,N()})}),()=>u(_t("GlobalEncrypt")?rt("GlobalEncrypt"):mi,()=>u("div",{class:["theme-container",{"no-navbar":!b.value,"no-sidebar":!w.value&&!(t.sidebar||t.sidebarTop||t.sidebarBottom),"has-toc":E.value,"hide-navbar":h.value,"sidebar-collapsed":!s.value&&!a.value&&f.value,"sidebar-open":s.value&&i.value},e.containerClass,l.value.containerClass||""],onTouchStart:y,onTouchEnd:P},[b.value?u(iv,{onToggleSidebar:()=>c()},{startBefore:()=>{var I;return(I=t.navbarStartBefore)==null?void 0:I.call(t)},startAfter:()=>{var I;return(I=t.navbarStartAfter)==null?void 0:I.call(t)},centerBefore:()=>{var I;return(I=t.navbarCenterBefore)==null?void 0:I.call(t)},centerAfter:()=>{var I;return(I=t.navbarCenterAfter)==null?void 0:I.call(t)},endBefore:()=>{var I;return(I=t.navbarEndBefore)==null?void 0:I.call(t)},endAfter:()=>{var I;return(I=t.navbarEndAfter)==null?void 0:I.call(t)},screenTop:()=>{var I;return(I=t.navScreenTop)==null?void 0:I.call(t)},screenBottom:()=>{var I;return(I=t.navScreenBottom)==null?void 0:I.call(t)}}):null,u(Dt,{name:"fade"},()=>i.value?u("div",{class:"vp-sidebar-mask",onClick:()=>c(!1)}):null),u(Dt,{name:"fade"},()=>s.value?null:u("div",{class:"toggle-sidebar-wrapper",onClick:()=>d()},u("span",{class:["arrow",f.value?"end":"start"]}))),u(fv,{},{...t.sidebar?{default:()=>t.sidebar()}:{},top:()=>{var I;return(I=t.sidebarTop)==null?void 0:I.call(t)},bottom:()=>{var I;return(I=t.sidebarBottom)==null?void 0:I.call(t)}}),t.default(),u(U1)]))}}),cn=W({name:"DropTransition",props:{type:{type:String,default:"single"},delay:{type:Number,default:0},duration:{type:Number,default:.25},appear:Boolean},slots:Object,setup(e,{slots:t}){const n=l=>{l.style.transition=`transform ${e.duration}s ease-in-out ${e.delay}s, opacity ${e.duration}s ease-in-out ${e.delay}s`,l.style.transform="translateY(-20px)",l.style.opacity="0"},r=l=>{l.style.transform="translateY(0)",l.style.opacity="1"};return()=>u(e.type==="single"?Dt:ud,{name:"drop",appear:e.appear,onAppear:n,onAfterAppear:r,onEnter:n,onAfterEnter:r,onBeforeLeave:n},()=>t.default())}});const Ol=({custom:e})=>u(li,{class:["theme-hope-content",{custom:e}]});Ol.displayName="MarkdownContent",Ol.props={custom:Boolean};var vc=Ol;const mc=()=>u(ye,{name:"author"},()=>u("path",{d:"M649.6 633.6c86.4-48 147.2-144 147.2-249.6 0-160-128-288-288-288s-288 128-288 288c0 108.8 57.6 201.6 147.2 249.6-121.6 48-214.4 153.6-240 288-3.2 9.6 0 19.2 6.4 25.6 3.2 9.6 12.8 12.8 22.4 12.8h704c9.6 0 19.2-3.2 25.6-12.8 6.4-6.4 9.6-16 6.4-25.6-25.6-134.4-121.6-240-243.2-288z"}));mc.displayName="AuthorIcon";const gc=()=>u(ye,{name:"calendar"},()=>u("path",{d:"M716.4 110.137c0-18.753-14.72-33.473-33.472-33.473-18.753 0-33.473 14.72-33.473 33.473v33.473h66.993v-33.473zm-334.87 0c0-18.753-14.72-33.473-33.473-33.473s-33.52 14.72-33.52 33.473v33.473h66.993v-33.473zm468.81 33.52H716.4v100.465c0 18.753-14.72 33.473-33.472 33.473a33.145 33.145 0 01-33.473-33.473V143.657H381.53v100.465c0 18.753-14.72 33.473-33.473 33.473a33.145 33.145 0 01-33.473-33.473V143.657H180.6A134.314 134.314 0 0046.66 277.595v535.756A134.314 134.314 0 00180.6 947.289h669.74a134.36 134.36 0 00133.94-133.938V277.595a134.314 134.314 0 00-133.94-133.938zm33.473 267.877H147.126a33.145 33.145 0 01-33.473-33.473c0-18.752 14.72-33.473 33.473-33.473h736.687c18.752 0 33.472 14.72 33.472 33.473a33.145 33.145 0 01-33.472 33.473z"}));gc.displayName="CalendarIcon";const bc=()=>u(ye,{name:"category"},()=>u("path",{d:"M148.41 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H148.41c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.311-40.31zM147.556 553.478H429.73c22.263 0 40.311 18.048 40.311 40.31v282.176c0 22.263-18.048 40.312-40.31 40.312H147.555c-22.263 0-40.311-18.049-40.311-40.312V593.79c0-22.263 18.048-40.311 40.31-40.311zM593.927 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H593.927c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.31-40.31zM730.22 920.502H623.926c-40.925 0-74.22-33.388-74.22-74.425V623.992c0-41.038 33.387-74.424 74.425-74.424h222.085c41.038 0 74.424 33.226 74.424 74.067v114.233c0 10.244-8.304 18.548-18.547 18.548s-18.548-8.304-18.548-18.548V623.635c0-20.388-16.746-36.974-37.33-36.974H624.13c-20.585 0-37.331 16.747-37.331 37.33v222.086c0 20.585 16.654 37.331 37.126 37.331H730.22c10.243 0 18.547 8.304 18.547 18.547 0 10.244-8.304 18.547-18.547 18.547z"}));bc.displayName="CategoryIcon";const yc=()=>u(ye,{name:"print"},()=>u("path",{d:"M819.2 364.8h-44.8V128c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v236.8h-44.8C145.067 364.8 96 413.867 96 473.6v192c0 59.733 49.067 108.8 108.8 108.8h44.8V896c0 17.067 14.933 32 32 32h460.8c17.067 0 32-14.933 32-32V774.4h44.8c59.733 0 108.8-49.067 108.8-108.8v-192c0-59.733-49.067-108.8-108.8-108.8zM313.6 160h396.8v204.8H313.6V160zm396.8 704H313.6V620.8h396.8V864zM864 665.6c0 25.6-19.2 44.8-44.8 44.8h-44.8V588.8c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v121.6h-44.8c-25.6 0-44.8-19.2-44.8-44.8v-192c0-25.6 19.2-44.8 44.8-44.8h614.4c25.6 0 44.8 19.2 44.8 44.8v192z"}));yc.displayName="PrintIcon";const _c=()=>u(ye,{name:"tag"},()=>u("path",{d:"M939.902 458.563L910.17 144.567c-1.507-16.272-14.465-29.13-30.737-30.737L565.438 84.098h-.402c-3.215 0-5.726 1.005-7.634 2.913l-470.39 470.39a10.004 10.004 0 000 14.164l365.423 365.424c1.909 1.908 4.42 2.913 7.132 2.913s5.223-1.005 7.132-2.913l470.39-470.39c2.01-2.11 3.014-5.023 2.813-8.036zm-240.067-72.121c-35.458 0-64.286-28.828-64.286-64.286s28.828-64.285 64.286-64.285 64.286 28.828 64.286 64.285-28.829 64.286-64.286 64.286z"}));_c.displayName="TagIcon";const wc=()=>u(ye,{name:"timer"},()=>u("path",{d:"M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z"}));wc.displayName="TimerIcon";const Ec=()=>u(ye,{name:"word"},()=>[u("path",{d:"M518.217 432.64V73.143A73.143 73.143 0 01603.43 1.097a512 512 0 01419.474 419.474 73.143 73.143 0 01-72.046 85.212H591.36a73.143 73.143 0 01-73.143-73.143z"}),u("path",{d:"M493.714 566.857h340.297a73.143 73.143 0 0173.143 85.577A457.143 457.143 0 11371.566 117.76a73.143 73.143 0 0185.577 73.143v339.383a36.571 36.571 0 0036.571 36.571z"})]);Ec.displayName="WordIcon";const Ft=()=>{const e=me();return x(()=>e.value.metaLocales)};var dv=W({name:"AuthorInfo",inheritAttrs:!1,props:{author:{type:Array,required:!0},pure:Boolean},setup(e){const t=Ft();return()=>e.author.length?u("span",{class:"page-author-info","aria-label":`${t.value.author}${e.pure?"":"🖊"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[u(mc),u("span",e.author.map(n=>n.url?u("a",{class:"page-author-item",href:n.url,target:"_blank",rel:"noopener noreferrer"},n.name):u("span",{class:"page-author-item"},n.name))),u("span",{property:"author",content:e.author.map(n=>n.name).join(", ")})]):null}}),pv=W({name:"CategoryInfo",inheritAttrs:!1,props:{category:{type:Array,required:!0},pure:Boolean},setup(e){const t=Xe(),n=he(),r=Ft(),l=(o,s="")=>{s&&n.value.path!==s&&(o.preventDefault(),t.push(s))};return()=>e.category.length?u("span",{class:"page-category-info","aria-label":`${r.value.category}${e.pure?"":"🌈"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[u(bc),e.category.map(({name:o,path:s})=>u("span",{class:["page-category-item",{[`category${gi(o,9)}`]:!e.pure,clickable:s}],role:s?"navigation":"",onClick:a=>l(a,s)},o)),u("meta",{property:"articleSection",content:e.category.map(({name:o})=>o).join(",")})]):null}}),hv=W({name:"DateInfo",inheritAttrs:!1,props:{date:{type:Object,default:null},localizedDate:{type:String,default:""},pure:Boolean},setup(e){const t=ei(),n=Ft();return()=>e.date?u("span",{class:"page-date-info","aria-label":`${n.value.date}${e.pure?"":"📅"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[u(gc),u("span",u(Fr,()=>e.localizedDate||e.date.toLocaleDateString(t.value))),u("meta",{property:"datePublished",content:e.date.toISOString()||""})]):null}}),vv=W({name:"OriginalInfo",inheritAttrs:!1,props:{isOriginal:Boolean},setup(e){const t=Ft();return()=>e.isOriginal?u("span",{class:"page-original-info"},t.value.origin):null}}),mv=W({name:"ReadingTimeInfo",inheritAttrs:!1,props:{readingTime:{type:Object,default:()=>null},readingTimeLocale:{type:Object,default:()=>null},pure:Boolean},setup(e){const t=Ft(),n=x(()=>{if(!e.readingTime)return null;const{minutes:r}=e.readingTime;return r<1?"PT1M":`PT${Math.round(r)}M`});return()=>{var r,l;return(r=e.readingTimeLocale)!=null&&r.time?u("span",{class:"page-reading-time-info","aria-label":`${t.value.readingTime}${e.pure?"":"⌛"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[u(wc),u("span",(l=e.readingTimeLocale)==null?void 0:l.time),u("meta",{property:"timeRequired",content:n.value})]):null}}}),gv=W({name:"TagInfo",inheritAttrs:!1,props:{tag:{type:Array,default:()=>[]},pure:Boolean},setup(e){const t=Xe(),n=he(),r=Ft(),l=(o,s="")=>{s&&n.value.path!==s&&(o.preventDefault(),t.push(s))};return()=>e.tag.length?u("span",{class:"page-tag-info","aria-label":`${r.value.tag}${e.pure?"":"🏷"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[u(_c),e.tag.map(({name:o,path:s})=>u("span",{class:["page-tag-item",{[`tag${gi(o,9)}`]:!e.pure,clickable:s}],role:s?"navigation":"",onClick:a=>l(a,s)},o)),u("meta",{property:"keywords",content:e.tag.map(({name:o})=>o).join(",")})]):null}}),bv=W({name:"ReadTimeInfo",inheritAttrs:!1,props:{readingTime:{type:Object,default:()=>null},readingTimeLocale:{type:Object,default:()=>null},pure:Boolean},setup(e){const t=Ft();return()=>{var n,r,l;return(n=e.readingTimeLocale)!=null&&n.words?u("span",{class:"page-word-info","aria-label":`${t.value.words}${e.pure?"":"🔠"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[u(Ec),u("span",(r=e.readingTimeLocale)==null?void 0:r.words),u("meta",{property:"wordCount",content:(l=e.readingTime)==null?void 0:l.words})]):null}}}),yv=W({name:"PageInfo",components:{AuthorInfo:dv,CategoryInfo:pv,DateInfo:hv,OriginalInfo:vv,PageViewInfo:()=>null,ReadingTimeInfo:mv,TagInfo:gv,WordInfo:bv},props:{items:{type:[Array,Boolean],default:()=>["Author","Original","Date","PageView","ReadingTime","Category","Tag"]},info:{type:Object,required:!0}},setup(e){const t=jr();return()=>e.items?u("div",{class:"page-info"},e.items.map(n=>u(rt(`${n}Info`),{...e.info,pure:t.value}))):null}}),_v=W({name:"PrintButton",setup(){const e=nr(),t=me();return()=>e.value.print===!1?null:u("button",{type:"button",class:"print-button",title:t.value.metaLocales.print,onClick:()=>{window.print()}},u(yc))}});const wv=({title:e,level:t,slug:n})=>u(lt,{to:`#${n}`,class:["toc-link",`level${t}`]},()=>e),Ml=(e,t)=>{const n=kt();return e.length&&t>0?u("ul",{class:"toc-list"},e.map(r=>{const l=Ml(r.children,t-1);return[u("li",{class:["toc-item",{active:vo(n,`#${r.slug}`)}]},wv(r)),l?u("li",l):null]})):null};var Ev=W({name:"TOC",props:{items:{type:Array,default:()=>[]},headerDepth:{type:Number,default:2}},slots:Object,setup(e,{slots:t}){const n=kt(),r=he(),l=Ft(),o=Ye(),s=X("-1.7rem"),a=c=>{var f;(f=o.value)==null||f.scrollTo({top:c,behavior:"smooth"})},i=()=>{if(o.value){const c=document.querySelector(".toc-item.active");c?s.value=`${c.getBoundingClientRect().top-o.value.getBoundingClientRect().top+o.value.scrollTop}px`:s.value="-1.7rem"}else s.value="-1.7rem"};return _e(()=>{ae(()=>n.hash,c=>{if(o.value){const f=document.querySelector(`#toc a.toc-link[href$="${c}"]`);if(!f)return;const{top:d,height:p}=o.value.getBoundingClientRect(),{top:h,height:b}=f.getBoundingClientRect();hd+p&&a(o.value.scrollTop+h+b-d-p)}}),ae(()=>n.fullPath,()=>i(),{flush:"post",immediate:!0})}),()=>{var c,f;const d=e.items.length?Ml(e.items,e.headerDepth):r.value.headers?Ml(r.value.headers,e.headerDepth):null;return d?u("div",{class:"toc-place-holder"},[u("aside",{id:"toc"},[(c=t.before)==null?void 0:c.call(t),u("div",{class:"toc-header"},[l.value.toc,u(_v)]),u("div",{class:"toc-wrapper",ref:o},[d,u("div",{class:"toc-marker",style:{top:s.value}})]),(f=t.after)==null?void 0:f.call(t)])]):null}}}),Tc=W({name:"SkipLink",props:{content:{type:String,default:"main-content"}},setup(e){const t=he(),n=me(),r=Ye(),l=({target:o})=>{const s=document.querySelector(o.hash);if(s){const a=()=>{s.removeAttribute("tabindex"),s.removeEventListener("blur",a)};s.setAttribute("tabindex","-1"),s.addEventListener("blur",a),s.focus(),window.scrollTo(0,0)}};return _e(()=>{ae(()=>t.value.path,()=>r.value.focus())}),()=>[u("span",{ref:r,tabindex:"-1"}),u("a",{href:`#${e.content}`,class:"vp-skip-link sr-only",onClick:l},n.value.routeLocales.skipToContent)]}});let dl=null,mr=null;const Tv={wait:()=>dl,pending:()=>{dl=new Promise(e=>mr=e)},resolve:()=>{mr==null||mr(),dl=null,mr=null}},Cc=()=>Tv;var Cv=W({name:"FadeSlideY",slots:Object,setup(e,{slots:t}){const{resolve:n,pending:r}=Cc();return()=>u(Dt,{name:"fade-slide-y",mode:"out-in",onBeforeEnter:n,onBeforeLeave:r},()=>{var l;return(l=t.default)==null?void 0:l.call(t)})}});const kv=(e,t)=>{const n=e.replace(t,"/").split("/"),r=[];let l=io(t);return n.forEach((o,s)=>{s!==n.length-1?(l+=`${o}/`,r.push({link:l,name:o||"Home"})):o!==""&&(l+=o,r.push({link:l,name:o}))}),r},kc=(e,{slots:t})=>{var n,r;const{bgImage:l,bgImageDark:o,bgImageStyle:s,color:a,description:i,image:c,imageDark:f,header:d,features:p=[]}=e;return u("div",{class:"vp-feature-wrapper"},[l?u("div",{class:["vp-feature-bg",{light:o}],style:[{"background-image":`url(${l})`},s]}):null,o?u("div",{class:"vp-feature-bg dark",style:[{"background-image":`url(${o})`},s]}):null,u("div",{class:"vp-feature",style:a?{color:a}:{}},[((n=t.image)==null?void 0:n.call(t,e))||[c?u("img",{class:["vp-feature-image",{light:f}],src:De(c),alt:d}):null,f?u("img",{class:"vp-feature-image dark",src:De(f),alt:d}):null],((r=t.info)==null?void 0:r.call(t,e))||[d?u("h2",{class:"vp-feature-header"},d):null,i?u("p",{class:"vp-feature-description",innerHTML:i}):null],p.length?u("div",{class:"vp-features"},p.map(({icon:h,title:b,details:w,link:E})=>{const g=[u("h3",{class:"vp-feature-title"},[u(Be,{icon:h}),u("span",{innerHTML:b})]),u("p",{class:"vp-feature-details",innerHTML:w})];return E?Sr(E)?u("a",{class:"vp-feature-item link",href:E,role:"navigation","aria-label":b,target:"_blank"},g):u(lt,{class:"vp-feature-item link",to:E,role:"navigation","aria-label":b},()=>g):u("div",{class:"vp-feature-item"},g)})):null])])};kc.displayName="FeaturePanel";var Ks=kc,xv=W({name:"HeroInfo",slots:Object,setup(e,{slots:t}){const n=Ae(),r=Hr(),l=x(()=>n.value.heroFullScreen??!1),o=x(()=>{const{heroText:c,tagline:f}=n.value;return{text:c??r.value.title??"Hello",tagline:f??r.value.description??"",isFullScreen:l.value}}),s=x(()=>{const{heroText:c,heroImage:f,heroImageDark:d,heroAlt:p,heroImageStyle:h}=n.value;return{image:f?De(f):null,imageDark:d?De(d):null,heroStyle:h,alt:p||c||"hero image",isFullScreen:l.value}}),a=x(()=>{const{bgImage:c,bgImageDark:f,bgImageStyle:d}=n.value;return{image:Et(c)?De(c):null,imageDark:Et(f)?De(f):null,bgStyle:d,isFullScreen:l.value}}),i=x(()=>n.value.actions??[]);return()=>{var c,f,d;return u("header",{class:["vp-hero-info-wrapper",{fullscreen:l.value}]},[((c=t.heroBg)==null?void 0:c.call(t,a.value))||[a.value.image?u("div",{class:["vp-hero-mask",{light:a.value.imageDark}],style:[{"background-image":`url(${a.value.image})`},a.value.bgStyle]}):null,a.value.imageDark?u("div",{class:"vp-hero-mask dark",style:[{"background-image":`url(${a.value.imageDark})`},a.value.bgStyle]}):null],u("div",{class:"vp-hero-info"},[((f=t.heroImage)==null?void 0:f.call(t,s.value))||u(cn,{appear:!0,type:"group"},()=>[s.value.image?u("img",{key:"light",class:["vp-hero-image",{light:s.value.imageDark}],style:s.value.heroStyle,src:s.value.image,alt:s.value.alt}):null,s.value.imageDark?u("img",{key:"dark",class:"vp-hero-image dark",style:s.value.heroStyle,src:s.value.imageDark,alt:s.value.alt}):null]),((d=t.heroInfo)==null?void 0:d.call(t,o.value))??u("div",{class:"vp-hero-infos"},[o.value.text?u(cn,{appear:!0,delay:.04},()=>u("h1",{id:"main-title"},o.value.text)):null,o.value.tagline?u(cn,{appear:!0,delay:.08},()=>u("p",{class:"vp-description",innerHTML:o.value.tagline})):null,i.value.length?u(cn,{appear:!0,delay:.12},()=>u("p",{class:"vp-actions"},i.value.map(p=>u(He,{class:["vp-action",p.type||"default"],config:p,noExternalLinkIcon:!0})))):null])])])}}});const xc=(e,{slots:t})=>{var n,r,l;const{bgImage:o,bgImageDark:s,bgImageStyle:a,color:i,description:c,image:f,imageDark:d,header:p,highlights:h=[],type:b="un-order"}=e;return u("div",{class:"vp-highlight-wrapper",style:i?{color:i}:{}},[o?u("div",{class:["vp-highlight-bg",{light:s}],style:[{"background-image":`url(${o})`},a]}):null,s?u("div",{class:"vp-highlight-bg dark",style:[{"background-image":`url(${s})`},a]}):null,u("div",{class:"vp-highlight"},[((n=t.image)==null?void 0:n.call(t,e))||[f?u("img",{class:["vp-highlight-image",{light:d}],src:De(f),alt:p}):null,d?u("img",{class:"vp-highlight-image dark",src:De(d),alt:p}):null],((r=t.info)==null?void 0:r.call(t,e))||[u("div",{class:"vp-highlight-info-wrapper"},u("div",{class:"vp-highlight-info"},[p?u("h2",{class:"vp-highlight-header",innerHTML:p}):null,c?u("p",{class:"vp-highlight-description",innerHTML:c}):null,((l=t.highlights)==null?void 0:l.call(t,h))||u(b==="order"?"ol":b==="no-order"?"dl":"ul",{class:"vp-highlights"},h.map(({icon:w,title:E,details:g,link:y})=>{const P=[u(b==="no-order"?"dt":"h3",{class:"vp-highlight-title"},[w?u(Be,{class:"vp-highlight-icon",icon:w}):null,u("span",{innerHTML:E})]),g?u(b==="no-order"?"dd":"p",{class:"vp-highlight-details",innerHTML:g}):null];return u(b==="no-order"?"div":"li",{class:["vp-highlight-item-wrapper",{link:y}]},y?Zp(y)?u("a",{class:"vp-highlight-item link",href:y,role:"navigation","aria-label":E,target:"_blank"},P):u(lt,{class:"vp-highlight-item link",to:y,role:"navigation","aria-label":E},()=>P):u("div",{class:"vp-highlight-item"},P))}))]))]])])};xc.displayName="HighlightPanel";var Sv=xc,Lv=W({name:"HomePage",slots:Object,setup(e,{slots:t}){const n=jr(),r=Ae(),l=x(()=>{const{features:s}=r.value;return Y(s)?s:null}),o=x(()=>{const{highlights:s}=r.value;return Y(s)?s:null});return()=>{var s,a,i,c;return u("main",{id:"main-content",class:["vp-project-home ",{pure:n.value}],"aria-labelledby":r.value.heroText===null?"":"main-title"},[(s=t.top)==null?void 0:s.call(t),u(xv),((a=o.value)==null?void 0:a.map(f=>"features"in f?u(Ks,f):u(Sv,f)))||(l.value?u(cn,{appear:!0,delay:.24},()=>u(Ks,{features:l.value})):null),(i=t.center)==null?void 0:i.call(t),u(cn,{appear:!0,delay:.32},()=>u(vc)),(c=t.bottom)==null?void 0:c.call(t)])}}}),Av=W({name:"BreadCrumb",setup(){const e=Xe(),t=he(),n=Jt(),r=Ae(),l=me(),o=Ye([]),s=x(()=>(r.value.breadcrumb||r.value.breadcrumb!==!1&&l.value.breadcrumb!==!1)&&o.value.length>1),a=x(()=>r.value.breadcrumbIcon||r.value.breadcrumbIcon!==!1&&l.value.breadcrumbIcon!==!1),i=()=>{const c=e.getRoutes(),f=kv(t.value.path,n.value).map(({link:d,name:p})=>{const h=c.find(b=>b.path===d);if(h){const{meta:b,path:w}=Ar(e,h.path);return{title:b[yt.shortTitle]||b[yt.title]||p,icon:b[yt.icon],path:w}}return null}).filter(d=>d!==null);f.length>1&&(o.value=f)};return _e(()=>{i(),ae(()=>t.value.path,i)}),()=>u("nav",{class:["vp-breadcrumb",{disable:!s.value}]},s.value?u("ol",{vocab:"https://schema.org/",typeof:"BreadcrumbList"},o.value.map((c,f)=>u("li",{class:{"is-active":o.value.length-1===f},property:"itemListElement",typeof:"ListItem"},[u(lt,{to:c.path,property:"item",typeof:"WebPage"},()=>[a.value?u(Be,{icon:c.icon}):null,u("span",{property:"name"},c.title||"Unknown")]),u("meta",{property:"position",content:f+1})]))):[])}});const Us=e=>{const t=Xe();return e===!1?!1:fe(e)?pn(t,e,!0):ao(e)?e:null},$l=(e,t,n)=>{const r=e.findIndex(l=>l.link===t);if(r!==-1){const l=e[r+n];return l!=null&&l.link?l:null}for(const l of e)if(l.children){const o=$l(l.children,t,n);if(o)return o}return null};var Pv=W({name:"PageNav",setup(){const e=me(),t=Ae(),n=Co(),r=he(),l=O1(),o=x(()=>{const a=Us(t.value.prev);return a===!1?null:a||(e.value.prevLink===!1?null:$l(n.value,r.value.path,-1))}),s=x(()=>{const a=Us(t.value.next);return a===!1?null:a||(e.value.nextLink===!1?null:$l(n.value,r.value.path,1))});return Le("keydown",a=>{a.altKey&&(a.key==="ArrowRight"?s.value&&(l(s.value.link),a.preventDefault()):a.key==="ArrowLeft"&&o.value&&(l(o.value.link),a.preventDefault()))}),()=>o.value||s.value?u("nav",{class:"vp-page-nav"},[o.value?u(He,{class:"prev",config:o.value},()=>{var a,i;return[u("div",{class:"hint"},[u("span",{class:"arrow start"}),e.value.metaLocales.prev]),u("div",{class:"link"},[u(Be,{icon:(a=o.value)==null?void 0:a.icon}),(i=o.value)==null?void 0:i.text])]}):null,s.value?u(He,{class:"next",config:s.value},()=>{var a,i;return[u("div",{class:"hint"},[e.value.metaLocales.next,u("span",{class:"arrow end"})]),u("div",{class:"link"},[(a=s.value)==null?void 0:a.text,u(Be,{icon:(i=s.value)==null?void 0:i.icon})])]}):null]):null}});const Iv={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},Rv=({docsRepo:e,docsBranch:t,docsDir:n,filePathRelative:r,editLinkPattern:l})=>{if(!r)return null;const o=Ci(e);let s;return l?s=l:o!==null&&(s=Iv[o]),s?s.replace(/:repo/,xn(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,Za(`${io(n)}/${r}`)):null},Ov=()=>{const e=me(),t=he(),n=Ae();return x(()=>{const{repo:r,docsRepo:l=r,docsBranch:o="main",docsDir:s="",editLink:a,editLinkPattern:i=""}=e.value;if(!(n.value.editLink??a??!0)||!l)return null;const c=Rv({docsRepo:l,docsBranch:o,docsDir:s,editLinkPattern:i,filePathRelative:t.value.filePathRelative});return c?{text:e.value.metaLocales.editLink,link:c}:null})},Mv=()=>{const e=Hr(),t=me(),n=he(),r=Ae();return x(()=>{var l,o;return!(r.value.lastUpdated??t.value.lastUpdated??!0)||!((l=n.value.git)!=null&&l.updatedTime)?null:new Date((o=n.value.git)==null?void 0:o.updatedTime).toLocaleString(e.value.lang)})},$v=()=>{const e=me(),t=he(),n=Ae();return x(()=>{var r;return n.value.contributors??e.value.contributors??!0?((r=t.value.git)==null?void 0:r.contributors)??null:null})};var Nv=W({name:"PageTitle",setup(){const e=he(),t=Ae(),n=me(),{info:r,items:l}=D1();return()=>u("div",{class:"vp-page-title"},[u("h1",[n.value.titleIcon===!1?null:u(Be,{icon:t.value.icon}),e.value.title]),u(yv,{info:r.value,...l.value===null?{}:{items:l.value}}),u("hr")])}});const Sc=()=>u(ye,{name:"edit"},()=>[u("path",{d:"M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"}),u("path",{d:"M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"})]);Sc.displayName="EditIcon";var Dv=W({name:"PageMeta",setup(){const e=me(),t=Ov(),n=Mv(),r=$v();return()=>{const{metaLocales:l}=e.value;return u("footer",{class:"page-meta"},[t.value?u("div",{class:"meta-item edit-link"},u(He,{class:"label",config:t.value},{before:()=>u(Sc)})):null,u("div",{class:"meta-item git-info"},[n.value?u("div",{class:"update-time"},[u("span",{class:"label"},`${l.lastUpdated}: `),u(Fr,()=>u("span",{class:"info"},n.value))]):null,r.value&&r.value.length?u("div",{class:"contributors"},[u("span",{class:"label"},`${l.contributors}: `),r.value.map(({email:o,name:s},a)=>[u("span",{class:"contributor",title:`email: ${o}`},s),a!==r.value.length-1?",":""])]):null])])}}}),Hv=W({name:"NormalPage",slots:Object,setup(e,{slots:t}){const n=Ae(),r=he(),{isDarkmode:l}=rr(),o=me(),s=x(()=>n.value.toc||n.value.toc!==!1&&o.value.toc!==!1);return()=>u("main",{id:"main-content",class:"vp-page"},u(_t("LocalEncrypt")?rt("LocalEncrypt"):mi,()=>{var a,i,c,f;return[(a=t.top)==null?void 0:a.call(t),n.value.cover?u("img",{class:"page-cover",src:De(n.value.cover),alt:r.value.title,"no-view":""}):null,u(Av),u(Nv),s.value?u(Ev,{headerDepth:n.value.headerDepth??o.value.headerDepth??2},{before:()=>{var d;return(d=t.tocBefore)==null?void 0:d.call(t)},after:()=>{var d;return(d=t.tocAfter)==null?void 0:d.call(t)}}):null,(i=t.contentBefore)==null?void 0:i.call(t),u(vc),(c=t.contentAfter)==null?void 0:c.call(t),u(Dv),u(Pv),_t("CommentService")?u(rt("CommentService"),{darkmode:l.value}):null,(f=t.bottom)==null?void 0:f.call(t)]}))}}),Fv=W({name:"Layout",setup(){me();const e=he(),t=Ae(),{isMobile:n}=Wr(),r=x(()=>"none");return()=>[u(Tc),u(hc,{},{default:()=>t.value.home?u(Lv):u(Cv,()=>u(Hv,{key:e.value.path})),...r.value!=="none"?{navScreenBottom:()=>u(rt("BloggerInfo"))}:{},...!n.value&&r.value==="always"?{sidebar:()=>u(rt("BloggerInfo"))}:{}})]}}),Bv=W({name:"NotFoundHint",setup(){const e=me(),t=()=>{const n=e.value.routeLocales.notFoundMsg;return n[Math.floor(Math.random()*n.length)]};return()=>u("div",{class:"not-found-hint"},[u("p",{class:"error-code"},"404"),u("h1",{class:"error-title"},e.value.routeLocales.notFoundTitle),u("p",{class:"error-hint"},t())])}}),Vv=W({name:"NotFound",slots:Object,setup(e,{slots:t}){const n=Jt(),r=me(),{navigate:l}=Ll({to:r.value.home??n.value});return()=>[u(Tc),u(hc,{noSidebar:!0},()=>{var o;return u("main",{id:"main-content",class:"vp-page not-found"},((o=t.default)==null?void 0:o.call(t))||[u(Bv),u("div",{class:"actions"},[u("button",{type:"button",class:"action-button",onClick:()=>{window.history.go(-1)}},r.value.routeLocales.back),u("button",{type:"button",class:"action-button",onClick:()=>l()},r.value.routeLocales.home)])])})]}});Wh(Be);const zv=st({enhance:({app:e,router:t})=>{const{scrollBehavior:n}=t.options;t.options.scrollBehavior=async(...r)=>(await Cc().wait(),n(...r)),B1(e),e.component("HopeIcon",Be),e.component("VPLink",lt)},setup:()=>{V1(),K1()},layouts:{Layout:Fv,NotFound:Vv}}),jv=()=>u(ye,{name:"heading"},()=>u("path",{d:"M250.4 704.6H64V595.4h202.4l26.2-166.6H94V319.6h214.4L352 64h127.8l-43.6 255.4h211.2L691 64h126.2l-43.6 255.4H960v109.2H756.2l-24.6 166.6H930v109.2H717L672 960H545.8l43.6-255.4H376.6L333 960H206.8l43.6-255.4zm168.4-276L394 595.4h211.2l24.6-166.6h-211z"}));jv.displayName="HeadingIcon";const Wv=()=>u(ye,{name:"heart"},()=>u("path",{d:"M1024 358.156C1024 195.698 892.3 64 729.844 64c-86.362 0-164.03 37.218-217.844 96.49C458.186 101.218 380.518 64 294.156 64 131.698 64 0 195.698 0 358.156 0 444.518 37.218 522.186 96.49 576H96l320 320c32 32 64 64 96 64s64-32 96-64l320-320h-.49c59.272-53.814 96.49-131.482 96.49-217.844zM841.468 481.232 517.49 805.49a2981.962 2981.962 0 0 1-5.49 5.48c-1.96-1.95-3.814-3.802-5.49-5.48L182.532 481.234C147.366 449.306 128 405.596 128 358.156 128 266.538 202.538 192 294.156 192c47.44 0 91.15 19.366 123.076 54.532L512 350.912l94.768-104.378C638.696 211.366 682.404 192 729.844 192 821.462 192 896 266.538 896 358.156c0 47.44-19.368 91.15-54.532 123.076z"}));Wv.displayName="HeartIcon";const Kv=()=>u(ye,{name:"history"},()=>u("path",{d:"M512 1024a512 512 0 1 1 512-512 512 512 0 0 1-512 512zm0-896a384 384 0 1 0 384 384 384 384 0 0 0-384-384zm192 448H512a64 64 0 0 1-64-64V320a64 64 0 0 1 128 0v128h128a64 64 0 0 1 0 128z"}));Kv.displayName="HistoryIcon";const Uv=()=>u(ye,{name:"title"},()=>u("path",{d:"M512 256c70.656 0 134.656 28.672 180.992 75.008A254.933 254.933 0 0 1 768 512c0 83.968-41.024 157.888-103.488 204.48C688.96 748.736 704 788.48 704 832c0 105.984-86.016 192-192 192-106.048 0-192-86.016-192-192h128a64 64 0 1 0 128 0 64 64 0 0 0-64-64 255.19 255.19 0 0 1-181.056-75.008A255.403 255.403 0 0 1 256 512c0-83.968 41.024-157.824 103.488-204.544C335.04 275.264 320 235.584 320 192A192 192 0 0 1 512 0c105.984 0 192 85.952 192 192H576a64.021 64.021 0 0 0-128 0c0 35.328 28.672 64 64 64zM384 512c0 70.656 57.344 128 128 128s128-57.344 128-128-57.344-128-128-128-128 57.344-128 128z"}));Uv.displayName="TitleIcon";const ko=()=>u(ye,{name:"search"},()=>u("path",{d:"M192 480a256 256 0 1 1 512 0 256 256 0 0 1-512 0m631.776 362.496-143.2-143.168A318.464 318.464 0 0 0 768 480c0-176.736-143.264-320-320-320S128 303.264 128 480s143.264 320 320 320a318.016 318.016 0 0 0 184.16-58.592l146.336 146.368c12.512 12.48 32.768 12.48 45.28 0 12.48-12.512 12.48-32.768 0-45.28"}));ko.displayName="SearchIcon";const Lc=()=>u("svg",{xmlns:"http://www.w3.org/2000/svg",width:"32",height:"32",preserveAspectRatio:"xMidYMid",viewBox:"0 0 100 100"},[u("circle",{cx:"28",cy:"75",r:"11",fill:"currentColor"},u("animate",{attributeName:"fill-opacity",begin:"0s",dur:"1s",keyTimes:"0;0.2;1",repeatCount:"indefinite",values:"0;1;1"})),u("path",{fill:"none",stroke:"#88baf0","stroke-width":"10",d:"M28 47a28 28 0 0 1 28 28"},u("animate",{attributeName:"stroke-opacity",begin:"0.1s",dur:"1s",keyTimes:"0;0.2;1",repeatCount:"indefinite",values:"0;1;1"})),u("path",{fill:"none",stroke:"#88baf0","stroke-width":"10",d:"M28 25a50 50 0 0 1 50 50"},u("animate",{attributeName:"stroke-opacity",begin:"0.2s",dur:"1s",keyTimes:"0;0.2;1",repeatCount:"indefinite",values:"0;1;1"}))]);Lc.displayName="LoadingIcon";const Ac=({hint:e})=>u("div",{class:"search-pro-result-wrapper loading"},[u(Lc),e]);Ac.displayName="SearchLoading";const Gv='',xo={searchDelay:150,suggestDelay:0,queryHistoryCount:5,resultHistoryCount:5,hotKeys:[],worker:"search-pro.worker.js"},x0={},Pc=xo.hotKeys,So={"/":{cancel:"取消",placeholder:"搜索",search:"搜索",searching:"搜索中",defaultTitle:"文档",select:"选择",navigate:"切换",autocomplete:"自动补全",exit:"关闭",history:"搜索历史",emptyHistory:"无搜索历史",emptyResult:"没有找到结果",loading:"正在加载搜索索引..."}};new URL("data:application/javascript;base64,aW1wb3J0e3NlYXJjaCBhcyBDLGdldFN0b3JlZEZpZWxkcyBhcyBSLGF1dG9TdWdnZXN0IGFzIFQsbG9hZEpTT05JbmRleCBhcyB3fWZyb20ic2xpbXNlYXJjaCI7aW1wb3J0ICQgZnJvbSJAdGVtcC9zZWFyY2gtcHJvL2luZGV4IjtpbXBvcnR7ZW50cmllcyBhcyBFfWZyb20idnVlcHJlc3Mtc2hhcmVkL2NsaWVudCI7Y29uc3QgeD0obCxlKT0+e2NvbnN0IG49bC50b0xvd2VyQ2FzZSgpLHM9ZS50b0xvd2VyQ2FzZSgpLG89W107bGV0IHQ9MCxyPTA7Y29uc3QgaT0oYyxnPSExKT0+e2xldCBwPSIiO3I9PT0wP3A9Yy5sZW5ndGg+MjA/YOKApiAke2Muc2xpY2UoLTIwKX1gOmM6Zz9wPWMubGVuZ3RoK3I+MTAwP2Ake2Muc2xpY2UoMCwxMDAtcil94oCmIGA6YzpwPWMubGVuZ3RoPjIwP2Ake2Muc2xpY2UoMCwyMCl9IOKApiAke2Muc2xpY2UoLTIwKX1gOmMscCYmby5wdXNoKHApLHIrPXAubGVuZ3RoLGd8fChvLnB1c2goWyJtYXJrIixlXSkscis9ZS5sZW5ndGgscj49MTAwJiZvLnB1c2goIiDigKYiKSl9O2xldCBoPW4uaW5kZXhPZihzLHQpO2lmKGg9PT0tMSlyZXR1cm4gbnVsbDtmb3IoO2g+PTA7KXtjb25zdCBjPWgrcy5sZW5ndGg7aWYoaShsLnNsaWNlKHQsaCkpLHQ9YyxyPjEwMClicmVhaztoPW4uaW5kZXhPZihzLHQpfXJldHVybiByPDEwMCYmaShsLnNsaWNlKHQpLCEwKSxvfSxTPS9bXHU0ZTAwLVx1OWZhNV0vZyxNPShsPXt9KT0+KHtmdXp6eTouMixwcmVmaXg6ITAscHJvY2Vzc1Rlcm06ZT0+e2NvbnN0IG49ZS5tYXRjaChTKXx8W10scz1lLnJlcGxhY2UoUywiIikudG9Mb3dlckNhc2UoKTtyZXR1cm4gcz9bcywuLi5uXTpbLi4ubl19LC4uLmx9KSxGPShsLGUpPT5lLmNvbnRlbnRzLnJlZHVjZSgobixbLHNdKT0+bitzLDApLWwuY29udGVudHMucmVkdWNlKChuLFssc10pPT5uK3MsMCksXz0obCxlKT0+TWF0aC5tYXgoLi4uZS5jb250ZW50cy5tYXAoKFssbl0pPT5uKSktTWF0aC5tYXgoLi4ubC5jb250ZW50cy5tYXAoKFssbl0pPT5uKSksTz0obCxlLG49e30pPT57Y29uc3Qgcz17fTtyZXR1cm4gQyhlLGwsTSh7Ym9vc3Q6e2g6Mix0OjEsYzo0fSwuLi5ufSkpLmZvckVhY2gobz0+e2NvbnN0e2lkOnQsdGVybXM6cixzY29yZTppfT1vLGg9dC5pbmNsdWRlcygiQCIpLGM9dC5pbmNsdWRlcygiIyIpLFtnLHBdPXQuc3BsaXQoL1sjQF0vKSxtPXIuc29ydCgodSxhKT0+dS5sZW5ndGgtYS5sZW5ndGgpLmZpbHRlcigodSxhKT0+ci5zbGljZShhKzEpLmV2ZXJ5KGY9PiFmLmluY2x1ZGVzKHUpKSkse2NvbnRlbnRzOmR9PXNbZ10/Pz17dGl0bGU6IiIsY29udGVudHM6W119O2lmKGgpZC5wdXNoKFt7dHlwZToiY3VzdG9tRmllbGQiLGtleTpnLGluZGV4OnAsZGlzcGxheTptLm1hcCh1PT5vLmMubWFwKGE9PngoYSx1KSkpLmZsYXQoKS5maWx0ZXIodT0+dSE9PW51bGwpfSxpXSk7ZWxzZXtjb25zdCB1PW0ubWFwKGE9Pngoby5oLGEpKS5maWx0ZXIoYT0+YSE9PW51bGwpO2lmKHUubGVuZ3RoJiZkLnB1c2goW3t0eXBlOmM/ImhlYWRpbmciOiJ0aXRsZSIsa2V5OmcsLi4uYyYme2FuY2hvcjpwfSxkaXNwbGF5OnV9LGldKSwidCJpbiBvKWZvcihjb25zdCBhIG9mIG8udCl7Y29uc3QgZj1tLm1hcCh5PT54KGEseSkpLmZpbHRlcih5PT55IT09bnVsbCk7Zi5sZW5ndGgmJmQucHVzaChbe3R5cGU6InRleHQiLGtleTpnLC4uLmMmJnthbmNob3I6cH0sZGlzcGxheTpmfSxpXSl9fX0pLEUocykuc29ydCgoWyxvXSxbLHRdKT0+U0VBUkNIX1BST19TT1JUX1NUUkFURUdZPT09InRvdGFsIj9GKG8sdCk6XyhvLHQpKS5tYXAoKFtvLHt0aXRsZTp0LGNvbnRlbnRzOnJ9XSk9PntpZighdCl7Y29uc3QgaT1SKGUsbyk7aSYmKHQ9aS5oKX1yZXR1cm57dGl0bGU6dCxjb250ZW50czpyLm1hcCgoW2ldKT0+aSl9fSl9LGs9KGwsZSxuPXt9KT0+VChlLGwsTShuKSkubWFwKCh7c3VnZ2VzdGlvbjpzfSk9PnMpO3NlbGYub25tZXNzYWdlPWFzeW5jKHtkYXRhOnt0eXBlOmw9ImFsbCIscXVlcnk6ZSxsb2NhbGU6bixvcHRpb25zOnN9fSk9Pntjb25zdHtkZWZhdWx0Om99PWF3YWl0ICRbbl0oKSx0PXcobyx7ZmllbGRzOlsiaCIsInQiLCJjIl0sc3RvcmVGaWVsZHM6WyJoIiwidCIsImMiXX0pO2w9PT0ic3VnZ2VzdCI/c2VsZi5wb3N0TWVzc2FnZShrKGUsdCxzKSk6bD09PSJzZWFyY2giP3NlbGYucG9zdE1lc3NhZ2UoTyhlLHQscykpOnNlbGYucG9zdE1lc3NhZ2Uoe3N1Z2dlc3Rpb25zOmsoZSx0LHMpLHJlc3VsdHM6TyhlLHQscyl9KX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcAo=",self.location);let Zv={};const Ic=Symbol(""),qv=()=>be(Ic),Yv=e=>{e.provide(Ic,Zv)},Xv=()=>{const e=new Worker(`/OpenShamrock/${xo.worker}`,{}),t=[];return e.addEventListener("message",({data:n})=>{const{resolve:r}=t.shift();r(n)}),{search:n=>new Promise((r,l)=>{e.postMessage(n),t.push({resolve:r,reject:l})}),terminate:()=>{e.terminate(),t.forEach(({reject:n})=>n(new Error("Worker has been terminated.")))}}};const Qv=(e,t=!1)=>{const n=X(0),r=x(()=>e.value[n.value]),l=()=>{n.value=n.value>0?n.value-1:e.value.length-1},o=()=>{n.value=n.value{t||(n.value=0)}),{index:n,item:r,prev:l,next:o}},Lo=Symbol(""),Jv=()=>{const e=X(!1);Gt(Lo,e)},e0=e=>e instanceof Element?document.activeElement===e&&(["TEXTAREA","SELECT","INPUT"].includes(e.tagName)||e.hasAttribute("contenteditable")):!1,t0=e=>Pc.some(t=>{const{key:n,ctrl:r=!1,shift:l=!1,alt:o=!1,meta:s=!1}=t;return n===e.key&&r===e.ctrlKey&&l===e.shiftKey&&o===e.altKey&&s===e.metaKey}),n0='',r0='',l0='',o0='',s0=e=>{const t=X([]);{const n=qv(),r=Jt();_e(()=>{const l=ph(a=>{a?o({type:"suggest",query:a,locale:r.value,options:n}).then(i=>{t.value=i.length?wn(i[0],a)&&!i[0].slice(a.length).includes(" ")?i:[a,...i]:[]}).catch(i=>{console.error(i)}):t.value=[]},xo.suggestDelay),{search:o,terminate:s}=Xv();ae([e,r],()=>l(e.value),{immediate:!0}),Xt(()=>{s()})})}return{suggestions:t}},pl=Pc[0];var a0=W({name:"SearchBox",setup(){const e=Ht(So),t=be(Lo),n=X(!1),r=x(()=>pl?[(n.value?["⌃","⇧","⌥","⌘"]:["Ctrl","Shift","Alt","Win"]).filter((l,o)=>pl[["ctrl","shift","alt","meta"][o]]),pl.key.toUpperCase()]:null);return Le("keydown",l=>{!t.value&&t0(l)&&!e0(l.target)&&(l.preventDefault(),t.value=!0)}),_e(()=>{const{userAgent:l}=navigator;n.value=zp(l)||Vp(l)||Bp(l)}),()=>[u("button",{type:"button",class:"search-pro-button",role:"search","aria-label":e.value.search,onClick:()=>{t.value=!0}},[u(ko),u("div",{class:"search-pro-placeholder"},e.value.search),r.value?u("div",{class:"search-pro-key-hints"},r.value.map(l=>u("kbd",{class:"search-pro-key"},l))):null])]}});const i0=re({loader:()=>H(()=>import("./SearchResult-67b7b903.js"),[]),loadingComponent:()=>{const e=Ht(So);return u(Ac,{hint:e.value.loading})}});var c0=W({name:"SearchModal",setup(){const e=be(Lo),t=Hr(),n=Pi(),r=Ht(So),l=X(""),{suggestions:o}=s0(l),s=X(!1),{index:a,prev:i,next:c}=Qv(o),f=Ye(),d=Ye(),p=(h=a.value)=>{l.value=o.value[h],s.value=!1};return Le("keydown",h=>{s.value?h.key==="ArrowUp"?i():h.key==="ArrowDown"?c():h.key==="Enter"?p():h.key==="Escape"&&(s.value=!1):h.key==="Escape"&&(e.value=!1)}),_e(()=>{const h=yo(document.body);ae(e,b=>{h.value=b,b&&Yt().then(()=>{var w;(w=f.value)==null||w.focus()})}),_h(d,()=>{s.value=!1}),Xt(()=>{h.value=!1})}),()=>e.value?u("div",{class:"search-pro-modal-wrapper"},[u("div",{class:"search-pro-mask",onClick:()=>{e.value=!1,l.value=""}}),u("div",{class:"search-pro-modal"},[u("div",{class:"search-pro-box"},[u("form",[u("label",{for:"search-pro","aria-label":r.value.search},u(ko)),u("input",{ref:f,type:"search",class:"search-pro-input",id:"search-pro",placeholder:r.value.placeholder,spellcheck:"false",autocapitalize:"off",autocomplete:"off",autocorrect:"off",name:`${t.value.title}-search`,value:l.value,"aria-controls":"search-pro-results",onKeydown:h=>{const{key:b}=h;o.value.length&&(b==="Tab"?(p(),h.preventDefault()):(b==="ArrowDown"||b==="ArrowUp"||b==="Escape")&&h.preventDefault())},onInput:({target:h})=>{l.value=h.value,s.value=!0,a.value=0}}),l.value?u("button",{type:"reset",class:"search-pro-clear-button",innerHTML:Gv,onClick:()=>{l.value=""}}):null,s.value&&o.value.length?u("ul",{class:"search-pro-suggestions",ref:d},o.value.map((h,b)=>u("li",{class:["search-pro-suggestion",{active:b===a.value}],onClick:()=>{p(b)}},[u("kbd",{class:"search-pro-auto-complete",title:`Tab ${r.value.autocomplete}`},"Tab"),h]))):null]),u("button",{type:"button",class:"search-pro-close-button",onClick:()=>{e.value=!1,l.value=""}},r.value.cancel)]),u(i0,{query:l.value,isFocusing:!s.value,onClose:()=>{e.value=!1},onUpdateQuery:h=>{l.value=h}}),n.value?null:u("div",{class:"search-pro-hints"},[u("span",{class:"search-pro-hint"},[u("kbd",{innerHTML:n0}),r.value.select]),u("span",{class:"search-pro-hint"},[u("kbd",{innerHTML:l0}),u("kbd",{innerHTML:r0}),r.value.navigate]),u("span",{class:"search-pro-hint"},[u("kbd",{innerHTML:o0}),r.value.exit])])])]):null}}),u0=st({enhance({app:e}){Yv(e),e.component("SearchBox",a0)},setup(){Jv()},rootComponents:[c0]});const gr=[Dd,Nh,jh,Zh,Xh,t1,s1,p1,v1,k1,zv,u0],f0=[["v-8daa1a0e","/",{y:"h",t:"首页",i:"home"},["/README.md"]],["v-638c1d18","/advanced/",{y:"a",t:"进阶",i:"gem"},["/advanced/README.md"]],["v-fc42014a","/advanced/voice.html",{y:"a",t:"语音支持",i:"microphone"},[":md"]],["v-744497ce","/api/",{y:"a",t:"接口",i:"laptop-code"},["/api/README.md"]],["v-ba4144cc","/api/account.html",{y:"a",t:"账号相关",i:"user"},[":md"]],["v-a405f8f2","/api/contact.html",{y:"a",t:"联系人相关",i:"address-book"},[":md"]],["v-e0692e30","/api/dispose.html",{y:"a",t:"处理相关",i:"bowling-ball"},[":md"]],["v-504f4f28","/api/fav.html",{y:"a",t:"QQ收藏 接口",i:"feather-alt"},[":md"]],["v-a83cae62","/api/file.html",{y:"a",t:"文件相关",i:"file"},[":md"]],["v-23159ff0","/api/group.html",{y:"a",t:"群聊相关",i:"user-group"},[":md"]],["v-4b693314","/api/guild.html",{y:"a",t:"频道相关",i:"user-group"},[":md"]],["v-15298000","/api/message.html",{y:"a",t:"消息相关",i:"comment"},[":md"]],["v-d1b14bd2","/api/other.html",{y:"a",t:"其他接口",i:"feather-alt"},[":md"]],["v-50f1df6c","/api/request-response.html",{y:"a",t:"请求与响应",i:"server"},[":md"]],["v-d0532dbc","/api/resources.html",{y:"a",t:"资源相关",i:"video-camera"},[":md"]],["v-1f099f65","/api/shamrock.html",{y:"a",t:"Shamrock 接口",i:"feather-alt"},[":md"]],["v-0e934be0","/api/user.html",{y:"a",t:"用户相关",i:"users"},[":md"]],["v-7ca4f50e","/event/",{y:"a",t:"事件",i:"bell"},["/event/README.md"]],["v-32977d7c","/event/general-data.html",{y:"a",t:"通用数据",i:"database"},[":md"]],["v-70b00580","/event/message.html",{y:"a",t:"消息事件",i:"comment"},[":md"]],["v-386d2733","/event/notice.html",{y:"a",t:"通知事件",i:"bell"},[":md"]],["v-61fe5fb8","/event/request.html",{y:"a",t:"请求事件",i:"bullhorn"},[":md"]],["v-fffb8e28","/guide/",{y:"a",t:"指南",i:"lightbulb"},["/guide/README.md"]],["v-4f4ccb8f","/guide/configuration.html",{y:"a",t:"应用配置",i:"cog"},[":md"]],["v-37e1c06f","/guide/faq.html",{y:"a",t:"常见问题",i:"question-circle"},[":md"]],["v-fb0f0066","/guide/getting-started.html",{y:"a",t:"快速开始",i:"rocket"},[":md"]],["v-89c429fe","/message/",{y:"a",t:"消息",i:"comment"},["/message/README.md"]],["v-75ed5c96","/message/advanced.html",{y:"a",t:"高级消息",i:"layer-group"},[":md"]],["v-e108f4be","/message/format.html",{y:"a",t:"消息格式",i:"message"},[":md"]],["v-30c0fd36","/message/media.html",{y:"a",t:"媒体消息",i:"compact-disc"},[":md"]],["v-28fa56b1","/message/normal.html",{y:"a",t:"常规消息",i:"comment-dots"},[":md"]],["v-41fe057e","/message/special.html",{y:"a",t:"特殊消息",i:"paper-plane"},[":md"]],["v-3706649a","/404.html",{y:"p",t:""},[]]];var Gs=W({name:"Vuepress",setup(){const e=Rd();return()=>u(e.value)}}),d0=()=>f0.reduce((e,[t,n,r,l])=>(e.push({name:t,path:n,component:Gs,meta:r},{path:n.endsWith("/")?n+"index.html":n.substring(0,n.length-5),redirect:n},...l.map(o=>({path:o===":md"?n.substring(0,n.length-5)+".md":o,redirect:n}))),e),[{name:"404",path:"/:catchAll(.*)",component:Gs}]),p0=tp,h0=()=>{const e=Hp({history:p0(io("/OpenShamrock/")),routes:d0(),scrollBehavior:(t,n,r)=>r||(t.hash?{el:t.hash}:{top:0})});return e.beforeResolve(async(t,n)=>{var r;(t.path!==n.path||n===gt)&&([t.meta._data]=await Promise.all([mt.resolvePageData(t.name),(r=qa[t.name])==null?void 0:r.__asyncLoader()]))}),e},v0=e=>{e.component("ClientOnly",Fr),e.component("Content",li)},m0=(e,t,n)=>{const r=Os(()=>t.currentRoute.value.path),l=Os(()=>mt.resolveRouteLocale(an.value.locales,r.value)),o=oh(r,()=>t.currentRoute.value.meta._data),s=x(()=>mt.resolveLayouts(n)),a=x(()=>mt.resolveSiteLocaleData(an.value,l.value)),i=x(()=>mt.resolvePageFrontmatter(o.value)),c=x(()=>mt.resolvePageHeadTitle(o.value,a.value)),f=x(()=>mt.resolvePageHead(c.value,i.value,a.value)),d=x(()=>mt.resolvePageLang(o.value,a.value)),p=x(()=>mt.resolvePageLayout(o.value,s.value));return e.provide(Ld,s),e.provide(Ya,o),e.provide(Xa,i),e.provide(Id,c),e.provide(Qa,f),e.provide(Ja,d),e.provide(ti,p),e.provide(co,l),e.provide(ri,a),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>i.value},$head:{get:()=>f.value},$headTitle:{get:()=>c.value},$lang:{get:()=>d.value},$page:{get:()=>o.value},$routeLocale:{get:()=>l.value},$site:{get:()=>an.value},$siteLocale:{get:()=>a.value},$withBase:{get:()=>De}}),{layouts:s,pageData:o,pageFrontmatter:i,pageHead:f,pageHeadTitle:c,pageLang:d,pageLayout:p,routeLocale:l,siteData:an,siteLocaleData:a}},g0=()=>{const e=Pd(),t=ei(),n=X([]),r=()=>{e.value.forEach(o=>{const s=b0(o);s&&n.value.push(s)})},l=()=>{document.documentElement.lang=t.value,n.value.forEach(o=>{o.parentNode===document.head&&document.head.removeChild(o)}),n.value.splice(0,n.value.length),e.value.forEach(o=>{const s=y0(o);s!==null&&(document.head.appendChild(s),n.value.push(s))})};Gt(Md,l),_e(()=>{r(),l(),ae(()=>e.value,l)})},b0=([e,t,n=""])=>{const r=Object.entries(t).map(([a,i])=>fe(i)?`[${a}=${JSON.stringify(i)}]`:i===!0?`[${a}]`:"").join(""),l=`head > ${e}${r}`;return Array.from(document.querySelectorAll(l)).find(a=>a.innerText===n)||null},y0=([e,t,n])=>{if(!fe(e))return null;const r=document.createElement(e);return ao(t)&&Object.entries(t).forEach(([l,o])=>{fe(o)?r.setAttribute(l,o):o===!0&&r.setAttribute(l,"")}),fe(n)&&r.appendChild(document.createTextNode(n)),r},_0=gd,w0=async()=>{var n;const e=_0({name:"VuepressApp",setup(){var r;g0();for(const l of gr)(r=l.setup)==null||r.call(l);return()=>[u(vi),...gr.flatMap(({rootComponents:l=[]})=>l.map(o=>u(o)))]}}),t=h0();v0(e),m0(e,t,gr);for(const r of gr)await((n=r.enhance)==null?void 0:n.call(r,{app:e,router:t,siteData:an}));return e.use(t),{app:e,router:t}};w0().then(({app:e,router:t})=>{t.isReady().then(()=>{e.mount("#app")})});export{Ye as A,_e as B,Xt as C,fe as D,x0 as E,ao as F,xo as G,ph as H,Xv as O,qv as R,Ht as Z,Na as a,Se as b,T0 as c,w0 as createVueApp,Da as d,C0 as e,W as f,Xe as g,Jt as h,So as i,X as j,x as k,Le as l,ae as m,u as n,E0 as o,Kv as p,Gv as q,rt as r,lt as s,Or as t,k0 as u,Ac as v,Vu as w,Uv as x,jv as y,Wv as z}; diff --git a/assets/configuration.html-a2ca3d1d.js b/assets/configuration.html-a2ca3d1d.js new file mode 100644 index 00000000..38a2ede0 --- /dev/null +++ b/assets/configuration.html-a2ca3d1d.js @@ -0,0 +1,43 @@ +import{_ as n}from"./plugin-vue_export-helper-c27b6911.js";import{o as s,c as a,e}from"./app-edf8b1e7.js";const t={},o=e(`

提示

Shamrock 提供了一个图形化的配置界面,可进行简单的配置操作。
大部分配置简单易于理解,我们仅仅介绍部分难于理解的配置选项。

配置选项

强制平板模式

QQ 客户端 识别设备为平板,使其账号可在安卓和平板同时在线。

提示

除了 WebSocket 相关功能,其他功能的配置进行修改立即生效,无需重新启动 QQ 。 不建议使用 CQ 码,因为在新一代机器人设计理念中,该操作过于落后,可能会出现许多问题。

注意

被动 WebSocket 在断线之后,每隔 5 秒尝试重新连接。

目录定义

  • 内部存储目录: /storage/emulated/0/sdcard
  • QQ 主目录: 内部存储目录 + /Android/data/com.tencent.mobileqq
  • Shamrock 主目录: QQ主目录 + /Tencent/Shamrock

配置文件

将下方 JSON 文件创建在 Shamrock 主目录 + /config.json
请确保 JSON 格式正确。

{
+  rules: {
+    group_rule: {
+      black_list: [12345678], // 如果群号是\`12345678\`就跳过了哦!
+      white_list: []
+    },
+    private_rule: {
+      black_list: [12345678],
+      white_list: []
+    }
+  },
+  default_token: null,
+  active_websocket: {
+    port: 5800, // 主动WS监听的端口
+    token: 'aaaa1111,bbbb1111', // 同时允许两个token可使用|或,作为分割
+    tokens: ['aaaa1111', 'aaaa2222'], // 使用tokens实现多token,优先级比上面那个高
+    heartbeat_interval: 15000 // 设置为null则默认15000毫秒作为心跳间隔,0则为无心跳
+  },
+  passive_websocket: [
+    {
+      address: 'ws://xxxxxxxxx' // 这里是个例子,如果默认tk存在则使用默认token鉴权
+    },
+    {
+      address: 'ws://aaaaaaaaa',
+      token: 'aaa666', // 提供了特例化token,将不使用默认token
+      heartbeat_interval: 15000 // 设置为null则默认15000毫秒作为心跳间隔,0则为无心跳
+    }
+  ],
+  'allow-temp-session': false // 是否允许临时消息
+}
+
参数名称类型作用例子
default_tokenstring默认 tokenHTTP接口/主被动WS 如果未单独定义 token ,则使用默认 tokenaaa123456

记得把注释删掉哦?JSON5貌似也没有完全支持呢?该配置文件采用Json5标准!

WebSocket认证方法

HTTP Upgrade 请求头中添加 access_tokenticketAuthorization

例:

GET / HTTP/1.1
+Host: 192.168.3.4
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: wwwwwwwwwwwwwwwwwwwwww==
+Sec-WebSocket-Version: 13
+Authorization: aaaa1111
+

数据目录

大部分 Shamrock 的数据/缓存保存在 Shamrock 主目录
其中的日志可作为 Issue 内容,截取部分提交。

.
+├── tmpfiles # 临时文件目录
+│   ├── logs # 日志目录
+│   │   └── xxx.log # 日志文件
+├── config.json # 配置文件
+
`,20),p=[o];function c(l,i){return s(),a("div",null,p)}const u=n(t,[["render",c],["__file","configuration.html.vue"]]);export{u as default}; diff --git a/assets/configuration.html-c1e61f48.js b/assets/configuration.html-c1e61f48.js new file mode 100644 index 00000000..66cec590 --- /dev/null +++ b/assets/configuration.html-c1e61f48.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-4f4ccb8f","path":"/guide/configuration.html","title":"应用配置","lang":"zh-CN","frontmatter":{"title":"应用配置","icon":"cog"},"headers":[{"level":2,"title":"配置选项","slug":"配置选项","link":"#配置选项","children":[{"level":3,"title":"强制平板模式","slug":"强制平板模式","link":"#强制平板模式","children":[]}]},{"level":2,"title":"目录定义","slug":"目录定义","link":"#目录定义","children":[]},{"level":2,"title":"配置文件","slug":"配置文件","link":"#配置文件","children":[]},{"level":2,"title":"WebSocket认证方法","slug":"websocket认证方法","link":"#websocket认证方法","children":[]},{"level":2,"title":"数据目录","slug":"数据目录","link":"#数据目录","children":[]}],"git":{"createdTime":1698464511000,"updatedTime":1708324623000,"contributors":[{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":5},{"name":"aleck099","email":"aleck099@outlook.com","commits":1},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"owo233","email":"callng@qq.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":2.01,"words":602},"filePathRelative":"guide/configuration.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/contact.html-086627fd.js b/assets/contact.html-086627fd.js new file mode 100644 index 00000000..215e7819 --- /dev/null +++ b/assets/contact.html-086627fd.js @@ -0,0 +1,223 @@ +import{_ as i}from"./plugin-vue_export-helper-c27b6911.js";import{r as c,o as d,c as u,a as n,d as t,b as l,w as s,e as o}from"./app-edf8b1e7.js";const k={},h={class:"hint-container warning"},b=n("p",{class:"hint-container-title"},"注意",-1),m=o('

获取陌生人信息

该接口用于获取陌生人的信息。

API 端点

/get_stranger_info

参数

字段类型必须说明
user_idint64QQ 号

响应

注意

该 API 可能会返回不存在于以下表格中的字段,请不要作为参考使用。

',8),_=n("table",null,[n("thead",null,[n("tr",null,[n("th",null,"字段"),n("th",null,"类型"),n("th",null,"说明")])]),n("tbody",null,[n("tr",null,[n("td",null,"user_id"),n("td",null,"int64"),n("td",null,"QQ 号")]),n("tr",null,[n("td",null,"nickname"),n("td",null,"string"),n("td",null,"昵称")]),n("tr",null,[n("td",null,"age"),n("td",null,"int32"),n("td",null,"年龄")]),n("tr",null,[n("td",null,"sex"),n("td",null,"string"),n("td",null,"性别")]),n("tr",null,[n("td",null,"ext"),n("td",null,"object"),n("td",null,"扩展字段(一堆垃圾)")])])],-1),v=n("div",{class:"language-json line-numbers-mode","data-ext":"json"},[n("pre",{class:"language-json"},[n("code",null,[n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"status"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"ok"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"retcode"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"data"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"user_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"534103824"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"nickname"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"优"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"age"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"5"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"sex"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"female"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"level"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"10"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"login_days"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"qid"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"vote"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"90"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"wzry_honor"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token null keyword"},"null"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"ext"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"add_src_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"add_src_name"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"add_sub_src_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"allow_cal_interactive"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token boolean"},"false"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"allow_click"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token boolean"},"false"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"allow_people_see"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token boolean"},"false"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"auth_state"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"-1"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"big_club_vip_open"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"hollywood_vip_open"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"qq_vip_open"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"super_qq_open"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"super_vip_open"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"voted"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"baby_q_switch"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token boolean"},"false"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"bind_phone_info"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"card_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"card_type"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"category"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"-1"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"clothes_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"cover_url"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"declaration"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token null keyword"},"null"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"default_card_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"diy_complicated_info"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token null keyword"},"null"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"diy_default_text"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token null keyword"},"null"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"diy_text"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token null keyword"},"null"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"diy_text_degree"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0.0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"diy_text_font_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"diy_text_height"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0.0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"diy_text_width"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0.0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"diy_text_loc_x"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0.0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"diy_text_loc_y"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0.0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"dress_up_is_on"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token boolean"},"false"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"enc_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token null keyword"},"null"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"enlarge_qzone_pic"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"extend_friend_entry_add_friend"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"extend_friend_entry_contact"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"extend_friend_flag"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"extend_friend_question"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"extend_friend_voice_duration"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"favorite_source"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"12"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"feed_preview_time"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"font_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"font_type"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"qid_bg_url"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"qid_color"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"qid_logo_url"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"https://sola.gtimg.cn/aoi/sola/20200925143823_CqAm9t45Us.png"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"qq_card_is_on"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token boolean"},"false"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"school_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token null keyword"},"null"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"school_name"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token null keyword"},"null"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"school_verified_flag"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token boolean"},"false"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"show_publish_button"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token boolean"},"false"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"singer"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"song_dura"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"song_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"song_name"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),t(` + `),n("span",{class:"token punctuation"},"}"),t(` + `),n("span",{class:"token punctuation"},"}"),t(` +`),n("span",{class:"token punctuation"},"}"),t(` +`)])]),n("div",{class:"line-numbers","aria-hidden":"true"},[n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"})])],-1),g=o('

获取好友列表

该接口用于获取好友列表。

API 端点

/get_friend_list

参数

提示

该接口无输入参数,除 refresh 参数决定是否刷新数据。可能不是立即生效。

响应

该接口返回的 data 数据为数组,每个元素为一个好友的信息,具体如下。

',8),y=n("table",null,[n("thead",null,[n("tr",null,[n("th",null,"字段"),n("th",null,"类型"),n("th",null,"说明")])]),n("tbody",null,[n("tr",null,[n("td",null,"user_id"),n("td",null,"int64"),n("td",null,"QQ 号")]),n("tr",null,[n("td",null,"user_name"),n("td",null,"string"),n("td",null,"昵称")]),n("tr",null,[n("td",null,"user_displayname"),n("td",null,"string"),n("td",null,"显示名")]),n("tr",null,[n("td",null,"user_remark"),n("td",null,"string"),n("td",null,"备注")]),n("tr",null,[n("td",null,"age"),n("td",null,"int32"),n("td",null,"年龄")]),n("tr",null,[n("td",null,"gender"),n("td",null,"int32"),n("td",null,"性别")]),n("tr",null,[n("td",null,"group_id"),n("td",null,"int64"),n("td",null,"分组 ID")]),n("tr",null,[n("td",null,"platform"),n("td",null,"string"),n("td",null,"平台")]),n("tr",null,[n("td",null,"term_type"),n("td",null,"string"),n("td",null,"终端类型")])])],-1),f=n("div",{class:"language-json line-numbers-mode","data-ext":"json"},[n("pre",{class:"language-json"},[n("code",null,[n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"status"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"ok"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"retcode"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"data"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token punctuation"},"["),t(` + `),n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"user_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"2854200454"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"user_name"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"Shamrock"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"user_displayname"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"QQ机器人"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"user_remark"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"QQ机器人"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"age"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"gender"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"group_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"platform"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"MOBILE_ANDROID"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"term_type"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"65799"),t(` + `),n("span",{class:"token punctuation"},"}"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"user_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"1372362033"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"user_name"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"伏秋洛~"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"user_displayname"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"伏秋洛~"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"user_remark"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"伏秋洛~"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"age"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"gender"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"group_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"platform"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"MOBILE_PC"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"term_type"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"65793"),t(` + `),n("span",{class:"token punctuation"},"}"),t(` + `),n("span",{class:"token punctuation"},"]"),t(` +`),n("span",{class:"token punctuation"},"}"),t(` +`)])]),n("div",{class:"line-numbers","aria-hidden":"true"},[n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"})])],-1),x={id:"获取单向好友列表",tabindex:"-1"},q=n("a",{class:"header-anchor",href:"#获取单向好友列表","aria-hidden":"true"},"#",-1),A=o('

该接口用于获取单向好友列表。

API 端点

/get_unidirectional_friend_list

参数

提示

该 API 无需参数

响应

响应内容为 json 数组, 每个元素如下:

字段名数据类型说明
user_idint64QQ 号
nicknamestring昵称
sourcestring来源

获取群信息

该接口用于获取群信息。

API 端点

/get_group_info

参数

字段类型必须说明
group_idint64群号

响应

注意

该 API 可能会返回不存在于以下表格中的字段,请不要作为参考使用。

',16),I=n("table",null,[n("thead",null,[n("tr",null,[n("th",null,"字段"),n("th",null,"类型"),n("th",null,"说明")])]),n("tbody",null,[n("tr",null,[n("td",null,"group_id"),n("td",null,"int64"),n("td",null,"群号")]),n("tr",null,[n("td",null,"group_name"),n("td",null,"string"),n("td",null,"群名称")]),n("tr",null,[n("td",null,"group_remark"),n("td",null,"string"),n("td",null,"群备注")]),n("tr",null,[n("td",null,"group_uin"),n("td",null,"int64"),n("td",null,"群 Uin")]),n("tr",null,[n("td",null,"admins"),n("td",null,"List"),n("td",null,"管理员列表")]),n("tr",null,[n("td",null,"class_text"),n("td",null,"string"),n("td",null,"群分类")]),n("tr",null,[n("td",null,"is_frozen"),n("td",null,"bool"),n("td",null,"是否冻结")]),n("tr",null,[n("td",null,"max_member"),n("td",null,"int32"),n("td",null,"最大成员数")]),n("tr",null,[n("td",null,"max_member_count"),n("td",null,"int32"),n("td",null,"最大成员数")]),n("tr",null,[n("td",null,"member_num"),n("td",null,"int32"),n("td",null,"成员数量")]),n("tr",null,[n("td",null,"member_count"),n("td",null,"int32"),n("td",null,"成员数量")])])],-1),Q=n("div",{class:"language-json line-numbers-mode","data-ext":"json"},[n("pre",{class:"language-json"},[n("code",null,[n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"status"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"ok"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"retcode"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"data"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"group_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"758533243"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"group_name"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"Shamrock"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"group_remark"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"group_uin"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"758533243"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"admins"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token punctuation"},"["),n("span",{class:"token number"},"1372362033"),n("span",{class:"token punctuation"},","),t(),n("span",{class:"token number"},"1307993674"),n("span",{class:"token punctuation"},"]"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"class_text"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"is_frozen"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token boolean"},"false"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"max_member"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"500"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"member_num"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"165"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"member_count"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"165"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"max_member_count"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"500"),t(` + `),n("span",{class:"token punctuation"},"}"),t(` +`),n("span",{class:"token punctuation"},"}"),t(` +`)])]),n("div",{class:"line-numbers","aria-hidden":"true"},[n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"})])],-1),j=o('

获取群列表

该接口用于获取群列表。

API 端点

/get_group_list

参数

提示

该 API 无需参数

响应

该接口返回的 data 数据为数组,每个元素为一个群的信息,具体如下。

',8),w=n("table",null,[n("thead",null,[n("tr",null,[n("th",null,"字段"),n("th",null,"类型"),n("th",null,"说明")])]),n("tbody",null,[n("tr",null,[n("td",null,"group_id"),n("td",null,"int64"),n("td",null,"群号")]),n("tr",null,[n("td",null,"group_name"),n("td",null,"string"),n("td",null,"群名称")]),n("tr",null,[n("td",null,"group_remark"),n("td",null,"string"),n("td",null,"群备注")]),n("tr",null,[n("td",null,"group_uin"),n("td",null,"int64"),n("td",null,"群 Uin")]),n("tr",null,[n("td",null,"admins"),n("td",null,"List"),n("td",null,"管理员列表")]),n("tr",null,[n("td",null,"class_text"),n("td",null,"string"),n("td",null,"群分类")]),n("tr",null,[n("td",null,"is_frozen"),n("td",null,"bool"),n("td",null,"是否冻结")]),n("tr",null,[n("td",null,"max_member"),n("td",null,"int32"),n("td",null,"最大成员数")]),n("tr",null,[n("td",null,"max_member_count"),n("td",null,"int32"),n("td",null,"最大成员数")]),n("tr",null,[n("td",null,"member_num"),n("td",null,"int32"),n("td",null,"成员数量")]),n("tr",null,[n("td",null,"member_count"),n("td",null,"int32"),n("td",null,"成员数量")])])],-1),P=n("div",{class:"language-json line-numbers-mode","data-ext":"json"},[n("pre",{class:"language-json"},[n("code",null,[n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"status"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"ok"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"retcode"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"data"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token punctuation"},"["),t(` + `),n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"group_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"758533243"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"group_name"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"Shamrock"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"group_remark"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"group_uin"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"758533243"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"admins"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token punctuation"},"["),n("span",{class:"token number"},"1372362033"),n("span",{class:"token punctuation"},","),t(),n("span",{class:"token number"},"1307993674"),n("span",{class:"token punctuation"},"]"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"class_text"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"is_frozen"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token boolean"},"false"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"max_member"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"500"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"member_num"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"165"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"member_count"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"165"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"max_member_count"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"500"),t(` + `),n("span",{class:"token punctuation"},"}"),t(` + `),n("span",{class:"token punctuation"},"]"),t(` +`),n("span",{class:"token punctuation"},"}"),t(` +`)])]),n("div",{class:"line-numbers","aria-hidden":"true"},[n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"})])],-1),L=o('

获取群成员信息

该接口用于获取群成员信息。

API 端点

/get_group_member_info

参数

字段类型必须说明
group_idint64群号
user_idint64QQ 号

响应

',7),D=n("table",null,[n("thead",null,[n("tr",null,[n("th",null,"字段"),n("th",null,"类型"),n("th",null,"说明")])]),n("tbody",null,[n("tr",null,[n("td",null,"user_id"),n("td",null,"int64"),n("td",null,"QQ 号")]),n("tr",null,[n("td",null,"group_id"),n("td",null,"int64"),n("td",null,"群号")]),n("tr",null,[n("td",null,"user_name"),n("td",null,"string"),n("td",null,"昵称")]),n("tr",null,[n("td",null,"sex"),n("td",null,"string"),n("td",null,"性别")]),n("tr",null,[n("td",null,"title"),n("td",null,"string"),n("td",null,"专属头衔")]),n("tr",null,[n("td",null,"title_expire_time"),n("td",null,"int64"),n("td",null,"专属头衔过期时间戳")]),n("tr",null,[n("td",null,"nickname"),n("td",null,"string"),n("td",null,"群昵称")]),n("tr",null,[n("td",null,"user_displayname"),n("td",null,"string"),n("td",null,"显示名")]),n("tr",null,[n("td",null,"distance"),n("td",null,"int32"),n("td",null,"距离")]),n("tr",null,[n("td",null,"honor"),n("td",null,"List"),n("td",null,"群荣誉")]),n("tr",null,[n("td",null,"join_time"),n("td",null,"int64"),n("td",null,"入群时间")]),n("tr",null,[n("td",null,"last_active_time"),n("td",null,"int64"),n("td",null,"最后发言时间")]),n("tr",null,[n("td",null,"last_sent_time"),n("td",null,"int64"),n("td",null,"最后发言时间")]),n("tr",null,[n("td",null,"unique_name"),n("td",null,"string"),n("td",null,"群头衔")]),n("tr",null,[n("td",null,"area"),n("td",null,"string"),n("td",null,"地区")]),n("tr",null,[n("td",null,"level"),n("td",null,"string"),n("td",null,"成员等级")]),n("tr",null,[n("td",null,"role"),n("td",null,"string"),n("td",null,"角色")]),n("tr",null,[n("td",null,"unfriendly"),n("td",null,"bool"),n("td",null,"是否不良记录成员")]),n("tr",null,[n("td",null,"card_changeable"),n("td",null,"bool"),n("td",null,"是否允许修改群名片")])])],-1),H=n("div",{class:"language-json line-numbers-mode","data-ext":"json"},[n("pre",{class:"language-json"},[n("code",null,[n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"status"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"ok"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"retcode"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"data"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"user_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"1372362033"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"group_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"758533243"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"user_name"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"伏秋洛~"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"sex"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"female"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"title"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"title_expire_time"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"nickname"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"伏秋洛~"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"user_displayname"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"distance"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"100"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"honor"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token punctuation"},"["),n("span",{class:"token number"},"3"),n("span",{class:"token punctuation"},"]"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"join_time"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"1687759547"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"last_active_time"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"1697105041"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"last_sent_time"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"1697105041"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"unique_name"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"area"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"level"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"10315"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"role"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"owner"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"unfriendly"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token boolean"},"false"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"card_changeable"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token boolean"},"false"),t(` + `),n("span",{class:"token punctuation"},"}"),t(` +`),n("span",{class:"token punctuation"},"}"),t(` +`)])]),n("div",{class:"line-numbers","aria-hidden":"true"},[n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"})])],-1),B=o('

获取群成员列表

该接口用于获取群成员列表。

API 端点

/get_group_member_list

参数

字段类型必须说明
group_idint64群号

响应

该接口返回的 data 数据为数组,每个元素为一个群成员的信息,具体如下。

',8),z=n("table",null,[n("thead",null,[n("tr",null,[n("th",null,"字段"),n("th",null,"类型"),n("th",null,"说明")])]),n("tbody",null,[n("tr",null,[n("td",null,"user_id"),n("td",null,"int64"),n("td",null,"QQ 号")]),n("tr",null,[n("td",null,"group_id"),n("td",null,"int64"),n("td",null,"群号")]),n("tr",null,[n("td",null,"user_name"),n("td",null,"string"),n("td",null,"昵称")]),n("tr",null,[n("td",null,"sex"),n("td",null,"string"),n("td",null,"性别")]),n("tr",null,[n("td",null,"title"),n("td",null,"string"),n("td",null,"专属头衔")]),n("tr",null,[n("td",null,"title_expire_time"),n("td",null,"int64"),n("td",null,"专属头衔过期时间戳")]),n("tr",null,[n("td",null,"nickname"),n("td",null,"string"),n("td",null,"群昵称")]),n("tr",null,[n("td",null,"user_displayname"),n("td",null,"string"),n("td",null,"显示名")]),n("tr",null,[n("td",null,"distance"),n("td",null,"int32"),n("td",null,"距离")]),n("tr",null,[n("td",null,"honor"),n("td",null,"List"),n("td",null,"群荣誉")]),n("tr",null,[n("td",null,"join_time"),n("td",null,"int64"),n("td",null,"入群时间")]),n("tr",null,[n("td",null,"last_active_time"),n("td",null,"int64"),n("td",null,"最后发言时间")]),n("tr",null,[n("td",null,"last_sent_time"),n("td",null,"int64"),n("td",null,"最后发言时间")]),n("tr",null,[n("td",null,"unique_name"),n("td",null,"string"),n("td",null,"群头衔")]),n("tr",null,[n("td",null,"area"),n("td",null,"string"),n("td",null,"地区")]),n("tr",null,[n("td",null,"level"),n("td",null,"string"),n("td",null,"成员等级")]),n("tr",null,[n("td",null,"role"),n("td",null,"string"),n("td",null,"角色")]),n("tr",null,[n("td",null,"unfriendly"),n("td",null,"bool"),n("td",null,"是否不良记录成员")]),n("tr",null,[n("td",null,"card_changeable"),n("td",null,"bool"),n("td",null,"是否允许修改群名片")])])],-1),N=n("div",{class:"language-json line-numbers-mode","data-ext":"json"},[n("pre",{class:"language-json"},[n("code",null,[n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"status"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"ok"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"retcode"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"data"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token punctuation"},"["),t(` + `),n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"user_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"1372362033"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"group_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"758533243"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"user_name"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"伏秋洛~"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"sex"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"female"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"title"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"title_expire_time"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"nickname"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"伏秋洛~"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"user_displayname"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"distance"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"100"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"honor"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token punctuation"},"["),n("span",{class:"token number"},"3"),n("span",{class:"token punctuation"},"]"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"join_time"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"1687759547"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"last_active_time"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"1697105041"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"last_sent_time"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"1697105041"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"unique_name"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"area"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"level"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"10315"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"role"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"owner"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"unfriendly"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token boolean"},"false"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"card_changeable"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token boolean"},"false"),t(` + `),n("span",{class:"token punctuation"},"}"),t(` + `),n("span",{class:"token punctuation"},"]"),t(` +`),n("span",{class:"token punctuation"},"}"),t(` +`)])]),n("div",{class:"line-numbers","aria-hidden":"true"},[n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"})])],-1),S=o('

获取群荣誉信息

该接口用于获取群荣誉信息。

API 端点

/get_group_honor_info

参数

字段类型必须说明
group_idint64群号

响应

字段类型说明
group_idint64群号
current_talkativeList<HonorInfo>当前龙王
talkative_listList<HonorInfo>历史龙王
performer_listList<HonorInfo>群聊之火
legend_listList<HonorInfo>群聊炽焰
strong_newbie_listList<HonorInfo>冒尖小春笋
emotion_listList<HonorInfo>快乐之源
allList<HonorInfo>全部荣誉

HonorInfo

字段类型说明
user_idint64QQ 号
nicknamestring昵称
avatarstring头像链接
day_countint32持续天数
idint32ID
descriptionstring描述

获取群系统消息

该接口用于获取群系统消息。

API 端点

/get_group_system_msg

响应

字段类型说明
invited_requestsList<InvitedRequest>邀请消息列表
join_requestsList<JoinRequest>进群消息列表

注意

如果列表不存在任何消息, 将返回 null

InvitedRequest

字段类型说明
request_idint64请求ID
invitor_uinint64邀请者
invitor_nickstring邀请者昵称
group_idint64群号
group_namestring群名
checkedbool是否已被处理
actorint64处理者, 未处理为0
requester_uinint64被邀请者ID
flagstringflag,用于处理请求

JoinRequest

字段类型说明
request_idint64请求ID
requester_uinint64请求者ID
requester_nickstring请求者昵称
messagestring验证消息
group_idint64群号
group_namestring群名
checkedbool是否已被处理
actorint64处理者, 未处理为0
flagstringflag,用于处理请求

获取好友系统消息

该接口用于获取好友系统消息。

API 端点

/get_friend_system_msg

响应

该接口返回的 data 数据为数组,每个元素为一个好友请求的系统信息,具体如下。

',27),R=n("table",null,[n("thead",null,[n("tr",null,[n("th",null,"字段"),n("th",null,"类型"),n("th",null,"说明")])]),n("tbody",null,[n("tr",null,[n("td",null,"request_id"),n("td",null,"int64"),n("td",null,"请求id")]),n("tr",null,[n("td",null,"requester_uin"),n("td",null,"int64"),n("td",null,"请求者QQ号")]),n("tr",null,[n("td",null,"requester_nick"),n("td",null,"string"),n("td",null,"请求者昵称")]),n("tr",null,[n("td",null,"source"),n("td",null,"string"),n("td",null,"来源")]),n("tr",null,[n("td",null,"message"),n("td",null,"string"),n("td",null,"附加消息")]),n("tr",null,[n("td",null,"source_group_name"),n("td",null,"string"),n("td",null,"来源群名称,仅当从群添加好友时存在")]),n("tr",null,[n("td",null,"source_group_id"),n("td",null,"int64"),n("td",null,"来源群号,仅当从群添加好友时存在")]),n("tr",null,[n("td",null,"sex"),n("td",null,"string"),n("td",null,"请求者性别")]),n("tr",null,[n("td",null,"age"),n("td",null,"string"),n("td",null,"请求者年龄")]),n("tr",null,[n("td",null,"msg_detail"),n("td",null,"string"),n("td",null,"处理结果")]),n("tr",null,[n("td",null,"status"),n("td",null,"string"),n("td",null,[t("可选值:"),n("code",null,"已同意"),t("、"),n("code",null,"已拒绝"),t(",为空则表示尚未处理")])]),n("tr",null,[n("td",null,"flag"),n("td",null,"string"),n("td",null,"flag,用于处理请求")])])],-1),C=n("div",{class:"language-json line-numbers-mode","data-ext":"json"},[n("pre",{class:"language-json"},[n("code",null,[n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"status"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"ok"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"retcode"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"data"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token punctuation"},"["),t(` + `),n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"request_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"1702011024000000"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"requester_uin"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"1234567890"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"requester_nick"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"流月e"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"source"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"QQ群-群名称"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"message"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"我是流月e"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"source_group_name"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"群名称"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"source_group_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"1234567890"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"flag"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"1702011024000000;3004;3;1234567890"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"sex"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"female"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"age"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"23"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"msg_detail"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"status"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),t(` + `),n("span",{class:"token punctuation"},"}"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token punctuation"},"{"),t(` + `),n("span",{class:"token property"},'"request_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"1702010997000000"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"requester_uin"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"1234567891"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"requester_nick"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"是铃音啦"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"source"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"QQ群"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"message"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"source_group_name"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"source_group_id"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"flag"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"1702010997000000;6;1;1234567891"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"sex"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'"male"'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"age"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"msg_detail"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),n("span",{class:"token punctuation"},","),t(` + `),n("span",{class:"token property"},'"status"'),n("span",{class:"token operator"},":"),t(),n("span",{class:"token string"},'""'),t(` + `),n("span",{class:"token punctuation"},"}"),t(` + `),n("span",{class:"token punctuation"},"]"),t(` +`),n("span",{class:"token punctuation"},"}"),t(` +`)])]),n("div",{class:"line-numbers","aria-hidden":"true"},[n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"})])],-1),O=o('

获取精华消息列表

该接口用于获取精华消息列表。

API 端点

/get_essence_msg_list

参数

字段类型说明
group_idint64群号

响应

响应内容为 JSON 数组,每个元素如下:

字段名数据类型说明
sender_idint64发送者QQ 号
sender_nickstring发送者昵称
sender_timeint64消息发送时间
operator_idint64操作者QQ 号
operator_nickstring操作者昵称
operator_timeint64精华设置时间
message_idint32消息ID,可能为0表示找不到消息映射
message_seqint32消息seq

QQ是否在黑名单内

获取好友/陌生人是否处于黑名单列表。

API 端点

/is_blacklist_uin

参数

字段类型必须说明
user_idint64QQ账号

响应

字段类型说明
isbool是否是黑名单
',17);function V(E,J){const p=c("Badge"),r=c("Tabs");return d(),u("div",null,[n("div",h,[b,n("p",null,[t("对于 Shamrock 尚未实现的 API,会在标题添加标记 "),l(p,{text:"未实现",type:"danger",vertical:"baseline"})])]),m,l(r,{id:"62",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:s(({value:a,isActive:e})=>[t("响应字段")]),title1:s(({value:a,isActive:e})=>[t("响应示例")]),tab0:s(({value:a,isActive:e})=>[_]),tab1:s(({value:a,isActive:e})=>[v]),_:1}),g,l(r,{id:"167",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:s(({value:a,isActive:e})=>[t("响应字段")]),title1:s(({value:a,isActive:e})=>[t("响应示例")]),tab0:s(({value:a,isActive:e})=>[y]),tab1:s(({value:a,isActive:e})=>[f]),_:1}),n("h2",x,[q,t(" 获取单向好友列表 "),l(p,{text:"未实现",type:"danger"})]),A,l(r,{id:"423",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:s(({value:a,isActive:e})=>[t("响应字段")]),title1:s(({value:a,isActive:e})=>[t("响应示例")]),tab0:s(({value:a,isActive:e})=>[I]),tab1:s(({value:a,isActive:e})=>[Q]),_:1}),j,l(r,{id:"594",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:s(({value:a,isActive:e})=>[t("响应字段")]),title1:s(({value:a,isActive:e})=>[t("响应示例")]),tab0:s(({value:a,isActive:e})=>[w]),tab1:s(({value:a,isActive:e})=>[P]),_:1}),L,l(r,{id:"805",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:s(({value:a,isActive:e})=>[t("响应字段")]),title1:s(({value:a,isActive:e})=>[t("响应示例")]),tab0:s(({value:a,isActive:e})=>[D]),tab1:s(({value:a,isActive:e})=>[H]),_:1}),B,l(r,{id:"1093",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:s(({value:a,isActive:e})=>[t("响应字段")]),title1:s(({value:a,isActive:e})=>[t("响应示例")]),tab0:s(({value:a,isActive:e})=>[z]),tab1:s(({value:a,isActive:e})=>[N]),_:1}),S,l(r,{id:"1884",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:s(({value:a,isActive:e})=>[t("响应字段")]),title1:s(({value:a,isActive:e})=>[t("响应示例")]),tab0:s(({value:a,isActive:e})=>[R]),tab1:s(({value:a,isActive:e})=>[C]),_:1}),O])}const M=i(k,[["render",V],["__file","contact.html.vue"]]);export{M as default}; diff --git a/assets/contact.html-3cff63b3.js b/assets/contact.html-3cff63b3.js new file mode 100644 index 00000000..0ca278e4 --- /dev/null +++ b/assets/contact.html-3cff63b3.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-a405f8f2","path":"/api/contact.html","title":"联系人相关","lang":"zh-CN","frontmatter":{"title":"联系人相关","icon":"address-book"},"headers":[{"level":2,"title":"获取陌生人信息","slug":"获取陌生人信息","link":"#获取陌生人信息","children":[{"level":3,"title":"API 端点","slug":"api-端点","link":"#api-端点","children":[]},{"level":3,"title":"参数","slug":"参数","link":"#参数","children":[]},{"level":3,"title":"响应","slug":"响应","link":"#响应","children":[]}]},{"level":2,"title":"获取好友列表","slug":"获取好友列表","link":"#获取好友列表","children":[{"level":3,"title":"API 端点","slug":"api-端点-1","link":"#api-端点-1","children":[]},{"level":3,"title":"参数","slug":"参数-1","link":"#参数-1","children":[]},{"level":3,"title":"响应","slug":"响应-1","link":"#响应-1","children":[]}]},{"level":2,"title":"获取单向好友列表","slug":"获取单向好友列表","link":"#获取单向好友列表","children":[{"level":3,"title":"API 端点","slug":"api-端点-2","link":"#api-端点-2","children":[]},{"level":3,"title":"参数","slug":"参数-2","link":"#参数-2","children":[]},{"level":3,"title":"响应","slug":"响应-2","link":"#响应-2","children":[]}]},{"level":2,"title":"获取群信息","slug":"获取群信息","link":"#获取群信息","children":[{"level":3,"title":"API 端点","slug":"api-端点-3","link":"#api-端点-3","children":[]},{"level":3,"title":"参数","slug":"参数-3","link":"#参数-3","children":[]},{"level":3,"title":"响应","slug":"响应-3","link":"#响应-3","children":[]}]},{"level":2,"title":"获取群列表","slug":"获取群列表","link":"#获取群列表","children":[{"level":3,"title":"API 端点","slug":"api-端点-4","link":"#api-端点-4","children":[]},{"level":3,"title":"参数","slug":"参数-4","link":"#参数-4","children":[]},{"level":3,"title":"响应","slug":"响应-4","link":"#响应-4","children":[]}]},{"level":2,"title":"获取群成员信息","slug":"获取群成员信息","link":"#获取群成员信息","children":[{"level":3,"title":"API 端点","slug":"api-端点-5","link":"#api-端点-5","children":[]},{"level":3,"title":"参数","slug":"参数-5","link":"#参数-5","children":[]},{"level":3,"title":"响应","slug":"响应-5","link":"#响应-5","children":[]}]},{"level":2,"title":"获取群成员列表","slug":"获取群成员列表","link":"#获取群成员列表","children":[{"level":3,"title":"API 端点","slug":"api-端点-6","link":"#api-端点-6","children":[]},{"level":3,"title":"参数","slug":"参数-6","link":"#参数-6","children":[]},{"level":3,"title":"响应","slug":"响应-6","link":"#响应-6","children":[]}]},{"level":2,"title":"获取群荣誉信息","slug":"获取群荣誉信息","link":"#获取群荣誉信息","children":[{"level":3,"title":"API 端点","slug":"api-端点-7","link":"#api-端点-7","children":[]},{"level":3,"title":"参数","slug":"参数-7","link":"#参数-7","children":[]},{"level":3,"title":"响应","slug":"响应-7","link":"#响应-7","children":[]}]},{"level":2,"title":"获取群系统消息","slug":"获取群系统消息","link":"#获取群系统消息","children":[{"level":3,"title":"API 端点","slug":"api-端点-8","link":"#api-端点-8","children":[]},{"level":3,"title":"响应","slug":"响应-8","link":"#响应-8","children":[]}]},{"level":2,"title":"获取好友系统消息","slug":"获取好友系统消息","link":"#获取好友系统消息","children":[{"level":3,"title":"API 端点","slug":"api-端点-9","link":"#api-端点-9","children":[]},{"level":3,"title":"响应","slug":"响应-9","link":"#响应-9","children":[]}]},{"level":2,"title":"获取精华消息列表","slug":"获取精华消息列表","link":"#获取精华消息列表","children":[{"level":3,"title":"API 端点","slug":"api-端点-10","link":"#api-端点-10","children":[]},{"level":3,"title":"参数","slug":"参数-8","link":"#参数-8","children":[]},{"level":3,"title":"响应","slug":"响应-10","link":"#响应-10","children":[]}]},{"level":2,"title":"QQ是否在黑名单内","slug":"qq是否在黑名单内","link":"#qq是否在黑名单内","children":[{"level":3,"title":"API 端点","slug":"api-端点-11","link":"#api-端点-11","children":[]},{"level":3,"title":"参数","slug":"参数-9","link":"#参数-9","children":[]},{"level":3,"title":"响应","slug":"响应-11","link":"#响应-11","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1708324623000,"contributors":[{"name":"ikechan8370","email":"geyinchibuaa@gmail.com","commits":4},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":7.18,"words":2154},"filePathRelative":"api/contact.md","localizedDate":"2023年10月28日","excerpt":""}');export{l as data}; diff --git a/assets/dispose.html-102b9d52.js b/assets/dispose.html-102b9d52.js new file mode 100644 index 00000000..c5927662 --- /dev/null +++ b/assets/dispose.html-102b9d52.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-e0692e30","path":"/api/dispose.html","title":"处理相关","lang":"zh-CN","frontmatter":{"title":"处理相关","icon":"bowling-ball"},"headers":[{"level":2,"title":"处理加好友请求","slug":"处理加好友请求","link":"#处理加好友请求","children":[{"level":3,"title":"API 端点","slug":"api-端点","link":"#api-端点","children":[]},{"level":3,"title":"参数","slug":"参数","link":"#参数","children":[]},{"level":3,"title":"响应","slug":"响应","link":"#响应","children":[]}]},{"level":2,"title":"处理加群请求/邀请","slug":"处理加群请求-邀请","link":"#处理加群请求-邀请","children":[{"level":3,"title":"API 端点","slug":"api-端点-1","link":"#api-端点-1","children":[]},{"level":3,"title":"参数","slug":"参数-1","link":"#参数-1","children":[]},{"level":3,"title":"响应","slug":"响应-1","link":"#响应-1","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1700581436000,"contributors":[{"name":"ikechan8370","email":"geyinchibuaa@gmail.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":0.89,"words":268},"filePathRelative":"api/dispose.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/dispose.html-b9b3b569.js b/assets/dispose.html-b9b3b569.js new file mode 100644 index 00000000..c0b43771 --- /dev/null +++ b/assets/dispose.html-b9b3b569.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{r as a,o as r,c as h,a as t,d as o,b as i,e as n}from"./app-edf8b1e7.js";const c={},s={class:"hint-container warning"},p=t("p",{class:"hint-container-title"},"注意",-1),l=n('

处理加好友请求

该接口用于处理加好友请求。

API 端点

/set_friend_add_request

参数

字段名数据类型默认值说明
flagstring-加好友请求的 flag(需从上报的数据中获得)
approvebooleantrue是否同意请求
remarkstring添加后的好友备注(仅在同意时有效)

响应

该接口将返回处理结果,其中 data 字段无数据。

处理加群请求/邀请

该接口用于处理加群请求/邀请。

API 端点

/set_group_add_request

参数

字段名数据类型默认值说明
flagstring-加群请求的 flag(需从上报的数据中获得)
sub_type 或 typestring-addinvite, 请求类型(需要和上报消息中的 sub_type 字段相符)
approvebooleantrue是否同意请求/邀请
reasonstring拒绝理由(仅在拒绝时有效)

响应

该接口将返回处理结果,其中 data 字段无数据。

',16);function _(b,f){const d=a("Badge");return r(),h("div",null,[t("div",s,[p,t("p",null,[o("对于 Shamrock 尚未实现的 API,会在标题添加标记 "),i(d,{text:"未实现",type:"danger",vertical:"baseline"})])]),l])}const x=e(c,[["render",_],["__file","dispose.html.vue"]]);export{x as default}; diff --git a/assets/faq.html-23bd903d.js b/assets/faq.html-23bd903d.js new file mode 100644 index 00000000..ff591d94 --- /dev/null +++ b/assets/faq.html-23bd903d.js @@ -0,0 +1,2 @@ +import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as d,c,e as a}from"./app-edf8b1e7.js";const o={},r=a(`

支持的QQ版本

  • 版本 8.9.688.9.708.9.738.9.758.9.788.9.808.9.818.9.839.0.15, 9.0.8
  • 理论上支持上述说明未提到的更高版本,如遇问题请提交 issue

反检测

Shamrock 内部已经做了对应处理,无需再进行任何操作。

注意

禁止使用隐藏应用列表等其他方法对 QQ 隐藏 Shamrock ,否则会出现 框架未激活 等异常。

模拟器部署成功后电脑无法访问?

部分模拟器采用的是 NAT 网络,请使用

adb forward xxx
+

将模拟器内的端口监听转发到电脑,别和我说为什么别人的模拟器可以在外面直接访问,你的不行就不行!

执行这个命令前,请注意adb是安卓调试桥工具包内的东西,请确保你的环境中有这个玩意,否则请前往谷歌官网或者刷机论坛之类的地方获取。

修改了配置文件,但没有生效?

Shamrock 的部分配置需要重新启动 QQ (请确保100%杀死QQ),然后在保证 Shamrock 存活的情况下启动 QQShamrockWebSocket 相关的所有配置都需要重新启动生效。

注意

如果启用了 实验功能->免死金牌 在更新配置或更新模块后需重启系统,否则更新可能不会生效。

某些事件/消息/操作不支持?

提交 issue ,我们会实现。

QQ闪退(每隔一段时间)怎么办?

勾选 Shamrock 的自动唤醒,或者使用某些框架自带QQ死亡自动唤醒的XP, MAGISK...插件。你要习以为常这个操作,请安装一些软件进行按时重启或者闪退重启,同时QQ有时也会有概率杀死他自己。

真机息屏状态,API会变慢/无响应?

断网式:这个操作源自于 MIUI息屏省电 ,请保证关闭锁屏后断开数据,这个选项,关闭睡眠模式。

缓慢式:使用某些息屏挂机软件,为 QQ 附加一个息屏挂机状态。安装息屏挂机软件 extinguish ,或者使用 MIUI游戏助手 息屏挂机

模拟器部署,QQ闪退?

QQ修复了登录响应超时的问题,经测试(逍遥,夜神,MuMu)模拟器可正常使用,去QQ官网下载最新版本即可。

其次,模拟器部署请使用Shamrock的ALL版本,不要使用WSA(Windows安卓子系统)部署(有兼容问题)。

模拟器部署,外部无法访问接口?

参考 模拟器部署成功后电脑无法访问?

Docker部署支持?

目前依旧在计划中,主要是不太会 docker

一定要保证Shamrock主APP在后台运行吗?

不需要,因为 OneBot 服务运行在 QQ 主进程中,无需 Shamrock 主进程运行(当然第一次使用 Shamrock ,请启动 Shamrock ,推送配置要求 ShamrockQQ 都在运行)。

云手机支持哪些?

目前允许在中国移动云手机(Magisk)和红手指云手机(Lspatch)使用 Shamrock ,其它平台未测试。

Shamrock的日志怎么导出?

Shamrock 的日志文件,按照时间和进程名称,保存在 /sdcard/Android/data/com.tencent.mobileqq/Tencent/Shamrock/log 文件夹内,请查看,提交 issue 时可以使用它们,注意请不要提交超过 50kb 的日志文件。

`,33),h=[r];function i(n,s){return d(),c("div",null,h)}const l=e(o,[["render",i],["__file","faq.html.vue"]]);export{l as default}; diff --git a/assets/faq.html-b8980499.js b/assets/faq.html-b8980499.js new file mode 100644 index 00000000..782f74fb --- /dev/null +++ b/assets/faq.html-b8980499.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-37e1c06f","path":"/guide/faq.html","title":"常见问题","lang":"zh-CN","frontmatter":{"title":"常见问题","icon":"question-circle"},"headers":[{"level":3,"title":"支持的QQ版本","slug":"支持的qq版本","link":"#支持的qq版本","children":[]},{"level":3,"title":"反检测","slug":"反检测","link":"#反检测","children":[]},{"level":3,"title":"模拟器部署成功后电脑无法访问?","slug":"模拟器部署成功后电脑无法访问","link":"#模拟器部署成功后电脑无法访问","children":[]},{"level":3,"title":"修改了配置文件,但没有生效?","slug":"修改了配置文件-但没有生效","link":"#修改了配置文件-但没有生效","children":[]},{"level":3,"title":"某些事件/消息/操作不支持?","slug":"某些事件-消息-操作不支持","link":"#某些事件-消息-操作不支持","children":[]},{"level":3,"title":"QQ闪退(每隔一段时间)怎么办?","slug":"qq闪退-每隔一段时间-怎么办","link":"#qq闪退-每隔一段时间-怎么办","children":[]},{"level":3,"title":"真机息屏状态,API会变慢/无响应?","slug":"真机息屏状态-api会变慢-无响应","link":"#真机息屏状态-api会变慢-无响应","children":[]},{"level":3,"title":"模拟器部署,QQ闪退?","slug":"模拟器部署-qq闪退","link":"#模拟器部署-qq闪退","children":[]},{"level":3,"title":"模拟器部署,外部无法访问接口?","slug":"模拟器部署-外部无法访问接口","link":"#模拟器部署-外部无法访问接口","children":[]},{"level":3,"title":"Docker部署支持?","slug":"docker部署支持","link":"#docker部署支持","children":[]},{"level":3,"title":"一定要保证Shamrock主APP在后台运行吗?","slug":"一定要保证shamrock主app在后台运行吗","link":"#一定要保证shamrock主app在后台运行吗","children":[]},{"level":3,"title":"云手机支持哪些?","slug":"云手机支持哪些","link":"#云手机支持哪些","children":[]},{"level":3,"title":"Shamrock的日志怎么导出?","slug":"shamrock的日志怎么导出","link":"#shamrock的日志怎么导出","children":[]}],"git":{"createdTime":1698464511000,"updatedTime":1708669619000,"contributors":[{"name":"owo233","email":"callng@qq.com","commits":2},{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":2},{"name":"Miuzarte","email":"982809597@qq.com","commits":1},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":2.88,"words":865},"filePathRelative":"guide/faq.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/fav.html-20a3b00e.js b/assets/fav.html-20a3b00e.js new file mode 100644 index 00000000..c0421249 --- /dev/null +++ b/assets/fav.html-20a3b00e.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-504f4f28","path":"/api/fav.html","title":"QQ收藏 接口","lang":"zh-CN","frontmatter":{"title":"QQ收藏 接口","icon":"feather-alt"},"headers":[{"level":2,"title":"获取收藏列表","slug":"获取收藏列表","link":"#获取收藏列表","children":[{"level":3,"title":"API端点","slug":"api端点","link":"#api端点","children":[]}]},{"level":2,"title":"参数","slug":"参数","link":"#参数","children":[{"level":3,"title":"响应","slug":"响应","link":"#响应","children":[]}]},{"level":2,"title":"获取指定收藏的内容","slug":"获取指定收藏的内容","link":"#获取指定收藏的内容","children":[{"level":3,"title":"API端点","slug":"api端点-1","link":"#api端点-1","children":[]}]},{"level":2,"title":"参数","slug":"参数-1","link":"#参数-1","children":[{"level":3,"title":"响应","slug":"响应-1","link":"#响应-1","children":[]}]},{"level":2,"title":"添加文本收藏","slug":"添加文本收藏","link":"#添加文本收藏","children":[{"level":3,"title":"API端点","slug":"api端点-2","link":"#api端点-2","children":[]}]},{"level":2,"title":"参数","slug":"参数-2","link":"#参数-2","children":[{"level":3,"title":"响应","slug":"响应-2","link":"#响应-2","children":[]}]},{"level":2,"title":"添加图片收藏","slug":"添加图片收藏","link":"#添加图片收藏","children":[{"level":3,"title":"API端点","slug":"api端点-3","link":"#api端点-3","children":[]}]},{"level":2,"title":"参数","slug":"参数-3","link":"#参数-3","children":[{"level":3,"title":"响应","slug":"响应-3","link":"#响应-3","children":[]}]}],"git":{"createdTime":1703279929000,"updatedTime":1708324623000,"contributors":[{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":1}]},"readingTime":{"minutes":1.04,"words":312},"filePathRelative":"api/fav.md","localizedDate":"2023年12月22日","excerpt":""}');export{l as data}; diff --git a/assets/fav.html-2a68d12c.js b/assets/fav.html-2a68d12c.js new file mode 100644 index 00000000..f76d9d6c --- /dev/null +++ b/assets/fav.html-2a68d12c.js @@ -0,0 +1,44 @@ +import{_ as a}from"./plugin-vue_export-helper-c27b6911.js";import{o as n,c as s,e as t}from"./app-edf8b1e7.js";const e={},o=t(`

注意

这里的API处于实验性阶段,不会进行大量维护和更新,由于过于简单,如果需要某些功能可以自行PR!

获取收藏列表

获取收藏列表

API端点

/fav/get_item_list (HTTP)

fav.get_item_list (WebSocket)

参数

字段类型必须说明默认值
page_sizeint32获取的数量
categoryint32分类
start_posint32开始的位置

响应

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "items": [
+      {
+        "id": "1-1-9dec6664-dcb7-4b46-986f-xxxxxx",
+        "author_type": 2,
+        "author": 2806922524,
+        "author_name": "2806922524",
+        "group_name": "ˢʰᵃᵐʳᵒᶜᵏ",
+        "group_id": 333425833,
+        "client_version": "8.9.12820",
+        "time": 1703004793000
+      }
+    ]
+  },
+  "echo": ""
+}
+

获取指定收藏的内容

获取收藏内容

API端点

/fav/get_item_content (HTTP)

fav.get_item_content (WebSocket)

参数

字段类型必须说明默认值
idstringid

响应

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "content": "在想可不可以在手机上跑bot()"
+  },
+  "echo": ""
+}
+

添加文本收藏

添加一段文字到QQ收藏

API端点

/fav/add_text_msg (HTTP)

fav.add_text_msg (WebSocket)

参数

字段类型必须说明默认值
contentstring内容

响应

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "id": "xxxxxxxx"
+  },
+  "echo": ""
+}
+

添加图片收藏

添加一个图片到QQ收藏

API端点

/fav/add_image_msg (HTTP)

fav.add_image_msg (WebSocket)

参数

字段类型必须说明默认值
filestring图片base64或者绝对路径或者URL

响应

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "id": "xxxxxxxx"
+  },
+  "echo": ""
+}
+
`,37),p=[o];function r(d,i){return n(),s("div",null,p)}const u=a(e,[["render",r],["__file","fav.html.vue"]]);export{u as default}; diff --git a/assets/file.html-873076e9.js b/assets/file.html-873076e9.js new file mode 100644 index 00000000..438febc4 --- /dev/null +++ b/assets/file.html-873076e9.js @@ -0,0 +1,42 @@ +import{_ as p}from"./plugin-vue_export-helper-c27b6911.js";import{r as o,o as c,c as h,a as t,d as a,b as s,w as e,e as r}from"./app-edf8b1e7.js";const u={},b={class:"hint-container warning"},k=t("p",{class:"hint-container-title"},"注意",-1),f=r('

上传私聊文件

该接口用于上传私聊文件。

注意

只能上传本地文件, 需要上传 http 文件的话请先下载至本地

API 端点

/upload_private_file

参数

字段类型说明
user_idint64目标
filestring本地文件路径文件base64文件url
namestring文件名称

注意

本地文件路径为绝对路径,文件base64为base64://开头,文件url则应该是正确的http请求地址。

响应

',9),_=t("table",null,[t("thead",null,[t("tr",null,[t("th",null,"字段"),t("th",null,"类型"),t("th",null,"说明")])]),t("tbody",null,[t("tr",null,[t("td",null,"msg_id"),t("td",null,"int32"),t("td",null,"消息id")]),t("tr",null,[t("td",null,"bizid"),t("td",null,"int32"),t("td")]),t("tr",null,[t("td",null,"md5"),t("td",null,"string"),t("td",null,"MD5")]),t("tr",null,[t("td",null,"file_id"),t("td",null,"string"),t("td",null,"文件uuid")])])],-1),m=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"status"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"ok"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"retcode"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"0"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"msg_id"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"286479341"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"bizid"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"102"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"md5"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"6742327a8b0147eebd6e1d4018626082"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"sha"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'""'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"sha3"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'""'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"file_id"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"/c65b7c5c-50e0-47c6-951f-4e3377505f7f"'),a(` + `),t("span",{class:"token punctuation"},"}"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"echo"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'""'),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),v=r('

上传群文件

该接口用于上传群文件。

注意

只能上传本地文件, 需要上传 http 文件的话请先下载至本地

API 端点

/upload_group_file

参数

字段类型说明
group_idint64群号
filestring本地文件路径文件base64文件url
namestring文件名称

注意

本地文件路径为绝对路径,文件base64为base64://开头,文件url则应该是正确的http请求地址。

响应

',9),g=t("table",null,[t("thead",null,[t("tr",null,[t("th",null,"字段"),t("th",null,"类型"),t("th",null,"说明")])]),t("tbody",null,[t("tr",null,[t("td",null,"msg_id"),t("td",null,"int32"),t("td",null,"消息id")]),t("tr",null,[t("td",null,"bizid"),t("td",null,"int32"),t("td")]),t("tr",null,[t("td",null,"md5"),t("td",null,"string"),t("td",null,"MD5")]),t("tr",null,[t("td",null,"file_id"),t("td",null,"string"),t("td",null,"文件uuid")])])],-1),y=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"status"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"ok"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"retcode"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"0"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"msg_id"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"286479341"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"bizid"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"102"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"md5"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"6742327a8b0147eebd6e1d4018626082"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"sha"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'""'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"sha3"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'""'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"file_id"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"/c65b7c5c-50e0-47c6-951f-4e3377505f7f"'),a(` + `),t("span",{class:"token punctuation"},"}"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"echo"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'""'),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),x=r(`

注意

参数 folder在Shamrock不受支持。

删除群文件

该接口用于删除群文件。

API 端点

/delete_group_file

参数

字段类型说明
group_idint64群号
file_idstring文件ID 参考 File 对象
busidint32文件类型 参考 File 对象

提示

该 API 无响应数据

创建群文件文件夹

该接口用于创建群文件文件夹。

注意

仅能在根目录创建文件夹

API 端点

/create_group_file_folder

参数

字段类型说明
group_idint64群号
namestring群文件夹名字

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "folder_id": "/ad86c100-031d-4139-8cab-c6c661a413ba",
+    "parent_folder_id": "/",
+    "folder_name": "测试",
+    "create_time": 1706269735,
+    "modify_time": 1706269735,
+    "creator_uin": 1650114384,
+    "modifier_uin": 1650114384
+  },
+  "message": "成功",
+  "echo": 111
+}
+

重命名群文件夹

把已经存在的群文件夹改个名字。

API 端点

/rename_group_folder

字段类型说明
group_idint64群号
folder_idstring群文件夹ID
namestring群文件夹名字

响应解释

可通过返回的状态码判断重命名是否成功。

删除群文件文件夹

该接口用于删除群文件文件夹。

API 端点

/delete_group_folder

参数

字段类型说明
group_idint64群号
folder_idstring文件夹ID 参考 Folder 对象

响应解释

可通过返回的状态码判断删除是否成功。

获取群文件系统信息

该接口用于获取群文件系统信息。

API 端点

/get_group_file_system_info

参数

字段类型说明
group_idint64群号

响应

字段类型说明
file_countint32文件总数
limit_countint32文件上限
used_spaceint64已使用空间
total_spaceint64空间上限

获取群根目录文件列表

该接口用于获取群根目录文件列表。

API 端点

/get_group_root_files

参数

字段类型说明
group_idint64群号

响应

字段类型说明
filesList<File>文件列表
foldersList<Folder>文件夹列表

File

字段类型说明
group_idint32群号
file_idstring文件ID
file_namestring文件名
busidint32文件类型
file_sizeint64文件大小
upload_timeint64上传时间
dead_timeint64过期时间,永久文件恒为0
modify_timeint64最后修改时间
download_timesint32下载次数
uploaderint64上传者ID
uploader_namestring上传者名字
md5stringmd5
shastringsha
sha3stringsha3 可能获取不到

Folder

字段类型说明
group_idint32群号
folder_idstring文件夹ID
folder_namestring文件名
create_timeint64创建时间
creatorint64创建者
creator_namestring创建者名字
total_file_countint32子文件数量

获取群子目录文件列表

该接口用于获取群子目录文件列表。

API 端点

/get_group_files_by_folder

参数

字段类型说明
group_idint64群号
folder_idstring文件夹ID 参考 Folder 对象

响应

字段类型说明
filesFile[]文件列表
foldersFolder[]文件夹列表

获取群文件资源链接

该接口用于获取群文件资源链接。

API 端点

/get_group_file_url

参数

字段类型说明
group_idint64群号
file_idstring文件ID 参考 File 对象
busidint32文件类型 参考 File 对象

响应

字段类型说明
urlstring文件下载链接
`,68);function q(A,I){const l=o("Badge"),i=o("Tabs");return c(),h("div",null,[t("div",b,[k,t("p",null,[a("对于 Shamrock 尚未实现的 API,会在标题添加标记 "),s(l,{text:"未实现",type:"danger",vertical:"baseline"})])]),f,s(i,{id:"83",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:e(({value:n,isActive:d})=>[a("响应字段")]),title1:e(({value:n,isActive:d})=>[a("响应示例")]),tab0:e(({value:n,isActive:d})=>[_]),tab1:e(({value:n,isActive:d})=>[m]),_:1}),v,s(i,{id:"229",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:e(({value:n,isActive:d})=>[a("响应字段")]),title1:e(({value:n,isActive:d})=>[a("响应示例")]),tab0:e(({value:n,isActive:d})=>[g]),tab1:e(({value:n,isActive:d})=>[y]),_:1}),x])}const w=p(u,[["render",q],["__file","file.html.vue"]]);export{w as default}; diff --git a/assets/file.html-dfe880a4.js b/assets/file.html-dfe880a4.js new file mode 100644 index 00000000..8026b830 --- /dev/null +++ b/assets/file.html-dfe880a4.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-a83cae62","path":"/api/file.html","title":"文件相关","lang":"zh-CN","frontmatter":{"title":"文件相关","icon":"file"},"headers":[{"level":2,"title":"上传私聊文件","slug":"上传私聊文件","link":"#上传私聊文件","children":[{"level":3,"title":"API 端点","slug":"api-端点","link":"#api-端点","children":[]},{"level":3,"title":"参数","slug":"参数","link":"#参数","children":[]},{"level":3,"title":"响应","slug":"响应","link":"#响应","children":[]}]},{"level":2,"title":"上传群文件","slug":"上传群文件","link":"#上传群文件","children":[{"level":3,"title":"API 端点","slug":"api-端点-1","link":"#api-端点-1","children":[]},{"level":3,"title":"参数","slug":"参数-1","link":"#参数-1","children":[]},{"level":3,"title":"响应","slug":"响应-1","link":"#响应-1","children":[]}]},{"level":2,"title":"删除群文件","slug":"删除群文件","link":"#删除群文件","children":[{"level":3,"title":"API 端点","slug":"api-端点-2","link":"#api-端点-2","children":[]},{"level":3,"title":"参数","slug":"参数-2","link":"#参数-2","children":[]}]},{"level":2,"title":"创建群文件文件夹","slug":"创建群文件文件夹","link":"#创建群文件文件夹","children":[{"level":3,"title":"API 端点","slug":"api-端点-3","link":"#api-端点-3","children":[]},{"level":3,"title":"参数","slug":"参数-3","link":"#参数-3","children":[]},{"level":3,"title":"响应示例","slug":"响应示例","link":"#响应示例","children":[]}]},{"level":2,"title":"重命名群文件夹","slug":"重命名群文件夹","link":"#重命名群文件夹","children":[{"level":3,"title":"API 端点","slug":"api-端点-4","link":"#api-端点-4","children":[]},{"level":3,"title":"响应解释","slug":"响应解释","link":"#响应解释","children":[]}]},{"level":2,"title":"删除群文件文件夹","slug":"删除群文件文件夹","link":"#删除群文件文件夹","children":[{"level":3,"title":"API 端点","slug":"api-端点-5","link":"#api-端点-5","children":[]},{"level":3,"title":"参数","slug":"参数-4","link":"#参数-4","children":[]},{"level":3,"title":"响应解释","slug":"响应解释-1","link":"#响应解释-1","children":[]}]},{"level":2,"title":"获取群文件系统信息","slug":"获取群文件系统信息","link":"#获取群文件系统信息","children":[{"level":3,"title":"API 端点","slug":"api-端点-6","link":"#api-端点-6","children":[]},{"level":3,"title":"参数","slug":"参数-5","link":"#参数-5","children":[]},{"level":3,"title":"响应","slug":"响应-2","link":"#响应-2","children":[]}]},{"level":2,"title":"获取群根目录文件列表","slug":"获取群根目录文件列表","link":"#获取群根目录文件列表","children":[{"level":3,"title":"API 端点","slug":"api-端点-7","link":"#api-端点-7","children":[]},{"level":3,"title":"参数","slug":"参数-6","link":"#参数-6","children":[]},{"level":3,"title":"响应","slug":"响应-3","link":"#响应-3","children":[]}]},{"level":2,"title":"获取群子目录文件列表","slug":"获取群子目录文件列表","link":"#获取群子目录文件列表","children":[{"level":3,"title":"API 端点","slug":"api-端点-8","link":"#api-端点-8","children":[]},{"level":3,"title":"参数","slug":"参数-7","link":"#参数-7","children":[]},{"level":3,"title":"响应","slug":"响应-4","link":"#响应-4","children":[]}]},{"level":2,"title":"获取群文件资源链接","slug":"获取群文件资源链接","link":"#获取群文件资源链接","children":[{"level":3,"title":"API 端点","slug":"api-端点-9","link":"#api-端点-9","children":[]},{"level":3,"title":"参数","slug":"参数-8","link":"#参数-8","children":[]},{"level":3,"title":"响应","slug":"响应-5","link":"#响应-5","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1708853599000,"contributors":[{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":3},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"ikechan8370","email":"geyinchibuaa@gmail.com","commits":1},{"name":"owo233","email":"callng@qq.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":3.75,"words":1125},"filePathRelative":"api/file.md","localizedDate":"2023年10月28日","excerpt":""}');export{l as data}; diff --git a/assets/format.html-2e24f616.js b/assets/format.html-2e24f616.js new file mode 100644 index 00000000..5a8e6743 --- /dev/null +++ b/assets/format.html-2e24f616.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-e108f4be","path":"/message/format.html","title":"消息格式","lang":"zh-CN","frontmatter":{"title":"消息格式","icon":"message"},"headers":[{"level":2,"title":"CQ 码","slug":"cq-码","link":"#cq-码","children":[{"level":3,"title":"格式","slug":"格式","link":"#格式","children":[]},{"level":3,"title":"示例","slug":"示例","link":"#示例","children":[]},{"level":3,"title":"转义","slug":"转义","link":"#转义","children":[]}]},{"level":2,"title":"消息段","slug":"消息段","link":"#消息段","children":[{"level":3,"title":"格式","slug":"格式-1","link":"#格式-1","children":[]},{"level":3,"title":"示例","slug":"示例-1","link":"#示例-1","children":[]},{"level":3,"title":"组合","slug":"组合","link":"#组合","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1698464511000,"contributors":[{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":1.3,"words":389},"filePathRelative":"message/format.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/format.html-f6f78276.js b/assets/format.html-f6f78276.js new file mode 100644 index 00000000..b653c8d4 --- /dev/null +++ b/assets/format.html-f6f78276.js @@ -0,0 +1,33 @@ +import{_ as a}from"./plugin-vue_export-helper-c27b6911.js";import{o as n,c as e,e as s}from"./app-edf8b1e7.js";const t={},o=s(`

提示

在后续的文档中,我们将提供 CQ 码和消息段两种格式的消息示例,以便于您更好地理解。

CQ 码

CQ 码是一种特殊的文本格式,用于在消息中插入表情、图片、音乐、语音、视频、网页等内容。

格式

这是一个 CQ 码的基本格式:

[CQ:action,param1=value1,param2=value2]
+

CQ 码中内容含义如下:

  • action:动作,指示要进行的操作,如发送图片、音乐等。
  • param:对应动作需要的参数,如 qqfile 等。
  • value:参数所对应的值,如 AT 的 QQ 号。

示例

例如,要 AT 一个 QQ 号为 123456 的用户,可以这样写:

[CQ:at,qq=123456] Hello!
+

他会被解析为:

@小明 Hello!
+

转义

CQ 码由 [] 并以 , 分隔的多个部分组成,因此如果要在 CQ 码中使用这些字符,需要进行转义。

原字符转义字符
&&amp;
[&#91;
]&#93;
,&#44;

消息段

消息段是新一代的消息格式,采用 JSON 格式。

格式

消息段是一个 JSON 对象,以下是一个消息段的基本格式:

{
+  "type": "text", // 消息段类型
+  "data": {
+    // 消息段数据/参数
+    "text": "Hello!"
+  }
+}
+

示例

例如,要 AT 一个 QQ 号为 123456 的用户,可以这样写:

{
+  "type": "at",
+  "data": {
+    "qq": 123456
+  }
+}
+

他会被解析为:

@小明
+

组合

消息段可以组合在一起,形成一个消息。

[
+  {
+    "type": "at",
+    "data": {
+      "qq": 123456
+    }
+  },
+  {
+    "type": "text",
+    "data": {
+      "text": " Hello!"
+    }
+  }
+]
+

以上消息段会被解析为:

@小明 Hello!
+
`,31),d=[o];function i(p,c){return n(),e("div",null,d)}const u=a(t,[["render",i],["__file","format.html.vue"]]);export{u as default}; diff --git a/assets/general-data.html-b027dcd6.js b/assets/general-data.html-b027dcd6.js new file mode 100644 index 00000000..845a2355 --- /dev/null +++ b/assets/general-data.html-b027dcd6.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-32977d7c","path":"/event/general-data.html","title":"通用数据","lang":"zh-CN","frontmatter":{"title":"通用数据","icon":"database"},"headers":[{"level":2,"title":"所有上报","slug":"所有上报","link":"#所有上报","children":[]},{"level":2,"title":"事件类型","slug":"事件类型","link":"#事件类型","children":[{"level":3,"title":"PostType","slug":"posttype","link":"#posttype","children":[]},{"level":3,"title":"MessageType","slug":"messagetype","link":"#messagetype","children":[]},{"level":3,"title":"MessageSubType","slug":"messagesubtype","link":"#messagesubtype","children":[]},{"level":3,"title":"NoticeType","slug":"noticetype","link":"#noticetype","children":[]},{"level":3,"title":"NoticeNotifySubType","slug":"noticenotifysubtype","link":"#noticenotifysubtype","children":[]},{"level":3,"title":"RequestType","slug":"requesttype","link":"#requesttype","children":[]}]},{"level":2,"title":"数据结构","slug":"数据结构","link":"#数据结构","children":[{"level":3,"title":"MessageSender","slug":"messagesender","link":"#messagesender","children":[]},{"level":3,"title":"Post_Message_TempSource","slug":"post-message-tempsource","link":"#post-message-tempsource","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1708324623000,"contributors":[{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":3},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":1.45,"words":435},"filePathRelative":"event/general-data.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/general-data.html-fa6997a7.js b/assets/general-data.html-fa6997a7.js new file mode 100644 index 00000000..5130da76 --- /dev/null +++ b/assets/general-data.html-fa6997a7.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-c27b6911.js";import{o as d,c as e,e as r}from"./app-edf8b1e7.js";const a={},h=r('

所有上报

所有上报事件都包含以下字段:

字段类型说明
timeint64时间戳
self_idint64机器人QQ
post_typestring上报类型

提示

post_typemessagemessage_sent 时,数据是一致的。
区别在于 message 是收到的消息,message_sent 是发送的消息。

默认情况下,Shamrock 只会上报 message 类型的消息。

事件类型

PostType

类型说明
message收到消息
message_sent发送消息
notice通知
request请求

MessageType

类型说明
private私聊消息
group群消息

MessageSubType

类型说明
friend好友消息
normal群消息
anonymous匿名消息
group群临时消息
group_self群消息(自身操作)
notice系统提示

NoticeType

类型说明
group_upload群文件上传
group_admin群管理员变动
group_decrease群成员减少
group_increase群成员增加
group_ban群禁言
group_recall群消息撤回
group_card群成员名片变动
friend_add好友添加
friend_recall好友撤回
offline_file接收到离线文件包
client_status客户端状态
essence精华消息
notify系统通知

NoticeNotifySubType

类型说明
honor群荣誉变更
poke戳一戳
lucky_king运气王
title群头衔变更

RequestType

类型说明
friend好友请求
group群请求

数据结构

MessageSender

字段类型说明
user_idint64发送者 QQ 号
nicknamestring发送者昵称

如果是群消息,还会包含以下字段:

字段类型说明
cardstring发送者群名片
levelstring发送者等级
rolestring发送者角色
titlestring发送者头衔

如果是频道消息,则会包含以下字段:

字段类型说明
tiny_idstring发送者TinyId

Post_Message_TempSource

类型来源
0群聊
1QQ咨询
2查找
3QQ电影
4热聊
6验证消息
7多人聊天
8约会
9通讯录
',26),s=[h];function o(i,n){return d(),e("div",null,s)}const b=t(a,[["render",o],["__file","general-data.html.vue"]]);export{b as default}; diff --git a/assets/getting-started.html-33fa2926.js b/assets/getting-started.html-33fa2926.js new file mode 100644 index 00000000..0c9b4ca6 --- /dev/null +++ b/assets/getting-started.html-33fa2926.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-c27b6911.js";import{r,o as n,c as h,a as e,d as o,b as d,w as s,e as a}from"./app-edf8b1e7.js";const l={},p=a('

注意

Shamrock 的更新会围绕一个稳定的版本,如果盲目升级,可能导致 Shamrock 不可用。
Shamrock 仍然处于快速开发阶段,可能会有大量 API 在未来版本中被删除或修改。
请不要过度依赖实验室中的功能,以免造成不必要的损失。

下载

提示

目前推荐您下载 开发版本 的 Shamrock

稳定版本

',4),_=e("code",null,"Shamrock",-1),u={href:"https://github.com/whitechi73/OpenShamrock/releases",target:"_blank",rel:"noopener noreferrer"},k=e("h3",{id:"开发版本",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#开发版本","aria-hidden":"true"},"#"),o(" 开发版本")],-1),m=e("code",null,"Shamrock",-1),f={href:"https://github.com/whitechi73/OpenShamrock/actions/workflows/build-apk.yml",target:"_blank",rel:"noopener noreferrer"},S=e("h2",{id:"部署",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#部署","aria-hidden":"true"},"#"),o(" 部署")],-1),b={class:"hint-container warning"},x=e("p",{class:"hint-container-title"},"注意",-1),Q=e("code",null,"Shamrock",-1),g=e("code",null,"QQ",-1),w=a("

如果您使用了 QRSpeed/ShamrockNative 有关的插件,请确保 Shamrock 存活。
无论什么情况都请确保 QQ 客户端 存活。
禁止对 QQ 客户端 隐藏 Shamrock,这将导致无法运行。
首次启动,必须打开 Shamrock,否则无法推送配置文件导致失败。

",1),v=a('

模拟器上部署

在Mumu模拟器、逍遥模拟器......各种模拟器,其中对Shamrock兼容较好的是 Mumu模拟器 ,其它模拟器在测试情况下都出现高版本 QQ 闪退的问题。

注意

Shamrock 必须是 ALL版本 才能在模拟器正常使用

Magisk+Lsposed

推荐的是 XposedLsposed 框架,而不是 EdXposed,在测试情况下, EdXP 出现了无法注入的问题。

',5),E=e("code",null,"Magisk",-1),L={href:"https://www.52pojie.cn/thread-1583586-1-1.html",target:"_blank",rel:"noopener noreferrer"},A=e("code",null,"Lsposed",-1),P={href:"https://magiskcn.com/lsposed-install",target:"_blank",rel:"noopener noreferrer"},B=a('

Lspatch

查看 使用LSPatch

在Linux类服务器上部署(使用docker)

这个选择过于多元化,你可以使用 redroid, docker-android,需要注意的是部分框架要求开起虚拟化才能使用哦!目前依旧是采用 Lspatch+Shamrock 方案在 docker 部署,因为安装 magisk 类需要修补镜像,难以实现。

查看 使用LSPatch

在PVE上使用

部署Windows

',7),V={href:"https://zhuanlan.zhihu.com/p/354034712?utm_psn=1695915211926863872",target:"_blank",rel:"noopener noreferrer"},M=e("p",null,[o("之后可在系统内使用 "),e("a",{href:"#%E6%A8%A1%E6%8B%9F%E5%99%A8%E4%B8%8A%E9%83%A8%E7%BD%B2"},"安卓模拟器部署"),o("。")],-1),X=e("h4",{id:"部署blissos",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#部署blissos","aria-hidden":"true"},"#"),o(" 部署BlissOS")],-1),C={href:"https://www.bilibili.com/video/BV1Mj411e7V9",target:"_blank",rel:"noopener noreferrer"},N=e("br",null,null,-1),O=e("code",null,"OpenShamrock",-1),R=e("h3",{id:"在linux-kvm部署",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#在linux-kvm部署","aria-hidden":"true"},"#"),o(" 在Linux KVM部署")],-1),W={href:"https://cloud.tencent.com/developer/article/1484145",target:"_blank",rel:"noopener noreferrer"},F=a('

在WSA上部署

WSA 拥有自带 Magisk 的版本,但是 QQWSA 在第二次启动时会闪退,怀疑为热更新问题。

有 XP 环境

  • 打开 QQ 客户端,登录你的 QQ 账号
  • 安装 Shamrock 并在 Xposed 启用 Shamrock 模块,如果使用 LSPosed 则需要勾选模块作用域(默认QQ)
  • 启动 Shamrock重新启动 QQ 客户端,如果环境为 Xposed 则需要重启手机
  • 此时 Shamrock 会显示已激活(需要成功登陆,才会显示已激活)

无 Root 环境

使用 LSPatch

  • 打开 LSPatch 并在 管理 页面选择 + 新建修补,可以选择从存储目录选择 QQAPK 或者直接使用已经安装过的 QQ
  • 修补模式默认且应该优先选择 本地模式 ,这样方便直接更新 Shamrock 模块而不用重新修补,缺点是需要 LSPatch 保持后台运行
  • 其他配置保持默认,然后点击 开始修补 ,修补完成后会提示安装(如果已经安装会提示卸载)
  • 安装 Shamrock 模块后在 管理 页面点击修补好的 QQ 选择 模块作用域 勾选上 Shamrock 模块然后保存
  • 启动 Shamrock重新启动 QQ 客户端
  • 此时 Shamrock 会显示已激活

注意

使用 本地模式 修补后需要保持 LSPatch 在后台运行,优点是模块更新无需重新修补 QQ

使用 集成模式 修补后无需保持 LSPatch 在后台运行,缺点是模块更新后需要重新修补 QQ

使用 VirtualXposed

注意

在 Android 12 以上的系统中,使用 VirtualXposed 会导致闪退。

使用 太极

注意

暂不支持太极使用,正在申请。

',12);function j(q,D){const c=r("ExternalLinkIcon"),i=r("RouterLink");return n(),h("div",null,[p,e("ul",null,[e("li",null,[o("要下载 "),_,o(" 的稳定版本,请访问 "),e("a",u,[o("GitHub Releases"),d(c)])])]),k,e("ul",null,[e("li",null,[o("要下载 "),m,o(" 的开发版本(推荐),请访问 "),e("a",f,[o("GitHub Actions"),d(c)])])]),S,e("div",b,[x,e("p",null,[o("请使用 "),Q,o(" 兼容的 "),g,o(" 客户端部署,见 "),d(i,{to:"/guide/faq.html#%E6%94%AF%E6%8C%81%E7%9A%84qq%E7%89%88%E6%9C%AC"},{default:s(()=>[o("支持的QQ版本")]),_:1})]),w]),v,e("ul",null,[e("li",null,[o("安装 "),E,o(" 方法,见 "),e("a",L,[o("52pojie论坛"),d(c)])]),e("li",null,[o("安装 "),A,o(" 方法,见 "),e("a",P,[o("Magisk中文网"),d(c)])])]),B,e("p",null,[o("使用PVE安装任意Windows系统之后,阅读文章 "),e("a",V,[o("PVE开启嵌套虚拟化"),d(c)])]),M,X,e("p",null,[o("操作视频参考"),e("a",C,[o("PVE下安装BlissOS及Magisk,LSP"),d(c)]),N,o(" 之后可以直接使用 "),O]),R,e("p",null,[o("参考文章:"),e("a",W,[o("KVM上部署Android"),d(c)]),o(" 该文章使用的安卓版本可能较低,请使用安卓9+系统")]),F])}const z=t(l,[["render",j],["__file","getting-started.html.vue"]]);export{z as default}; diff --git a/assets/getting-started.html-717781e9.js b/assets/getting-started.html-717781e9.js new file mode 100644 index 00000000..4a0a2241 --- /dev/null +++ b/assets/getting-started.html-717781e9.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-fb0f0066","path":"/guide/getting-started.html","title":"快速开始","lang":"zh-CN","frontmatter":{"title":"快速开始","icon":"rocket"},"headers":[{"level":2,"title":"下载","slug":"下载","link":"#下载","children":[{"level":3,"title":"稳定版本","slug":"稳定版本","link":"#稳定版本","children":[]},{"level":3,"title":"开发版本","slug":"开发版本","link":"#开发版本","children":[]}]},{"level":2,"title":"部署","slug":"部署","link":"#部署","children":[{"level":3,"title":"模拟器上部署","slug":"模拟器上部署","link":"#模拟器上部署","children":[]},{"level":3,"title":"在Linux类服务器上部署(使用docker)","slug":"在linux类服务器上部署-使用docker","link":"#在linux类服务器上部署-使用docker","children":[]},{"level":3,"title":"在PVE上使用","slug":"在pve上使用","link":"#在pve上使用","children":[]},{"level":3,"title":"在Linux KVM部署","slug":"在linux-kvm部署","link":"#在linux-kvm部署","children":[]},{"level":3,"title":"在WSA上部署","slug":"在wsa上部署","link":"#在wsa上部署","children":[]},{"level":3,"title":"有 XP 环境","slug":"有-xp-环境","link":"#有-xp-环境","children":[]},{"level":3,"title":"无 Root 环境","slug":"无-root-环境","link":"#无-root-环境","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1708324623000,"contributors":[{"name":"真心","email":"qgzhenxin@qq.com","commits":2},{"name":"Miuzarte","email":"982809597@qq.com","commits":1},{"name":"XingNian-www","email":"44593434+XingNian-www@users.noreply.github.com","commits":1},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"owo233","email":"ver@vip.qq.com","commits":1}]},"readingTime":{"minutes":3.5,"words":1050},"filePathRelative":"guide/getting-started.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/group.html-d11fdb99.js b/assets/group.html-d11fdb99.js new file mode 100644 index 00000000..f51ffbef --- /dev/null +++ b/assets/group.html-d11fdb99.js @@ -0,0 +1,24 @@ +import{_ as l}from"./plugin-vue_export-helper-c27b6911.js";import{r as i,o as p,c as u,a as t,d as a,b as n,w as d,e as h}from"./app-edf8b1e7.js";const b={},_={class:"hint-container warning"},g=t("p",{class:"hint-container-title"},"注意",-1),f=h('

设置群名

该接口用于设置群名。

API 端点

/set_group_name

参数

字段名数据类型说明
group_idint64群号
group_namestring新群名

提示

该 API 无响应数据

响应

该接口将返回处理结果,其中 data 字段无数据。。

',9),m={id:"设置群头像",tabindex:"-1"},x=t("a",{class:"header-anchor",href:"#设置群头像","aria-hidden":"true"},"#",-1),k=h('

该接口用于设置群头像。

API 端点

/set_group_portrait

参数

字段类型说明
group_idint64群号
filestring图片文件名
cacheint表示是否使用已缓存的文件

[1] file 参数支持以下几种格式:

',6),v=t("code",null,"file:///sdcard/Pictures/shamrock.png",-1),y={href:"https://tools.ietf.org/html/rfc8089",target:"_blank",rel:"noopener noreferrer"},A=t("code",null,"file",-1),I=t("li",null,[a("网络 URL, 例如 "),t("code",null,"http://i1.piimg.com/567571/fdd6e7b6d93f1ef0.jpg")],-1),P=t("li",null,[a("Base64 编码, 例如 "),t("code",null,"base64://iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAIAAADJt1n/AAAAKElEQVQ4EWPk5+RmIBcwkasRpG9UM4mhNxpgowFGMARGEwnBIEJVAAAdBgBNAZf+QAAAAABJRU5ErkJggg==")],-1),Q=h('

[2] cache参数: 通过网络 URL 发送时有效, 1表示使用缓存, 0关闭关闭缓存, 默认 为1

设置群管理员

该接口用于设置群管理员。

API 端点

/set_group_admin

参数

字段类型必须说明
group_idint64群号
user_idint64QQ 号
enablebool是否设置

响应

该接口将返回处理结果,其中 data 字段无数据。。

设置群名片

该接口用于设置群成员名片。

API 端点

/set_group_card

参数

字段名数据类型默认值说明
group_idint64-群号
user_idint64-要设置的 QQ 号
cardstring群名片内容, 不填或空字符串表示删除群名片

提示

该 API 无响应数据

设置群聊备注

该接口用于设置群聊备注。

API 端点

/set_group_remark

参数

字段名数据类型默认值说明
group_idint64-群号
remarkstring群备注, 不填或空字符串表示删除群备注

提示

该 API 无响应数据

设置群组专属头衔

该接口用于设置群组专属头衔。

API 端点

/set_group_special_title

参数

字段类型必须说明
group_idint64群号
user_idint64QQ 号
special_titlestring头衔

响应

该接口将返回处理结果,其中 data 字段无数据。。

群单人禁言

该接口用于群单人禁言。

API 端点

/set_group_ban

参数

提示

duration0 时,将解除禁言。

字段类型必须说明
group_idint64群号
user_idint64QQ 号
durationint64禁言时长

响应

该接口将返回处理结果,其中 data 字段无数据。。

群全员禁言

该接口用于群全员禁言。

API 端点

/set_group_whole_ban

参数

字段名数据类型默认值说明
group_idint64-群号
enablebooleantrue是否禁言

提示

该 API 无响应数据

响应

该接口将返回处理结果,其中 data 字段无数据。。

设置精华消息

该接口用于设置精华消息。

API 端点

/set_essence_msg

参数

字段类型说明
message_idint32消息ID

提示

该 API 没有响应数据

移出精华消息

该接口用于移出精华消息。

API 端点

/delete_essence_msg

参数

字段类型说明
message_idint32消息ID

提示

该 API 没有响应数据

群打卡

该接口用于群打卡。

API 端点

/send_group_sign

参数

字段名数据类型说明
group_idint64群号

响应

该接口将返回处理结果,其中 data 字段无数据。

发送群公告

该接口用于发送群公告。

API 端点

/_send_group_notice

参数

字段名数据类型默认值说明
group_idint64群号
contentstring公告内容
imagestring图片(可选),支持base64、http(s)和本地路径

响应

该接口将返回处理结果,其中 data 字段无数据。

获取群公告

该接口用于获取群公告。

API 端点

/_get_group_notice

参数

字段名数据类型默认值说明
group_idint64群号

响应数据

data 的响应内容为 json 数组,每个元素内容如下:

字段类型说明
sender_idint64公告发表者
publish_timeint64公告发表时间
messageObject<Message>公告内容

message

字段类型说明
textstring公告内容
imagesList<Images>公告图片

images

字段类型说明
heightstring图片高度
widthstring图片宽度
idstring图片ID,可用https://gdynamic.qpic.cn/gdynamic/{id}/628获取

群组踢人

该接口用于群组踢人。

API 端点

/set_group_kick

参数

字段类型必须说明
group_idint64群号
user_idint64QQ 号
reject_add_requestbool是否拒绝再次加群

响应

该接口将返回处理结果,其中 data 字段无数据。

退出群组

该接口用于退出群组。

API 端点

/set_group_leave

参数

字段类型必须说明
group_idint64群号

响应

该接口将返回处理结果,其中 data 字段无数据。。

群戳一戳

该接口用于群戳一戳。

API 端点

/group_touch - 用于HTTP

/poke - 用于主动WebSocket与被动WebSocket

参数

字段类型必须说明
group_idint64群号
user_idint64QQ 号

响应

该接口将返回处理结果,其中 data 字段无数据。。

获取被禁言的群成员列表

用于获取群聊谁谁谁啊犯贱或者被二比滥权管理或者某群主时援交手滑禁言掉的人的列表。

API端点

/get_prohibited_member_list

参数

字段类型必须说明
group_idint64群号

响应

',124),B=t("table",null,[t("thead",null,[t("tr",null,[t("th",null,"字段"),t("th",null,"类型"),t("th",null,"说明")])]),t("tbody",null,[t("tr",null,[t("td",null,"user_id"),t("td",null,"int64"),t("td",null,"QQ 号")]),t("tr",null,[t("td",null,"time"),t("td",null,"int64"),t("td",null,"禁言结束时间")])])],-1),j=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"status"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"ok"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"retcode"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"0"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"["),a(` + `),t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"user_id"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"2262206340"),t("span",{class:"token punctuation"},","),a(),t("span",{class:"token comment"},"// 被禁言的人"),a(` + `),t("span",{class:"token property"},'"time"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"1700749967"),a(),t("span",{class:"token comment"},"// 禁言结束时间"),a(` + `),t("span",{class:"token punctuation"},"}"),a(` + `),t("span",{class:"token punctuation"},"]"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"echo"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"xxxx"'),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),E=h('

获取群 @全体成员 剩余次数

当机器人是管理员时可用

API端点

/get_group_at_all_remain

参数

字段类型必须说明
group_idint64群号

响应

',7),w=t("table",null,[t("thead",null,[t("tr",null,[t("th",null,"字段"),t("th",null,"类型"),t("th",null,"说明")])]),t("tbody",null,[t("tr",null,[t("td",null,"can_at_all"),t("td",null,"bool"),t("td",null,"是否可以 @全体成员")]),t("tr",null,[t("td",null,"remain_at_all_count_for_group"),t("td",null,"int32"),t("td",null,"群内所有管理当天剩余 @全体成员 次数")]),t("tr",null,[t("td",null,"remain_at_all_count_for_uin"),t("td",null,"int32"),t("td",null,"Bot 当天剩余 @全体成员 次数")])])],-1),R=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"status"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"ok"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"retcode"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"0"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"["),a(` + `),t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"can_at_all"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token boolean"},"true"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"remain_at_all_count_for_group"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"20"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"remain_at_all_count_for_group"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"10"),a(` + `),t("span",{class:"token punctuation"},"}"),a(` + `),t("span",{class:"token punctuation"},"]"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"echo"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"xxxx"'),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),V=h('

设置消息底部评论小表情

貌似是从别的地方抄的奇怪功能,目前版本(9.0.15)只在部分群聊进行灰度测试!

API 端点

/set_group_comment_face

参数

字段类型必须说明
group_idint64群号
msg_idint32消息ID
face_idint32表情ID
is_setbool是否设置或取消评论

响应

该接口将返回处理结果,其中 data 字段无数据。。

',8);function N(U,D){const s=i("Badge"),c=i("ExternalLinkIcon"),o=i("Tabs");return p(),u("div",null,[t("div",_,[g,t("p",null,[a("对于 Shamrock 尚未实现的 API,会在标题添加标记 "),n(s,{text:"未实现",type:"danger",vertical:"baseline"})])]),f,t("h2",m,[x,a(" 设置群头像 "),n(s,{text:"未实现",type:"danger"})]),k,t("ul",null,[t("li",null,[a("绝对路径, 例如 "),v,a(", 格式使用 "),t("a",y,[A,a(" URI"),n(c)])]),I,P]),Q,n(o,{id:"1326",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:d(({value:e,isActive:r})=>[a("响应字段")]),title1:d(({value:e,isActive:r})=>[a("响应示例")]),tab0:d(({value:e,isActive:r})=>[B]),tab1:d(({value:e,isActive:r})=>[j]),_:1}),E,n(o,{id:"1424",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:d(({value:e,isActive:r})=>[a("响应字段")]),title1:d(({value:e,isActive:r})=>[a("响应示例")]),tab0:d(({value:e,isActive:r})=>[w]),tab1:d(({value:e,isActive:r})=>[R]),_:1}),V])}const T=l(b,[["render",N],["__file","group.html.vue"]]);export{T as default}; diff --git a/assets/group.html-ec66990a.js b/assets/group.html-ec66990a.js new file mode 100644 index 00000000..c2d9f0fb --- /dev/null +++ b/assets/group.html-ec66990a.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-23159ff0","path":"/api/group.html","title":"群聊相关","lang":"zh-CN","frontmatter":{"title":"群聊相关","icon":"user-group"},"headers":[{"level":2,"title":"设置群名","slug":"设置群名","link":"#设置群名","children":[{"level":3,"title":"API 端点","slug":"api-端点","link":"#api-端点","children":[]},{"level":3,"title":"参数","slug":"参数","link":"#参数","children":[]},{"level":3,"title":"响应","slug":"响应","link":"#响应","children":[]}]},{"level":2,"title":"设置群头像","slug":"设置群头像","link":"#设置群头像","children":[{"level":3,"title":"API 端点","slug":"api-端点-1","link":"#api-端点-1","children":[]},{"level":3,"title":"参数","slug":"参数-1","link":"#参数-1","children":[]}]},{"level":2,"title":"设置群管理员","slug":"设置群管理员","link":"#设置群管理员","children":[{"level":3,"title":"API 端点","slug":"api-端点-2","link":"#api-端点-2","children":[]},{"level":3,"title":"参数","slug":"参数-2","link":"#参数-2","children":[]},{"level":3,"title":"响应","slug":"响应-1","link":"#响应-1","children":[]}]},{"level":2,"title":"设置群名片","slug":"设置群名片","link":"#设置群名片","children":[{"level":3,"title":"API 端点","slug":"api-端点-3","link":"#api-端点-3","children":[]},{"level":3,"title":"参数","slug":"参数-3","link":"#参数-3","children":[]}]},{"level":2,"title":"设置群聊备注","slug":"设置群聊备注","link":"#设置群聊备注","children":[{"level":3,"title":"API 端点","slug":"api-端点-4","link":"#api-端点-4","children":[]},{"level":3,"title":"参数","slug":"参数-4","link":"#参数-4","children":[]}]},{"level":2,"title":"设置群组专属头衔","slug":"设置群组专属头衔","link":"#设置群组专属头衔","children":[{"level":3,"title":"API 端点","slug":"api-端点-5","link":"#api-端点-5","children":[]},{"level":3,"title":"参数","slug":"参数-5","link":"#参数-5","children":[]},{"level":3,"title":"响应","slug":"响应-2","link":"#响应-2","children":[]}]},{"level":2,"title":"群单人禁言","slug":"群单人禁言","link":"#群单人禁言","children":[{"level":3,"title":"API 端点","slug":"api-端点-6","link":"#api-端点-6","children":[]},{"level":3,"title":"参数","slug":"参数-6","link":"#参数-6","children":[]},{"level":3,"title":"响应","slug":"响应-3","link":"#响应-3","children":[]}]},{"level":2,"title":"群全员禁言","slug":"群全员禁言","link":"#群全员禁言","children":[{"level":3,"title":"API 端点","slug":"api-端点-7","link":"#api-端点-7","children":[]},{"level":3,"title":"参数","slug":"参数-7","link":"#参数-7","children":[]},{"level":3,"title":"响应","slug":"响应-4","link":"#响应-4","children":[]}]},{"level":2,"title":"设置精华消息","slug":"设置精华消息","link":"#设置精华消息","children":[{"level":3,"title":"API 端点","slug":"api-端点-8","link":"#api-端点-8","children":[]},{"level":3,"title":"参数","slug":"参数-8","link":"#参数-8","children":[]}]},{"level":2,"title":"移出精华消息","slug":"移出精华消息","link":"#移出精华消息","children":[{"level":3,"title":"API 端点","slug":"api-端点-9","link":"#api-端点-9","children":[]},{"level":3,"title":"参数","slug":"参数-9","link":"#参数-9","children":[]}]},{"level":2,"title":"群打卡","slug":"群打卡","link":"#群打卡","children":[{"level":3,"title":"API 端点","slug":"api-端点-10","link":"#api-端点-10","children":[]},{"level":3,"title":"参数","slug":"参数-10","link":"#参数-10","children":[]},{"level":3,"title":"响应","slug":"响应-5","link":"#响应-5","children":[]}]},{"level":2,"title":"发送群公告","slug":"发送群公告","link":"#发送群公告","children":[{"level":3,"title":"API 端点","slug":"api-端点-11","link":"#api-端点-11","children":[]},{"level":3,"title":"参数","slug":"参数-11","link":"#参数-11","children":[]},{"level":3,"title":"响应","slug":"响应-6","link":"#响应-6","children":[]}]},{"level":2,"title":"获取群公告","slug":"获取群公告","link":"#获取群公告","children":[{"level":3,"title":"API 端点","slug":"api-端点-12","link":"#api-端点-12","children":[]},{"level":3,"title":"参数","slug":"参数-12","link":"#参数-12","children":[]},{"level":3,"title":"响应数据","slug":"响应数据","link":"#响应数据","children":[]}]},{"level":2,"title":"群组踢人","slug":"群组踢人","link":"#群组踢人","children":[{"level":3,"title":"API 端点","slug":"api-端点-13","link":"#api-端点-13","children":[]},{"level":3,"title":"参数","slug":"参数-13","link":"#参数-13","children":[]},{"level":3,"title":"响应","slug":"响应-7","link":"#响应-7","children":[]}]},{"level":2,"title":"退出群组","slug":"退出群组","link":"#退出群组","children":[{"level":3,"title":"API 端点","slug":"api-端点-14","link":"#api-端点-14","children":[]},{"level":3,"title":"参数","slug":"参数-14","link":"#参数-14","children":[]},{"level":3,"title":"响应","slug":"响应-8","link":"#响应-8","children":[]}]},{"level":2,"title":"群戳一戳","slug":"群戳一戳","link":"#群戳一戳","children":[{"level":3,"title":"API 端点","slug":"api-端点-15","link":"#api-端点-15","children":[]},{"level":3,"title":"参数","slug":"参数-15","link":"#参数-15","children":[]},{"level":3,"title":"响应","slug":"响应-9","link":"#响应-9","children":[]}]},{"level":2,"title":"获取被禁言的群成员列表","slug":"获取被禁言的群成员列表","link":"#获取被禁言的群成员列表","children":[{"level":3,"title":"API端点","slug":"api端点","link":"#api端点","children":[]},{"level":3,"title":"参数","slug":"参数-16","link":"#参数-16","children":[]},{"level":3,"title":"响应","slug":"响应-10","link":"#响应-10","children":[]}]},{"level":2,"title":"获取群 @全体成员 剩余次数","slug":"获取群-全体成员-剩余次数","link":"#获取群-全体成员-剩余次数","children":[{"level":3,"title":"API端点","slug":"api端点-1","link":"#api端点-1","children":[]},{"level":3,"title":"参数","slug":"参数-17","link":"#参数-17","children":[]},{"level":3,"title":"响应","slug":"响应-11","link":"#响应-11","children":[]}]},{"level":2,"title":"设置消息底部评论小表情","slug":"设置消息底部评论小表情","link":"#设置消息底部评论小表情","children":[{"level":3,"title":"API 端点","slug":"api-端点-16","link":"#api-端点-16","children":[]},{"level":3,"title":"参数","slug":"参数-18","link":"#参数-18","children":[]},{"level":3,"title":"响应","slug":"响应-12","link":"#响应-12","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1708388116000,"contributors":[{"name":"ikechan8370","email":"geyinchibuaa@gmail.com","commits":4},{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":4},{"name":"Kamisato-Ayaka-233","email":"2627706725@qq.com","commits":1},{"name":"Miuzarte","email":"982809597@qq.com","commits":1},{"name":"Tuuz","email":"24893075+tobycroft@users.noreply.github.com","commits":1},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":5.26,"words":1579},"filePathRelative":"api/group.md","localizedDate":"2023年10月28日","excerpt":""}');export{l as data}; diff --git a/assets/guild.html-081b5f38.js b/assets/guild.html-081b5f38.js new file mode 100644 index 00000000..fb7edbd9 --- /dev/null +++ b/assets/guild.html-081b5f38.js @@ -0,0 +1,330 @@ +import{_ as a}from"./plugin-vue_export-helper-c27b6911.js";import{r as t,o as p,c as e,a as n,d as o,b as c,e as l}from"./app-edf8b1e7.js";const u={},r={class:"hint-container warning"},i=n("p",{class:"hint-container-title"},"注意",-1),d=l(`

获取频道系统内BOT的资料

该接口用于获取频道系统内BOT的资料。

API 端点

/get_guild_service_profile

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "nickname": "田所浩二",
+    "tiny_id": 1145141919810,
+    "avatar_url": "http://thirdqq.qlogo.cn/g?b=oidb&k=***&kti=***&s=0&t=***"
+  },
+  "echo": 123446
+}
+

获取频道列表

获取频道列表,数据相比于Go-CQHTTP会有一点不一样。

API 端点

/get_guild_list

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "guild_list": [
+      {
+        "guild_id": 111111111111111,
+        "guild_name": "北京大学频道",
+        "guild_display_id": "abcdefg",
+        "profile": "北京大学交流频道",
+        "status": {
+          "is_enable": true,
+          "is_banned": false,
+          "is_frozen": false
+        },
+        "owner_id": 22222222222222,
+        "shutup_expire_time": 0,
+        "allow_search": true
+      }
+    ]
+  },
+  "message": "success",
+  "echo": 111
+}
+

通过访客获取频道元数据

获取频道元数据,例如当前成员数量之类。

API 端点

/get_guild_meta_by_guest

参数

字段类型说明
guild_iduint64频道ID

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "guild_id": 11111111111,
+    "guild_name": "北京大学交流频道",
+    "guild_profile": "",
+    "create_time": 1606878500,
+    "max_member_count": 100000,
+    "max_robot_count": 100,
+    "max_admin_count": 50,
+    "member_count": 6241,
+    "owner_id": 2222222221,
+    "guild_display_id": ""
+  },
+  "echo": 111
+}
+

获取子频道列表

获取一个频道的子频道(channel)列表。

API 端点

/get_guild_channel_list

参数

字段类型说明
guild_iduint64频道ID
refreshbool是否刷新数据,默认false

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "channel_list": [
+      {
+        "owner_guild_id": 1111111111111111111,
+        "channel_id": 639093000,
+        "channel_uin": 639093000,
+        "guild_id": "1111111111111111111",
+        "channel_type": 2,
+        "channel_name": "Test",
+        "create_time": 1606879350,
+        "max_member_count": 99,
+        "creator_tiny_id": 124105218677239793,
+        "talk_permission": 1,
+        "visible_type": 1,
+        "current_slow_mode": 0,
+        "slow_modes": [],
+        "icon_url": "",
+        "jump_switch": 0,
+        "jump_type": 0,
+        "jump_url": "",
+        "category_id": 0,
+        "my_talk_permission": 2
+      },
+      {
+        "owner_guild_id": 1111111111111111111,
+        "channel_id": 639093001,
+        "channel_uin": 639093001,
+        "guild_id": "1111111111111111111",
+        "channel_type": 1,
+        "channel_name": "闲聊吹水",
+        "create_time": 1606878501,
+        "max_member_count": 0,
+        "creator_tiny_id": 124105218677239793,
+        "talk_permission": 1,
+        "visible_type": 1,
+        "current_slow_mode": 0,
+        "slow_modes": [
+          {
+            "slow_mode_key": 0,
+            "slow_mode_text": "关闭",
+            "speak_frequency": 0,
+            "slow_mode_circle": 0
+          },
+          {
+            "slow_mode_key": 1,
+            "slow_mode_text": "每分钟1条",
+            "speak_frequency": 1,
+            "slow_mode_circle": 60
+          },
+          {
+            "slow_mode_key": 2,
+            "slow_mode_text": "每分钟2条",
+            "speak_frequency": 2,
+            "slow_mode_circle": 60
+          },
+          {
+            "slow_mode_key": 3,
+            "slow_mode_text": "每分钟5条",
+            "speak_frequency": 5,
+            "slow_mode_circle": 60
+          },
+          {
+            "slow_mode_key": 4,
+            "slow_mode_text": "每分钟10条",
+            "speak_frequency": 10,
+            "slow_mode_circle": 60
+          },
+          {
+            "slow_mode_key": 5,
+            "slow_mode_text": "每5分钟1条",
+            "speak_frequency": 1,
+            "slow_mode_circle": 300
+          },
+          {
+            "slow_mode_key": 6,
+            "slow_mode_text": "每10分钟1条",
+            "speak_frequency": 1,
+            "slow_mode_circle": 600
+          },
+          {
+            "slow_mode_key": 7,
+            "slow_mode_text": "每15分钟1条",
+            "speak_frequency": 1,
+            "slow_mode_circle": 900
+          },
+          {
+            "slow_mode_key": 8,
+            "slow_mode_text": "每30分钟1条",
+            "speak_frequency": 1,
+            "slow_mode_circle": 1800
+          },
+          {
+            "slow_mode_key": 9,
+            "slow_mode_text": "每1小时1条",
+            "speak_frequency": 1,
+            "slow_mode_circle": 3600
+          },
+          {
+            "slow_mode_key": 10,
+            "slow_mode_text": "每12小时1条",
+            "speak_frequency": 1,
+            "slow_mode_circle": 43200
+          },
+          {
+            "slow_mode_key": 11,
+            "slow_mode_text": "每24小时1条",
+            "speak_frequency": 1,
+            "slow_mode_circle": 86400
+          }
+        ],
+        "icon_url": "",
+        "jump_switch": 0,
+        "jump_type": 0,
+        "jump_url": "",
+        "category_id": 0,
+        "my_talk_permission": 2
+      }
+    ]
+  },
+  "message": "success",
+  "echo": 111
+}
+

已知子频道类型列表

类型说明
1文字频道
2语音频道
5直播频道
7主题频道

获取频道成员列表

获取一个频道成员列表,但是因为数据量大,可能需要分页。

API 端点

/get_guild_member_list

参数

字段类型说明
guild_iduint64频道ID
next_tokenstring不提供则从首页开始获取
allbool是否一次性获取完所有成员,默认false
refreshbool是否刷新数据,默认false

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "members": [
+      {
+        "tiny_id": 144115218185291865,
+        "title": "频道助手",
+        "nickname": "频道助手",
+        "role_id": 2,
+        "role_name": "小管家",
+        "role_color": 4294936110,
+        "join_time": 1606878501,
+        "robot_type": 1,
+        "type": 1,
+        "in_black": false,
+        "platform": 0
+      }
+    ],
+    "next_token": "0800100118032001",
+    "finished": true
+  },
+  "echo": ""
+}
+

单独获取频道成员资料

单独获取频道成员信息,附带有权限信息和身份组哦~!

API 端点

/get_guild_member_profile

参数

字段类型说明
guild_iduint64频道ID
user_iduint64成员tinyId

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "tiny_id": 123456,
+    "nickname": "***",
+    "avatar_url": "https://qqchannel-profile-1251316161.file.myqcloud.com/***",
+    "join_time": 1606878500,
+    "roles": [
+      {
+        "role_id": "4",
+        "role_name": "频道主",
+        "color": 4294917938,
+        "permission": [
+          {
+            "root_id": 10000,
+            "child_ids": [10001, 10002, 10003, 10004, 10005]
+          },
+          {
+            "root_id": 20000,
+            "child_ids": [
+              20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20009, 20010, 20011, 20012,
+              20013, 20014, 20015, 20018, 20019
+            ]
+          },
+          {
+            "root_id": 30000,
+            "child_ids": [30001, 30002, 30003, 30004, 30005, 30006, 30007, 90002]
+          },
+          {
+            "root_id": 40000,
+            "child_ids": [40001, 40002]
+          },
+          {
+            "root_id": 50000,
+            "child_ids": [50001]
+          },
+          {
+            "root_id": 60000,
+            "child_ids": [60001]
+          },
+          {
+            "root_id": 70000,
+            "child_ids": [70001, 70002, 70003, 70004, 70005, 70006, 70007]
+          },
+          {
+            "root_id": 80000,
+            "child_ids": [80001, 80002]
+          },
+          {
+            "root_id": 90000,
+            "child_ids": [90001, 30003]
+          },
+          {
+            "root_id": 100000,
+            "child_ids": [100001, 100002]
+          },
+          {
+            "root_id": 1,
+            "child_ids": [1001, 1002, 1003, 1004, 1005]
+          },
+          {
+            "root_id": 2,
+            "child_ids": [
+              2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014,
+              2015, 2016, 2017, 2018
+            ]
+          },
+          {
+            "root_id": 3,
+            "child_ids": [3001, 3002, 3003, 3004, 3005, 3006]
+          },
+          {
+            "root_id": 4,
+            "child_ids": [4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008]
+          },
+          {
+            "root_id": 5,
+            "child_ids": [5001]
+          },
+          {
+            "root_id": 6,
+            "child_ids": [6001, 6002, 6003]
+          }
+        ],
+        "type": 0,
+        "display_name": "频道主"
+      },
+      {
+        "role_id": "15",
+        "role_name": "15活跃值",
+        "color": 4278190080,
+        "permission": [],
+        "type": 100,
+        "display_name": ""
+      }
+    ]
+  },
+  "echo": 111
+}
+

发送信息到子频道

发送频道内信息,需要单独的API哦,不要使用/send_message去发频道消息,发不出去的~~

API 端点

/send_guild_channel_msg

参数

字段类型说明
guild_iduint64频道ID
channel_iduint64子频道ID
messagestring or Message消息体,可为消息段或者CQ码
auto_escapebool是否解析CQ码,true为不解析,默认false
retry_cntint32消息发送失败,最大重试次数,默认3
recall_durationint64自动撤回间隔(毫秒),默认不撤回

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "message_id": 1933593189,
+    "time": 1706909190
+  },
+  "echo": 111
+}
+

获取话题频道帖子

该API接口已经被遗弃!

获取频道帖子广场帖子

新的获取帖子广场的帖子哦!

API 端点

/get_guild_feeds

参数

字段类型说明
guild_iduint64频道ID
fromuint32开始获取的位置

响应示例

该请求携带了大量原生响应数据,无法详细介绍,请自行测试!

获取频道角色列表

获取身份组列表,包括隐藏的身份组哦~~

API 端点

/get_guild_roles

参数

字段类型说明
guild_iduint64频道ID

响应示例

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "roles": [
+      {
+        "argb_color": 4286151052,
+        "disabled": false,
+        "independent": false,
+        "max_count": 1000,
+        "member_count": 0,
+        "owned": false,
+        "role_id": 1,
+        "role_name": "普通成员",
+        "permission": []
+      }
+    ]
+  },
+  "echo": 111
+}
+

获取频道消息

该接口不会实现,因为您可以调用/get_msg来获取来自频道的消息,无需实现一个专属的接口。

删除频道角色

删除一个身份组,首先,你得保证你有权限,因为这个API不会提供任何返回数据哦!

API 端点

/delete_guild_role

参数

字段类型说明
guild_iduint64频道ID
role_iduint64角色ID

响应

该 API 无响应数据

设置用户在频道中的角色

设置用户身份组。

API端点

/set_guild_member_role

参数

字段类型说明
guild_iduint64频道ID
role_iduint64角色ID
setbool设置还是移除,默认false
usersstring or vector<int64>批量设置用户s
user_idint64单独设置某个用户的身份

如果users是字符串那么其格式为123456,6656656526,2652656,以逗号分隔每个tinyId

修改频道角色

修改频道角色,暂不支持设置权限,如有需要请提交issue

API 端点

/update_guild_role

参数

字段类型说明
guild_iduint64频道ID
role_iduint64角色ID
namestring名称
colorint64颜色ARGB

响应

该 API 无响应数据

创建频道角色

创建频道身份组。

API 端点

/create_guild_role

参数

字段类型说明
guild_iduint64频道ID
namestring名称
colorint64颜色ARGB
initial_usersvector<int64>默认身份组成员

如果是HTTP请求,则initial_users使用字符串,以,为用户tiny_id分隔。

响应

字段类型说明
role_iduint64角色ID
`,106);function k(b,v){const s=t("Badge");return p(),e("div",null,[n("div",r,[i,n("p",null,[o("对于 Shamrock 尚未实现的 API,会在标题添加标记 "),c(s,{text:"未实现",type:"danger",vertical:"baseline"})])]),d])}const h=a(u,[["render",k],["__file","guild.html.vue"]]);export{h as default}; diff --git a/assets/guild.html-6966c300.js b/assets/guild.html-6966c300.js new file mode 100644 index 00000000..932a5f28 --- /dev/null +++ b/assets/guild.html-6966c300.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-4b693314","path":"/api/guild.html","title":"频道相关","lang":"zh-CN","frontmatter":{"title":"频道相关","icon":"user-group"},"headers":[{"level":2,"title":"获取频道系统内BOT的资料","slug":"获取频道系统内bot的资料","link":"#获取频道系统内bot的资料","children":[{"level":3,"title":"API 端点","slug":"api-端点","link":"#api-端点","children":[]},{"level":3,"title":"响应示例","slug":"响应示例","link":"#响应示例","children":[]}]},{"level":2,"title":"获取频道列表","slug":"获取频道列表","link":"#获取频道列表","children":[{"level":3,"title":"API 端点","slug":"api-端点-1","link":"#api-端点-1","children":[]},{"level":3,"title":"响应示例","slug":"响应示例-1","link":"#响应示例-1","children":[]}]},{"level":2,"title":"通过访客获取频道元数据","slug":"通过访客获取频道元数据","link":"#通过访客获取频道元数据","children":[{"level":3,"title":"API 端点","slug":"api-端点-2","link":"#api-端点-2","children":[]},{"level":3,"title":"参数","slug":"参数","link":"#参数","children":[]},{"level":3,"title":"响应示例","slug":"响应示例-2","link":"#响应示例-2","children":[]}]},{"level":2,"title":"获取子频道列表","slug":"获取子频道列表","link":"#获取子频道列表","children":[{"level":3,"title":"API 端点","slug":"api-端点-3","link":"#api-端点-3","children":[]},{"level":3,"title":"参数","slug":"参数-1","link":"#参数-1","children":[]},{"level":3,"title":"响应示例","slug":"响应示例-3","link":"#响应示例-3","children":[]}]},{"level":2,"title":"获取频道成员列表","slug":"获取频道成员列表","link":"#获取频道成员列表","children":[{"level":3,"title":"API 端点","slug":"api-端点-4","link":"#api-端点-4","children":[]},{"level":3,"title":"参数","slug":"参数-2","link":"#参数-2","children":[]},{"level":3,"title":"响应示例","slug":"响应示例-4","link":"#响应示例-4","children":[]}]},{"level":2,"title":"单独获取频道成员资料","slug":"单独获取频道成员资料","link":"#单独获取频道成员资料","children":[{"level":3,"title":"API 端点","slug":"api-端点-5","link":"#api-端点-5","children":[]},{"level":3,"title":"参数","slug":"参数-3","link":"#参数-3","children":[]},{"level":3,"title":"响应示例","slug":"响应示例-5","link":"#响应示例-5","children":[]}]},{"level":2,"title":"发送信息到子频道","slug":"发送信息到子频道","link":"#发送信息到子频道","children":[{"level":3,"title":"API 端点","slug":"api-端点-6","link":"#api-端点-6","children":[]},{"level":3,"title":"参数","slug":"参数-4","link":"#参数-4","children":[]},{"level":3,"title":"响应示例","slug":"响应示例-6","link":"#响应示例-6","children":[]}]},{"level":2,"title":"获取话题频道帖子","slug":"获取话题频道帖子","link":"#获取话题频道帖子","children":[]},{"level":2,"title":"获取频道帖子广场帖子","slug":"获取频道帖子广场帖子","link":"#获取频道帖子广场帖子","children":[{"level":3,"title":"API 端点","slug":"api-端点-7","link":"#api-端点-7","children":[]},{"level":3,"title":"参数","slug":"参数-5","link":"#参数-5","children":[]},{"level":3,"title":"响应示例","slug":"响应示例-7","link":"#响应示例-7","children":[]}]},{"level":2,"title":"获取频道角色列表","slug":"获取频道角色列表","link":"#获取频道角色列表","children":[{"level":3,"title":"API 端点","slug":"api-端点-8","link":"#api-端点-8","children":[]},{"level":3,"title":"参数","slug":"参数-6","link":"#参数-6","children":[]},{"level":3,"title":"响应示例","slug":"响应示例-8","link":"#响应示例-8","children":[]}]},{"level":2,"title":"获取频道消息","slug":"获取频道消息","link":"#获取频道消息","children":[]},{"level":2,"title":"删除频道角色","slug":"删除频道角色","link":"#删除频道角色","children":[{"level":3,"title":"API 端点","slug":"api-端点-9","link":"#api-端点-9","children":[]},{"level":3,"title":"参数","slug":"参数-7","link":"#参数-7","children":[]},{"level":3,"title":"响应","slug":"响应","link":"#响应","children":[]}]},{"level":2,"title":"设置用户在频道中的角色","slug":"设置用户在频道中的角色","link":"#设置用户在频道中的角色","children":[{"level":3,"title":"API端点","slug":"api端点","link":"#api端点","children":[]},{"level":3,"title":"参数","slug":"参数-8","link":"#参数-8","children":[]}]},{"level":2,"title":"修改频道角色","slug":"修改频道角色","link":"#修改频道角色","children":[{"level":3,"title":"API 端点","slug":"api-端点-10","link":"#api-端点-10","children":[]},{"level":3,"title":"参数","slug":"参数-9","link":"#参数-9","children":[]},{"level":3,"title":"响应","slug":"响应-1","link":"#响应-1","children":[]}]},{"level":2,"title":"创建频道角色","slug":"创建频道角色","link":"#创建频道角色","children":[{"level":3,"title":"API 端点","slug":"api-端点-11","link":"#api-端点-11","children":[]},{"level":3,"title":"参数","slug":"参数-10","link":"#参数-10","children":[]},{"level":3,"title":"响应","slug":"响应-2","link":"#响应-2","children":[]}]}],"git":{"createdTime":1706910607000,"updatedTime":1708324623000,"contributors":[{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":5},{"name":"huan_kong","email":"2564076459@qq.com","commits":1}]},"readingTime":{"minutes":5.41,"words":1623},"filePathRelative":"api/guild.md","localizedDate":"2024年2月2日","excerpt":""}');export{l as data}; diff --git a/assets/index.html-0199c0aa.js b/assets/index.html-0199c0aa.js new file mode 100644 index 00000000..b609b2bb --- /dev/null +++ b/assets/index.html-0199c0aa.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-fffb8e28","path":"/guide/","title":"指南","lang":"zh-CN","frontmatter":{"title":"指南","icon":"lightbulb"},"headers":[{"level":2,"title":"目录","slug":"目录","link":"#目录","children":[]}],"git":{"createdTime":1698464511000,"updatedTime":1698464511000,"contributors":[{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":0.08,"words":23},"filePathRelative":"guide/README.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/index.html-02864eab.js b/assets/index.html-02864eab.js new file mode 100644 index 00000000..852b1fa4 --- /dev/null +++ b/assets/index.html-02864eab.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-c27b6911.js";import{r,o as s,c,a as e,b as n,w as a,d as t}from"./app-edf8b1e7.js";const d={},i=e("h2",{id:"目录",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#目录","aria-hidden":"true"},"#"),t(" 目录")],-1);function _(u,m){const l=r("RouterLink");return s(),c("div",null,[i,e("ul",null,[e("li",null,[n(l,{to:"/event/general-data.html"},{default:a(()=>[t("通用数据")]),_:1})]),e("li",null,[n(l,{to:"/event/message.html"},{default:a(()=>[t("消息事件")]),_:1})]),e("li",null,[n(l,{to:"/event/notice.html"},{default:a(()=>[t("通知事件")]),_:1})]),e("li",null,[n(l,{to:"/event/request.html"},{default:a(()=>[t("请求事件")]),_:1})])])])}const x=o(d,[["render",_],["__file","index.html.vue"]]);export{x as default}; diff --git a/assets/index.html-061944dc.js b/assets/index.html-061944dc.js new file mode 100644 index 00000000..67ed3c4d --- /dev/null +++ b/assets/index.html-061944dc.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-c27b6911.js";import{o as t,c}from"./app-edf8b1e7.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-0feb9f4d.js b/assets/index.html-0feb9f4d.js new file mode 100644 index 00000000..074d52c5 --- /dev/null +++ b/assets/index.html-0feb9f4d.js @@ -0,0 +1 @@ +import{_ as n}from"./plugin-vue_export-helper-c27b6911.js";import{r as s,o as r,c as d,a as e,b as l,w as o,d as t}from"./app-edf8b1e7.js";const c={},i=e("h2",{id:"目录",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#目录","aria-hidden":"true"},"#"),t(" 目录")],-1);function m(_,u){const a=s("RouterLink");return r(),d("div",null,[i,e("ul",null,[e("li",null,[l(a,{to:"/message/format.html"},{default:o(()=>[t("消息格式")]),_:1})]),e("li",null,[l(a,{to:"/message/normal.html"},{default:o(()=>[t("常规消息")]),_:1})]),e("li",null,[l(a,{to:"/message/media.html"},{default:o(()=>[t("媒体消息")]),_:1})]),e("li",null,[l(a,{to:"/message/special.html"},{default:o(()=>[t("特殊消息")]),_:1})]),e("li",null,[l(a,{to:"/message/advanced.html"},{default:o(()=>[t("高级消息")]),_:1})])])])}const p=n(c,[["render",m],["__file","index.html.vue"]]);export{p as default}; diff --git a/assets/index.html-2510ab56.js b/assets/index.html-2510ab56.js new file mode 100644 index 00000000..70db0246 --- /dev/null +++ b/assets/index.html-2510ab56.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-89c429fe","path":"/message/","title":"消息","lang":"zh-CN","frontmatter":{"title":"消息","icon":"comment"},"headers":[{"level":2,"title":"目录","slug":"目录","link":"#目录","children":[]}],"git":{"createdTime":1698464511000,"updatedTime":1698464511000,"contributors":[{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":0.11,"words":32},"filePathRelative":"message/README.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/index.html-258d0d5f.js b/assets/index.html-258d0d5f.js new file mode 100644 index 00000000..8b52f7d8 --- /dev/null +++ b/assets/index.html-258d0d5f.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-7ca4f50e","path":"/event/","title":"事件","lang":"zh-CN","frontmatter":{"title":"事件","icon":"bell"},"headers":[{"level":2,"title":"目录","slug":"目录","link":"#目录","children":[]}],"git":{"createdTime":1698464511000,"updatedTime":1698464511000,"contributors":[{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":0.09,"words":28},"filePathRelative":"event/README.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/index.html-7b2996b5.js b/assets/index.html-7b2996b5.js new file mode 100644 index 00000000..7f226618 --- /dev/null +++ b/assets/index.html-7b2996b5.js @@ -0,0 +1 @@ +import{_ as a}from"./plugin-vue_export-helper-c27b6911.js";import{r as n,o as r,c,a as e,b as s,w as d,d as t}from"./app-edf8b1e7.js";const l={},i=e("h2",{id:"目录",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#目录","aria-hidden":"true"},"#"),t(" 目录")],-1);function _(u,h){const o=n("RouterLink");return r(),c("div",null,[i,e("ul",null,[e("li",null,[s(o,{to:"/advanced/voice.html"},{default:d(()=>[t("语音支持")]),_:1})])])])}const x=a(l,[["render",_],["__file","index.html.vue"]]);export{x as default}; diff --git a/assets/index.html-7ea406c2.js b/assets/index.html-7ea406c2.js new file mode 100644 index 00000000..428f53bd --- /dev/null +++ b/assets/index.html-7ea406c2.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-8daa1a0e","path":"/","title":"首页","lang":"zh-CN","frontmatter":{"title":"首页","home":true,"icon":"home","heroText":"Shamrock","tagline":"基于 Xposed 实现 OneBot 标准的 QQ 机器人框架","heroImage":"https://element.ele.me/static/theme-index-blue.c38b733.png","actions":[{"text":"快速开始","link":"/guide/getting-started","type":"primary","icon":"arrow-right"},{"text":"API 文档","link":"/api/request-response","type":"secondary","icon":"book"}],"features":[{"title":"安全稳定","details":"采用 Xposed Hook 实现,不会影响系统稳定性","icon":"lock"},{"title":"部署简单","details":"无需安装额外的应用,只需安装 Xposed 框架即可","icon":"rocket"},{"title":"适配快速","details":"适配 OneBot 11/12 标准,可快速适配其他 OneBot 标准的机器人框架","icon":"magic"}],"footer":"©2023 Shamrock Team All Rights Reserved","footerHtml":true},"headers":[],"git":{"createdTime":1698464511000,"updatedTime":1698464511000,"contributors":[{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":0.48,"words":145},"filePathRelative":"README.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/index.html-8c5205d0.js b/assets/index.html-8c5205d0.js new file mode 100644 index 00000000..1ecd9566 --- /dev/null +++ b/assets/index.html-8c5205d0.js @@ -0,0 +1 @@ +import{_ as l}from"./plugin-vue_export-helper-c27b6911.js";import{r,o as i,c as d,a as e,b as a,w as n,d as t}from"./app-edf8b1e7.js";const c={},s=e("h2",{id:"目录",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#目录","aria-hidden":"true"},"#"),t(" 目录")],-1);function u(_,f){const o=r("RouterLink");return i(),d("div",null,[s,e("ul",null,[e("li",null,[a(o,{to:"/guide/getting-started.html"},{default:n(()=>[t("快速开始")]),_:1})]),e("li",null,[a(o,{to:"/guide/configuration.html"},{default:n(()=>[t("应用配置")]),_:1})]),e("li",null,[a(o,{to:"/guide/faq.html"},{default:n(()=>[t("常见问题")]),_:1})])])])}const x=l(c,[["render",u],["__file","index.html.vue"]]);export{x as default}; diff --git a/assets/index.html-8d913685.js b/assets/index.html-8d913685.js new file mode 100644 index 00000000..cf63fbf8 --- /dev/null +++ b/assets/index.html-8d913685.js @@ -0,0 +1 @@ +import{_ as i}from"./plugin-vue_export-helper-c27b6911.js";import{r as u,o as n,c as r,a as l,b as a,w as o,d as t}from"./app-edf8b1e7.js";const s={},d=l("h2",{id:"目录",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#目录","aria-hidden":"true"},"#"),t(" 目录")],-1);function _(c,h){const e=u("RouterLink");return n(),r("div",null,[d,l("ul",null,[l("li",null,[a(e,{to:"/api/request-response.html"},{default:o(()=>[t("请求与响应")]),_:1})]),l("li",null,[a(e,{to:"/api/account.html"},{default:o(()=>[t("账号相关")]),_:1})]),l("li",null,[a(e,{to:"/api/contact.html"},{default:o(()=>[t("联系人相关")]),_:1})]),l("li",null,[a(e,{to:"/api/user.html"},{default:o(()=>[t("用户相关")]),_:1})]),l("li",null,[a(e,{to:"/api/message.html"},{default:o(()=>[t("消息相关")]),_:1})]),l("li",null,[a(e,{to:"/api/resources.html"},{default:o(()=>[t("资源相关")]),_:1})]),l("li",null,[a(e,{to:"/api/dispose.html"},{default:o(()=>[t("处理相关")]),_:1})]),l("li",null,[a(e,{to:"/api/group.html"},{default:o(()=>[t("群聊相关")]),_:1})]),l("li",null,[a(e,{to:"/api/guild.html"},{default:o(()=>[t("频道相关")]),_:1})]),l("li",null,[a(e,{to:"/api/file.html"},{default:o(()=>[t("文件相关")]),_:1})]),l("li",null,[a(e,{to:"/api/fav.html"},{default:o(()=>[t("QQ收藏")]),_:1})]),l("li",null,[a(e,{to:"/api/shamrock.html"},{default:o(()=>[t("Shamrock相关")]),_:1})]),l("li",null,[a(e,{to:"/api/other.html"},{default:o(()=>[t("其他接口")]),_:1})])])])}const p=i(s,[["render",_],["__file","index.html.vue"]]);export{p as default}; diff --git a/assets/index.html-983e0a4a.js b/assets/index.html-983e0a4a.js new file mode 100644 index 00000000..bca0ea76 --- /dev/null +++ b/assets/index.html-983e0a4a.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-744497ce","path":"/api/","title":"接口","lang":"zh-CN","frontmatter":{"title":"接口","icon":"laptop-code"},"headers":[{"level":2,"title":"目录","slug":"目录","link":"#目录","children":[]}],"git":{"createdTime":1698464511000,"updatedTime":1706910607000,"contributors":[{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":2},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":0.25,"words":74},"filePathRelative":"api/README.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/index.html-f5c92ed1.js b/assets/index.html-f5c92ed1.js new file mode 100644 index 00000000..9b26ee6b --- /dev/null +++ b/assets/index.html-f5c92ed1.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-638c1d18","path":"/advanced/","title":"进阶","lang":"zh-CN","frontmatter":{"title":"进阶","icon":"gem"},"headers":[{"level":2,"title":"目录","slug":"目录","link":"#目录","children":[]}],"git":{"createdTime":1698464511000,"updatedTime":1698464511000,"contributors":[{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":0.04,"words":12},"filePathRelative":"advanced/README.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/media.html-26e079f3.js b/assets/media.html-26e079f3.js new file mode 100644 index 00000000..ae79c089 --- /dev/null +++ b/assets/media.html-26e079f3.js @@ -0,0 +1,22 @@ +import{_ as c}from"./plugin-vue_export-helper-c27b6911.js";import{r as l,o as h,c as u,b as n,w as a,a as t,d as e,e as r}from"./app-edf8b1e7.js";const p={},v=r('

提示

对于下述消息类型, 涉及 文件地址 的参数规则如下:

  • 可以是本地文件路径, 以 file:// 开头。
  • 可以是 http(s) 链接, 以 http://https:// 开头。
  • 可以是 base64 编码的数据, 但是必须以 base64:// 开头。

图片

参数

字段类型必填说明
filestring图片文件地址
urlstring图片链接地址
typestringx图片类型, 分为show, flash, original
subTypeint32x图片子类型
',4),b=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:image,file=file:///sdcard/Pictures/shamrock.png] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),m=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),e(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token string"},'"image"'),t("span",{class:"token punctuation"},","),e(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token punctuation"},"{"),e(` + `),t("span",{class:"token property"},'"file"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token string"},'"file:///sdcard/Pictures/shamrock.png"'),e(` + `),t("span",{class:"token punctuation"},"}"),e(` +`),t("span",{class:"token punctuation"},"}"),e(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),k=r('

图片子类型

value说明
0正常图片
1表情包, 在客户端会被分类到表情包图片并缩放显示
2热图
3斗图
4智图?
7贴图
8自拍
9贴图广告?
10有待测试
13热搜图

语音

参数

字段类型必填说明
filestring×语音文件地址
urlstring语音链接地址
magicbool×是否为魔法语音
',5),g=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:record,file=file:///sdcard/Music/shamrock.mp3] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),_=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),e(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token string"},'"record"'),t("span",{class:"token punctuation"},","),e(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token punctuation"},"{"),e(` + `),t("span",{class:"token property"},'"file"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token string"},'"file:///sdcard/Music/shamrock.mp3"'),e(` + `),t("span",{class:"token punctuation"},"}"),e(` +`),t("span",{class:"token punctuation"},"}"),e(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),f={class:"hint-container warning"},x=t("p",{class:"hint-container-title"},"注意",-1),y=r('

视频

参数

字段类型必填说明
filestring×视频文件地址
',3),A=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:video,file=file:///sdcard/Movies/shamrock.mp4] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),C=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),e(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token string"},'"video"'),t("span",{class:"token punctuation"},","),e(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token punctuation"},"{"),e(` + `),t("span",{class:"token property"},'"file"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token string"},'"file:///sdcard/Movies/shamrock.mp4"'),e(` + `),t("span",{class:"token punctuation"},"}"),e(` +`),t("span",{class:"token punctuation"},"}"),e(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1);function j(Q,w){const i=l("Tabs"),o=l("RouterLink");return h(),u("div",null,[v,n(i,{id:"134",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:a(({value:s,isActive:d})=>[e("CQ 码")]),title1:a(({value:s,isActive:d})=>[e("消息段")]),tab0:a(({value:s,isActive:d})=>[b]),tab1:a(({value:s,isActive:d})=>[m]),_:1}),k,n(i,{id:"331",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:a(({value:s,isActive:d})=>[e("CQ 码")]),title1:a(({value:s,isActive:d})=>[e("消息段")]),tab0:a(({value:s,isActive:d})=>[g]),tab1:a(({value:s,isActive:d})=>[_]),_:1}),t("div",f,[x,t("p",null,[e("发送语音消息需要安装语音引擎,可以在 "),n(o,{to:"/advanced/voice.html"},{default:a(()=>[e("这里")]),_:1}),e(" 查看。")])]),y,n(i,{id:"396",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:a(({value:s,isActive:d})=>[e("CQ 码")]),title1:a(({value:s,isActive:d})=>[e("消息段")]),tab0:a(({value:s,isActive:d})=>[A]),tab1:a(({value:s,isActive:d})=>[C]),_:1})])}const T=c(p,[["render",j],["__file","media.html.vue"]]);export{T as default}; diff --git a/assets/media.html-5b7447ab.js b/assets/media.html-5b7447ab.js new file mode 100644 index 00000000..a3786074 --- /dev/null +++ b/assets/media.html-5b7447ab.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-30c0fd36","path":"/message/media.html","title":"媒体消息","lang":"zh-CN","frontmatter":{"title":"媒体消息","icon":"compact-disc"},"headers":[{"level":2,"title":"图片","slug":"图片","link":"#图片","children":[{"level":3,"title":"参数","slug":"参数","link":"#参数","children":[]},{"level":3,"title":"图片子类型","slug":"图片子类型","link":"#图片子类型","children":[]}]},{"level":2,"title":"语音","slug":"语音","link":"#语音","children":[{"level":3,"title":"参数","slug":"参数-1","link":"#参数-1","children":[]}]},{"level":2,"title":"视频","slug":"视频","link":"#视频","children":[{"level":3,"title":"参数","slug":"参数-2","link":"#参数-2","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1708324623000,"contributors":[{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":3},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":1.18,"words":354},"filePathRelative":"message/media.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/message.html-01bc5fb8.js b/assets/message.html-01bc5fb8.js new file mode 100644 index 00000000..9f25c644 --- /dev/null +++ b/assets/message.html-01bc5fb8.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-15298000","path":"/api/message.html","title":"消息相关","lang":"zh-CN","frontmatter":{"title":"消息相关","icon":"comment"},"headers":[{"level":2,"title":"发送私聊消息","slug":"发送私聊消息","link":"#发送私聊消息","children":[{"level":3,"title":"API 端点","slug":"api-端点","link":"#api-端点","children":[]},{"level":3,"title":"参数","slug":"参数","link":"#参数","children":[]},{"level":3,"title":"响应","slug":"响应","link":"#响应","children":[]}]},{"level":2,"title":"发送群聊消息","slug":"发送群聊消息","link":"#发送群聊消息","children":[{"level":3,"title":"API 端点","slug":"api-端点-1","link":"#api-端点-1","children":[]},{"level":3,"title":"参数","slug":"参数-1","link":"#参数-1","children":[]},{"level":3,"title":"响应","slug":"响应-1","link":"#响应-1","children":[]}]},{"level":2,"title":"发送消息","slug":"发送消息","link":"#发送消息","children":[{"level":3,"title":"API 端点","slug":"api-端点-2","link":"#api-端点-2","children":[]},{"level":3,"title":"参数","slug":"参数-2","link":"#参数-2","children":[]},{"level":3,"title":"响应","slug":"响应-2","link":"#响应-2","children":[]}]},{"level":2,"title":"获取消息","slug":"获取消息","link":"#获取消息","children":[{"level":3,"title":"API 端点","slug":"api-端点-3","link":"#api-端点-3","children":[]},{"level":3,"title":"参数","slug":"参数-3","link":"#参数-3","children":[]},{"level":3,"title":"响应","slug":"响应-3","link":"#响应-3","children":[]}]},{"level":2,"title":"撤回消息","slug":"撤回消息","link":"#撤回消息","children":[{"level":3,"title":"API 端点","slug":"api-端点-4","link":"#api-端点-4","children":[]},{"level":3,"title":"参数","slug":"参数-4","link":"#参数-4","children":[]},{"level":3,"title":"响应","slug":"响应-4","link":"#响应-4","children":[]}]},{"level":2,"title":"获取历史消息","slug":"获取历史消息","link":"#获取历史消息","children":[{"level":3,"title":"API 端点","slug":"api-端点-5","link":"#api-端点-5","children":[]},{"level":3,"title":"参数","slug":"参数-5","link":"#参数-5","children":[]},{"level":3,"title":"响应","slug":"响应-5","link":"#响应-5","children":[]}]},{"level":2,"title":"获取群聊历史消息","slug":"获取群聊历史消息","link":"#获取群聊历史消息","children":[{"level":3,"title":"API 端点","slug":"api-端点-6","link":"#api-端点-6","children":[]},{"level":3,"title":"参数","slug":"参数-6","link":"#参数-6","children":[]},{"level":3,"title":"响应","slug":"响应-6","link":"#响应-6","children":[]}]},{"level":2,"title":"清除本地缓存消息","slug":"清除本地缓存消息","link":"#清除本地缓存消息","children":[{"level":3,"title":"API 端点","slug":"api-端点-7","link":"#api-端点-7","children":[]},{"level":3,"title":"参数","slug":"参数-7","link":"#参数-7","children":[]},{"level":3,"title":"响应","slug":"响应-7","link":"#响应-7","children":[]}]},{"level":2,"title":"获取合并转发消息内容","slug":"获取合并转发消息内容","link":"#获取合并转发消息内容","children":[{"level":3,"title":"API 端点","slug":"api-端点-8","link":"#api-端点-8","children":[]},{"level":3,"title":"参数","slug":"参数-8","link":"#参数-8","children":[]},{"level":3,"title":"响应","slug":"响应-8","link":"#响应-8","children":[]}]},{"level":2,"title":"发送群聊合并转发","slug":"发送群聊合并转发","link":"#发送群聊合并转发","children":[{"level":3,"title":"API 端点","slug":"api-端点-9","link":"#api-端点-9","children":[]},{"level":3,"title":"参数","slug":"参数-9","link":"#参数-9","children":[]},{"level":3,"title":"响应","slug":"响应-9","link":"#响应-9","children":[]},{"level":3,"title":"示例","slug":"示例","link":"#示例","children":[]}]},{"level":2,"title":"发送私聊合并转发","slug":"发送私聊合并转发","link":"#发送私聊合并转发","children":[{"level":3,"title":"API 端点","slug":"api-端点-10","link":"#api-端点-10","children":[]},{"level":3,"title":"参数","slug":"参数-10","link":"#参数-10","children":[]},{"level":3,"title":"响应","slug":"响应-10","link":"#响应-10","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1708324623000,"contributors":[{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":6},{"name":"Sheng Fan","email":"fredtools999@gmail.com","commits":2},{"name":"ikechan8370","email":"geyinchibuaa@gmail.com","commits":2},{"name":"Miuzarte","email":"982809597@qq.com","commits":1},{"name":"aleck099","email":"aleck099@outlook.com","commits":1},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":4.48,"words":1345},"filePathRelative":"api/message.md","localizedDate":"2023年10月28日","excerpt":""}');export{l as data}; diff --git a/assets/message.html-084f1447.js b/assets/message.html-084f1447.js new file mode 100644 index 00000000..a629fa43 --- /dev/null +++ b/assets/message.html-084f1447.js @@ -0,0 +1 @@ +import{_ as r}from"./plugin-vue_export-helper-c27b6911.js";import{r as a,o,c as h,a as d,d as t,b as s,w as n,e as i}from"./app-edf8b1e7.js";const c={},l={class:"hint-container tip"},_=d("p",{class:"hint-container-title"},"提示",-1),p=d("br",null,null,-1),b=i('

消息事件

字段类型说明
message_typestring消息类型
sub_typestring消息子类型
message_idint64消息 ID
user_idint64发送者 QQ 号(在频道中,则为发送者的Tiny ID)
tiny_idint64发送者的Tiny ID(频道)
messageobject消息内容
raw_messagestringCQ 码格式消息
fontint32字体
senderobject发送人信息
group_idint64群号
target_idint64消息目标(私聊)
temp_sourceint32临时聊天来源(私聊)
peer_idint64消息接收者,群聊是群号,私聊时是目标QQ

私聊消息

message_typeprivate 时,表示收到了私聊消息。

群消息

message_typegroup 时,表示收到了群消息。

私聊消息

message_typeless 时,表示收到了群消息。

频道消息

message_typeguild 时,表示收到了群消息。

快速回复

Shamrock 提供了快速回复的功能,可以在收到消息时快速回复消息。

字段类型说明
replystring回复内容
auto_escapebool是否自动转义
auto_replybool是否自动回复到消息

快速操作

Shamrock 提供了快速操作的功能,可以在收到消息时快速执行操作。

字段类型说明
replystring回复内容
auto_escapebool是否自动转义
at_senderbool是否 @发送者
deletebool是否撤回消息
kickbool是否踢出发送者
banbool是否禁言发送者
ban_durationint64禁言时长(秒)
',16);function u(m,g){const e=a("RouterLink");return o(),h("div",null,[d("div",l,[_,d("p",null,[t("所有上报事件都包含通用数据,详见 "),s(e,{to:"/event/general-data.html"},{default:n(()=>[t("通用数据")]),_:1}),t("。"),p,t(" 包含在通用数据中的字段不会在下面的表格中重复出现。")])]),b])}const x=r(c,[["render",u],["__file","message.html.vue"]]);export{x as default}; diff --git a/assets/message.html-0ca9d8ee.js b/assets/message.html-0ca9d8ee.js new file mode 100644 index 00000000..75896f1b --- /dev/null +++ b/assets/message.html-0ca9d8ee.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-70b00580","path":"/event/message.html","title":"消息事件","lang":"zh-CN","frontmatter":{"title":"消息事件","icon":"comment"},"headers":[{"level":2,"title":"消息事件","slug":"消息事件","link":"#消息事件","children":[]},{"level":2,"title":"私聊消息","slug":"私聊消息","link":"#私聊消息","children":[]},{"level":2,"title":"群消息","slug":"群消息","link":"#群消息","children":[]},{"level":2,"title":"私聊消息","slug":"私聊消息-1","link":"#私聊消息-1","children":[]},{"level":2,"title":"频道消息","slug":"频道消息","link":"#频道消息","children":[]},{"level":2,"title":"快速回复","slug":"快速回复","link":"#快速回复","children":[]},{"level":2,"title":"快速操作","slug":"快速操作","link":"#快速操作","children":[]}],"git":{"createdTime":1698464511000,"updatedTime":1708388381000,"contributors":[{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":2},{"name":"Kamisato-Ayaka-233","email":"2627706725@qq.com","commits":1},{"name":"aleck099","email":"aleck099@outlook.com","commits":1},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":1.32,"words":396},"filePathRelative":"event/message.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/message.html-921e9a24.js b/assets/message.html-921e9a24.js new file mode 100644 index 00000000..5a66331e --- /dev/null +++ b/assets/message.html-921e9a24.js @@ -0,0 +1,90 @@ +import{_ as p}from"./plugin-vue_export-helper-c27b6911.js";import{r as e,o as i,c,a,d as t,b as n,w as d,e as r}from"./app-edf8b1e7.js";const l={},u={class:"hint-container warning"},h=a("p",{class:"hint-container-title"},"注意",-1),b=r('

发送私聊消息

该接口用于发送私聊消息。

API 端点

/send_private_msg

参数

字段类型必须说明
user_idint64QQ 号
messagestring / object / array消息内容
auto_escapebool是否解析 CQ 码(true为不解析)。
recall_durationint64自动撤回时间间隔(毫秒)
',6),k=r(`

响应

字段类型说明
message_idint32消息 ID
timeint64时间戳

发送群聊消息

该接口用于发送群聊消息。

API 端点

/send_group_msg

参数

字段类型必须说明
group_idint64群号
messagestring / object / array消息内容
auto_escapebool是否解析 CQ 码(true为不解析)。
recall_durationint64自动撤回时间间隔(毫秒)

message格式同/send_private_msg

响应

字段类型说明
message_idint32消息 ID
timeint64时间戳

发送消息

该接口用于发送消息。

API 端点

/send_msg

参数

字段类型必须说明
message_typestring消息类型
user_idint64QQ 号
group_idint64群号
discuss_idint64讨论组号
messagestring / object / array消息内容
auto_escapebool是否解析 CQ 码(true为不解析)。
recall_durationint64自动撤回时间间隔(毫秒)

message格式同/send_private_msg

注意

当前发送消息的 API 暂不支持发送讨论组消息。

响应

字段类型说明
message_idint32消息 ID
timeint64时间戳

获取消息

API 端点

/get_msg

参数

字段类型必须说明
message_idint32消息 ID

响应

字段类型说明
timeint64时间戳
message_typestring消息类型
message_idint32消息 ID
real_idint32真实 ID
senderObject<Sender>发送人信息
messageobject消息体
group_idint64群号
target_idint64消息目标(私聊)
peer_idint64消息接收者,群聊是群号,私聊时是目标QQ

peer_id是其他同类框架所表达的target_id!

Sender

字段类型说明
user_idint64QQ 号
nicknamestring昵称
sexstring性别
ageint32年龄
uidstringUID

撤回消息

该接口用于撤回消息。

API 端点

/delete_msg

参数

字段类型必须说明
message_idint32消息 ID

响应

该接口将返回处理结果,其中 data 字段无数据。。

获取历史消息

API 端点

/get_history_msg

参数

字段类型必须说明
message_typestring消息 类型
user_idint64私聊QQ
group_idint64群号
countint32获取的消息数量(默认为20)
message_seqint32起始消息的message_id(默认为0,表示从最后一条发言往前)

响应

字段类型说明
messagesMessage[]消息集

Message

字段类型说明
timeint64时间戳
message_typestring消息类型
message_idint32消息 ID
real_idint32真实 ID
senderObject<Sender>发送人信息
messageobject消息体
group_idint64群号
target_idint64消息目标(私聊)
peer_idint64消息接收者,群聊是群号,私聊时是目标QQ

peer_id是其他同类框架所表达的target_id!

获取群聊历史消息

API 端点

/get_group_msg_history

参数

字段类型必须说明
group_idint64群号
countint32获取的消息数量(默认为20)
message_seqint32起始消息的message_id(默认为0,表示从最后一条发言往前)

响应

字段类型说明
messagesMessage[]消息集

清除本地缓存消息

该接口用于清除本地消息缓存。

API 端点

/clear_msgs

参数

字段类型必须说明
message_typestring消息 类型
user_idint64私聊QQ
group_idint64群号

响应

该接口将返回处理结果,其中 data 字段无数据。

获取合并转发消息内容

获取合并转发内容

API 端点

/get_forward_msg

参数

字段类型必须说明
idstring消息资源ID(卡片消息里面的resId)

由于QQ内部错误,该接口可能导致闪退等问题的出现!一般是闪退一次后再次重新启动便不再闪退,但是可能无法获取合并转发的内容!

响应

{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "messages": [
+      {
+        "time": 1699375697,
+        "message_type": "private",
+        "message_id": 123456,
+        "real_id": 0,
+        "sender": {
+          "user_id": 114514,
+          "nickname": "伏秋洛~",
+          "sex": "unknown",
+          "age": 0,
+          "uid": "u_xxxx"
+        },
+        "message": [
+          {
+            "type": "text",
+            "data": {
+              "text": "aaaaaaaaaa"
+            }
+          }
+        ],
+        "peer_id": 114514,
+        "target_id": 114514
+      }
+    ]
+  },
+  "echo": ""
+}
+

发送群聊合并转发

发送群聊合并转发。

API 端点

/send_group_forward_msg

参数

字段类型必须说明
group_idint64发送到的目标群号
messagesfoward message[]合并转发消息集

响应

由于QQ限制,该接口的响应结果暂不具备意义,其中:message_id不匹配、forward_id为空。

字段类型说明
message_idint32消息 ID
forward_idint32转发 ID
{
+  "status": "ok",
+  "retcode": 0,
+  "data": {
+    "message_id": 251425915,
+    "forward_id": ""
+  }
+}
+

示例

直接引用消息的合并转发,id为消息id

[
+  {
+    "type": "node",
+    "data": {
+      "id": "123"
+    }
+  },
+  {
+    "type": "node",
+    "data": {
+      "id": "456"
+    }
+  }
+]
+

注意

Shamrock 不同于 go-cqhttp ,消息节点无法自定义发送者QQ号(设置头像)与昵称。

自定义消息合并转发:

[
+  {
+    "type": "node",
+    "data": {
+      "content": [
+        {
+          "type": "text",
+          "data": {
+            "text": "测试消息1"
+          }
+        }
+      ]
+    }
+  },
+  {
+    "type": "node",
+    "data": {
+      "content": "[CQ:image,file=xxxxx]测试消息2"
+    }
+  }
+]
+

引用自定义混合合并转发:

[
+  {
+    "type": "node",
+    "data": {
+      "content": "我是自定义消息"
+    }
+  },
+  {
+    "type": "node",
+    "data": {
+      "id": "123"
+    }
+  }
+]
+

发送私聊合并转发

发送私聊合并转发。

API 端点

/send_private_forward_msg

参数

字段类型必须说明
user_idint64发送到的目标QQ
messagesfoward message[]合并转发消息集

响应

/send_private_forward_msg

`,99);function v(m,q){const o=e("Badge"),s=e("RouterLink");return i(),c("div",null,[a("div",u,[h,a("p",null,[t("对于 Shamrock 尚未实现的 API,会在标题添加标记 "),n(o,{text:"未实现",type:"danger",vertical:"baseline"})])]),b,a("p",null,[t("message格式可为"),n(s,{to:"/message/format.html#%E6%B6%88%E6%81%AF%E6%AE%B5"},{default:d(()=>[t("消息段")]),_:1}),t("object,或"),n(s,{to:"/message/format.html#%E7%BB%84%E5%90%88"},{default:d(()=>[t("消息段组合")]),_:1}),t("array")]),k])}const y=p(l,[["render",v],["__file","message.html.vue"]]);export{y as default}; diff --git a/assets/normal.html-a29eb19d.js b/assets/normal.html-a29eb19d.js new file mode 100644 index 00000000..8ca73f7c --- /dev/null +++ b/assets/normal.html-a29eb19d.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-28fa56b1","path":"/message/normal.html","title":"常规消息","lang":"zh-CN","frontmatter":{"title":"常规消息","icon":"comment-dots"},"headers":[{"level":2,"title":"AT 某人","slug":"at-某人","link":"#at-某人","children":[{"level":3,"title":"参数","slug":"参数","link":"#参数","children":[]}]},{"level":2,"title":"表情","slug":"表情","link":"#表情","children":[{"level":3,"title":"参数","slug":"参数-1","link":"#参数-1","children":[]}]},{"level":2,"title":"弹射表情","slug":"弹射表情","link":"#弹射表情","children":[{"level":3,"title":"参数","slug":"参数-2","link":"#参数-2","children":[]}]},{"level":2,"title":"回复","slug":"回复","link":"#回复","children":[{"level":3,"title":"参数","slug":"参数-3","link":"#参数-3","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1708324623000,"contributors":[{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":2},{"name":"aleck099","email":"aleck099@outlook.com","commits":1},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":0.97,"words":290},"filePathRelative":"message/normal.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/normal.html-f51d1b4f.js b/assets/normal.html-f51d1b4f.js new file mode 100644 index 00000000..370bb906 --- /dev/null +++ b/assets/normal.html-f51d1b4f.js @@ -0,0 +1,31 @@ +import{_ as r}from"./plugin-vue_export-helper-c27b6911.js";import{r as c,o as u,c as p,b as i,w as a,a as t,d as e,e as o}from"./app-edf8b1e7.js";const h={},b=o('

AT 某人

参数

提示

qq 字段为 "0""all" 时, 表示 AT 全体成员。

字段类型必填说明
qqstringQQ 号

注意

将在未来实现 qq 字段为 onlineadmin 时的功能。

',5),v=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:at,qq=123456] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),m=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),e(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token string"},'"at"'),t("span",{class:"token punctuation"},","),e(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token punctuation"},"{"),e(` + `),t("span",{class:"token property"},'"qq"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token string"},'"123456"'),e(` + `),t("span",{class:"token punctuation"},"}"),e(` +`),t("span",{class:"token punctuation"},"}"),e(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),k=o('

表情

参数

字段类型必填说明
idint表情 ID
bigboolX是否是大表情
',3),_={class:"hint-container tip"},g=t("p",{class:"hint-container-title"},"提示",-1),x={href:"https://github.com/richardchien/coolq-http-api/wiki/%E8%A1%A8%E6%83%85-CQ-%E7%A0%81-ID-%E8%A1%A8",target:"_blank",rel:"noopener noreferrer"},y=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:face,id=351,big=true] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),A=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),e(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token string"},'"face"'),t("span",{class:"token punctuation"},","),e(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token punctuation"},"{"),e(` + `),t("span",{class:"token property"},'"id"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token number"},"351"),t("span",{class:"token punctuation"},","),e(` + `),t("span",{class:"token property"},'"big"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token boolean"},"true"),e(` + `),t("span",{class:"token punctuation"},"}"),e(` +`),t("span",{class:"token punctuation"},"}"),e(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),f=o('

弹射表情

参数

字段类型必填说明
idint表情 ID
countint数量
',3),q={class:"hint-container tip"},C=t("p",{class:"hint-container-title"},"提示",-1),Q={href:"https://github.com/richardchien/coolq-http-api/wiki/%E8%A1%A8%E6%83%85-CQ-%E7%A0%81-ID-%E8%A1%A8",target:"_blank",rel:"noopener noreferrer"},j=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:bubble_face,id=351,count=114514] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),E=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),e(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token string"},'"bubble_face"'),t("span",{class:"token punctuation"},","),e(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token punctuation"},"{"),e(` + `),t("span",{class:"token property"},'"id"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token number"},"351"),t("span",{class:"token punctuation"},","),e(` + `),t("span",{class:"token property"},'"count"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token number"},"114514"),e(` + `),t("span",{class:"token punctuation"},"}"),e(` +`),t("span",{class:"token punctuation"},"}"),e(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),I=o('

回复

参数

字段类型必填说明
idint消息 ID
',3),D=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:reply,id=1] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),w=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),e(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token string"},'"reply"'),t("span",{class:"token punctuation"},","),e(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token punctuation"},"{"),e(` + `),t("span",{class:"token property"},'"id"'),t("span",{class:"token operator"},":"),e(),t("span",{class:"token number"},"1"),e(` + `),t("span",{class:"token punctuation"},"}"),e(` +`),t("span",{class:"token punctuation"},"}"),e(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1);function T(N,V){const d=c("Tabs"),l=c("ExternalLinkIcon");return u(),p("div",null,[b,i(d,{id:"62",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:a(({value:n,isActive:s})=>[e("CQ 码")]),title1:a(({value:n,isActive:s})=>[e("消息段")]),tab0:a(({value:n,isActive:s})=>[v]),tab1:a(({value:n,isActive:s})=>[m]),_:1}),k,t("div",_,[g,t("p",null,[e("表情 ID 可以在 "),t("a",x,[e("这里"),i(l)]),e(" 查看。")])]),i(d,{id:"147",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:a(({value:n,isActive:s})=>[e("CQ 码")]),title1:a(({value:n,isActive:s})=>[e("消息段")]),tab0:a(({value:n,isActive:s})=>[y]),tab1:a(({value:n,isActive:s})=>[A]),_:1}),f,t("div",q,[C,t("p",null,[e("表情 ID 可以在 "),t("a",Q,[e("这里"),i(l)]),e(" 查看。")])]),i(d,{id:"232",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:a(({value:n,isActive:s})=>[e("CQ 码")]),title1:a(({value:n,isActive:s})=>[e("消息段")]),tab0:a(({value:n,isActive:s})=>[j]),tab1:a(({value:n,isActive:s})=>[E]),_:1}),I,i(d,{id:"292",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:a(({value:n,isActive:s})=>[e("CQ 码")]),title1:a(({value:n,isActive:s})=>[e("消息段")]),tab0:a(({value:n,isActive:s})=>[D]),tab1:a(({value:n,isActive:s})=>[w]),_:1})])}const S=r(h,[["render",T],["__file","normal.html.vue"]]);export{S as default}; diff --git a/assets/notice.html-5519df6e.js b/assets/notice.html-5519df6e.js new file mode 100644 index 00000000..eaea7795 --- /dev/null +++ b/assets/notice.html-5519df6e.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-386d2733","path":"/event/notice.html","title":"通知事件","lang":"zh-CN","frontmatter":{"title":"通知事件","icon":"bell"},"headers":[{"level":2,"title":"私聊消息撤回","slug":"私聊消息撤回","link":"#私聊消息撤回","children":[]},{"level":2,"title":"群聊消息撤回","slug":"群聊消息撤回","link":"#群聊消息撤回","children":[]},{"level":2,"title":"群组成员增加","slug":"群组成员增加","link":"#群组成员增加","children":[]},{"level":2,"title":"群组成员减少","slug":"群组成员减少","link":"#群组成员减少","children":[]},{"level":2,"title":"群组管理员变动","slug":"群组管理员变动","link":"#群组管理员变动","children":[]},{"level":2,"title":"群文件上传","slug":"群文件上传","link":"#群文件上传","children":[{"level":3,"title":"群文件信息结构体","slug":"群文件信息结构体","link":"#群文件信息结构体","children":[]}]},{"level":2,"title":"私聊文件上传","slug":"私聊文件上传","link":"#私聊文件上传","children":[{"level":3,"title":"私聊文件信息结构体","slug":"私聊文件信息结构体","link":"#私聊文件信息结构体","children":[]}]},{"level":2,"title":"群禁言","slug":"群禁言","link":"#群禁言","children":[]},{"level":2,"title":"群成员名片变动","slug":"群成员名片变动","link":"#群成员名片变动","children":[]},{"level":2,"title":"好友添加","slug":"好友添加","link":"#好友添加","children":[]},{"level":2,"title":"收到离线文件","slug":"收到离线文件","link":"#收到离线文件","children":[{"level":3,"title":"文件信息","slug":"文件信息","link":"#文件信息","children":[]}]},{"level":2,"title":"精华消息","slug":"精华消息","link":"#精华消息","children":[]},{"level":2,"title":"客户端状态","slug":"客户端状态","link":"#客户端状态","children":[]},{"level":2,"title":"头像戳一戳","slug":"头像戳一戳","link":"#头像戳一戳","children":[{"level":3,"title":"PokeDetail","slug":"pokedetail","link":"#pokedetail","children":[]}]},{"level":2,"title":"群红包运气王","slug":"群红包运气王","link":"#群红包运气王","children":[]},{"level":2,"title":"群荣誉变更","slug":"群荣誉变更","link":"#群荣誉变更","children":[]},{"level":2,"title":"群头衔变更","slug":"群头衔变更","link":"#群头衔变更","children":[]}],"git":{"createdTime":1698464511000,"updatedTime":1708324623000,"contributors":[{"name":"ikechan8370","email":"geyinchibuaa@gmail.com","commits":3},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"kagg886","email":"iveour@163.com","commits":1},{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":3.87,"words":1161},"filePathRelative":"event/notice.md","localizedDate":"2023年10月28日","excerpt":""}');export{l as data}; diff --git a/assets/notice.html-9aae265d.js b/assets/notice.html-9aae265d.js new file mode 100644 index 00000000..818b7104 --- /dev/null +++ b/assets/notice.html-9aae265d.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-c27b6911.js";import{r as h,o as n,c,a as t,d,b as e,w as s,e as a}from"./app-edf8b1e7.js";const _={},b={class:"hint-container warning"},l=t("p",{class:"hint-container-title"},"注意",-1),p={class:"hint-container tip"},u=t("p",{class:"hint-container-title"},"提示",-1),y=t("br",null,null,-1),g=a('

私聊消息撤回

notice_typefriend_recall 时,表示收到了私聊消息撤回事件。

字段类型说明
user_idint64好友 QQ 号
operator_idint64操作者 QQ 号
message_idint64消息 ID

群聊消息撤回

notice_typegroup_recall 时,表示收到了群聊消息撤回事件。

字段类型说明
group_idint64群号
user_idint64发送者 QQ 号
operator_idint64操作者 QQ 号
message_idint64消息 ID

群组成员增加

notice_typegroup_increase 时,表示收到了群组成员增加事件。

字段类型说明
group_idint64群号
user_idint64新增成员 QQ
operator_idint64操作者 QQ 号
operator_uidstring操作者 UID
user_uidstring新成员 UID
sub_typestring子类型(approve/invite)

群组成员减少

notice_typegroup_decrease 时,表示收到了群组成员减少事件。

字段类型说明
group_idint64群号
user_idint64减少成员 QQ
operator_idint64操作者 QQ 号
operator_uidstring操作者 UID
user_uidstring新成员 UID
sub_typestring子类型(leave/kick/kick_me)

群组管理员变动

notice_typegroup_admin 时,表示收到了群组管理员变动事件。

字段类型说明
group_idint64群号
user_idint64变动成员 QQ
sub_typestring子类型(set/unset)

群文件上传

notice_typegroup_upload 时,表示收到了群文件上传事件。

字段类型说明
group_idint64群号
user_idint64上传者 QQ
fileobject群文件信息

群文件信息结构体

字段名数据类型说明
idstring文件 ID
namestring文件名
sizeint64文件大小 ( 字节数 )
busidint64busid ( 目前不清楚有什么作用 )
urlstring下载地址

私聊文件上传

notice_typeprivate_upload 时,表示收到了群文件上传事件。

字段类型说明
user_idint64上传者 QQ
senderint64上传者 QQ
private_fileobject私聊文件信息

私聊文件信息结构体

字段名数据类型说明
idstring文件 ID
namestring文件名
sizeint64文件大小 ( 字节数 )
urlstring下载地址
sub_idstring子文件ID
exppireint64文件过期时间

群禁言

notice_typegroup_ban 时,表示收到了群禁言事件。

字段类型说明
group_idint64群号
user_idint64被禁言成员 QQ
operator_idint64操作者 QQ
durationint64禁言时长(秒)
sub_typestring子类型(ban/lift_ban)

群成员名片变动

notice_typegroup_card 时,表示收到了群成员名片变动事件。

字段类型说明
group_idint64群号
user_idint64变动成员 QQ
card_newstring新名片
card_oldstring旧名片
',31),f={id:"好友添加",tabindex:"-1"},Q=t("a",{class:"header-anchor",href:"#好友添加","aria-hidden":"true"},"#",-1),x=a("

notice_typefriend_add 时,表示收到了好友添加事件。

字段类型说明
user_idint64新添加好友 QQ 号
",2),m={id:"收到离线文件",tabindex:"-1"},k=t("a",{class:"header-anchor",href:"#收到离线文件","aria-hidden":"true"},"#",-1),D=a('

notice_typeoffline_file 时,表示收到了离线文件事件。

字段类型说明
user_idint64发送者 QQ
fileobject文件信息

文件信息

字段类型说明
namestring文件名
sizeint64文件大小
urlstring下载链接

精华消息

notice_typeessence 时,表示收到了精华消息事件。

字段类型说明
group_idint64群号
sender_idint64发送者 QQ
operator_idint64操作者 QQ
message_idint64消息 ID
sub_typestring子类型(add/delete)
',7),v={id:"客户端状态",tabindex:"-1"},I=t("a",{class:"header-anchor",href:"#客户端状态","aria-hidden":"true"},"#",-1),B=a('

notice_typeclient_status 时,表示收到了客户端状态事件。

字段类型说明
clientobject客户端信息
onlinebool在线状态

头像戳一戳

notice_typenotifysub_typepoke 时,表示收到了头像戳一戳事件。

字段类型说明
user_idint64发送者 QQ
sender_idint64好友 QQ (仅私聊)
group_idint64群号(仅群聊)
target_idint64被戳者 QQ
poke_detailPokeDetail戳一戳的详细信息

PokeDetail

字段类型说明
actionstring操作名称,如“戳了戳”
suffixstring后缀,未设置则未空
action_img_urlstring操作图标
',7),j={id:"群红包运气王",tabindex:"-1"},w=t("a",{class:"header-anchor",href:"#群红包运气王","aria-hidden":"true"},"#",-1),N=a("

notice_typenotifysub_typelucky_king 时,表示收到了群红包运气王事件。

字段类型说明
group_idint64群号
user_idint64发送者
target_idint64运气王
",2),U={id:"群荣誉变更",tabindex:"-1"},V=t("a",{class:"header-anchor",href:"#群荣誉变更","aria-hidden":"true"},"#",-1),z=a('

notice_typenotifysub_typehonor 时,表示收到了群荣誉变更事件。

字段类型说明
group_idint64群号
user_idint64操作者
honor_typestring荣誉类型

群头衔变更

notice_typenotifysub_typetitle 时,表示收到了群头衔变更事件。

字段类型说明
group_idint64群号
user_idint64操作者
titlestring获得头衔
',5);function C(L,P){const r=h("Badge"),i=h("RouterLink");return n(),c("div",null,[t("div",b,[l,t("p",null,[d("对于 Shamrock 未实现的事件,会在标题添加标记 "),e(r,{text:"未实现",type:"danger",vertical:"baseline"})])]),t("div",p,[u,t("p",null,[d("所有上报事件都包含通用数据,详见 "),e(i,{to:"/general-data.html"},{default:s(()=>[d("通用数据")]),_:1}),d("。"),y,d(" 包含在通用数据中的字段不会在下面的表格中重复出现。")])]),g,t("h2",f,[Q,d(" 好友添加 "),e(r,{text:"未实现",type:"danger"})]),x,t("h2",m,[k,d(" 收到离线文件 "),e(r,{text:"未实现",type:"danger"})]),D,t("h2",v,[I,d(" 客户端状态 "),e(r,{text:"未实现",type:"danger"})]),B,t("h2",j,[w,d(" 群红包运气王 "),e(r,{text:"未实现",type:"danger"})]),N,t("h2",U,[V,d(" 群荣誉变更 "),e(r,{text:"未实现",type:"danger"})]),z])}const E=o(_,[["render",C],["__file","notice.html.vue"]]);export{E as default}; diff --git a/assets/other.html-32d2e4de.js b/assets/other.html-32d2e4de.js new file mode 100644 index 00000000..ccd56fda --- /dev/null +++ b/assets/other.html-32d2e4de.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-d1b14bd2","path":"/api/other.html","title":"其他接口","lang":"zh-CN","frontmatter":{"title":"其他接口","icon":"feather-alt"},"headers":[{"level":2,"title":"获取城市ADCode","slug":"获取城市adcode","link":"#获取城市adcode","children":[{"level":3,"title":"API 端点","slug":"api-端点","link":"#api-端点","children":[]},{"level":3,"title":"参数","slug":"参数","link":"#参数","children":[]},{"level":3,"title":"响应","slug":"响应","link":"#响应","children":[]}]},{"level":2,"title":"获取天气","slug":"获取天气","link":"#获取天气","children":[{"level":3,"title":"API 端点","slug":"api-端点-1","link":"#api-端点-1","children":[]},{"level":3,"title":"参数","slug":"参数-1","link":"#参数-1","children":[]},{"level":3,"title":"响应","slug":"响应-1","link":"#响应-1","children":[]}]},{"level":2,"title":"[实验] 上传群图片","slug":"实验-上传群图片","link":"#实验-上传群图片","children":[{"level":3,"title":"API 端点","slug":"api-端点-2","link":"#api-端点-2","children":[]},{"level":3,"title":"请求类型","slug":"请求类型","link":"#请求类型","children":[]},{"level":3,"title":"参数","slug":"参数-2","link":"#参数-2","children":[]}]},{"level":2,"title":"获取 Cookie","slug":"获取-cookie","link":"#获取-cookie","children":[{"level":3,"title":"API 端点","slug":"api-端点-3","link":"#api-端点-3","children":[]},{"level":3,"title":"参数","slug":"参数-3","link":"#参数-3","children":[]},{"level":3,"title":"响应","slug":"响应-2","link":"#响应-2","children":[]}]},{"level":2,"title":"获取 CSRF 令牌","slug":"获取-csrf-令牌","link":"#获取-csrf-令牌","children":[{"level":3,"title":"API 端点","slug":"api-端点-4","link":"#api-端点-4","children":[]},{"level":3,"title":"参数","slug":"参数-4","link":"#参数-4","children":[]},{"level":3,"title":"响应","slug":"响应-3","link":"#响应-3","children":[]}]},{"level":2,"title":"获取Cookie","slug":"获取cookie","link":"#获取cookie","children":[{"level":3,"title":"API 端点","slug":"api-端点-5","link":"#api-端点-5","children":[]},{"level":3,"title":"参数","slug":"参数-5","link":"#参数-5","children":[]},{"level":3,"title":"响应","slug":"响应-4","link":"#响应-4","children":[]}]},{"level":2,"title":"获取 Cookie 与 CSRF 令牌","slug":"获取-cookie-与-csrf-令牌","link":"#获取-cookie-与-csrf-令牌","children":[{"level":3,"title":"API 端点","slug":"api-端点-6","link":"#api-端点-6","children":[]},{"level":3,"title":"参数","slug":"参数-6","link":"#参数-6","children":[]},{"level":3,"title":"响应","slug":"响应-5","link":"#响应-5","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1708390472000,"contributors":[{"name":"Kamisato-Ayaka-233","email":"2627706725@qq.com","commits":1},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":2.62,"words":785},"filePathRelative":"api/other.md","localizedDate":"2023年10月28日","excerpt":""}');export{l as data}; diff --git a/assets/other.html-db200010.js b/assets/other.html-db200010.js new file mode 100644 index 00000000..110631c5 --- /dev/null +++ b/assets/other.html-db200010.js @@ -0,0 +1,215 @@ +import{_ as l}from"./plugin-vue_export-helper-c27b6911.js";import{r as c,o as u,c as i,b as p,w as a,e as r,d as s,a as n}from"./app-edf8b1e7.js";const d={},k=r(`

获取城市ADCode

API 端点

/get_weather_city_code

参数

字段类型必须说明
citystring城市

响应

[
+  {
+    "adcode": 10000,
+    "province": "广西",
+    "city": "柳州"
+  }
+]
+

获取天气

该接口用于获取天气,该接口调用来自QQ官方服务。

API 端点

/get_weather

参数

字段类型必须说明
codestringADCode
citystring城市

响应

{
+  "weatherInfo": {
+    "all_astro": [],
+    "lifeindex_forecast_list": [],
+    "weekly_astro": [],
+    "ret": 0,
+    "weather_info": {
+      "temper": "16",
+      "air_humidity": "98",
+      "wind_power": "微风",
+      "wind_direct": "西南风",
+      "weather": "多云",
+      "pubtime": "01:40",
+      "updatetime": 1695664205,
+      "weather_type": "多云",
+      "weather_type_id": "202",
+      "type_id_new": 2,
+      "concrete_type": 2,
+      "sunrise": "06:05",
+      "sunset": "18:06"
+    },
+    "air_info": null,
+    "forecast_list": {
+      "weatherForecast": [
+        {
+          "day_weather": "阴",
+          "night_weather": "多云",
+          "day_temper": "22",
+          "night_temper": "15",
+          "day_wind_direct": "西南风",
+          "night_wind_direct": "变向风",
+          "day_wind_power": "微风",
+          "night_wind_power": "微风",
+          "sunrise_time": "06:05",
+          "sunset_time": "18:06",
+          "pubtime": "202309251800",
+          "day": 0,
+          "day_weather_type": "阴天",
+          "night_weather_type": "多云",
+          "day_weather_type_id": "203",
+          "night_weather_type_id": "202",
+          "day_type_id_new": 3,
+          "day_concrete_type": 3,
+          "night_type_id_new": 2,
+          "night_concrete_type": 2,
+          "pm": "82",
+          "wind_power_desc": ""
+        },
+        ...
+      ],
+      "updatetime": 1695664205,
+      "tomorrowPrompt": "",
+      "weeklyPrompt": ""
+    },
+    "forecast": {
+      "day_weather": "多云",
+      "night_weather": "晴",
+      "day_temper": "24",
+      "night_temper": "16",
+      "day_wind_direct": "变向风",
+      "night_wind_direct": "变向风",
+      "day_wind_power": "微风",
+      "night_wind_power": "微风",
+      "sunrise_time": "06:06",
+      "sunset_time": "18:04",
+      "pubtime": "202309251800",
+      "day": 1,
+      "day_weather_type": "多云",
+      "night_weather_type": "晴",
+      "day_weather_type_id": "202",
+      "night_weather_type_id": "201",
+      "day_type_id_new": 2,
+      "day_concrete_type": 2,
+      "night_type_id_new": 1,
+      "night_concrete_type": 1,
+      "pm": "146",
+      "wind_power_desc": ""
+    },
+    "hourinfo_list": null,
+    "almanac": "",
+    "warning_list": {
+      "lst_warning": [],
+      "last_proc_time": 0
+    },
+    "astro": null,
+    "city": "北京",
+    "area": "",
+    "adcode": 110000,
+    "area_id": 101010100,
+    "en_name": "Beijing",
+    "update_time": 1695664205,
+    "tips_list": null,
+    "lifeindex_list": null,
+    "current_time": 1695664515,
+    "user_weekly_astro": null,
+    "weekly_summary": null
+  },
+  "qrcode": "data:image/png;base64,...",
+  "poster": "",
+  "share": {
+    "data": {
+      "app": "com.tencent.weather.share",
+      "config": {
+        "autosize": 0,
+        "ctime": 1695664515,
+        "forward": 0,
+        "round": 0,
+        "token": "49441099828d62f0ded8112849bce839"
+      },
+      "desc": "",
+      "meta": {
+        "share": {
+          "adcode": 110000,
+          "air_info": null,
+          "area": "",
+          "city": "北京",
+          "current_time": 1695664515,
+          "forecast_list": {
+            "tomorrowPrompt": "",
+            "updatetime": 1695664205,
+            "weatherForecast": [
+              {
+                "day": 0,
+                "day_concrete_type": 3,
+                "day_temper": "22",
+                "day_type_id_new": 3,
+                "day_weather": "阴",
+                "day_weather_type": "阴天",
+                "day_weather_type_id": "203",
+                "day_wind_direct": "西南风",
+                "day_wind_power": "微风",
+                "night_concrete_type": 2,
+                "night_temper": "15",
+                "night_type_id_new": 2,
+                "night_weather": "多云",
+                "night_weather_type": "多云",
+                "night_weather_type_id": "202",
+                "night_wind_direct": "变向风",
+                "night_wind_power": "微风",
+                "pm": "82",
+                "pubtime": "202309251800",
+                "sunrise_time": "06:05",
+                "sunset_time": "18:06",
+                "wind_power_desc": ""
+              },
+              ...
+            ],
+            "weeklyPrompt": ""
+          },
+          "update_time": 1695664205,
+          "weather_info": {
+            "air_humidity": "98",
+            "concrete_type": 2,
+            "pubtime": "01:40",
+            "sunrise": "06:05",
+            "sunset": "18:06",
+            "temper": "16",
+            "type_id_new": 2,
+            "updatetime": 1695664205,
+            "weather": "多云",
+            "weather_type": "多云",
+            "weather_type_id": "202",
+            "wind_direct": "西南风",
+            "wind_power": "微风"
+          }
+        }
+      },
+      "prompt": "[分享]北京 多云 16°",
+      "ver": "1.0.0.1",
+      "view": "share"
+    },
+    "code": 0
+  }
+}
+

[实验] 上传群图片

该接口用于上传群聊图片, 注意该接口是上传群消息的图片,不是群文件,也不是群相册。

API 端点

/upload_group_image

请求类型

POST

参数

字段类型必须说明
picstring图片base64
senderint64QQ
troopint64图片发送到的群聊

API 端点

get_cookies

参数

字段类型必须说明
domainstring域名

响应

`,29),q=n("table",null,[n("thead",null,[n("tr",null,[n("th",null,"字段"),n("th",null,"类型"),n("th",null,"说明")])]),n("tbody",null,[n("tr",null,[n("td",null,"cookies"),n("td",null,"string"),n("td",null,"指定域名下的 Cookie")])])],-1),v=n("div",{class:"language-json line-numbers-mode","data-ext":"json"},[n("pre",{class:"language-json"},[n("code",null,[n("span",{class:"token punctuation"},"{"),s(` + `),n("span",{class:"token property"},'"status"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token string"},'"ok"'),n("span",{class:"token punctuation"},","),s(` + `),n("span",{class:"token property"},'"retcode"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),s(` + `),n("span",{class:"token property"},'"data"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token punctuation"},"{"),s(` + `),n("span",{class:"token property"},'"cookies"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token string"},'"uin=o1234567890; skey=***; p_uin=o1234567890; p_skey=; pt4_token="'),s(` + `),n("span",{class:"token punctuation"},"}"),n("span",{class:"token punctuation"},","),s(` + `),n("span",{class:"token property"},'"echo"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token string"},'""'),s(` +`),n("span",{class:"token punctuation"},"}"),s(` +`)])]),n("div",{class:"line-numbers","aria-hidden":"true"},[n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"})])],-1),b=r('

获取 CSRF 令牌

API 端点

get_csrf_token

参数

字段类型必须说明
domainstring域名

响应

',6),h=n("table",null,[n("thead",null,[n("tr",null,[n("th",null,"字段"),n("th",null,"类型"),n("th",null,"说明")])]),n("tbody",null,[n("tr",null,[n("td",null,"token"),n("td",null,"string"),n("td",null,"指定域名下的 CSRF 令牌")])])],-1),m=n("div",{class:"language-json line-numbers-mode","data-ext":"json"},[n("pre",{class:"language-json"},[n("code",null,[n("span",{class:"token punctuation"},"{"),s(` + `),n("span",{class:"token property"},'"status"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token string"},'"ok"'),n("span",{class:"token punctuation"},","),s(` + `),n("span",{class:"token property"},'"retcode"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),s(` + `),n("span",{class:"token property"},'"data"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token punctuation"},"{"),s(` + `),n("span",{class:"token property"},'"token"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token string"},'"***"'),s(` + `),n("span",{class:"token punctuation"},"}"),n("span",{class:"token punctuation"},","),s(` + `),n("span",{class:"token property"},'"echo"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token string"},'""'),s(` +`),n("span",{class:"token punctuation"},"}"),s(` +`)])]),n("div",{class:"line-numbers","aria-hidden":"true"},[n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"})])],-1),y=r('

获取Cookie

API 端点

get_cookies

参数

字段类型必须说明
domainstring域名

响应

',6),_=n("table",null,[n("thead",null,[n("tr",null,[n("th",null,"字段"),n("th",null,"类型"),n("th",null,"说明")])]),n("tbody",null,[n("tr",null,[n("td",null,"cookies"),n("td",null,"string"),n("td",null,"指定域名下的 Cookie")])])],-1),g=n("div",{class:"language-json line-numbers-mode","data-ext":"json"},[n("pre",{class:"language-json"},[n("code",null,[n("span",{class:"token punctuation"},"{"),s(` + `),n("span",{class:"token property"},'"status"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token string"},'"ok"'),n("span",{class:"token punctuation"},","),s(` + `),n("span",{class:"token property"},'"retcode"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),s(` + `),n("span",{class:"token property"},'"data"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token punctuation"},"{"),s(` + `),n("span",{class:"token property"},'"cookies"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token string"},'"uin=o1234567890; skey=***; p_uin=o1234567890; p_skey=; pt4_token="'),s(` + `),n("span",{class:"token punctuation"},"}"),n("span",{class:"token punctuation"},","),s(` + `),n("span",{class:"token property"},'"echo"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token string"},'""'),s(` +`),n("span",{class:"token punctuation"},"}"),s(` +`)])]),n("div",{class:"line-numbers","aria-hidden":"true"},[n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"})])],-1),w=r('

API 端点

get_credentials

参数

字段类型必须说明
domainstring域名

响应

',6),f=n("table",null,[n("thead",null,[n("tr",null,[n("th",null,"字段"),n("th",null,"类型"),n("th",null,"说明")])]),n("tbody",null,[n("tr",null,[n("td",null,"cookies"),n("td",null,"string"),n("td",null,"指定域名下的 Cookie")]),n("tr",null,[n("td",null,"token"),n("td",null,"string"),n("td",null,"指定域名下的 CSRF 令牌")])])],-1),x=n("div",{class:"language-json line-numbers-mode","data-ext":"json"},[n("pre",{class:"language-json"},[n("code",null,[n("span",{class:"token punctuation"},"{"),s(` + `),n("span",{class:"token property"},'"status"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token string"},'"ok"'),n("span",{class:"token punctuation"},","),s(` + `),n("span",{class:"token property"},'"retcode"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token number"},"0"),n("span",{class:"token punctuation"},","),s(` + `),n("span",{class:"token property"},'"data"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token punctuation"},"{"),s(` + `),n("span",{class:"token property"},'"token"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token string"},'"***"'),n("span",{class:"token punctuation"},","),s(` + `),n("span",{class:"token property"},'"cookies"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token string"},'"uin=o1234567890; skey=***; p_uin=o1234567890; p_skey=***; pt4_token=***"'),s(` + `),n("span",{class:"token punctuation"},"}"),n("span",{class:"token punctuation"},","),s(` + `),n("span",{class:"token property"},'"echo"'),n("span",{class:"token operator"},":"),s(),n("span",{class:"token string"},'""'),s(` +`),n("span",{class:"token punctuation"},"}"),s(` +`)])]),n("div",{class:"line-numbers","aria-hidden":"true"},[n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"})])],-1);function A(j,C){const e=c("Tabs");return u(),i("div",null,[k,p(e,{id:"249",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:a(({value:t,isActive:o})=>[s("响应字段")]),title1:a(({value:t,isActive:o})=>[s("响应示例")]),tab0:a(({value:t,isActive:o})=>[q]),tab1:a(({value:t,isActive:o})=>[v]),_:1}),b,p(e,{id:"333",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:a(({value:t,isActive:o})=>[s("响应字段")]),title1:a(({value:t,isActive:o})=>[s("响应示例")]),tab0:a(({value:t,isActive:o})=>[h]),tab1:a(({value:t,isActive:o})=>[m]),_:1}),y,p(e,{id:"417",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:a(({value:t,isActive:o})=>[s("响应字段")]),title1:a(({value:t,isActive:o})=>[s("响应示例")]),tab0:a(({value:t,isActive:o})=>[_]),tab1:a(({value:t,isActive:o})=>[g]),_:1}),w,p(e,{id:"501",data:[{id:"响应字段"},{id:"响应示例"}]},{title0:a(({value:t,isActive:o})=>[s("响应字段")]),title1:a(({value:t,isActive:o})=>[s("响应示例")]),tab0:a(({value:t,isActive:o})=>[f]),tab1:a(({value:t,isActive:o})=>[x]),_:1})])}const F=l(d,[["render",A],["__file","other.html.vue"]]);export{F as default}; diff --git a/assets/photoswipe.esm-5762295a.js b/assets/photoswipe.esm-5762295a.js new file mode 100644 index 00000000..5c59546a --- /dev/null +++ b/assets/photoswipe.esm-5762295a.js @@ -0,0 +1,4 @@ +/*! + * PhotoSwipe 5.4.1 - https://photoswipe.com + * (c) 2023 Dmytro Semenov + */function f(r,t,i){const e=document.createElement(t);return r&&(e.className=r),i&&i.appendChild(e),e}function p(r,t){return r.x=t.x,r.y=t.y,t.id!==void 0&&(r.id=t.id),r}function M(r){r.x=Math.round(r.x),r.y=Math.round(r.y)}function A(r,t){const i=Math.abs(r.x-t.x),e=Math.abs(r.y-t.y);return Math.sqrt(i*i+e*e)}function x(r,t){return r.x===t.x&&r.y===t.y}function I(r,t,i){return Math.min(Math.max(r,t),i)}function b(r,t,i){let e=`translate3d(${r}px,${t||0}px,0)`;return i!==void 0&&(e+=` scale3d(${i},${i},1)`),e}function y(r,t,i,e){r.style.transform=b(t,i,e)}const $="cubic-bezier(.4,0,.22,1)";function R(r,t,i,e){r.style.transition=t?`${t} ${i}ms ${e||$}`:"none"}function L(r,t,i){r.style.width=typeof t=="number"?`${t}px`:t,r.style.height=typeof i=="number"?`${i}px`:i}function U(r){R(r)}function q(r){return"decode"in r?r.decode().catch(()=>{}):r.complete?Promise.resolve(r):new Promise((t,i)=>{r.onload=()=>t(r),r.onerror=i})}const _={IDLE:"idle",LOADING:"loading",LOADED:"loaded",ERROR:"error"};function G(r){return"button"in r&&r.button===1||r.ctrlKey||r.metaKey||r.altKey||r.shiftKey}function K(r,t,i=document){let e=[];if(r instanceof Element)e=[r];else if(r instanceof NodeList||Array.isArray(r))e=Array.from(r);else{const s=typeof r=="string"?r:t;s&&(e=Array.from(i.querySelectorAll(s)))}return e}function C(){return!!(navigator.vendor&&navigator.vendor.match(/apple/i))}let F=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>{F=!0}}))}catch{}class X{constructor(){this._pool=[]}add(t,i,e,s){this._toggleListener(t,i,e,s)}remove(t,i,e,s){this._toggleListener(t,i,e,s,!0)}removeAll(){this._pool.forEach(t=>{this._toggleListener(t.target,t.type,t.listener,t.passive,!0,!0)}),this._pool=[]}_toggleListener(t,i,e,s,n,o){if(!t)return;const a=n?"removeEventListener":"addEventListener";i.split(" ").forEach(l=>{if(l){o||(n?this._pool=this._pool.filter(d=>d.type!==l||d.listener!==e||d.target!==t):this._pool.push({target:t,type:l,listener:e,passive:s}));const c=F?{passive:s||!1}:!1;t[a](l,e,c)}})}}function B(r,t){if(r.getViewportSizeFn){const i=r.getViewportSizeFn(r,t);if(i)return i}return{x:document.documentElement.clientWidth,y:window.innerHeight}}function S(r,t,i,e,s){let n=0;if(t.paddingFn)n=t.paddingFn(i,e,s)[r];else if(t.padding)n=t.padding[r];else{const o="padding"+r[0].toUpperCase()+r.slice(1);t[o]&&(n=t[o])}return Number(n)||0}function N(r,t,i,e){return{x:t.x-S("left",r,t,i,e)-S("right",r,t,i,e),y:t.y-S("top",r,t,i,e)-S("bottom",r,t,i,e)}}class Y{constructor(t){this.slide=t,this.currZoomLevel=1,this.center={x:0,y:0},this.max={x:0,y:0},this.min={x:0,y:0}}update(t){this.currZoomLevel=t,this.slide.width?(this._updateAxis("x"),this._updateAxis("y"),this.slide.pswp.dispatch("calcBounds",{slide:this.slide})):this.reset()}_updateAxis(t){const{pswp:i}=this.slide,e=this.slide[t==="x"?"width":"height"]*this.currZoomLevel,n=S(t==="x"?"left":"top",i.options,i.viewportSize,this.slide.data,this.slide.index),o=this.slide.panAreaSize[t];this.center[t]=Math.round((o-e)/2)+n,this.max[t]=e>o?Math.round(o-e)+n:this.center[t],this.min[t]=e>o?n:this.center[t]}reset(){this.center.x=0,this.center.y=0,this.max.x=0,this.max.y=0,this.min.x=0,this.min.y=0}correctPan(t,i){return I(i,this.max[t],this.min[t])}}const T=4e3;class k{constructor(t,i,e,s){this.pswp=s,this.options=t,this.itemData=i,this.index=e,this.panAreaSize=null,this.elementSize=null,this.fit=1,this.fill=1,this.vFill=1,this.initial=1,this.secondary=1,this.max=1,this.min=1}update(t,i,e){const s={x:t,y:i};this.elementSize=s,this.panAreaSize=e;const n=e.x/s.x,o=e.y/s.y;this.fit=Math.min(1,no?n:o),this.vFill=Math.min(1,o),this.initial=this._getInitial(),this.secondary=this._getSecondary(),this.max=Math.max(this.initial,this.secondary,this._getMax()),this.min=Math.min(this.fit,this.initial,this.secondary),this.pswp&&this.pswp.dispatch("zoomLevelsUpdate",{zoomLevels:this,slideData:this.itemData})}_parseZoomLevelOption(t){const i=t+"ZoomLevel",e=this.options[i];if(e)return typeof e=="function"?e(this):e==="fill"?this.fill:e==="fit"?this.fit:Number(e)}_getSecondary(){let t=this._parseZoomLevelOption("secondary");return t||(t=Math.min(1,this.fit*3),this.elementSize&&t*this.elementSize.x>T&&(t=T/this.elementSize.x),t)}_getInitial(){return this._parseZoomLevelOption("initial")||this.fit}_getMax(){return this._parseZoomLevelOption("max")||Math.max(1,this.fit*4)}}class j{constructor(t,i,e){this.data=t,this.index=i,this.pswp=e,this.isActive=i===e.currIndex,this.currentResolution=0,this.panAreaSize={x:0,y:0},this.pan={x:0,y:0},this.isFirstSlide=this.isActive&&!e.opener.isOpen,this.zoomLevels=new k(e.options,t,i,e),this.pswp.dispatch("gettingData",{slide:this,data:this.data,index:i}),this.content=this.pswp.contentLoader.getContentBySlide(this),this.container=f("pswp__zoom-wrap","div"),this.holderElement=null,this.currZoomLevel=1,this.width=this.content.width,this.height=this.content.height,this.heavyAppended=!1,this.bounds=new Y(this),this.prevDisplayedWidth=-1,this.prevDisplayedHeight=-1,this.pswp.dispatch("slideInit",{slide:this})}setIsActive(t){t&&!this.isActive?this.activate():!t&&this.isActive&&this.deactivate()}append(t){this.holderElement=t,this.container.style.transformOrigin="0 0",this.data&&(this.calculateSize(),this.load(),this.updateContentSize(),this.appendHeavy(),this.holderElement.appendChild(this.container),this.zoomAndPanToInitial(),this.pswp.dispatch("firstZoomPan",{slide:this}),this.applyCurrentZoomPan(),this.pswp.dispatch("afterSetContent",{slide:this}),this.isActive&&this.activate())}load(){this.content.load(!1),this.pswp.dispatch("slideLoad",{slide:this})}appendHeavy(){const{pswp:t}=this,i=!0;this.heavyAppended||!t.opener.isOpen||t.mainScroll.isShifted()||!this.isActive&&!i||this.pswp.dispatch("appendHeavy",{slide:this}).defaultPrevented||(this.heavyAppended=!0,this.content.append(),this.pswp.dispatch("appendHeavyContent",{slide:this}))}activate(){this.isActive=!0,this.appendHeavy(),this.content.activate(),this.pswp.dispatch("slideActivate",{slide:this})}deactivate(){this.isActive=!1,this.content.deactivate(),this.currZoomLevel!==this.zoomLevels.initial&&this.calculateSize(),this.currentResolution=0,this.zoomAndPanToInitial(),this.applyCurrentZoomPan(),this.updateContentSize(),this.pswp.dispatch("slideDeactivate",{slide:this})}destroy(){this.content.hasSlide=!1,this.content.remove(),this.container.remove(),this.pswp.dispatch("slideDestroy",{slide:this})}resize(){this.currZoomLevel===this.zoomLevels.initial||!this.isActive?(this.calculateSize(),this.currentResolution=0,this.zoomAndPanToInitial(),this.applyCurrentZoomPan(),this.updateContentSize()):(this.calculateSize(),this.bounds.update(this.currZoomLevel),this.panTo(this.pan.x,this.pan.y))}updateContentSize(t){const i=this.currentResolution||this.zoomLevels.initial;if(!i)return;const e=Math.round(this.width*i)||this.pswp.viewportSize.x,s=Math.round(this.height*i)||this.pswp.viewportSize.y;!this.sizeChanged(e,s)&&!t||this.content.setDisplayedSize(e,s)}sizeChanged(t,i){return t!==this.prevDisplayedWidth||i!==this.prevDisplayedHeight?(this.prevDisplayedWidth=t,this.prevDisplayedHeight=i,!0):!1}getPlaceholderElement(){var t;return(t=this.content.placeholder)===null||t===void 0?void 0:t.element}zoomTo(t,i,e,s){const{pswp:n}=this;if(!this.isZoomable()||n.mainScroll.isShifted())return;n.dispatch("beforeZoomTo",{destZoomLevel:t,centerPoint:i,transitionDuration:e}),n.animations.stopAllPan();const o=this.currZoomLevel;s||(t=I(t,this.zoomLevels.min,this.zoomLevels.max)),this.setZoomLevel(t),this.pan.x=this.calculateZoomToPanOffset("x",i,o),this.pan.y=this.calculateZoomToPanOffset("y",i,o),M(this.pan);const a=()=>{this._setResolution(t),this.applyCurrentZoomPan()};e?n.animations.startTransition({isPan:!0,name:"zoomTo",target:this.container,transform:this.getCurrentTransform(),onComplete:a,duration:e,easing:n.options.easing}):a()}toggleZoom(t){this.zoomTo(this.currZoomLevel===this.zoomLevels.initial?this.zoomLevels.secondary:this.zoomLevels.initial,t,this.pswp.options.zoomAnimationDuration)}setZoomLevel(t){this.currZoomLevel=t,this.bounds.update(this.currZoomLevel)}calculateZoomToPanOffset(t,i,e){if(this.bounds.max[t]-this.bounds.min[t]===0)return this.bounds.center[t];i||(i=this.pswp.getViewportCenterPoint()),e||(e=this.zoomLevels.initial);const n=this.currZoomLevel/e;return this.bounds.correctPan(t,(this.pan[t]-i[t])*n+i[t])}panTo(t,i){this.pan.x=this.bounds.correctPan("x",t),this.pan.y=this.bounds.correctPan("y",i),this.applyCurrentZoomPan()}isPannable(){return!!this.width&&this.currZoomLevel>this.zoomLevels.fit}isZoomable(){return!!this.width&&this.content.isZoomable()}applyCurrentZoomPan(){this._applyZoomTransform(this.pan.x,this.pan.y,this.currZoomLevel),this===this.pswp.currSlide&&this.pswp.dispatch("zoomPanUpdate",{slide:this})}zoomAndPanToInitial(){this.currZoomLevel=this.zoomLevels.initial,this.bounds.update(this.currZoomLevel),p(this.pan,this.bounds.center),this.pswp.dispatch("initialZoomPan",{slide:this})}_applyZoomTransform(t,i,e){e/=this.currentResolution||this.zoomLevels.initial,y(this.container,t,i,e)}calculateSize(){const{pswp:t}=this;p(this.panAreaSize,N(t.options,t.viewportSize,this.data,this.index)),this.zoomLevels.update(this.width,this.height,this.panAreaSize),t.dispatch("calcSlideSize",{slide:this})}getCurrentTransform(){const t=this.currZoomLevel/(this.currentResolution||this.zoomLevels.initial);return b(this.pan.x,this.pan.y,t)}_setResolution(t){t!==this.currentResolution&&(this.currentResolution=t,this.updateContentSize(),this.pswp.dispatch("resolutionChanged"))}}const Q=.35,J=.6,z=.4,E=.5;function tt(r,t){return r*t/(1-t)}class it{constructor(t){this.gestures=t,this.pswp=t.pswp,this.startPan={x:0,y:0}}start(){this.pswp.currSlide&&p(this.startPan,this.pswp.currSlide.pan),this.pswp.animations.stopAll()}change(){const{p1:t,prevP1:i,dragAxis:e}=this.gestures,{currSlide:s}=this.pswp;if(e==="y"&&this.pswp.options.closeOnVerticalDrag&&s&&s.currZoomLevel<=s.zoomLevels.fit&&!this.gestures.isMultitouch){const n=s.pan.y+(t.y-i.y);if(!this.pswp.dispatch("verticalDrag",{panY:n}).defaultPrevented){this._setPanWithFriction("y",n,J);const o=1-Math.abs(this._getVerticalDragRatio(s.pan.y));this.pswp.applyBgOpacity(o),s.applyCurrentZoomPan()}}else this._panOrMoveMainScroll("x")||(this._panOrMoveMainScroll("y"),s&&(M(s.pan),s.applyCurrentZoomPan()))}end(){const{velocity:t}=this.gestures,{mainScroll:i,currSlide:e}=this.pswp;let s=0;if(this.pswp.animations.stopAll(),i.isShifted()){const o=(i.x-i.getCurrSlideX())/this.pswp.viewportSize.x;t.x<-E&&o<0||t.x<.1&&o<-.5?(s=1,t.x=Math.min(t.x,0)):(t.x>E&&o>0||t.x>-.1&&o>.5)&&(s=-1,t.x=Math.max(t.x,0)),i.moveIndexBy(s,!0,t.x)}e&&e.currZoomLevel>e.zoomLevels.max||this.gestures.isMultitouch?this.gestures.zoomLevels.correctZoomPan(!0):(this._finishPanGestureForAxis("x"),this._finishPanGestureForAxis("y"))}_finishPanGestureForAxis(t){const{velocity:i}=this.gestures,{currSlide:e}=this.pswp;if(!e)return;const{pan:s,bounds:n}=e,o=s[t],a=this.pswp.bgOpacity<1&&t==="y",h=.995,l=o+tt(i[t],h);if(a){const v=this._getVerticalDragRatio(o),w=this._getVerticalDragRatio(l);if(v<0&&w<-z||v>0&&w>z){this.pswp.close();return}}const c=n.correctPan(t,l);if(o===c)return;const d=c===l?1:.82,u=this.pswp.bgOpacity,m=c-o;this.pswp.animations.startSpring({name:"panGesture"+t,isPan:!0,start:o,end:c,velocity:i[t],dampingRatio:d,onUpdate:v=>{if(a&&this.pswp.bgOpacity<1){const w=1-(c-v)/m;this.pswp.applyBgOpacity(I(u+(1-u)*w,0,1))}s[t]=Math.floor(v),e.applyCurrentZoomPan()}})}_panOrMoveMainScroll(t){const{p1:i,dragAxis:e,prevP1:s,isMultitouch:n}=this.gestures,{currSlide:o,mainScroll:a}=this.pswp,h=i[t]-s[t],l=a.x+h;if(!h||!o)return!1;if(t==="x"&&!o.isPannable()&&!n)return a.moveTo(l,!0),!0;const{bounds:c}=o,d=o.pan[t]+h;if(this.pswp.options.allowPanToNext&&e==="x"&&t==="x"&&!n){const u=a.getCurrSlideX(),m=a.x-u,v=h>0,w=!v;if(d>c.min[t]&&v){if(c.min[t]<=this.startPan[t])return a.moveTo(l,!0),!0;this._setPanWithFriction(t,d)}else if(d0)return a.moveTo(Math.max(l,u),!0),!0;if(m<0)return a.moveTo(Math.min(l,u),!0),!0}else this._setPanWithFriction(t,d)}else t==="y"?!a.isShifted()&&c.min.y!==c.max.y&&this._setPanWithFriction(t,d):this._setPanWithFriction(t,d);return!1}_getVerticalDragRatio(t){var i,e;return(t-((i=(e=this.pswp.currSlide)===null||e===void 0?void 0:e.bounds.center.y)!==null&&i!==void 0?i:0))/(this.pswp.viewportSize.y/3)}_setPanWithFriction(t,i,e){const{currSlide:s}=this.pswp;if(!s)return;const{pan:n,bounds:o}=s;if(o.correctPan(t,i)!==i||e){const h=Math.round(i-n[t]);n[t]+=h*(e||Q)}else n[t]=i}}const et=.05,st=.15;function O(r,t,i){return r.x=(t.x+i.x)/2,r.y=(t.y+i.y)/2,r}class nt{constructor(t){this.gestures=t,this._startPan={x:0,y:0},this._startZoomPoint={x:0,y:0},this._zoomPoint={x:0,y:0},this._wasOverFitZoomLevel=!1,this._startZoomLevel=1}start(){const{currSlide:t}=this.gestures.pswp;t&&(this._startZoomLevel=t.currZoomLevel,p(this._startPan,t.pan)),this.gestures.pswp.animations.stopAllPan(),this._wasOverFitZoomLevel=!1}change(){const{p1:t,startP1:i,p2:e,startP2:s,pswp:n}=this.gestures,{currSlide:o}=n;if(!o)return;const a=o.zoomLevels.min,h=o.zoomLevels.max;if(!o.isZoomable()||n.mainScroll.isShifted())return;O(this._startZoomPoint,i,s),O(this._zoomPoint,t,e);let l=1/A(i,s)*A(t,e)*this._startZoomLevel;if(l>o.zoomLevels.initial+o.zoomLevels.initial/15&&(this._wasOverFitZoomLevel=!0),lh&&(l=h+(l-h)*et);o.pan.x=this._calculatePanForZoomLevel("x",l),o.pan.y=this._calculatePanForZoomLevel("y",l),o.setZoomLevel(l),o.applyCurrentZoomPan()}end(){const{pswp:t}=this.gestures,{currSlide:i}=t;(!i||i.currZoomLevele.zoomLevels.max?n=e.zoomLevels.max:(o=!1,n=s);const a=i.bgOpacity,h=i.bgOpacity<1,l=p({x:0,y:0},e.pan);let c=p({x:0,y:0},l);t&&(this._zoomPoint.x=0,this._zoomPoint.y=0,this._startZoomPoint.x=0,this._startZoomPoint.y=0,this._startZoomLevel=s,p(this._startPan,l)),o&&(c={x:this._calculatePanForZoomLevel("x",n),y:this._calculatePanForZoomLevel("y",n)}),e.setZoomLevel(n),c={x:e.bounds.correctPan("x",c.x),y:e.bounds.correctPan("y",c.y)},e.setZoomLevel(s);const d=!x(c,l);if(!d&&!o&&!h){e._setResolution(n),e.applyCurrentZoomPan();return}i.animations.stopAllPan(),i.animations.startSpring({isPan:!0,start:0,end:1e3,velocity:0,dampingRatio:1,naturalFrequency:40,onUpdate:u=>{if(u/=1e3,d||o){if(d&&(e.pan.x=l.x+(c.x-l.x)*u,e.pan.y=l.y+(c.y-l.y)*u),o){const m=s+(n-s)*u;e.setZoomLevel(m)}e.applyCurrentZoomPan()}h&&i.bgOpacity<1&&i.applyBgOpacity(I(a+(1-a)*u,0,1))},onComplete:()=>{e._setResolution(n),e.applyCurrentZoomPan()}})}}function Z(r){return!!r.target.closest(".pswp__container")}class ot{constructor(t){this.gestures=t}click(t,i){const e=i.target.classList,s=e.contains("pswp__img"),n=e.contains("pswp__item")||e.contains("pswp__zoom-wrap");s?this._doClickOrTapAction("imageClick",t,i):n&&this._doClickOrTapAction("bgClick",t,i)}tap(t,i){Z(i)&&this._doClickOrTapAction("tap",t,i)}doubleTap(t,i){Z(i)&&this._doClickOrTapAction("doubleTap",t,i)}_doClickOrTapAction(t,i,e){var s;const{pswp:n}=this.gestures,{currSlide:o}=n,a=t+"Action",h=n.options[a];if(!n.dispatch(a,{point:i,originalEvent:e}).defaultPrevented){if(typeof h=="function"){h.call(n,i,e);return}switch(h){case"close":case"next":n[h]();break;case"zoom":o==null||o.toggleZoom(i);break;case"zoom-or-close":o!=null&&o.isZoomable()&&o.zoomLevels.secondary!==o.zoomLevels.initial?o.toggleZoom(i):n.options.clickToCloseNonZoomable&&n.close();break;case"toggle-controls":(s=this.gestures.pswp.element)===null||s===void 0||s.classList.toggle("pswp--ui-visible");break}}}}const rt=10,at=300,ht=25;class lt{constructor(t){this.pswp=t,this.dragAxis=null,this.p1={x:0,y:0},this.p2={x:0,y:0},this.prevP1={x:0,y:0},this.prevP2={x:0,y:0},this.startP1={x:0,y:0},this.startP2={x:0,y:0},this.velocity={x:0,y:0},this._lastStartP1={x:0,y:0},this._intervalP1={x:0,y:0},this._numActivePoints=0,this._ongoingPointers=[],this._touchEventEnabled="ontouchstart"in window,this._pointerEventEnabled=!!window.PointerEvent,this.supportsTouch=this._touchEventEnabled||this._pointerEventEnabled&&navigator.maxTouchPoints>1,this._numActivePoints=0,this._intervalTime=0,this._velocityCalculated=!1,this.isMultitouch=!1,this.isDragging=!1,this.isZooming=!1,this.raf=null,this._tapTimer=null,this.supportsTouch||(t.options.allowPanToNext=!1),this.drag=new it(this),this.zoomLevels=new nt(this),this.tapHandler=new ot(this),t.on("bindEvents",()=>{t.events.add(t.scrollWrap,"click",this._onClick.bind(this)),this._pointerEventEnabled?this._bindEvents("pointer","down","up","cancel"):this._touchEventEnabled?(this._bindEvents("touch","start","end","cancel"),t.scrollWrap&&(t.scrollWrap.ontouchmove=()=>{},t.scrollWrap.ontouchend=()=>{})):this._bindEvents("mouse","down","up")})}_bindEvents(t,i,e,s){const{pswp:n}=this,{events:o}=n,a=s?t+s:"";o.add(n.scrollWrap,t+i,this.onPointerDown.bind(this)),o.add(window,t+"move",this.onPointerMove.bind(this)),o.add(window,t+e,this.onPointerUp.bind(this)),a&&o.add(n.scrollWrap,a,this.onPointerUp.bind(this))}onPointerDown(t){const i=t.type==="mousedown"||t.pointerType==="mouse";if(i&&t.button>0)return;const{pswp:e}=this;if(!e.opener.isOpen){t.preventDefault();return}e.dispatch("pointerDown",{originalEvent:t}).defaultPrevented||(i&&(e.mouseDetected(),this._preventPointerEventBehaviour(t,"down")),e.animations.stopAll(),this._updatePoints(t,"down"),this._numActivePoints===1&&(this.dragAxis=null,p(this.startP1,this.p1)),this._numActivePoints>1?(this._clearTapTimer(),this.isMultitouch=!0):this.isMultitouch=!1)}onPointerMove(t){this._preventPointerEventBehaviour(t,"move"),this._numActivePoints&&(this._updatePoints(t,"move"),!this.pswp.dispatch("pointerMove",{originalEvent:t}).defaultPrevented&&(this._numActivePoints===1&&!this.isDragging?(this.dragAxis||this._calculateDragDirection(),this.dragAxis&&!this.isDragging&&(this.isZooming&&(this.isZooming=!1,this.zoomLevels.end()),this.isDragging=!0,this._clearTapTimer(),this._updateStartPoints(),this._intervalTime=Date.now(),this._velocityCalculated=!1,p(this._intervalP1,this.p1),this.velocity.x=0,this.velocity.y=0,this.drag.start(),this._rafStopLoop(),this._rafRenderLoop())):this._numActivePoints>1&&!this.isZooming&&(this._finishDrag(),this.isZooming=!0,this._updateStartPoints(),this.zoomLevels.start(),this._rafStopLoop(),this._rafRenderLoop())))}_finishDrag(){this.isDragging&&(this.isDragging=!1,this._velocityCalculated||this._updateVelocity(!0),this.drag.end(),this.dragAxis=null)}onPointerUp(t){this._numActivePoints&&(this._updatePoints(t,"up"),!this.pswp.dispatch("pointerUp",{originalEvent:t}).defaultPrevented&&(this._numActivePoints===0&&(this._rafStopLoop(),this.isDragging?this._finishDrag():!this.isZooming&&!this.isMultitouch&&this._finishTap(t)),this._numActivePoints<2&&this.isZooming&&(this.isZooming=!1,this.zoomLevels.end(),this._numActivePoints===1&&(this.dragAxis=null,this._updateStartPoints()))))}_rafRenderLoop(){(this.isDragging||this.isZooming)&&(this._updateVelocity(),this.isDragging?x(this.p1,this.prevP1)||this.drag.change():(!x(this.p1,this.prevP1)||!x(this.p2,this.prevP2))&&this.zoomLevels.change(),this._updatePrevPoints(),this.raf=requestAnimationFrame(this._rafRenderLoop.bind(this)))}_updateVelocity(t){const i=Date.now(),e=i-this._intervalTime;e<50&&!t||(this.velocity.x=this._getVelocity("x",e),this.velocity.y=this._getVelocity("y",e),this._intervalTime=i,p(this._intervalP1,this.p1),this._velocityCalculated=!0)}_finishTap(t){const{mainScroll:i}=this.pswp;if(i.isShifted()){i.moveIndexBy(0,!0);return}if(t.type.indexOf("cancel")>0)return;if(t.type==="mouseup"||t.pointerType==="mouse"){this.tapHandler.click(this.startP1,t);return}const e=this.pswp.options.doubleTapAction?at:0;this._tapTimer?(this._clearTapTimer(),A(this._lastStartP1,this.startP1){this.tapHandler.tap(this.startP1,t),this._clearTapTimer()},e))}_clearTapTimer(){this._tapTimer&&(clearTimeout(this._tapTimer),this._tapTimer=null)}_getVelocity(t,i){const e=this.p1[t]-this._intervalP1[t];return Math.abs(e)>1&&i>5?e/i:0}_rafStopLoop(){this.raf&&(cancelAnimationFrame(this.raf),this.raf=null)}_preventPointerEventBehaviour(t,i){this.pswp.applyFilters("preventPointerEvent",!0,t,i)&&t.preventDefault()}_updatePoints(t,i){if(this._pointerEventEnabled){const e=t,s=this._ongoingPointers.findIndex(n=>n.id===e.pointerId);i==="up"&&s>-1?this._ongoingPointers.splice(s,1):i==="down"&&s===-1?this._ongoingPointers.push(this._convertEventPosToPoint(e,{x:0,y:0})):s>-1&&this._convertEventPosToPoint(e,this._ongoingPointers[s]),this._numActivePoints=this._ongoingPointers.length,this._numActivePoints>0&&p(this.p1,this._ongoingPointers[0]),this._numActivePoints>1&&p(this.p2,this._ongoingPointers[1])}else{const e=t;this._numActivePoints=0,e.type.indexOf("touch")>-1?e.touches&&e.touches.length>0&&(this._convertEventPosToPoint(e.touches[0],this.p1),this._numActivePoints++,e.touches.length>1&&(this._convertEventPosToPoint(e.touches[1],this.p2),this._numActivePoints++)):(this._convertEventPosToPoint(t,this.p1),i==="up"?this._numActivePoints=0:this._numActivePoints++)}}_updatePrevPoints(){p(this.prevP1,this.p1),p(this.prevP2,this.p2)}_updateStartPoints(){p(this.startP1,this.p1),p(this.startP2,this.p2),this._updatePrevPoints()}_calculateDragDirection(){if(this.pswp.mainScroll.isShifted())this.dragAxis="x";else{const t=Math.abs(this.p1.x-this.startP1.x)-Math.abs(this.p1.y-this.startP1.y);if(t!==0){const i=t>0?"x":"y";Math.abs(this.p1[i]-this.startP1[i])>=rt&&(this.dragAxis=i)}}}_convertEventPosToPoint(t,i){return i.x=t.pageX-this.pswp.offset.x,i.y=t.pageY-this.pswp.offset.y,"pointerId"in t?i.id=t.pointerId:t.identifier!==void 0&&(i.id=t.identifier),i}_onClick(t){this.pswp.mainScroll.isShifted()&&(t.preventDefault(),t.stopPropagation())}}const ct=.35;class dt{constructor(t){this.pswp=t,this.x=0,this.slideWidth=0,this._currPositionIndex=0,this._prevPositionIndex=0,this._containerShiftIndex=-1,this.itemHolders=[]}resize(t){const{pswp:i}=this,e=Math.round(i.viewportSize.x+i.viewportSize.x*i.options.spacing),s=e!==this.slideWidth;s&&(this.slideWidth=e,this.moveTo(this.getCurrSlideX())),this.itemHolders.forEach((n,o)=>{s&&y(n.el,(o+this._containerShiftIndex)*this.slideWidth),t&&n.slide&&n.slide.resize()})}resetPosition(){this._currPositionIndex=0,this._prevPositionIndex=0,this.slideWidth=0,this._containerShiftIndex=-1}appendHolders(){this.itemHolders=[];for(let t=0;t<3;t++){const i=f("pswp__item","div",this.pswp.container);i.setAttribute("role","group"),i.setAttribute("aria-roledescription","slide"),i.setAttribute("aria-hidden","true"),i.style.display=t===1?"block":"none",this.itemHolders.push({el:i})}}canBeSwiped(){return this.pswp.getNumItems()>1}moveIndexBy(t,i,e){const{pswp:s}=this;let n=s.potentialIndex+t;const o=s.getNumItems();if(s.canLoop()){n=s.getLoopedIndex(n);const h=(t+o)%o;h<=o/2?t=h:t=h-o}else n<0?n=0:n>=o&&(n=o-1),t=n-s.potentialIndex;s.potentialIndex=n,this._currPositionIndex-=t,s.animations.stopMainScroll();const a=this.getCurrSlideX();if(!i)this.moveTo(a),this.updateCurrItem();else{s.animations.startSpring({isMainScroll:!0,start:this.x,end:a,velocity:e||0,naturalFrequency:30,dampingRatio:1,onUpdate:l=>{this.moveTo(l)},onComplete:()=>{this.updateCurrItem(),s.appendHeavy()}});let h=s.potentialIndex-s.currIndex;if(s.canLoop()){const l=(h+o)%o;l<=o/2?h=l:h=l-o}Math.abs(h)>1&&this.updateCurrItem()}return!!t}getCurrSlideX(){return this.slideWidth*this._currPositionIndex}isShifted(){return this.x!==this.getCurrSlideX()}updateCurrItem(){var t;const{pswp:i}=this,e=this._prevPositionIndex-this._currPositionIndex;if(!e)return;this._prevPositionIndex=this._currPositionIndex,i.currIndex=i.potentialIndex;let s=Math.abs(e),n;s>=3&&(this._containerShiftIndex+=e+(e>0?-3:3),s=3);for(let o=0;o0?(n=this.itemHolders.shift(),n&&(this.itemHolders[2]=n,this._containerShiftIndex++,y(n.el,(this._containerShiftIndex+2)*this.slideWidth),i.setContent(n,i.currIndex-s+o+2))):(n=this.itemHolders.pop(),n&&(this.itemHolders.unshift(n),this._containerShiftIndex--,y(n.el,this._containerShiftIndex*this.slideWidth),i.setContent(n,i.currIndex+s-o-2)));Math.abs(this._containerShiftIndex)>50&&!this.isShifted()&&(this.resetPosition(),this.resize()),i.animations.stopAllPan(),this.itemHolders.forEach((o,a)=>{o.slide&&o.slide.setIsActive(a===1)}),i.currSlide=(t=this.itemHolders[1])===null||t===void 0?void 0:t.slide,i.contentLoader.updateLazy(e),i.currSlide&&i.currSlide.applyCurrentZoomPan(),i.dispatch("change")}moveTo(t,i){if(!this.pswp.canLoop()&&i){let e=(this.slideWidth*this._currPositionIndex-t)/this.slideWidth;e+=this.pswp.currIndex;const s=Math.round(t-this.x);(e<0&&s>0||e>=this.pswp.getNumItems()-1&&s<0)&&(t=this.x+s*ct)}this.x=t,this.pswp.container&&y(this.pswp.container,t),this.pswp.dispatch("moveMainScroll",{x:t,dragging:i??!1})}}const pt={Escape:27,z:90,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,Tab:9},g=(r,t)=>t?r:pt[r];class ut{constructor(t){this.pswp=t,this._wasFocused=!1,t.on("bindEvents",()=>{t.options.trapFocus&&(t.options.initialPointerPos||this._focusRoot(),t.events.add(document,"focusin",this._onFocusIn.bind(this))),t.events.add(document,"keydown",this._onKeyDown.bind(this))});const i=document.activeElement;t.on("destroy",()=>{t.options.returnFocus&&i&&this._wasFocused&&i.focus()})}_focusRoot(){!this._wasFocused&&this.pswp.element&&(this.pswp.element.focus(),this._wasFocused=!0)}_onKeyDown(t){const{pswp:i}=this;if(i.dispatch("keydown",{originalEvent:t}).defaultPrevented||G(t))return;let e,s,n=!1;const o="key"in t;switch(o?t.key:t.keyCode){case g("Escape",o):i.options.escKey&&(e="close");break;case g("z",o):e="toggleZoom";break;case g("ArrowLeft",o):s="x";break;case g("ArrowUp",o):s="y";break;case g("ArrowRight",o):s="x",n=!0;break;case g("ArrowDown",o):n=!0,s="y";break;case g("Tab",o):this._focusRoot();break}if(s){t.preventDefault();const{currSlide:a}=i;i.options.arrowKeys&&s==="x"&&i.getNumItems()>1?e=n?"next":"prev":a&&a.currZoomLevel>a.zoomLevels.fit&&(a.pan[s]+=n?-80:80,a.panTo(a.pan.x,a.pan.y))}e&&(t.preventDefault(),i[e]())}_onFocusIn(t){const{template:i}=this.pswp;i&&document!==t.target&&i!==t.target&&!i.contains(t.target)&&i.focus()}}const mt="cubic-bezier(.4,0,.22,1)";class ft{constructor(t){var i;this.props=t;const{target:e,onComplete:s,transform:n,onFinish:o=()=>{},duration:a=333,easing:h=mt}=t;this.onFinish=o;const l=n?"transform":"opacity",c=(i=t[l])!==null&&i!==void 0?i:"";this._target=e,this._onComplete=s,this._finished=!1,this._onTransitionEnd=this._onTransitionEnd.bind(this),this._helperTimeout=setTimeout(()=>{R(e,l,a,h),this._helperTimeout=setTimeout(()=>{e.addEventListener("transitionend",this._onTransitionEnd,!1),e.addEventListener("transitioncancel",this._onTransitionEnd,!1),this._helperTimeout=setTimeout(()=>{this._finalizeAnimation()},a+500),e.style[l]=c},30)},0)}_onTransitionEnd(t){t.target===this._target&&this._finalizeAnimation()}_finalizeAnimation(){this._finished||(this._finished=!0,this.onFinish(),this._onComplete&&this._onComplete())}destroy(){this._helperTimeout&&clearTimeout(this._helperTimeout),U(this._target),this._target.removeEventListener("transitionend",this._onTransitionEnd,!1),this._target.removeEventListener("transitioncancel",this._onTransitionEnd,!1),this._finished||this._finalizeAnimation()}}const _t=12,vt=.75;class gt{constructor(t,i,e){this.velocity=t*1e3,this._dampingRatio=i||vt,this._naturalFrequency=e||_t,this._dampedFrequency=this._naturalFrequency,this._dampingRatio<1&&(this._dampedFrequency*=Math.sqrt(1-this._dampingRatio*this._dampingRatio))}easeFrame(t,i){let e=0,s;i/=1e3;const n=Math.E**(-this._dampingRatio*this._naturalFrequency*i);if(this._dampingRatio===1)s=this.velocity+this._naturalFrequency*t,e=(t+s*i)*n,this.velocity=e*-this._naturalFrequency+s*n;else if(this._dampingRatio<1){s=1/this._dampedFrequency*(this._dampingRatio*this._naturalFrequency*t+this.velocity);const o=Math.cos(this._dampedFrequency*i),a=Math.sin(this._dampedFrequency*i);e=n*(t*o+s*a),this.velocity=e*-this._naturalFrequency*this._dampingRatio+n*(-this._dampedFrequency*t*a+this._dampedFrequency*s*o)}return e}}class yt{constructor(t){this.props=t,this._raf=0;const{start:i,end:e,velocity:s,onUpdate:n,onComplete:o,onFinish:a=()=>{},dampingRatio:h,naturalFrequency:l}=t;this.onFinish=a;const c=new gt(s,h,l);let d=Date.now(),u=i-e;const m=()=>{this._raf&&(u=c.easeFrame(u,Date.now()-d),Math.abs(u)<1&&Math.abs(c.velocity)<50?(n(e),o&&o(),this.onFinish()):(d=Date.now(),n(u+e),this._raf=requestAnimationFrame(m)))};this._raf=requestAnimationFrame(m)}destroy(){this._raf>=0&&cancelAnimationFrame(this._raf),this._raf=0}}class wt{constructor(){this.activeAnimations=[]}startSpring(t){this._start(t,!0)}startTransition(t){this._start(t)}_start(t,i){const e=i?new yt(t):new ft(t);return this.activeAnimations.push(e),e.onFinish=()=>this.stop(e),e}stop(t){t.destroy();const i=this.activeAnimations.indexOf(t);i>-1&&this.activeAnimations.splice(i,1)}stopAll(){this.activeAnimations.forEach(t=>{t.destroy()}),this.activeAnimations=[]}stopAllPan(){this.activeAnimations=this.activeAnimations.filter(t=>t.props.isPan?(t.destroy(),!1):!0)}stopMainScroll(){this.activeAnimations=this.activeAnimations.filter(t=>t.props.isMainScroll?(t.destroy(),!1):!0)}isPanRunning(){return this.activeAnimations.some(t=>t.props.isPan)}}class Pt{constructor(t){this.pswp=t,t.events.add(t.element,"wheel",this._onWheel.bind(this))}_onWheel(t){t.preventDefault();const{currSlide:i}=this.pswp;let{deltaX:e,deltaY:s}=t;if(i&&!this.pswp.dispatch("wheel",{originalEvent:t}).defaultPrevented)if(t.ctrlKey||this.pswp.options.wheelToZoom){if(i.isZoomable()){let n=-s;t.deltaMode===1?n*=.05:n*=t.deltaMode?1:.002,n=2**n;const o=i.currZoomLevel*n;i.zoomTo(o,{x:t.clientX,y:t.clientY})}}else i.isPannable()&&(t.deltaMode===1&&(e*=18,s*=18),i.panTo(i.pan.x-e,i.pan.y-s))}}function St(r){if(typeof r=="string")return r;if(!r||!r.isCustomSVG)return"";const t=r;let i='",i}class xt{constructor(t,i){var e;const s=i.name||i.className;let n=i.html;if(t.options[s]===!1)return;typeof t.options[s+"SVG"]=="string"&&(n=t.options[s+"SVG"]),t.dispatch("uiElementCreate",{data:i});let o="";i.isButton?(o+="pswp__button ",o+=i.className||`pswp__button--${i.name}`):o+=i.className||`pswp__${i.name}`;let a=i.isButton?i.tagName||"button":i.tagName||"div";a=a.toLowerCase();const h=f(o,a);if(i.isButton){a==="button"&&(h.type="button");let{title:d}=i;const{ariaLabel:u}=i;typeof t.options[s+"Title"]=="string"&&(d=t.options[s+"Title"]),d&&(h.title=d);const m=u||d;m&&h.setAttribute("aria-label",m)}h.innerHTML=St(n),i.onInit&&i.onInit(h,t),i.onClick&&(h.onclick=d=>{typeof i.onClick=="string"?t[i.onClick]():typeof i.onClick=="function"&&i.onClick(d,h,t)});const l=i.appendTo||"bar";let c=t.element;l==="bar"?(t.topBar||(t.topBar=f("pswp__top-bar pswp__hide-on-close","div",t.scrollWrap)),c=t.topBar):(h.classList.add("pswp__hide-on-close"),l==="wrapper"&&(c=t.scrollWrap)),(e=c)===null||e===void 0||e.appendChild(t.applyFilters("uiElement",h,i))}}function H(r,t,i){r.classList.add("pswp__button--arrow"),r.setAttribute("aria-controls","pswp__items"),t.on("change",()=>{t.options.loop||(i?r.disabled=!(t.currIndex0))})}const bt={name:"arrowPrev",className:"pswp__button--arrow--prev",title:"Previous",order:10,isButton:!0,appendTo:"wrapper",html:{isCustomSVG:!0,size:60,inner:'',outlineID:"pswp__icn-arrow"},onClick:"prev",onInit:H},It={name:"arrowNext",className:"pswp__button--arrow--next",title:"Next",order:11,isButton:!0,appendTo:"wrapper",html:{isCustomSVG:!0,size:60,inner:'',outlineID:"pswp__icn-arrow"},onClick:"next",onInit:(r,t)=>{H(r,t,!0)}},At={name:"close",title:"Close",order:20,isButton:!0,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-close"},onClick:"close"},Lt={name:"zoom",title:"Zoom",order:10,isButton:!0,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-zoom"},onClick:"toggleZoom"},Ct={name:"preloader",appendTo:"bar",order:7,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-loading"},onInit:(r,t)=>{let i,e=null;const s=(a,h)=>{r.classList.toggle("pswp__preloader--"+a,h)},n=a=>{i!==a&&(i=a,s("active",a))},o=()=>{var a;if(!((a=t.currSlide)!==null&&a!==void 0&&a.content.isLoading())){n(!1),e&&(clearTimeout(e),e=null);return}e||(e=setTimeout(()=>{var h;n(!!(!((h=t.currSlide)===null||h===void 0)&&h.content.isLoading())),e=null},t.options.preloaderDelay))};t.on("change",o),t.on("loadComplete",a=>{t.currSlide===a.slide&&o()}),t.ui&&(t.ui.updatePreloaderVisibility=o)}},Tt={name:"counter",order:5,onInit:(r,t)=>{t.on("change",()=>{r.innerText=t.currIndex+1+t.options.indexIndicatorSep+t.getNumItems()})}};function D(r,t){r.classList.toggle("pswp--zoomed-in",t)}class zt{constructor(t){this.pswp=t,this.isRegistered=!1,this.uiElementsData=[],this.items=[],this.updatePreloaderVisibility=()=>{},this._lastUpdatedZoomLevel=void 0}init(){const{pswp:t}=this;this.isRegistered=!1,this.uiElementsData=[At,bt,It,Lt,Ct,Tt],t.dispatch("uiRegister"),this.uiElementsData.sort((i,e)=>(i.order||0)-(e.order||0)),this.items=[],this.isRegistered=!0,this.uiElementsData.forEach(i=>{this.registerElement(i)}),t.on("change",()=>{var i;(i=t.element)===null||i===void 0||i.classList.toggle("pswp--one-slide",t.getNumItems()===1)}),t.on("zoomPanUpdate",()=>this._onZoomPanUpdate())}registerElement(t){this.isRegistered?this.items.push(new xt(this.pswp,t)):this.uiElementsData.push(t)}_onZoomPanUpdate(){const{template:t,currSlide:i,options:e}=this.pswp;if(this.pswp.opener.isClosing||!t||!i)return;let{currZoomLevel:s}=i;if(this.pswp.opener.isOpen||(s=i.zoomLevels.initial),s===this._lastUpdatedZoomLevel)return;this._lastUpdatedZoomLevel=s;const n=i.zoomLevels.initial-i.zoomLevels.secondary;if(Math.abs(n)<.01||!i.isZoomable()){D(t,!1),t.classList.remove("pswp--zoom-allowed");return}t.classList.add("pswp--zoom-allowed");const o=s===i.zoomLevels.initial?i.zoomLevels.secondary:i.zoomLevels.initial;D(t,o<=s),(e.imageClickAction==="zoom"||e.imageClickAction==="zoom-or-close")&&t.classList.add("pswp--click-to-zoom")}}function Et(r){const t=r.getBoundingClientRect();return{x:t.left,y:t.top,w:t.width}}function Ot(r,t,i){const e=r.getBoundingClientRect(),s=e.width/t,n=e.height/i,o=s>n?s:n,a=(e.width-t*o)/2,h=(e.height-i*o)/2,l={x:e.left+a,y:e.top+h,w:t*o};return l.innerRect={w:e.width,h:e.height,x:a,y:h},l}function Zt(r,t,i){const e=i.dispatch("thumbBounds",{index:r,itemData:t,instance:i});if(e.thumbBounds)return e.thumbBounds;const{element:s}=t;let n,o;if(s&&i.options.thumbSelector!==!1){const a=i.options.thumbSelector||"img";o=s.matches(a)?s:s.querySelector(a)}return o=i.applyFilters("thumbEl",o,t,r),o&&(t.thumbCropped?n=Ot(o,t.width||t.w||0,t.height||t.h||0):n=Et(o)),i.applyFilters("thumbBounds",n,t,r)}class Dt{constructor(t,i){this.type=t,this.defaultPrevented=!1,i&&Object.assign(this,i)}preventDefault(){this.defaultPrevented=!0}}class Mt{constructor(){this._listeners={},this._filters={},this.pswp=void 0,this.options=void 0}addFilter(t,i,e=100){var s,n,o;this._filters[t]||(this._filters[t]=[]),(s=this._filters[t])===null||s===void 0||s.push({fn:i,priority:e}),(n=this._filters[t])===null||n===void 0||n.sort((a,h)=>a.priority-h.priority),(o=this.pswp)===null||o===void 0||o.addFilter(t,i,e)}removeFilter(t,i){this._filters[t]&&(this._filters[t]=this._filters[t].filter(e=>e.fn!==i)),this.pswp&&this.pswp.removeFilter(t,i)}applyFilters(t,...i){var e;return(e=this._filters[t])===null||e===void 0||e.forEach(s=>{i[0]=s.fn.apply(this,i)}),i[0]}on(t,i){var e,s;this._listeners[t]||(this._listeners[t]=[]),(e=this._listeners[t])===null||e===void 0||e.push(i),(s=this.pswp)===null||s===void 0||s.on(t,i)}off(t,i){var e;this._listeners[t]&&(this._listeners[t]=this._listeners[t].filter(s=>i!==s)),(e=this.pswp)===null||e===void 0||e.off(t,i)}dispatch(t,i){var e;if(this.pswp)return this.pswp.dispatch(t,i);const s=new Dt(t,i);return(e=this._listeners[t])===null||e===void 0||e.forEach(n=>{n.call(this,s)}),s}}class Rt{constructor(t,i){if(this.element=f("pswp__img pswp__img--placeholder",t?"img":"div",i),t){const e=this.element;e.decoding="async",e.alt="",e.src=t,e.setAttribute("role","presentation")}this.element.setAttribute("aria-hidden","true")}setDisplayedSize(t,i){this.element&&(this.element.tagName==="IMG"?(L(this.element,250,"auto"),this.element.style.transformOrigin="0 0",this.element.style.transform=b(0,0,t/250)):L(this.element,t,i))}destroy(){var t;(t=this.element)!==null&&t!==void 0&&t.parentNode&&this.element.remove(),this.element=null}}class Ft{constructor(t,i,e){this.instance=i,this.data=t,this.index=e,this.element=void 0,this.placeholder=void 0,this.slide=void 0,this.displayedImageWidth=0,this.displayedImageHeight=0,this.width=Number(this.data.w)||Number(this.data.width)||0,this.height=Number(this.data.h)||Number(this.data.height)||0,this.isAttached=!1,this.hasSlide=!1,this.isDecoding=!1,this.state=_.IDLE,this.data.type?this.type=this.data.type:this.data.src?this.type="image":this.type="html",this.instance.dispatch("contentInit",{content:this})}removePlaceholder(){this.placeholder&&!this.keepPlaceholder()&&setTimeout(()=>{this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0)},1e3)}load(t,i){if(this.slide&&this.usePlaceholder())if(this.placeholder){const e=this.placeholder.element;e&&!e.parentElement&&this.slide.container.prepend(e)}else{const e=this.instance.applyFilters("placeholderSrc",this.data.msrc&&this.slide.isFirstSlide?this.data.msrc:!1,this);this.placeholder=new Rt(e,this.slide.container)}this.element&&!i||this.instance.dispatch("contentLoad",{content:this,isLazy:t}).defaultPrevented||(this.isImageContent()?(this.element=f("pswp__img","img"),this.displayedImageWidth&&this.loadImage(t)):(this.element=f("pswp__content","div"),this.element.innerHTML=this.data.html||""),i&&this.slide&&this.slide.updateContentSize(!0))}loadImage(t){var i,e;if(!this.isImageContent()||!this.element||this.instance.dispatch("contentLoadImage",{content:this,isLazy:t}).defaultPrevented)return;const s=this.element;this.updateSrcsetSizes(),this.data.srcset&&(s.srcset=this.data.srcset),s.src=(i=this.data.src)!==null&&i!==void 0?i:"",s.alt=(e=this.data.alt)!==null&&e!==void 0?e:"",this.state=_.LOADING,s.complete?this.onLoaded():(s.onload=()=>{this.onLoaded()},s.onerror=()=>{this.onError()})}setSlide(t){this.slide=t,this.hasSlide=!0,this.instance=t.pswp}onLoaded(){this.state=_.LOADED,this.slide&&this.element&&(this.instance.dispatch("loadComplete",{slide:this.slide,content:this}),this.slide.isActive&&this.slide.heavyAppended&&!this.element.parentNode&&(this.append(),this.slide.updateContentSize(!0)),(this.state===_.LOADED||this.state===_.ERROR)&&this.removePlaceholder())}onError(){this.state=_.ERROR,this.slide&&(this.displayError(),this.instance.dispatch("loadComplete",{slide:this.slide,isError:!0,content:this}),this.instance.dispatch("loadError",{slide:this.slide,content:this}))}isLoading(){return this.instance.applyFilters("isContentLoading",this.state===_.LOADING,this)}isError(){return this.state===_.ERROR}isImageContent(){return this.type==="image"}setDisplayedSize(t,i){if(this.element&&(this.placeholder&&this.placeholder.setDisplayedSize(t,i),!this.instance.dispatch("contentResize",{content:this,width:t,height:i}).defaultPrevented&&(L(this.element,t,i),this.isImageContent()&&!this.isError()))){const e=!this.displayedImageWidth&&t;this.displayedImageWidth=t,this.displayedImageHeight=i,e?this.loadImage(!1):this.updateSrcsetSizes(),this.slide&&this.instance.dispatch("imageSizeChange",{slide:this.slide,width:t,height:i,content:this})}}isZoomable(){return this.instance.applyFilters("isContentZoomable",this.isImageContent()&&this.state!==_.ERROR,this)}updateSrcsetSizes(){if(!this.isImageContent()||!this.element||!this.data.srcset)return;const t=this.element,i=this.instance.applyFilters("srcsetSizesWidth",this.displayedImageWidth,this);(!t.dataset.largestUsedSize||i>parseInt(t.dataset.largestUsedSize,10))&&(t.sizes=i+"px",t.dataset.largestUsedSize=String(i))}usePlaceholder(){return this.instance.applyFilters("useContentPlaceholder",this.isImageContent(),this)}lazyLoad(){this.instance.dispatch("contentLazyLoad",{content:this}).defaultPrevented||this.load(!0)}keepPlaceholder(){return this.instance.applyFilters("isKeepingPlaceholder",this.isLoading(),this)}destroy(){this.hasSlide=!1,this.slide=void 0,!this.instance.dispatch("contentDestroy",{content:this}).defaultPrevented&&(this.remove(),this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0),this.isImageContent()&&this.element&&(this.element.onload=null,this.element.onerror=null,this.element=void 0))}displayError(){if(this.slide){var t,i;let e=f("pswp__error-msg","div");e.innerText=(t=(i=this.instance.options)===null||i===void 0?void 0:i.errorMsg)!==null&&t!==void 0?t:"",e=this.instance.applyFilters("contentErrorElement",e,this),this.element=f("pswp__content pswp__error-msg-container","div"),this.element.appendChild(e),this.slide.container.innerText="",this.slide.container.appendChild(this.element),this.slide.updateContentSize(!0),this.removePlaceholder()}}append(){if(this.isAttached||!this.element)return;if(this.isAttached=!0,this.state===_.ERROR){this.displayError();return}if(this.instance.dispatch("contentAppend",{content:this}).defaultPrevented)return;const t="decode"in this.element;this.isImageContent()?t&&this.slide&&(!this.slide.isActive||C())?(this.isDecoding=!0,this.element.decode().catch(()=>{}).finally(()=>{this.isDecoding=!1,this.appendImage()})):this.appendImage():this.slide&&!this.element.parentNode&&this.slide.container.appendChild(this.element)}activate(){this.instance.dispatch("contentActivate",{content:this}).defaultPrevented||!this.slide||(this.isImageContent()&&this.isDecoding&&!C()?this.appendImage():this.isError()&&this.load(!1,!0),this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","false"))}deactivate(){this.instance.dispatch("contentDeactivate",{content:this}),this.slide&&this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","true")}remove(){this.isAttached=!1,!this.instance.dispatch("contentRemove",{content:this}).defaultPrevented&&(this.element&&this.element.parentNode&&this.element.remove(),this.placeholder&&this.placeholder.element&&this.placeholder.element.remove())}appendImage(){this.isAttached&&(this.instance.dispatch("contentAppendImage",{content:this}).defaultPrevented||(this.slide&&this.element&&!this.element.parentNode&&this.slide.container.appendChild(this.element),(this.state===_.LOADED||this.state===_.ERROR)&&this.removePlaceholder()))}}const Bt=5;function W(r,t,i){const e=t.createContentFromData(r,i);let s;const{options:n}=t;if(n){s=new k(n,r,-1);let o;t.pswp?o=t.pswp.viewportSize:o=B(n,t);const a=N(n,o,r,i);s.update(e.width,e.height,a)}return e.lazyLoad(),s&&e.setDisplayedSize(Math.ceil(e.width*s.initial),Math.ceil(e.height*s.initial)),e}function Nt(r,t){const i=t.getItemData(r);if(!t.dispatch("lazyLoadSlide",{index:r,itemData:i}).defaultPrevented)return W(i,t,r)}class kt{constructor(t){this.pswp=t,this.limit=Math.max(t.options.preload[0]+t.options.preload[1]+1,Bt),this._cachedItems=[]}updateLazy(t){const{pswp:i}=this;if(i.dispatch("lazyLoad").defaultPrevented)return;const{preload:e}=i.options,s=t===void 0?!0:t>=0;let n;for(n=0;n<=e[1];n++)this.loadSlideByIndex(i.currIndex+(s?n:-n));for(n=1;n<=e[0];n++)this.loadSlideByIndex(i.currIndex+(s?-n:n))}loadSlideByIndex(t){const i=this.pswp.getLoopedIndex(t);let e=this.getContentByIndex(i);e||(e=Nt(i,this.pswp),e&&this.addToCache(e))}getContentBySlide(t){let i=this.getContentByIndex(t.index);return i||(i=this.pswp.createContentFromData(t.data,t.index),this.addToCache(i)),i.setSlide(t),i}addToCache(t){if(this.removeByIndex(t.index),this._cachedItems.push(t),this._cachedItems.length>this.limit){const i=this._cachedItems.findIndex(e=>!e.isAttached&&!e.hasSlide);i!==-1&&this._cachedItems.splice(i,1)[0].destroy()}}removeByIndex(t){const i=this._cachedItems.findIndex(e=>e.index===t);i!==-1&&this._cachedItems.splice(i,1)}getContentByIndex(t){return this._cachedItems.find(i=>i.index===t)}destroy(){this._cachedItems.forEach(t=>t.destroy()),this._cachedItems=[]}}class Ht extends Mt{getNumItems(){var t;let i=0;const e=(t=this.options)===null||t===void 0?void 0:t.dataSource;e&&"length"in e?i=e.length:e&&"gallery"in e&&(e.items||(e.items=this._getGalleryDOMElements(e.gallery)),e.items&&(i=e.items.length));const s=this.dispatch("numItems",{dataSource:e,numItems:i});return this.applyFilters("numItems",s.numItems,e)}createContentFromData(t,i){return new Ft(t,this,i)}getItemData(t){var i;const e=(i=this.options)===null||i===void 0?void 0:i.dataSource;let s={};Array.isArray(e)?s=e[t]:e&&"gallery"in e&&(e.items||(e.items=this._getGalleryDOMElements(e.gallery)),s=e.items[t]);let n=s;n instanceof Element&&(n=this._domElementToItemData(n));const o=this.dispatch("itemData",{itemData:n||{},index:t});return this.applyFilters("itemData",o.itemData,t)}_getGalleryDOMElements(t){var i,e;return(i=this.options)!==null&&i!==void 0&&i.children||(e=this.options)!==null&&e!==void 0&&e.childSelector?K(this.options.children,this.options.childSelector,t)||[]:[t]}_domElementToItemData(t){const i={element:t},e=t.tagName==="A"?t:t.querySelector("a");if(e){i.src=e.dataset.pswpSrc||e.href,e.dataset.pswpSrcset&&(i.srcset=e.dataset.pswpSrcset),i.width=e.dataset.pswpWidth?parseInt(e.dataset.pswpWidth,10):0,i.height=e.dataset.pswpHeight?parseInt(e.dataset.pswpHeight,10):0,i.w=i.width,i.h=i.height,e.dataset.pswpType&&(i.type=e.dataset.pswpType);const n=t.querySelector("img");if(n){var s;i.msrc=n.currentSrc||n.src,i.alt=(s=n.getAttribute("alt"))!==null&&s!==void 0?s:""}(e.dataset.pswpCropped||e.dataset.cropped)&&(i.thumbCropped=!0)}return this.applyFilters("domItemData",i,t,e)}lazyLoadData(t,i){return W(t,this,i)}}const P=.003;class Wt{constructor(t){this.pswp=t,this.isClosed=!0,this.isOpen=!1,this.isClosing=!1,this.isOpening=!1,this._duration=void 0,this._useAnimation=!1,this._croppedZoom=!1,this._animateRootOpacity=!1,this._animateBgOpacity=!1,this._placeholder=void 0,this._opacityElement=void 0,this._cropContainer1=void 0,this._cropContainer2=void 0,this._thumbBounds=void 0,this._prepareOpen=this._prepareOpen.bind(this),t.on("firstZoomPan",this._prepareOpen)}open(){this._prepareOpen(),this._start()}close(){if(this.isClosed||this.isClosing||this.isOpening)return;const t=this.pswp.currSlide;this.isOpen=!1,this.isOpening=!1,this.isClosing=!0,this._duration=this.pswp.options.hideAnimationDuration,t&&t.currZoomLevel*t.width>=this.pswp.options.maxWidthToAnimate&&(this._duration=0),this._applyStartProps(),setTimeout(()=>{this._start()},this._croppedZoom?30:0)}_prepareOpen(){if(this.pswp.off("firstZoomPan",this._prepareOpen),!this.isOpening){const t=this.pswp.currSlide;this.isOpening=!0,this.isClosing=!1,this._duration=this.pswp.options.showAnimationDuration,t&&t.zoomLevels.initial*t.width>=this.pswp.options.maxWidthToAnimate&&(this._duration=0),this._applyStartProps()}}_applyStartProps(){const{pswp:t}=this,i=this.pswp.currSlide,{options:e}=t;if(e.showHideAnimationType==="fade"?(e.showHideOpacity=!0,this._thumbBounds=void 0):e.showHideAnimationType==="none"?(e.showHideOpacity=!1,this._duration=0,this._thumbBounds=void 0):this.isOpening&&t._initialThumbBounds?this._thumbBounds=t._initialThumbBounds:this._thumbBounds=this.pswp.getThumbBounds(),this._placeholder=i==null?void 0:i.getPlaceholderElement(),t.animations.stopAll(),this._useAnimation=!!(this._duration&&this._duration>50),this._animateZoom=!!this._thumbBounds&&(i==null?void 0:i.content.usePlaceholder())&&(!this.isClosing||!t.mainScroll.isShifted()),!this._animateZoom)this._animateRootOpacity=!0,this.isOpening&&i&&(i.zoomAndPanToInitial(),i.applyCurrentZoomPan());else{var s;this._animateRootOpacity=(s=e.showHideOpacity)!==null&&s!==void 0?s:!1}if(this._animateBgOpacity=!this._animateRootOpacity&&this.pswp.options.bgOpacity>P,this._opacityElement=this._animateRootOpacity?t.element:t.bg,!this._useAnimation){this._duration=0,this._animateZoom=!1,this._animateBgOpacity=!1,this._animateRootOpacity=!0,this.isOpening&&(t.element&&(t.element.style.opacity=String(P)),t.applyBgOpacity(1));return}if(this._animateZoom&&this._thumbBounds&&this._thumbBounds.innerRect){var n;this._croppedZoom=!0,this._cropContainer1=this.pswp.container,this._cropContainer2=(n=this.pswp.currSlide)===null||n===void 0?void 0:n.holderElement,t.container&&(t.container.style.overflow="hidden",t.container.style.width=t.viewportSize.x+"px")}else this._croppedZoom=!1;this.isOpening?(this._animateRootOpacity?(t.element&&(t.element.style.opacity=String(P)),t.applyBgOpacity(1)):(this._animateBgOpacity&&t.bg&&(t.bg.style.opacity=String(P)),t.element&&(t.element.style.opacity="1")),this._animateZoom&&(this._setClosedStateZoomPan(),this._placeholder&&(this._placeholder.style.willChange="transform",this._placeholder.style.opacity=String(P)))):this.isClosing&&(t.mainScroll.itemHolders[0]&&(t.mainScroll.itemHolders[0].el.style.display="none"),t.mainScroll.itemHolders[2]&&(t.mainScroll.itemHolders[2].el.style.display="none"),this._croppedZoom&&t.mainScroll.x!==0&&(t.mainScroll.resetPosition(),t.mainScroll.resize()))}_start(){this.isOpening&&this._useAnimation&&this._placeholder&&this._placeholder.tagName==="IMG"?new Promise(t=>{let i=!1,e=!0;q(this._placeholder).finally(()=>{i=!0,e||t(!0)}),setTimeout(()=>{e=!1,i&&t(!0)},50),setTimeout(t,250)}).finally(()=>this._initiate()):this._initiate()}_initiate(){var t,i;(t=this.pswp.element)===null||t===void 0||t.style.setProperty("--pswp-transition-duration",this._duration+"ms"),this.pswp.dispatch(this.isOpening?"openingAnimationStart":"closingAnimationStart"),this.pswp.dispatch("initialZoom"+(this.isOpening?"In":"Out")),(i=this.pswp.element)===null||i===void 0||i.classList.toggle("pswp--ui-visible",this.isOpening),this.isOpening?(this._placeholder&&(this._placeholder.style.opacity="1"),this._animateToOpenState()):this.isClosing&&this._animateToClosedState(),this._useAnimation||this._onAnimationComplete()}_onAnimationComplete(){const{pswp:t}=this;if(this.isOpen=this.isOpening,this.isClosed=this.isClosing,this.isOpening=!1,this.isClosing=!1,t.dispatch(this.isOpen?"openingAnimationEnd":"closingAnimationEnd"),t.dispatch("initialZoom"+(this.isOpen?"InEnd":"OutEnd")),this.isClosed)t.destroy();else if(this.isOpen){var i;this._animateZoom&&t.container&&(t.container.style.overflow="visible",t.container.style.width="100%"),(i=t.currSlide)===null||i===void 0||i.applyCurrentZoomPan()}}_animateToOpenState(){const{pswp:t}=this;this._animateZoom&&(this._croppedZoom&&this._cropContainer1&&this._cropContainer2&&(this._animateTo(this._cropContainer1,"transform","translate3d(0,0,0)"),this._animateTo(this._cropContainer2,"transform","none")),t.currSlide&&(t.currSlide.zoomAndPanToInitial(),this._animateTo(t.currSlide.container,"transform",t.currSlide.getCurrentTransform()))),this._animateBgOpacity&&t.bg&&this._animateTo(t.bg,"opacity",String(t.options.bgOpacity)),this._animateRootOpacity&&t.element&&this._animateTo(t.element,"opacity","1")}_animateToClosedState(){const{pswp:t}=this;this._animateZoom&&this._setClosedStateZoomPan(!0),this._animateBgOpacity&&t.bgOpacity>.01&&t.bg&&this._animateTo(t.bg,"opacity","0"),this._animateRootOpacity&&t.element&&this._animateTo(t.element,"opacity","0")}_setClosedStateZoomPan(t){if(!this._thumbBounds)return;const{pswp:i}=this,{innerRect:e}=this._thumbBounds,{currSlide:s,viewportSize:n}=i;if(this._croppedZoom&&e&&this._cropContainer1&&this._cropContainer2){const o=-n.x+(this._thumbBounds.x-e.x)+e.w,a=-n.y+(this._thumbBounds.y-e.y)+e.h,h=n.x-e.w,l=n.y-e.h;t?(this._animateTo(this._cropContainer1,"transform",b(o,a)),this._animateTo(this._cropContainer2,"transform",b(h,l))):(y(this._cropContainer1,o,a),y(this._cropContainer2,h,l))}s&&(p(s.pan,e||this._thumbBounds),s.currZoomLevel=this._thumbBounds.w/s.width,t?this._animateTo(s.container,"transform",s.getCurrentTransform()):s.applyCurrentZoomPan())}_animateTo(t,i,e){if(!this._duration){t.style[i]=e;return}const{animations:s}=this.pswp,n={duration:this._duration,easing:this.pswp.options.easing,onComplete:()=>{s.activeAnimations.length||this._onAnimationComplete()},target:t};n[i]=e,s.startTransition(n)}}const Vt={allowPanToNext:!0,spacing:.1,loop:!0,pinchToClose:!0,closeOnVerticalDrag:!0,hideAnimationDuration:333,showAnimationDuration:333,zoomAnimationDuration:333,escKey:!0,arrowKeys:!0,trapFocus:!0,returnFocus:!0,maxWidthToAnimate:4e3,clickToCloseNonZoomable:!0,imageClickAction:"zoom-or-close",bgClickAction:"close",tapAction:"toggle-controls",doubleTapAction:"zoom",indexIndicatorSep:" / ",preloaderDelay:2e3,bgOpacity:.8,index:0,errorMsg:"The image cannot be loaded",preload:[1,2],easing:"cubic-bezier(.4,0,.22,1)"};class $t extends Ht{constructor(t){super(),this.options=this._prepareOptions(t||{}),this.offset={x:0,y:0},this._prevViewportSize={x:0,y:0},this.viewportSize={x:0,y:0},this.bgOpacity=1,this.currIndex=0,this.potentialIndex=0,this.isOpen=!1,this.isDestroying=!1,this.hasMouse=!1,this._initialItemData={},this._initialThumbBounds=void 0,this.topBar=void 0,this.element=void 0,this.template=void 0,this.container=void 0,this.scrollWrap=void 0,this.currSlide=void 0,this.events=new X,this.animations=new wt,this.mainScroll=new dt(this),this.gestures=new lt(this),this.opener=new Wt(this),this.keyboard=new ut(this),this.contentLoader=new kt(this)}init(){if(this.isOpen||this.isDestroying)return!1;this.isOpen=!0,this.dispatch("init"),this.dispatch("beforeOpen"),this._createMainStructure();let t="pswp--open";return this.gestures.supportsTouch&&(t+=" pswp--touch"),this.options.mainClass&&(t+=" "+this.options.mainClass),this.element&&(this.element.className+=" "+t),this.currIndex=this.options.index||0,this.potentialIndex=this.currIndex,this.dispatch("firstUpdate"),this.scrollWheel=new Pt(this),(Number.isNaN(this.currIndex)||this.currIndex<0||this.currIndex>=this.getNumItems())&&(this.currIndex=0),this.gestures.supportsTouch||this.mouseDetected(),this.updateSize(),this.offset.y=window.pageYOffset,this._initialItemData=this.getItemData(this.currIndex),this.dispatch("gettingData",{index:this.currIndex,data:this._initialItemData,slide:void 0}),this._initialThumbBounds=this.getThumbBounds(),this.dispatch("initialLayout"),this.on("openingAnimationEnd",()=>{const{itemHolders:i}=this.mainScroll;i[0]&&(i[0].el.style.display="block",this.setContent(i[0],this.currIndex-1)),i[2]&&(i[2].el.style.display="block",this.setContent(i[2],this.currIndex+1)),this.appendHeavy(),this.contentLoader.updateLazy(),this.events.add(window,"resize",this._handlePageResize.bind(this)),this.events.add(window,"scroll",this._updatePageScrollOffset.bind(this)),this.dispatch("bindEvents")}),this.mainScroll.itemHolders[1]&&this.setContent(this.mainScroll.itemHolders[1],this.currIndex),this.dispatch("change"),this.opener.open(),this.dispatch("afterInit"),!0}getLoopedIndex(t){const i=this.getNumItems();return this.options.loop&&(t>i-1&&(t-=i),t<0&&(t+=i)),I(t,0,i-1)}appendHeavy(){this.mainScroll.itemHolders.forEach(t=>{var i;(i=t.slide)===null||i===void 0||i.appendHeavy()})}goTo(t){this.mainScroll.moveIndexBy(this.getLoopedIndex(t)-this.potentialIndex)}next(){this.goTo(this.potentialIndex+1)}prev(){this.goTo(this.potentialIndex-1)}zoomTo(...t){var i;(i=this.currSlide)===null||i===void 0||i.zoomTo(...t)}toggleZoom(){var t;(t=this.currSlide)===null||t===void 0||t.toggleZoom()}close(){!this.opener.isOpen||this.isDestroying||(this.isDestroying=!0,this.dispatch("close"),this.events.removeAll(),this.opener.close())}destroy(){var t;if(!this.isDestroying){this.options.showHideAnimationType="none",this.close();return}this.dispatch("destroy"),this._listeners={},this.scrollWrap&&(this.scrollWrap.ontouchmove=null,this.scrollWrap.ontouchend=null),(t=this.element)===null||t===void 0||t.remove(),this.mainScroll.itemHolders.forEach(i=>{var e;(e=i.slide)===null||e===void 0||e.destroy()}),this.contentLoader.destroy(),this.events.removeAll()}refreshSlideContent(t){this.contentLoader.removeByIndex(t),this.mainScroll.itemHolders.forEach((i,e)=>{var s,n;let o=((s=(n=this.currSlide)===null||n===void 0?void 0:n.index)!==null&&s!==void 0?s:0)-1+e;if(this.canLoop()&&(o=this.getLoopedIndex(o)),o===t&&(this.setContent(i,t,!0),e===1)){var a;this.currSlide=i.slide,(a=i.slide)===null||a===void 0||a.setIsActive(!0)}}),this.dispatch("change")}setContent(t,i,e){if(this.canLoop()&&(i=this.getLoopedIndex(i)),t.slide){if(t.slide.index===i&&!e)return;t.slide.destroy(),t.slide=void 0}if(!this.canLoop()&&(i<0||i>=this.getNumItems()))return;const s=this.getItemData(i);t.slide=new j(s,i,this),i===this.currIndex&&(this.currSlide=t.slide),t.slide.append(t.el)}getViewportCenterPoint(){return{x:this.viewportSize.x/2,y:this.viewportSize.y/2}}updateSize(t){if(this.isDestroying)return;const i=B(this.options,this);!t&&x(i,this._prevViewportSize)||(p(this._prevViewportSize,i),this.dispatch("beforeResize"),p(this.viewportSize,this._prevViewportSize),this._updatePageScrollOffset(),this.dispatch("viewportSize"),this.mainScroll.resize(this.opener.isOpen),!this.hasMouse&&window.matchMedia("(any-hover: hover)").matches&&this.mouseDetected(),this.dispatch("resize"))}applyBgOpacity(t){this.bgOpacity=Math.max(t,0),this.bg&&(this.bg.style.opacity=String(this.bgOpacity*this.options.bgOpacity))}mouseDetected(){if(!this.hasMouse){var t;this.hasMouse=!0,(t=this.element)===null||t===void 0||t.classList.add("pswp--has_mouse")}}_handlePageResize(){this.updateSize(),/iPhone|iPad|iPod/i.test(window.navigator.userAgent)&&setTimeout(()=>{this.updateSize()},500)}_updatePageScrollOffset(){this.setScrollOffset(0,window.pageYOffset)}setScrollOffset(t,i){this.offset.x=t,this.offset.y=i,this.dispatch("updateScrollOffset")}_createMainStructure(){this.element=f("pswp","div"),this.element.setAttribute("tabindex","-1"),this.element.setAttribute("role","dialog"),this.template=this.element,this.bg=f("pswp__bg","div",this.element),this.scrollWrap=f("pswp__scroll-wrap","section",this.element),this.container=f("pswp__container","div",this.scrollWrap),this.scrollWrap.setAttribute("aria-roledescription","carousel"),this.container.setAttribute("aria-live","off"),this.container.setAttribute("id","pswp__items"),this.mainScroll.appendHolders(),this.ui=new zt(this),this.ui.init(),(this.options.appendToEl||document.body).appendChild(this.element)}getThumbBounds(){return Zt(this.currIndex,this.currSlide?this.currSlide.data:this._initialItemData,this)}canLoop(){return this.options.loop&&this.getNumItems()>2}_prepareOptions(t){return window.matchMedia("(prefers-reduced-motion), (update: slow)").matches&&(t.showHideAnimationType="none",t.zoomAnimationDuration=0),{...Vt,...t}}}export{$t as default}; diff --git a/assets/plugin-vue_export-helper-c27b6911.js b/assets/plugin-vue_export-helper-c27b6911.js new file mode 100644 index 00000000..718edd33 --- /dev/null +++ b/assets/plugin-vue_export-helper-c27b6911.js @@ -0,0 +1 @@ +const s=(t,r)=>{const o=t.__vccOpts||t;for(const[c,e]of r)o[c]=e;return o};export{s as _}; diff --git a/assets/request-response.html-0fb1896d.js b/assets/request-response.html-0fb1896d.js new file mode 100644 index 00000000..56220f9d --- /dev/null +++ b/assets/request-response.html-0fb1896d.js @@ -0,0 +1,29 @@ +import{_ as s}from"./plugin-vue_export-helper-c27b6911.js";import{o as n,c as a,e}from"./app-edf8b1e7.js";const t={},o=e(`

提示

Shamrock 为您提供了一个支持 OneBot 标准的 HTTP API。
您可以通过发送 HTTP 请求来与 Shamrock 进行交互。

请求

提示

Shamrock 目前支持 GET 和 POST 两种请求方式。
在大部分情况下,您可以使用 GET 请求来与 Shamrock 进行交互。
但是,如果您需要向 Shamrock 发送大量数据,或者需要向 Shamrock 发送二进制数据,您需要使用 POST 请求。

GET 请求

GET 请求的 URL 由以下部分组成:

http://<host>:<port>/<endpoint>?<params>
+

链接中的含义如下:

  • <host>:Shamrock 的 IP 地址或域名
  • <port>:Shamrock 的 HTTP API 端口
  • <endpoint>:Shamrock 的 HTTP API 端点
  • <params>:HTTP GET 请求的参数

POST 请求

POST 请求的 URL 由以下部分组成:

http://<host>:<port>/<endpoint>
+

链接中的含义如下:

  • <host>:Shamrock 的 IP 地址或域名
  • <port>:Shamrock 的 HTTP API 端口
  • <endpoint>:Shamrock 的 HTTP API 端点

请求格式

POST 请求的数据格式为 JSON

{
+  "param1": "value1",
+  "param2": "value2",
+  ...
+}
+

POST 请求的数据格式为表单

param1=value1&param2=value2&...
+

大多数情况下,推荐使用 JSON 格式的 POST 请求。

WebSocket 请求

Shamrock 支持使用 WebSocket 进行通信。

可选的 WebSocket 地址有两种:

  • ws://<host>:<port>
  • ws://<host>:<port>/api

区别在于,/ 除了发送和响应 API 请求外,还支持事件上报功能。

请求格式

Shamrock 使用 WebSocket 时,请求的数据格式为 JSON

{
+  "action": "send_private_msg", // 请求 API 端点
+  "params": {
+    // 请求参数
+    "user_id": 10000,
+    "message": "hello"
+  },
+  "echo": "123456" // 自定义的回显字段
+}
+

对于 echo 字段,Shamrock 会在响应中原样返回。

响应

Shamrock 的响应格式为 JSON

{
+  "status": "ok", // 状态,ok 为成功,其他将在下文中详细说明
+  "retcode": 0, // 返回码,0 为成功,非 0 为失败
+  "msg": "", // 错误信息,仅在 API 调用失败时出现
+  "wording": "", // 对错误信息的描述,仅在 API 调用失败时出现
+  "data": {
+    // 响应数据
+    "message_id": 123456
+  },
+  "echo": "123456" // 请求中的回显字段
+}
+

状态

Shamrock 的响应状态有以下几种:

  • ok:成功
  • failed:失败
`,34),p=[o];function c(i,l){return n(),a("div",null,p)}const u=s(t,[["render",c],["__file","request-response.html.vue"]]);export{u as default}; diff --git a/assets/request-response.html-2fa1a2de.js b/assets/request-response.html-2fa1a2de.js new file mode 100644 index 00000000..2b707071 --- /dev/null +++ b/assets/request-response.html-2fa1a2de.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-50f1df6c","path":"/api/request-response.html","title":"请求与响应","lang":"zh-CN","frontmatter":{"title":"请求与响应","icon":"server"},"headers":[{"level":2,"title":"请求","slug":"请求","link":"#请求","children":[{"level":3,"title":"GET 请求","slug":"get-请求","link":"#get-请求","children":[]},{"level":3,"title":"POST 请求","slug":"post-请求","link":"#post-请求","children":[]},{"level":3,"title":"WebSocket 请求","slug":"websocket-请求","link":"#websocket-请求","children":[]},{"level":3,"title":"请求格式","slug":"请求格式-1","link":"#请求格式-1","children":[]}]},{"level":2,"title":"响应","slug":"响应","link":"#响应","children":[{"level":3,"title":"状态","slug":"状态","link":"#状态","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1698464511000,"contributors":[{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":1.76,"words":529},"filePathRelative":"api/request-response.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/request.html-0743679e.js b/assets/request.html-0743679e.js new file mode 100644 index 00000000..b3cf1864 --- /dev/null +++ b/assets/request.html-0743679e.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-61fe5fb8","path":"/event/request.html","title":"请求事件","lang":"zh-CN","frontmatter":{"title":"请求事件","icon":"bullhorn"},"headers":[{"level":2,"title":"加好友请求","slug":"加好友请求","link":"#加好友请求","children":[{"level":3,"title":"快速处理","slug":"快速处理","link":"#快速处理","children":[]}]},{"level":2,"title":"加群请求/邀请","slug":"加群请求-邀请","link":"#加群请求-邀请","children":[{"level":3,"title":"快速处理","slug":"快速处理-1","link":"#快速处理-1","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1706818853000,"contributors":[{"name":"Shuangzhe Chen","email":"54205081+chshzhe@users.noreply.github.com","commits":1},{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":0.92,"words":277},"filePathRelative":"event/request.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/request.html-e5727604.js b/assets/request.html-e5727604.js new file mode 100644 index 00000000..ee1b37d1 --- /dev/null +++ b/assets/request.html-e5727604.js @@ -0,0 +1 @@ +import{_ as n}from"./plugin-vue_export-helper-c27b6911.js";import{r as e,o as h,c as i,a as t,d,b as r,w as s,e as c}from"./app-edf8b1e7.js";const l={},_={class:"hint-container warning"},p=t("p",{class:"hint-container-title"},"注意",-1),b={class:"hint-container tip"},u=t("p",{class:"hint-container-title"},"提示",-1),m=t("br",null,null,-1),f=c('

加好友请求

request_typefriend 时,表示收到了加好友请求。

字段类型说明
user_idint64请求者 QQ 号
commentstring验证信息
flagstring请求 flag

快速处理

Shamrock 提供了快速处理的功能,可以在收到请求时快速处理请求。

字段类型说明
approvebool是否同意
remarkstring备注

加群请求/邀请

request_typegroup 时,表示收到了加群请求/邀请。

字段类型说明
group_idint64群号
user_idint64请求者 QQ 号
commentstring验证信息
flagstring请求 flag
sub_typestring子类型(add/invite)

快速处理

Shamrock 提供了快速处理的功能,可以在收到请求时快速处理请求。

字段类型说明
approvebool是否同意
reasonstring拒绝理由
',12);function g(y,v){const a=e("Badge"),o=e("RouterLink");return h(),i("div",null,[t("div",_,[p,t("p",null,[d("对于 Shamrock 未实现的事件,会在标题添加标记 "),r(a,{text:"未实现",type:"danger",vertical:"baseline"})])]),t("div",b,[u,t("p",null,[d("所有上报事件都包含通用数据,详见 "),r(o,{to:"/event/general-data.html"},{default:s(()=>[d("通用数据")]),_:1}),d("。"),m,d(" 包含在通用数据中的字段不会在下面的表格中重复出现。")])]),f])}const B=n(l,[["render",g],["__file","request.html.vue"]]);export{B as default}; diff --git a/assets/resources.html-4ff72615.js b/assets/resources.html-4ff72615.js new file mode 100644 index 00000000..53f2ab91 --- /dev/null +++ b/assets/resources.html-4ff72615.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-d0532dbc","path":"/api/resources.html","title":"资源相关","lang":"zh-CN","frontmatter":{"title":"资源相关","icon":"video-camera"},"headers":[{"level":2,"title":"获取图片","slug":"获取图片","link":"#获取图片","children":[{"level":3,"title":"API 端点","slug":"api-端点","link":"#api-端点","children":[]},{"level":3,"title":"参数","slug":"参数","link":"#参数","children":[]},{"level":3,"title":"响应","slug":"响应","link":"#响应","children":[]}]},{"level":2,"title":"检查是否可以发送图片","slug":"检查是否可以发送图片","link":"#检查是否可以发送图片","children":[{"level":3,"title":"API 端点","slug":"api-端点-1","link":"#api-端点-1","children":[]},{"level":3,"title":"参数","slug":"参数-1","link":"#参数-1","children":[]},{"level":3,"title":"响应","slug":"响应-1","link":"#响应-1","children":[]}]},{"level":2,"title":"图片 OCR","slug":"图片-ocr","link":"#图片-ocr","children":[{"level":3,"title":"API 端点","slug":"api-端点-2","link":"#api-端点-2","children":[]},{"level":3,"title":"参数","slug":"参数-2","link":"#参数-2","children":[]},{"level":3,"title":"响应","slug":"响应-2","link":"#响应-2","children":[]}]},{"level":2,"title":"获取语音","slug":"获取语音","link":"#获取语音","children":[{"level":3,"title":"API 端点","slug":"api-端点-3","link":"#api-端点-3","children":[]},{"level":3,"title":"参数","slug":"参数-3","link":"#参数-3","children":[]},{"level":3,"title":"响应","slug":"响应-3","link":"#响应-3","children":[]}]},{"level":2,"title":"检查是否可以发送语音","slug":"检查是否可以发送语音","link":"#检查是否可以发送语音","children":[{"level":3,"title":"API 端点","slug":"api-端点-4","link":"#api-端点-4","children":[]},{"level":3,"title":"参数","slug":"参数-4","link":"#参数-4","children":[]},{"level":3,"title":"响应","slug":"响应-4","link":"#响应-4","children":[]},{"level":3,"title":"API 端点","slug":"api-端点-5","link":"#api-端点-5","children":[]},{"level":3,"title":"参数","slug":"参数-5","link":"#参数-5","children":[]},{"level":3,"title":"响应","slug":"响应-5","link":"#响应-5","children":[]}]},{"level":2,"title":"获取文件","slug":"获取文件","link":"#获取文件","children":[]},{"level":2,"title":"获取视频","slug":"获取视频","link":"#获取视频","children":[]},{"level":2,"title":"获取缩略图","slug":"获取缩略图","link":"#获取缩略图","children":[]}],"git":{"createdTime":1698464511000,"updatedTime":1708324623000,"contributors":[{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":1.83,"words":550},"filePathRelative":"api/resources.md","localizedDate":"2023年10月28日","excerpt":""}');export{l as data}; diff --git a/assets/resources.html-e4aa1e2b.js b/assets/resources.html-e4aa1e2b.js new file mode 100644 index 00000000..18a1d4e2 --- /dev/null +++ b/assets/resources.html-e4aa1e2b.js @@ -0,0 +1 @@ +import{_ as r}from"./plugin-vue_export-helper-c27b6911.js";import{r as i,o,c as n,a as t,d as e,b as a,e as h}from"./app-edf8b1e7.js";const c={},s={class:"hint-container warning"},l=t("p",{class:"hint-container-title"},"注意",-1),b=h('

获取图片

该接口用于获取图片,只能获取已缓存的图片。

API 端点

/get_image

参数

字段类型必须说明
filestring文件 MD5

响应

字段类型说明
sizeint64文件大小
urlstring文件 URL
filenamestring文件 名称
',8),p={id:"检查是否可以发送图片",tabindex:"-1"},_=t("a",{class:"header-anchor",href:"#检查是否可以发送图片","aria-hidden":"true"},"#",-1),f=h('

该接口用于检查是否可以发送图片。

API 端点

/can_send_image

参数

提示

该 API 无需参数

响应

字段名数据类型说明
yesboolean是或否
',7),x={id:"图片-ocr",tabindex:"-1"},u=t("a",{class:"header-anchor",href:"#图片-ocr","aria-hidden":"true"},"#",-1),g=h('

该接口用于图片 OCR。

API 端点

/ocr_image

参数

字段类型说明
imagestring图片ID

响应

字段类型说明
textsList<TextDetection>OCR结果
languagestring语言

TextDetection

字段类型说明
textstring文本
confidenceint32置信度
coordinatesvector2[]二维数组表示的坐标

获取语音

该接口用于获取语音。

API 端点

/get_record

参数

字段类型必须说明
filestring文件 MD5
out_formatstring输出格式

响应

字段类型说明
filestring文件路径
urlstring文件 URL
',17),y={id:"检查是否可以发送语音",tabindex:"-1"},m=t("a",{class:"header-anchor",href:"#检查是否可以发送语音","aria-hidden":"true"},"#",-1),A=h('

该接口用于检查是否可以发送语音。

API 端点

/can_send_record

参数

提示

该 API 无需参数

响应

字段名数据类型说明
yesboolean是或否

API 端点

/get_record

提示

要使用此接口, 通常需要安装 ffmpeg, 请参考 OneBot 实现的相关说明。

参数

字段名数据类型默认值说明
filestring-收到的语音文件名(消息段的 file 参数), 如 0B38145AA44505000B38145AA4450500.silk
out_formatstring-要转换到的格式, 目前支持 mp3amrwmam4aspxoggwavflac

响应

字段名数据类型说明
filestring转换后的语音文件路径, 如 /home/somebody/cqhttp/data/record/0B38145AA44505000B38145AA4450500.mp3
',14),v={id:"获取文件",tabindex:"-1"},B=t("a",{class:"header-anchor",href:"#获取文件","aria-hidden":"true"},"#",-1),I=t("p",null,"该接口用于获取文件。",-1),P={id:"获取视频",tabindex:"-1"},D=t("a",{class:"header-anchor",href:"#获取视频","aria-hidden":"true"},"#",-1),R=t("p",null,"该接口用于获取视频。",-1),k={id:"获取缩略图",tabindex:"-1"},C=t("a",{class:"header-anchor",href:"#获取缩略图","aria-hidden":"true"},"#",-1),N=t("p",null,"该接口用于获取缩略图。",-1);function O(V,w){const d=i("Badge");return o(),n("div",null,[t("div",s,[l,t("p",null,[e("对于 Shamrock 尚未实现的 API,会在标题添加标记 "),a(d,{text:"未实现",type:"danger",vertical:"baseline"})])]),b,t("h2",p,[_,e(" 检查是否可以发送图片 "),a(d,{text:"未实现",type:"danger"})]),f,t("h2",x,[u,e(" 图片 OCR "),a(d,{text:"未实现",type:"danger"})]),g,t("h2",y,[m,e(" 检查是否可以发送语音 "),a(d,{text:"未实现",type:"danger"})]),A,t("h2",v,[B,e(" 获取文件 "),a(d,{text:"未实现",type:"danger"})]),I,t("h2",P,[D,e(" 获取视频 "),a(d,{text:"未实现",type:"danger"})]),R,t("h2",k,[C,e(" 获取缩略图 "),a(d,{text:"未实现",type:"danger"})]),N])}const M=r(c,[["render",O],["__file","resources.html.vue"]]);export{M as default}; diff --git a/assets/shamrock.html-22c72fef.js b/assets/shamrock.html-22c72fef.js new file mode 100644 index 00000000..b9e14e59 --- /dev/null +++ b/assets/shamrock.html-22c72fef.js @@ -0,0 +1,26 @@ +import{_ as t}from"./plugin-vue_export-helper-c27b6911.js";import{o as e,c as a,e as o}from"./app-edf8b1e7.js";const d={},s=o(`

切换账号

某个账号因为某种原因寄了,允许切换备用能源!

API端点

/switch_account

参数

字段类型必须说明默认值
user_idint64QQ

响应

是否正常执行切换账号请求的响应。

上传文件到缓存目录 (HTTP)

API 端点

/upload_file

注意

该接口仅仅为HTTP POST提供,WebSocket请使用另外一个。

参数

file格式上传文件,不要使用binary

响应

{
+  "file": "/scard/Android/data/com.tencent.mobileqq/Tencent/Shamrock/xxxx"
+}
+

上传文件到缓存目录 (WebSocket + HTTP)

API 端点

/upload_file_to_shamrock

注意

该接口仅仅为WebSocket提供。

参数

名称类型作用
md5string文件hex格式的md5值,32长度的字符串,整个文件的md5
offsetuint64文件分段上传偏移,默认值为0,从头上传
chunkstring文件分段上传数据块(base64),无需开头base64://
file_sizeuint64总文件大小

响应数据

名称类型作用
file_sizeuint64总文件大小
finishbool是否完成上传
pathstring该文件在安卓系统(shamrock环境)的路径

让Shamrock下载文件到缓存目录

用法二选一:

1.仅发送url,由Shamrock自己访问该url来下载文件

2.仅发送文件base64,Shamrock解码后直接转存为文件

url和base64至少一个不能为空

同时发送url和base64时,使用url

API 端点

/download_file

参数

字段类型必须说明默认值
urlstring下载地址
namestring文件名称文件md5
rootstring保存文件的根目录,注意请确保QQ可以访问Shamrock缓存目录
base64string文件base64内容
thread_cntint32下载的线程数量
headersstring or array请求头

headers为string时示例

"headers": "User-Agent=YOUR_UA[\\r\\n]Referer=https://www.baidu.com"
+

headers为array时示例

"headers": [
+    "User-Agent=YOUR_UA",
+    "Referer=https://www.baidu.com"
+]
+

[\\r\\n] 为换行符, 使用http请求时请注意编码

响应

{
+  "file": "/scard/Android/data/com.tencent.mobileqq/Tencent/Shamrock/xxxx"
+}
+

通过这个API下载的文件能直接放入CQ码作为图片发送

调用后会阻塞直到下载完成后才会返回数据,请注意下载大文件时的超时

清除缓存

API 端点

clean_cache

参数

该接口没有参数

响应

{
+  "status": "ok",
+  "retcode": 0
+}
+

获取手机电池信息

API 端点

/get_device_battery

响应

{
+  "battery": 44,
+  "scale": 3102000,
+  "status": 2
+}
+

获取Shamerock启动时间

API 端点

/get_start_time

请求类型

POST | GET | 不支持WS

响应

{
+  "status": "ok",
+  "retcode": 0,
+  "data": 1696749716155
+}
+

获取Shamrock日志

API 端点

/log

请求类型

POST | GET | 不支持WS

参数

字段类型必须说明默认值
startint32开始的行
recentbool是否只显示最近的日志false

远程Shell执行

该接口默认关闭,需要在实验室设置手动打开!注意,该接口可能导致您的隐私数据泄露,请勿公开在未知的网络,或者泄露您的token。

请求类型

POST

参数

字段类型必须说明默认值
cmdarray 或 string命令内容
dirstring当前所处的目录

关闭Shamrock

API 端点

/shut

请求类型

POST | GET | 不支持WS

响应

无响应

获取所有支持的动作

API 端点

/get_supported_actions

响应

{ "status": "ok", "retcode": 0, "data": [ "set_group_ban", "clean_cache", "clear_msgs", "create_group_file_folder", "delete_essence_message", "delete_essence_msg", "delete_group_file", "delete_group_folder", "delete_msg", "delete_message", "download_file", "fav.add_image_msg", "fav.add_text_msg", "fav.get_item_content", "fav.get_item_list", "get_csrf_token", "get_cookie", "get_cookies", "get_credentials", "get_device_battery", "get_essence_message_list", "get_essence_msg_list", "get_forward_msg", "get_friend_list", "get_friend_system_msg", "get_group_file_system_info", "get_group_file_url", "get_group_msg_history", "get_group_notice", "_get_group_notice", "get_group_at_all_remain", "get_group_root_files", "get_group_files_by_folder", "get_group_system_msg", "get_guild_list", "get_guild_service_profile", "get_history_msg", "get_http_cookies", "get_image", "get_latest_events", "get_login_info", "get_model_show", "_get_model_show", "get_msg", "get_message", "get_not_joined_group_info", "_get_online_clients", "get_profile_card", "get_user_info", "get_prohibited_member_list", "get_record", "get_self_info", "status", "get_status", "_get_stranger_info", "get_stranger_info", "get_supported_actions", "get_troop_honor_info", "get_group_honor_info", "get_group_info", "get_group_list", "get_group_member_info", "get_group_member_list", "get_uid", "get_uin_by_uid", "get_version", "get_version_info", "get_weather", "get_weather_city_code", "poke", "is_blacklist_uin", "kick_group_member", "set_group_kick", "set_group_leave", "leave_group", "set_group_card", "set_group_name", ".handle_quick_operation_async", "rename_group_folder", "restart_me", "sanc_qrcode", "send_forward_msg", "send_group_forward_msg", "send_group_msg", "send_group_message", "send_group_announcement", "send_group_notice", "send_group_sign", "send_like", "send_message", "send_msg", "send_private_forward_msg", "send_private_message", "send_private_msg", "set_essence_message", "set_essence_msg", "set_friend_add_request", "set_group_add_request", "set_group_admin", "set_group_comment_face", "set_group_special_title", "set_group_whole_ban", "_set_model_show", "set_qq_profile", "switch_account", "test", "upload_group_file", "upload_private_file" ], "echo": "" }

`,86),n=[s];function r(i,u){return e(),a("div",null,n)}const p=t(d,[["render",r],["__file","shamrock.html.vue"]]);export{p as default}; diff --git a/assets/shamrock.html-93415924.js b/assets/shamrock.html-93415924.js new file mode 100644 index 00000000..2e006bd5 --- /dev/null +++ b/assets/shamrock.html-93415924.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-1f099f65","path":"/api/shamrock.html","title":"Shamrock 接口","lang":"zh-CN","frontmatter":{"title":"Shamrock 接口","icon":"feather-alt"},"headers":[{"level":2,"title":"切换账号","slug":"切换账号","link":"#切换账号","children":[{"level":3,"title":"API端点","slug":"api端点","link":"#api端点","children":[]}]},{"level":2,"title":"参数","slug":"参数","link":"#参数","children":[{"level":3,"title":"响应","slug":"响应","link":"#响应","children":[]}]},{"level":2,"title":"上传文件到缓存目录 (HTTP)","slug":"上传文件到缓存目录-http","link":"#上传文件到缓存目录-http","children":[{"level":3,"title":"API 端点","slug":"api-端点","link":"#api-端点","children":[]},{"level":3,"title":"参数","slug":"参数-1","link":"#参数-1","children":[]},{"level":3,"title":"响应","slug":"响应-1","link":"#响应-1","children":[]}]},{"level":2,"title":"上传文件到缓存目录 (WebSocket + HTTP)","slug":"上传文件到缓存目录-websocket-http","link":"#上传文件到缓存目录-websocket-http","children":[{"level":3,"title":"API 端点","slug":"api-端点-1","link":"#api-端点-1","children":[]},{"level":3,"title":"参数","slug":"参数-2","link":"#参数-2","children":[]},{"level":3,"title":"响应数据","slug":"响应数据","link":"#响应数据","children":[]}]},{"level":2,"title":"让Shamrock下载文件到缓存目录","slug":"让shamrock下载文件到缓存目录","link":"#让shamrock下载文件到缓存目录","children":[{"level":3,"title":"API 端点","slug":"api-端点-2","link":"#api-端点-2","children":[]},{"level":3,"title":"参数","slug":"参数-3","link":"#参数-3","children":[]},{"level":3,"title":"响应","slug":"响应-2","link":"#响应-2","children":[]}]},{"level":2,"title":"清除缓存","slug":"清除缓存","link":"#清除缓存","children":[{"level":3,"title":"API 端点","slug":"api-端点-3","link":"#api-端点-3","children":[]},{"level":3,"title":"参数","slug":"参数-4","link":"#参数-4","children":[]},{"level":3,"title":"响应","slug":"响应-3","link":"#响应-3","children":[]}]},{"level":2,"title":"获取手机电池信息","slug":"获取手机电池信息","link":"#获取手机电池信息","children":[{"level":3,"title":"API 端点","slug":"api-端点-4","link":"#api-端点-4","children":[]},{"level":3,"title":"响应","slug":"响应-4","link":"#响应-4","children":[]}]},{"level":2,"title":"获取Shamerock启动时间","slug":"获取shamerock启动时间","link":"#获取shamerock启动时间","children":[{"level":3,"title":"API 端点","slug":"api-端点-5","link":"#api-端点-5","children":[]},{"level":3,"title":"请求类型","slug":"请求类型","link":"#请求类型","children":[]},{"level":3,"title":"响应","slug":"响应-5","link":"#响应-5","children":[]}]},{"level":2,"title":"获取Shamrock日志","slug":"获取shamrock日志","link":"#获取shamrock日志","children":[{"level":3,"title":"API 端点","slug":"api-端点-6","link":"#api-端点-6","children":[]},{"level":3,"title":"请求类型","slug":"请求类型-1","link":"#请求类型-1","children":[]},{"level":3,"title":"参数","slug":"参数-5","link":"#参数-5","children":[]}]},{"level":2,"title":"远程Shell执行","slug":"远程shell执行","link":"#远程shell执行","children":[{"level":3,"title":"请求类型","slug":"请求类型-2","link":"#请求类型-2","children":[]},{"level":3,"title":"参数","slug":"参数-6","link":"#参数-6","children":[]}]},{"level":2,"title":"关闭Shamrock","slug":"关闭shamrock","link":"#关闭shamrock","children":[{"level":3,"title":"API 端点","slug":"api-端点-7","link":"#api-端点-7","children":[]},{"level":3,"title":"请求类型","slug":"请求类型-3","link":"#请求类型-3","children":[]},{"level":3,"title":"响应","slug":"响应-6","link":"#响应-6","children":[]}]},{"level":2,"title":"获取所有支持的动作","slug":"获取所有支持的动作","link":"#获取所有支持的动作","children":[{"level":3,"title":"API 端点","slug":"api-端点-8","link":"#api-端点-8","children":[]},{"level":3,"title":"响应","slug":"响应-7","link":"#响应-7","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1708951999000,"contributors":[{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":7},{"name":"aleck099","email":"aleck099@outlook.com","commits":2},{"name":"Kamisato-Ayaka-233","email":"2627706725@qq.com","commits":1},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":3.02,"words":907},"filePathRelative":"api/shamrock.md","localizedDate":"2023年10月28日","excerpt":""}');export{l as data}; diff --git a/assets/special.html-0dd674b5.js b/assets/special.html-0dd674b5.js new file mode 100644 index 00000000..429f372b --- /dev/null +++ b/assets/special.html-0dd674b5.js @@ -0,0 +1,102 @@ +import{_ as o}from"./plugin-vue_export-helper-c27b6911.js";import{r,o as c,c as p,b as i,w as e,e as l,a as t,d as a}from"./app-edf8b1e7.js";const u={},h=l('

篮球

参数

字段类型必填说明
idintx5 没中, 4 擦边没中, 3 卡框, 2 擦边中, 1 正中
',3),b=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:basketball,id=1] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),v=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"basketball"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"id"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"1"),a(` + `),t("span",{class:"token punctuation"},"}"),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),m=l('

新猜拳

参数

字段类型必填说明
idintx锤 3 剪 2 布 1
',3),k=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:new_rps,id=1] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),g=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"new_rps"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"id"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"1"),a(` + `),t("span",{class:"token punctuation"},"}"),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),x=l('

新骰子

参数

字段类型必填说明
idintx点数 ID
',3),_=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:new_dice,id=1] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),y=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"new_dice"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"id"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"1"),a(` + `),t("span",{class:"token punctuation"},"}"),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),A=t("h2",{id:"骰子-ntqq废弃",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#骰子-ntqq废弃","aria-hidden":"true"},"#"),a(" 骰子 (NTQQ废弃)")],-1),Q=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:dice] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),j=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"dice"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"{"),t("span",{class:"token punctuation"},"}"),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),f=t("h3",{id:"剪刀石头布-ntqq废弃",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#剪刀石头布-ntqq废弃","aria-hidden":"true"},"#"),a(" 剪刀石头布 (NTQQ废弃)")],-1),C=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:rps] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),q=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"rps"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"{"),t("span",{class:"token punctuation"},"}"),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),w=l('

戳一戳

注意

Shamrock 对于戳一戳的定义与 go-cqhttp 不同。

参数

字段类型必填说明
typeint戳一戳类型
idint戳一戳 ID
strengthint戳一戳强度(1-5 默认1)
',4),N=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:poke,type=1,id=10000] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),E=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"poke"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"1"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"id"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"10000"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"strength"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"1"),a(` + `),t("span",{class:"token punctuation"},"}"),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),T=l('

戳一戳(双击头像)

参数

字段类型必填说明
idintQQ号
',3),D=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:touch,id=123456] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),I=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"touch"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"id"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"123456"),a(` + `),t("span",{class:"token punctuation"},"}"),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),M=l('

音乐

参数

字段类型必填说明
typestring音乐类型(qq/163)
idint音乐 ID
',3),V=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:music,type=qq,id=123456] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),B=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"music"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"qq"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"id"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"123456"),a(` + `),t("span",{class:"token punctuation"},"}"),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),z=l('

音乐(自定义)

参数

字段类型必填说明
typestring音乐类型(自定义请使用 custom
urlstring跳转链接
audiostring音乐音频链接
titlestring标题
singerstring歌手
imagestring封面图片链接
',3),S=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:music,type=custom,url=https://example.com,audio=https://example.com/music.mp3,title=Music,singer=Music,image=https://example.com/image.jpg] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),F=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"music"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"custom"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"url"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"https://example.com"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"audio"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"https://example.com/music.mp3"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"title"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"Music"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"singer"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"Music"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"image"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"https://example.com/image.jpg"'),a(` + `),t("span",{class:"token punctuation"},"}"),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),G=l('

天气

参数

字段类型必填说明
citystring城市名称
codestring城市代码
',3),H=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:weather,city=上海] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),J=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"weather"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"city"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"上海"'),a(` + `),t("span",{class:"token punctuation"},"}"),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),K=l('

位置

参数

字段类型必填说明
latfloat纬度
lonfloat经度
titlestring×标题
contentstring×内容
',3),L=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:location,lat=39.915168,lon=116.403875] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),O=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"location"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"lat"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"39.915168"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"lon"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"116.403875"),a(` + `),t("span",{class:"token punctuation"},"}"),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),P=l('

链接分享

参数

字段类型必填说明
urlstring链接地址
titlestring×标题
contentstring×内容
imagestring×图片链接
filestring×文件链接
',3),R=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:share,url=https://example.com,title=Example,content=Example,image=https://example.com/image.jpg,file=https://example.com/file.zip] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),U=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"share"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"url"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"https://example.com"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"title"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"Example"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"content"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"Example"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"image"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"https://example.com/image.jpg"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"file"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"https://example.com/file.zip"'),a(` + `),t("span",{class:"token punctuation"},"}"),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1),W=l('

礼物

参数

字段类型必填说明
qqintQQ 号
idint礼物 ID
',3),X=t("div",{class:"language-text line-numbers-mode","data-ext":"text"},[t("pre",{class:"language-text"},[t("code",null,`[CQ:gift,qq=123456,id=10000] +`)]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"})])],-1),Y=t("div",{class:"language-json line-numbers-mode","data-ext":"json"},[t("pre",{class:"language-json"},[t("code",null,[t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"type"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token string"},'"gift"'),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"data"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token punctuation"},"{"),a(` + `),t("span",{class:"token property"},'"qq"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"123456"),t("span",{class:"token punctuation"},","),a(` + `),t("span",{class:"token property"},'"id"'),t("span",{class:"token operator"},":"),a(),t("span",{class:"token number"},"10000"),a(` + `),t("span",{class:"token punctuation"},"}"),a(` +`),t("span",{class:"token punctuation"},"}"),a(` +`)])]),t("div",{class:"line-numbers","aria-hidden":"true"},[t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"}),t("div",{class:"line-number"})])],-1);function Z($,tt){const d=r("Tabs");return c(),p("div",null,[h,i(d,{id:"52",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:e(({value:s,isActive:n})=>[a("CQ 码")]),title1:e(({value:s,isActive:n})=>[a("消息段")]),tab0:e(({value:s,isActive:n})=>[b]),tab1:e(({value:s,isActive:n})=>[v]),_:1}),m,i(d,{id:"112",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:e(({value:s,isActive:n})=>[a("CQ 码")]),title1:e(({value:s,isActive:n})=>[a("消息段")]),tab0:e(({value:s,isActive:n})=>[k]),tab1:e(({value:s,isActive:n})=>[g]),_:1}),x,i(d,{id:"172",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:e(({value:s,isActive:n})=>[a("CQ 码")]),title1:e(({value:s,isActive:n})=>[a("消息段")]),tab0:e(({value:s,isActive:n})=>[_]),tab1:e(({value:s,isActive:n})=>[y]),_:1}),A,i(d,{id:"183",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:e(({value:s,isActive:n})=>[a("CQ 码")]),title1:e(({value:s,isActive:n})=>[a("消息段")]),tab0:e(({value:s,isActive:n})=>[Q]),tab1:e(({value:s,isActive:n})=>[j]),_:1}),f,i(d,{id:"194",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:e(({value:s,isActive:n})=>[a("CQ 码")]),title1:e(({value:s,isActive:n})=>[a("消息段")]),tab0:e(({value:s,isActive:n})=>[C]),tab1:e(({value:s,isActive:n})=>[q]),_:1}),w,i(d,{id:"299",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:e(({value:s,isActive:n})=>[a("CQ 码")]),title1:e(({value:s,isActive:n})=>[a("消息段")]),tab0:e(({value:s,isActive:n})=>[N]),tab1:e(({value:s,isActive:n})=>[E]),_:1}),T,i(d,{id:"359",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:e(({value:s,isActive:n})=>[a("CQ 码")]),title1:e(({value:s,isActive:n})=>[a("消息段")]),tab0:e(({value:s,isActive:n})=>[D]),tab1:e(({value:s,isActive:n})=>[I]),_:1}),M,i(d,{id:"439",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:e(({value:s,isActive:n})=>[a("CQ 码")]),title1:e(({value:s,isActive:n})=>[a("消息段")]),tab0:e(({value:s,isActive:n})=>[V]),tab1:e(({value:s,isActive:n})=>[B]),_:1}),z,i(d,{id:"599",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:e(({value:s,isActive:n})=>[a("CQ 码")]),title1:e(({value:s,isActive:n})=>[a("消息段")]),tab0:e(({value:s,isActive:n})=>[S]),tab1:e(({value:s,isActive:n})=>[F]),_:1}),G,i(d,{id:"679",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:e(({value:s,isActive:n})=>[a("CQ 码")]),title1:e(({value:s,isActive:n})=>[a("消息段")]),tab0:e(({value:s,isActive:n})=>[H]),tab1:e(({value:s,isActive:n})=>[J]),_:1}),K,i(d,{id:"799",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:e(({value:s,isActive:n})=>[a("CQ 码")]),title1:e(({value:s,isActive:n})=>[a("消息段")]),tab0:e(({value:s,isActive:n})=>[L]),tab1:e(({value:s,isActive:n})=>[O]),_:1}),P,i(d,{id:"939",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:e(({value:s,isActive:n})=>[a("CQ 码")]),title1:e(({value:s,isActive:n})=>[a("消息段")]),tab0:e(({value:s,isActive:n})=>[R]),tab1:e(({value:s,isActive:n})=>[U]),_:1}),W,i(d,{id:"1019",data:[{id:"CQ 码"},{id:"消息段"}]},{title0:e(({value:s,isActive:n})=>[a("CQ 码")]),title1:e(({value:s,isActive:n})=>[a("消息段")]),tab0:e(({value:s,isActive:n})=>[X]),tab1:e(({value:s,isActive:n})=>[Y]),_:1})])}const st=o(u,[["render",Z],["__file","special.html.vue"]]);export{st as default}; diff --git a/assets/special.html-2e3560dc.js b/assets/special.html-2e3560dc.js new file mode 100644 index 00000000..bab317b5 --- /dev/null +++ b/assets/special.html-2e3560dc.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-41fe057e","path":"/message/special.html","title":"特殊消息","lang":"zh-CN","frontmatter":{"title":"特殊消息","icon":"paper-plane"},"headers":[{"level":2,"title":"篮球","slug":"篮球","link":"#篮球","children":[{"level":3,"title":"参数","slug":"参数","link":"#参数","children":[]}]},{"level":2,"title":"新猜拳","slug":"新猜拳","link":"#新猜拳","children":[{"level":3,"title":"参数","slug":"参数-1","link":"#参数-1","children":[]}]},{"level":2,"title":"新骰子","slug":"新骰子","link":"#新骰子","children":[{"level":3,"title":"参数","slug":"参数-2","link":"#参数-2","children":[]}]},{"level":2,"title":"骰子 (NTQQ废弃)","slug":"骰子-ntqq废弃","link":"#骰子-ntqq废弃","children":[{"level":3,"title":"剪刀石头布 (NTQQ废弃)","slug":"剪刀石头布-ntqq废弃","link":"#剪刀石头布-ntqq废弃","children":[]}]},{"level":2,"title":"戳一戳","slug":"戳一戳","link":"#戳一戳","children":[{"level":3,"title":"参数","slug":"参数-3","link":"#参数-3","children":[]}]},{"level":2,"title":"戳一戳(双击头像)","slug":"戳一戳-双击头像","link":"#戳一戳-双击头像","children":[{"level":3,"title":"参数","slug":"参数-4","link":"#参数-4","children":[]}]},{"level":2,"title":"音乐","slug":"音乐","link":"#音乐","children":[{"level":3,"title":"参数","slug":"参数-5","link":"#参数-5","children":[]}]},{"level":2,"title":"音乐(自定义)","slug":"音乐-自定义","link":"#音乐-自定义","children":[{"level":3,"title":"参数","slug":"参数-6","link":"#参数-6","children":[]}]},{"level":2,"title":"天气","slug":"天气","link":"#天气","children":[{"level":3,"title":"参数","slug":"参数-7","link":"#参数-7","children":[]}]},{"level":2,"title":"位置","slug":"位置","link":"#位置","children":[{"level":3,"title":"参数","slug":"参数-8","link":"#参数-8","children":[]}]},{"level":2,"title":"链接分享","slug":"链接分享","link":"#链接分享","children":[{"level":3,"title":"参数","slug":"参数-9","link":"#参数-9","children":[]}]},{"level":2,"title":"礼物","slug":"礼物","link":"#礼物","children":[{"level":3,"title":"参数","slug":"参数-10","link":"#参数-10","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1708324623000,"contributors":[{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":4},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":2.44,"words":731},"filePathRelative":"message/special.md","localizedDate":"2023年10月28日","excerpt":""}');export{l as data}; diff --git a/assets/style-842f0c71.css b/assets/style-842f0c71.css new file mode 100644 index 00000000..42741857 --- /dev/null +++ b/assets/style-842f0c71.css @@ -0,0 +1 @@ +html[data-theme=dark]{--text-color: #9e9e9e;--bg-color: #0d1117;--bg-color-secondary: #161b22;--bg-color-tertiary: #21262c;--border-color: #30363d;--box-shadow: #282a32;--card-shadow: rgba(0, 0, 0, .3);--black: #fff;--dark-grey: #999;--light-grey: #666;--white: #000;--grey3: #bbb;--grey12: #333;--grey14: #111;--bg-color-light: #161b22;--bg-color-back: #0d1117;--bg-color-float: #161b22;--bg-color-blur: rgba(13, 17, 23, .9);--bg-color-float-blur: rgba(22, 27, 34, .9);--text-color-light: #a8a8a8;--text-color-lighter: #b1b1b1;--text-color-bright: #c5c5c5;--border-color-light: #2e333a;--border-color-dark: #394048}:root{--theme-color: #409eff;--text-color: #2c3e50;--bg-color: #fff;--bg-color-secondary: #f8f8f8;--bg-color-tertiary: #efeef4;--border-color: #eaecef;--box-shadow: #f0f1f2;--card-shadow: rgba(0, 0, 0, .15);--black: #000;--dark-grey: #666;--light-grey: #999;--white: #fff;--grey3: #333;--grey12: #bbb;--grey14: #eee;--navbar-height: 3.75rem;--navbar-horizontal-padding: 1.5rem;--navbar-vertical-padding: .7rem;--navbar-mobile-height: 3.25rem;--navbar-mobile-horizontal-padding: 1rem;--navbar-mobile-vertical-padding: .5rem;--sidebar-width: 18rem;--sidebar-mobile-width: 16rem;--content-width: 780px;--home-page-width: 1160px;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", STHeiti, "Microsoft YaHei", SimSun, sans-serif;--font-family-heading: Georgia Pro, Crimson, Georgia, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", STHeiti, "Microsoft YaHei", SimSun, sans-serif;--font-family-mono: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;--line-numbers-width: 2.5rem;--color-transition: .3s ease;--transform-transition: .3s ease;--vp-bg: var(--bg-color);--vp-bgl: var(--bg-color-light);--vp-bglt: var(--bg-color-tertiary);--vp-c: var(--text-color);--vp-cl: var(--text-color-light);--vp-clt: var(--text-color-lighter);--vp-brc: var(--border-color);--vp-brcd: var(--border-color-dark);--vp-tc: var(--theme-color);--vp-tcl: var(--theme-color-light);--vp-ct: var(--color-transition);--vp-tt: var(--transform-transition);--bg-color-light: #fff;--bg-color-back: #f8f8f8;--bg-color-float: #fff;--bg-color-blur: rgba(255, 255, 255, .9);--bg-color-float-blur: rgba(255, 255, 255, .9);--text-color-light: #3a5169;--text-color-lighter: #476582;--text-color-bright: #6a8bad;--border-color-light: #eceef1;--border-color-dark: #cfd4db;--theme-color-dark: #208eff;--theme-color-light: #53a8ff;--theme-color-mask: rgba(64, 158, 255, .15)}:root{--badge-tip-color: #42b983;--badge-warning-color: #f4cd00;--badge-danger-color: #f55;--badge-info-color: #0295ff;--badge-note-color: #666}.vp-badge{display:inline-block;vertical-align:center;height:18px;padding:0 6px;border-radius:3px;background:var(--vp-tc);color:var(--white);font-size:14px;line-height:18px;transition:background var(--vp-ct),color var(--vp-ct)}.vp-badge+.vp-badge{margin-inline-start:5px}h1 .vp-badge,h2 .vp-badge,h3 .vp-badge,h4 .vp-badge,h5 .vp-badge,h6 .vp-badge{vertical-align:top}.vp-badge.tip{background:var(--badge-tip-color)}.vp-badge.warning{background:var(--badge-warning-color)}.vp-badge.danger{background:var(--badge-danger-color)}.vp-badge.info{background:var(--badge-info-color)}.vp-badge.note{background:var(--badge-note-color)}.font-icon{display:inline-block}.theme-hope-content .font-icon{vertical-align:middle}:root{--balloon-border-radius: 2px;--balloon-color: rgba(16, 16, 16, .95);--balloon-text-color: #fff;--balloon-font-size: 12px;--balloon-move: 4px}button[aria-label][data-balloon-pos]{overflow:visible}[aria-label][data-balloon-pos]{position:relative;cursor:pointer}[aria-label][data-balloon-pos]:after{opacity:0;pointer-events:none;transition:all .18s ease-out .18s;text-indent:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-weight:400;font-style:normal;text-shadow:none;font-size:var(--balloon-font-size);background:var(--balloon-color);border-radius:2px;color:var(--balloon-text-color);border-radius:var(--balloon-border-radius);content:attr(aria-label);padding:.5em 1em;position:absolute;white-space:nowrap;z-index:10}[aria-label][data-balloon-pos]:before{width:0;height:0;border:5px solid transparent;border-top-color:var(--balloon-color);opacity:0;pointer-events:none;transition:all .18s ease-out .18s;content:"";position:absolute;z-index:10}[aria-label][data-balloon-pos]:hover:before,[aria-label][data-balloon-pos]:hover:after,[aria-label][data-balloon-pos][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-visible]:after,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after{opacity:1;pointer-events:none}[aria-label][data-balloon-pos].font-awesome:after{font-family:FontAwesome,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}[aria-label][data-balloon-pos][data-balloon-break]:after{white-space:pre}[aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after{white-space:pre-line;word-break:break-word}[aria-label][data-balloon-pos][data-balloon-blunt]:before,[aria-label][data-balloon-pos][data-balloon-blunt]:after{transition:none}[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:after{transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:before{transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos*=-left]:after{left:0}[aria-label][data-balloon-pos][data-balloon-pos*=-left]:before{left:5px}[aria-label][data-balloon-pos][data-balloon-pos*=-right]:after{right:0}[aria-label][data-balloon-pos][data-balloon-pos*=-right]:before{right:5px}[aria-label][data-balloon-pos][data-balloon-po*=-left]:hover:after,[aria-label][data-balloon-pos][data-balloon-po*=-left][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos*=-right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos*=-right][data-balloon-visible]:after{transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-po*=-left]:hover:before,[aria-label][data-balloon-pos][data-balloon-po*=-left][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos*=-right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos*=-right][data-balloon-visible]:before{transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-pos^=up]:before,[aria-label][data-balloon-pos][data-balloon-pos^=up]:after{bottom:100%;transform-origin:top;transform:translateY(var(--balloon-move))}[aria-label][data-balloon-pos][data-balloon-pos^=up]:after{margin-bottom:10px}[aria-label][data-balloon-pos][data-balloon-pos=up]:before,[aria-label][data-balloon-pos][data-balloon-pos=up]:after{left:50%;transform:translate(-50%,var(--balloon-move))}[aria-label][data-balloon-pos][data-balloon-pos^=down]:before,[aria-label][data-balloon-pos][data-balloon-pos^=down]:after{top:100%;transform:translateY(calc(var(--balloon-move) * -1))}[aria-label][data-balloon-pos][data-balloon-pos^=down]:after{margin-top:10px}[aria-label][data-balloon-pos][data-balloon-pos^=down]:before{width:0;height:0;border:5px solid transparent;border-bottom-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-pos=down]:after,[aria-label][data-balloon-pos][data-balloon-pos=down]:before{left:50%;transform:translate(-50%,calc(var(--balloon-move) * -1))}[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:after{transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:before{transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:after,[aria-label][data-balloon-pos][data-balloon-pos=left]:before{right:100%;top:50%;transform:translate(var(--balloon-move),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:after{margin-right:10px}[aria-label][data-balloon-pos][data-balloon-pos=left]:before{width:0;height:0;border:5px solid transparent;border-left-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-pos=right]:after,[aria-label][data-balloon-pos][data-balloon-pos=right]:before{left:100%;top:50%;transform:translate(calc(var(--balloon-move) * -1),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=right]:after{margin-left:10px}[aria-label][data-balloon-pos][data-balloon-pos=right]:before{width:0;height:0;border:5px solid transparent;border-right-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-length]:after{white-space:normal}[aria-label][data-balloon-pos][data-balloon-length=small]:after{width:80px}[aria-label][data-balloon-pos][data-balloon-length=medium]:after{width:150px}[aria-label][data-balloon-pos][data-balloon-length=large]:after{width:260px}[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after{width:380px}@media screen and (max-width: 768px){[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after{width:90vw}}[aria-label][data-balloon-pos][data-balloon-length=fit]:after{width:100%}.vp-back-to-top-button{border-width:0;background:transparent;cursor:pointer;position:fixed!important;right:16px;bottom:64px;z-index:100;width:48px;height:48px;padding:8px;border-radius:50%;background:var(--vp-bg);color:var(--vp-tc);box-shadow:2px 2px 10px 4px var(--card-shadow);transition:background var(--vp-ct),color var(--vp-ct),box-shadow var(--vp-ct)}@media (max-width: 719px){.vp-back-to-top-button{width:36px;height:36px}}@media print{.vp-back-to-top-button{display:none}}html[dir=rtl] .vp-back-to-top-button{right:unset;left:16px}.vp-back-to-top-button:hover{color:var(--vp-tcl)}.vp-back-to-top-button .back-to-top-icon{overflow:hidden;width:100%;border-radius:50%;fill:currentcolor}.vp-scroll-progress{position:absolute;right:-2px;bottom:-2px;width:52px;height:52px}@media (max-width: 719px){.vp-scroll-progress{width:40px;height:40px}}.vp-scroll-progress circle{opacity:.9;fill:none;stroke:var(--vp-tc);transform:rotate(-90deg);transform-origin:50% 50%;r:22;stroke-dasharray:0% 314.1593%;stroke-width:3px}@media (max-width: 719px){.vp-scroll-progress circle{r:18}}.fade-enter-active,.fade-leave-active{transition:opacity var(--vp-ct)}.fade-enter-from,.fade-leave-to{opacity:0}@media screen{.sr-only{position:absolute;overflow:hidden;clip:rect 0,0,0,0;width:1px;height:1px;margin:-1px;padding:0;border:0}}@media print{.sr-only{display:none}}.vp-catalog{margin-top:8px;margin-bottom:8px}.vp-catalog .font-icon{vertical-align:baseline;margin-inline-end:.25rem}.vp-catalog-main-title,.vp-catalog-child-title,.vp-catalog-sub-title{margin-top:calc(.5rem - var(--navbar-height, 3.6rem));margin-bottom:.5rem;padding-top:var(--navbar-height, 3.6rem);font-weight:500}.vp-catalog-main-title:first-child,.vp-catalog-child-title:first-child,.vp-catalog-sub-title:first-child{margin-bottom:.5rem}.vp-catalog-main-title{font-size:1.75rem}.vp-catalog-child-title{font-size:1.3rem}.vp-catalog-child-title.has-children{border-bottom:1px solid var(--vp-brc);transition:border-color var(--vp-ct)}.vp-catalog-sub-title{font-size:1.1rem}.vp-catalog-title{color:inherit;text-decoration:none}.vp-catalog-title:hover{color:var(--vp-tc)}.vp-child-catalogs{margin:0}.vp-child-catalogs::marker{color:var(--vp-clt)}.vp-sub-catalogs{display:flex;flex-wrap:wrap}.vp-sub-catalog{display:inline-block;margin:4px 8px;padding:4px 8px;border-radius:6px;background-color:var(--vp-bgl);line-height:1.5;overflow-wrap:break-word;transition:background-color var(--vp-ct),color var(--vp-ct)}.vp-sub-catalog:hover{background-color:var(--vp-tcl);color:var(--vp-bg);text-decoration:none!important}.vp-empty-catalog{font-size:1.25rem;text-align:center}:root{--external-link-icon-color: #aaa}.external-link-icon{position:relative;display:inline-block;color:var(--external-link-icon-color);vertical-align:middle;top:-1px}@media print{.external-link-icon{display:none}}.external-link-icon-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}:root{--nprogress-color: #29d;--nprogress-z-index: 1031}#nprogress{pointer-events:none}#nprogress .bar{background:var(--nprogress-color);position:fixed;z-index:var(--nprogress-z-index);top:0;left:0;width:100%;height:2px}:root{--copy-icon: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--copied-icon: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}div[class*=language-]>button.copy-code-button{border-width:0;background:transparent;position:absolute;outline:none;cursor:pointer}@media print{div[class*=language-]>button.copy-code-button{display:none}}div[class*=language-]>button.copy-code-button .copy-icon{background:currentcolor;-webkit-mask-image:var(--copy-icon);mask-image:var(--copy-icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:1em;mask-size:1em}div[class*=language-]>button.copy-code-button:not(.fancy){border-width:0;background:transparent;cursor:pointer;position:absolute;top:.5em;right:.5em;z-index:5;width:2.5rem;height:2.5rem;padding:0;border-radius:.5rem;opacity:0;transition:opacity .4s}div[class*=language-]>button.copy-code-button:not(.fancy):hover,div[class*=language-]>button.copy-code-button:not(.fancy).copied{background:var(--code-hl-bg-color, rgba(0, 0, 0, .66))}div[class*=language-]>button.copy-code-button:not(.fancy):focus,div[class*=language-]>button.copy-code-button:not(.fancy).copied{opacity:1}div[class*=language-]>button.copy-code-button:not(.fancy).copied:after{content:attr(data-copied);position:absolute;top:0;right:calc(100% + .25rem);display:block;height:1.25rem;padding:.625rem;border-radius:.5rem;background:var(--code-hl-bg-color, rgba(0, 0, 0, .66));color:var(--code-ln-color, #9e9e9e);font-weight:500;line-height:1.25rem;white-space:nowrap}div[class*=language-]>button.copy-code-button:not(.fancy) .copy-icon{width:1.25rem;height:1.25rem;padding:.625rem;color:var(--code-ln-color, #9e9e9e);font-size:1.25rem}div[class*=language-]>button.copy-code-button.fancy{right:-14px;bottom:-14px;z-index:5;width:2rem;height:2rem;padding:7px 8px;border-radius:50%;background:#339af0;color:#fff}@media (max-width: 419px){div[class*=language-]>button.copy-code-button.fancy{right:0;bottom:0;width:28px;height:28px;border-radius:50% 10% 0}}div[class*=language-]>button.copy-code-button.fancy:hover{background:#228be6}div[class*=language-]>button.copy-code-button.fancy .copy-icon{width:100%;height:100%;color:#fff;font-size:1.25rem}@media (max-width: 419px){div[class*=language-]>button.copy-code-button.fancy .copy-icon{position:relative;top:2px;left:2px}}div[class*=language-]>button.copy-code-button.copied .copy-icon{-webkit-mask-image:var(--copied-icon);mask-image:var(--copied-icon)}div[class*=language-]:hover:before{display:none}div[class*=language-]:hover>button.copy-code-button:not(.fancy){opacity:1}:root{--info-title-color: #193c47;--info-bg-color: #eef9fd;--info-border-color: #4cb3d4;--info-code-bg-color: rgb(76 179 212 / 10%);--note-title-color: #474748;--note-bg-color: #fdfdfe;--note-border-color: #ccc;--note-code-bg-color: rgb(212 213 216 / 20%);--tip-title-color: #003100;--tip-bg-color: #e6f6e6;--tip-border-color: #009400;--tip-code-bg-color: rgb(0 148 0 / 15%);--warning-title-color: #4d3800;--warning-bg-color: #fff8e6;--warning-border-color: #e6a700;--warning-code-bg-color: rgb(230 167 0 / 15%);--danger-title-color: #4b1113;--danger-bg-color: #ffebec;--danger-border-color: #e13238;--danger-code-bg-color: rgb(225 50 56 / 15%);--detail-bg-color: #eee;--detail-text-color: inherit;--detail-code-bg-color: rgb(127 127 127 / 15%)}html[data-theme=dark]{--info-title-color: #eef9fd;--info-bg-color: #193c47;--note-title-color: #fdfdfe;--note-bg-color: #474748;--tip-title-color: #e6f6e6;--tip-bg-color: #003100;--warning-title-color: #fff8e6;--warning-bg-color: #4d3800;--danger-title-color: #ffebec;--danger-bg-color: #4b1113;--detail-bg-color: #333;--detail-text-color: #a8a8a8}.hint-container{position:relative;transition:background var(--vp-ct),border-color var(--vp-ct),color var(--vp-ct)}@media print{.hint-container{page-break-inside:avoid}}.hint-container .hint-container-title{position:relative;font-weight:600;line-height:1.25}.hint-container.info,.hint-container.note,.hint-container.tip,.hint-container.warning,.hint-container.danger{margin:1rem 0;padding:.25rem 1rem;border-inline-start-width:.3rem;border-inline-start-style:solid;border-radius:.5rem;color:inherit}@media (max-width: 419px){.hint-container.info,.hint-container.note,.hint-container.tip,.hint-container.warning,.hint-container.danger{margin-inline:-.75rem}}.hint-container.info .hint-container-title,.hint-container.note .hint-container-title,.hint-container.tip .hint-container-title,.hint-container.warning .hint-container-title,.hint-container.danger .hint-container-title{padding-inline-start:1.75rem}@media print{.hint-container.info .hint-container-title,.hint-container.note .hint-container-title,.hint-container.tip .hint-container-title,.hint-container.warning .hint-container-title,.hint-container.danger .hint-container-title{padding-inline-start:0}}.hint-container.info .hint-container-title:before,.hint-container.note .hint-container-title:before,.hint-container.tip .hint-container-title:before,.hint-container.warning .hint-container-title:before,.hint-container.danger .hint-container-title:before{content:" ";position:absolute;top:calc(50% - .6125em);left:0;width:1.25em;height:1.25em;background-position:left;background-repeat:no-repeat}@media print{.hint-container.info .hint-container-title:before,.hint-container.note .hint-container-title:before,.hint-container.tip .hint-container-title:before,.hint-container.warning .hint-container-title:before,.hint-container.danger .hint-container-title:before{display:none}}html[dir=rtl] .hint-container.info .hint-container-title:before,html[dir=rtl] .hint-container.note .hint-container-title:before,html[dir=rtl] .hint-container.tip .hint-container-title:before,html[dir=rtl] .hint-container.warning .hint-container-title:before,html[dir=rtl] .hint-container.danger .hint-container-title:before{right:0;left:unset}.hint-container.info p,.hint-container.note p,.hint-container.tip p,.hint-container.warning p,.hint-container.danger p{line-height:1.5}.hint-container.info a,.hint-container.note a,.hint-container.tip a,.hint-container.warning a,.hint-container.danger a{color:var(--vp-tc)}.hint-container.info{border-color:var(--info-border-color);background:var(--info-bg-color)}.hint-container.info>.hint-container-title{color:var(--info-title-color)}.hint-container.info>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z' fill='%234cb3d4'/%3E%3C/svg%3E")}.hint-container.info code{background:var(--info-code-bg-color)}.hint-container.note{border-color:var(--note-border-color);background:var(--note-bg-color)}.hint-container.note>.hint-container-title{color:var(--note-title-color)}.hint-container.note>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z' fill='%23ccc'/%3E%3C/svg%3E")}.hint-container.note code{background:var(--note-code-bg-color)}.hint-container.tip{border-color:var(--tip-border-color);background:var(--tip-bg-color)}.hint-container.tip>.hint-container-title{color:var(--tip-title-color)}.hint-container.tip>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23009400' d='M7.941 18c-.297-1.273-1.637-2.314-2.187-3a8 8 0 1 1 12.49.002c-.55.685-1.888 1.726-2.185 2.998H7.94zM16 20v1a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-1h8zm-3-9.995V6l-4.5 6.005H11v4l4.5-6H13z'/%3E%3C/svg%3E")}.hint-container.tip code{background:var(--tip-code-bg-color)}.hint-container.warning{border-color:var(--warning-border-color);background:var(--warning-bg-color)}.hint-container.warning>.hint-container-title{color:var(--warning-title-color)}.hint-container.warning>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M576.286 752.57v-95.425q0-7.031-4.771-11.802t-11.3-4.772h-96.43q-6.528 0-11.3 4.772t-4.77 11.802v95.424q0 7.031 4.77 11.803t11.3 4.77h96.43q6.528 0 11.3-4.77t4.77-11.803zm-1.005-187.836 9.04-230.524q0-6.027-5.022-9.543-6.529-5.524-12.053-5.524H456.754q-5.524 0-12.053 5.524-5.022 3.516-5.022 10.547l8.538 229.52q0 5.023 5.022 8.287t12.053 3.265h92.913q7.032 0 11.803-3.265t5.273-8.287zM568.25 95.65l385.714 707.142q17.578 31.641-1.004 63.282-8.538 14.564-23.354 23.102t-31.892 8.538H126.286q-17.076 0-31.892-8.538T71.04 866.074q-18.582-31.641-1.004-63.282L455.75 95.65q8.538-15.57 23.605-24.61T512 62t32.645 9.04 23.605 24.61z' fill='%23e6a700'/%3E%3C/svg%3E")}.hint-container.warning code{background:var(--warning-code-bg-color)}.hint-container.danger{border-color:var(--danger-border-color);background:var(--danger-bg-color)}.hint-container.danger>.hint-container-title{color:var(--danger-title-color)}.hint-container.danger>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2c5.523 0 10 4.477 10 10v3.764a2 2 0 0 1-1.106 1.789L18 19v1a3 3 0 0 1-2.824 2.995L14.95 23a2.5 2.5 0 0 0 .044-.33L15 22.5V22a2 2 0 0 0-1.85-1.995L13 20h-2a2 2 0 0 0-1.995 1.85L9 22v.5c0 .171.017.339.05.5H9a3 3 0 0 1-3-3v-1l-2.894-1.447A2 2 0 0 1 2 15.763V12C2 6.477 6.477 2 12 2zm-4 9a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4z' fill='%23e13238'/%3E%3C/svg%3E")}.hint-container.danger code{background:var(--danger-code-bg-color)}.hint-container.details{position:relative;display:block;margin:1.6em 0;padding:1.5rem;border-radius:.5rem;background:var(--detail-bg-color);color:var(--detail-text-color);transition:background var(--vp-tt),color var(--vp-tt)}@media print{.hint-container.details{display:none}}@media (max-width: 419px){.hint-container.details{margin-inline:-.75rem}}.hint-container.details h4{margin-top:0}.hint-container.details figure:last-child,.hint-container.details p:last-child{margin-bottom:0;padding-bottom:0}.hint-container.details a{color:var(--vp-tc)}.hint-container.details code{background:var(--detail-code-bg-color)}.hint-container.details summary{position:relative;margin:-1.5rem;padding-top:1.5rem;padding-bottom:1.5rem;padding-inline-start:4rem;padding-inline-end:1.5rem;list-style:none;cursor:pointer}.hint-container.details summary::-webkit-details-marker,.hint-container.details summary::marker{color:transparent;font-size:0}.hint-container.details summary:before,.hint-container.details summary:after{content:" ";position:absolute;top:calc(50% - .75rem);left:1.5rem;width:1.5rem;height:1.5rem}@media print{.hint-container.details summary:before,.hint-container.details summary:after{display:block}}html[dir=rtl] .hint-container.details summary:before,html[dir=rtl] .hint-container.details summary:after{right:1.5rem;left:unset}.hint-container.details summary:before{border-radius:50%;background:#ccc;transition:background var(--vp-ct),transform var(--vp-tt)}html[data-theme=dark] .hint-container.details summary:before{background:#555}.hint-container.details summary:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");line-height:normal;transition:transform var(--vp-tt);transform:rotate(90deg)}html[data-theme=dark] .hint-container.details summary:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.hint-container.details[open]>summary{margin-bottom:.5em}.hint-container.details[open]>summary:after{transform:rotate(180deg)}:root{--tab-bg-color: var(--vp-bg);--tab-nav-text-color: var(--vp-c);--tab-nav-bg-color: #e0e0e0;--tab-nav-hover-color: #eee}html[data-theme=dark]{--tab-nav-bg-color: #34343f;--tab-nav-hover-color: #2d2d38}.vp-tabs{margin:1.5rem 0;border:2px solid var(--vp-brc);border-radius:8px}@media (max-width: 419px){.theme-hope-content>.vp-tabs{margin-right:-1.5rem;margin-left:-1.5rem;border-radius:0}}.vp-tabs-nav{overflow-x:auto;margin:0;padding:0;border-radius:8px 8px 0 0;background:var(--tab-nav-bg-color);list-style:none;white-space:nowrap;transition:background var(--vp-ct)}@media print{.vp-tabs-nav{display:none}}@media (max-width: 419px){.vp-tabs-nav{border-radius:0}}.vp-tab-nav{border-width:0;position:relative;min-width:4rem;margin:0;padding:.5em 1em;border-radius:8px 8px 0 0;background:transparent;color:var(--tab-nav-text-color);font-weight:600;font-size:.85em;line-height:1.75;cursor:pointer;transition:background var(--vp-ct),color var(--vp-ct)}.vp-tab-nav:hover{background:var(--tab-nav-hover-color)}.vp-tab-nav:before,.vp-tab-nav:after{content:" ";position:absolute;bottom:0;z-index:1;width:8px;height:8px}.vp-tab-nav:before{right:100%}.vp-tab-nav:after{left:100%}.vp-tab-nav.active{background:var(--tab-bg-color)}.vp-tab-nav.active:before{background:radial-gradient(16px at left top,transparent 50%,var(--tab-bg-color) 50%)}.vp-tab-nav.active:after{background:radial-gradient(16px at right top,transparent 50%,var(--tab-bg-color) 50%)}.vp-tab-nav:first-child:before{display:none}.vp-tab{display:none;padding:1rem .75rem;background:var(--tab-bg-color);transition:background var(--vp-ct)}.vp-tab.active{display:block}/*! PhotoSwipe main CSS by Dmytro Semenov | photoswipe.com */.pswp{--pswp-bg: #000;--pswp-placeholder-bg: #222;--pswp-root-z-index: 100000;--pswp-preloader-color: rgba(79, 79, 79, .4);--pswp-preloader-color-secondary: rgba(255, 255, 255, .9);--pswp-icon-color: #fff;--pswp-icon-color-secondary: #4f4f4f;--pswp-icon-stroke-color: #4f4f4f;--pswp-icon-stroke-width: 2px;--pswp-error-text-color: var(--pswp-icon-color)}.pswp{position:fixed;top:0;left:0;width:100%;height:100%;z-index:var(--pswp-root-z-index);display:none;touch-action:none;outline:0;opacity:.003;contain:layout style size;-webkit-tap-highlight-color:rgba(0,0,0,0)}.pswp:focus{outline:0}.pswp *{box-sizing:border-box}.pswp img{max-width:none}.pswp--open{display:block}.pswp,.pswp__bg{transform:translateZ(0);will-change:opacity}.pswp__bg{opacity:.005;background:var(--pswp-bg)}.pswp,.pswp__scroll-wrap{overflow:hidden}.pswp__scroll-wrap,.pswp__bg,.pswp__container,.pswp__item,.pswp__content,.pswp__img,.pswp__zoom-wrap{position:absolute;top:0;left:0;width:100%;height:100%}.pswp__img,.pswp__zoom-wrap{width:auto;height:auto}.pswp--click-to-zoom.pswp--zoom-allowed .pswp__img{cursor:zoom-in}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img{cursor:move;cursor:grab}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img:active{cursor:grabbing}.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img,.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img:active,.pswp__img{cursor:zoom-out}.pswp__container,.pswp__img,.pswp__button,.pswp__counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.pswp__item{z-index:1;overflow:hidden}.pswp__hidden{display:none!important}.pswp__content{pointer-events:none}.pswp__content>*{pointer-events:auto}.pswp__error-msg-container{display:grid}.pswp__error-msg{margin:auto;font-size:1em;line-height:1;color:var(--pswp-error-text-color)}.pswp .pswp__hide-on-close{opacity:.005;will-change:opacity;transition:opacity var(--pswp-transition-duration) cubic-bezier(.4,0,.22,1);z-index:10;pointer-events:none}.pswp--ui-visible .pswp__hide-on-close{opacity:1;pointer-events:auto}.pswp__button{position:relative;display:block;width:50px;height:60px;padding:0;margin:0;overflow:hidden;cursor:pointer;background:none;border:0;box-shadow:none;opacity:.85;-webkit-appearance:none;-webkit-touch-callout:none}.pswp__button:hover,.pswp__button:active,.pswp__button:focus{transition:none;padding:0;background:none;border:0;box-shadow:none;opacity:1}.pswp__button:disabled{opacity:.3;cursor:auto}.pswp__icn{fill:var(--pswp-icon-color);color:var(--pswp-icon-color-secondary)}.pswp__icn{position:absolute;top:14px;left:9px;width:32px;height:32px;overflow:hidden;pointer-events:none}.pswp__icn-shadow{stroke:var(--pswp-icon-stroke-color);stroke-width:var(--pswp-icon-stroke-width);fill:none}.pswp__icn:focus{outline:0}div.pswp__img--placeholder,.pswp__img--with-bg{background:var(--pswp-placeholder-bg)}.pswp__top-bar{position:absolute;left:0;top:0;width:100%;height:60px;display:flex;flex-direction:row;justify-content:flex-end;z-index:10;pointer-events:none!important}.pswp__top-bar>*{pointer-events:auto;will-change:opacity}.pswp__button--close{margin-right:6px}.pswp__button--arrow{position:absolute;width:75px;height:100px;top:50%;margin-top:-50px}.pswp__button--arrow:disabled{display:none;cursor:default}.pswp__button--arrow .pswp__icn{top:50%;margin-top:-30px;width:60px;height:60px;background:none;border-radius:0}.pswp--one-slide .pswp__button--arrow{display:none}.pswp--touch .pswp__button--arrow{visibility:hidden}.pswp--has_mouse .pswp__button--arrow{visibility:visible}.pswp__button--arrow--prev{right:auto;left:0}.pswp__button--arrow--next{right:0}.pswp__button--arrow--next .pswp__icn{left:auto;right:14px;transform:scaleX(-1)}.pswp__button--zoom{display:none}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__zoom-icn-bar-v{display:none}.pswp__preloader{position:relative;overflow:hidden;width:50px;height:60px;margin-right:auto}.pswp__preloader .pswp__icn{opacity:0;transition:opacity .2s linear;animation:pswp-clockwise .6s linear infinite}.pswp__preloader--active .pswp__icn{opacity:.85}@keyframes pswp-clockwise{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.pswp__counter{height:30px;margin-top:15px;margin-inline-start:20px;font-size:14px;line-height:30px;color:var(--pswp-icon-color);text-shadow:1px 1px 3px var(--pswp-icon-color-secondary);opacity:.85}.pswp--one-slide .pswp__counter{display:none}.photo-swipe-loading{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;width:100vw;height:100vh}.photo-swipe-bullets-indicator{position:absolute;bottom:30px;left:50%;display:flex;flex-direction:row;align-items:center;transform:translate(-50%)}.photo-swipe-bullet{width:12px;height:6px;margin:0 5px;border-radius:3px;background:#fff;transition:width var(--vp-tt),color var(--vp-ct)}.photo-swipe-bullet.active{width:30px;background:var(--vp-tc)}:root{--navbar-bg-color: var(--bg-color-float-blur);--sidebar-bg-color: var(--bg-color-blur)}html[data-theme=dark]{--navbar-bg-color: var(--bg-color-blur);--sidebar-bg-color: var(--bg-color-blur)}#app{--code-hl-bg-color: var(--code-highlight-line-color);--code-ln-color: var(--code-line-color);--code-ln-wrapper-width: var(--line-numbers-width);--code-tabs-nav-text-color: var(--code-color);--code-tabs-nav-bg-color: var(--code-border-color);--code-tabs-nav-hover-color: var(--code-highlight-line-color);--sidebar-space: var(--sidebar-width)}@media (max-width: 959px){#app{--navbar-height: var(--navbar-mobile-height);--navbar-vertical-padding: var(--navbar-mobile-vertical-padding);--navbar-horizontal-padding: var(--navbar-mobile-horizontal-padding);--sidebar-width: var(--sidebar-mobile-width)}}@media (min-width: 1440px){#app{--sidebar-space: clamp( var(--sidebar-width), max(0px, calc((100vw - var(--content-width)) / 2 - 2rem)), 100vw )}}.DocSearch-Button,.DocSearch{--docsearch-primary-color: var(--vp-tc);--docsearch-text-color: var(--vp-c);--docsearch-highlight-color: var(--vp-tc);--docsearch-muted-color: var(--light-grey);--docsearch-container-background: rgb(9 10 17 / 80%);--docsearch-modal-background: var(--bg-color-float);--docsearch-searchbox-background: var(--bg-color-secondary);--docsearch-searchbox-focus-background: var(--vp-bg);--docsearch-searchbox-shadow: inset 0 0 0 2px var(--vp-tc);--docsearch-hit-color: var(--vp-cl);--docsearch-hit-active-color: var(--vp-bg);--docsearch-hit-background: var(--vp-bg);--docsearch-hit-shadow: 0 1px 3px 0 var(--border-color);--docsearch-footer-background: var(--vp-bg)}html[data-theme=dark] .DocSearch-Button,html[data-theme=dark] .DocSearch{--docsearch-logo-color: var(--vp-c);--docsearch-modal-shadow: inset 1px 1px 0 0 #2c2e40, 0 3px 8px 0 #000309;--docsearch-key-shadow: inset 0 -2px 0 0 #282d55, inset 0 0 1px 1px #51577d, 0 2px 2px 0 rgb(3 4 9 / 30%);--docsearch-key-gradient: linear-gradient(-225deg, #444950, #1c1e21);--docsearch-footer-shadow: inset 0 1px 0 0 rgb(73 76 106 / 50%), 0 -4px 8px 0 rgb(0 0 0 / 20%)}#nprogress{--nprogress-color: var(--vp-tc)}.search-box{--search-bg-color: var(--vp-bg);--search-accent-color: var(--vp-tc);--search-text-color: var(--vp-c);--search-border-color: var(--border-color);--search-item-text-color: var(--vp-clt);--search-item-focus-bg-color: var(--bg-color-secondary)}.external-link-icon{--external-link-icon-color: var(--light-grey)}html,body{margin:0;padding:0;background:#fff}html{font-size:16px;font-display:optional;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}@media print{html{font-size:12pt}}body{min-height:100vh;color:#2c3e50}a{color:#3eaf7c;font-weight:500;text-decoration:none;overflow-wrap:break-word}kbd{display:inline-block;min-width:1em;margin-inline:.125rem;padding:.25em;border:1px solid #eee;border-radius:.25em;box-shadow:1px 1px 4px #00000026;line-height:1;letter-spacing:-.1em;text-align:center}code{margin:0;padding:.2rem .4rem;border-radius:5px;background:rgba(127,127,127,.12);font-size:.85em;overflow-wrap:break-word}table code{padding:.1rem .4rem}p a code{color:#3eaf7c;font-weight:400}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:500;line-height:1.25;overflow-wrap:break-word}h1:hover .header-anchor,h2:hover .header-anchor,h3:hover .header-anchor,h4:hover .header-anchor,h5:hover .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2rem}h2{padding-bottom:.3rem;border-bottom:1px solid #eaecef;font-size:1.65rem}h3{font-size:1.35rem}h4{font-size:1.15rem}h5{font-size:1.05rem}h6{font-size:1rem}a.header-anchor{float:left;margin-top:.125em;margin-inline-start:-.87em;padding-inline-end:.23em;font-size:.85em;opacity:0;transition:opacity .2s}@media print{a.header-anchor{display:none!important}}a.header-anchor:hover{text-decoration:none}a.header-anchor:focus-visible{opacity:1}p,ul,ol{line-height:1.6;overflow-wrap:break-word}@media print{p,ul,ol{line-height:1.5}}ul,ol{padding-inline-start:1.2em}blockquote{margin:1rem 0;padding:.25rem 0 .25rem 1rem;border-inline-start:.2rem solid #ddd;color:#666;font-size:1rem;overflow-wrap:break-word}blockquote>p{margin:0}hr{border:0;border-top:1px solid #eaecef}table{display:block;overflow-x:auto;margin:1rem 0;border-collapse:collapse}tr:nth-child(2n){background:#f6f8fa}th,td{padding:.6em 1em;border:1px solid #dfe2e5}pre{direction:ltr}@page{margin:2cm;font-size:12pt;size:a4}@media print{*,:after,:before{box-shadow:none!important;text-shadow:none!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}a{color:inherit;font-weight:inherit!important;font-size:inherit!important;text-decoration:underline}a[href^="http://"]:after,a[href^="https://"]:after{content:" (" attr(href) ") "}abbr[title]:after{content:" (" attr(title) ")"}pre{border:1px solid #eee;white-space:pre-wrap!important}pre>code{white-space:pre-wrap!important}blockquote{border-inline-start:.2rem solid #ddd;color:inherit}blockquote,pre{orphans:5;widows:5}img,tr,canvas{page-break-inside:avoid}}@font-face{font-weight:400;font-style:normal;font-family:Crimson;src:url(data:font/truetype;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTYr5mwEAAAyMAAAAHEdERUYAKQATAAAMbAAAAB5PUy8yVsJ0MgAAAVgAAABgY21hcBiKDzgAAAHcAAABWGdhc3D//wADAAAMZAAAAAhnbHlmr+DBdQAAA1AAAAdsaGVhZBZwt+8AAADcAAAANmhoZWEFawEuAAABFAAAACRobXR4BksA9gAAAbgAAAAibG9jYQlsC24AAAM0AAAAHG1heHAAEQBZAAABOAAAACBuYW1lLaFDVAAACrwAAAFrcG9zdAC1AHoAAAwoAAAAPAABAAAAAQAAqBd2H18PPPUACwQAAAAAANqqufwAAAAA2qq5/AAb/9wB4QMeAAAACAACAAAAAAAAAAEAAAMs/ywAXAH9AAAAAAHhAAEAAAAAAAAAAAAAAAAAAAAEAAEAAAANAFkAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAH1AZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAIABgMAAAAAAAAAAAABEAAAAAAAAAAAAAAAUGZFZADAADAAOQMs/ywAXAMsANQAAAABAAAAAAMYAAAAAAAgAAEBpwAfAAAAAAFVAAAB/QAfAH0ALQA+ABsAPgAyACgAPgAxAAAAAAADAAAAAwAAABwAAQAAAAAAUgADAAEAAAAcAAQANgAAAAQABAABAAAAOf//AAAAL///AAAAAQAEAAAAAAADAAQABQAGAAcACAAJAAoACwAMAAABBgAAAQAAAAAAAAABAgAAAAIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwQFBgcICQoLDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAJgAmAGIAwAEeAZIBzgJAApYC2gNiA7YAAQAf/9wBhwMeABIAAAEGBwYHATAXFjM2NzY3ASYnJjcBgxwLCgH+zgMECxIKCgIBLgEDAwMDHhQFBgP85wMEAQgJBgMOAwMDEwAAAAIAH//9Ad0CkAAQACEAABMWFxYXNjc2NzQnJicGBwYHNyY3NjcWFxYXFAcGByYnJjcfATo6amo7OQE5OmxrOjkBXQIlJEE5IyIBIyJEOSQjAgFOkV5eBAReXoqJXl4EBF5eggJ0UlEDA09Qe3xVVgMDU1OEAAAAAAEAff/9AYACkQA+AAA3FAcGBwYHBiMGFQYXNjc2MzIXFhc2JzQnIicmJyY1JjURNjc2MSYnJicjBgcGBwYVFBUUFxYXNjc2NzIXFhXkAQEEBRgYDAMBBB4ZGhweGxofBAEDDBgZBQQBAQMEAQIDBAIFNTZCAgMDBA0XFw0LBQV3GBMVDAgEBAUKCgUCAQICAQIFCgoFBAQIDBUTGAGnLxkbBAYFAQIZGh4BAgECBQUEAwUHBwEICRYAAAAAAQAtAAAB0QKRADoAADcGFxYXITY3NjcmJyYjIgcGBwYHBisBNjc2NzY3NjUmJyYnBgcGBxQXFhc2NzY3FhcWFxYHBgcGBwYHLgEEAwMBYwURERADBwYFBAMDAg8VEx/LJkBAOhsQDwIxMkxSMjIHCAYGCSYmPTIfHwEBCgoeLkJBQg8EBQQCETAwKQICAgEBBCgUEylJSUYhJicsRDIzAgY1NRoEBQYBEyEhAwEjIjYlJCQtQlBQSAAAAAABAD7/+wG+ApEASgAANwYXFhcWFxYzNjc2NyYnJic2NzY3JicmIwYHBgcUFxYXNjc2NxYXFhcGBwYHBgcUFRQXNjc2NxYXFhcGBwYnIicmJyYnJiciBwYXPwEIBwUaHB0VZU5NBAMvLi8eIB4DAywsKzwrKxgEAwUIHR4wLRscAQMvLz8BAQYKEhEQNSYmAgImJSsWExQPCw0NFREMDQE7DgsLBQwFBgE8PWpMKSoGECQkMkAiIQIdHyUHBwcBCRscAwEbGSpCIyUOAgMCAwwIAwUEAQEoKD9XJSQBBQYODg8PAQ0NFQAAAgAb//oB4QKTACIAJQAANxQXFhchFRQXFjMyNzYjNTM2NzY1NCcmJyMRNCcmIwYHBgcBExEbAgMFASEJCRIdCAkBRgIBAQUEBTwFAwgHCQkG/vjmxgUGBgOwBQIBAwKzAgQDCBAMDQEBlAYGBgEICQf+cwEs/tQAAQA+//sBvgKTAEoAADcGFxYXFhcWMzY3NjcmJyYnIgcGBzY3NjczMjc2NzY3NjU0JyYnBgcGByMGBwYHFBcWMzY3NjMWFxYHBgcGJyInJicmJyYnIgcGFz8BCAcFGhwdFWVOTQQBMjJbFx8gFwoJCQlWKB0dFQ4JCAQDBQMdHSKXCREQEgMCBA4bGhNYJyUBAiYlKxYTFA8LDQ0VEQwNATsOCwsFDAUGATw9akU2NwMFBggrMC8uAgICExcZBgQCAgMBAwQBMVNUWAUFBAYFBAMxMTNZIyQBBQYODg8PAQ0NFQAAAgAy//oBzQKXACAAMwAANxQXFhc2NzY3NicmJyIHBgc2NzY3NCcmJwYHBgcGBwYXNyY3Njc2FxYXFgcGBwYHJicmNzM1NV5aOTsCAioqahoiIRsnWFhFAwIHQ0tMOTAZGQFbBAQaGxkXRB8fAQEfIDE9Hh4E511FRwQDPT1ZPEJBBQwLF4Y9PRMGCwwBEiwsPDZFRkkTHyAbCAcBAjAwREYsLQEFREVQAAAAAAEAKP/7AdUCiwApAAATFhcWMzI3Njc2NzYzIQYHBgcWFxYzMjcBNjc2NzQnJiMiBwYjIQYHBgcoAwYHAwYDAwELEBEdAQUJYWJXAQ8PDgcDAQ4LCQgBAQEEBhUVFv7JBgsNDAH6DQMCAQEFKRITFMjHjQcFBgMCPxYSEwoEAgMBAhkrKiAAAAADAD7/9wG/ApIAKABBAFgAADcGFxYXNjc2NyYnJicmJzQ3Njc2NyYnJiMGBwYHFhcWFxYVFAcGBwYHNyY3Njc2MzIzMhcyFxYXFhcGBwYHIicmNxMmNzY3FhcWFRQHBgcGByIjIicmJyY3PwE1M1ZQODgDAykpMQIBAyYlJQMCMC9HRjExAgIiIiMCAiMvLwNTBBQTKgEBAQECAQIBEjU1CAEdHjMrISICGAMYGSYvGxoTEx8CAQIBBAMfJCQBoU8tLQECMjFPOC4uGwIBAgEWJiU7SCYoAjEwQzopKhMBAgECEykpQAQsIiEbAQEBBywsQjUeHQEiI0QBZSMhIAECJiYvKh8gFAEBAhAfIEYAAAIAMf/6AcsClwAgADMAABMGFxYXMjc2NwYHBgcUFxYXNjc2NzY3NjUmJyYnBgcGBzcmNzY3FhcWFRQHBgcGJyYnJjc0AyopahoiIRsoV1hFAwIHQ0tMODEZGQE2NF5ZOjoBWgMfHzE9Hh4EGhoaF0QeHwUBy0dBQgUMCxeFPj0SBwsLAREsLD01RkVPV0dFBQQ8PU8UPCwtAQVFRUklIRsHCAECMDBPAAAADACWAAEAAAAAAAEABwAQAAEAAAAAAAIABwAoAAEAAAAAAAMABwBAAAEAAAAAAAQABwBYAAEAAAAAAAUAHgCeAAEAAAAAAAYABwDNAAMAAQQJAAEADgAAAAMAAQQJAAIADgAYAAMAAQQJAAMADgAwAAMAAQQJAAQADgBIAAMAAQQJAAUAPABgAAMAAQQJAAYADgC9AEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAFYAZQByAHMAaQBvAG4AIAAxAC4AMAA7ACAARgBvAG4AdABFAGQAaQB0AG8AcgAgACgAdgAxAC4AMAApAABWZXJzaW9uIDEuMDsgRm9udEVkaXRvciAodjEuMCkAAEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAAACAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAABAAIAEwAUABUAFgAXABgAGQAaABsAHAAAAAH//wACAAEAAAAMAAAAFgAAAAIAAQADAAwAAQAEAAAAAgAAAAAAAAABAAAAANWkJwgAAAAA2qq5/AAAAADaqrn8) format("truetype")}html,body{background:var(--bg-color);transition:background var(--color-transition)}:root{color-scheme:light}html[data-theme=dark]{color-scheme:dark}body{color:var(--text-color);font-family:var(--font-family)}@media (min-width: 1440px){body{font-size:17px}}a{color:var(--theme-color)}kbd{border-color:var(--border-color-dark);background:var(--bg-color-secondary);font-family:var(--font-family-mono)}code{font-family:var(--font-family-mono);transition:background var(--color-transition),color var(--color-transition)}html[data-theme=dark] code{background:#333}p a code{color:var(--theme-color)}blockquote{border-color:#eee;color:#666;transition:border-color var(--color-transition),color var(--color-transition)}html[data-theme=dark] blockquote{border-color:#333}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-heading)}@media (max-width: 419px){h1{font-size:1.9rem}}h2{border-color:var(--border-color);transition:border-bottom-color var(--color-transition)}hr{border-color:var(--border-color);transition:border-top-color var(--color-transition)}tr:nth-child(2n){background:var(--bg-color-secondary)}th,td{border-color:var(--border-color-dark)}@media print{@page{--text-color: #000 !important;--bg-color: #fff !important}div[class*=language-]{position:relative!important}}.theme-hope-content:not(.custom)>*:first-child{margin-top:0}.vp-breadcrumb{max-width:var(--content-width, 740px);margin-inline-start:auto;margin-inline-end:auto;padding-inline-start:2.5rem;padding-inline-end:2.5rem;position:relative;z-index:2;padding-top:1rem;font-size:15px}@media (max-width: 959px){.vp-breadcrumb{padding-inline-start:1.5rem;padding-inline-end:1.5rem}}@media print{.vp-breadcrumb{max-width:unset}}@media (max-width: 959px){.vp-breadcrumb{font-size:14px}}@media (max-width: 419px){.vp-breadcrumb{padding-top:.5rem;font-size:12.8px}}@media print{.vp-breadcrumb{display:none}}.vp-breadcrumb .icon{margin-inline-end:.25em}.vp-breadcrumb a{display:inline-block;padding:0 .5em}.vp-breadcrumb a:before{position:relative;bottom:.125rem;margin-inline-end:.25em}.vp-breadcrumb a:hover{color:var(--theme-color)}.vp-breadcrumb ol{margin:0;padding-inline-start:0;list-style:none}.vp-breadcrumb li{display:inline-block;line-height:1.5}.vp-breadcrumb li:first-child a{padding-inline-start:0}.vp-breadcrumb li:last-child a{padding-inline-end:0}.vp-breadcrumb li.is-active a{color:var(--light-grey);cursor:default;pointer-events:none}.vp-breadcrumb li+li:before{content:"/";color:var(--light-grey)}.toggle-sidebar-wrapper{position:fixed;top:var(--navbar-height);bottom:0;left:var(--sidebar-space);z-index:100;display:flex;align-items:center;justify-content:center;font-size:2rem;transition:left var(--transform-transition)}@media (max-width: 719px){.toggle-sidebar-wrapper{display:none}}@media (min-width: 1440px){.toggle-sidebar-wrapper{display:none}}html[dir=rtl] .toggle-sidebar-wrapper{right:var(--sidebar-space);left:unset}.toggle-sidebar-wrapper:hover{background:rgba(127,127,127,.05);cursor:pointer}.toggle-sidebar-wrapper .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");line-height:normal;transition:all .3s}html[data-theme=dark] .toggle-sidebar-wrapper .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.toggle-sidebar-wrapper .arrow.down{transform:rotate(180deg)}html[dir=rtl] .toggle-sidebar-wrapper .arrow.down{transform:rotate(-180deg)}.toggle-sidebar-wrapper .arrow.end{transform:rotate(90deg)}html[dir=rtl] .toggle-sidebar-wrapper .arrow.end,.toggle-sidebar-wrapper .arrow.start{transform:rotate(-90deg)}html[dir=rtl] .toggle-sidebar-wrapper .arrow.start{transform:rotate(90deg)}.theme-container{display:flex;flex-direction:column;justify-content:space-between;min-height:100vh}.theme-container .vp-page{padding-top:var(--navbar-height);padding-inline-start:calc(var(--sidebar-space) + 2rem)}@media (max-width: 719px){.theme-container .vp-page{padding-inline-start:0;padding-inline-end:0}}@media (min-width: 1440px){.theme-container .vp-page{padding-inline-end:calc(100vw - var(--content-width) - var(--sidebar-space) - 6rem)}}.theme-container .vp-sidebar{top:var(--navbar-height)}.theme-container.no-navbar .vp-page{padding-top:0}.theme-container.no-navbar .vp-sidebar{top:0}@media (max-width: 719px){.theme-container.no-navbar .vp-sidebar{top:0}}@media (max-width: 719px){.theme-container.hide-navbar .vp-sidebar{top:0}}.theme-container.sidebar-collapsed .vp-page{padding-inline-start:0}.theme-container.sidebar-collapsed .vp-sidebar{box-shadow:none;transform:translate(-100%)}html[dir=rtl] .theme-container.sidebar-collapsed .vp-sidebar{transform:translate(100%)}.theme-container.sidebar-collapsed .toggle-sidebar-wrapper{left:0}html[dir=rtl] .theme-container.sidebar-collapsed .toggle-sidebar-wrapper{right:0;left:unset}.theme-container.no-sidebar .vp-page{padding-inline-start:0;padding-inline-end:0}@media (min-width: 1440px){.theme-container.no-sidebar.has-toc .vp-page{padding-inline-end:16rem}}.theme-container.no-sidebar .vp-toggle-sidebar-button,.theme-container.no-sidebar .toggle-sidebar-wrapper,.theme-container.no-sidebar .vp-sidebar{display:none}.theme-container.sidebar-open .vp-sidebar{box-shadow:2px 0 8px var(--card-shadow);transform:translate(0)}.fade-slide-y-enter-active{transition:all .3s ease!important}.fade-slide-y-leave-active{transition:all .3s cubic-bezier(1,.5,.8,1)!important}.fade-slide-y-enter-from,.fade-slide-y-leave-to{opacity:0;transform:translateY(10px)}.vp-feature-wrapper{position:relative}.vp-feature-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background-attachment:fixed;background-position:50%;background-size:cover}.vp-feature-bg.light{display:inline-block}.vp-feature-bg.dark,html[data-theme=dark] .vp-feature-bg.light{display:none}html[data-theme=dark] .vp-feature-bg.dark{display:inline-block}.vp-feature{position:relative;z-index:1;margin:0 auto;padding:1.5rem 1rem;color:var(--text-color-lighter);text-align:center}.vp-feature-bg+.vp-feature{color:#222}html[data-theme=dark] .vp-feature-bg+.vp-feature{color:#eee}.vp-feature-bg+.vp-feature .icon{color:inherit}.vp-feature-image{height:10rem;margin:0 auto}@media (max-width: 959px){.vp-feature-image{height:8rem}}.vp-feature-image.light{display:inline-block}.vp-feature-image.dark,html[data-theme=dark] .vp-feature-image.light{display:none}html[data-theme=dark] .vp-feature-image.dark{display:inline-block}.vp-feature-header{margin-bottom:1.5rem;border-bottom:none;font-size:3rem;font-family:var(--font-family);text-align:center}@media (max-width: 959px){.vp-feature-header{font-size:2.5rem}}@media (max-width: 719px){.vp-feature-header{font-size:2.25rem}}@media (max-width: 419px){.vp-feature-header{font-size:2rem}}.vp-feature-description{font-size:1.125rem}.vp-features{z-index:1;display:flex;flex-wrap:wrap;align-content:stretch;align-items:stretch;justify-content:center;margin:1rem 0;text-align:start}@media print{.vp-features{display:block}}.vp-features:first-child{border-top:1px solid var(--border-color);transition:border-color var(--color-transition)}.vp-feature-item{position:relative;display:block;flex-basis:calc(33% - 3rem);margin:.5rem;padding:1rem;border-radius:.5rem;color:inherit;transition:background var(--color-transition),box-shadow var(--color-transition),transform var(--transform-transition)}@media (min-width: 1440px){.vp-feature-item{flex-basis:calc(25% - 3rem)}}@media (max-width: 959px){.vp-feature-item{flex-basis:calc(50% - 3rem)}}@media (max-width: 719px){.vp-feature-item{flex-basis:100%;font-size:.95rem}}@media (max-width: 419px){.vp-feature-item{margin:.5rem 0;font-size:.9rem}}.vp-feature-item.link{cursor:pointer}@media print{.vp-feature-item.link{text-decoration:none}}.vp-feature-item .icon{display:inline-block;width:1.1em;margin-inline-end:.5rem;color:var(--theme-color);font-weight:400;font-size:1.1em}.vp-feature-item:hover{background-color:var(--bg-color-secondary);box-shadow:0 2px 12px 0 var(--card-shadow);transform:translate(-2px,-2px);transform:scale(1.05)}.vp-feature-bg+.vp-feature .vp-feature-item:hover{background-color:transparent}.vp-feature-item:only-child{flex-basis:100%}.vp-feature-item:first-child:nth-last-child(2),.vp-feature-item:nth-child(2):last-child{flex-basis:calc(50% - 3rem)}@media (max-width: 719px){.vp-feature-item:first-child:nth-last-child(2),.vp-feature-item:nth-child(2):last-child{flex-basis:100%}}.vp-feature-title{margin:.25rem 0 .5rem;font-weight:700;font-size:1.3rem;font-family:var(--font-family)}@media (max-width: 419px){.vp-feature-title{font-size:1.2rem}}.vp-feature-details{margin:0;line-height:1.4}.vp-footer-wrapper{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-evenly;padding-top:.75rem;padding-bottom:.75rem;padding-inline-start:calc(var(--sidebar-space) + 2rem);padding-inline-end:2rem;border-top:1px solid var(--border-color);background:var(--bg-color);color:var(--dark-grey);text-align:center;transition:border-top-color var(--color-transition),background var(--color-transition),padding var(--transform-transition)}@media (max-width: 719px){.vp-footer-wrapper{padding-inline-start:2rem}}@media (min-width: 1440px){.vp-footer-wrapper{z-index:50;padding-inline-start:2rem}}@media print{.vp-footer-wrapper{margin:0!important;padding:0!important}}@media (max-width: 419px){.vp-footer-wrapper{display:block}}.no-sidebar .vp-footer-wrapper,.sidebar-collapsed .vp-footer-wrapper{padding-inline-start:2rem}.vp-footer{margin:.5rem 1rem;font-size:14px}@media print{.vp-footer{display:none}}.vp-copyright{margin:6px 0;font-size:13px}.vp-page:not(.not-found)+.vp-footer-wrapper{margin-top:-2rem}.vp-hero-info-wrapper{position:relative;display:flex;align-items:center;justify-content:center;margin-inline-start:auto;margin-inline-end:auto}.vp-hero-info-wrapper.fullscreen{height:calc(100vh - var(--navbar-height))!important}.vp-hero-info{z-index:1;width:100%;padding-inline-start:2.5rem;padding-inline-end:2.5rem}@media (max-width: 959px){.vp-hero-info{padding-inline-start:1.5em;padding-inline-end:1.5rem}}@media (min-width: 959px){.vp-hero-info{display:flex;align-items:center;justify-content:space-evenly}}.vp-hero-mask{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background-position:50%;background-size:cover}.vp-hero-mask:after{content:" ";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:block}.vp-hero-mask.light{display:block}html[data-theme=dark] .vp-hero-mask.light,.vp-hero-mask.dark{display:none}html[data-theme=dark] .vp-hero-mask.dark{display:block}.vp-hero-infos{z-index:1;margin:0 .5rem}.vp-hero-image{display:block;max-width:100%;max-height:18rem;margin:1rem}@media (max-width: 959px){.vp-hero-image{margin:2rem auto}}@media (max-width: 719px){.vp-hero-image{max-height:16rem;margin:1.5rem auto}}@media (max-width: 419px){.vp-hero-image{max-height:14rem}}.vp-hero-image.light{display:block}html[data-theme=dark] .vp-hero-image.light,.vp-hero-image.dark{display:none}html[data-theme=dark] .vp-hero-image.dark{display:block}#main-title{margin:.5rem 0;background:linear-gradient(120deg,var(--theme-color-light),var(--theme-color) 30%,#a140ff 100%);-webkit-background-clip:text;background-clip:text;font-weight:700;font-size:3.6rem;font-family:var(--font-family);line-height:1.5;-webkit-text-fill-color:transparent}@media (max-width: 719px){#main-title{margin:0}}@media (max-width: 959px){#main-title{font-size:2.5rem;text-align:center}}@media (max-width: 719px){#main-title{font-size:2.25rem;text-align:center}}@media (max-width: 419px){#main-title{margin:0 auto;font-size:2rem}}.vp-description,.vp-actions{margin:1.8rem 0}@media (max-width: 719px){.vp-description,.vp-actions{margin:1.5rem 0}}@media (max-width: 959px){.vp-description,.vp-actions{margin:1.5rem auto;text-align:center}}@media (max-width: 419px){.vp-description,.vp-actions{margin:1.2rem 0}}.vp-description{max-width:35rem;color:var(--text-color-light);font-weight:500;font-size:1.6rem;line-height:1.3}@media (max-width: 719px){.vp-description{font-size:1.4rem}}@media (max-width: 419px){.vp-description{font-size:1.2rem}}.vp-action{display:inline-block;overflow:hidden;min-width:4rem;margin:.5rem;padding:.5em 1.5rem;border-radius:2rem;background:var(--bg-color-secondary);color:var(--text-color);font-size:1.2rem;text-align:center;transition:color var(--color-transition),color var(--color-transition),transform var(--transform-transition)}@media (max-width: 719px){.vp-action{padding:.5rem 1rem;font-size:1.1rem}}@media (max-width: 419px){.vp-action{font-size:1rem}}@media print{.vp-action{text-decoration:none}}.vp-action:hover{background:var(--bg-color-tertiary)}.vp-action.primary{border-color:var(--theme-color);background:var(--theme-color);color:var(--white)}.vp-action.primary:hover{border-color:var(--theme-color-light);background:var(--theme-color-light)}.vp-project-home:not(.pure) .vp-action:active{transform:scale(.96)}.vp-highlight-wrapper{position:relative;display:flex;align-items:center;justify-content:center}.vp-highlight-wrapper:nth-child(2n) .vp-highlight{flex-direction:row-reverse}.vp-highlight{z-index:1;display:flex;flex:1;align-items:center;justify-content:flex-end;max-width:var(--home-page-width);margin:0 auto;padding:1.5rem 2.5rem;color:#222}@media (max-width: 719px){.vp-highlight{display:block;padding-inline-start:1.5rem;padding-inline-end:1.5rem;text-align:center}}html[data-theme=dark] .vp-highlight{color:#eee}.vp-highlight-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background-attachment:fixed;background-position:50%;background-size:cover}.vp-highlight-bg.light{display:inline-block}.vp-highlight-bg.dark,html[data-theme=dark] .vp-highlight-bg.light{display:none}html[data-theme=dark] .vp-highlight-bg.dark{display:inline-block}.vp-highlight-image{width:12rem;margin:2rem 4rem}@media (max-width: 959px){.vp-highlight-image{width:10rem}}@media (max-width: 719px){.vp-highlight-image{width:8rem;margin:0 auto}}.vp-highlight-image.light{display:inline-block}.vp-highlight-image.dark,html[data-theme=dark] .vp-highlight-image.light{display:none}html[data-theme=dark] .vp-highlight-image.dark{display:inline-block}.vp-highlight-info-wrapper{display:flex;flex:1;justify-content:center;padding:2rem}@media (max-width: 719px){.vp-highlight-info-wrapper{padding:1rem 0}}.vp-highlight-info-wrapper:only-child{flex:1 0 100%}.vp-highlight-info{text-align:start}.vp-highlight-header{margin-bottom:1.5rem;border-bottom:none;font-size:3rem;font-family:var(--font-family)}@media (max-width: 959px){.vp-highlight-header{font-size:2.5rem}}@media (max-width: 719px){.vp-highlight-header{font-size:2.25rem;text-align:center}}@media (max-width: 419px){.vp-highlight-header{font-size:2rem}}.vp-highlight-description{font-size:1.125rem}.vp-highlights{margin-inline-start:-1.25em;padding-inline-start:0}.vp-highlight-item-wrapper{padding:.5em .5em .5em 1.75em;border-radius:.5rem;list-style:none}.vp-highlight-item-wrapper.link{cursor:pointer}.vp-highlight-item-wrapper:hover{background-color:var(--bg-color-secondary);box-shadow:0 2px 12px 0 var(--card-shadow);transition:transform var(--transform-transition);transform:translate(-2px,-2px)}.vp-highlight-bg+.vp-highlight .vp-highlight-item-wrapper:hover{background-color:transparent}.vp-highlight-item-wrapper::marker{font-weight:700}.vp-highlight-item{display:list-item;color:inherit;list-style:initial}@media print{.vp-highlight-item{text-decoration:none}}.vp-highlight-title{margin:0;font-weight:600;font-size:1.125rem;font-family:var(--font-family)}.vp-highlight-title .icon{margin-inline-end:.25em}.vp-highlight-details{margin:.5rem 0 0}.vp-project-home{--content-width: var(--home-page-width);display:block;flex:1;padding-top:var(--navbar-height)}@media screen{.vp-project-home .vp-hero-info-wrapper:not(.fullscreen) .vp-hero-info{max-width:var(--home-page-width)}}@media screen{.vp-project-home .vp-feature{max-width:var(--home-page-width)}}.vp-project-home .theme-hope-content{padding-bottom:1.5rem!important}.vp-project-home .theme-hope-content:empty{padding:0!important}.not-found-hint{padding:2rem}.not-found-hint .error-code{margin:0;font-weight:700;font-size:4rem;line-height:4rem}.not-found-hint .error-title{font-weight:700}.not-found-hint .error-hint{margin:0;padding:12px 0;font-weight:600;font-size:20px;line-height:20px;letter-spacing:2px}.vp-page.not-found{display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;width:100vw;max-width:var(--home-page-width);margin:0 auto;padding:calc(var(--navbar-height) + 1rem) 1rem 1rem!important;text-align:center}.vp-page.not-found .action-button{display:inline-block;box-sizing:border-box;margin:.25rem;padding:.75rem 1rem;border-width:0;border-bottom:1px solid var(--theme-color-dark);border-radius:3rem;background:var(--theme-color);color:var(--white);outline:none;font-size:1rem;transition:background .1s ease}.vp-page.not-found .action-button:hover{background:var(--theme-color-light);cursor:pointer}.vp-page-nav{display:flex;flex-wrap:wrap;min-height:2rem;margin-top:0;padding-top:.5rem;padding-bottom:.5rem;padding-inline-start:2rem;padding-inline-end:2rem;border-top:1px solid var(--border-color);transition:border-top var(--color-transition)}@media (max-width: 959px){.vp-page-nav{padding-inline-start:1rem;padding-inline-end:1rem}}@media print{.vp-page-nav{display:none}}.vp-page-nav .nav-link{display:inline-block;flex-grow:1;margin:.25rem;padding:.25rem .5rem;border:1px solid var(--border-color);border-radius:.25rem}.vp-page-nav .nav-link:hover{background:var(--bg-color-secondary)}.vp-page-nav .nav-link .hint{color:var(--light-grey);font-size:.875rem;line-height:2}.vp-page-nav .nav-link .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");line-height:normal;transition:all .3s;font-size:.75rem}html[data-theme=dark] .vp-page-nav .nav-link .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.vp-page-nav .nav-link .arrow.down{transform:rotate(180deg)}html[dir=rtl] .vp-page-nav .nav-link .arrow.down{transform:rotate(-180deg)}.vp-page-nav .nav-link .arrow.end{transform:rotate(90deg)}html[dir=rtl] .vp-page-nav .nav-link .arrow.end,.vp-page-nav .nav-link .arrow.start{transform:rotate(-90deg)}html[dir=rtl] .vp-page-nav .nav-link .arrow.start{transform:rotate(90deg)}.vp-page-nav .prev{text-align:start}.vp-page-nav .prev .icon{margin-inline-end:.25em}.vp-page-nav .next{text-align:end}.vp-page-nav .next .icon{margin-inline-start:.25em}.vp-page-title{max-width:var(--content-width, 740px);margin-inline-start:auto;margin-inline-end:auto;padding-inline-start:2.5rem;padding-inline-end:2.5rem;position:relative;z-index:1;padding-top:1rem;padding-bottom:0}@media (max-width: 959px){.vp-page-title{padding-inline-start:1.5rem;padding-inline-end:1.5rem}}@media print{.vp-page-title{max-width:unset}}@media print{.vp-page-title{padding-inline-start:0!important;padding-inline-end:0!important}}@media (max-width: 959px){.vp-page-title{padding-top:.5rem}}.vp-page-title h1{margin-top:calc(0px - var(--navbar-height))!important;margin-bottom:1rem;padding-top:var(--navbar-height)!important;font-size:2.2rem}@media (max-width: 959px){.vp-page-title h1{margin-bottom:.5rem}}.vp-page-title h1 .icon{margin-inline-end:.25em;color:var(--theme-color);font-size:.9em}.theme-hope-content:not(.custom){padding-top:0!important}.theme-hope-content:not(.custom) h1:first-child,.theme-hope-content:not(.custom) h2:first-child,.theme-hope-content:not(.custom) h3:first-child,.theme-hope-content:not(.custom) h4:first-child,.theme-hope-content:not(.custom) h5:first-child,.theme-hope-content:not(.custom) h6:first-child{margin-top:calc(.5rem - var(--navbar-height))!important;padding-top:var(--navbar-height)!important}.theme-hope-content:not(.custom)>h1:first-child{display:none}.vp-page{display:block;flex-grow:1;padding-bottom:2rem;transition:padding var(--transform-transition)}@media print{.vp-page{min-height:auto!important;margin:0!important;padding:0!important}}.page-cover{-o-object-fit:cover;object-fit:cover;width:calc(100% + 2rem);max-height:25vh;margin-left:-2rem}@media (max-width: 719px){.page-cover{width:100%;margin:0;border-radius:0}}@media (min-width: 1440px){.page-cover{width:calc(100% - 2rem);margin:0 1rem;border-radius:.5rem}}.page-cover .sidebar-collapsed{width:100%;margin-left:0}.vp-skip-link{top:.25rem;left:.25rem;z-index:999;padding:.65rem 1.5rem;border-radius:.5rem;background:var(--bg-color);color:var(--theme-color);box-shadow:var(--card-shadow);font-weight:700;font-size:.9em;text-decoration:none}@media print{.vp-skip-link{display:none}}.vp-skip-link:focus{clip:auto;width:auto;height:auto;-webkit-clip-path:none;clip-path:none}.theme-hope-content pre{overflow:auto;margin:.85rem 0;padding:1rem;border-radius:6px;line-height:1.375}.theme-hope-content pre code{padding:0;border-radius:0;background:transparent!important;color:var(--code-color);font-family:var(--font-family-mono);text-align:left;white-space:pre;word-spacing:normal;word-wrap:normal;word-break:normal;overflow-wrap:unset;-webkit-hyphens:none;hyphens:none;transition:color var(--color-transition);-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}@media print{.theme-hope-content pre code{white-space:pre-wrap}}.theme-hope-content .line-number{font-family:var(--font-family-mono)}div[class*=language-]{position:relative;border-radius:6px;background:var(--code-bg-color);transition:background var(--color-transition)}@media (max-width: 419px){.theme-hope-content>div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}div[class*=language-]:before{content:attr(data-ext);position:absolute;top:0;right:1em;z-index:3;color:var(--code-line-color);font-size:.75rem;transition:color var(--color-transition)}div[class*=language-] pre{position:relative;z-index:1}div[class*=language-] .highlight-lines{position:absolute;top:0;left:0;width:100%;padding-top:1rem;line-height:1.375;-webkit-user-select:none;-moz-user-select:none;user-select:none}div[class*=language-] .highlight-line{background:var(--code-highlight-line-color);transition:background var(--color-transition)}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;top:0;left:0;z-index:2;width:var(--line-numbers-width);height:100%;border-right:1px solid var(--code-highlight-line-color);border-radius:6px 0 0 6px;transition:border-color var(--color-transition)}@media (max-width: 419px){div[class*=language-].line-numbers-mode:after{border-radius:0}}@media print{div[class*=language-].line-numbers-mode:after{display:none}}div[class*=language-].line-numbers-mode .highlight-line{position:relative}div[class*=language-].line-numbers-mode .highlight-line:before{content:" ";position:absolute;top:0;left:0;z-index:3;display:block;width:var(--line-numbers-width);height:100%}div[class*=language-].line-numbers-mode pre{vertical-align:middle;margin-left:var(--line-numbers-width);padding-left:.5rem}@media print{div[class*=language-].line-numbers-mode pre{margin-left:0;padding-left:1rem}}div[class*=language-].line-numbers-mode .line-numbers{position:absolute;top:0;left:0;width:var(--line-numbers-width);padding:1rem 0;color:var(--code-line-color);line-height:1.375;counter-reset:line-number;text-align:center;transition:color var(--color-transition);transform:translateY(1px)}@media print{div[class*=language-].line-numbers-mode .line-numbers{display:none}}div[class*=language-].line-numbers-mode .line-number{position:relative;z-index:4;height:1.375em;-webkit-user-select:none;-moz-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-number:before{content:counter(line-number);font-size:.85em;counter-increment:line-number}div[class*=language-]:not(.line-numbers-mode) .line-numbers{display:none}html[data-theme=light] #app{--code-color: #383a42;--code-line-color: rgba(56, 58, 66, .67);--code-bg-color: #ecf4fa;--code-border-color: #c3def3;--code-highlight-line-color: #d8e9f6}html[data-theme=light] code[class*=language-],html[data-theme=light] pre[class*=language-]{-moz-tab-size:2;-o-tab-size:2;tab-size:2}html[data-theme=light] code[class*=language-]::-moz-selection,html[data-theme=light] code[class*=language-] ::-moz-selection,html[data-theme=light] pre[class*=language-]::-moz-selection,html[data-theme=light] pre[class*=language-] ::-moz-selection{background:#e5e5e6;color:inherit}html[data-theme=light] code[class*=language-]::selection,html[data-theme=light] code[class*=language-] ::selection,html[data-theme=light] pre[class*=language-]::selection,html[data-theme=light] pre[class*=language-] ::selection{background:#e5e5e6;color:inherit}html[data-theme=light] .token.comment,html[data-theme=light] .token.prolog,html[data-theme=light] .token.cdata{color:#a0a1a7}html[data-theme=light] .token.doctype,html[data-theme=light] .token.punctuation,html[data-theme=light] .token.entity{color:#383a42}html[data-theme=light] .token.attr-name,html[data-theme=light] .token.class-name,html[data-theme=light] .token.boolean,html[data-theme=light] .token.constant,html[data-theme=light] .token.number,html[data-theme=light] .token.atrule{color:#b76b01}html[data-theme=light] .token.keyword{color:#a626a4}html[data-theme=light] .token.property,html[data-theme=light] .token.tag,html[data-theme=light] .token.symbol,html[data-theme=light] .token.deleted,html[data-theme=light] .token.important{color:#e45649}html[data-theme=light] .token.selector,html[data-theme=light] .token.string,html[data-theme=light] .token.char,html[data-theme=light] .token.builtin,html[data-theme=light] .token.inserted,html[data-theme=light] .token.regex,html[data-theme=light] .token.attr-value,html[data-theme=light] .token.attr-value>.token.punctuation{color:#50a14f}html[data-theme=light] .token.variable,html[data-theme=light] .token.operator,html[data-theme=light] .token.function{color:#4078f2}html[data-theme=light] .token.url{color:#0184bc}html[data-theme=light] .token.attr-value>.token.punctuation.attr-equals,html[data-theme=light] .token.special-attr>.token.attr-value>.token.value.css{color:#383a42}html[data-theme=light] .language-css .token.selector{color:#e45649}html[data-theme=light] .language-css .token.property{color:#383a42}html[data-theme=light] .language-css .token.function,html[data-theme=light] .language-css .token.url>.token.function{color:#0184bc}html[data-theme=light] .language-css .token.url>.token.string.url{color:#50a14f}html[data-theme=light] .language-css .token.important,html[data-theme=light] .language-css .token.atrule .token.rule,html[data-theme=light] .language-javascript .token.operator{color:#a626a4}html[data-theme=light] .language-javascript .token.template-string>.token.interpolation>.token.interpolation-punctuation.punctuation{color:#ca1243}html[data-theme=light] .language-json .token.operator{color:#383a42}html[data-theme=light] .language-json .token.null.keyword{color:#b76b01}html[data-theme=light] .language-markdown .token.url,html[data-theme=light] .language-markdown .token.url>.token.operator,html[data-theme=light] .language-markdown .token.url-reference.url>.token.string{color:#383a42}html[data-theme=light] .language-markdown .token.url>.token.content{color:#4078f2}html[data-theme=light] .language-markdown .token.url>.token.url,html[data-theme=light] .language-markdown .token.url-reference.url{color:#0184bc}html[data-theme=light] .language-markdown .token.blockquote.punctuation,html[data-theme=light] .language-markdown .token.hr.punctuation{color:#a0a1a7;font-style:italic}html[data-theme=light] .language-markdown .token.code-snippet{color:#50a14f}html[data-theme=light] .language-markdown .token.bold .token.content{color:#b76b01}html[data-theme=light] .language-markdown .token.italic .token.content{color:#a626a4}html[data-theme=light] .language-markdown .token.strike .token.content,html[data-theme=light] .language-markdown .token.strike .token.punctuation,html[data-theme=light] .language-markdown .token.list.punctuation,html[data-theme=light] .language-markdown .token.title.important>.token.punctuation{color:#e45649}html[data-theme=light] .token.bold{font-weight:700}html[data-theme=light] .token.comment,html[data-theme=light] .token.italic{font-style:italic}html[data-theme=light] .token.entity{cursor:help}html[data-theme=light] .token.namespace{opacity:.8}html[data-theme=dark] #app{--code-color: #abb2bf;--code-line-color: rgba(171, 178, 191, .67);--code-bg-color: #282c34;--code-border-color: #343e51;--code-highlight-line-color: #2f3542}html[data-theme=dark] code[class*=language-],html[data-theme=dark] pre[class*=language-]{text-shadow:0 1px rgba(0,0,0,.3);-moz-tab-size:2;-o-tab-size:2;tab-size:2}@media print{html[data-theme=dark] code[class*=language-],html[data-theme=dark] pre[class*=language-]{text-shadow:none}}html[data-theme=dark] code[class*=language-]::-moz-selection,html[data-theme=dark] code[class*=language-] ::-moz-selection,html[data-theme=dark] pre[class*=language-]::-moz-selection,html[data-theme=dark] pre[class*=language-] ::-moz-selection{background:#3e4451;color:inherit;text-shadow:none}html[data-theme=dark] code[class*=language-]::selection,html[data-theme=dark] code[class*=language-] ::selection,html[data-theme=dark] pre[class*=language-]::selection,html[data-theme=dark] pre[class*=language-] ::selection{background:#3e4451;color:inherit;text-shadow:none}html[data-theme=dark] .token.comment,html[data-theme=dark] .token.prolog,html[data-theme=dark] .token.cdata{color:#5c6370}html[data-theme=dark] .token.doctype,html[data-theme=dark] .token.punctuation,html[data-theme=dark] .token.entity{color:#abb2bf}html[data-theme=dark] .token.attr-name,html[data-theme=dark] .token.class-name,html[data-theme=dark] .token.boolean,html[data-theme=dark] .token.constant,html[data-theme=dark] .token.number,html[data-theme=dark] .token.atrule{color:#d19a66}html[data-theme=dark] .token.keyword{color:#c678dd}html[data-theme=dark] .token.property,html[data-theme=dark] .token.tag,html[data-theme=dark] .token.symbol,html[data-theme=dark] .token.deleted,html[data-theme=dark] .token.important{color:#e06c75}html[data-theme=dark] .token.selector,html[data-theme=dark] .token.string,html[data-theme=dark] .token.char,html[data-theme=dark] .token.builtin,html[data-theme=dark] .token.inserted,html[data-theme=dark] .token.regex,html[data-theme=dark] .token.attr-value,html[data-theme=dark] .token.attr-value>.token.punctuation{color:#98c379}html[data-theme=dark] .token.variable,html[data-theme=dark] .token.operator,html[data-theme=dark] .token.function{color:#61afef}html[data-theme=dark] .token.url{color:#56b6c2}html[data-theme=dark] .token.attr-value>.token.punctuation.attr-equals,html[data-theme=dark] .token.special-attr>.token.attr-value>.token.value.css{color:#abb2bf}html[data-theme=dark] .language-css .token.selector{color:#e06c75}html[data-theme=dark] .language-css .token.property{color:#abb2bf}html[data-theme=dark] .language-css .token.function,html[data-theme=dark] .language-css .token.url>.token.function{color:#56b6c2}html[data-theme=dark] .language-css .token.url>.token.string.url{color:#98c379}html[data-theme=dark] .language-css .token.important,html[data-theme=dark] .language-css .token.atrule .token.rule,html[data-theme=dark] .language-javascript .token.operator{color:#c678dd}html[data-theme=dark] .language-javascript .token.template-string>.token.interpolation>.token.interpolation-punctuation.punctuation{color:#be5046}html[data-theme=dark] .language-json .token.operator{color:#abb2bf}html[data-theme=dark] .language-json .token.null.keyword{color:#d19a66}html[data-theme=dark] .language-markdown .token.url,html[data-theme=dark] .language-markdown .token.url>.token.operator,html[data-theme=dark] .language-markdown .token.url-reference.url>.token.string{color:#abb2bf}html[data-theme=dark] .language-markdown .token.url>.token.content{color:#61afef}html[data-theme=dark] .language-markdown .token.url>.token.url,html[data-theme=dark] .language-markdown .token.url-reference.url{color:#56b6c2}html[data-theme=dark] .language-markdown .token.blockquote.punctuation,html[data-theme=dark] .language-markdown .token.hr.punctuation{color:#5c6370;font-style:italic}html[data-theme=dark] .language-markdown .token.code-snippet{color:#98c379}html[data-theme=dark] .language-markdown .token.bold .token.content{color:#d19a66}html[data-theme=dark] .language-markdown .token.italic .token.content{color:#c678dd}html[data-theme=dark] .language-markdown .token.strike .token.content,html[data-theme=dark] .language-markdown .token.strike .token.punctuation,html[data-theme=dark] .language-markdown .token.list.punctuation,html[data-theme=dark] .language-markdown .token.title.important>.token.punctuation{color:#e06c75}html[data-theme=dark] .token.bold{font-weight:700}html[data-theme=dark] .token.comment,html[data-theme=dark] .token.italic{font-style:italic}html[data-theme=dark] .token.entity{cursor:help}html[data-theme=dark] .token.namespace{opacity:.8}.sr-only{position:absolute;overflow:hidden;clip:rect(0,0,0,0);width:1px;height:1px;margin:-1px;padding:0;border-width:0;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media print{.theme-hope-content{margin:0!important;padding-inline-start:0!important;padding-inline-end:0!important}}.theme-hope-content.custom{margin:0;padding:0}.theme-hope-content:not(.custom){max-width:var(--content-width, 740px);margin:0 auto;padding:2rem 2.5rem;padding-top:0}@media (max-width: 959px){.theme-hope-content:not(.custom){padding:1.5rem}}@media (max-width: 419px){.theme-hope-content:not(.custom){padding:1rem 1.5rem}}@media print{.theme-hope-content:not(.custom){max-width:unset}}.theme-hope-content:not(.custom)>h1,.theme-hope-content:not(.custom)>h2,.theme-hope-content:not(.custom)>h3,.theme-hope-content:not(.custom)>h4,.theme-hope-content:not(.custom)>h5,.theme-hope-content:not(.custom)>h6{margin-top:calc(.5rem - var(--navbar-height));margin-bottom:.5rem;padding-top:calc(1rem + var(--navbar-height));outline:none}.theme-container.no-navbar .theme-hope-content:not(.custom)>h1,.theme-container.no-navbar .theme-hope-content:not(.custom)>h2,.theme-container.no-navbar .theme-hope-content:not(.custom)>h3,.theme-container.no-navbar .theme-hope-content:not(.custom)>h4,.theme-container.no-navbar .theme-hope-content:not(.custom)>h5,.theme-container.no-navbar .theme-hope-content:not(.custom)>h6{margin-top:1.5rem;padding-top:0}.theme-hope-content:not(.custom)>p,.theme-hope-content:not(.custom)>ul p,.theme-hope-content:not(.custom)>ol p{text-align:justify;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}@media (max-width: 419px){.theme-hope-content:not(.custom)>p,.theme-hope-content:not(.custom)>ul p,.theme-hope-content:not(.custom)>ol p{text-align:start}}@media print{.theme-hope-content:not(.custom)>p,.theme-hope-content:not(.custom)>ul p,.theme-hope-content:not(.custom)>ol p{text-align:start}}.theme-hope-content a:hover{text-decoration:underline}.theme-hope-content img{max-width:100%}@media (min-width: 1280px){.chart-wrapper::-webkit-scrollbar,.flowchart-wrapper::-webkit-scrollbar,.mermaid-wrapper::-webkit-scrollbar{width:8px;height:8px}.chart-wrapper::-webkit-scrollbar-track-piece,.flowchart-wrapper::-webkit-scrollbar-track-piece,.mermaid-wrapper::-webkit-scrollbar-track-piece{border-radius:8px;background:rgba(0,0,0,.1)}}html[dir=rtl] a.header-anchor{float:right}#docsearch-container{min-width:145.7px!important}@media (max-width: 959px){#docsearch-container{min-width:36px!important}}.DocSearch.DocSearch-Button{margin-left:0}@media (max-width: 959px){.DocSearch.DocSearch-Button{min-width:36px!important}}.DocSearch .DocSearch-Button-Placeholder{display:inline-block;padding:4px 12px 4px 6px;font-size:14px}@media (max-width: 719px){.DocSearch .DocSearch-Button-Placeholder{display:none}}.DocSearch .DocSearch-Search-Icon{width:1.25em;height:1.25em}@media (max-width: 959px){.DocSearch .DocSearch-Button-Keys{display:none}}.DocSearch .DocSearch-Button-Key{background:var(--bg-color);box-shadow:none}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track-piece{border-radius:6px;background:rgba(0,0,0,.1)}::-webkit-scrollbar-thumb{border-radius:6px;background:var(--theme-color)}::-webkit-scrollbar-thumb:active{background:var(--theme-color-light)}@media (max-width: 719px){.hide-in-mobile{display:none!important}}@media (max-width: 959px){.hide-in-pad{display:none!important}}.page-author-item{display:inline-block;margin:0 4px;font-weight:400;overflow-wrap:break-word}.page-category-info{flex-wrap:wrap}.page-category-item{display:inline-block;margin:.125em .25em;padding:0 .25em;border-radius:.25em;background:var(--bg-color-secondary);color:var(--text-color-light);font-weight:700;font-size:.75rem;line-height:2;transition:background var(--color-transition),color var(--color-transition)}@media print{.page-category-item{padding:0;font-weight:400}.page-category-item:after{content:", "}.page-category-item:last-of-type:after{content:""}}.page-category-item.clickable>span:hover{color:var(--theme-color);cursor:pointer}.page-category-item.category0{background:#fde5e7;color:#ec2f3e}html[data-theme=dark] .page-category-item.category0{background:#340509;color:#ba111f}.page-category-item.category0:hover{background:#f9bec3}html[data-theme=dark] .page-category-item.category0:hover{background:#53080e}.page-category-item.category1{background:#ffeee8;color:#fb7649}html[data-theme=dark] .page-category-item.category1{background:#441201;color:#f54205}.page-category-item.category1:hover{background:#fed4c6}html[data-theme=dark] .page-category-item.category1:hover{background:#6d1d02}.page-category-item.category2{background:#fef5e7;color:#f5b041}html[data-theme=dark] .page-category-item.category2{background:#3e2703;color:#e08e0b}.page-category-item.category2:hover{background:#fce6c4}html[data-theme=dark] .page-category-item.category2:hover{background:#633f05}.page-category-item.category3{background:#eafaf1;color:#55d98d}html[data-theme=dark] .page-category-item.category3{background:#0c331c;color:#29b866}.page-category-item.category3:hover{background:#caf3db}html[data-theme=dark] .page-category-item.category3:hover{background:#12522d}.page-category-item.category4{background:#e6f9ee;color:#36d278}html[data-theme=dark] .page-category-item.category4{background:#092917;color:#219552}.page-category-item.category4:hover{background:#c0f1d5}html[data-theme=dark] .page-category-item.category4:hover{background:#0f4224}.page-category-item.category5{background:#e1fcfc;color:#16e1e1}html[data-theme=dark] .page-category-item.category5{background:#042929;color:#0e9595}.page-category-item.category5:hover{background:#b4f8f8}html[data-theme=dark] .page-category-item.category5:hover{background:#064242}.page-category-item.category6{background:#e4f0fe;color:#2589f6}html[data-theme=dark] .page-category-item.category6{background:#021b36;color:#0862c3}.page-category-item.category6:hover{background:#bbdafc}html[data-theme=dark] .page-category-item.category6:hover{background:#042c57}.page-category-item.category7{background:#f7f1fd;color:#bb8ced}html[data-theme=dark] .page-category-item.category7{background:#2a0b4b;color:#9851e4}.page-category-item.category7:hover{background:#eadbfa}html[data-theme=dark] .page-category-item.category7:hover{background:#431277}.page-category-item.category8{background:#fdeaf5;color:#ef59ab}html[data-theme=dark] .page-category-item.category8{background:#400626;color:#e81689}.page-category-item.category8:hover{background:#facbe5}html[data-theme=dark] .page-category-item.category8:hover{background:#670a3d}.page-original-info{position:relative;display:inline-block;vertical-align:middle;overflow:hidden;padding:0 .5em;border:.5px solid var(--dark-grey);border-radius:.75em;background:var(--bg-color);font-size:.75em;line-height:1.5!important}.page-info{display:flex;flex-wrap:wrap;align-content:stretch;align-items:center;justify-content:flex-start;color:var(--dark-grey);font-size:14px}@media print{.page-info{display:flex!important}}.page-info>span{display:flex;align-items:center;max-width:100%;margin-inline-end:.5em;line-height:2}@media (min-width: 1440px){.page-info>span{font-size:1.1em}}@media (max-width: 419px){.page-info>span{margin-inline-end:.3em;font-size:.875em}}@media print{.page-info>span{display:flex!important}}.page-info .icon{position:relative;display:inline-block;vertical-align:middle;width:1em;height:1em;margin-inline-end:.25em}.page-info a{color:inherit}.page-info a:hover,.page-info a:active{color:var(--theme-color)}.page-meta{max-width:var(--content-width, 740px);margin-inline-start:auto;margin-inline-end:auto;padding-inline-start:2.5rem;padding-inline-end:2.5rem;display:flex;flex-wrap:wrap;justify-content:space-between;overflow:auto;padding-top:.75rem;padding-bottom:.75rem}@media (max-width: 959px){.page-meta{padding-inline-start:1.5rem;padding-inline-end:1.5rem}}@media print{.page-meta{max-width:unset}}@media print{.page-meta{margin:0!important;padding-inline-start:0!important;padding-inline-end:0!important}}@media (max-width: 719px){.page-meta{display:block}}.page-meta .meta-item{flex-grow:1}.page-meta .meta-item .label{font-weight:500}.page-meta .meta-item .label:not(a){color:var(--text-color-lighter)}.page-meta .meta-item .info{color:var(--dark-grey);font-weight:400}.page-meta .git-info{text-align:end}.page-meta .edit-link{margin-top:.25rem;margin-bottom:.25rem;margin-inline-end:.5rem;font-size:14px}@media print{.page-meta .edit-link{display:none}}.page-meta .edit-link .icon{position:relative;bottom:-.125em;width:1em;height:1em;margin-inline-end:.25em}.page-meta .update-time,.page-meta .contributors{margin-top:.25rem;margin-bottom:.25rem;font-size:14px}@media (max-width: 719px){.page-meta .update-time,.page-meta .contributors{font-size:13px;text-align:start}}.print-button{border-width:0;background:transparent;cursor:pointer;box-sizing:content-box;width:1rem;height:1rem;padding:.5rem;border-radius:.25em;color:inherit;font-size:1rem;transform:translateY(.25rem)}@media print{.print-button{display:none}}.page-tag-info{flex-wrap:wrap}.page-tag-item{position:relative;display:inline-block;vertical-align:middle;overflow:hidden;min-width:1.5rem;margin:.125rem;padding:.125rem .25rem .125rem .625rem;background:var(--bg-color-secondary);background:linear-gradient(135deg,transparent .75em,var(--bg-color-secondary) 0) top,linear-gradient(45deg,transparent .75em,var(--bg-color-secondary) 0) bottom;background-size:100% 52%!important;background-repeat:no-repeat!important;color:var(--text-color-light);font-weight:700;font-size:.625rem;line-height:1.5;text-align:center;transition:background var(--color-transition),color var(--color-transition)}@media print{.page-tag-item{padding:0;font-weight:400}.page-tag-item:after{content:", "}.page-tag-item:last-of-type:after{content:""}}.page-tag-item.clickable:hover{cursor:pointer}.page-tag-item.tag0{background:#fde5e7;background:linear-gradient(135deg,transparent .75em,#fde5e7 0) top,linear-gradient(45deg,transparent .75em,#fde5e7 0) bottom;color:#ec2f3e}html[data-theme=dark] .page-tag-item.tag0{background:#340509;background:linear-gradient(135deg,transparent .75em,#340509 0) top,linear-gradient(45deg,transparent .75em,#340509 0) bottom;color:#ba111f}.page-tag-item.tag0.clickable:hover{background:#f9bec3;background:linear-gradient(135deg,transparent .75em,#f9bec3 0) top,linear-gradient(45deg,transparent .75em,#f9bec3 0) bottom}html[data-theme=dark] .page-tag-item.tag0.clickable:hover{background:#53080e;background:linear-gradient(135deg,transparent .75em,#53080e 0) top,linear-gradient(45deg,transparent .75em,#53080e 0) bottom}.page-tag-item.tag1{background:#ffeee8;background:linear-gradient(135deg,transparent .75em,#ffeee8 0) top,linear-gradient(45deg,transparent .75em,#ffeee8 0) bottom;color:#fb7649}html[data-theme=dark] .page-tag-item.tag1{background:#441201;background:linear-gradient(135deg,transparent .75em,#441201 0) top,linear-gradient(45deg,transparent .75em,#441201 0) bottom;color:#f54205}.page-tag-item.tag1.clickable:hover{background:#fed4c6;background:linear-gradient(135deg,transparent .75em,#fed4c6 0) top,linear-gradient(45deg,transparent .75em,#fed4c6 0) bottom}html[data-theme=dark] .page-tag-item.tag1.clickable:hover{background:#6d1d02;background:linear-gradient(135deg,transparent .75em,#6d1d02 0) top,linear-gradient(45deg,transparent .75em,#6d1d02 0) bottom}.page-tag-item.tag2{background:#fef5e7;background:linear-gradient(135deg,transparent .75em,#fef5e7 0) top,linear-gradient(45deg,transparent .75em,#fef5e7 0) bottom;color:#f5b041}html[data-theme=dark] .page-tag-item.tag2{background:#3e2703;background:linear-gradient(135deg,transparent .75em,#3e2703 0) top,linear-gradient(45deg,transparent .75em,#3e2703 0) bottom;color:#e08e0b}.page-tag-item.tag2.clickable:hover{background:#fce6c4;background:linear-gradient(135deg,transparent .75em,#fce6c4 0) top,linear-gradient(45deg,transparent .75em,#fce6c4 0) bottom}html[data-theme=dark] .page-tag-item.tag2.clickable:hover{background:#633f05;background:linear-gradient(135deg,transparent .75em,#633f05 0) top,linear-gradient(45deg,transparent .75em,#633f05 0) bottom}.page-tag-item.tag3{background:#eafaf1;background:linear-gradient(135deg,transparent .75em,#eafaf1 0) top,linear-gradient(45deg,transparent .75em,#eafaf1 0) bottom;color:#55d98d}html[data-theme=dark] .page-tag-item.tag3{background:#0c331c;background:linear-gradient(135deg,transparent .75em,#0c331c 0) top,linear-gradient(45deg,transparent .75em,#0c331c 0) bottom;color:#29b866}.page-tag-item.tag3.clickable:hover{background:#caf3db;background:linear-gradient(135deg,transparent .75em,#caf3db 0) top,linear-gradient(45deg,transparent .75em,#caf3db 0) bottom}html[data-theme=dark] .page-tag-item.tag3.clickable:hover{background:#12522d;background:linear-gradient(135deg,transparent .75em,#12522d 0) top,linear-gradient(45deg,transparent .75em,#12522d 0) bottom}.page-tag-item.tag4{background:#e6f9ee;background:linear-gradient(135deg,transparent .75em,#e6f9ee 0) top,linear-gradient(45deg,transparent .75em,#e6f9ee 0) bottom;color:#36d278}html[data-theme=dark] .page-tag-item.tag4{background:#092917;background:linear-gradient(135deg,transparent .75em,#092917 0) top,linear-gradient(45deg,transparent .75em,#092917 0) bottom;color:#219552}.page-tag-item.tag4.clickable:hover{background:#c0f1d5;background:linear-gradient(135deg,transparent .75em,#c0f1d5 0) top,linear-gradient(45deg,transparent .75em,#c0f1d5 0) bottom}html[data-theme=dark] .page-tag-item.tag4.clickable:hover{background:#0f4224;background:linear-gradient(135deg,transparent .75em,#0f4224 0) top,linear-gradient(45deg,transparent .75em,#0f4224 0) bottom}.page-tag-item.tag5{background:#e1fcfc;background:linear-gradient(135deg,transparent .75em,#e1fcfc 0) top,linear-gradient(45deg,transparent .75em,#e1fcfc 0) bottom;color:#16e1e1}html[data-theme=dark] .page-tag-item.tag5{background:#042929;background:linear-gradient(135deg,transparent .75em,#042929 0) top,linear-gradient(45deg,transparent .75em,#042929 0) bottom;color:#0e9595}.page-tag-item.tag5.clickable:hover{background:#b4f8f8;background:linear-gradient(135deg,transparent .75em,#b4f8f8 0) top,linear-gradient(45deg,transparent .75em,#b4f8f8 0) bottom}html[data-theme=dark] .page-tag-item.tag5.clickable:hover{background:#064242;background:linear-gradient(135deg,transparent .75em,#064242 0) top,linear-gradient(45deg,transparent .75em,#064242 0) bottom}.page-tag-item.tag6{background:#e4f0fe;background:linear-gradient(135deg,transparent .75em,#e4f0fe 0) top,linear-gradient(45deg,transparent .75em,#e4f0fe 0) bottom;color:#2589f6}html[data-theme=dark] .page-tag-item.tag6{background:#021b36;background:linear-gradient(135deg,transparent .75em,#021b36 0) top,linear-gradient(45deg,transparent .75em,#021b36 0) bottom;color:#0862c3}.page-tag-item.tag6.clickable:hover{background:#bbdafc;background:linear-gradient(135deg,transparent .75em,#bbdafc 0) top,linear-gradient(45deg,transparent .75em,#bbdafc 0) bottom}html[data-theme=dark] .page-tag-item.tag6.clickable:hover{background:#042c57;background:linear-gradient(135deg,transparent .75em,#042c57 0) top,linear-gradient(45deg,transparent .75em,#042c57 0) bottom}.page-tag-item.tag7{background:#f7f1fd;background:linear-gradient(135deg,transparent .75em,#f7f1fd 0) top,linear-gradient(45deg,transparent .75em,#f7f1fd 0) bottom;color:#bb8ced}html[data-theme=dark] .page-tag-item.tag7{background:#2a0b4b;background:linear-gradient(135deg,transparent .75em,#2a0b4b 0) top,linear-gradient(45deg,transparent .75em,#2a0b4b 0) bottom;color:#9851e4}.page-tag-item.tag7.clickable:hover{background:#eadbfa;background:linear-gradient(135deg,transparent .75em,#eadbfa 0) top,linear-gradient(45deg,transparent .75em,#eadbfa 0) bottom}html[data-theme=dark] .page-tag-item.tag7.clickable:hover{background:#431277;background:linear-gradient(135deg,transparent .75em,#431277 0) top,linear-gradient(45deg,transparent .75em,#431277 0) bottom}.page-tag-item.tag8{background:#fdeaf5;background:linear-gradient(135deg,transparent .75em,#fdeaf5 0) top,linear-gradient(45deg,transparent .75em,#fdeaf5 0) bottom;color:#ef59ab}html[data-theme=dark] .page-tag-item.tag8{background:#400626;background:linear-gradient(135deg,transparent .75em,#400626 0) top,linear-gradient(45deg,transparent .75em,#400626 0) bottom;color:#e81689}.page-tag-item.tag8.clickable:hover{background:#facbe5;background:linear-gradient(135deg,transparent .75em,#facbe5 0) top,linear-gradient(45deg,transparent .75em,#facbe5 0) bottom}html[data-theme=dark] .page-tag-item.tag8.clickable:hover{background:#670a3d;background:linear-gradient(135deg,transparent .75em,#670a3d 0) top,linear-gradient(45deg,transparent .75em,#670a3d 0) bottom}.toc-place-holder{margin-inline-start:auto;margin-inline-end:auto;padding-inline-start:2.5rem;padding-inline-end:2.5rem;position:sticky;top:calc(var(--navbar-height) + 2rem);z-index:99;max-width:var(--content-width, 740px)}@media (max-width: 959px){.toc-place-holder{padding-inline-start:1.5rem;padding-inline-end:1.5rem}}@media print{.toc-place-holder{max-width:unset}}.toc-place-holder+.theme-hope-content:not(.custom){padding-top:0}#toc{position:absolute;left:calc(100% + 1rem);display:none;min-width:10rem;max-width:15rem}@media (min-width: 1440px){.has-toc #toc{display:block}}@media print{#toc{display:none!important}}html[dir=rtl] #toc{right:calc(100% + 1rem);left:unset}#toc .toc-header{margin-bottom:.75rem;margin-inline-start:.5rem;font-weight:600;font-size:.875rem}#toc .toc-wrapper{position:relative;overflow-x:hidden;overflow-y:auto;max-height:75vh;margin:0 .5rem;padding-inline-start:8px;text-overflow:ellipsis;white-space:nowrap;scroll-behavior:smooth}#toc .toc-wrapper::-webkit-scrollbar-track-piece{background:transparent}#toc .toc-wrapper::-webkit-scrollbar{width:3px}#toc .toc-wrapper::-webkit-scrollbar-thumb:vertical{background:#ddd}html[data-theme=dark] #toc .toc-wrapper::-webkit-scrollbar-thumb:vertical{background:#333}#toc .toc-wrapper:before{content:" ";position:absolute;top:0;bottom:0;left:0;z-index:-1;width:2px;background:var(--border-color)}html[dir=rtl] #toc .toc-wrapper:before{right:0;left:unset}#toc .toc-list{position:relative;margin:0;padding:0}#toc .toc-marker{content:" ";position:absolute;top:0;left:0;z-index:2;width:2px;height:1.7rem;background:var(--theme-color);transition:top var(--vp-tt)}html[dir=rtl] #toc .toc-marker{right:0;left:unset}#toc .toc-link{position:relative;display:block;overflow:hidden;max-width:100%;color:var(--light-grey);line-height:inherit;text-overflow:ellipsis;white-space:nowrap}#toc .toc-link.level2{padding-inline-start:0px;font-size:14px}#toc .toc-link.level3{padding-inline-start:8px;font-size:13px}#toc .toc-link.level4{padding-inline-start:16px;font-size:12px}#toc .toc-link.level5{padding-inline-start:24px;font-size:11px}#toc .toc-link.level6{padding-inline-start:32px;font-size:10px}#toc .toc-item{position:relative;box-sizing:border-box;height:1.7rem;padding:0 .5rem;list-style:none;line-height:1.7rem}#toc .toc-item:hover>.toc-link{color:var(--theme-color)}#toc .toc-item.active>.toc-link{color:var(--theme-color);font-weight:700}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper:not(:hover) .arrow{transform:rotate(-180deg)}.dropdown-wrapper .dropdown-title{border-width:0;background:transparent;cursor:pointer;padding:0 .25rem;color:var(--dark-grey);font-weight:500;font-size:inherit;font-family:inherit;line-height:inherit;cursor:inherit}.dropdown-wrapper .dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .icon{margin-inline-end:.25em;font-size:1em}.dropdown-wrapper .dropdown-title .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");line-height:normal;transition:all .3s;font-size:1.2em}html[data-theme=dark] .dropdown-wrapper .dropdown-title .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.dropdown-wrapper .dropdown-title .arrow.down{transform:rotate(180deg)}html[dir=rtl] .dropdown-wrapper .dropdown-title .arrow.down{transform:rotate(-180deg)}.dropdown-wrapper .dropdown-title .arrow.end{transform:rotate(90deg)}html[dir=rtl] .dropdown-wrapper .dropdown-title .arrow.end,.dropdown-wrapper .dropdown-title .arrow.start{transform:rotate(-90deg)}html[dir=rtl] .dropdown-wrapper .dropdown-title .arrow.start{transform:rotate(90deg)}.dropdown-wrapper ul{margin:0;padding:0;list-style-type:none}.dropdown-wrapper .nav-dropdown{position:absolute;top:100%;right:0;overflow-y:auto;box-sizing:border-box;min-width:6rem;max-height:calc(100vh - var(--navbar-height));margin:0;padding:.5rem .75rem;border:1px solid var(--grey14);border-radius:.5rem;background:var(--bg-color);box-shadow:2px 2px 10px var(--card-shadow);text-align:start;white-space:nowrap;opacity:0;visibility:hidden;transition:all .18s ease-out;transform:scale(.9)}html[dir=rtl] .dropdown-wrapper .nav-dropdown{right:unset;left:0}.dropdown-wrapper:hover .nav-dropdown,.dropdown-wrapper.open .nav-dropdown{z-index:2;opacity:1;visibility:visible;transform:none}.dropdown-wrapper .nav-link{position:relative;display:block;margin-bottom:0;border-bottom:none;color:var(--dark-grey);font-weight:400;font-size:.875rem;line-height:1.7rem;transition:color var(--color-transition)}.dropdown-wrapper .nav-link:hover,.dropdown-wrapper .nav-link.active{color:var(--theme-color)}.dropdown-wrapper .dropdown-subtitle{margin:0;padding:.5rem .25rem 0;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;text-transform:uppercase;transition:color var(--color-transition)}.dropdown-wrapper .dropdown-subitem-wrapper{padding:0 0 .25rem}.dropdown-wrapper .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .dropdown-item:last-child .dropdown-subtitle{padding-top:0}.dropdown-wrapper .dropdown-item:last-child .dropdown-subitem-wrapper{padding-bottom:0}.nav-screen-dropdown-title{border-width:0;background:transparent;position:relative;display:flex;align-items:center;width:100%;padding:0;color:var(--dark-grey);font-size:inherit;font-family:inherit;text-align:start;cursor:pointer}.nav-screen-dropdown-title:hover,.nav-screen-dropdown-title.active{color:var(--text-color)}.nav-screen-dropdown-title .title{flex:1}.nav-screen-dropdown-title .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");line-height:normal;transition:all .3s}html[data-theme=dark] .nav-screen-dropdown-title .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.nav-screen-dropdown-title .arrow.down{transform:rotate(180deg)}html[dir=rtl] .nav-screen-dropdown-title .arrow.down{transform:rotate(-180deg)}.nav-screen-dropdown-title .arrow.end{transform:rotate(90deg)}html[dir=rtl] .nav-screen-dropdown-title .arrow.end,.nav-screen-dropdown-title .arrow.start{transform:rotate(-90deg)}html[dir=rtl] .nav-screen-dropdown-title .arrow.start{transform:rotate(90deg)}.nav-screen-dropdown{overflow:hidden;margin:.5rem 0 0;padding:0;list-style:none;transition:transform .1s ease-out;transform:scaleY(1);transform-origin:top}.nav-screen-dropdown.hide{height:0;margin:0;transform:scaleY(0)}.nav-screen-dropdown .nav-link{position:relative;display:block;padding-inline-start:.5rem;font-weight:400;line-height:2}.nav-screen-dropdown .nav-link:hover,.nav-screen-dropdown .nav-link.active{color:var(--theme-color)}.nav-screen-dropdown .nav-link .icon{font-size:1em}.nav-screen-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.nav-screen-dropdown .dropdown-subtitle{margin:0;padding-inline-start:.25rem;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;text-transform:uppercase;transition:color var(--color-transition)}.nav-screen-dropdown .dropdown-subtitle .nav-link{padding:0}.nav-screen-dropdown .dropdown-subitem-wrapper{margin:0;padding:0;list-style:none}.nav-screen-dropdown .dropdown-subitem{padding-inline-start:.5rem;font-size:.9em}.nav-screen-links{display:none;padding-bottom:.75rem}@media (max-width: 719px){.nav-screen-links{display:block}}.nav-screen-links .navbar-links-item{position:relative;display:block;padding:12px 4px 11px 0;border-bottom:1px solid var(--border-color);font-size:16px;line-height:1.5rem;transition:border-bottom-color var(--color-transition)}.nav-screen-links .nav-link{display:inline-block;width:100%;color:var(--dark-grey);font-weight:400}.nav-screen-links .nav-link:hover{color:var(--text-color)}.nav-screen-links .nav-link.active{color:var(--theme-color)}.vp-nav-screen-container{max-width:320px;margin:0 auto;padding:2rem 0 4rem}#nav-screen{position:fixed;top:var(--navbar-height);right:0;bottom:0;left:0;z-index:150;display:none;overflow-y:auto;padding:0 2rem;background:var(--bg-color);transition:background .5s}@media (max-width: 719px){#nav-screen{display:block}}#nav-screen.fade-enter-active,#nav-screen.fade-leave-active{transition:opacity .25s}#nav-screen.fade-enter-active .vp-nav-screen-container,#nav-screen.fade-leave-active .vp-nav-screen-container{transition:transform .25s ease}#nav-screen.fade-enter-from,#nav-screen.fade-leave-to{opacity:0}#nav-screen.fade-enter-from .vp-nav-screen-container,#nav-screen.fade-leave-to .vp-nav-screen-container{transform:translateY(-8px)}#nav-screen .icon{margin-inline-end:.25em}.vp-outlook-wrapper{display:flex;justify-content:space-around}.vp-nav-logo{vertical-align:top;height:var(--navbar-line-height);margin-inline-end:.8rem}.vp-nav-logo.light{display:inline-block}.vp-nav-logo.dark,html[data-theme=dark] .vp-nav-logo.light{display:none}html[data-theme=dark] .vp-nav-logo.dark{display:inline-block}.vp-site-name{position:relative;color:var(--text-color);font-size:1.25rem}@media (max-width: 719px){.vp-site-name{overflow:hidden;width:calc(100vw - 9.4rem);text-overflow:ellipsis;white-space:nowrap}}.vp-brand:hover .vp-site-name{color:var(--theme-color)}.vp-navbar .vp-nav-links{display:flex;align-items:center;font-size:.875rem}.vp-navbar .nav-item{position:relative;margin:0 .25rem;line-height:2rem}.vp-navbar .nav-item:first-child{margin-inline-start:0}.vp-navbar .nav-item:last-child{margin-inline-end:0}.vp-navbar .nav-item>.nav-link{color:var(--dark-grey)}.vp-navbar .nav-item>.nav-link:after{content:" ";position:absolute;right:50%;bottom:0;left:50%;height:2px;border-radius:1px;background:var(--theme-color-light);visibility:hidden;transition:left .2s ease-in-out,right .2s ease-in-out}.vp-navbar .nav-item>.nav-link.active{color:var(--theme-color)}.vp-navbar .nav-item>.nav-link:hover:after,.vp-navbar .nav-item>.nav-link.active:after{right:0;left:0;visibility:visible}.vp-navbar{--navbar-line-height: calc( var(--navbar-height) - var(--navbar-vertical-padding) * 2 );position:fixed;top:0;right:0;left:0;z-index:175;display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;height:var(--navbar-height);padding:var(--navbar-vertical-padding) var(--navbar-horizontal-padding);background:var(--navbar-bg-color);box-shadow:0 2px 8px var(--card-shadow);line-height:var(--navbar-line-height);white-space:nowrap;transition:transform ease-in-out .3s,background var(--color-transition),box-shadow var(--color-transition);-webkit-backdrop-filter:saturate(150%) blur(12px);backdrop-filter:saturate(150%) blur(12px)}@media print{.vp-navbar{display:none}}.hide-navbar .vp-navbar.auto-hide{transform:translateY(-100%)}.vp-navbar .nav-link{padding:0 .25rem;color:var(--dark-grey)}.vp-navbar .nav-link.active{color:var(--theme-color)}.vp-navbar .nav-link .icon{margin-inline-end:.25em;font-size:1em}.vp-navbar.hide-icon .vp-nav-links .icon{display:none!important}.vp-navbar-start,.vp-navbar-end,.vp-navbar-center{display:flex;flex:1;align-items:center}.vp-navbar-start>*,.vp-navbar-end>*,.vp-navbar-center>*{position:relative;margin:0 .25rem!important}.vp-navbar-start>*:first-child,.vp-navbar-end>*:first-child,.vp-navbar-center>*:first-child{margin-inline-start:0!important}.vp-navbar-start>*:last-child,.vp-navbar-end>*:last-child,.vp-navbar-center>*:last-child{margin-inline-end:0!important}.vp-navbar-start{justify-content:start}.vp-navbar-center{justify-content:center}.vp-navbar-end{justify-content:end}.vp-navbar .vp-repo{margin:0!important}.vp-navbar .vp-repo-link{display:inline-block;margin:auto;padding:6px;color:var(--dark-grey);line-height:1}.vp-navbar .vp-repo-link:hover,.vp-navbar .vp-repo-link:active{color:var(--theme-color)}.vp-toggle-navbar-button{border-width:0;background:transparent;cursor:pointer;position:relative;display:none;align-items:center;justify-content:center;padding:6px}@media screen and (max-width: 719px){.vp-toggle-navbar-button{display:flex}}.vp-toggle-navbar-button>span{position:relative;overflow:hidden;width:16px;height:14px}.vp-toggle-navbar-button .vp-top,.vp-toggle-navbar-button .vp-middle,.vp-toggle-navbar-button .vp-bottom{position:absolute;width:16px;height:2px;background:var(--dark-grey);transition:top .25s,background .5s,transform .25s}.vp-toggle-navbar-button .vp-top{top:0;left:0;transform:translate(0)}.vp-toggle-navbar-button .vp-middle{top:6px;left:0;transform:translate(8px)}.vp-toggle-navbar-button .vp-bottom{top:12px;left:0;transform:translate(4px)}.vp-toggle-navbar-button:hover .vp-top{top:0;left:0;transform:translate(4px)}.vp-toggle-navbar-button:hover .vp-middle{top:6;left:0;transform:translate(0)}.vp-toggle-navbar-button:hover .vp-bottom{top:12px;left:0;transform:translate(8px)}.vp-toggle-navbar-button.is-active .vp-top{top:6px;transform:translate(0) rotate(225deg)}.vp-toggle-navbar-button.is-active .vp-middle{top:6px;transform:translate(16px)}.vp-toggle-navbar-button.is-active .vp-bottom{top:6px;transform:translate(0) rotate(135deg)}.vp-toggle-navbar-button.is-active:hover .vp-top,.vp-toggle-navbar-button.is-active:hover .vp-middle,.vp-toggle-navbar-button.is-active:hover .vp-bottom{background:var(--theme-color);transition:top .25s,background .25s,transform .25s}.vp-toggle-sidebar-button{border-width:0;background:transparent;cursor:pointer;display:none;vertical-align:middle;box-sizing:content-box;width:1rem;height:1rem;padding:.5rem;font:unset;transition:transform .2s ease-in-out}@media screen and (max-width: 719px){.vp-toggle-sidebar-button{display:block;padding-inline-end:var(--navbar-mobile-horizontal-padding)}}.vp-toggle-sidebar-button:before,.vp-toggle-sidebar-button:after,.vp-toggle-sidebar-button .icon{display:block;width:100%;height:2px;border-radius:.05em;background:var(--dark-grey);transition:transform .2s ease-in-out}.vp-toggle-sidebar-button:before{content:" ";margin-top:.125em}.sidebar-open .vp-toggle-sidebar-button:before{transform:translateY(.34rem) rotate(135deg)}.vp-toggle-sidebar-button:after{content:" ";margin-bottom:.125em}.sidebar-open .vp-toggle-sidebar-button:after{transform:translateY(-.34rem) rotate(-135deg)}.vp-toggle-sidebar-button .icon{margin:.2em 0}.sidebar-open .vp-toggle-sidebar-button .icon{transform:scale(0)}.appearance-title{display:block;margin:0;padding:0 .25rem;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;transition:color var(--color-transition)}#appearance-switch{border-width:0;background:transparent;vertical-align:middle;padding:6px;color:var(--dark-grey);cursor:pointer;transition:color var(--color-transition)}#appearance-switch:hover{color:var(--theme-color)}#appearance-switch .icon{width:1.25rem;height:1.25rem}.outlook-button{border-width:0;background:transparent;cursor:pointer;position:relative;padding:.375rem;color:var(--dark-grey)}.outlook-button .icon{vertical-align:middle;width:1.25rem;height:1.25rem}.outlook-dropdown{position:absolute;top:100%;right:0;overflow-y:auto;box-sizing:border-box;min-width:100px;margin:0;padding:.5rem .75rem;border:1px solid var(--grey14);border-radius:.25rem;background:var(--bg-color);box-shadow:2px 2px 10px var(--card-shadow);text-align:start;white-space:nowrap;opacity:0;visibility:hidden;transition:all .18s ease-out;transform:scale(.8)}html[dir=rtl] .outlook-dropdown{right:unset;left:0}.outlook-dropdown>*:not(:last-child){padding-bottom:.5rem;border-bottom:1px solid var(--grey14)}.outlook-button:hover .outlook-dropdown,.outlook-button.open .outlook-dropdown{z-index:2;opacity:1;visibility:visible;transform:scale(1)}.theme-color-title{display:block;margin:0;padding:0 .25rem;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;transition:color var(--color-transition)}#theme-color-picker{display:flex;margin:0;padding:0;list-style-type:none;font-size:14px}#theme-color-picker li span{display:inline-block;vertical-align:middle;width:15px;height:15px;margin:0 2px;border-radius:2px}#theme-color-picker li span.theme-color,#theme-color-picker li span.theme-color html[data-theme=dark]{background:#409eff}@media print{.full-screen-wrapper{display:none}}.full-screen-title{display:block;margin:0;padding:0 .25rem;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;transition:color var(--color-transition)}.full-screen,.cancel-full-screen{border-width:0;background:transparent;vertical-align:middle;padding:.375rem;color:var(--dark-grey);cursor:pointer}.full-screen:hover,.cancel-full-screen:hover{color:var(--theme-color)}.full-screen .icon,.cancel-full-screen .icon{width:1.25rem;height:1.25rem}.enter-fullscreen-icon:hover,.cancel-fullscreen-icon{color:var(--theme-color)}.cancel-fullscreen-icon:hover{color:var(--dark-grey)}.vp-sidebar-heading{display:flex;align-items:center;overflow:hidden;box-sizing:border-box;width:calc(100% - 1rem);margin:0;margin-inline:.5rem;padding:.25rem .5rem;border-width:0;border-radius:.375rem;background:transparent;color:var(--text-color);font-size:1.1em;line-height:1.5;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:color .15s ease;transform:rotate(0)}.vp-sidebar-heading.open{color:inherit}.vp-sidebar-heading.clickable:hover{background:var(--bg-color-secondary)}.vp-sidebar-heading.clickable.exact{border-inline-start-color:var(--theme-color);color:var(--theme-color)}.vp-sidebar-heading.clickable.exact a{color:inherit}.vp-sidebar-heading .icon{margin-inline-end:.25em}.vp-sidebar-heading .vp-sidebar-title{flex:1}.vp-sidebar-heading .vp-arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");line-height:normal;transition:all .3s;font-size:1.5em}html[data-theme=dark] .vp-sidebar-heading .vp-arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.vp-sidebar-heading .vp-arrow.down{transform:rotate(180deg)}html[dir=rtl] .vp-sidebar-heading .vp-arrow.down{transform:rotate(-180deg)}.vp-sidebar-heading .vp-arrow.end{transform:rotate(90deg)}html[dir=rtl] .vp-sidebar-heading .vp-arrow.end,.vp-sidebar-heading .vp-arrow.start{transform:rotate(-90deg)}html[dir=rtl] .vp-sidebar-heading .vp-arrow.start{transform:rotate(90deg)}button.vp-sidebar-heading{outline:none;font-weight:inherit;font-family:inherit;line-height:inherit;text-align:start;cursor:pointer}.vp-sidebar-link{display:inline-block;box-sizing:border-box;width:calc(100% - 1rem);margin-inline:.5rem;padding:.25rem .5rem;border-radius:.375rem;color:var(--text-color);font-weight:400;font-size:1em;line-height:1.5}.vp-sidebar-link .icon{margin-inline-end:.25em}.vp-sidebar-link:hover{background:var(--bg-color-secondary)}.vp-sidebar-link.active{background:var(--theme-color-mask);color:var(--theme-color);font-weight:500}.vp-sidebar-link.active .icon{color:var(--theme-color)}.vp-sidebar-sub-headers .vp-sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-inline-start:none}.vp-sidebar-sub-headers .vp-sidebar-link.active{background:transparent;font-weight:500}.vp-sidebar-group:not(.collapsible) .vp-sidebar-heading:not(.clickable){color:inherit;cursor:auto}.vp-sidebar-group .vp-sidebar-group{padding-inline-start:.75rem}.vp-sidebar-group .vp-sidebar-group .vp-sidebar-heading{font-size:1em}.vp-sidebar-group .vp-sidebar-link{padding-inline-start:1.25rem}.vp-sidebar-links,.vp-sidebar-links ul{margin:0;padding:0}.vp-sidebar-links ul.vp-sidebar-sub-headers{padding-inline-start:.75rem;font-size:.95em}@media (min-width: 1440px){.has-toc .vp-sidebar-links ul.vp-sidebar-sub-headers{display:none}}.vp-sidebar-links li{list-style-type:none}.vp-sidebar>.vp-sidebar-links{padding:1.5rem 0}@media (max-width: 719px){.vp-sidebar>.vp-sidebar-links{padding:1rem 0}}.vp-sidebar>.vp-sidebar-links>li>.vp-sidebar-link{font-size:1.1em}.vp-sidebar>.vp-sidebar-links>li:not(:first-child){margin-top:.5rem}.vp-sidebar{position:fixed;top:0;bottom:0;left:0;z-index:1;overflow-y:auto;width:var(--sidebar-width);margin:0;padding-inline-start:calc(var(--sidebar-space) - var(--sidebar-width));background:var(--sidebar-bg-color);box-shadow:2px 0 8px var(--card-shadow);font-size:.94rem;transition:background var(--color-transition),box-shadow var(--color-transition),padding var(--transform-transition),transform var(--transform-transition);-webkit-backdrop-filter:saturate(150%) blur(12px);backdrop-filter:saturate(150%) blur(12px);scrollbar-color:var(--theme-color) var(--border-color);scrollbar-width:thin}@media (max-width: 959px){.vp-sidebar{font-size:.86em}}@media (max-width: 719px){.vp-sidebar{z-index:125;box-shadow:none;transform:translate(-100%)}html[dir=rtl] .vp-sidebar{transform:translate(100%)}}@media (min-width: 1440px){.vp-sidebar{padding-bottom:3rem;box-shadow:none;font-size:1rem}}@media print{.vp-sidebar{display:none}}html[dir=rtl] .vp-sidebar{right:0;left:unset}.vp-sidebar a{display:inline-block;color:var(--text-color);font-weight:400}.vp-sidebar .icon{margin-inline-end:.25em}.vp-sidebar.hide-icon .icon{display:none!important}.vp-sidebar-mask{position:fixed;top:0;left:0;z-index:9;width:100vw;height:100vh;background:rgba(0,0,0,.15)}.vp-sidebar-mask.fade-enter-active,.vp-sidebar-mask.fade-leave-active{transition:opacity .25s}.vp-sidebar-mask.fade-enter-from,.vp-sidebar-mask.fade-leave-to{opacity:0}body:before{top:0;left:0;right:0;bottom:0;opacity:.1;z-index:-1;content:"";position:fixed;background:url(https://api.armoe.cn/acg/random) center/cover}table{text-align:center!important;border-collapse:separate!important;border-spacing:0!important}thead,tbody,tr:nth-child(2n){background:transparent!important;-webkit-backdrop-filter:blur(16px)!important;backdrop-filter:blur(16px)!important}table td{word-break:keep-all!important}table th{word-break:keep-all!important;white-space:nowrap!important}h2{border-color:transparent!important}.vp-tabs{border:none}.vp-tabs table{padding:1rem}.vp-tabs .vp-tab-nav{font-weight:500}.vp-tabs .vp-tab-nav:hover,.vp-tabs .vp-tab-nav.active{background:none;font-weight:600}.vp-tabs .vp-tab-nav.active:before{content:none}.vp-tabs .vp-tab-nav.active:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background:var(--badge-info-color)}.vp-tabs .vp-tabs-nav *{background:none}.vp-tabs .vp-tabs-nav:before{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:var(--vp-brc)}.vp-tabs .vp-tabs-nav,.vp-tabs .vp-tab{padding:0;background:transparent;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.vp-tabs *,.vp-tabs .language-json{margin:0}:root,.vp-sidebar,.vp-footer-wrapper{background:transparent!important}.vp-navbar{background:transparent!important;-webkit-backdrop-filter:blur(8px)!important;backdrop-filter:blur(8px)!important}.vp-feature-item{-webkit-backdrop-filter:blur(16px)!important;backdrop-filter:blur(16px)!important}div[class*=language-],.hint-container{background:transparent!important;-webkit-backdrop-filter:blur(16px)!important;backdrop-filter:blur(16px)!important}.highlight-line{opacity:.5}.search-pro-button{background:transparent!important;border:unset!important}.search-pro-button{border-width:0;background:transparent;display:inline-flex;align-items:center;box-sizing:content-box;height:1.25rem;margin-inline:1rem 0;margin-top:0;margin-bottom:0;padding:.5rem;border:0;border:1px solid var(--vp-bgl);border-radius:1rem;background:var(--vp-bgl);color:var(--vp-c);font-weight:500;cursor:pointer;transition:background var(--vp-ct),color var(--vp-ct)}@media print{.search-pro-button{display:none}}@media (max-width: 959px){.search-pro-button{border-radius:50%}}.search-pro-button:hover{border:1px solid var(--vp-tc);background-color:var(--vp-bglt);color:var(--vp-clt)}.search-pro-button .search-icon{width:1.25rem;height:1.25rem}.search-pro-placeholder{margin-inline:.25rem;font-size:1rem}@media (max-width: 959px){.search-pro-placeholder{display:none}}.search-pro-key-hints{font-size:.75rem}@media (max-width: 959px){.search-pro-key-hints{display:none}}.search-pro-key{display:inline-block;min-width:1em;margin-inline:.125rem;padding:.25rem;border:1px solid var(--vp-brc);border-radius:4px;box-shadow:1px 1px 4px 0 var(--card-shadow);line-height:1;letter-spacing:-.1em;transition:background var(--vp-ct),color var(--vp-ct),border var(--vp-ct) box-shadow var(--vp-ct)}@keyframes search-pro-fade-in{0%{opacity:.2}to{opacity:1}}.search-pro-modal-wrapper{position:fixed;top:0;left:0;z-index:997;display:flex;align-items:center;justify-content:center;overflow:auto;width:100vw;height:100vh;cursor:default}.search-pro-mask{position:fixed;top:0;left:0;z-index:998;width:100vw;height:100vh;animation:.25s search-pro-fade-in;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.search-pro-modal{position:absolute;z-index:999;display:flex;flex-direction:column;width:calc(100% - 6rem);max-width:50em;border-radius:10px;background:var(--vp-bg);box-shadow:2px 2px 10px 0 var(--card-shadow);transition:background var(--vp-ct);animation:.15s pwa-opened}@media (max-width: 1280px){.search-pro-modal{animation:.25s pwa-mobile}}@media (max-width: 719px){.search-pro-modal{width:100vw;max-width:unset;height:100vh}}.search-pro-box{display:flex;margin:1rem}.search-pro-box form{position:relative;display:flex;flex:1}.search-pro-box label{position:absolute;top:calc(50% - .75rem);left:.5rem;color:var(--vp-tc)}html[dir=rtl] .search-pro-box label{right:.5rem;left:unset}.search-pro-box label .search-icon{width:1.5rem;height:1.5rem}.search-pro-clear-button{border-width:0;background:transparent;cursor:pointer;position:absolute;top:calc(50% - 10px);right:.75rem;padding:0;color:var(--vp-tc)}html[dir=rtl] .search-pro-clear-button{right:.75rem;left:unset}.search-pro-clear-button:hover{border-radius:50%;background-color:#0000001a}.search-pro-close-button{border-width:0;background:transparent;cursor:pointer;display:none;margin-inline-start:.5rem;margin-inline-end:-.5rem;padding:.5rem;color:var(--grey3);font-size:1rem}@media (max-width: 719px){.search-pro-close-button{display:block}}.search-pro-input{flex:1;width:0;margin:0;padding-top:.25rem;padding-bottom:.25rem;padding-inline-start:2.5rem;padding-inline-end:2rem;border:0;border:2px solid var(--vp-tc);border-radius:8px;background:var(--vp-bg);color:var(--vp-c);outline:none;font-size:1.25rem;line-height:2.5;-webkit-appearance:none;-moz-appearance:none;appearance:none}.search-pro-input::-webkit-search-cancel-button{display:none}.search-pro-suggestions{position:absolute;top:calc(100% + 4px);right:0;left:0;z-index:20;overflow:visible;overflow-y:auto;max-height:50vh;margin:0;padding:0;border-radius:.5rem;background-color:var(--vp-bg);box-shadow:2px 2px 10px 0 var(--card-shadow);list-style:none;line-height:1.5}.search-pro-suggestion{padding:.25rem 1rem;border-top:1px solid var(--vp-brc);cursor:pointer}.search-pro-suggestion:first-child{border-top:none}.search-pro-suggestion.active,.search-pro-suggestion:hover{background-color:var(--vp-bglt)}.search-pro-auto-complete{display:none;float:right;margin:0 .5rem;padding:4px;border:1px solid var(--vp-brc);border-radius:4px;box-shadow:1px 1px 4px 0 var(--card-shadow);font-size:12px;line-height:1}.search-pro-suggestion.active .search-pro-auto-complete{display:block}.search-pro-result-wrapper{flex-grow:1;overflow-y:auto;min-height:40vh;max-height:calc(80vh - 10rem);padding:0 1rem}@media (max-width: 719px){.search-pro-result-wrapper{min-height:unset;max-height:unset}}.search-pro-result-wrapper.loading,.search-pro-result-wrapper.empty{display:flex;align-items:center;justify-content:center;padding:1.5rem;font-weight:600;font-size:22px;text-align:center}.search-pro-hints{margin-top:1rem;padding:.75rem .5rem;box-shadow:0 -1px 4px 0 var(--card-shadow);line-height:1}.search-pro-hint{display:inline-flex;align-items:center;margin:0 .5rem}.search-pro-hint kbd{margin:0 .5rem;padding:2px;border:1px solid var(--vp-brc);border-radius:4px;box-shadow:1px 1px 4px 0 var(--card-shadow)}.search-pro-hint kbd+kbd{margin-inline-start:-.25rem}.search-pro-hint svg{display:block;width:15px;height:15px}.search-pro-result-wrapper{scrollbar-color:var(--vp-tc) var(--vp-brc);scrollbar-width:thin}@media (max-width: 419px){.search-pro-result-wrapper{font-size:14px}}.search-pro-result-wrapper::-webkit-scrollbar{width:6px;height:6px}.search-pro-result-wrapper::-webkit-scrollbar-track-piece{border-radius:6px;background:rgba(0,0,0,.1)}.search-pro-result-wrapper::-webkit-scrollbar-thumb{border-radius:6px;background:var(--vp-tc)}.search-pro-result-wrapper::-webkit-scrollbar-thumb:active{background:var(--vp-tcl)}.search-pro-result-wrapper mark{border-radius:.25em;line-height:1}.search-pro-result-list{margin:0;padding:0}.search-pro-result-list-item{display:block;list-style:none}.search-pro-result-title{position:sticky;top:-2px;z-index:10;margin:-4px;margin-bottom:.25rem;padding:4px;background:var(--vp-bg);color:var(--vp-tc);font-weight:600;font-size:.85em;line-height:2rem;text-indent:.5em}.search-pro-result-item.active .search-pro-result-title{color:var(--vp-tc)}.search-pro-result-type{display:block;width:1rem;height:1rem;margin-inline-start:-.5rem;padding:.5rem;color:var(--vp-tc)}.search-pro-remove-icon{border-width:0;background:transparent;cursor:pointer;box-sizing:content-box;height:1.5rem;padding:0;border-radius:50%;color:var(--vp-tc);font-size:1rem}.search-pro-remove-icon svg{width:1.5rem;height:1.5rem}.search-pro-remove-icon:hover{background:rgba(128,128,128,.3)}.search-pro-result-content{display:flex;flex-grow:1;flex-direction:column;align-items:stretch;justify-content:center;line-height:1.5}.search-pro-result-content .content-header{margin-bottom:.25rem;border-bottom:1px solid var(--vp-brcd);font-size:.9em}.search-pro-result-item{display:flex;align-items:center;margin:.5rem 0;padding:.5rem .75rem;border-radius:.25rem;background:var(--vp-bgl);color:inherit;box-shadow:0 1px 3px 0 var(--card-shadow);font-weight:400;white-space:pre-wrap;word-wrap:break-word}.search-pro-result-item strong{color:var(--vp-tc)}.search-pro-result-item:hover,.search-pro-result-item.active{background-color:var(--vp-tcl);color:var(--white);cursor:pointer}.search-pro-result-item:hover .search-pro-result-type,.search-pro-result-item:hover .search-pro-remove-icon,.search-pro-result-item:hover strong,.search-pro-result-item.active .search-pro-result-type,.search-pro-result-item.active .search-pro-remove-icon,.search-pro-result-item.active strong{color:var(--white)} diff --git a/assets/user.html-ccc3ea56.js b/assets/user.html-ccc3ea56.js new file mode 100644 index 00000000..41fc19da --- /dev/null +++ b/assets/user.html-ccc3ea56.js @@ -0,0 +1 @@ +import{_ as r}from"./plugin-vue_export-helper-c27b6911.js";import{r as i,o as n,c as o,a as e,d,b as a,e as h}from"./app-edf8b1e7.js";const c={},s={class:"hint-container warning"},l=e("p",{class:"hint-container-title"},"注意",-1),_={id:"删除好友",tabindex:"-1"},p=e("a",{class:"header-anchor",href:"#删除好友","aria-hidden":"true"},"#",-1),b=h('

该接口用于删除好友。

API 端点

/delete_friend

参数

字段名数据类型默认值说明
user_idint64-好友 QQ 号

响应

该接口将返回处理结果,其中 data 字段无数据。

',7),u={id:"删除单向好友",tabindex:"-1"},f=e("a",{class:"header-anchor",href:"#删除单向好友","aria-hidden":"true"},"#",-1),x=h('

该接口用于删除单向好友。

API 端点

/delete_unidirectional_friend

参数

字段类型说明
user_idint64单向好友QQ号

响应

该接口将返回处理结果,其中 data 字段无数据。

点赞资料卡

API 端点

send_like

参数

字段类型必须说明
timeint32点赞次数
user_idint64点赞的目标用户

响应

该接口将返回处理结果,其中 data 字段无数据。

',14);function m(y,g){const t=i("Badge");return n(),o("div",null,[e("div",s,[l,e("p",null,[d("对于 Shamrock 尚未实现的 API,会在标题添加标记 "),a(t,{text:"未实现",type:"danger",vertical:"baseline"})])]),e("h2",_,[p,d(" 删除好友 "),a(t,{text:"未实现",type:"danger"})]),b,e("h2",u,[f,d(" 删除单向好友 "),a(t,{text:"未实现",type:"danger"})]),x])}const k=r(c,[["render",m],["__file","user.html.vue"]]);export{k as default}; diff --git a/assets/user.html-cf480335.js b/assets/user.html-cf480335.js new file mode 100644 index 00000000..6ad4bf9b --- /dev/null +++ b/assets/user.html-cf480335.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-0e934be0","path":"/api/user.html","title":"用户相关","lang":"zh-CN","frontmatter":{"title":"用户相关","icon":"users"},"headers":[{"level":2,"title":"删除好友","slug":"删除好友","link":"#删除好友","children":[{"level":3,"title":"API 端点","slug":"api-端点","link":"#api-端点","children":[]},{"level":3,"title":"参数","slug":"参数","link":"#参数","children":[]},{"level":3,"title":"响应","slug":"响应","link":"#响应","children":[]}]},{"level":2,"title":"删除单向好友","slug":"删除单向好友","link":"#删除单向好友","children":[{"level":3,"title":"API 端点","slug":"api-端点-1","link":"#api-端点-1","children":[]},{"level":3,"title":"参数","slug":"参数-1","link":"#参数-1","children":[]},{"level":3,"title":"响应","slug":"响应-1","link":"#响应-1","children":[]}]},{"level":2,"title":"点赞资料卡","slug":"点赞资料卡","link":"#点赞资料卡","children":[{"level":3,"title":"API 端点","slug":"api-端点-2","link":"#api-端点-2","children":[]},{"level":3,"title":"参数","slug":"参数-2","link":"#参数-2","children":[]},{"level":3,"title":"响应","slug":"响应-2","link":"#响应-2","children":[]}]}],"git":{"createdTime":1698464511000,"updatedTime":1708390472000,"contributors":[{"name":"Kamisato-Ayaka-233","email":"2627706725@qq.com","commits":1},{"name":"huan_kong","email":"2564076459@qq.com","commits":1},{"name":"真心","email":"qgzhenxin@qq.com","commits":1}]},"readingTime":{"minutes":0.74,"words":223},"filePathRelative":"api/user.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/assets/voice.html-a3a687f3.js b/assets/voice.html-a3a687f3.js new file mode 100644 index 00000000..4daae9c4 --- /dev/null +++ b/assets/voice.html-a3a687f3.js @@ -0,0 +1 @@ +import{_ as a}from"./plugin-vue_export-helper-c27b6911.js";import{r as n,o as c,c as l,a as e,d as o,b as t,w as s,e as d}from"./app-edf8b1e7.js";const h={},_=d('

安装 SILK 语音引擎

Shamrock 的语音解码器已经模块化,你可以自行选择安装。
如果未安装 SILK 语音引擎,Shamrock 则无法发送 mp3/flac/wav/ogg 等格式的语音消息。

为了完整支持语音消息,你需要安装 SILK 语音引擎。

  • 下载 AudioLibrary 语音支持库,请下载对应架构的文件,否则可能无法运行。
  • 将全部文件解压到 Shamrock 主目录 下的 lib 文件夹中
',4),u={href:"https://github.com/whitechi73/OpenShamrock/blob/master/AudioLibrary-arm64.zip",target:"_blank",rel:"noopener noreferrer"},p={href:"https://github.com/whitechi73/OpenShamrock/blob/master/AudioLibrary-x64.zip",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"Shamrock 主目录",-1),b=e("div",{class:"hint-container tip"},[e("p",{class:"hint-container-title"},"提示"),e("p",null,[o("如果没有 "),e("code",null,"lib"),o(" 文件夹,请自行创建。"),e("br"),o(" 请你下载对应的正确的架构的"),e("code",null,"lib"),o(",在模拟器上即使对应架构也可能报错?")])],-1);function k(f,L){const r=n("ExternalLinkIcon"),i=n("RouterLink");return c(),l("div",null,[_,e("blockquote",null,[e("p",null,[e("a",u,[o("AudioLibrary-Arm64"),t(r)]),e("a",p,[o("AudioLibrary-X64"),t(r)])])]),e("p",null,[o("关于 "),m,o(",请参考 "),t(i,{to:"/guide/configuration.html#%E7%9B%AE%E5%BD%95%E5%AE%9A%E4%B9%89"},{default:s(()=>[o("目录定义")]),_:1}),o("。")]),b])}const x=a(h,[["render",k],["__file","voice.html.vue"]]);export{x as default}; diff --git a/assets/voice.html-e8e18946.js b/assets/voice.html-e8e18946.js new file mode 100644 index 00000000..4cb88a1b --- /dev/null +++ b/assets/voice.html-e8e18946.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-fc42014a","path":"/advanced/voice.html","title":"语音支持","lang":"zh-CN","frontmatter":{"title":"语音支持","icon":"microphone"},"headers":[{"level":2,"title":"安装 SILK 语音引擎","slug":"安装-silk-语音引擎","link":"#安装-silk-语音引擎","children":[]}],"git":{"createdTime":1698464511000,"updatedTime":1700703136000,"contributors":[{"name":"白池","email":"98259561+whitechi73@users.noreply.github.com","commits":2},{"name":"真心","email":"qgzhenxin@qq.com","commits":2}]},"readingTime":{"minutes":0.66,"words":199},"filePathRelative":"advanced/voice.md","localizedDate":"2023年10月28日","excerpt":""}');export{e as data}; diff --git a/event/general-data.html b/event/general-data.html new file mode 100644 index 00000000..928feb83 --- /dev/null +++ b/event/general-data.html @@ -0,0 +1,40 @@ + + + + + + + + 通用数据 | OpenShamrock + + + + + + +
跳至主要內容

通用数据

大约 1 分钟

所有上报

所有上报事件都包含以下字段:

字段类型说明
timeint64时间戳
self_idint64机器人QQ
post_typestring上报类型

提示

post_typemessagemessage_sent 时,数据是一致的。
区别在于 message 是收到的消息,message_sent 是发送的消息。

默认情况下,Shamrock 只会上报 message 类型的消息。

事件类型

PostType

类型说明
message收到消息
message_sent发送消息
notice通知
request请求

MessageType

类型说明
private私聊消息
group群消息

MessageSubType

类型说明
friend好友消息
normal群消息
anonymous匿名消息
group群临时消息
group_self群消息(自身操作)
notice系统提示

NoticeType

类型说明
group_upload群文件上传
group_admin群管理员变动
group_decrease群成员减少
group_increase群成员增加
group_ban群禁言
group_recall群消息撤回
group_card群成员名片变动
friend_add好友添加
friend_recall好友撤回
offline_file接收到离线文件包
client_status客户端状态
essence精华消息
notify系统通知

NoticeNotifySubType

类型说明
honor群荣誉变更
poke戳一戳
lucky_king运气王
title群头衔变更

RequestType

类型说明
friend好友请求
group群请求

数据结构

MessageSender

字段类型说明
user_idint64发送者 QQ 号
nicknamestring发送者昵称

如果是群消息,还会包含以下字段:

字段类型说明
cardstring发送者群名片
levelstring发送者等级
rolestring发送者角色
titlestring发送者头衔

如果是频道消息,则会包含以下字段:

字段类型说明
tiny_idstring发送者TinyId

Post_Message_TempSource

类型来源
0群聊
1QQ咨询
2查找
3QQ电影
4热聊
6验证消息
7多人聊天
8约会
9通讯录
+ + + diff --git a/event/index.html b/event/index.html new file mode 100644 index 00000000..690965c5 --- /dev/null +++ b/event/index.html @@ -0,0 +1,40 @@ + + + + + + + + 事件 | OpenShamrock + + + + + + +
跳至主要內容

事件

小于 1 分钟

+ + + diff --git a/event/message.html b/event/message.html new file mode 100644 index 00000000..e3155250 --- /dev/null +++ b/event/message.html @@ -0,0 +1,40 @@ + + + + + + + + 消息事件 | OpenShamrock + + + + + + +
跳至主要內容

消息事件

大约 1 分钟

提示

所有上报事件都包含通用数据,详见 通用数据
包含在通用数据中的字段不会在下面的表格中重复出现。

消息事件

字段类型说明
message_typestring消息类型
sub_typestring消息子类型
message_idint64消息 ID
user_idint64发送者 QQ 号(在频道中,则为发送者的Tiny ID)
tiny_idint64发送者的Tiny ID(频道)
messageobject消息内容
raw_messagestringCQ 码格式消息
fontint32字体
senderobject发送人信息
group_idint64群号
target_idint64消息目标(私聊)
temp_sourceint32临时聊天来源(私聊)
peer_idint64消息接收者,群聊是群号,私聊时是目标QQ

私聊消息

message_typeprivate 时,表示收到了私聊消息。

群消息

message_typegroup 时,表示收到了群消息。

私聊消息

message_typeless 时,表示收到了群消息。

频道消息

message_typeguild 时,表示收到了群消息。

快速回复

Shamrock 提供了快速回复的功能,可以在收到消息时快速回复消息。

字段类型说明
replystring回复内容
auto_escapebool是否自动转义
auto_replybool是否自动回复到消息

快速操作

Shamrock 提供了快速操作的功能,可以在收到消息时快速执行操作。

字段类型说明
replystring回复内容
auto_escapebool是否自动转义
at_senderbool是否 @发送者
deletebool是否撤回消息
kickbool是否踢出发送者
banbool是否禁言发送者
ban_durationint64禁言时长(秒)
+ + + diff --git a/event/notice.html b/event/notice.html new file mode 100644 index 00000000..4dbfcc11 --- /dev/null +++ b/event/notice.html @@ -0,0 +1,40 @@ + + + + + + + + 通知事件 | OpenShamrock + + + + + + +
跳至主要內容

通知事件

大约 4 分钟

注意

对于 Shamrock 未实现的事件,会在标题添加标记 未实现

提示

所有上报事件都包含通用数据,详见 通用数据
包含在通用数据中的字段不会在下面的表格中重复出现。

私聊消息撤回

notice_typefriend_recall 时,表示收到了私聊消息撤回事件。

字段类型说明
user_idint64好友 QQ 号
operator_idint64操作者 QQ 号
message_idint64消息 ID

群聊消息撤回

notice_typegroup_recall 时,表示收到了群聊消息撤回事件。

字段类型说明
group_idint64群号
user_idint64发送者 QQ 号
operator_idint64操作者 QQ 号
message_idint64消息 ID

群组成员增加

notice_typegroup_increase 时,表示收到了群组成员增加事件。

字段类型说明
group_idint64群号
user_idint64新增成员 QQ
operator_idint64操作者 QQ 号
operator_uidstring操作者 UID
user_uidstring新成员 UID
sub_typestring子类型(approve/invite)

群组成员减少

notice_typegroup_decrease 时,表示收到了群组成员减少事件。

字段类型说明
group_idint64群号
user_idint64减少成员 QQ
operator_idint64操作者 QQ 号
operator_uidstring操作者 UID
user_uidstring新成员 UID
sub_typestring子类型(leave/kick/kick_me)

群组管理员变动

notice_typegroup_admin 时,表示收到了群组管理员变动事件。

字段类型说明
group_idint64群号
user_idint64变动成员 QQ
sub_typestring子类型(set/unset)

群文件上传

notice_typegroup_upload 时,表示收到了群文件上传事件。

字段类型说明
group_idint64群号
user_idint64上传者 QQ
fileobject群文件信息

群文件信息结构体

字段名数据类型说明
idstring文件 ID
namestring文件名
sizeint64文件大小 ( 字节数 )
busidint64busid ( 目前不清楚有什么作用 )
urlstring下载地址

私聊文件上传

notice_typeprivate_upload 时,表示收到了群文件上传事件。

字段类型说明
user_idint64上传者 QQ
senderint64上传者 QQ
private_fileobject私聊文件信息

私聊文件信息结构体

字段名数据类型说明
idstring文件 ID
namestring文件名
sizeint64文件大小 ( 字节数 )
urlstring下载地址
sub_idstring子文件ID
exppireint64文件过期时间

群禁言

notice_typegroup_ban 时,表示收到了群禁言事件。

字段类型说明
group_idint64群号
user_idint64被禁言成员 QQ
operator_idint64操作者 QQ
durationint64禁言时长(秒)
sub_typestring子类型(ban/lift_ban)

群成员名片变动

notice_typegroup_card 时,表示收到了群成员名片变动事件。

字段类型说明
group_idint64群号
user_idint64变动成员 QQ
card_newstring新名片
card_oldstring旧名片

好友添加 未实现

notice_typefriend_add 时,表示收到了好友添加事件。

字段类型说明
user_idint64新添加好友 QQ 号

收到离线文件 未实现

notice_typeoffline_file 时,表示收到了离线文件事件。

字段类型说明
user_idint64发送者 QQ
fileobject文件信息

文件信息

字段类型说明
namestring文件名
sizeint64文件大小
urlstring下载链接

精华消息

notice_typeessence 时,表示收到了精华消息事件。

字段类型说明
group_idint64群号
sender_idint64发送者 QQ
operator_idint64操作者 QQ
message_idint64消息 ID
sub_typestring子类型(add/delete)

客户端状态 未实现

notice_typeclient_status 时,表示收到了客户端状态事件。

字段类型说明
clientobject客户端信息
onlinebool在线状态

头像戳一戳

notice_typenotifysub_typepoke 时,表示收到了头像戳一戳事件。

字段类型说明
user_idint64发送者 QQ
sender_idint64好友 QQ (仅私聊)
group_idint64群号(仅群聊)
target_idint64被戳者 QQ
poke_detailPokeDetail戳一戳的详细信息

PokeDetail

字段类型说明
actionstring操作名称,如“戳了戳”
suffixstring后缀,未设置则未空
action_img_urlstring操作图标

群红包运气王 未实现

notice_typenotifysub_typelucky_king 时,表示收到了群红包运气王事件。

字段类型说明
group_idint64群号
user_idint64发送者
target_idint64运气王

群荣誉变更 未实现

notice_typenotifysub_typehonor 时,表示收到了群荣誉变更事件。

字段类型说明
group_idint64群号
user_idint64操作者
honor_typestring荣誉类型

群头衔变更

notice_typenotifysub_typetitle 时,表示收到了群头衔变更事件。

字段类型说明
group_idint64群号
user_idint64操作者
titlestring获得头衔
+ + + diff --git a/event/request.html b/event/request.html new file mode 100644 index 00000000..eb7de12c --- /dev/null +++ b/event/request.html @@ -0,0 +1,40 @@ + + + + + + + + 请求事件 | OpenShamrock + + + + + + +
跳至主要內容

请求事件

小于 1 分钟

注意

对于 Shamrock 未实现的事件,会在标题添加标记 未实现

提示

所有上报事件都包含通用数据,详见 通用数据
包含在通用数据中的字段不会在下面的表格中重复出现。

加好友请求

request_typefriend 时,表示收到了加好友请求。

字段类型说明
user_idint64请求者 QQ 号
commentstring验证信息
flagstring请求 flag

快速处理

Shamrock 提供了快速处理的功能,可以在收到请求时快速处理请求。

字段类型说明
approvebool是否同意
remarkstring备注

加群请求/邀请

request_typegroup 时,表示收到了加群请求/邀请。

字段类型说明
group_idint64群号
user_idint64请求者 QQ 号
commentstring验证信息
flagstring请求 flag
sub_typestring子类型(add/invite)

快速处理

Shamrock 提供了快速处理的功能,可以在收到请求时快速处理请求。

字段类型说明
approvebool是否同意
reasonstring拒绝理由
+ + + diff --git a/guide/configuration.html b/guide/configuration.html new file mode 100644 index 00000000..ef29884c --- /dev/null +++ b/guide/configuration.html @@ -0,0 +1,82 @@ + + + + + + + + 应用配置 | OpenShamrock + + + + + + +
跳至主要內容

应用配置

大约 2 分钟

提示

Shamrock 提供了一个图形化的配置界面,可进行简单的配置操作。
大部分配置简单易于理解,我们仅仅介绍部分难于理解的配置选项。

配置选项

强制平板模式

QQ 客户端 识别设备为平板,使其账号可在安卓和平板同时在线。

提示

除了 WebSocket 相关功能,其他功能的配置进行修改立即生效,无需重新启动 QQ 。 不建议使用 CQ 码,因为在新一代机器人设计理念中,该操作过于落后,可能会出现许多问题。

注意

被动 WebSocket 在断线之后,每隔 5 秒尝试重新连接。

目录定义

  • 内部存储目录: /storage/emulated/0/sdcard
  • QQ 主目录: 内部存储目录 + /Android/data/com.tencent.mobileqq
  • Shamrock 主目录: QQ主目录 + /Tencent/Shamrock

配置文件

将下方 JSON 文件创建在 Shamrock 主目录 + /config.json
请确保 JSON 格式正确。

{
+  rules: {
+    group_rule: {
+      black_list: [12345678], // 如果群号是`12345678`就跳过了哦!
+      white_list: []
+    },
+    private_rule: {
+      black_list: [12345678],
+      white_list: []
+    }
+  },
+  default_token: null,
+  active_websocket: {
+    port: 5800, // 主动WS监听的端口
+    token: 'aaaa1111,bbbb1111', // 同时允许两个token可使用|或,作为分割
+    tokens: ['aaaa1111', 'aaaa2222'], // 使用tokens实现多token,优先级比上面那个高
+    heartbeat_interval: 15000 // 设置为null则默认15000毫秒作为心跳间隔,0则为无心跳
+  },
+  passive_websocket: [
+    {
+      address: 'ws://xxxxxxxxx' // 这里是个例子,如果默认tk存在则使用默认token鉴权
+    },
+    {
+      address: 'ws://aaaaaaaaa',
+      token: 'aaa666', // 提供了特例化token,将不使用默认token
+      heartbeat_interval: 15000 // 设置为null则默认15000毫秒作为心跳间隔,0则为无心跳
+    }
+  ],
+  'allow-temp-session': false // 是否允许临时消息
+}
+
参数名称类型作用例子
default_tokenstring默认 tokenHTTP接口/主被动WS 如果未单独定义 token ,则使用默认 tokenaaa123456

记得把注释删掉哦?JSON5貌似也没有完全支持呢?该配置文件采用Json5标准!

WebSocket认证方法

HTTP Upgrade 请求头中添加 access_tokenticketAuthorization

例:

GET / HTTP/1.1
+Host: 192.168.3.4
+Upgrade: websocket
+Connection: upgrade
+Sec-WebSocket-Key: wwwwwwwwwwwwwwwwwwwwww==
+Sec-WebSocket-Version: 13
+Authorization: aaaa1111
+

数据目录

大部分 Shamrock 的数据/缓存保存在 Shamrock 主目录
其中的日志可作为 Issue 内容,截取部分提交。

.
+├── tmpfiles # 临时文件目录
+│   ├── logs # 日志目录
+│   │   └── xxx.log # 日志文件
+├── config.json # 配置文件
+
+ + + diff --git a/guide/faq.html b/guide/faq.html new file mode 100644 index 00000000..44d3846e --- /dev/null +++ b/guide/faq.html @@ -0,0 +1,41 @@ + + + + + + + + 常见问题 | OpenShamrock + + + + + + +
跳至主要內容

常见问题

大约 3 分钟

支持的QQ版本

  • 版本 8.9.688.9.708.9.738.9.758.9.788.9.808.9.818.9.839.0.15, 9.0.8
  • 理论上支持上述说明未提到的更高版本,如遇问题请提交 issue

反检测

Shamrock 内部已经做了对应处理,无需再进行任何操作。

注意

禁止使用隐藏应用列表等其他方法对 QQ 隐藏 Shamrock ,否则会出现 框架未激活 等异常。

模拟器部署成功后电脑无法访问?

部分模拟器采用的是 NAT 网络,请使用

adb forward xxx
+

将模拟器内的端口监听转发到电脑,别和我说为什么别人的模拟器可以在外面直接访问,你的不行就不行!

执行这个命令前,请注意adb是安卓调试桥工具包内的东西,请确保你的环境中有这个玩意,否则请前往谷歌官网或者刷机论坛之类的地方获取。

修改了配置文件,但没有生效?

Shamrock 的部分配置需要重新启动 QQ (请确保100%杀死QQ),然后在保证 Shamrock 存活的情况下启动 QQShamrockWebSocket 相关的所有配置都需要重新启动生效。

注意

如果启用了 实验功能->免死金牌 在更新配置或更新模块后需重启系统,否则更新可能不会生效。

某些事件/消息/操作不支持?

提交 issue ,我们会实现。

QQ闪退(每隔一段时间)怎么办?

勾选 Shamrock 的自动唤醒,或者使用某些框架自带QQ死亡自动唤醒的XP, MAGISK...插件。你要习以为常这个操作,请安装一些软件进行按时重启或者闪退重启,同时QQ有时也会有概率杀死他自己。

真机息屏状态,API会变慢/无响应?

断网式:这个操作源自于 MIUI息屏省电 ,请保证关闭锁屏后断开数据,这个选项,关闭睡眠模式。

缓慢式:使用某些息屏挂机软件,为 QQ 附加一个息屏挂机状态。安装息屏挂机软件 extinguish ,或者使用 MIUI游戏助手 息屏挂机

模拟器部署,QQ闪退?

QQ修复了登录响应超时的问题,经测试(逍遥,夜神,MuMu)模拟器可正常使用,去QQ官网下载最新版本即可。

其次,模拟器部署请使用Shamrock的ALL版本,不要使用WSA(Windows安卓子系统)部署(有兼容问题)。

模拟器部署,外部无法访问接口?

参考 模拟器部署成功后电脑无法访问?

Docker部署支持?

目前依旧在计划中,主要是不太会 docker

一定要保证Shamrock主APP在后台运行吗?

不需要,因为 OneBot 服务运行在 QQ 主进程中,无需 Shamrock 主进程运行(当然第一次使用 Shamrock ,请启动 Shamrock ,推送配置要求 ShamrockQQ 都在运行)。

云手机支持哪些?

目前允许在中国移动云手机(Magisk)和红手指云手机(Lspatch)使用 Shamrock ,其它平台未测试。

Shamrock的日志怎么导出?

Shamrock 的日志文件,按照时间和进程名称,保存在 /sdcard/Android/data/com.tencent.mobileqq/Tencent/Shamrock/log 文件夹内,请查看,提交 issue 时可以使用它们,注意请不要提交超过 50kb 的日志文件。

+ + + diff --git a/guide/getting-started.html b/guide/getting-started.html new file mode 100644 index 00000000..451c8e7c --- /dev/null +++ b/guide/getting-started.html @@ -0,0 +1,40 @@ + + + + + + + + 快速开始 | OpenShamrock + + + + + + +
跳至主要內容

快速开始

大约 4 分钟

注意

Shamrock 的更新会围绕一个稳定的版本,如果盲目升级,可能导致 Shamrock 不可用。
Shamrock 仍然处于快速开发阶段,可能会有大量 API 在未来版本中被删除或修改。
请不要过度依赖实验室中的功能,以免造成不必要的损失。

下载

提示

目前推荐您下载 开发版本 的 Shamrock

稳定版本

开发版本

部署

注意

请使用 Shamrock 兼容的 QQ 客户端部署,见 支持的QQ版本

如果您使用了 QRSpeed/ShamrockNative 有关的插件,请确保 Shamrock 存活。
无论什么情况都请确保 QQ 客户端 存活。
禁止对 QQ 客户端 隐藏 Shamrock,这将导致无法运行。
首次启动,必须打开 Shamrock,否则无法推送配置文件导致失败。

模拟器上部署

在Mumu模拟器、逍遥模拟器......各种模拟器,其中对Shamrock兼容较好的是 Mumu模拟器 ,其它模拟器在测试情况下都出现高版本 QQ 闪退的问题。

注意

Shamrock 必须是 ALL版本 才能在模拟器正常使用

Magisk+Lsposed

推荐的是 XposedLsposed 框架,而不是 EdXposed,在测试情况下, EdXP 出现了无法注入的问题。

Lspatch

查看 使用LSPatch

在Linux类服务器上部署(使用docker)

这个选择过于多元化,你可以使用 redroid, docker-android,需要注意的是部分框架要求开起虚拟化才能使用哦!目前依旧是采用 Lspatch+Shamrock 方案在 docker 部署,因为安装 magisk 类需要修补镜像,难以实现。

查看 使用LSPatch

在PVE上使用

部署Windows

使用PVE安装任意Windows系统之后,阅读文章 PVE开启嵌套虚拟化open in new window

之后可在系统内使用 安卓模拟器部署

部署BlissOS

操作视频参考PVE下安装BlissOS及Magisk,LSPopen in new window
之后可以直接使用 OpenShamrock

在Linux KVM部署

参考文章:KVM上部署Androidopen in new window 该文章使用的安卓版本可能较低,请使用安卓9+系统

在WSA上部署

WSA 拥有自带 Magisk 的版本,但是 QQWSA 在第二次启动时会闪退,怀疑为热更新问题。

有 XP 环境

  • 打开 QQ 客户端,登录你的 QQ 账号
  • 安装 Shamrock 并在 Xposed 启用 Shamrock 模块,如果使用 LSPosed 则需要勾选模块作用域(默认QQ)
  • 启动 Shamrock重新启动 QQ 客户端,如果环境为 Xposed 则需要重启手机
  • 此时 Shamrock 会显示已激活(需要成功登陆,才会显示已激活)

无 Root 环境

使用 LSPatch

  • 打开 LSPatch 并在 管理 页面选择 + 新建修补,可以选择从存储目录选择 QQAPK 或者直接使用已经安装过的 QQ
  • 修补模式默认且应该优先选择 本地模式 ,这样方便直接更新 Shamrock 模块而不用重新修补,缺点是需要 LSPatch 保持后台运行
  • 其他配置保持默认,然后点击 开始修补 ,修补完成后会提示安装(如果已经安装会提示卸载)
  • 安装 Shamrock 模块后在 管理 页面点击修补好的 QQ 选择 模块作用域 勾选上 Shamrock 模块然后保存
  • 启动 Shamrock重新启动 QQ 客户端
  • 此时 Shamrock 会显示已激活

注意

使用 本地模式 修补后需要保持 LSPatch 在后台运行,优点是模块更新无需重新修补 QQ

使用 集成模式 修补后无需保持 LSPatch 在后台运行,缺点是模块更新后需要重新修补 QQ

使用 VirtualXposed

注意

在 Android 12 以上的系统中,使用 VirtualXposed 会导致闪退。

使用 太极

注意

暂不支持太极使用,正在申请。

+ + + diff --git a/guide/index.html b/guide/index.html new file mode 100644 index 00000000..1ff98936 --- /dev/null +++ b/guide/index.html @@ -0,0 +1,40 @@ + + + + + + + + 指南 | OpenShamrock + + + + + + +
跳至主要內容

指南

小于 1 分钟

+ + + diff --git a/index.html b/index.html new file mode 100644 index 00000000..06416b7d --- /dev/null +++ b/index.html @@ -0,0 +1,40 @@ + + + + + + + + 首页 | OpenShamrock + + + + + + +
跳至主要內容
Shamrock

Shamrock

基于 Xposed 实现 OneBot 标准的 QQ 机器人框架

快速开始API 文档

安全稳定

采用 Xposed Hook 实现,不会影响系统稳定性

部署简单

无需安装额外的应用,只需安装 Xposed 框架即可

适配快速

适配 OneBot 11/12 标准,可快速适配其他 OneBot 标准的机器人框架

+ + + diff --git a/message/advanced.html b/message/advanced.html new file mode 100644 index 00000000..10ca53dc --- /dev/null +++ b/message/advanced.html @@ -0,0 +1,47 @@ + + + + + + + + 高级消息 | OpenShamrock + + + + + + +
跳至主要內容

高级消息

小于 1 分钟

注意

对于 Shamrock 未实现的消息类型,会在标题添加标记 未实现

合并转发

字段类型必填说明
idstring合并转发resid

合并转发(节点)

字段类型必填说明
idint64 or string消息ID

XML 消息 未实现

JSON 消息

参数

字段类型必填说明
datastringJSON 数据
[CQ:json,data={"app":"com.tencent.structmsg","config":{"autosize":true,"ctime":1621234567,"forward":true,"token":"shamrock"},"desc":"这是一条 JSON 消息"...}]
+

文本转语音 未实现

+ + + diff --git a/message/format.html b/message/format.html new file mode 100644 index 00000000..4daad90f --- /dev/null +++ b/message/format.html @@ -0,0 +1,72 @@ + + + + + + + + 消息格式 | OpenShamrock + + + + + + +
跳至主要內容

消息格式

大约 1 分钟

提示

在后续的文档中,我们将提供 CQ 码和消息段两种格式的消息示例,以便于您更好地理解。

CQ 码

CQ 码是一种特殊的文本格式,用于在消息中插入表情、图片、音乐、语音、视频、网页等内容。

格式

这是一个 CQ 码的基本格式:

[CQ:action,param1=value1,param2=value2]
+

CQ 码中内容含义如下:

  • action:动作,指示要进行的操作,如发送图片、音乐等。
  • param:对应动作需要的参数,如 qqfile 等。
  • value:参数所对应的值,如 AT 的 QQ 号。

示例

例如,要 AT 一个 QQ 号为 123456 的用户,可以这样写:

[CQ:at,qq=123456] Hello!
+

他会被解析为:

@小明 Hello!
+

转义

CQ 码由 [] 并以 , 分隔的多个部分组成,因此如果要在 CQ 码中使用这些字符,需要进行转义。

原字符转义字符
&&amp;
[&#91;
]&#93;
,&#44;

消息段

消息段是新一代的消息格式,采用 JSON 格式。

格式

消息段是一个 JSON 对象,以下是一个消息段的基本格式:

{
+  "type": "text", // 消息段类型
+  "data": {
+    // 消息段数据/参数
+    "text": "Hello!"
+  }
+}
+

示例

例如,要 AT 一个 QQ 号为 123456 的用户,可以这样写:

{
+  "type": "at",
+  "data": {
+    "qq": 123456
+  }
+}
+

他会被解析为:

@小明
+

组合

消息段可以组合在一起,形成一个消息。

[
+  {
+    "type": "at",
+    "data": {
+      "qq": 123456
+    }
+  },
+  {
+    "type": "text",
+    "data": {
+      "text": " Hello!"
+    }
+  }
+]
+

以上消息段会被解析为:

@小明 Hello!
+
+ + + diff --git a/message/index.html b/message/index.html new file mode 100644 index 00000000..a4825aa1 --- /dev/null +++ b/message/index.html @@ -0,0 +1,40 @@ + + + + + + + + 消息 | OpenShamrock + + + + + + +
跳至主要內容

消息

小于 1 分钟

+ + + diff --git a/message/media.html b/message/media.html new file mode 100644 index 00000000..df72710d --- /dev/null +++ b/message/media.html @@ -0,0 +1,61 @@ + + + + + + + + 媒体消息 | OpenShamrock + + + + + + +
跳至主要內容

媒体消息

大约 1 分钟

提示

对于下述消息类型, 涉及 文件地址 的参数规则如下:

  • 可以是本地文件路径, 以 file:// 开头。
  • 可以是 http(s) 链接, 以 http://https:// 开头。
  • 可以是 base64 编码的数据, 但是必须以 base64:// 开头。

图片

参数

字段类型必填说明
filestring图片文件地址
urlstring图片链接地址
typestringx图片类型, 分为show, flash, original
subTypeint32x图片子类型
[CQ:image,file=file:///sdcard/Pictures/shamrock.png]
+

图片子类型

value说明
0正常图片
1表情包, 在客户端会被分类到表情包图片并缩放显示
2热图
3斗图
4智图?
7贴图
8自拍
9贴图广告?
10有待测试
13热搜图

语音

参数

字段类型必填说明
filestring×语音文件地址
urlstring语音链接地址
magicbool×是否为魔法语音
[CQ:record,file=file:///sdcard/Music/shamrock.mp3]
+

注意

发送语音消息需要安装语音引擎,可以在 这里 查看。

视频

参数

字段类型必填说明
filestring×视频文件地址
[CQ:video,file=file:///sdcard/Movies/shamrock.mp4]
+
+ + + diff --git a/message/normal.html b/message/normal.html new file mode 100644 index 00000000..c1ffefdf --- /dev/null +++ b/message/normal.html @@ -0,0 +1,70 @@ + + + + + + + + 常规消息 | OpenShamrock + + + + + + +
跳至主要內容

常规消息

小于 1 分钟

AT 某人

参数

提示

qq 字段为 "0""all" 时, 表示 AT 全体成员。

字段类型必填说明
qqstringQQ 号

注意

将在未来实现 qq 字段为 onlineadmin 时的功能。

[CQ:at,qq=123456]
+

表情

参数

字段类型必填说明
idint表情 ID
bigboolX是否是大表情

提示

表情 ID 可以在 这里open in new window 查看。

[CQ:face,id=351,big=true]
+

弹射表情

参数

字段类型必填说明
idint表情 ID
countint数量

提示

表情 ID 可以在 这里open in new window 查看。

[CQ:bubble_face,id=351,count=114514]
+

回复

参数

字段类型必填说明
idint消息 ID
[CQ:reply,id=1]
+
+ + + diff --git a/message/special.html b/message/special.html new file mode 100644 index 00000000..0af311f8 --- /dev/null +++ b/message/special.html @@ -0,0 +1,141 @@ + + + + + + + + 特殊消息 | OpenShamrock + + + + + + +
跳至主要內容

特殊消息

大约 2 分钟

篮球

参数

字段类型必填说明
idintx5 没中, 4 擦边没中, 3 卡框, 2 擦边中, 1 正中
[CQ:basketball,id=1]
+

新猜拳

参数

字段类型必填说明
idintx锤 3 剪 2 布 1
[CQ:new_rps,id=1]
+

新骰子

参数

字段类型必填说明
idintx点数 ID
[CQ:new_dice,id=1]
+

骰子 (NTQQ废弃)

[CQ:dice]
+

剪刀石头布 (NTQQ废弃)

[CQ:rps]
+

戳一戳

注意

Shamrock 对于戳一戳的定义与 go-cqhttp 不同。

参数

字段类型必填说明
typeint戳一戳类型
idint戳一戳 ID
strengthint戳一戳强度(1-5 默认1)
[CQ:poke,type=1,id=10000]
+

戳一戳(双击头像)

参数

字段类型必填说明
idintQQ号
[CQ:touch,id=123456]
+

音乐

参数

字段类型必填说明
typestring音乐类型(qq/163)
idint音乐 ID
[CQ:music,type=qq,id=123456]
+

音乐(自定义)

参数

字段类型必填说明
typestring音乐类型(自定义请使用 custom
urlstring跳转链接
audiostring音乐音频链接
titlestring标题
singerstring歌手
imagestring封面图片链接
[CQ:music,type=custom,url=https://example.com,audio=https://example.com/music.mp3,title=Music,singer=Music,image=https://example.com/image.jpg]
+

天气

参数

字段类型必填说明
citystring城市名称
codestring城市代码
[CQ:weather,city=上海]
+

位置

参数

字段类型必填说明
latfloat纬度
lonfloat经度
titlestring×标题
contentstring×内容
[CQ:location,lat=39.915168,lon=116.403875]
+

链接分享

参数

字段类型必填说明
urlstring链接地址
titlestring×标题
contentstring×内容
imagestring×图片链接
filestring×文件链接
[CQ:share,url=https://example.com,title=Example,content=Example,image=https://example.com/image.jpg,file=https://example.com/file.zip]
+

礼物

参数

字段类型必填说明
qqintQQ 号
idint礼物 ID
[CQ:gift,qq=123456,id=10000]
+
+ + + diff --git a/search-pro.worker.js b/search-pro.worker.js new file mode 100644 index 00000000..c26e9116 --- /dev/null +++ b/search-pro.worker.js @@ -0,0 +1,2 @@ +const nt="ENTRIES",V="KEYS",T="VALUES",F="";class D{set;_type;_path;constructor(t,s){const n=t._tree,o=Array.from(n.keys());this.set=t,this._type=s,this._path=o.length>0?[{node:n,keys:o}]:[]}next(){const t=this.dive();return this.backtrack(),t}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:t,keys:s}=E(this._path);if(E(s)===F)return{done:!1,value:this.result()};const n=t.get(E(s));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const t=E(this._path).keys;t.pop(),!(t.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:t})=>E(t)).filter(t=>t!==F).join("")}value(){return E(this._path).node.get(F)}result(){switch(this._type){case T:return this.value();case V:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const E=e=>e[e.length-1],ot=(e,t,s)=>{const n=new Map;if(t===void 0)return n;const o=t.length+1,u=o+s,i=new Uint8Array(u*o).fill(s+1);for(let r=0;r{const d=u*i;t:for(const l of e.keys())if(l===F){const a=o[d-1];a<=s&&n.set(r,[e.get(l),a])}else{let a=u;for(let h=0;hs)continue t}W(e.get(l),t,s,n,o,a,i,r+l)}};class C{_tree;_prefix;_size=void 0;constructor(t=new Map,s=""){this._tree=t,this._prefix=s}atPrefix(t){if(!t.startsWith(this._prefix))throw new Error("Mismatched prefix");const[s,n]=x(this._tree,t.slice(this._prefix.length));if(s===void 0){const[o,u]=O(n);for(const i of o.keys())if(i!==F&&i.startsWith(u)){const r=new Map;return r.set(i.slice(u.length),o.get(i)),new C(r,t)}}return new C(s,t)}clear(){this._size=void 0,this._tree.clear()}delete(t){return this._size=void 0,ut(this._tree,t)}entries(){return new D(this,nt)}forEach(t){for(const[s,n]of this)t(s,n,this)}fuzzyGet(t,s){return ot(this._tree,t,s)}get(t){const s=I(this._tree,t);return s!==void 0?s.get(F):void 0}has(t){const s=I(this._tree,t);return s!==void 0&&s.has(F)}keys(){return new D(this,V)}set(t,s){if(typeof t!="string")throw new Error("key must be a string");return this._size=void 0,M(this._tree,t).set(F,s),this}get size(){if(this._size)return this._size;this._size=0;const t=this.entries();for(;!t.next().done;)this._size+=1;return this._size}update(t,s){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;const n=M(this._tree,t);return n.set(F,s(n.get(F))),this}fetch(t,s){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;const n=M(this._tree,t);let o=n.get(F);return o===void 0&&n.set(F,o=s()),o}values(){return new D(this,T)}[Symbol.iterator](){return this.entries()}static from(t){const s=new C;for(const[n,o]of t)s.set(n,o);return s}static fromObject(t){return C.from(Object.entries(t))}}const x=(e,t,s=[])=>{if(t.length===0||e==null)return[e,s];for(const n of e.keys())if(n!==F&&t.startsWith(n))return s.push([e,n]),x(e.get(n),t.slice(n.length),s);return s.push([e,t]),x(void 0,"",s)},I=(e,t)=>{if(t.length===0||e==null)return e;for(const s of e.keys())if(s!==F&&t.startsWith(s))return I(e.get(s),t.slice(s.length))},M=(e,t)=>{const s=t.length;t:for(let n=0;e&&n{const[s,n]=x(e,t);if(s!==void 0){if(s.delete(F),s.size===0)R(n);else if(s.size===1){const[o,u]=s.entries().next().value;$(n,o,u)}}},R=e=>{if(e.length===0)return;const[t,s]=O(e);if(t.delete(s),t.size===0)R(e.slice(0,-1));else if(t.size===1){const[n,o]=t.entries().next().value;n!==F&&$(e.slice(0,-1),n,o)}},$=(e,t,s)=>{if(e.length===0)return;const[n,o]=O(e);n.set(o+t,s),n.delete(o)},O=e=>e[e.length-1],it=(e,t)=>{const s=e._idToShortId.get(t);if(s!=null)return e._storedFields.get(s)},rt=/[\n\r -#%-*,-/:;?@[-\]_{}\u00A0\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u1680\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2000-\u200A\u2010-\u2029\u202F-\u2043\u2045-\u2051\u2053-\u205F\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u3000-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]+/u,S="or",q="and",ct="and_not",lt=(e,t)=>{e.includes(t)||e.push(t)},P=(e,t)=>{for(const s of t)e.includes(s)||e.push(s)},G=({score:e},{score:t})=>t-e,ht=()=>new Map,k=e=>{const t=new Map;for(const s of Object.keys(e))t.set(parseInt(s,10),e[s]);return t},N=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0,dt={[S]:(e,t)=>{for(const s of t.keys()){const n=e.get(s);if(n==null)e.set(s,t.get(s));else{const{score:o,terms:u,match:i}=t.get(s);n.score=n.score+o,n.match=Object.assign(n.match,i),P(n.terms,u)}}return e},[q]:(e,t)=>{const s=new Map;for(const n of t.keys()){const o=e.get(n);if(o==null)continue;const{score:u,terms:i,match:r}=t.get(n);P(o.terms,i),s.set(n,{score:o.score+u,terms:o.terms,match:Object.assign(o.match,r)})}return s},[ct]:(e,t)=>{for(const s of t.keys())e.delete(s);return e}},at=(e,t,s,n,o,u)=>{const{k:i,b:r,d}=u;return Math.log(1+(s-t+.5)/(t+.5))*(d+e*(i+1)/(e+i*(1-r+r*n/o)))},ft=e=>(t,s,n)=>{const o=typeof e.fuzzy=="function"?e.fuzzy(t,s,n):e.fuzzy||!1,u=typeof e.prefix=="function"?e.prefix(t,s,n):e.prefix===!0;return{term:t,fuzzy:o,prefix:u}},H=(e,t,s,n)=>{for(const o of Object.keys(e._fieldIds))if(e._fieldIds[o]===s){e._options.logger("warn",`SlimSearch: document with ID ${e._documentIds.get(t)} has changed before removal: term "${n}" was not present in field "${o}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}},gt=(e,t,s,n)=>{if(!e._index.has(n)){H(e,s,t,n);return}const o=e._index.fetch(n,ht),u=o.get(t);u==null||u.get(s)==null?H(e,s,t,n):u.get(s)<=1?u.size<=1?o.delete(t):u.delete(s):u.set(s,u.get(s)-1),e._index.get(n).size===0&&e._index.delete(n)},mt={k:1.2,b:.7,d:.5},pt={idField:"id",extractField:(e,t)=>e[t],tokenize:e=>e.split(rt),processTerm:e=>e.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(e,t)=>{typeof(console==null?void 0:console[e])=="function"&&console[e](t)},autoVacuum:!0},J={combineWith:S,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:mt},Ft={combineWith:q,prefix:(e,t,s)=>t===s.length-1},_t={batchSize:1e3,batchWait:10},U={minDirtFactor:.1,minDirtCount:20},yt={..._t,...U},Y=(e,t=S)=>{if(e.length===0)return new Map;const s=t.toLowerCase();return e.reduce(dt[s])||new Map},B=(e,t,s,n,o,u,i,r,d=new Map)=>{if(o==null)return d;for(const l of Object.keys(u)){const a=u[l],h=e._fieldIds[l],m=o.get(h);if(m==null)continue;let p=m.size;const f=e._avgFieldLength[h];for(const c of m.keys()){if(!e._documentIds.has(c)){gt(e,h,c,s),p-=1;continue}const g=i?i(e._documentIds.get(c),s,e._storedFields.get(c)):1;if(!g)continue;const _=m.get(c),y=e._fieldLength.get(c)[h],b=at(_,p,e._documentCount,y,f,r),z=n*a*g*b,A=d.get(c);if(A){A.score+=z,lt(A.terms,t);const w=N(A.match,s);w?w.push(l):A.match[s]=[l]}else d.set(c,{score:z,terms:[t],match:{[s]:[l]}})}}return d},At=(e,t,s)=>{const n={...e._options.searchOptions,...s},o=(n.fields||e._options.fields).reduce((c,g)=>({...c,[g]:N(n.boost,g)||1}),{}),{boostDocument:u,weights:i,maxFuzzy:r,bm25:d}=n,{fuzzy:l,prefix:a}={...J.weights,...i},h=e._index.get(t.term),m=B(e,t.term,t.term,1,h,o,u,d);let p,f;if(t.prefix&&(p=e._index.atPrefix(t.term)),t.fuzzy){const c=t.fuzzy===!0?.2:t.fuzzy,g=c<1?Math.min(r,Math.round(t.term.length*c)):c;g&&(f=e._index.fuzzyGet(t.term,g))}if(p)for(const[c,g]of p){const _=c.length-t.term.length;if(!_)continue;f==null||f.delete(c);const y=a*c.length/(c.length+.3*_);B(e,t.term,c,y,g,o,u,d,m)}if(f)for(const c of f.keys()){const[g,_]=f.get(c);if(!_)continue;const y=l*c.length/(c.length+_);B(e,t.term,c,y,g,o,u,d,m)}return m},X=(e,t,s={})=>{if(typeof t!="string"){const a={...s,...t,queries:void 0},h=t.queries.map(m=>X(e,m,a));return Y(h,a.combineWith)}const{tokenize:n,processTerm:o,searchOptions:u}=e._options,i={tokenize:n,processTerm:o,...u,...s},{tokenize:r,processTerm:d}=i,l=r(t).flatMap(a=>d(a)).filter(a=>!!a).map(ft(i)).map(a=>At(e,a,i));return Y(l,i.combineWith)},K=(e,t,s={})=>{const n=X(e,t,s),o=[];for(const[u,{score:i,terms:r,match:d}]of n){const l=r.length,a={id:e._documentIds.get(u),score:i*l,terms:Object.keys(d),match:d};Object.assign(a,e._storedFields.get(u)),(s.filter==null||s.filter(a))&&o.push(a)}return o.sort(G),o},Ct=(e,t,s={})=>{s={...e._options.autoSuggestOptions,...s};const n=new Map;for(const{score:u,terms:i}of K(e,t,s)){const r=i.join(" "),d=n.get(r);d!=null?(d.score+=u,d.count+=1):n.set(r,{score:u,terms:i,count:1})}const o=[];for(const[u,{score:i,terms:r,count:d}]of n)o.push({suggestion:u,terms:r,score:i/d});return o.sort(G),o};class Et{_options;_index;_documentCount;_documentIds;_idToShortId;_fieldIds;_fieldLength;_avgFieldLength;_nextId;_storedFields;_dirtCount;_currentVacuum;_enqueuedVacuum;_enqueuedVacuumConditions;constructor(t){if((t==null?void 0:t.fields)==null)throw new Error('SlimSearch: option "fields" must be provided');const s=t.autoVacuum==null||t.autoVacuum===!0?yt:t.autoVacuum;this._options={...pt,...t,autoVacuum:s,searchOptions:{...J,...t.searchOptions||{}},autoSuggestOptions:{...Ft,...t.autoSuggestOptions||{}}},this._index=new C,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=U,this.addFields(this._options.fields)}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}get documentCount(){return this._documentCount}get termCount(){return this._index.size}toJSON(){const t=[];for(const[s,n]of this._index){const o={};for(const[u,i]of n)o[u]=Object.fromEntries(i);t.push([s,o])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:t,serializationVersion:2}}addFields(t){for(let s=0;s{if(l!==1&&l!==2)throw new Error("SlimSearch: cannot deserialize an index created with an incompatible version");const h=new Et(a);h._documentCount=t,h._nextId=s,h._documentIds=k(n),h._idToShortId=new Map,h._fieldIds=o,h._fieldLength=k(u),h._avgFieldLength=i,h._storedFields=k(r),h._dirtCount=d||0,h._index=new C;for(const[m,p]of h._documentIds)h._idToShortId.set(p,m);for(const[m,p]of e){const f=new Map;for(const c of Object.keys(p)){let g=p[c];l===1&&(g=g.ds),f.set(parseInt(c,10),k(g))}h._index.set(m,f)}return h},Q=Object.entries,wt=Object.fromEntries,j=(e,t)=>{const s=e.toLowerCase(),n=t.toLowerCase(),o=[];let u=0,i=0;const r=(l,a=!1)=>{let h="";i===0?h=l.length>20?`… ${l.slice(-20)}`:l:a?h=l.length+i>100?`${l.slice(0,100-i)}… `:l:h=l.length>20?`${l.slice(0,20)} … ${l.slice(-20)}`:l,h&&o.push(h),i+=h.length,a||(o.push(["mark",t]),i+=t.length,i>=100&&o.push(" …"))};let d=s.indexOf(n,u);if(d===-1)return null;for(;d>=0;){const l=d+n.length;if(r(e.slice(u,d)),u=l,i>100)break;d=s.indexOf(n,u)}return i<100&&r(e.slice(u),!0),o},Z=/[\u4e00-\u9fa5]/g,tt=(e={})=>({fuzzy:.2,prefix:!0,processTerm:t=>{const s=t.match(Z)||[],n=t.replace(Z,"").toLowerCase();return n?[n,...s]:[...s]},...e}),xt=(e,t)=>t.contents.reduce((s,[,n])=>s+n,0)-e.contents.reduce((s,[,n])=>s+n,0),kt=(e,t)=>Math.max(...t.contents.map(([,s])=>s))-Math.max(...e.contents.map(([,s])=>s)),et=(e,t,s={})=>{const n={};return K(t,e,tt({boost:{h:2,t:1,c:4},...s})).forEach(o=>{const{id:u,terms:i,score:r}=o,d=u.includes("@"),l=u.includes("#"),[a,h]=u.split(/[#@]/),m=i.sort((f,c)=>f.length-c.length).filter((f,c)=>i.slice(c+1).every(g=>!g.includes(f))),{contents:p}=n[a]??={title:"",contents:[]};if(d)p.push([{type:"customField",key:a,index:h,display:m.map(f=>o.c.map(c=>j(c,f))).flat().filter(f=>f!==null)},r]);else{const f=m.map(c=>j(o.h,c)).filter(c=>c!==null);if(f.length&&p.push([{type:l?"heading":"title",key:a,...l&&{anchor:h},display:f},r]),"t"in o)for(const c of o.t){const g=m.map(_=>j(c,_)).filter(_=>_!==null);g.length&&p.push([{type:"text",key:a,...l&&{anchor:h},display:g},r])}}}),Q(n).sort(([,o],[,u])=>"max"==="total"?xt(o,u):kt(o,u)).map(([o,{title:u,contents:i}])=>{if(!u){const r=it(t,o);r&&(u=r.h)}return{title:u,contents:i.map(([r])=>r)}})},st=(e,t,s={})=>Ct(t,e,tt(s)).map(({suggestion:n})=>n),v=wt(Q(JSON.parse("{\"/\":{\"documentCount\":595,\"nextId\":595,\"documentIds\":{\"0\":\"v-638c1d18\",\"1\":\"v-638c1d18#目录\",\"2\":\"v-fc42014a\",\"3\":\"v-fc42014a#安装-silk-语音引擎\",\"4\":\"v-744497ce\",\"5\":\"v-744497ce#目录\",\"6\":\"v-ba4144cc\",\"7\":\"v-ba4144cc#获取登录号信息\",\"8\":\"v-ba4144cc#api-端点\",\"9\":\"v-ba4144cc#参数\",\"10\":\"v-ba4144cc#响应\",\"11\":\"v-ba4144cc#设置-qq-个人资料\",\"12\":\"v-ba4144cc#api-端点-1\",\"13\":\"v-ba4144cc#参数-1\",\"14\":\"v-ba4144cc#响应-1\",\"15\":\"v-ba4144cc#获取在线机型\",\"16\":\"v-ba4144cc#api-端点-2\",\"17\":\"v-ba4144cc#参数-2\",\"18\":\"v-ba4144cc#响应-2\",\"19\":\"v-ba4144cc#modeldetail\",\"20\":\"v-ba4144cc#设置在线机型\",\"21\":\"v-ba4144cc#api-端点-3\",\"22\":\"v-ba4144cc#参数-3\",\"23\":\"v-ba4144cc#响应-3\",\"24\":\"v-ba4144cc#获取当前账号在线客户端列表\",\"25\":\"v-ba4144cc#api-端点-4\",\"26\":\"v-ba4144cc#参数-4\",\"27\":\"v-ba4144cc#响应-4\",\"28\":\"v-ba4144cc#device\",\"29\":\"v-a405f8f2\",\"30\":\"v-a405f8f2#获取陌生人信息\",\"31\":\"v-a405f8f2#api-端点\",\"32\":\"v-a405f8f2#参数\",\"33\":\"v-a405f8f2#响应\",\"34\":\"v-a405f8f2#获取好友列表\",\"35\":\"v-a405f8f2#api-端点-1\",\"36\":\"v-a405f8f2#参数-1\",\"37\":\"v-a405f8f2#响应-1\",\"38\":\"v-a405f8f2#获取单向好友列表\",\"39\":\"v-a405f8f2#api-端点-2\",\"40\":\"v-a405f8f2#参数-2\",\"41\":\"v-a405f8f2#响应-2\",\"42\":\"v-a405f8f2#获取群信息\",\"43\":\"v-a405f8f2#api-端点-3\",\"44\":\"v-a405f8f2#参数-3\",\"45\":\"v-a405f8f2#响应-3\",\"46\":\"v-a405f8f2#获取群列表\",\"47\":\"v-a405f8f2#api-端点-4\",\"48\":\"v-a405f8f2#参数-4\",\"49\":\"v-a405f8f2#响应-4\",\"50\":\"v-a405f8f2#获取群成员信息\",\"51\":\"v-a405f8f2#api-端点-5\",\"52\":\"v-a405f8f2#参数-5\",\"53\":\"v-a405f8f2#响应-5\",\"54\":\"v-a405f8f2#获取群成员列表\",\"55\":\"v-a405f8f2#api-端点-6\",\"56\":\"v-a405f8f2#参数-6\",\"57\":\"v-a405f8f2#响应-6\",\"58\":\"v-a405f8f2#获取群荣誉信息\",\"59\":\"v-a405f8f2#api-端点-7\",\"60\":\"v-a405f8f2#参数-7\",\"61\":\"v-a405f8f2#响应-7\",\"62\":\"v-a405f8f2#honorinfo\",\"63\":\"v-a405f8f2#获取群系统消息\",\"64\":\"v-a405f8f2#api-端点-8\",\"65\":\"v-a405f8f2#响应-8\",\"66\":\"v-a405f8f2#invitedrequest\",\"67\":\"v-a405f8f2#joinrequest\",\"68\":\"v-a405f8f2#获取好友系统消息\",\"69\":\"v-a405f8f2#api-端点-9\",\"70\":\"v-a405f8f2#响应-9\",\"71\":\"v-a405f8f2#获取精华消息列表\",\"72\":\"v-a405f8f2#api-端点-10\",\"73\":\"v-a405f8f2#参数-8\",\"74\":\"v-a405f8f2#响应-10\",\"75\":\"v-a405f8f2#qq是否在黑名单内\",\"76\":\"v-a405f8f2#api-端点-11\",\"77\":\"v-a405f8f2#参数-9\",\"78\":\"v-a405f8f2#响应-11\",\"79\":\"v-e0692e30\",\"80\":\"v-e0692e30#处理加好友请求\",\"81\":\"v-e0692e30#api-端点\",\"82\":\"v-e0692e30#参数\",\"83\":\"v-e0692e30#响应\",\"84\":\"v-e0692e30#处理加群请求-邀请\",\"85\":\"v-e0692e30#api-端点-1\",\"86\":\"v-e0692e30#参数-1\",\"87\":\"v-e0692e30#响应-1\",\"88\":\"v-504f4f28\",\"89\":\"v-504f4f28#获取收藏列表\",\"90\":\"v-504f4f28#api端点\",\"91\":\"v-504f4f28#参数\",\"92\":\"v-504f4f28#响应\",\"93\":\"v-504f4f28#获取指定收藏的内容\",\"94\":\"v-504f4f28#api端点-1\",\"95\":\"v-504f4f28#参数-1\",\"96\":\"v-504f4f28#响应-1\",\"97\":\"v-504f4f28#添加文本收藏\",\"98\":\"v-504f4f28#api端点-2\",\"99\":\"v-504f4f28#参数-2\",\"100\":\"v-504f4f28#响应-2\",\"101\":\"v-504f4f28#添加图片收藏\",\"102\":\"v-504f4f28#api端点-3\",\"103\":\"v-504f4f28#参数-3\",\"104\":\"v-504f4f28#响应-3\",\"105\":\"v-a83cae62\",\"106\":\"v-a83cae62#上传私聊文件\",\"107\":\"v-a83cae62#api-端点\",\"108\":\"v-a83cae62#参数\",\"109\":\"v-a83cae62#响应\",\"110\":\"v-a83cae62#上传群文件\",\"111\":\"v-a83cae62#api-端点-1\",\"112\":\"v-a83cae62#参数-1\",\"113\":\"v-a83cae62#响应-1\",\"114\":\"v-a83cae62#删除群文件\",\"115\":\"v-a83cae62#api-端点-2\",\"116\":\"v-a83cae62#参数-2\",\"117\":\"v-a83cae62#创建群文件文件夹\",\"118\":\"v-a83cae62#api-端点-3\",\"119\":\"v-a83cae62#参数-3\",\"120\":\"v-a83cae62#响应示例\",\"121\":\"v-a83cae62#重命名群文件夹\",\"122\":\"v-a83cae62#api-端点-4\",\"123\":\"v-a83cae62#响应解释\",\"124\":\"v-a83cae62#删除群文件文件夹\",\"125\":\"v-a83cae62#api-端点-5\",\"126\":\"v-a83cae62#参数-4\",\"127\":\"v-a83cae62#响应解释-1\",\"128\":\"v-a83cae62#获取群文件系统信息\",\"129\":\"v-a83cae62#api-端点-6\",\"130\":\"v-a83cae62#参数-5\",\"131\":\"v-a83cae62#响应-2\",\"132\":\"v-a83cae62#获取群根目录文件列表\",\"133\":\"v-a83cae62#api-端点-7\",\"134\":\"v-a83cae62#参数-6\",\"135\":\"v-a83cae62#响应-3\",\"136\":\"v-a83cae62#file\",\"137\":\"v-a83cae62#folder\",\"138\":\"v-a83cae62#获取群子目录文件列表\",\"139\":\"v-a83cae62#api-端点-8\",\"140\":\"v-a83cae62#参数-7\",\"141\":\"v-a83cae62#响应-4\",\"142\":\"v-a83cae62#获取群文件资源链接\",\"143\":\"v-a83cae62#api-端点-9\",\"144\":\"v-a83cae62#参数-8\",\"145\":\"v-a83cae62#响应-5\",\"146\":\"v-23159ff0\",\"147\":\"v-23159ff0#设置群名\",\"148\":\"v-23159ff0#api-端点\",\"149\":\"v-23159ff0#参数\",\"150\":\"v-23159ff0#响应\",\"151\":\"v-23159ff0#设置群头像\",\"152\":\"v-23159ff0#api-端点-1\",\"153\":\"v-23159ff0#参数-1\",\"154\":\"v-23159ff0#设置群管理员\",\"155\":\"v-23159ff0#api-端点-2\",\"156\":\"v-23159ff0#参数-2\",\"157\":\"v-23159ff0#响应-1\",\"158\":\"v-23159ff0#设置群名片\",\"159\":\"v-23159ff0#api-端点-3\",\"160\":\"v-23159ff0#参数-3\",\"161\":\"v-23159ff0#设置群聊备注\",\"162\":\"v-23159ff0#api-端点-4\",\"163\":\"v-23159ff0#参数-4\",\"164\":\"v-23159ff0#设置群组专属头衔\",\"165\":\"v-23159ff0#api-端点-5\",\"166\":\"v-23159ff0#参数-5\",\"167\":\"v-23159ff0#响应-2\",\"168\":\"v-23159ff0#群单人禁言\",\"169\":\"v-23159ff0#api-端点-6\",\"170\":\"v-23159ff0#参数-6\",\"171\":\"v-23159ff0#响应-3\",\"172\":\"v-23159ff0#群全员禁言\",\"173\":\"v-23159ff0#api-端点-7\",\"174\":\"v-23159ff0#参数-7\",\"175\":\"v-23159ff0#响应-4\",\"176\":\"v-23159ff0#设置精华消息\",\"177\":\"v-23159ff0#api-端点-8\",\"178\":\"v-23159ff0#参数-8\",\"179\":\"v-23159ff0#移出精华消息\",\"180\":\"v-23159ff0#api-端点-9\",\"181\":\"v-23159ff0#参数-9\",\"182\":\"v-23159ff0#群打卡\",\"183\":\"v-23159ff0#api-端点-10\",\"184\":\"v-23159ff0#参数-10\",\"185\":\"v-23159ff0#响应-5\",\"186\":\"v-23159ff0#发送群公告\",\"187\":\"v-23159ff0#api-端点-11\",\"188\":\"v-23159ff0#参数-11\",\"189\":\"v-23159ff0#响应-6\",\"190\":\"v-23159ff0#获取群公告\",\"191\":\"v-23159ff0#api-端点-12\",\"192\":\"v-23159ff0#参数-12\",\"193\":\"v-23159ff0#响应数据\",\"194\":\"v-23159ff0#message\",\"195\":\"v-23159ff0#images\",\"196\":\"v-23159ff0#群组踢人\",\"197\":\"v-23159ff0#api-端点-13\",\"198\":\"v-23159ff0#参数-13\",\"199\":\"v-23159ff0#响应-7\",\"200\":\"v-23159ff0#退出群组\",\"201\":\"v-23159ff0#api-端点-14\",\"202\":\"v-23159ff0#参数-14\",\"203\":\"v-23159ff0#响应-8\",\"204\":\"v-23159ff0#群戳一戳\",\"205\":\"v-23159ff0#api-端点-15\",\"206\":\"v-23159ff0#参数-15\",\"207\":\"v-23159ff0#响应-9\",\"208\":\"v-23159ff0#获取被禁言的群成员列表\",\"209\":\"v-23159ff0#api端点\",\"210\":\"v-23159ff0#参数-16\",\"211\":\"v-23159ff0#响应-10\",\"212\":\"v-23159ff0#获取群-全体成员-剩余次数\",\"213\":\"v-23159ff0#api端点-1\",\"214\":\"v-23159ff0#参数-17\",\"215\":\"v-23159ff0#响应-11\",\"216\":\"v-23159ff0#设置消息底部评论小表情\",\"217\":\"v-23159ff0#api-端点-16\",\"218\":\"v-23159ff0#参数-18\",\"219\":\"v-23159ff0#响应-12\",\"220\":\"v-4b693314\",\"221\":\"v-4b693314#获取频道系统内bot的资料\",\"222\":\"v-4b693314#api-端点\",\"223\":\"v-4b693314#响应示例\",\"224\":\"v-4b693314#获取频道列表\",\"225\":\"v-4b693314#api-端点-1\",\"226\":\"v-4b693314#响应示例-1\",\"227\":\"v-4b693314#通过访客获取频道元数据\",\"228\":\"v-4b693314#api-端点-2\",\"229\":\"v-4b693314#参数\",\"230\":\"v-4b693314#响应示例-2\",\"231\":\"v-4b693314#获取子频道列表\",\"232\":\"v-4b693314#api-端点-3\",\"233\":\"v-4b693314#参数-1\",\"234\":\"v-4b693314#响应示例-3\",\"235\":\"v-4b693314#已知子频道类型列表\",\"236\":\"v-4b693314#获取频道成员列表\",\"237\":\"v-4b693314#api-端点-4\",\"238\":\"v-4b693314#参数-2\",\"239\":\"v-4b693314#响应示例-4\",\"240\":\"v-4b693314#单独获取频道成员资料\",\"241\":\"v-4b693314#api-端点-5\",\"242\":\"v-4b693314#参数-3\",\"243\":\"v-4b693314#响应示例-5\",\"244\":\"v-4b693314#发送信息到子频道\",\"245\":\"v-4b693314#api-端点-6\",\"246\":\"v-4b693314#参数-4\",\"247\":\"v-4b693314#响应示例-6\",\"248\":\"v-4b693314#获取话题频道帖子\",\"249\":\"v-4b693314#获取频道帖子广场帖子\",\"250\":\"v-4b693314#api-端点-7\",\"251\":\"v-4b693314#参数-5\",\"252\":\"v-4b693314#响应示例-7\",\"253\":\"v-4b693314#获取频道角色列表\",\"254\":\"v-4b693314#api-端点-8\",\"255\":\"v-4b693314#参数-6\",\"256\":\"v-4b693314#响应示例-8\",\"257\":\"v-4b693314#获取频道消息\",\"258\":\"v-4b693314#删除频道角色\",\"259\":\"v-4b693314#api-端点-9\",\"260\":\"v-4b693314#参数-7\",\"261\":\"v-4b693314#响应\",\"262\":\"v-4b693314#设置用户在频道中的角色\",\"263\":\"v-4b693314#api端点\",\"264\":\"v-4b693314#参数-8\",\"265\":\"v-4b693314#修改频道角色\",\"266\":\"v-4b693314#api-端点-10\",\"267\":\"v-4b693314#参数-9\",\"268\":\"v-4b693314#响应-1\",\"269\":\"v-4b693314#创建频道角色\",\"270\":\"v-4b693314#api-端点-11\",\"271\":\"v-4b693314#参数-10\",\"272\":\"v-4b693314#响应-2\",\"273\":\"v-15298000\",\"274\":\"v-15298000#发送私聊消息\",\"275\":\"v-15298000#api-端点\",\"276\":\"v-15298000#参数\",\"277\":\"v-15298000#响应\",\"278\":\"v-15298000#发送群聊消息\",\"279\":\"v-15298000#api-端点-1\",\"280\":\"v-15298000#参数-1\",\"281\":\"v-15298000#响应-1\",\"282\":\"v-15298000#发送消息\",\"283\":\"v-15298000#api-端点-2\",\"284\":\"v-15298000#参数-2\",\"285\":\"v-15298000#响应-2\",\"286\":\"v-15298000#获取消息\",\"287\":\"v-15298000#api-端点-3\",\"288\":\"v-15298000#参数-3\",\"289\":\"v-15298000#响应-3\",\"290\":\"v-15298000#sender\",\"291\":\"v-15298000#撤回消息\",\"292\":\"v-15298000#api-端点-4\",\"293\":\"v-15298000#参数-4\",\"294\":\"v-15298000#响应-4\",\"295\":\"v-15298000#获取历史消息\",\"296\":\"v-15298000#api-端点-5\",\"297\":\"v-15298000#参数-5\",\"298\":\"v-15298000#响应-5\",\"299\":\"v-15298000#message\",\"300\":\"v-15298000#获取群聊历史消息\",\"301\":\"v-15298000#api-端点-6\",\"302\":\"v-15298000#参数-6\",\"303\":\"v-15298000#响应-6\",\"304\":\"v-15298000#清除本地缓存消息\",\"305\":\"v-15298000#api-端点-7\",\"306\":\"v-15298000#参数-7\",\"307\":\"v-15298000#响应-7\",\"308\":\"v-15298000#获取合并转发消息内容\",\"309\":\"v-15298000#api-端点-8\",\"310\":\"v-15298000#参数-8\",\"311\":\"v-15298000#响应-8\",\"312\":\"v-15298000#发送群聊合并转发\",\"313\":\"v-15298000#api-端点-9\",\"314\":\"v-15298000#参数-9\",\"315\":\"v-15298000#响应-9\",\"316\":\"v-15298000#示例\",\"317\":\"v-15298000#发送私聊合并转发\",\"318\":\"v-15298000#api-端点-10\",\"319\":\"v-15298000#参数-10\",\"320\":\"v-15298000#响应-10\",\"321\":\"v-d1b14bd2\",\"322\":\"v-d1b14bd2#获取城市adcode\",\"323\":\"v-d1b14bd2#api-端点\",\"324\":\"v-d1b14bd2#参数\",\"325\":\"v-d1b14bd2#响应\",\"326\":\"v-d1b14bd2#获取天气\",\"327\":\"v-d1b14bd2#api-端点-1\",\"328\":\"v-d1b14bd2#参数-1\",\"329\":\"v-d1b14bd2#响应-1\",\"330\":\"v-d1b14bd2#实验-上传群图片\",\"331\":\"v-d1b14bd2#api-端点-2\",\"332\":\"v-d1b14bd2#请求类型\",\"333\":\"v-d1b14bd2#参数-2\",\"334\":\"v-d1b14bd2#获取-cookie\",\"335\":\"v-d1b14bd2#api-端点-3\",\"336\":\"v-d1b14bd2#参数-3\",\"337\":\"v-d1b14bd2#响应-2\",\"338\":\"v-d1b14bd2#获取-csrf-令牌\",\"339\":\"v-d1b14bd2#api-端点-4\",\"340\":\"v-d1b14bd2#参数-4\",\"341\":\"v-d1b14bd2#响应-3\",\"342\":\"v-d1b14bd2#获取cookie\",\"343\":\"v-d1b14bd2#api-端点-5\",\"344\":\"v-d1b14bd2#参数-5\",\"345\":\"v-d1b14bd2#响应-4\",\"346\":\"v-d1b14bd2#获取-cookie-与-csrf-令牌\",\"347\":\"v-d1b14bd2#api-端点-6\",\"348\":\"v-d1b14bd2#参数-6\",\"349\":\"v-d1b14bd2#响应-5\",\"350\":\"v-50f1df6c\",\"351\":\"v-50f1df6c#请求\",\"352\":\"v-50f1df6c#get-请求\",\"353\":\"v-50f1df6c#post-请求\",\"354\":\"v-50f1df6c#请求格式\",\"355\":\"v-50f1df6c#websocket-请求\",\"356\":\"v-50f1df6c#请求格式-1\",\"357\":\"v-50f1df6c#响应\",\"358\":\"v-50f1df6c#状态\",\"359\":\"v-d0532dbc\",\"360\":\"v-d0532dbc#获取图片\",\"361\":\"v-d0532dbc#api-端点\",\"362\":\"v-d0532dbc#参数\",\"363\":\"v-d0532dbc#响应\",\"364\":\"v-d0532dbc#检查是否可以发送图片\",\"365\":\"v-d0532dbc#api-端点-1\",\"366\":\"v-d0532dbc#参数-1\",\"367\":\"v-d0532dbc#响应-1\",\"368\":\"v-d0532dbc#图片-ocr\",\"369\":\"v-d0532dbc#api-端点-2\",\"370\":\"v-d0532dbc#参数-2\",\"371\":\"v-d0532dbc#响应-2\",\"372\":\"v-d0532dbc#textdetection\",\"373\":\"v-d0532dbc#获取语音\",\"374\":\"v-d0532dbc#api-端点-3\",\"375\":\"v-d0532dbc#参数-3\",\"376\":\"v-d0532dbc#响应-3\",\"377\":\"v-d0532dbc#检查是否可以发送语音\",\"378\":\"v-d0532dbc#api-端点-4\",\"379\":\"v-d0532dbc#参数-4\",\"380\":\"v-d0532dbc#响应-4\",\"381\":\"v-d0532dbc#api-端点-5\",\"382\":\"v-d0532dbc#参数-5\",\"383\":\"v-d0532dbc#响应-5\",\"384\":\"v-d0532dbc#获取文件\",\"385\":\"v-d0532dbc#获取视频\",\"386\":\"v-d0532dbc#获取缩略图\",\"387\":\"v-1f099f65\",\"388\":\"v-1f099f65#切换账号\",\"389\":\"v-1f099f65#api端点\",\"390\":\"v-1f099f65#参数\",\"391\":\"v-1f099f65#响应\",\"392\":\"v-1f099f65#上传文件到缓存目录-http\",\"393\":\"v-1f099f65#api-端点\",\"394\":\"v-1f099f65#参数-1\",\"395\":\"v-1f099f65#响应-1\",\"396\":\"v-1f099f65#上传文件到缓存目录-websocket-http\",\"397\":\"v-1f099f65#api-端点-1\",\"398\":\"v-1f099f65#参数-2\",\"399\":\"v-1f099f65#响应数据\",\"400\":\"v-1f099f65#让shamrock下载文件到缓存目录\",\"401\":\"v-1f099f65#api-端点-2\",\"402\":\"v-1f099f65#参数-3\",\"403\":\"v-1f099f65#headers为string时示例\",\"404\":\"v-1f099f65#headers为array时示例\",\"405\":\"v-1f099f65#响应-2\",\"406\":\"v-1f099f65#清除缓存\",\"407\":\"v-1f099f65#api-端点-3\",\"408\":\"v-1f099f65#参数-4\",\"409\":\"v-1f099f65#响应-3\",\"410\":\"v-1f099f65#获取手机电池信息\",\"411\":\"v-1f099f65#api-端点-4\",\"412\":\"v-1f099f65#响应-4\",\"413\":\"v-1f099f65#获取shamerock启动时间\",\"414\":\"v-1f099f65#api-端点-5\",\"415\":\"v-1f099f65#请求类型\",\"416\":\"v-1f099f65#响应-5\",\"417\":\"v-1f099f65#获取shamrock日志\",\"418\":\"v-1f099f65#api-端点-6\",\"419\":\"v-1f099f65#请求类型-1\",\"420\":\"v-1f099f65#参数-5\",\"421\":\"v-1f099f65#远程shell执行\",\"422\":\"v-1f099f65#请求类型-2\",\"423\":\"v-1f099f65#参数-6\",\"424\":\"v-1f099f65#关闭shamrock\",\"425\":\"v-1f099f65#api-端点-7\",\"426\":\"v-1f099f65#请求类型-3\",\"427\":\"v-1f099f65#响应-6\",\"428\":\"v-1f099f65#获取所有支持的动作\",\"429\":\"v-1f099f65#api-端点-8\",\"430\":\"v-1f099f65#响应-7\",\"431\":\"v-0e934be0\",\"432\":\"v-0e934be0#删除好友\",\"433\":\"v-0e934be0#api-端点\",\"434\":\"v-0e934be0#参数\",\"435\":\"v-0e934be0#响应\",\"436\":\"v-0e934be0#删除单向好友\",\"437\":\"v-0e934be0#api-端点-1\",\"438\":\"v-0e934be0#参数-1\",\"439\":\"v-0e934be0#响应-1\",\"440\":\"v-0e934be0#点赞资料卡\",\"441\":\"v-0e934be0#api-端点-2\",\"442\":\"v-0e934be0#参数-2\",\"443\":\"v-0e934be0#响应-2\",\"444\":\"v-7ca4f50e\",\"445\":\"v-7ca4f50e#目录\",\"446\":\"v-32977d7c\",\"447\":\"v-32977d7c#所有上报\",\"448\":\"v-32977d7c#事件类型\",\"449\":\"v-32977d7c#posttype\",\"450\":\"v-32977d7c#messagetype\",\"451\":\"v-32977d7c#messagesubtype\",\"452\":\"v-32977d7c#noticetype\",\"453\":\"v-32977d7c#noticenotifysubtype\",\"454\":\"v-32977d7c#requesttype\",\"455\":\"v-32977d7c#数据结构\",\"456\":\"v-32977d7c#messagesender\",\"457\":\"v-32977d7c#post-message-tempsource\",\"458\":\"v-70b00580\",\"459\":\"v-70b00580#消息事件\",\"460\":\"v-70b00580#私聊消息\",\"461\":\"v-70b00580#群消息\",\"462\":\"v-70b00580#私聊消息-1\",\"463\":\"v-70b00580#频道消息\",\"464\":\"v-70b00580#快速回复\",\"465\":\"v-70b00580#快速操作\",\"466\":\"v-386d2733\",\"467\":\"v-386d2733#私聊消息撤回\",\"468\":\"v-386d2733#群聊消息撤回\",\"469\":\"v-386d2733#群组成员增加\",\"470\":\"v-386d2733#群组成员减少\",\"471\":\"v-386d2733#群组管理员变动\",\"472\":\"v-386d2733#群文件上传\",\"473\":\"v-386d2733#群文件信息结构体\",\"474\":\"v-386d2733#私聊文件上传\",\"475\":\"v-386d2733#私聊文件信息结构体\",\"476\":\"v-386d2733#群禁言\",\"477\":\"v-386d2733#群成员名片变动\",\"478\":\"v-386d2733#好友添加\",\"479\":\"v-386d2733#收到离线文件\",\"480\":\"v-386d2733#文件信息\",\"481\":\"v-386d2733#精华消息\",\"482\":\"v-386d2733#客户端状态\",\"483\":\"v-386d2733#头像戳一戳\",\"484\":\"v-386d2733#pokedetail\",\"485\":\"v-386d2733#群红包运气王\",\"486\":\"v-386d2733#群荣誉变更\",\"487\":\"v-386d2733#群头衔变更\",\"488\":\"v-61fe5fb8\",\"489\":\"v-61fe5fb8#加好友请求\",\"490\":\"v-61fe5fb8#快速处理\",\"491\":\"v-61fe5fb8#加群请求-邀请\",\"492\":\"v-61fe5fb8#快速处理-1\",\"493\":\"v-fffb8e28\",\"494\":\"v-fffb8e28#目录\",\"495\":\"v-4f4ccb8f\",\"496\":\"v-4f4ccb8f#配置选项\",\"497\":\"v-4f4ccb8f#强制平板模式\",\"498\":\"v-4f4ccb8f#目录定义\",\"499\":\"v-4f4ccb8f#配置文件\",\"500\":\"v-4f4ccb8f#websocket认证方法\",\"501\":\"v-4f4ccb8f#数据目录\",\"502\":\"v-37e1c06f\",\"503\":\"v-37e1c06f#支持的qq版本\",\"504\":\"v-37e1c06f#反检测\",\"505\":\"v-37e1c06f#模拟器部署成功后电脑无法访问\",\"506\":\"v-37e1c06f#修改了配置文件-但没有生效\",\"507\":\"v-37e1c06f#某些事件-消息-操作不支持\",\"508\":\"v-37e1c06f#qq闪退-每隔一段时间-怎么办\",\"509\":\"v-37e1c06f#真机息屏状态-api会变慢-无响应\",\"510\":\"v-37e1c06f#模拟器部署-qq闪退\",\"511\":\"v-37e1c06f#模拟器部署-外部无法访问接口\",\"512\":\"v-37e1c06f#docker部署支持\",\"513\":\"v-37e1c06f#一定要保证shamrock主app在后台运行吗\",\"514\":\"v-37e1c06f#云手机支持哪些\",\"515\":\"v-37e1c06f#shamrock的日志怎么导出\",\"516\":\"v-fb0f0066\",\"517\":\"v-fb0f0066#下载\",\"518\":\"v-fb0f0066#稳定版本\",\"519\":\"v-fb0f0066#开发版本\",\"520\":\"v-fb0f0066#部署\",\"521\":\"v-fb0f0066#模拟器上部署\",\"522\":\"v-fb0f0066#magisk-lsposed\",\"523\":\"v-fb0f0066#lspatch\",\"524\":\"v-fb0f0066#在linux类服务器上部署-使用docker\",\"525\":\"v-fb0f0066#在pve上使用\",\"526\":\"v-fb0f0066#部署windows\",\"527\":\"v-fb0f0066#部署blissos\",\"528\":\"v-fb0f0066#在linux-kvm部署\",\"529\":\"v-fb0f0066#在wsa上部署\",\"530\":\"v-fb0f0066#有-xp-环境\",\"531\":\"v-fb0f0066#无-root-环境\",\"532\":\"v-fb0f0066#使用-lspatch\",\"533\":\"v-fb0f0066#使用-virtualxposed\",\"534\":\"v-fb0f0066#使用-太极\",\"535\":\"v-89c429fe\",\"536\":\"v-89c429fe#目录\",\"537\":\"v-75ed5c96\",\"538\":\"v-75ed5c96#合并转发\",\"539\":\"v-75ed5c96#合并转发-节点\",\"540\":\"v-75ed5c96#xml-消息\",\"541\":\"v-75ed5c96#json-消息\",\"542\":\"v-75ed5c96#参数\",\"543\":\"v-75ed5c96#文本转语音\",\"544\":\"v-e108f4be\",\"545\":\"v-e108f4be#cq-码\",\"546\":\"v-e108f4be#格式\",\"547\":\"v-e108f4be#示例\",\"548\":\"v-e108f4be#转义\",\"549\":\"v-e108f4be#消息段\",\"550\":\"v-e108f4be#格式-1\",\"551\":\"v-e108f4be#示例-1\",\"552\":\"v-e108f4be#组合\",\"553\":\"v-30c0fd36\",\"554\":\"v-30c0fd36#图片\",\"555\":\"v-30c0fd36#参数\",\"556\":\"v-30c0fd36#图片子类型\",\"557\":\"v-30c0fd36#语音\",\"558\":\"v-30c0fd36#参数-1\",\"559\":\"v-30c0fd36#视频\",\"560\":\"v-30c0fd36#参数-2\",\"561\":\"v-28fa56b1\",\"562\":\"v-28fa56b1#at-某人\",\"563\":\"v-28fa56b1#参数\",\"564\":\"v-28fa56b1#表情\",\"565\":\"v-28fa56b1#参数-1\",\"566\":\"v-28fa56b1#弹射表情\",\"567\":\"v-28fa56b1#参数-2\",\"568\":\"v-28fa56b1#回复\",\"569\":\"v-28fa56b1#参数-3\",\"570\":\"v-41fe057e\",\"571\":\"v-41fe057e#篮球\",\"572\":\"v-41fe057e#参数\",\"573\":\"v-41fe057e#新猜拳\",\"574\":\"v-41fe057e#参数-1\",\"575\":\"v-41fe057e#新骰子\",\"576\":\"v-41fe057e#参数-2\",\"577\":\"v-41fe057e#骰子-ntqq废弃\",\"578\":\"v-41fe057e#剪刀石头布-ntqq废弃\",\"579\":\"v-41fe057e#戳一戳\",\"580\":\"v-41fe057e#参数-3\",\"581\":\"v-41fe057e#戳一戳-双击头像\",\"582\":\"v-41fe057e#参数-4\",\"583\":\"v-41fe057e#音乐\",\"584\":\"v-41fe057e#参数-5\",\"585\":\"v-41fe057e#音乐-自定义\",\"586\":\"v-41fe057e#参数-6\",\"587\":\"v-41fe057e#天气\",\"588\":\"v-41fe057e#参数-7\",\"589\":\"v-41fe057e#位置\",\"590\":\"v-41fe057e#参数-8\",\"591\":\"v-41fe057e#链接分享\",\"592\":\"v-41fe057e#参数-9\",\"593\":\"v-41fe057e#礼物\",\"594\":\"v-41fe057e#参数-10\"},\"fieldIds\":{\"h\":0,\"t\":1,\"c\":2},\"fieldLength\":{\"0\":[1],\"1\":[1,1],\"2\":[1],\"3\":[3,36],\"4\":[1],\"5\":[1,13],\"6\":[1,7],\"7\":[1,4],\"8\":[2,4],\"9\":[1,3],\"10\":[1],\"11\":[3,4],\"12\":[2,4],\"13\":[1,28],\"14\":[1,3],\"15\":[1,4],\"16\":[2,4],\"17\":[1],\"18\":[1],\"19\":[1,11],\"20\":[1,4],\"21\":[2,4],\"22\":[1,10],\"23\":[1,5],\"24\":[1,2],\"25\":[2,4],\"26\":[1,7],\"27\":[1,6],\"28\":[1,13],\"29\":[1,7],\"30\":[1,2],\"31\":[2,4],\"32\":[1,10],\"33\":[1,6],\"34\":[1,2],\"35\":[2,4],\"36\":[1,7],\"37\":[1,6],\"38\":[1,2],\"39\":[2,5],\"40\":[1,4],\"41\":[1,17],\"42\":[1,2],\"43\":[2,4],\"44\":[1,9],\"45\":[1,6],\"46\":[1,2],\"47\":[2,4],\"48\":[1,4],\"49\":[1,6],\"50\":[1,2],\"51\":[2,5],\"52\":[1,12],\"53\":[1],\"54\":[1,2],\"55\":[2,5],\"56\":[1,9],\"57\":[1,6],\"58\":[1,2],\"59\":[2,5],\"60\":[1,9],\"61\":[1,24],\"62\":[1,20],\"63\":[1,2],\"64\":[2,5],\"65\":[1,14],\"66\":[1,27],\"67\":[1,27],\"68\":[1,2],\"69\":[2,5],\"70\":[1,6],\"71\":[1,2],\"72\":[2,5],\"73\":[1,7],\"74\":[1,27],\"75\":[1,3],\"76\":[2,4],\"77\":[1,9],\"78\":[1,6],\"79\":[1,7],\"80\":[1,2],\"81\":[2,5],\"82\":[1,17],\"83\":[1,5],\"84\":[2,3],\"85\":[2,5],\"86\":[1,26],\"87\":[1,5],\"88\":[2,6],\"89\":[1,1],\"90\":[1,7],\"91\":[1,15],\"92\":[1,30],\"93\":[1,1],\"94\":[1,7],\"95\":[1,8],\"96\":[1,9],\"97\":[1,1],\"98\":[1,7],\"99\":[1,9],\"100\":[1,9],\"101\":[1,1],\"102\":[1,7],\"103\":[1,9],\"104\":[1,9],\"105\":[1,7],\"106\":[1,6],\"107\":[2,4],\"108\":[1,21],\"109\":[1],\"110\":[1,6],\"111\":[2,4],\"112\":[1,21],\"113\":[1,4],\"114\":[1,2],\"115\":[2,4],\"116\":[1,20],\"117\":[1,3],\"118\":[2,5],\"119\":[1,10],\"120\":[1,28],\"121\":[1,2],\"122\":[2,14],\"123\":[1,2],\"124\":[1,2],\"125\":[2,4],\"126\":[1,13],\"127\":[1,2],\"128\":[1,2],\"129\":[2,6],\"130\":[1,7],\"131\":[1,15],\"132\":[1,2],\"133\":[2,5],\"134\":[1,7],\"135\":[1,9],\"136\":[1,35],\"137\":[1,23],\"138\":[1,2],\"139\":[2,6],\"140\":[1,13],\"141\":[1,9],\"142\":[1,2],\"143\":[2,5],\"144\":[1,16],\"145\":[1,6],\"146\":[1,7],\"147\":[1,2],\"148\":[2,4],\"149\":[1,14],\"150\":[1,5],\"151\":[1,2],\"152\":[2,4],\"153\":[1,45],\"154\":[1,2],\"155\":[2,4],\"156\":[1,15],\"157\":[1,5],\"158\":[1,2],\"159\":[2,4],\"160\":[1,21],\"161\":[1,2],\"162\":[2,4],\"163\":[1,17],\"164\":[1,2],\"165\":[2,5],\"166\":[1,16],\"167\":[1,5],\"168\":[1,2],\"169\":[2,4],\"170\":[1,20],\"171\":[1,5],\"172\":[1,2],\"173\":[2,5],\"174\":[1,16],\"175\":[1,5],\"176\":[1,2],\"177\":[2,4],\"178\":[1,11],\"179\":[1,2],\"180\":[2,4],\"181\":[1,11],\"182\":[1,2],\"183\":[2,4],\"184\":[1,7],\"185\":[1,5],\"186\":[1,2],\"187\":[2,4],\"188\":[1,18],\"189\":[1,5],\"190\":[1,2],\"191\":[2,4],\"192\":[1,8],\"193\":[1,18],\"194\":[1,9],\"195\":[1,15],\"196\":[1,2],\"197\":[2,4],\"198\":[1,18],\"199\":[1,5],\"200\":[1,2],\"201\":[2,4],\"202\":[1,9],\"203\":[1,5],\"204\":[1,2],\"205\":[2,6],\"206\":[1,12],\"207\":[1,5],\"208\":[1,2],\"209\":[1,5],\"210\":[1,9],\"211\":[1],\"212\":[3,1],\"213\":[1,6],\"214\":[1,9],\"215\":[1],\"216\":[1,7],\"217\":[2,5],\"218\":[1,19],\"219\":[1,5],\"220\":[1,7],\"221\":[1,2],\"222\":[2,5],\"223\":[1,25],\"224\":[1,4],\"225\":[2,4],\"226\":[1,33],\"227\":[1,3],\"228\":[2,6],\"229\":[1,7],\"230\":[1,29],\"231\":[1,4],\"232\":[2,5],\"233\":[1,11],\"234\":[1,83],\"235\":[1,10],\"236\":[1,4],\"237\":[2,5],\"238\":[1,17],\"239\":[1,35],\"240\":[1,3],\"241\":[2,5],\"242\":[1,9],\"243\":[1,143],\"244\":[1,6],\"245\":[2,5],\"246\":[1,33],\"247\":[1,13],\"248\":[1,2],\"249\":[1,2],\"250\":[2,4],\"251\":[1,10],\"252\":[1,4],\"253\":[1,2],\"254\":[2,4],\"255\":[1,7],\"256\":[1,26],\"257\":[1,6],\"258\":[1,5],\"259\":[2,4],\"260\":[1,9],\"261\":[1,3],\"262\":[1,2],\"263\":[1,5],\"264\":[1,26],\"265\":[1,4],\"266\":[2,4],\"267\":[1,15],\"268\":[1,3],\"269\":[1,2],\"270\":[2,4],\"271\":[1,24],\"272\":[1,7],\"273\":[1,7],\"274\":[1,2],\"275\":[2,4],\"276\":[1,29],\"277\":[1,11],\"278\":[1,2],\"279\":[2,4],\"280\":[1,30],\"281\":[1,11],\"282\":[1,2],\"283\":[2,3],\"284\":[1,42],\"285\":[1,11],\"286\":[1],\"287\":[2,3],\"288\":[1,10],\"289\":[1,32],\"290\":[1,18],\"291\":[1,2],\"292\":[2,3],\"293\":[1,10],\"294\":[1,5],\"295\":[1],\"296\":[2,4],\"297\":[1,25],\"298\":[1,6],\"299\":[1,32],\"300\":[1],\"301\":[2,5],\"302\":[1,20],\"303\":[1,6],\"304\":[1,2],\"305\":[2,3],\"306\":[1,16],\"307\":[1,5],\"308\":[1,1],\"309\":[2,4],\"310\":[1,14],\"311\":[1,31],\"312\":[1,2],\"313\":[2,5],\"314\":[1,13],\"315\":[1,22],\"316\":[1,27],\"317\":[1,2],\"318\":[2,5],\"319\":[1,13],\"320\":[1,5],\"321\":[1],\"322\":[1],\"323\":[2,5],\"324\":[1,8],\"325\":[1,7],\"326\":[1,3],\"327\":[2,3],\"328\":[1,11],\"329\":[1,108],\"330\":[3,5],\"331\":[2,4],\"332\":[1,1],\"333\":[1,13],\"334\":[2],\"335\":[2,2],\"336\":[1,8],\"337\":[1],\"338\":[3],\"339\":[2,3],\"340\":[1,8],\"341\":[1],\"342\":[1],\"343\":[2,2],\"344\":[1,8],\"345\":[1],\"346\":[5],\"347\":[2,2],\"348\":[1,8],\"349\":[1],\"350\":[1,11],\"351\":[1,19],\"352\":[2,19],\"353\":[2,17],\"354\":[1,15],\"355\":[2,16],\"356\":[1,27],\"357\":[1,28],\"358\":[1,6],\"359\":[1,7],\"360\":[1,3],\"361\":[2,3],\"362\":[1,9],\"363\":[1,12],\"364\":[1,2],\"365\":[2,4],\"366\":[1,4],\"367\":[1,6],\"368\":[2,3],\"369\":[2,3],\"370\":[1,6],\"371\":[1,9],\"372\":[1,12],\"373\":[1,2],\"374\":[2,3],\"375\":[1,12],\"376\":[1,9],\"377\":[1,2],\"378\":[2,4],\"379\":[1,4],\"380\":[1,6],\"381\":[2,10],\"382\":[1,24],\"383\":[1,14],\"384\":[1,2],\"385\":[1,2],\"386\":[1,2],\"387\":[2],\"388\":[1,3],\"389\":[1,3],\"390\":[1,10],\"391\":[1,2],\"392\":[3],\"393\":[2,7],\"394\":[1,3],\"395\":[1,11],\"396\":[5],\"397\":[2,7],\"398\":[1,20],\"399\":[1,15],\"400\":[1,10],\"401\":[2,3],\"402\":[1,26],\"403\":[1,11],\"404\":[1,13],\"405\":[1,14],\"406\":[1],\"407\":[2,2],\"408\":[1,1],\"409\":[1,5],\"410\":[1],\"411\":[2,4],\"412\":[1,7],\"413\":[1],\"414\":[2,4],\"415\":[1,4],\"416\":[1,7],\"417\":[1],\"418\":[2,2],\"419\":[1,4],\"420\":[1,13],\"421\":[1,7],\"422\":[1,1],\"423\":[1,13],\"424\":[1],\"425\":[2,2],\"426\":[1,4],\"427\":[1,1],\"428\":[1],\"429\":[2,4],\"430\":[1,112],\"431\":[1,7],\"432\":[1,2],\"433\":[2,3],\"434\":[1,10],\"435\":[1,5],\"436\":[1,2],\"437\":[2,4],\"438\":[1,7],\"439\":[1,5],\"440\":[1],\"441\":[2,2],\"442\":[1,12],\"443\":[1,5],\"444\":[1],\"445\":[1,4],\"446\":[1],\"447\":[1,29],\"448\":[1],\"449\":[1,10],\"450\":[1,6],\"451\":[1,14],\"452\":[1,31],\"453\":[1,11],\"454\":[1,6],\"455\":[1],\"456\":[1,26],\"457\":[3,20],\"458\":[1,6],\"459\":[1,44],\"460\":[1,8],\"461\":[1,8],\"462\":[1,8],\"463\":[1,8],\"464\":[1,14],\"465\":[1,28],\"466\":[1,11],\"467\":[1,22],\"468\":[1,23],\"469\":[1,29],\"470\":[1,30],\"471\":[1,23],\"472\":[1,20],\"473\":[1,17],\"474\":[1,20],\"475\":[1,19],\"476\":[1,27],\"477\":[1,22],\"478\":[1,17],\"479\":[1,18],\"480\":[1,11],\"481\":[1,28],\"482\":[1,16],\"483\":[1,29],\"484\":[1,14],\"485\":[1,22],\"486\":[1,21],\"487\":[1,21],\"488\":[1,11],\"489\":[1,21],\"490\":[1,12],\"491\":[2,28],\"492\":[1,12],\"493\":[1],\"494\":[1,3],\"495\":[1,7],\"496\":[1],\"497\":[1,24],\"498\":[1,17],\"499\":[1,70],\"500\":[1,29],\"501\":[1,23],\"502\":[1],\"503\":[1,16],\"504\":[1,11],\"505\":[2,15],\"506\":[3,17],\"507\":[4,4],\"508\":[4,10],\"509\":[4,18],\"510\":[3,14],\"511\":[3,3],\"512\":[2,4],\"513\":[2,15],\"514\":[2,8],\"515\":[2,20],\"516\":[1,13],\"517\":[1,5],\"518\":[1,6],\"519\":[1,7],\"520\":[1,23],\"521\":[1,13],\"522\":[1,16],\"523\":[1,2],\"524\":[3,16],\"525\":[1],\"526\":[1,6],\"527\":[1,4],\"528\":[2,4],\"529\":[1,10],\"530\":[3,24],\"531\":[3],\"532\":[2,44],\"533\":[2,9],\"534\":[2,4],\"535\":[1],\"536\":[1,5],\"537\":[1,6],\"538\":[1,11],\"539\":[3,13],\"540\":[2],\"541\":[2],\"542\":[1,12],\"543\":[1],\"544\":[1,7],\"545\":[2,9],\"546\":[1,24],\"547\":[1,16],\"548\":[1,15],\"549\":[1,5],\"550\":[1,12],\"551\":[1,16],\"552\":[1,12],\"553\":[1,19],\"554\":[1],\"555\":[1,23],\"556\":[1,23],\"557\":[1],\"558\":[1,24],\"559\":[1],\"560\":[1,12],\"561\":[1],\"562\":[2],\"563\":[1,29],\"564\":[1],\"565\":[1,22],\"566\":[1],\"567\":[1,20],\"568\":[1],\"569\":[1,12],\"570\":[1],\"571\":[1],\"572\":[1,21],\"573\":[1],\"574\":[1,17],\"575\":[1],\"576\":[1,13],\"577\":[3],\"578\":[3],\"579\":[1,7],\"580\":[1,21],\"581\":[3],\"582\":[1,11],\"583\":[1],\"584\":[1,17],\"585\":[3],\"586\":[1,24],\"587\":[1],\"588\":[1,13],\"589\":[1],\"590\":[1,20],\"591\":[1],\"592\":[1,21],\"593\":[1],\"594\":[1,15]},\"averageFieldLength\":[1.2840336134453778,10.656754461509125],\"storedFields\":{\"0\":{\"h\":\"进阶\"},\"1\":{\"h\":\"目录\",\"t\":[\"语音支持\"]},\"2\":{\"h\":\"语音支持\"},\"3\":{\"h\":\"安装 SILK 语音引擎\",\"t\":[\"Shamrock 的语音解码器已经模块化,你可以自行选择安装。 如果未安装 SILK 语音引擎,Shamrock 则无法发送 mp3/flac/wav/ogg 等格式的语音消息。\",\"为了完整支持语音消息,你需要安装 SILK 语音引擎。\",\"下载 AudioLibrary 语音支持库,请下载对应架构的文件,否则可能无法运行。\",\"将全部文件解压到 Shamrock 主目录 下的 lib 文件夹中\",\"AudioLibrary-Arm64AudioLibrary-X64\",\"关于 Shamrock 主目录,请参考 目录定义。\",\"提示\",\"如果没有 lib 文件夹,请自行创建。\\n请你下载对应的正确的架构的lib,在模拟器上即使对应架构也可能报错?\"]},\"4\":{\"h\":\"接口\"},\"5\":{\"h\":\"目录\",\"t\":[\"请求与响应\",\"账号相关\",\"联系人相关\",\"用户相关\",\"消息相关\",\"资源相关\",\"处理相关\",\"群聊相关\",\"频道相关\",\"文件相关\",\"QQ收藏\",\"Shamrock相关\",\"其他接口\"]},\"6\":{\"h\":\"账号相关\",\"t\":[\"注意\",\"对于 Shamrock 尚未实现的 API,会在标题添加标记 \"]},\"7\":{\"h\":\"获取登录号信息\",\"t\":[\"该接口用于获取 QQ 用户的登录号信息。\"]},\"8\":{\"h\":\"API 端点\",\"t\":[\"/get_login_info\"]},\"9\":{\"h\":\"参数\",\"t\":[\"提示\",\"该接口无输入参数。\"]},\"10\":{\"h\":\"响应\"},\"11\":{\"h\":\"设置 QQ 个人资料\",\"t\":[\"该接口用于设置 QQ 用户的个人资料信息。\"]},\"12\":{\"h\":\"API 端点\",\"t\":[\"/set_qq_profile\"]},\"13\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"nickname\",\"string\",\"是\",\"昵称\",\"company\",\"string\",\"是\",\"公司\",\"email\",\"string\",\"是\",\"邮箱\",\"college\",\"string\",\"是\",\"大学\",\"personal_note\",\"string\",\"是\",\"个人备注\",\"age\",\"int32\",\"否\",\"年龄\",\"birthday\",\"string\",\"否\",\"生日(格式:YYYY-MM-DD)\"]},\"14\":{\"h\":\"响应\",\"t\":[\"该接口将返回基本的 json 。\"]},\"15\":{\"h\":\"获取在线机型\",\"t\":[\"该接口用于获取 QQ 在线机型。\"]},\"16\":{\"h\":\"API 端点\",\"t\":[\"/_get_model_show\"]},\"17\":{\"h\":\"参数\"},\"18\":{\"h\":\"响应\"},\"19\":{\"h\":\"ModelDetail\",\"t\":[\"字段\",\"类型\",\"说明\",\"model_show\",\"string\",\"机型名称\",\"need_pay\",\"bool\",\"是否需要付费\"]},\"20\":{\"h\":\"设置在线机型\",\"t\":[\"该接口用于设置 QQ 在线机型。\"]},\"21\":{\"h\":\"API 端点\",\"t\":[\"/_set_model_show\"]},\"22\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"model\",\"string\",\"是\",\"机型\",\"manu\",\"string\",\"是\",\"厂商\"]},\"23\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。\"]},\"24\":{\"h\":\"获取当前账号在线客户端列表\",\"t\":[\"该接口用于获取当前账号在线客户端列表。\"]},\"25\":{\"h\":\"API 端点\",\"t\":[\"/get_online_clients\"]},\"26\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"no_cache\",\"bool\",\"是否无视缓存\"]},\"27\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"clients\",\"Object\",\"在线客户端列表\"]},\"28\":{\"h\":\"Device\",\"t\":[\"字段\",\"类型\",\"说明\",\"app_id\",\"int64\",\"客户端ID\",\"device_name\",\"string\",\"设备名称\",\"device_kind\",\"string\",\"设备类型\"]},\"29\":{\"h\":\"联系人相关\",\"t\":[\"注意\",\"对于 Shamrock 尚未实现的 API,会在标题添加标记 \"]},\"30\":{\"h\":\"获取陌生人信息\",\"t\":[\"该接口用于获取陌生人的信息。\"]},\"31\":{\"h\":\"API 端点\",\"t\":[\"/get_stranger_info\"]},\"32\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"user_id\",\"int64\",\"是\",\"QQ 号\"]},\"33\":{\"h\":\"响应\",\"t\":[\"注意\",\"该 API 可能会返回不存在于以下表格中的字段,请不要作为参考使用。\"]},\"34\":{\"h\":\"获取好友列表\",\"t\":[\"该接口用于获取好友列表。\"]},\"35\":{\"h\":\"API 端点\",\"t\":[\"/get_friend_list\"]},\"36\":{\"h\":\"参数\",\"t\":[\"提示\",\"该接口无输入参数,除 refresh 参数决定是否刷新数据。可能不是立即生效。\"]},\"37\":{\"h\":\"响应\",\"t\":[\"该接口返回的 data 数据为数组,每个元素为一个好友的信息,具体如下。\"]},\"38\":{\"h\":\"获取单向好友列表\",\"t\":[\"该接口用于获取单向好友列表。\"]},\"39\":{\"h\":\"API 端点\",\"t\":[\"/get_unidirectional_friend_list\"]},\"40\":{\"h\":\"参数\",\"t\":[\"提示\",\"该 API 无需参数\"]},\"41\":{\"h\":\"响应\",\"t\":[\"响应内容为 json 数组, 每个元素如下:\",\"字段名\",\"数据类型\",\"说明\",\"user_id\",\"int64\",\"QQ 号\",\"nickname\",\"string\",\"昵称\",\"source\",\"string\",\"来源\"]},\"42\":{\"h\":\"获取群信息\",\"t\":[\"该接口用于获取群信息。\"]},\"43\":{\"h\":\"API 端点\",\"t\":[\"/get_group_info\"]},\"44\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"group_id\",\"int64\",\"是\",\"群号\"]},\"45\":{\"h\":\"响应\",\"t\":[\"注意\",\"该 API 可能会返回不存在于以下表格中的字段,请不要作为参考使用。\"]},\"46\":{\"h\":\"获取群列表\",\"t\":[\"该接口用于获取群列表。\"]},\"47\":{\"h\":\"API 端点\",\"t\":[\"/get_group_list\"]},\"48\":{\"h\":\"参数\",\"t\":[\"提示\",\"该 API 无需参数\"]},\"49\":{\"h\":\"响应\",\"t\":[\"该接口返回的 data 数据为数组,每个元素为一个群的信息,具体如下。\"]},\"50\":{\"h\":\"获取群成员信息\",\"t\":[\"该接口用于获取群成员信息。\"]},\"51\":{\"h\":\"API 端点\",\"t\":[\"/get_group_member_info\"]},\"52\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"group_id\",\"int64\",\"是\",\"群号\",\"user_id\",\"int64\",\"是\",\"QQ 号\"]},\"53\":{\"h\":\"响应\"},\"54\":{\"h\":\"获取群成员列表\",\"t\":[\"该接口用于获取群成员列表。\"]},\"55\":{\"h\":\"API 端点\",\"t\":[\"/get_group_member_list\"]},\"56\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"group_id\",\"int64\",\"是\",\"群号\"]},\"57\":{\"h\":\"响应\",\"t\":[\"该接口返回的 data 数据为数组,每个元素为一个群成员的信息,具体如下。\"]},\"58\":{\"h\":\"获取群荣誉信息\",\"t\":[\"该接口用于获取群荣誉信息。\"]},\"59\":{\"h\":\"API 端点\",\"t\":[\"/get_group_honor_info\"]},\"60\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"group_id\",\"int64\",\"是\",\"群号\"]},\"61\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"current_talkative\",\"List\",\"当前龙王\",\"talkative_list\",\"List\",\"历史龙王\",\"performer_list\",\"List\",\"群聊之火\",\"legend_list\",\"List\",\"群聊炽焰\",\"strong_newbie_list\",\"List\",\"冒尖小春笋\",\"emotion_list\",\"List\",\"快乐之源\",\"all\",\"List\",\"全部荣誉\"]},\"62\":{\"h\":\"HonorInfo\",\"t\":[\"字段\",\"类型\",\"说明\",\"user_id\",\"int64\",\"QQ 号\",\"nickname\",\"string\",\"昵称\",\"avatar\",\"string\",\"头像链接\",\"day_count\",\"int32\",\"持续天数\",\"id\",\"int32\",\"ID\",\"description\",\"string\",\"描述\"]},\"63\":{\"h\":\"获取群系统消息\",\"t\":[\"该接口用于获取群系统消息。\"]},\"64\":{\"h\":\"API 端点\",\"t\":[\"/get_group_system_msg\"]},\"65\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"invited_requests\",\"List\",\"邀请消息列表\",\"join_requests\",\"List\",\"进群消息列表\",\"注意\",\"如果列表不存在任何消息, 将返回 null\"]},\"66\":{\"h\":\"InvitedRequest\",\"t\":[\"字段\",\"类型\",\"说明\",\"request_id\",\"int64\",\"请求ID\",\"invitor_uin\",\"int64\",\"邀请者\",\"invitor_nick\",\"string\",\"邀请者昵称\",\"group_id\",\"int64\",\"群号\",\"group_name\",\"string\",\"群名\",\"checked\",\"bool\",\"是否已被处理\",\"actor\",\"int64\",\"处理者, 未处理为0\",\"requester_uin\",\"int64\",\"被邀请者ID\",\"flag\",\"string\",\"flag,用于处理请求\"]},\"67\":{\"h\":\"JoinRequest\",\"t\":[\"字段\",\"类型\",\"说明\",\"request_id\",\"int64\",\"请求ID\",\"requester_uin\",\"int64\",\"请求者ID\",\"requester_nick\",\"string\",\"请求者昵称\",\"message\",\"string\",\"验证消息\",\"group_id\",\"int64\",\"群号\",\"group_name\",\"string\",\"群名\",\"checked\",\"bool\",\"是否已被处理\",\"actor\",\"int64\",\"处理者, 未处理为0\",\"flag\",\"string\",\"flag,用于处理请求\"]},\"68\":{\"h\":\"获取好友系统消息\",\"t\":[\"该接口用于获取好友系统消息。\"]},\"69\":{\"h\":\"API 端点\",\"t\":[\"/get_friend_system_msg\"]},\"70\":{\"h\":\"响应\",\"t\":[\"该接口返回的 data 数据为数组,每个元素为一个好友请求的系统信息,具体如下。\"]},\"71\":{\"h\":\"获取精华消息列表\",\"t\":[\"该接口用于获取精华消息列表。\"]},\"72\":{\"h\":\"API 端点\",\"t\":[\"/get_essence_msg_list\"]},\"73\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\"]},\"74\":{\"h\":\"响应\",\"t\":[\"响应内容为 JSON 数组,每个元素如下:\",\"字段名\",\"数据类型\",\"说明\",\"sender_id\",\"int64\",\"发送者QQ 号\",\"sender_nick\",\"string\",\"发送者昵称\",\"sender_time\",\"int64\",\"消息发送时间\",\"operator_id\",\"int64\",\"操作者QQ 号\",\"operator_nick\",\"string\",\"操作者昵称\",\"operator_time\",\"int64\",\"精华设置时间\",\"message_id\",\"int32\",\"消息ID,可能为0表示找不到消息映射\",\"message_seq\",\"int32\",\"消息seq\"]},\"75\":{\"h\":\"QQ是否在黑名单内\",\"t\":[\"获取好友/陌生人是否处于黑名单列表。\"]},\"76\":{\"h\":\"API 端点\",\"t\":[\"/is_blacklist_uin\"]},\"77\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"user_id\",\"int64\",\"是\",\"QQ账号\"]},\"78\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"is\",\"bool\",\"是否是黑名单\"]},\"79\":{\"h\":\"处理相关\",\"t\":[\"注意\",\"对于 Shamrock 尚未实现的 API,会在标题添加标记 \"]},\"80\":{\"h\":\"处理加好友请求\",\"t\":[\"该接口用于处理加好友请求。\"]},\"81\":{\"h\":\"API 端点\",\"t\":[\"/set_friend_add_request\"]},\"82\":{\"h\":\"参数\",\"t\":[\"字段名\",\"数据类型\",\"默认值\",\"说明\",\"flag\",\"string\",\"-\",\"加好友请求的 flag(需从上报的数据中获得)\",\"approve\",\"boolean\",\"true\",\"是否同意请求\",\"remark\",\"string\",\"空\",\"添加后的好友备注(仅在同意时有效)\"]},\"83\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。\"]},\"84\":{\"h\":\"处理加群请求/邀请\",\"t\":[\"该接口用于处理加群请求/邀请。\"]},\"85\":{\"h\":\"API 端点\",\"t\":[\"/set_group_add_request\"]},\"86\":{\"h\":\"参数\",\"t\":[\"字段名\",\"数据类型\",\"默认值\",\"说明\",\"flag\",\"string\",\"-\",\"加群请求的 flag(需从上报的数据中获得)\",\"sub_type 或 type\",\"string\",\"-\",\"add 或 invite, 请求类型(需要和上报消息中的 sub_type 字段相符)\",\"approve\",\"boolean\",\"true\",\"是否同意请求/邀请\",\"reason\",\"string\",\"空\",\"拒绝理由(仅在拒绝时有效)\"]},\"87\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。\"]},\"88\":{\"h\":\"QQ收藏 接口\",\"t\":[\"注意\",\"这里的API处于实验性阶段,不会进行大量维护和更新,由于过于简单,如果需要某些功能可以自行PR!\"]},\"89\":{\"h\":\"获取收藏列表\",\"t\":[\"获取收藏列表\"]},\"90\":{\"h\":\"API端点\",\"t\":[\"/fav/get_item_list (HTTP)\",\"fav.get_item_list (WebSocket)\"]},\"91\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"默认值\",\"page_size\",\"int32\",\"是\",\"获取的数量\",\"category\",\"int32\",\"是\",\"分类\",\"start_pos\",\"int32\",\"是\",\"开始的位置\"]},\"92\":{\"h\":\"响应\",\"t\":[\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0, \\\"data\\\": { \\\"items\\\": [ { \\\"id\\\": \\\"1-1-9dec6664-dcb7-4b46-986f-xxxxxx\\\", \\\"author_type\\\": 2, \\\"author\\\": 2806922524, \\\"author_name\\\": \\\"2806922524\\\", \\\"group_name\\\": \\\"ˢʰᵃᵐʳᵒᶜᵏ\\\", \\\"group_id\\\": 333425833, \\\"client_version\\\": \\\"8.9.12820\\\", \\\"time\\\": 1703004793000 } ] }, \\\"echo\\\": \\\"\\\" } \"]},\"93\":{\"h\":\"获取指定收藏的内容\",\"t\":[\"获取收藏内容\"]},\"94\":{\"h\":\"API端点\",\"t\":[\"/fav/get_item_content (HTTP)\",\"fav.get_item_content (WebSocket)\"]},\"95\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"默认值\",\"id\",\"string\",\"是\",\"id\"]},\"96\":{\"h\":\"响应\",\"t\":[\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0, \\\"data\\\": { \\\"content\\\": \\\"在想可不可以在手机上跑bot()\\\" }, \\\"echo\\\": \\\"\\\" } \"]},\"97\":{\"h\":\"添加文本收藏\",\"t\":[\"添加一段文字到QQ收藏\"]},\"98\":{\"h\":\"API端点\",\"t\":[\"/fav/add_text_msg (HTTP)\",\"fav.add_text_msg (WebSocket)\"]},\"99\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"默认值\",\"content\",\"string\",\"是\",\"内容\"]},\"100\":{\"h\":\"响应\",\"t\":[\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0, \\\"data\\\": { \\\"id\\\": \\\"xxxxxxxx\\\" }, \\\"echo\\\": \\\"\\\" } \"]},\"101\":{\"h\":\"添加图片收藏\",\"t\":[\"添加一个图片到QQ收藏\"]},\"102\":{\"h\":\"API端点\",\"t\":[\"/fav/add_image_msg (HTTP)\",\"fav.add_image_msg (WebSocket)\"]},\"103\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"默认值\",\"file\",\"string\",\"是\",\"图片base64或者绝对路径或者URL\"]},\"104\":{\"h\":\"响应\",\"t\":[\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0, \\\"data\\\": { \\\"id\\\": \\\"xxxxxxxx\\\" }, \\\"echo\\\": \\\"\\\" } \"]},\"105\":{\"h\":\"文件相关\",\"t\":[\"注意\",\"对于 Shamrock 尚未实现的 API,会在标题添加标记 \"]},\"106\":{\"h\":\"上传私聊文件\",\"t\":[\"该接口用于上传私聊文件。\",\"注意\",\"只能上传本地文件, 需要上传 http 文件的话请先下载至本地\"]},\"107\":{\"h\":\"API 端点\",\"t\":[\"/upload_private_file\"]},\"108\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"user_id\",\"int64\",\"目标\",\"file\",\"string\",\"本地文件路径 或 文件base64 或 文件url\",\"name\",\"string\",\"文件名称\",\"注意\",\"本地文件路径为绝对路径,文件base64为base64://开头,文件url则应该是正确的http请求地址。\"]},\"109\":{\"h\":\"响应\"},\"110\":{\"h\":\"上传群文件\",\"t\":[\"该接口用于上传群文件。\",\"注意\",\"只能上传本地文件, 需要上传 http 文件的话请先下载至本地\"]},\"111\":{\"h\":\"API 端点\",\"t\":[\"/upload_group_file\"]},\"112\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"file\",\"string\",\"本地文件路径 或 文件base64 或 文件url\",\"name\",\"string\",\"文件名称\",\"注意\",\"本地文件路径为绝对路径,文件base64为base64://开头,文件url则应该是正确的http请求地址。\"]},\"113\":{\"h\":\"响应\",\"t\":[\"注意\",\"参数 folder在Shamrock不受支持。\"]},\"114\":{\"h\":\"删除群文件\",\"t\":[\"该接口用于删除群文件。\"]},\"115\":{\"h\":\"API 端点\",\"t\":[\"/delete_group_file\"]},\"116\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"file_id\",\"string\",\"文件ID 参考 File 对象\",\"busid\",\"int32\",\"文件类型 参考 File 对象\",\"提示\",\"该 API 无响应数据\"]},\"117\":{\"h\":\"创建群文件文件夹\",\"t\":[\"该接口用于创建群文件文件夹。\",\"注意\",\"仅能在根目录创建文件夹\"]},\"118\":{\"h\":\"API 端点\",\"t\":[\"/create_group_file_folder\"]},\"119\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"name\",\"string\",\"群文件夹名字\"]},\"120\":{\"h\":\"响应示例\",\"t\":[\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0, \\\"data\\\": { \\\"folder_id\\\": \\\"/ad86c100-031d-4139-8cab-c6c661a413ba\\\", \\\"parent_folder_id\\\": \\\"/\\\", \\\"folder_name\\\": \\\"测试\\\", \\\"create_time\\\": 1706269735, \\\"modify_time\\\": 1706269735, \\\"creator_uin\\\": 1650114384, \\\"modifier_uin\\\": 1650114384 }, \\\"message\\\": \\\"成功\\\", \\\"echo\\\": 111 } \"]},\"121\":{\"h\":\"重命名群文件夹\",\"t\":[\"把已经存在的群文件夹改个名字。\"]},\"122\":{\"h\":\"API 端点\",\"t\":[\"/rename_group_folder\",\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"folder_id\",\"string\",\"群文件夹ID\",\"name\",\"string\",\"群文件夹名字\"]},\"123\":{\"h\":\"响应解释\",\"t\":[\"可通过返回的状态码判断重命名是否成功。\"]},\"124\":{\"h\":\"删除群文件文件夹\",\"t\":[\"该接口用于删除群文件文件夹。\"]},\"125\":{\"h\":\"API 端点\",\"t\":[\"/delete_group_folder\"]},\"126\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"folder_id\",\"string\",\"文件夹ID 参考 Folder 对象\"]},\"127\":{\"h\":\"响应解释\",\"t\":[\"可通过返回的状态码判断删除是否成功。\"]},\"128\":{\"h\":\"获取群文件系统信息\",\"t\":[\"该接口用于获取群文件系统信息。\"]},\"129\":{\"h\":\"API 端点\",\"t\":[\"/get_group_file_system_info\"]},\"130\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\"]},\"131\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"file_count\",\"int32\",\"文件总数\",\"limit_count\",\"int32\",\"文件上限\",\"used_space\",\"int64\",\"已使用空间\",\"total_space\",\"int64\",\"空间上限\"]},\"132\":{\"h\":\"获取群根目录文件列表\",\"t\":[\"该接口用于获取群根目录文件列表。\"]},\"133\":{\"h\":\"API 端点\",\"t\":[\"/get_group_root_files\"]},\"134\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\"]},\"135\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"files\",\"List\",\"文件列表\",\"folders\",\"List\",\"文件夹列表\"]},\"136\":{\"h\":\"File\",\"t\":[\"字段\",\"类型\",\"说明\",\"group_id\",\"int32\",\"群号\",\"file_id\",\"string\",\"文件ID\",\"file_name\",\"string\",\"文件名\",\"busid\",\"int32\",\"文件类型\",\"file_size\",\"int64\",\"文件大小\",\"upload_time\",\"int64\",\"上传时间\",\"dead_time\",\"int64\",\"过期时间,永久文件恒为0\",\"modify_time\",\"int64\",\"最后修改时间\",\"download_times\",\"int32\",\"下载次数\",\"uploader\",\"int64\",\"上传者ID\",\"uploader_name\",\"string\",\"上传者名字\",\"md5\",\"string\",\"md5\",\"sha\",\"string\",\"sha\",\"sha3\",\"string\",\"sha3 可能获取不到\"]},\"137\":{\"h\":\"Folder\",\"t\":[\"字段\",\"类型\",\"说明\",\"group_id\",\"int32\",\"群号\",\"folder_id\",\"string\",\"文件夹ID\",\"folder_name\",\"string\",\"文件名\",\"create_time\",\"int64\",\"创建时间\",\"creator\",\"int64\",\"创建者\",\"creator_name\",\"string\",\"创建者名字\",\"total_file_count\",\"int32\",\"子文件数量\"]},\"138\":{\"h\":\"获取群子目录文件列表\",\"t\":[\"该接口用于获取群子目录文件列表。\"]},\"139\":{\"h\":\"API 端点\",\"t\":[\"/get_group_files_by_folder\"]},\"140\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"folder_id\",\"string\",\"文件夹ID 参考 Folder 对象\"]},\"141\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"files\",\"File[]\",\"文件列表\",\"folders\",\"Folder[]\",\"文件夹列表\"]},\"142\":{\"h\":\"获取群文件资源链接\",\"t\":[\"该接口用于获取群文件资源链接。\"]},\"143\":{\"h\":\"API 端点\",\"t\":[\"/get_group_file_url\"]},\"144\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"file_id\",\"string\",\"文件ID 参考 File 对象\",\"busid\",\"int32\",\"文件类型 参考 File 对象\"]},\"145\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"url\",\"string\",\"文件下载链接\"]},\"146\":{\"h\":\"群聊相关\",\"t\":[\"注意\",\"对于 Shamrock 尚未实现的 API,会在标题添加标记 \"]},\"147\":{\"h\":\"设置群名\",\"t\":[\"该接口用于设置群名。\"]},\"148\":{\"h\":\"API 端点\",\"t\":[\"/set_group_name\"]},\"149\":{\"h\":\"参数\",\"t\":[\"字段名\",\"数据类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"group_name\",\"string\",\"新群名\",\"提示\",\"该 API 无响应数据\"]},\"150\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。。\"]},\"151\":{\"h\":\"设置群头像\",\"t\":[\"该接口用于设置群头像。\"]},\"152\":{\"h\":\"API 端点\",\"t\":[\"/set_group_portrait\"]},\"153\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"file\",\"string\",\"图片文件名\",\"cache\",\"int\",\"表示是否使用已缓存的文件\",\"[1] file参数支持以下几种格式:\",\"绝对路径, 例如 file:///sdcard/Pictures/shamrock.png, 格式使用 file URI\",\"网络 URL, 例如 http://i1.piimg.com/567571/fdd6e7b6d93f1ef0.jpg\",\"Base64 编码, 例如 base64://iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAIAAADJt1n/AAAAKElEQVQ4EWPk5+RmIBcwkasRpG9UM4mhNxpgowFGMARGEwnBIEJVAAAdBgBNAZf+QAAAAABJRU5ErkJggg==\",\"[2] cache参数: 通过网络 URL 发送时有效, 1表示使用缓存, 0关闭关闭缓存, 默认 为1\"]},\"154\":{\"h\":\"设置群管理员\",\"t\":[\"该接口用于设置群管理员。\"]},\"155\":{\"h\":\"API 端点\",\"t\":[\"/set_group_admin\"]},\"156\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"group_id\",\"int64\",\"是\",\"群号\",\"user_id\",\"int64\",\"是\",\"QQ 号\",\"enable\",\"bool\",\"是\",\"是否设置\"]},\"157\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。。\"]},\"158\":{\"h\":\"设置群名片\",\"t\":[\"该接口用于设置群成员名片。\"]},\"159\":{\"h\":\"API 端点\",\"t\":[\"/set_group_card\"]},\"160\":{\"h\":\"参数\",\"t\":[\"字段名\",\"数据类型\",\"默认值\",\"说明\",\"group_id\",\"int64\",\"-\",\"群号\",\"user_id\",\"int64\",\"-\",\"要设置的 QQ 号\",\"card\",\"string\",\"空\",\"群名片内容, 不填或空字符串表示删除群名片\",\"提示\",\"该 API 无响应数据\"]},\"161\":{\"h\":\"设置群聊备注\",\"t\":[\"该接口用于设置群聊备注。\"]},\"162\":{\"h\":\"API 端点\",\"t\":[\"/set_group_remark\"]},\"163\":{\"h\":\"参数\",\"t\":[\"字段名\",\"数据类型\",\"默认值\",\"说明\",\"group_id\",\"int64\",\"-\",\"群号\",\"remark\",\"string\",\"空\",\"群备注, 不填或空字符串表示删除群备注\",\"提示\",\"该 API 无响应数据\"]},\"164\":{\"h\":\"设置群组专属头衔\",\"t\":[\"该接口用于设置群组专属头衔。\"]},\"165\":{\"h\":\"API 端点\",\"t\":[\"/set_group_special_title\"]},\"166\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"group_id\",\"int64\",\"是\",\"群号\",\"user_id\",\"int64\",\"是\",\"QQ 号\",\"special_title\",\"string\",\"是\",\"头衔\"]},\"167\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。。\"]},\"168\":{\"h\":\"群单人禁言\",\"t\":[\"该接口用于群单人禁言。\"]},\"169\":{\"h\":\"API 端点\",\"t\":[\"/set_group_ban\"]},\"170\":{\"h\":\"参数\",\"t\":[\"提示\",\"当 duration 为 0 时,将解除禁言。\",\"字段\",\"类型\",\"必须\",\"说明\",\"group_id\",\"int64\",\"是\",\"群号\",\"user_id\",\"int64\",\"是\",\"QQ 号\",\"duration\",\"int64\",\"是\",\"禁言时长\"]},\"171\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。。\"]},\"172\":{\"h\":\"群全员禁言\",\"t\":[\"该接口用于群全员禁言。\"]},\"173\":{\"h\":\"API 端点\",\"t\":[\"/set_group_whole_ban\"]},\"174\":{\"h\":\"参数\",\"t\":[\"字段名\",\"数据类型\",\"默认值\",\"说明\",\"group_id\",\"int64\",\"-\",\"群号\",\"enable\",\"boolean\",\"true\",\"是否禁言\",\"提示\",\"该 API 无响应数据\"]},\"175\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。。\"]},\"176\":{\"h\":\"设置精华消息\",\"t\":[\"该接口用于设置精华消息。\"]},\"177\":{\"h\":\"API 端点\",\"t\":[\"/set_essence_msg\"]},\"178\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"message_id\",\"int32\",\"消息ID\",\"提示\",\"该 API 没有响应数据\"]},\"179\":{\"h\":\"移出精华消息\",\"t\":[\"该接口用于移出精华消息。\"]},\"180\":{\"h\":\"API 端点\",\"t\":[\"/delete_essence_msg\"]},\"181\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"message_id\",\"int32\",\"消息ID\",\"提示\",\"该 API 没有响应数据\"]},\"182\":{\"h\":\"群打卡\",\"t\":[\"该接口用于群打卡。\"]},\"183\":{\"h\":\"API 端点\",\"t\":[\"/send_group_sign\"]},\"184\":{\"h\":\"参数\",\"t\":[\"字段名\",\"数据类型\",\"说明\",\"group_id\",\"int64\",\"群号\"]},\"185\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。\"]},\"186\":{\"h\":\"发送群公告\",\"t\":[\"该接口用于发送群公告。\"]},\"187\":{\"h\":\"API 端点\",\"t\":[\"/_send_group_notice\"]},\"188\":{\"h\":\"参数\",\"t\":[\"字段名\",\"数据类型\",\"默认值\",\"说明\",\"group_id\",\"int64\",\"群号\",\"content\",\"string\",\"公告内容\",\"image\",\"string\",\"图片(可选),支持base64、http(s)和本地路径\"]},\"189\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。\"]},\"190\":{\"h\":\"获取群公告\",\"t\":[\"该接口用于获取群公告。\"]},\"191\":{\"h\":\"API 端点\",\"t\":[\"/_get_group_notice\"]},\"192\":{\"h\":\"参数\",\"t\":[\"字段名\",\"数据类型\",\"默认值\",\"说明\",\"group_id\",\"int64\",\"群号\"]},\"193\":{\"h\":\"响应数据\",\"t\":[\"data 的响应内容为 json 数组,每个元素内容如下:\",\"字段\",\"类型\",\"说明\",\"sender_id\",\"int64\",\"公告发表者\",\"publish_time\",\"int64\",\"公告发表时间\",\"message\",\"Object\",\"公告内容\"]},\"194\":{\"h\":\"message\",\"t\":[\"字段\",\"类型\",\"说明\",\"text\",\"string\",\"公告内容\",\"images\",\"List\",\"公告图片\"]},\"195\":{\"h\":\"images\",\"t\":[\"字段\",\"类型\",\"说明\",\"height\",\"string\",\"图片高度\",\"width\",\"string\",\"图片宽度\",\"id\",\"string\",\"图片ID,可用https://gdynamic.qpic.cn/gdynamic/{id}/628获取\"]},\"196\":{\"h\":\"群组踢人\",\"t\":[\"该接口用于群组踢人。\"]},\"197\":{\"h\":\"API 端点\",\"t\":[\"/set_group_kick\"]},\"198\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"group_id\",\"int64\",\"是\",\"群号\",\"user_id\",\"int64\",\"是\",\"QQ 号\",\"reject_add_request\",\"bool\",\"否\",\"是否拒绝再次加群\"]},\"199\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。\"]},\"200\":{\"h\":\"退出群组\",\"t\":[\"该接口用于退出群组。\"]},\"201\":{\"h\":\"API 端点\",\"t\":[\"/set_group_leave\"]},\"202\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"group_id\",\"int64\",\"是\",\"群号\"]},\"203\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。。\"]},\"204\":{\"h\":\"群戳一戳\",\"t\":[\"该接口用于群戳一戳。\"]},\"205\":{\"h\":\"API 端点\",\"t\":[\"/group_touch - 用于HTTP\",\"/poke - 用于主动WebSocket与被动WebSocket\"]},\"206\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"group_id\",\"int64\",\"是\",\"群号\",\"user_id\",\"int64\",\"是\",\"QQ 号\"]},\"207\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。。\"]},\"208\":{\"h\":\"获取被禁言的群成员列表\",\"t\":[\"用于获取群聊谁谁谁啊犯贱或者被二比滥权管理或者某群主时援交手滑禁言掉的人的列表。\"]},\"209\":{\"h\":\"API端点\",\"t\":[\"/get_prohibited_member_list\"]},\"210\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"group_id\",\"int64\",\"是\",\"群号\"]},\"211\":{\"h\":\"响应\"},\"212\":{\"h\":\"获取群 @全体成员 剩余次数\",\"t\":[\"当机器人是管理员时可用\"]},\"213\":{\"h\":\"API端点\",\"t\":[\"/get_group_at_all_remain\"]},\"214\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"group_id\",\"int64\",\"是\",\"群号\"]},\"215\":{\"h\":\"响应\"},\"216\":{\"h\":\"设置消息底部评论小表情\",\"t\":[\"貌似是从别的地方抄的奇怪功能,目前版本(9.0.15)只在部分群聊进行灰度测试!\"]},\"217\":{\"h\":\"API 端点\",\"t\":[\"/set_group_comment_face\"]},\"218\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"group_id\",\"int64\",\"是\",\"群号\",\"msg_id\",\"int32\",\"是\",\"消息ID\",\"face_id\",\"int32\",\"是\",\"表情ID\",\"is_set\",\"bool\",\"否\",\"是否设置或取消评论\"]},\"219\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。。\"]},\"220\":{\"h\":\"频道相关\",\"t\":[\"注意\",\"对于 Shamrock 尚未实现的 API,会在标题添加标记 \"]},\"221\":{\"h\":\"获取频道系统内BOT的资料\",\"t\":[\"该接口用于获取频道系统内BOT的资料。\"]},\"222\":{\"h\":\"API 端点\",\"t\":[\"/get_guild_service_profile\"]},\"223\":{\"h\":\"响应示例\",\"t\":[\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0, \\\"data\\\": { \\\"nickname\\\": \\\"田所浩二\\\", \\\"tiny_id\\\": 1145141919810, \\\"avatar_url\\\": \\\"http://thirdqq.qlogo.cn/g?b=oidb&k=***&kti=***&s=0&t=***\\\" }, \\\"echo\\\": 123446 } \"]},\"224\":{\"h\":\"获取频道列表\",\"t\":[\"获取频道列表,数据相比于Go-CQHTTP会有一点不一样。\"]},\"225\":{\"h\":\"API 端点\",\"t\":[\"/get_guild_list\"]},\"226\":{\"h\":\"响应示例\",\"t\":[\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0, \\\"data\\\": { \\\"guild_list\\\": [ { \\\"guild_id\\\": 111111111111111, \\\"guild_name\\\": \\\"北京大学频道\\\", \\\"guild_display_id\\\": \\\"abcdefg\\\", \\\"profile\\\": \\\"北京大学交流频道\\\", \\\"status\\\": { \\\"is_enable\\\": true, \\\"is_banned\\\": false, \\\"is_frozen\\\": false }, \\\"owner_id\\\": 22222222222222, \\\"shutup_expire_time\\\": 0, \\\"allow_search\\\": true } ] }, \\\"message\\\": \\\"success\\\", \\\"echo\\\": 111 } \"]},\"227\":{\"h\":\"通过访客获取频道元数据\",\"t\":[\"获取频道元数据,例如当前成员数量之类。\"]},\"228\":{\"h\":\"API 端点\",\"t\":[\"/get_guild_meta_by_guest\"]},\"229\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"guild_id\",\"uint64\",\"频道ID\"]},\"230\":{\"h\":\"响应示例\",\"t\":[\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0, \\\"data\\\": { \\\"guild_id\\\": 11111111111, \\\"guild_name\\\": \\\"北京大学交流频道\\\", \\\"guild_profile\\\": \\\"\\\", \\\"create_time\\\": 1606878500, \\\"max_member_count\\\": 100000, \\\"max_robot_count\\\": 100, \\\"max_admin_count\\\": 50, \\\"member_count\\\": 6241, \\\"owner_id\\\": 2222222221, \\\"guild_display_id\\\": \\\"\\\" }, \\\"echo\\\": 111 } \"]},\"231\":{\"h\":\"获取子频道列表\",\"t\":[\"获取一个频道的子频道(channel)列表。\"]},\"232\":{\"h\":\"API 端点\",\"t\":[\"/get_guild_channel_list\"]},\"233\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"guild_id\",\"uint64\",\"频道ID\",\"refresh\",\"bool\",\"是否刷新数据,默认false\"]},\"234\":{\"h\":\"响应示例\",\"t\":[\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0, \\\"data\\\": { \\\"channel_list\\\": [ { \\\"owner_guild_id\\\": 1111111111111111111, \\\"channel_id\\\": 639093000, \\\"channel_uin\\\": 639093000, \\\"guild_id\\\": \\\"1111111111111111111\\\", \\\"channel_type\\\": 2, \\\"channel_name\\\": \\\"Test\\\", \\\"create_time\\\": 1606879350, \\\"max_member_count\\\": 99, \\\"creator_tiny_id\\\": 124105218677239793, \\\"talk_permission\\\": 1, \\\"visible_type\\\": 1, \\\"current_slow_mode\\\": 0, \\\"slow_modes\\\": [], \\\"icon_url\\\": \\\"\\\", \\\"jump_switch\\\": 0, \\\"jump_type\\\": 0, \\\"jump_url\\\": \\\"\\\", \\\"category_id\\\": 0, \\\"my_talk_permission\\\": 2 }, { \\\"owner_guild_id\\\": 1111111111111111111, \\\"channel_id\\\": 639093001, \\\"channel_uin\\\": 639093001, \\\"guild_id\\\": \\\"1111111111111111111\\\", \\\"channel_type\\\": 1, \\\"channel_name\\\": \\\"闲聊吹水\\\", \\\"create_time\\\": 1606878501, \\\"max_member_count\\\": 0, \\\"creator_tiny_id\\\": 124105218677239793, \\\"talk_permission\\\": 1, \\\"visible_type\\\": 1, \\\"current_slow_mode\\\": 0, \\\"slow_modes\\\": [ { \\\"slow_mode_key\\\": 0, \\\"slow_mode_text\\\": \\\"关闭\\\", \\\"speak_frequency\\\": 0, \\\"slow_mode_circle\\\": 0 }, { \\\"slow_mode_key\\\": 1, \\\"slow_mode_text\\\": \\\"每分钟1条\\\", \\\"speak_frequency\\\": 1, \\\"slow_mode_circle\\\": 60 }, { \\\"slow_mode_key\\\": 2, \\\"slow_mode_text\\\": \\\"每分钟2条\\\", \\\"speak_frequency\\\": 2, \\\"slow_mode_circle\\\": 60 }, { \\\"slow_mode_key\\\": 3, \\\"slow_mode_text\\\": \\\"每分钟5条\\\", \\\"speak_frequency\\\": 5, \\\"slow_mode_circle\\\": 60 }, { \\\"slow_mode_key\\\": 4, \\\"slow_mode_text\\\": \\\"每分钟10条\\\", \\\"speak_frequency\\\": 10, \\\"slow_mode_circle\\\": 60 }, { \\\"slow_mode_key\\\": 5, \\\"slow_mode_text\\\": \\\"每5分钟1条\\\", \\\"speak_frequency\\\": 1, \\\"slow_mode_circle\\\": 300 }, { \\\"slow_mode_key\\\": 6, \\\"slow_mode_text\\\": \\\"每10分钟1条\\\", \\\"speak_frequency\\\": 1, \\\"slow_mode_circle\\\": 600 }, { \\\"slow_mode_key\\\": 7, \\\"slow_mode_text\\\": \\\"每15分钟1条\\\", \\\"speak_frequency\\\": 1, \\\"slow_mode_circle\\\": 900 }, { \\\"slow_mode_key\\\": 8, \\\"slow_mode_text\\\": \\\"每30分钟1条\\\", \\\"speak_frequency\\\": 1, \\\"slow_mode_circle\\\": 1800 }, { \\\"slow_mode_key\\\": 9, \\\"slow_mode_text\\\": \\\"每1小时1条\\\", \\\"speak_frequency\\\": 1, \\\"slow_mode_circle\\\": 3600 }, { \\\"slow_mode_key\\\": 10, \\\"slow_mode_text\\\": \\\"每12小时1条\\\", \\\"speak_frequency\\\": 1, \\\"slow_mode_circle\\\": 43200 }, { \\\"slow_mode_key\\\": 11, \\\"slow_mode_text\\\": \\\"每24小时1条\\\", \\\"speak_frequency\\\": 1, \\\"slow_mode_circle\\\": 86400 } ], \\\"icon_url\\\": \\\"\\\", \\\"jump_switch\\\": 0, \\\"jump_type\\\": 0, \\\"jump_url\\\": \\\"\\\", \\\"category_id\\\": 0, \\\"my_talk_permission\\\": 2 } ] }, \\\"message\\\": \\\"success\\\", \\\"echo\\\": 111 } \"]},\"235\":{\"h\":\"已知子频道类型列表\",\"t\":[\"类型\",\"说明\",\"1\",\"文字频道\",\"2\",\"语音频道\",\"5\",\"直播频道\",\"7\",\"主题频道\"]},\"236\":{\"h\":\"获取频道成员列表\",\"t\":[\"获取一个频道成员列表,但是因为数据量大,可能需要分页。\"]},\"237\":{\"h\":\"API 端点\",\"t\":[\"/get_guild_member_list\"]},\"238\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"guild_id\",\"uint64\",\"频道ID\",\"next_token\",\"string\",\"不提供则从首页开始获取\",\"all\",\"bool\",\"是否一次性获取完所有成员,默认false\",\"refresh\",\"bool\",\"是否刷新数据,默认false\"]},\"239\":{\"h\":\"响应示例\",\"t\":[\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0, \\\"data\\\": { \\\"members\\\": [ { \\\"tiny_id\\\": 144115218185291865, \\\"title\\\": \\\"频道助手\\\", \\\"nickname\\\": \\\"频道助手\\\", \\\"role_id\\\": 2, \\\"role_name\\\": \\\"小管家\\\", \\\"role_color\\\": 4294936110, \\\"join_time\\\": 1606878501, \\\"robot_type\\\": 1, \\\"type\\\": 1, \\\"in_black\\\": false, \\\"platform\\\": 0 } ], \\\"next_token\\\": \\\"0800100118032001\\\", \\\"finished\\\": true }, \\\"echo\\\": \\\"\\\" } \"]},\"240\":{\"h\":\"单独获取频道成员资料\",\"t\":[\"单独获取频道成员信息,附带有权限信息和身份组哦~!\"]},\"241\":{\"h\":\"API 端点\",\"t\":[\"/get_guild_member_profile\"]},\"242\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"guild_id\",\"uint64\",\"频道ID\",\"user_id\",\"uint64\",\"成员tinyId\"]},\"243\":{\"h\":\"响应示例\",\"t\":[\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0, \\\"data\\\": { \\\"tiny_id\\\": 123456, \\\"nickname\\\": \\\"***\\\", \\\"avatar_url\\\": \\\"https://qqchannel-profile-1251316161.file.myqcloud.com/***\\\", \\\"join_time\\\": 1606878500, \\\"roles\\\": [ { \\\"role_id\\\": \\\"4\\\", \\\"role_name\\\": \\\"频道主\\\", \\\"color\\\": 4294917938, \\\"permission\\\": [ { \\\"root_id\\\": 10000, \\\"child_ids\\\": [10001, 10002, 10003, 10004, 10005] }, { \\\"root_id\\\": 20000, \\\"child_ids\\\": [ 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20009, 20010, 20011, 20012, 20013, 20014, 20015, 20018, 20019 ] }, { \\\"root_id\\\": 30000, \\\"child_ids\\\": [30001, 30002, 30003, 30004, 30005, 30006, 30007, 90002] }, { \\\"root_id\\\": 40000, \\\"child_ids\\\": [40001, 40002] }, { \\\"root_id\\\": 50000, \\\"child_ids\\\": [50001] }, { \\\"root_id\\\": 60000, \\\"child_ids\\\": [60001] }, { \\\"root_id\\\": 70000, \\\"child_ids\\\": [70001, 70002, 70003, 70004, 70005, 70006, 70007] }, { \\\"root_id\\\": 80000, \\\"child_ids\\\": [80001, 80002] }, { \\\"root_id\\\": 90000, \\\"child_ids\\\": [90001, 30003] }, { \\\"root_id\\\": 100000, \\\"child_ids\\\": [100001, 100002] }, { \\\"root_id\\\": 1, \\\"child_ids\\\": [1001, 1002, 1003, 1004, 1005] }, { \\\"root_id\\\": 2, \\\"child_ids\\\": [ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 ] }, { \\\"root_id\\\": 3, \\\"child_ids\\\": [3001, 3002, 3003, 3004, 3005, 3006] }, { \\\"root_id\\\": 4, \\\"child_ids\\\": [4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008] }, { \\\"root_id\\\": 5, \\\"child_ids\\\": [5001] }, { \\\"root_id\\\": 6, \\\"child_ids\\\": [6001, 6002, 6003] } ], \\\"type\\\": 0, \\\"display_name\\\": \\\"频道主\\\" }, { \\\"role_id\\\": \\\"15\\\", \\\"role_name\\\": \\\"15活跃值\\\", \\\"color\\\": 4278190080, \\\"permission\\\": [], \\\"type\\\": 100, \\\"display_name\\\": \\\"\\\" } ] }, \\\"echo\\\": 111 } \"]},\"244\":{\"h\":\"发送信息到子频道\",\"t\":[\"发送频道内信息,需要单独的API哦,不要使用/send_message去发频道消息,发不出去的~~\"]},\"245\":{\"h\":\"API 端点\",\"t\":[\"/send_guild_channel_msg\"]},\"246\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"guild_id\",\"uint64\",\"频道ID\",\"channel_id\",\"uint64\",\"子频道ID\",\"message\",\"string or Message\",\"消息体,可为消息段或者CQ码\",\"auto_escape\",\"bool\",\"是否解析CQ码,true为不解析,默认false\",\"retry_cnt\",\"int32\",\"消息发送失败,最大重试次数,默认3\",\"recall_duration\",\"int64\",\"自动撤回间隔(毫秒),默认不撤回\"]},\"247\":{\"h\":\"响应示例\",\"t\":[\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0, \\\"data\\\": { \\\"message_id\\\": 1933593189, \\\"time\\\": 1706909190 }, \\\"echo\\\": 111 } \"]},\"248\":{\"h\":\"获取话题频道帖子\",\"t\":[\"该API接口已经被遗弃!\"]},\"249\":{\"h\":\"获取频道帖子广场帖子\",\"t\":[\"新的获取帖子广场的帖子哦!\"]},\"250\":{\"h\":\"API 端点\",\"t\":[\"/get_guild_feeds\"]},\"251\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"guild_id\",\"uint64\",\"频道ID\",\"from\",\"uint32\",\"开始获取的位置\"]},\"252\":{\"h\":\"响应示例\",\"t\":[\"该请求携带了大量原生响应数据,无法详细介绍,请自行测试!\"]},\"253\":{\"h\":\"获取频道角色列表\",\"t\":[\"获取身份组列表,包括隐藏的身份组哦~~\"]},\"254\":{\"h\":\"API 端点\",\"t\":[\"/get_guild_roles\"]},\"255\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"guild_id\",\"uint64\",\"频道ID\"]},\"256\":{\"h\":\"响应示例\",\"t\":[\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0, \\\"data\\\": { \\\"roles\\\": [ { \\\"argb_color\\\": 4286151052, \\\"disabled\\\": false, \\\"independent\\\": false, \\\"max_count\\\": 1000, \\\"member_count\\\": 0, \\\"owned\\\": false, \\\"role_id\\\": 1, \\\"role_name\\\": \\\"普通成员\\\", \\\"permission\\\": [] } ] }, \\\"echo\\\": 111 } \"]},\"257\":{\"h\":\"获取频道消息\",\"t\":[\"该接口不会实现,因为您可以调用/get_msg来获取来自频道的消息,无需实现一个专属的接口。\"]},\"258\":{\"h\":\"删除频道角色\",\"t\":[\"删除一个身份组,首先,你得保证你有权限,因为这个API不会提供任何返回数据哦!\"]},\"259\":{\"h\":\"API 端点\",\"t\":[\"/delete_guild_role\"]},\"260\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"guild_id\",\"uint64\",\"频道ID\",\"role_id\",\"uint64\",\"角色ID\"]},\"261\":{\"h\":\"响应\",\"t\":[\"该 API 无响应数据\"]},\"262\":{\"h\":\"设置用户在频道中的角色\",\"t\":[\"设置用户身份组。\"]},\"263\":{\"h\":\"API端点\",\"t\":[\"/set_guild_member_role\"]},\"264\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"guild_id\",\"uint64\",\"频道ID\",\"role_id\",\"uint64\",\"角色ID\",\"set\",\"bool\",\"设置还是移除,默认false\",\"users\",\"string or vector\",\"批量设置用户s\",\"user_id\",\"int64\",\"单独设置某个用户的身份\",\"如果users是字符串那么其格式为123456,6656656526,2652656,以逗号分隔每个tinyId。\"]},\"265\":{\"h\":\"修改频道角色\",\"t\":[\"修改频道角色,暂不支持设置权限,如有需要请提交issue。\"]},\"266\":{\"h\":\"API 端点\",\"t\":[\"/update_guild_role\"]},\"267\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"guild_id\",\"uint64\",\"频道ID\",\"role_id\",\"uint64\",\"角色ID\",\"name\",\"string\",\"名称\",\"color\",\"int64\",\"颜色ARGB\"]},\"268\":{\"h\":\"响应\",\"t\":[\"该 API 无响应数据\"]},\"269\":{\"h\":\"创建频道角色\",\"t\":[\"创建频道身份组。\"]},\"270\":{\"h\":\"API 端点\",\"t\":[\"/create_guild_role\"]},\"271\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"guild_id\",\"uint64\",\"频道ID\",\"name\",\"string\",\"名称\",\"color\",\"int64\",\"颜色ARGB\",\"initial_users\",\"vector\",\"默认身份组成员\",\"如果是HTTP请求,则initial_users使用字符串,以,为用户tiny_id分隔。\"]},\"272\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"role_id\",\"uint64\",\"角色ID\"]},\"273\":{\"h\":\"消息相关\",\"t\":[\"注意\",\"对于 Shamrock 尚未实现的 API,会在标题添加标记 \"]},\"274\":{\"h\":\"发送私聊消息\",\"t\":[\"该接口用于发送私聊消息。\"]},\"275\":{\"h\":\"API 端点\",\"t\":[\"/send_private_msg\"]},\"276\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"user_id\",\"int64\",\"是\",\"QQ 号\",\"message\",\"string / object / array\",\"是\",\"消息内容\",\"auto_escape\",\"bool\",\"否\",\"是否解析 CQ 码(true为不解析)。\",\"recall_duration\",\"int64\",\"否\",\"自动撤回时间间隔(毫秒)\",\"message格式可为消息段object,或消息段组合array\"]},\"277\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"message_id\",\"int32\",\"消息 ID\",\"time\",\"int64\",\"时间戳\"]},\"278\":{\"h\":\"发送群聊消息\",\"t\":[\"该接口用于发送群聊消息。\"]},\"279\":{\"h\":\"API 端点\",\"t\":[\"/send_group_msg\"]},\"280\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"group_id\",\"int64\",\"是\",\"群号\",\"message\",\"string / object / array\",\"是\",\"消息内容\",\"auto_escape\",\"bool\",\"否\",\"是否解析 CQ 码(true为不解析)。\",\"recall_duration\",\"int64\",\"否\",\"自动撤回时间间隔(毫秒)\",\"message格式同/send_private_msg\"]},\"281\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"message_id\",\"int32\",\"消息 ID\",\"time\",\"int64\",\"时间戳\"]},\"282\":{\"h\":\"发送消息\",\"t\":[\"该接口用于发送消息。\"]},\"283\":{\"h\":\"API 端点\",\"t\":[\"/send_msg\"]},\"284\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"message_type\",\"string\",\"是\",\"消息类型\",\"user_id\",\"int64\",\"是\",\"QQ 号\",\"group_id\",\"int64\",\"是\",\"群号\",\"discuss_id\",\"int64\",\"是\",\"讨论组号\",\"message\",\"string / object / array\",\"是\",\"消息内容\",\"auto_escape\",\"bool\",\"否\",\"是否解析 CQ 码(true为不解析)。\",\"recall_duration\",\"int64\",\"否\",\"自动撤回时间间隔(毫秒)\",\"message格式同/send_private_msg\",\"注意\",\"当前发送消息的 API 暂不支持发送讨论组消息。\"]},\"285\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"message_id\",\"int32\",\"消息 ID\",\"time\",\"int64\",\"时间戳\"]},\"286\":{\"h\":\"获取消息\"},\"287\":{\"h\":\"API 端点\",\"t\":[\"/get_msg\"]},\"288\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"message_id\",\"int32\",\"是\",\"消息 ID\"]},\"289\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"time\",\"int64\",\"时间戳\",\"message_type\",\"string\",\"消息类型\",\"message_id\",\"int32\",\"消息 ID\",\"real_id\",\"int32\",\"真实 ID\",\"sender\",\"Object\",\"发送人信息\",\"message\",\"object\",\"消息体\",\"group_id\",\"int64\",\"群号\",\"target_id\",\"int64\",\"消息目标(私聊)\",\"peer_id\",\"int64\",\"消息接收者,群聊是群号,私聊时是目标QQ\",\"peer_id是其他同类框架所表达的target_id!\"]},\"290\":{\"h\":\"Sender\",\"t\":[\"字段\",\"类型\",\"说明\",\"user_id\",\"int64\",\"QQ 号\",\"nickname\",\"string\",\"昵称\",\"sex\",\"string\",\"性别\",\"age\",\"int32\",\"年龄\",\"uid\",\"string\",\"UID\"]},\"291\":{\"h\":\"撤回消息\",\"t\":[\"该接口用于撤回消息。\"]},\"292\":{\"h\":\"API 端点\",\"t\":[\"/delete_msg\"]},\"293\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"message_id\",\"int32\",\"是\",\"消息 ID\"]},\"294\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。。\"]},\"295\":{\"h\":\"获取历史消息\"},\"296\":{\"h\":\"API 端点\",\"t\":[\"/get_history_msg\"]},\"297\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"message_type\",\"string\",\"是\",\"消息 类型\",\"user_id\",\"int64\",\"否\",\"私聊QQ\",\"group_id\",\"int64\",\"否\",\"群号\",\"count\",\"int32\",\"否\",\"获取的消息数量(默认为20)\",\"message_seq\",\"int32\",\"否\",\"起始消息的message_id(默认为0,表示从最后一条发言往前)\"]},\"298\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"messages\",\"Message[]\",\"消息集\"]},\"299\":{\"h\":\"Message\",\"t\":[\"字段\",\"类型\",\"说明\",\"time\",\"int64\",\"时间戳\",\"message_type\",\"string\",\"消息类型\",\"message_id\",\"int32\",\"消息 ID\",\"real_id\",\"int32\",\"真实 ID\",\"sender\",\"Object\",\"发送人信息\",\"message\",\"object\",\"消息体\",\"group_id\",\"int64\",\"群号\",\"target_id\",\"int64\",\"消息目标(私聊)\",\"peer_id\",\"int64\",\"消息接收者,群聊是群号,私聊时是目标QQ\",\"peer_id是其他同类框架所表达的target_id!\"]},\"300\":{\"h\":\"获取群聊历史消息\"},\"301\":{\"h\":\"API 端点\",\"t\":[\"/get_group_msg_history\"]},\"302\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"group_id\",\"int64\",\"是\",\"群号\",\"count\",\"int32\",\"否\",\"获取的消息数量(默认为20)\",\"message_seq\",\"int32\",\"否\",\"起始消息的message_id(默认为0,表示从最后一条发言往前)\"]},\"303\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"messages\",\"Message[]\",\"消息集\"]},\"304\":{\"h\":\"清除本地缓存消息\",\"t\":[\"该接口用于清除本地消息缓存。\"]},\"305\":{\"h\":\"API 端点\",\"t\":[\"/clear_msgs\"]},\"306\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"message_type\",\"string\",\"是\",\"消息 类型\",\"user_id\",\"int64\",\"否\",\"私聊QQ\",\"group_id\",\"int64\",\"否\",\"群号\"]},\"307\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。\"]},\"308\":{\"h\":\"获取合并转发消息内容\",\"t\":[\"获取合并转发内容\"]},\"309\":{\"h\":\"API 端点\",\"t\":[\"/get_forward_msg\"]},\"310\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"id\",\"string\",\"是\",\"消息资源ID(卡片消息里面的resId)\",\"由于QQ内部错误,该接口可能导致闪退等问题的出现!一般是闪退一次后再次重新启动便不再闪退,但是可能无法获取合并转发的内容!\"]},\"311\":{\"h\":\"响应\",\"t\":[\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0, \\\"data\\\": { \\\"messages\\\": [ { \\\"time\\\": 1699375697, \\\"message_type\\\": \\\"private\\\", \\\"message_id\\\": 123456, \\\"real_id\\\": 0, \\\"sender\\\": { \\\"user_id\\\": 114514, \\\"nickname\\\": \\\"伏秋洛~\\\", \\\"sex\\\": \\\"unknown\\\", \\\"age\\\": 0, \\\"uid\\\": \\\"u_xxxx\\\" }, \\\"message\\\": [ { \\\"type\\\": \\\"text\\\", \\\"data\\\": { \\\"text\\\": \\\"aaaaaaaaaa\\\" } } ], \\\"peer_id\\\": 114514, \\\"target_id\\\": 114514 } ] }, \\\"echo\\\": \\\"\\\" } \"]},\"312\":{\"h\":\"发送群聊合并转发\",\"t\":[\"发送群聊合并转发。\"]},\"313\":{\"h\":\"API 端点\",\"t\":[\"/send_group_forward_msg\"]},\"314\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"group_id\",\"int64\",\"是\",\"发送到的目标群号\",\"messages\",\"foward message[]\",\"合并转发消息集\"]},\"315\":{\"h\":\"响应\",\"t\":[\"由于QQ限制,该接口的响应结果暂不具备意义,其中:message_id不匹配、forward_id为空。\",\"字段\",\"类型\",\"说明\",\"message_id\",\"int32\",\"消息 ID\",\"forward_id\",\"int32\",\"转发 ID\",\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0, \\\"data\\\": { \\\"message_id\\\": 251425915, \\\"forward_id\\\": \\\"\\\" } } \"]},\"316\":{\"h\":\"示例\",\"t\":[\"直接引用消息的合并转发,id为消息id:\",\"[ { \\\"type\\\": \\\"node\\\", \\\"data\\\": { \\\"id\\\": \\\"123\\\" } }, { \\\"type\\\": \\\"node\\\", \\\"data\\\": { \\\"id\\\": \\\"456\\\" } } ] \",\"注意\",\"Shamrock 不同于 go-cqhttp ,消息节点无法自定义发送者QQ号(设置头像)与昵称。\",\"自定义消息合并转发:\",\"[ { \\\"type\\\": \\\"node\\\", \\\"data\\\": { \\\"content\\\": [ { \\\"type\\\": \\\"text\\\", \\\"data\\\": { \\\"text\\\": \\\"测试消息1\\\" } } ] } }, { \\\"type\\\": \\\"node\\\", \\\"data\\\": { \\\"content\\\": \\\"[CQ:image,file=xxxxx]测试消息2\\\" } } ] \",\"引用自定义混合合并转发:\",\"[ { \\\"type\\\": \\\"node\\\", \\\"data\\\": { \\\"content\\\": \\\"我是自定义消息\\\" } }, { \\\"type\\\": \\\"node\\\", \\\"data\\\": { \\\"id\\\": \\\"123\\\" } } ] \"]},\"317\":{\"h\":\"发送私聊合并转发\",\"t\":[\"发送私聊合并转发。\"]},\"318\":{\"h\":\"API 端点\",\"t\":[\"/send_private_forward_msg\"]},\"319\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"user_id\",\"int64\",\"是\",\"发送到的目标QQ\",\"messages\",\"foward message[]\",\"合并转发消息集\"]},\"320\":{\"h\":\"响应\",\"t\":[\"同 /send_private_forward_msg\"]},\"321\":{\"h\":\"其他接口\"},\"322\":{\"h\":\"获取城市ADCode\"},\"323\":{\"h\":\"API 端点\",\"t\":[\"/get_weather_city_code\"]},\"324\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"city\",\"string\",\"是\",\"城市\"]},\"325\":{\"h\":\"响应\",\"t\":[\"[ { \\\"adcode\\\": 10000, \\\"province\\\": \\\"广西\\\", \\\"city\\\": \\\"柳州\\\" } ] \"]},\"326\":{\"h\":\"获取天气\",\"t\":[\"该接口用于获取天气,该接口调用来自QQ官方服务。\"]},\"327\":{\"h\":\"API 端点\",\"t\":[\"/get_weather\"]},\"328\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"code\",\"string\",\"是\",\"ADCode\",\"city\",\"string\",\"否\",\"城市\"]},\"329\":{\"h\":\"响应\",\"t\":[\"{ \\\"weatherInfo\\\": { \\\"all_astro\\\": [], \\\"lifeindex_forecast_list\\\": [], \\\"weekly_astro\\\": [], \\\"ret\\\": 0, \\\"weather_info\\\": { \\\"temper\\\": \\\"16\\\", \\\"air_humidity\\\": \\\"98\\\", \\\"wind_power\\\": \\\"微风\\\", \\\"wind_direct\\\": \\\"西南风\\\", \\\"weather\\\": \\\"多云\\\", \\\"pubtime\\\": \\\"01:40\\\", \\\"updatetime\\\": 1695664205, \\\"weather_type\\\": \\\"多云\\\", \\\"weather_type_id\\\": \\\"202\\\", \\\"type_id_new\\\": 2, \\\"concrete_type\\\": 2, \\\"sunrise\\\": \\\"06:05\\\", \\\"sunset\\\": \\\"18:06\\\" }, \\\"air_info\\\": null, \\\"forecast_list\\\": { \\\"weatherForecast\\\": [ { \\\"day_weather\\\": \\\"阴\\\", \\\"night_weather\\\": \\\"多云\\\", \\\"day_temper\\\": \\\"22\\\", \\\"night_temper\\\": \\\"15\\\", \\\"day_wind_direct\\\": \\\"西南风\\\", \\\"night_wind_direct\\\": \\\"变向风\\\", \\\"day_wind_power\\\": \\\"微风\\\", \\\"night_wind_power\\\": \\\"微风\\\", \\\"sunrise_time\\\": \\\"06:05\\\", \\\"sunset_time\\\": \\\"18:06\\\", \\\"pubtime\\\": \\\"202309251800\\\", \\\"day\\\": 0, \\\"day_weather_type\\\": \\\"阴天\\\", \\\"night_weather_type\\\": \\\"多云\\\", \\\"day_weather_type_id\\\": \\\"203\\\", \\\"night_weather_type_id\\\": \\\"202\\\", \\\"day_type_id_new\\\": 3, \\\"day_concrete_type\\\": 3, \\\"night_type_id_new\\\": 2, \\\"night_concrete_type\\\": 2, \\\"pm\\\": \\\"82\\\", \\\"wind_power_desc\\\": \\\"\\\" }, ... ], \\\"updatetime\\\": 1695664205, \\\"tomorrowPrompt\\\": \\\"\\\", \\\"weeklyPrompt\\\": \\\"\\\" }, \\\"forecast\\\": { \\\"day_weather\\\": \\\"多云\\\", \\\"night_weather\\\": \\\"晴\\\", \\\"day_temper\\\": \\\"24\\\", \\\"night_temper\\\": \\\"16\\\", \\\"day_wind_direct\\\": \\\"变向风\\\", \\\"night_wind_direct\\\": \\\"变向风\\\", \\\"day_wind_power\\\": \\\"微风\\\", \\\"night_wind_power\\\": \\\"微风\\\", \\\"sunrise_time\\\": \\\"06:06\\\", \\\"sunset_time\\\": \\\"18:04\\\", \\\"pubtime\\\": \\\"202309251800\\\", \\\"day\\\": 1, \\\"day_weather_type\\\": \\\"多云\\\", \\\"night_weather_type\\\": \\\"晴\\\", \\\"day_weather_type_id\\\": \\\"202\\\", \\\"night_weather_type_id\\\": \\\"201\\\", \\\"day_type_id_new\\\": 2, \\\"day_concrete_type\\\": 2, \\\"night_type_id_new\\\": 1, \\\"night_concrete_type\\\": 1, \\\"pm\\\": \\\"146\\\", \\\"wind_power_desc\\\": \\\"\\\" }, \\\"hourinfo_list\\\": null, \\\"almanac\\\": \\\"\\\", \\\"warning_list\\\": { \\\"lst_warning\\\": [], \\\"last_proc_time\\\": 0 }, \\\"astro\\\": null, \\\"city\\\": \\\"北京\\\", \\\"area\\\": \\\"\\\", \\\"adcode\\\": 110000, \\\"area_id\\\": 101010100, \\\"en_name\\\": \\\"Beijing\\\", \\\"update_time\\\": 1695664205, \\\"tips_list\\\": null, \\\"lifeindex_list\\\": null, \\\"current_time\\\": 1695664515, \\\"user_weekly_astro\\\": null, \\\"weekly_summary\\\": null }, \\\"qrcode\\\": \\\"data:image/png;base64,...\\\", \\\"poster\\\": \\\"\\\", \\\"share\\\": { \\\"data\\\": { \\\"app\\\": \\\"com.tencent.weather.share\\\", \\\"config\\\": { \\\"autosize\\\": 0, \\\"ctime\\\": 1695664515, \\\"forward\\\": 0, \\\"round\\\": 0, \\\"token\\\": \\\"49441099828d62f0ded8112849bce839\\\" }, \\\"desc\\\": \\\"\\\", \\\"meta\\\": { \\\"share\\\": { \\\"adcode\\\": 110000, \\\"air_info\\\": null, \\\"area\\\": \\\"\\\", \\\"city\\\": \\\"北京\\\", \\\"current_time\\\": 1695664515, \\\"forecast_list\\\": { \\\"tomorrowPrompt\\\": \\\"\\\", \\\"updatetime\\\": 1695664205, \\\"weatherForecast\\\": [ { \\\"day\\\": 0, \\\"day_concrete_type\\\": 3, \\\"day_temper\\\": \\\"22\\\", \\\"day_type_id_new\\\": 3, \\\"day_weather\\\": \\\"阴\\\", \\\"day_weather_type\\\": \\\"阴天\\\", \\\"day_weather_type_id\\\": \\\"203\\\", \\\"day_wind_direct\\\": \\\"西南风\\\", \\\"day_wind_power\\\": \\\"微风\\\", \\\"night_concrete_type\\\": 2, \\\"night_temper\\\": \\\"15\\\", \\\"night_type_id_new\\\": 2, \\\"night_weather\\\": \\\"多云\\\", \\\"night_weather_type\\\": \\\"多云\\\", \\\"night_weather_type_id\\\": \\\"202\\\", \\\"night_wind_direct\\\": \\\"变向风\\\", \\\"night_wind_power\\\": \\\"微风\\\", \\\"pm\\\": \\\"82\\\", \\\"pubtime\\\": \\\"202309251800\\\", \\\"sunrise_time\\\": \\\"06:05\\\", \\\"sunset_time\\\": \\\"18:06\\\", \\\"wind_power_desc\\\": \\\"\\\" }, ... ], \\\"weeklyPrompt\\\": \\\"\\\" }, \\\"update_time\\\": 1695664205, \\\"weather_info\\\": { \\\"air_humidity\\\": \\\"98\\\", \\\"concrete_type\\\": 2, \\\"pubtime\\\": \\\"01:40\\\", \\\"sunrise\\\": \\\"06:05\\\", \\\"sunset\\\": \\\"18:06\\\", \\\"temper\\\": \\\"16\\\", \\\"type_id_new\\\": 2, \\\"updatetime\\\": 1695664205, \\\"weather\\\": \\\"多云\\\", \\\"weather_type\\\": \\\"多云\\\", \\\"weather_type_id\\\": \\\"202\\\", \\\"wind_direct\\\": \\\"西南风\\\", \\\"wind_power\\\": \\\"微风\\\" } } }, \\\"prompt\\\": \\\"[分享]北京 多云 16°\\\", \\\"ver\\\": \\\"1.0.0.1\\\", \\\"view\\\": \\\"share\\\" }, \\\"code\\\": 0 } } \"]},\"330\":{\"h\":\"[实验] 上传群图片\",\"t\":[\"该接口用于上传群聊图片, 注意该接口是上传群消息的图片,不是群文件,也不是群相册。\"]},\"331\":{\"h\":\"API 端点\",\"t\":[\"/upload_group_image\"]},\"332\":{\"h\":\"请求类型\",\"t\":[\"POST\"]},\"333\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"pic\",\"string\",\"是\",\"图片base64\",\"sender\",\"int64\",\"是\",\"QQ\",\"troop\",\"int64\",\"是\",\"图片发送到的群聊\"]},\"334\":{\"h\":\"获取 Cookie\"},\"335\":{\"h\":\"API 端点\",\"t\":[\"get_cookies\"]},\"336\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"domain\",\"string\",\"否\",\"域名\"]},\"337\":{\"h\":\"响应\"},\"338\":{\"h\":\"获取 CSRF 令牌\"},\"339\":{\"h\":\"API 端点\",\"t\":[\"get_csrf_token\"]},\"340\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"domain\",\"string\",\"否\",\"域名\"]},\"341\":{\"h\":\"响应\"},\"342\":{\"h\":\"获取Cookie\"},\"343\":{\"h\":\"API 端点\",\"t\":[\"get_cookies\"]},\"344\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"domain\",\"string\",\"否\",\"域名\"]},\"345\":{\"h\":\"响应\"},\"346\":{\"h\":\"获取 Cookie 与 CSRF 令牌\"},\"347\":{\"h\":\"API 端点\",\"t\":[\"get_credentials\"]},\"348\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"domain\",\"string\",\"否\",\"域名\"]},\"349\":{\"h\":\"响应\"},\"350\":{\"h\":\"请求与响应\",\"t\":[\"提示\",\"Shamrock 为您提供了一个支持 OneBot 标准的 HTTP API。 您可以通过发送 HTTP 请求来与 Shamrock 进行交互。\"]},\"351\":{\"h\":\"请求\",\"t\":[\"提示\",\"Shamrock 目前支持 GET 和 POST 两种请求方式。 在大部分情况下,您可以使用 GET 请求来与 Shamrock 进行交互。 但是,如果您需要向 Shamrock 发送大量数据,或者需要向 Shamrock 发送二进制数据,您需要使用 POST 请求。\"]},\"352\":{\"h\":\"GET 请求\",\"t\":[\"GET 请求的 URL 由以下部分组成:\",\"http://:/? \",\"链接中的含义如下:\",\":Shamrock 的 IP 地址或域名\",\":Shamrock 的 HTTP API 端口\",\":Shamrock 的 HTTP API 端点\",\":HTTP GET 请求的参数\"]},\"353\":{\"h\":\"POST 请求\",\"t\":[\"POST 请求的 URL 由以下部分组成:\",\"http://:/ \",\"链接中的含义如下:\",\":Shamrock 的 IP 地址或域名\",\":Shamrock 的 HTTP API 端口\",\":Shamrock 的 HTTP API 端点\"]},\"354\":{\"h\":\"请求格式\",\"t\":[\"POST 请求的数据格式为 JSON\",\"{ \\\"param1\\\": \\\"value1\\\", \\\"param2\\\": \\\"value2\\\", ... } \",\"POST 请求的数据格式为表单\",\"param1=value1¶m2=value2&... \",\"大多数情况下,推荐使用 JSON 格式的 POST 请求。\"]},\"355\":{\"h\":\"WebSocket 请求\",\"t\":[\"Shamrock 支持使用 WebSocket 进行通信。\",\"可选的 WebSocket 地址有两种:\",\"ws://:\",\"ws://:/api\",\"区别在于,/ 除了发送和响应 API 请求外,还支持事件上报功能。\"]},\"356\":{\"h\":\"请求格式\",\"t\":[\"Shamrock 使用 WebSocket 时,请求的数据格式为 JSON\",\"{ \\\"action\\\": \\\"send_private_msg\\\", // 请求 API 端点 \\\"params\\\": { // 请求参数 \\\"user_id\\\": 10000, \\\"message\\\": \\\"hello\\\" }, \\\"echo\\\": \\\"123456\\\" // 自定义的回显字段 } \",\"对于 echo 字段,Shamrock 会在响应中原样返回。\"]},\"357\":{\"h\":\"响应\",\"t\":[\"Shamrock 的响应格式为 JSON\",\"{ \\\"status\\\": \\\"ok\\\", // 状态,ok 为成功,其他将在下文中详细说明 \\\"retcode\\\": 0, // 返回码,0 为成功,非 0 为失败 \\\"msg\\\": \\\"\\\", // 错误信息,仅在 API 调用失败时出现 \\\"wording\\\": \\\"\\\", // 对错误信息的描述,仅在 API 调用失败时出现 \\\"data\\\": { // 响应数据 \\\"message_id\\\": 123456 }, \\\"echo\\\": \\\"123456\\\" // 请求中的回显字段 } \"]},\"358\":{\"h\":\"状态\",\"t\":[\"Shamrock 的响应状态有以下几种:\",\"ok:成功\",\"failed:失败\"]},\"359\":{\"h\":\"资源相关\",\"t\":[\"注意\",\"对于 Shamrock 尚未实现的 API,会在标题添加标记 \"]},\"360\":{\"h\":\"获取图片\",\"t\":[\"该接口用于获取图片,只能获取已缓存的图片。\"]},\"361\":{\"h\":\"API 端点\",\"t\":[\"/get_image\"]},\"362\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"file\",\"string\",\"是\",\"文件 MD5\"]},\"363\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"size\",\"int64\",\"文件大小\",\"url\",\"string\",\"文件 URL\",\"filename\",\"string\",\"文件 名称\"]},\"364\":{\"h\":\"检查是否可以发送图片\",\"t\":[\"该接口用于检查是否可以发送图片。\"]},\"365\":{\"h\":\"API 端点\",\"t\":[\"/can_send_image\"]},\"366\":{\"h\":\"参数\",\"t\":[\"提示\",\"该 API 无需参数\"]},\"367\":{\"h\":\"响应\",\"t\":[\"字段名\",\"数据类型\",\"说明\",\"yes\",\"boolean\",\"是或否\"]},\"368\":{\"h\":\"图片 OCR\",\"t\":[\"该接口用于图片 OCR。\"]},\"369\":{\"h\":\"API 端点\",\"t\":[\"/ocr_image\"]},\"370\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"image\",\"string\",\"图片ID\"]},\"371\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"texts\",\"List\",\"OCR结果\",\"language\",\"string\",\"语言\"]},\"372\":{\"h\":\"TextDetection\",\"t\":[\"字段\",\"类型\",\"说明\",\"text\",\"string\",\"文本\",\"confidence\",\"int32\",\"置信度\",\"coordinates\",\"vector2[]\",\"二维数组表示的坐标\"]},\"373\":{\"h\":\"获取语音\",\"t\":[\"该接口用于获取语音。\"]},\"374\":{\"h\":\"API 端点\",\"t\":[\"/get_record\"]},\"375\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"file\",\"string\",\"是\",\"文件 MD5\",\"out_format\",\"string\",\"是\",\"输出格式\"]},\"376\":{\"h\":\"响应\",\"t\":[\"字段\",\"类型\",\"说明\",\"file\",\"string\",\"文件路径\",\"url\",\"string\",\"文件 URL\"]},\"377\":{\"h\":\"检查是否可以发送语音\",\"t\":[\"该接口用于检查是否可以发送语音。\"]},\"378\":{\"h\":\"API 端点\",\"t\":[\"/can_send_record\"]},\"379\":{\"h\":\"参数\",\"t\":[\"提示\",\"该 API 无需参数\"]},\"380\":{\"h\":\"响应\",\"t\":[\"字段名\",\"数据类型\",\"说明\",\"yes\",\"boolean\",\"是或否\"]},\"381\":{\"h\":\"API 端点\",\"t\":[\"/get_record\",\"提示\",\"要使用此接口, 通常需要安装 ffmpeg, 请参考 OneBot 实现的相关说明。\"]},\"382\":{\"h\":\"参数\",\"t\":[\"字段名\",\"数据类型\",\"默认值\",\"说明\",\"file\",\"string\",\"-\",\"收到的语音文件名(消息段的 file 参数), 如 0B38145AA44505000B38145AA4450500.silk\",\"out_format\",\"string\",\"-\",\"要转换到的格式, 目前支持 mp3、amr、wma、m4a、spx、ogg、wav、flac\"]},\"383\":{\"h\":\"响应\",\"t\":[\"字段名\",\"数据类型\",\"说明\",\"file\",\"string\",\"转换后的语音文件路径, 如 /home/somebody/cqhttp/data/record/0B38145AA44505000B38145AA4450500.mp3\"]},\"384\":{\"h\":\"获取文件\",\"t\":[\"该接口用于获取文件。\"]},\"385\":{\"h\":\"获取视频\",\"t\":[\"该接口用于获取视频。\"]},\"386\":{\"h\":\"获取缩略图\",\"t\":[\"该接口用于获取缩略图。\"]},\"387\":{\"h\":\"Shamrock 接口\"},\"388\":{\"h\":\"切换账号\",\"t\":[\"某个账号因为某种原因寄了,允许切换备用能源!\"]},\"389\":{\"h\":\"API端点\",\"t\":[\"/switch_account\"]},\"390\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"默认值\",\"user_id\",\"int64\",\"是\",\"QQ\"]},\"391\":{\"h\":\"响应\",\"t\":[\"是否正常执行切换账号请求的响应。\"]},\"392\":{\"h\":\"上传文件到缓存目录 (HTTP)\"},\"393\":{\"h\":\"API 端点\",\"t\":[\"/upload_file\",\"注意\",\"该接口仅仅为HTTP POST提供,WebSocket请使用另外一个。\"]},\"394\":{\"h\":\"参数\",\"t\":[\"以file格式上传文件,不要使用binary。\"]},\"395\":{\"h\":\"响应\",\"t\":[\"{ \\\"file\\\": \\\"/scard/Android/data/com.tencent.mobileqq/Tencent/Shamrock/xxxx\\\" } \"]},\"396\":{\"h\":\"上传文件到缓存目录 (WebSocket + HTTP)\"},\"397\":{\"h\":\"API 端点\",\"t\":[\"/upload_file_to_shamrock\",\"注意\",\"该接口仅仅为WebSocket提供。\"]},\"398\":{\"h\":\"参数\",\"t\":[\"名称\",\"类型\",\"作用\",\"md5\",\"string\",\"文件hex格式的md5值,32长度的字符串,整个文件的md5\",\"offset\",\"uint64\",\"文件分段上传偏移,默认值为0,从头上传\",\"chunk\",\"string\",\"文件分段上传数据块(base64),无需开头base64://\",\"file_size\",\"uint64\",\"总文件大小\"]},\"399\":{\"h\":\"响应数据\",\"t\":[\"名称\",\"类型\",\"作用\",\"file_size\",\"uint64\",\"总文件大小\",\"finish\",\"bool\",\"是否完成上传\",\"path\",\"string\",\"该文件在安卓系统(shamrock环境)的路径\"]},\"400\":{\"h\":\"让Shamrock下载文件到缓存目录\",\"t\":[\"用法二选一:\",\"1.仅发送url,由Shamrock自己访问该url来下载文件\",\"2.仅发送文件base64,Shamrock解码后直接转存为文件\",\"url和base64至少一个不能为空\",\"同时发送url和base64时,使用url\"]},\"401\":{\"h\":\"API 端点\",\"t\":[\"/download_file\"]},\"402\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"默认值\",\"url\",\"string\",\"否\",\"下载地址\",\"name\",\"string\",\"否\",\"文件名称\",\"文件md5\",\"root\",\"string\",\"否\",\"保存文件的根目录,注意请确保QQ可以访问\",\"Shamrock缓存目录\",\"base64\",\"string\",\"否\",\"文件base64内容\",\"thread_cnt\",\"int32\",\"否\",\"下载的线程数量\",\"headers\",\"string or array\",\"否\",\"请求头\"]},\"403\":{\"h\":\"headers为string时示例\",\"t\":[\"\\\"headers\\\": \\\"User-Agent=YOUR_UA[\\\\r\\\\n]Referer=https://www.baidu.com\\\" \"]},\"404\":{\"h\":\"headers为array时示例\",\"t\":[\"\\\"headers\\\": [ \\\"User-Agent=YOUR_UA\\\", \\\"Referer=https://www.baidu.com\\\" ] \",\"[\\\\r\\\\n] 为换行符, 使用http请求时请注意编码\"]},\"405\":{\"h\":\"响应\",\"t\":[\"{ \\\"file\\\": \\\"/scard/Android/data/com.tencent.mobileqq/Tencent/Shamrock/xxxx\\\" } \",\"通过这个API下载的文件能直接放入CQ码作为图片发送\",\"调用后会阻塞直到下载完成后才会返回数据,请注意下载大文件时的超时\"]},\"406\":{\"h\":\"清除缓存\"},\"407\":{\"h\":\"API 端点\",\"t\":[\"clean_cache\"]},\"408\":{\"h\":\"参数\",\"t\":[\"该接口没有参数\"]},\"409\":{\"h\":\"响应\",\"t\":[\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0 } \"]},\"410\":{\"h\":\"获取手机电池信息\"},\"411\":{\"h\":\"API 端点\",\"t\":[\"/get_device_battery\"]},\"412\":{\"h\":\"响应\",\"t\":[\"{ \\\"battery\\\": 44, \\\"scale\\\": 3102000, \\\"status\\\": 2 } \"]},\"413\":{\"h\":\"获取Shamerock启动时间\"},\"414\":{\"h\":\"API 端点\",\"t\":[\"/get_start_time\"]},\"415\":{\"h\":\"请求类型\",\"t\":[\"POST | GET | 不支持WS\"]},\"416\":{\"h\":\"响应\",\"t\":[\"{ \\\"status\\\": \\\"ok\\\", \\\"retcode\\\": 0, \\\"data\\\": 1696749716155 } \"]},\"417\":{\"h\":\"获取Shamrock日志\"},\"418\":{\"h\":\"API 端点\",\"t\":[\"/log\"]},\"419\":{\"h\":\"请求类型\",\"t\":[\"POST | GET | 不支持WS\"]},\"420\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"默认值\",\"start\",\"int32\",\"否\",\"开始的行\",\"recent\",\"bool\",\"否\",\"是否只显示最近的日志\",\"false\"]},\"421\":{\"h\":\"远程Shell执行\",\"t\":[\"该接口默认关闭,需要在实验室设置手动打开!注意,该接口可能导致您的隐私数据泄露,请勿公开在未知的网络,或者泄露您的token。\"]},\"422\":{\"h\":\"请求类型\",\"t\":[\"POST\"]},\"423\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"默认值\",\"cmd\",\"array 或 string\",\"是\",\"命令内容\",\"dir\",\"string\",\"是\",\"当前所处的目录\"]},\"424\":{\"h\":\"关闭Shamrock\"},\"425\":{\"h\":\"API 端点\",\"t\":[\"/shut\"]},\"426\":{\"h\":\"请求类型\",\"t\":[\"POST | GET | 不支持WS\"]},\"427\":{\"h\":\"响应\",\"t\":[\"无响应\"]},\"428\":{\"h\":\"获取所有支持的动作\"},\"429\":{\"h\":\"API 端点\",\"t\":[\"/get_supported_actions\"]},\"430\":{\"h\":\"响应\",\"t\":[\"{\\n\\\"status\\\": \\\"ok\\\",\\n\\\"retcode\\\": 0,\\n\\\"data\\\": [\\n\\\"set_group_ban\\\",\\n\\\"clean_cache\\\",\\n\\\"clear_msgs\\\",\\n\\\"create_group_file_folder\\\",\\n\\\"delete_essence_message\\\",\\n\\\"delete_essence_msg\\\",\\n\\\"delete_group_file\\\",\\n\\\"delete_group_folder\\\",\\n\\\"delete_msg\\\",\\n\\\"delete_message\\\",\\n\\\"download_file\\\",\\n\\\"fav.add_image_msg\\\",\\n\\\"fav.add_text_msg\\\",\\n\\\"fav.get_item_content\\\",\\n\\\"fav.get_item_list\\\",\\n\\\"get_csrf_token\\\",\\n\\\"get_cookie\\\",\\n\\\"get_cookies\\\",\\n\\\"get_credentials\\\",\\n\\\"get_device_battery\\\",\\n\\\"get_essence_message_list\\\",\\n\\\"get_essence_msg_list\\\",\\n\\\"get_forward_msg\\\",\\n\\\"get_friend_list\\\",\\n\\\"get_friend_system_msg\\\",\\n\\\"get_group_file_system_info\\\",\\n\\\"get_group_file_url\\\",\\n\\\"get_group_msg_history\\\",\\n\\\"get_group_notice\\\",\\n\\\"_get_group_notice\\\",\\n\\\"get_group_at_all_remain\\\",\\n\\\"get_group_root_files\\\",\\n\\\"get_group_files_by_folder\\\",\\n\\\"get_group_system_msg\\\",\\n\\\"get_guild_list\\\",\\n\\\"get_guild_service_profile\\\",\\n\\\"get_history_msg\\\",\\n\\\"get_http_cookies\\\",\\n\\\"get_image\\\",\\n\\\"get_latest_events\\\",\\n\\\"get_login_info\\\",\\n\\\"get_model_show\\\",\\n\\\"_get_model_show\\\",\\n\\\"get_msg\\\",\\n\\\"get_message\\\",\\n\\\"get_not_joined_group_info\\\",\\n\\\"_get_online_clients\\\",\\n\\\"get_profile_card\\\",\\n\\\"get_user_info\\\",\\n\\\"get_prohibited_member_list\\\",\\n\\\"get_record\\\",\\n\\\"get_self_info\\\",\\n\\\"status\\\",\\n\\\"get_status\\\",\\n\\\"_get_stranger_info\\\",\\n\\\"get_stranger_info\\\",\\n\\\"get_supported_actions\\\",\\n\\\"get_troop_honor_info\\\",\\n\\\"get_group_honor_info\\\",\\n\\\"get_group_info\\\",\\n\\\"get_group_list\\\",\\n\\\"get_group_member_info\\\",\\n\\\"get_group_member_list\\\",\\n\\\"get_uid\\\",\\n\\\"get_uin_by_uid\\\",\\n\\\"get_version\\\",\\n\\\"get_version_info\\\",\\n\\\"get_weather\\\",\\n\\\"get_weather_city_code\\\",\\n\\\"poke\\\",\\n\\\"is_blacklist_uin\\\",\\n\\\"kick_group_member\\\",\\n\\\"set_group_kick\\\",\\n\\\"set_group_leave\\\",\\n\\\"leave_group\\\",\\n\\\"set_group_card\\\",\\n\\\"set_group_name\\\",\\n\\\".handle_quick_operation_async\\\",\\n\\\"rename_group_folder\\\",\\n\\\"restart_me\\\",\\n\\\"sanc_qrcode\\\",\\n\\\"send_forward_msg\\\",\\n\\\"send_group_forward_msg\\\",\\n\\\"send_group_msg\\\",\\n\\\"send_group_message\\\",\\n\\\"send_group_announcement\\\",\\n\\\"send_group_notice\\\",\\n\\\"send_group_sign\\\",\\n\\\"send_like\\\",\\n\\\"send_message\\\",\\n\\\"send_msg\\\",\\n\\\"send_private_forward_msg\\\",\\n\\\"send_private_message\\\",\\n\\\"send_private_msg\\\",\\n\\\"set_essence_message\\\",\\n\\\"set_essence_msg\\\",\\n\\\"set_friend_add_request\\\",\\n\\\"set_group_add_request\\\",\\n\\\"set_group_admin\\\",\\n\\\"set_group_comment_face\\\",\\n\\\"set_group_special_title\\\",\\n\\\"set_group_whole_ban\\\",\\n\\\"_set_model_show\\\",\\n\\\"set_qq_profile\\\",\\n\\\"switch_account\\\",\\n\\\"test\\\",\\n\\\"upload_group_file\\\",\\n\\\"upload_private_file\\\"\\n],\\n\\\"echo\\\": \\\"\\\"\\n}\"]},\"431\":{\"h\":\"用户相关\",\"t\":[\"注意\",\"对于 Shamrock 尚未实现的 API,会在标题添加标记 \"]},\"432\":{\"h\":\"删除好友\",\"t\":[\"该接口用于删除好友。\"]},\"433\":{\"h\":\"API 端点\",\"t\":[\"/delete_friend\"]},\"434\":{\"h\":\"参数\",\"t\":[\"字段名\",\"数据类型\",\"默认值\",\"说明\",\"user_id\",\"int64\",\"-\",\"好友 QQ 号\"]},\"435\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。\"]},\"436\":{\"h\":\"删除单向好友\",\"t\":[\"该接口用于删除单向好友。\"]},\"437\":{\"h\":\"API 端点\",\"t\":[\"/delete_unidirectional_friend\"]},\"438\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"说明\",\"user_id\",\"int64\",\"单向好友QQ号\"]},\"439\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。\"]},\"440\":{\"h\":\"点赞资料卡\"},\"441\":{\"h\":\"API 端点\",\"t\":[\"send_like\"]},\"442\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"必须\",\"说明\",\"time\",\"int32\",\"是\",\"点赞次数\",\"user_id\",\"int64\",\"是\",\"点赞的目标用户\"]},\"443\":{\"h\":\"响应\",\"t\":[\"该接口将返回处理结果,其中 data 字段无数据。\"]},\"444\":{\"h\":\"事件\"},\"445\":{\"h\":\"目录\",\"t\":[\"通用数据\",\"消息事件\",\"通知事件\",\"请求事件\"]},\"446\":{\"h\":\"通用数据\"},\"447\":{\"h\":\"所有上报\",\"t\":[\"所有上报事件都包含以下字段:\",\"字段\",\"类型\",\"说明\",\"time\",\"int64\",\"时间戳\",\"self_id\",\"int64\",\"机器人QQ\",\"post_type\",\"string\",\"上报类型\",\"提示\",\"post_type 为 message 或 message_sent 时,数据是一致的。 区别在于 message 是收到的消息,message_sent 是发送的消息。\",\"默认情况下,Shamrock 只会上报 message 类型的消息。\"]},\"448\":{\"h\":\"事件类型\"},\"449\":{\"h\":\"PostType\",\"t\":[\"类型\",\"说明\",\"message\",\"收到消息\",\"message_sent\",\"发送消息\",\"notice\",\"通知\",\"request\",\"请求\"]},\"450\":{\"h\":\"MessageType\",\"t\":[\"类型\",\"说明\",\"private\",\"私聊消息\",\"group\",\"群消息\"]},\"451\":{\"h\":\"MessageSubType\",\"t\":[\"类型\",\"说明\",\"friend\",\"好友消息\",\"normal\",\"群消息\",\"anonymous\",\"匿名消息\",\"group\",\"群临时消息\",\"group_self\",\"群消息(自身操作)\",\"notice\",\"系统提示\"]},\"452\":{\"h\":\"NoticeType\",\"t\":[\"类型\",\"说明\",\"group_upload\",\"群文件上传\",\"group_admin\",\"群管理员变动\",\"group_decrease\",\"群成员减少\",\"group_increase\",\"群成员增加\",\"group_ban\",\"群禁言\",\"group_recall\",\"群消息撤回\",\"group_card\",\"群成员名片变动\",\"friend_add\",\"好友添加\",\"friend_recall\",\"好友撤回\",\"offline_file\",\"接收到离线文件包\",\"client_status\",\"客户端状态\",\"essence\",\"精华消息\",\"notify\",\"系统通知\"]},\"453\":{\"h\":\"NoticeNotifySubType\",\"t\":[\"类型\",\"说明\",\"honor\",\"群荣誉变更\",\"poke\",\"戳一戳\",\"lucky_king\",\"运气王\",\"title\",\"群头衔变更\"]},\"454\":{\"h\":\"RequestType\",\"t\":[\"类型\",\"说明\",\"friend\",\"好友请求\",\"group\",\"群请求\"]},\"455\":{\"h\":\"数据结构\"},\"456\":{\"h\":\"MessageSender\",\"t\":[\"字段\",\"类型\",\"说明\",\"user_id\",\"int64\",\"发送者 QQ 号\",\"nickname\",\"string\",\"发送者昵称\",\"如果是群消息,还会包含以下字段:\",\"字段\",\"类型\",\"说明\",\"card\",\"string\",\"发送者群名片\",\"level\",\"string\",\"发送者等级\",\"role\",\"string\",\"发送者角色\",\"title\",\"string\",\"发送者头衔\",\"如果是频道消息,则会包含以下字段:\",\"字段\",\"类型\",\"说明\",\"tiny_id\",\"string\",\"发送者TinyId\"]},\"457\":{\"h\":\"Post_Message_TempSource\",\"t\":[\"类型\",\"来源\",\"0\",\"群聊\",\"1\",\"QQ咨询\",\"2\",\"查找\",\"3\",\"QQ电影\",\"4\",\"热聊\",\"6\",\"验证消息\",\"7\",\"多人聊天\",\"8\",\"约会\",\"9\",\"通讯录\"]},\"458\":{\"h\":\"消息事件\",\"t\":[\"提示\",\"所有上报事件都包含通用数据,详见 通用数据。 包含在通用数据中的字段不会在下面的表格中重复出现。\"]},\"459\":{\"h\":\"消息事件\",\"t\":[\"字段\",\"类型\",\"说明\",\"message_type\",\"string\",\"消息类型\",\"sub_type\",\"string\",\"消息子类型\",\"message_id\",\"int64\",\"消息 ID\",\"user_id\",\"int64\",\"发送者 QQ 号(在频道中,则为发送者的Tiny ID)\",\"tiny_id\",\"int64\",\"发送者的Tiny ID(频道)\",\"message\",\"object\",\"消息内容\",\"raw_message\",\"string\",\"CQ 码格式消息\",\"font\",\"int32\",\"字体\",\"sender\",\"object\",\"发送人信息\",\"group_id\",\"int64\",\"群号\",\"target_id\",\"int64\",\"消息目标(私聊)\",\"temp_source\",\"int32\",\"临时聊天来源(私聊)\",\"peer_id\",\"int64\",\"消息接收者,群聊是群号,私聊时是目标QQ\"]},\"460\":{\"h\":\"私聊消息\",\"t\":[\"当 message_type 为 private 时,表示收到了私聊消息。\"]},\"461\":{\"h\":\"群消息\",\"t\":[\"当 message_type 为 group 时,表示收到了群消息。\"]},\"462\":{\"h\":\"私聊消息\",\"t\":[\"当 message_type 为 less 时,表示收到了群消息。\"]},\"463\":{\"h\":\"频道消息\",\"t\":[\"当 message_type 为 guild 时,表示收到了群消息。\"]},\"464\":{\"h\":\"快速回复\",\"t\":[\"Shamrock 提供了快速回复的功能,可以在收到消息时快速回复消息。\",\"字段\",\"类型\",\"说明\",\"reply\",\"string\",\"回复内容\",\"auto_escape\",\"bool\",\"是否自动转义\",\"auto_reply\",\"bool\",\"是否自动回复到消息\"]},\"465\":{\"h\":\"快速操作\",\"t\":[\"Shamrock 提供了快速操作的功能,可以在收到消息时快速执行操作。\",\"字段\",\"类型\",\"说明\",\"reply\",\"string\",\"回复内容\",\"auto_escape\",\"bool\",\"是否自动转义\",\"at_sender\",\"bool\",\"是否 @发送者\",\"delete\",\"bool\",\"是否撤回消息\",\"kick\",\"bool\",\"是否踢出发送者\",\"ban\",\"bool\",\"是否禁言发送者\",\"ban_duration\",\"int64\",\"禁言时长(秒)\"]},\"466\":{\"h\":\"通知事件\",\"t\":[\"注意\",\"对于 Shamrock 未实现的事件,会在标题添加标记 \",\"提示\",\"所有上报事件都包含通用数据,详见 通用数据。 包含在通用数据中的字段不会在下面的表格中重复出现。\"]},\"467\":{\"h\":\"私聊消息撤回\",\"t\":[\"当 notice_type 为 friend_recall 时,表示收到了私聊消息撤回事件。\",\"字段\",\"类型\",\"说明\",\"user_id\",\"int64\",\"好友 QQ 号\",\"operator_id\",\"int64\",\"操作者 QQ 号\",\"message_id\",\"int64\",\"消息 ID\"]},\"468\":{\"h\":\"群聊消息撤回\",\"t\":[\"当 notice_type 为 group_recall 时,表示收到了群聊消息撤回事件。\",\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"user_id\",\"int64\",\"发送者 QQ 号\",\"operator_id\",\"int64\",\"操作者 QQ 号\",\"message_id\",\"int64\",\"消息 ID\"]},\"469\":{\"h\":\"群组成员增加\",\"t\":[\"当 notice_type 为 group_increase 时,表示收到了群组成员增加事件。\",\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"user_id\",\"int64\",\"新增成员 QQ\",\"operator_id\",\"int64\",\"操作者 QQ 号\",\"operator_uid\",\"string\",\"操作者 UID\",\"user_uid\",\"string\",\"新成员 UID\",\"sub_type\",\"string\",\"子类型(approve/invite)\"]},\"470\":{\"h\":\"群组成员减少\",\"t\":[\"当 notice_type 为 group_decrease 时,表示收到了群组成员减少事件。\",\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"user_id\",\"int64\",\"减少成员 QQ\",\"operator_id\",\"int64\",\"操作者 QQ 号\",\"operator_uid\",\"string\",\"操作者 UID\",\"user_uid\",\"string\",\"新成员 UID\",\"sub_type\",\"string\",\"子类型(leave/kick/kick_me)\"]},\"471\":{\"h\":\"群组管理员变动\",\"t\":[\"当 notice_type 为 group_admin 时,表示收到了群组管理员变动事件。\",\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"user_id\",\"int64\",\"变动成员 QQ\",\"sub_type\",\"string\",\"子类型(set/unset)\"]},\"472\":{\"h\":\"群文件上传\",\"t\":[\"当 notice_type 为 group_upload 时,表示收到了群文件上传事件。\",\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"user_id\",\"int64\",\"上传者 QQ\",\"file\",\"object\",\"群文件信息\"]},\"473\":{\"h\":\"群文件信息结构体\",\"t\":[\"字段名\",\"数据类型\",\"说明\",\"id\",\"string\",\"文件 ID\",\"name\",\"string\",\"文件名\",\"size\",\"int64\",\"文件大小 ( 字节数 )\",\"busid\",\"int64\",\"busid ( 目前不清楚有什么作用 )\",\"url\",\"string\",\"下载地址\"]},\"474\":{\"h\":\"私聊文件上传\",\"t\":[\"当 notice_type 为 private_upload 时,表示收到了群文件上传事件。\",\"字段\",\"类型\",\"说明\",\"user_id\",\"int64\",\"上传者 QQ\",\"sender\",\"int64\",\"上传者 QQ\",\"private_file\",\"object\",\"私聊文件信息\"]},\"475\":{\"h\":\"私聊文件信息结构体\",\"t\":[\"字段名\",\"数据类型\",\"说明\",\"id\",\"string\",\"文件 ID\",\"name\",\"string\",\"文件名\",\"size\",\"int64\",\"文件大小 ( 字节数 )\",\"url\",\"string\",\"下载地址\",\"sub_id\",\"string\",\"子文件ID\",\"exppire\",\"int64\",\"文件过期时间\"]},\"476\":{\"h\":\"群禁言\",\"t\":[\"当 notice_type 为 group_ban 时,表示收到了群禁言事件。\",\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"user_id\",\"int64\",\"被禁言成员 QQ\",\"operator_id\",\"int64\",\"操作者 QQ\",\"duration\",\"int64\",\"禁言时长(秒)\",\"sub_type\",\"string\",\"子类型(ban/lift_ban)\"]},\"477\":{\"h\":\"群成员名片变动\",\"t\":[\"当 notice_type 为 group_card 时,表示收到了群成员名片变动事件。\",\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"user_id\",\"int64\",\"变动成员 QQ\",\"card_new\",\"string\",\"新名片\",\"card_old\",\"string\",\"旧名片\"]},\"478\":{\"h\":\"好友添加\",\"t\":[\"当 notice_type 为 friend_add 时,表示收到了好友添加事件。\",\"字段\",\"类型\",\"说明\",\"user_id\",\"int64\",\"新添加好友 QQ 号\"]},\"479\":{\"h\":\"收到离线文件\",\"t\":[\"当 notice_type 为 offline_file 时,表示收到了离线文件事件。\",\"字段\",\"类型\",\"说明\",\"user_id\",\"int64\",\"发送者 QQ\",\"file\",\"object\",\"文件信息\"]},\"480\":{\"h\":\"文件信息\",\"t\":[\"字段\",\"类型\",\"说明\",\"name\",\"string\",\"文件名\",\"size\",\"int64\",\"文件大小\",\"url\",\"string\",\"下载链接\"]},\"481\":{\"h\":\"精华消息\",\"t\":[\"当 notice_type 为 essence 时,表示收到了精华消息事件。\",\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"sender_id\",\"int64\",\"发送者 QQ\",\"operator_id\",\"int64\",\"操作者 QQ\",\"message_id\",\"int64\",\"消息 ID\",\"sub_type\",\"string\",\"子类型(add/delete)\"]},\"482\":{\"h\":\"客户端状态\",\"t\":[\"当 notice_type 为 client_status 时,表示收到了客户端状态事件。\",\"字段\",\"类型\",\"说明\",\"client\",\"object\",\"客户端信息\",\"online\",\"bool\",\"在线状态\"]},\"483\":{\"h\":\"头像戳一戳\",\"t\":[\"当 notice_type 为 notify 且 sub_type 为 poke 时,表示收到了头像戳一戳事件。\",\"字段\",\"类型\",\"说明\",\"user_id\",\"int64\",\"发送者 QQ\",\"sender_id\",\"int64\",\"好友 QQ (仅私聊)\",\"group_id\",\"int64\",\"群号(仅群聊)\",\"target_id\",\"int64\",\"被戳者 QQ\",\"poke_detail\",\"PokeDetail\",\"戳一戳的详细信息\"]},\"484\":{\"h\":\"PokeDetail\",\"t\":[\"字段\",\"类型\",\"说明\",\"action\",\"string\",\"操作名称,如“戳了戳”\",\"suffix\",\"string\",\"后缀,未设置则未空\",\"action_img_url\",\"string\",\"操作图标\"]},\"485\":{\"h\":\"群红包运气王\",\"t\":[\"当 notice_type 为 notify 且 sub_type 为 lucky_king 时,表示收到了群红包运气王事件。\",\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"user_id\",\"int64\",\"发送者\",\"target_id\",\"int64\",\"运气王\"]},\"486\":{\"h\":\"群荣誉变更\",\"t\":[\"当 notice_type 为 notify 且 sub_type 为 honor 时,表示收到了群荣誉变更事件。\",\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"user_id\",\"int64\",\"操作者\",\"honor_type\",\"string\",\"荣誉类型\"]},\"487\":{\"h\":\"群头衔变更\",\"t\":[\"当 notice_type 为 notify 且 sub_type 为 title 时,表示收到了群头衔变更事件。\",\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"user_id\",\"int64\",\"操作者\",\"title\",\"string\",\"获得头衔\"]},\"488\":{\"h\":\"请求事件\",\"t\":[\"注意\",\"对于 Shamrock 未实现的事件,会在标题添加标记 \",\"提示\",\"所有上报事件都包含通用数据,详见 通用数据。 包含在通用数据中的字段不会在下面的表格中重复出现。\"]},\"489\":{\"h\":\"加好友请求\",\"t\":[\"当 request_type 为 friend 时,表示收到了加好友请求。\",\"字段\",\"类型\",\"说明\",\"user_id\",\"int64\",\"请求者 QQ 号\",\"comment\",\"string\",\"验证信息\",\"flag\",\"string\",\"请求 flag\"]},\"490\":{\"h\":\"快速处理\",\"t\":[\"Shamrock 提供了快速处理的功能,可以在收到请求时快速处理请求。\",\"字段\",\"类型\",\"说明\",\"approve\",\"bool\",\"是否同意\",\"remark\",\"string\",\"备注\"]},\"491\":{\"h\":\"加群请求/邀请\",\"t\":[\"当 request_type 为 group 时,表示收到了加群请求/邀请。\",\"字段\",\"类型\",\"说明\",\"group_id\",\"int64\",\"群号\",\"user_id\",\"int64\",\"请求者 QQ 号\",\"comment\",\"string\",\"验证信息\",\"flag\",\"string\",\"请求 flag\",\"sub_type\",\"string\",\"子类型(add/invite)\"]},\"492\":{\"h\":\"快速处理\",\"t\":[\"Shamrock 提供了快速处理的功能,可以在收到请求时快速处理请求。\",\"字段\",\"类型\",\"说明\",\"approve\",\"bool\",\"是否同意\",\"reason\",\"string\",\"拒绝理由\"]},\"493\":{\"h\":\"指南\"},\"494\":{\"h\":\"目录\",\"t\":[\"快速开始\",\"应用配置\",\"常见问题\"]},\"495\":{\"h\":\"应用配置\",\"t\":[\"提示\",\"Shamrock 提供了一个图形化的配置界面,可进行简单的配置操作。 大部分配置简单易于理解,我们仅仅介绍部分难于理解的配置选项。\"]},\"496\":{\"h\":\"配置选项\"},\"497\":{\"h\":\"强制平板模式\",\"t\":[\"让 QQ 客户端 识别设备为平板,使其账号可在安卓和平板同时在线。\",\"提示\",\"除了 WebSocket 相关功能,其他功能的配置进行修改立即生效,无需重新启动 QQ 。 不建议使用 CQ 码,因为在新一代机器人设计理念中,该操作过于落后,可能会出现许多问题。\",\"注意\",\"被动 WebSocket 在断线之后,每隔 5 秒尝试重新连接。\"]},\"498\":{\"h\":\"目录定义\",\"t\":[\"内部存储目录: /storage/emulated/0 或 /sdcard\",\"QQ 主目录: 内部存储目录 + /Android/data/com.tencent.mobileqq\",\"Shamrock 主目录: QQ主目录 + /Tencent/Shamrock\"]},\"499\":{\"h\":\"配置文件\",\"t\":[\"将下方 JSON 文件创建在 Shamrock 主目录 + /config.json 请确保 JSON 格式正确。\",\"{ rules: { group_rule: { black_list: [12345678], // 如果群号是`12345678`就跳过了哦! white_list: [] }, private_rule: { black_list: [12345678], white_list: [] } }, default_token: null, active_websocket: { port: 5800, // 主动WS监听的端口 token: 'aaaa1111,bbbb1111', // 同时允许两个token可使用|或,作为分割 tokens: ['aaaa1111', 'aaaa2222'], // 使用tokens实现多token,优先级比上面那个高 heartbeat_interval: 15000 // 设置为null则默认15000毫秒作为心跳间隔,0则为无心跳 }, passive_websocket: [ { address: 'ws://xxxxxxxxx' // 这里是个例子,如果默认tk存在则使用默认token鉴权 }, { address: 'ws://aaaaaaaaa', token: 'aaa666', // 提供了特例化token,将不使用默认token heartbeat_interval: 15000 // 设置为null则默认15000毫秒作为心跳间隔,0则为无心跳 } ], 'allow-temp-session': false // 是否允许临时消息 } \",\"参数名称\",\"类型\",\"作用\",\"例子\",\"default_token\",\"string\",\"默认 token ,HTTP接口/主被动WS 如果未单独定义 token ,则使用默认 token\",\"aaa123456\",\"记得把注释删掉哦?JSON5貌似也没有完全支持呢?该配置文件采用Json5标准!\"]},\"500\":{\"h\":\"WebSocket认证方法\",\"t\":[\"在 HTTP Upgrade 请求头中添加 access_token 或 ticket 或 Authorization 头\",\"例:\",\"GET / HTTP/1.1 Host: 192.168.3.4 Upgrade: websocket Connection: upgrade Sec-WebSocket-Key: wwwwwwwwwwwwwwwwwwwwww== Sec-WebSocket-Version: 13 Authorization: aaaa1111 \"]},\"501\":{\"h\":\"数据目录\",\"t\":[\"大部分 Shamrock 的数据/缓存保存在 Shamrock 主目录 其中的日志可作为 Issue 内容,截取部分提交。\",\". ├── tmpfiles # 临时文件目录 │ ├── logs # 日志目录 │ │ └── xxx.log # 日志文件 ├── config.json # 配置文件 \"]},\"502\":{\"h\":\"常见问题\"},\"503\":{\"h\":\"支持的QQ版本\",\"t\":[\"版本 8.9.68,8.9.70,8.9.73,8.9.75,8.9.78,8.9.80,8.9.81,8.9.83, 9.0.15, 9.0.8\",\"理论上支持上述说明未提到的更高版本,如遇问题请提交 issue\"]},\"504\":{\"h\":\"反检测\",\"t\":[\"Shamrock 内部已经做了对应处理,无需再进行任何操作。\",\"注意\",\"禁止使用隐藏应用列表等其他方法对 QQ 隐藏 Shamrock ,否则会出现 框架未激活 等异常。\"]},\"505\":{\"h\":\"模拟器部署成功后电脑无法访问?\",\"t\":[\"部分模拟器采用的是 NAT 网络,请使用\",\"adb forward xxx \",\"将模拟器内的端口监听转发到电脑,别和我说为什么别人的模拟器可以在外面直接访问,你的不行就不行!\",\"执行这个命令前,请注意adb是安卓调试桥工具包内的东西,请确保你的环境中有这个玩意,否则请前往谷歌官网或者刷机论坛之类的地方获取。\"]},\"506\":{\"h\":\"修改了配置文件,但没有生效?\",\"t\":[\"Shamrock 的部分配置需要重新启动 QQ (请确保100%杀死QQ),然后在保证 Shamrock 存活的情况下启动 QQ , Shamrock 的 WebSocket 相关的所有配置都需要重新启动生效。\",\"注意\",\"如果启用了 实验功能->免死金牌 在更新配置或更新模块后需重启系统,否则更新可能不会生效。\"]},\"507\":{\"h\":\"某些事件/消息/操作不支持?\",\"t\":[\"提交 issue ,我们会实现。\"]},\"508\":{\"h\":\"QQ闪退(每隔一段时间)怎么办?\",\"t\":[\"勾选 Shamrock 的自动唤醒,或者使用某些框架自带QQ死亡自动唤醒的XP, MAGISK...插件。你要习以为常这个操作,请安装一些软件进行按时重启或者闪退重启,同时QQ有时也会有概率杀死他自己。\"]},\"509\":{\"h\":\"真机息屏状态,API会变慢/无响应?\",\"t\":[\"断网式:这个操作源自于 MIUI 的 息屏省电 ,请保证关闭锁屏后断开数据,这个选项,关闭睡眠模式。\",\"缓慢式:使用某些息屏挂机软件,为 QQ 附加一个息屏挂机状态。安装息屏挂机软件 extinguish ,或者使用 MIUI游戏助手息屏挂机 。\"]},\"510\":{\"h\":\"模拟器部署,QQ闪退?\",\"t\":[\"QQ修复了登录响应超时的问题,经测试(逍遥,夜神,MuMu)模拟器可正常使用,去QQ官网下载最新版本即可。\",\"其次,模拟器部署请使用Shamrock的ALL版本,不要使用WSA(Windows安卓子系统)部署(有兼容问题)。\"]},\"511\":{\"h\":\"模拟器部署,外部无法访问接口?\",\"t\":[\"参考 模拟器部署成功后电脑无法访问?\"]},\"512\":{\"h\":\"Docker部署支持?\",\"t\":[\"目前依旧在计划中,主要是不太会 docker 。\"]},\"513\":{\"h\":\"一定要保证Shamrock主APP在后台运行吗?\",\"t\":[\"不需要,因为 OneBot 服务运行在 QQ 主进程中,无需 Shamrock 主进程运行(当然第一次使用 Shamrock ,请启动 Shamrock ,推送配置要求 Shamrock 和 QQ 都在运行)。\"]},\"514\":{\"h\":\"云手机支持哪些?\",\"t\":[\"目前允许在中国移动云手机(Magisk)和红手指云手机(Lspatch)使用 Shamrock ,其它平台未测试。\"]},\"515\":{\"h\":\"Shamrock的日志怎么导出?\",\"t\":[\"Shamrock 的日志文件,按照时间和进程名称,保存在 /sdcard/Android/data/com.tencent.mobileqq/Tencent/Shamrock/log 文件夹内,请查看,提交 issue 时可以使用它们,注意请不要提交超过 50kb 的日志文件。\"]},\"516\":{\"h\":\"快速开始\",\"t\":[\"注意\",\"Shamrock 的更新会围绕一个稳定的版本,如果盲目升级,可能导致 Shamrock 不可用。Shamrock 仍然处于快速开发阶段,可能会有大量 API 在未来版本中被删除或修改。 请不要过度依赖实验室中的功能,以免造成不必要的损失。\"]},\"517\":{\"h\":\"下载\",\"t\":[\"提示\",\"目前推荐您下载 开发版本 的 Shamrock\"]},\"518\":{\"h\":\"稳定版本\",\"t\":[\"要下载 Shamrock 的稳定版本,请访问 GitHub Releases\"]},\"519\":{\"h\":\"开发版本\",\"t\":[\"要下载 Shamrock 的开发版本(推荐),请访问 GitHub Actions\"]},\"520\":{\"h\":\"部署\",\"t\":[\"注意\",\"请使用 Shamrock 兼容的 QQ 客户端部署,见 支持的QQ版本\",\"如果您使用了 QRSpeed/ShamrockNative 有关的插件,请确保 Shamrock 存活。 无论什么情况都请确保 QQ 客户端 存活。 禁止对 QQ 客户端 隐藏 Shamrock,这将导致无法运行。 首次启动,必须打开 Shamrock,否则无法推送配置文件导致失败。\"]},\"521\":{\"h\":\"模拟器上部署\",\"t\":[\"在Mumu模拟器、逍遥模拟器......各种模拟器,其中对Shamrock兼容较好的是 Mumu模拟器 ,其它模拟器在测试情况下都出现高版本 QQ 闪退的问题。\",\"注意\",\"Shamrock 必须是 ALL版本 才能在模拟器正常使用\"]},\"522\":{\"h\":\"Magisk+Lsposed\",\"t\":[\"推荐的是 Xposed 的 Lsposed 框架,而不是 EdXposed,在测试情况下, EdXP 出现了无法注入的问题。\",\"安装 Magisk 方法,见 52pojie论坛\",\"安装 Lsposed 方法,见 Magisk中文网\"]},\"523\":{\"h\":\"Lspatch\",\"t\":[\"查看 使用LSPatch\"]},\"524\":{\"h\":\"在Linux类服务器上部署(使用docker)\",\"t\":[\"这个选择过于多元化,你可以使用 redroid, docker-android,需要注意的是部分框架要求开起虚拟化才能使用哦!目前依旧是采用 Lspatch+Shamrock 方案在 docker 部署,因为安装 magisk 类需要修补镜像,难以实现。\",\"查看 使用LSPatch\"]},\"525\":{\"h\":\"在PVE上使用\"},\"526\":{\"h\":\"部署Windows\",\"t\":[\"使用PVE安装任意Windows系统之后,阅读文章 PVE开启嵌套虚拟化\",\"之后可在系统内使用 安卓模拟器部署。\"]},\"527\":{\"h\":\"部署BlissOS\",\"t\":[\"操作视频参考PVE下安装BlissOS及Magisk,LSP 之后可以直接使用 OpenShamrock\"]},\"528\":{\"h\":\"在Linux KVM部署\",\"t\":[\"参考文章:KVM上部署Android 该文章使用的安卓版本可能较低,请使用安卓9+系统\"]},\"529\":{\"h\":\"在WSA上部署\",\"t\":[\"WSA 拥有自带 Magisk 的版本,但是 QQ 在 WSA 在第二次启动时会闪退,怀疑为热更新问题。\"]},\"530\":{\"h\":\"有 XP 环境\",\"t\":[\"打开 QQ 客户端,登录你的 QQ 账号\",\"安装 Shamrock 并在 Xposed 启用 Shamrock 模块,如果使用 LSPosed 则需要勾选模块作用域(默认QQ)\",\"启动 Shamrock 并重新启动 QQ 客户端,如果环境为 Xposed 则需要重启手机\",\"此时 Shamrock 会显示已激活(需要成功登陆,才会显示已激活)\"]},\"531\":{\"h\":\"无 Root 环境\"},\"532\":{\"h\":\"使用 LSPatch\",\"t\":[\"打开 LSPatch 并在 管理 页面选择 + 新建修补,可以选择从存储目录选择 QQAPK 或者直接使用已经安装过的 QQ\",\"修补模式默认且应该优先选择 本地模式 ,这样方便直接更新 Shamrock 模块而不用重新修补,缺点是需要 LSPatch 保持后台运行\",\"其他配置保持默认,然后点击 开始修补 ,修补完成后会提示安装(如果已经安装会提示卸载)\",\"安装 Shamrock 模块后在 管理 页面点击修补好的 QQ 选择 模块作用域 勾选上 Shamrock 模块然后保存\",\"启动 Shamrock 并 重新启动 QQ 客户端\",\"此时 Shamrock 会显示已激活\",\"注意\",\"使用 本地模式 修补后需要保持 LSPatch 在后台运行,优点是模块更新无需重新修补 QQ\",\"使用 集成模式 修补后无需保持 LSPatch 在后台运行,缺点是模块更新后需要重新修补 QQ\"]},\"533\":{\"h\":\"使用 VirtualXposed\",\"t\":[\"注意\",\"在 Android 12 以上的系统中,使用 VirtualXposed 会导致闪退。\"]},\"534\":{\"h\":\"使用 太极\",\"t\":[\"注意\",\"暂不支持太极使用,正在申请。\"]},\"535\":{\"h\":\"消息\"},\"536\":{\"h\":\"目录\",\"t\":[\"消息格式\",\"常规消息\",\"媒体消息\",\"特殊消息\",\"高级消息\"]},\"537\":{\"h\":\"高级消息\",\"t\":[\"注意\",\"对于 Shamrock 未实现的消息类型,会在标题添加标记 \"]},\"538\":{\"h\":\"合并转发\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"id\",\"string\",\"✓\",\"✓\",\"是\",\"合并转发resid\"]},\"539\":{\"h\":\"合并转发(节点)\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"id\",\"int64 or string\",\"✓\",\"✓\",\"是\",\"消息ID\"]},\"540\":{\"h\":\"XML 消息\"},\"541\":{\"h\":\"JSON 消息\"},\"542\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"data\",\"string\",\"✓\",\"✓\",\"是\",\"JSON 数据\"]},\"543\":{\"h\":\"文本转语音\"},\"544\":{\"h\":\"消息格式\",\"t\":[\"提示\",\"在后续的文档中,我们将提供 CQ 码和消息段两种格式的消息示例,以便于您更好地理解。\"]},\"545\":{\"h\":\"CQ 码\",\"t\":[\"CQ 码是一种特殊的文本格式,用于在消息中插入表情、图片、音乐、语音、视频、网页等内容。\"]},\"546\":{\"h\":\"格式\",\"t\":[\"这是一个 CQ 码的基本格式:\",\"[CQ:action,param1=value1,param2=value2] \",\"CQ 码中内容含义如下:\",\"action:动作,指示要进行的操作,如发送图片、音乐等。\",\"param:对应动作需要的参数,如 qq、file 等。\",\"value:参数所对应的值,如 AT 的 QQ 号。\"]},\"547\":{\"h\":\"示例\",\"t\":[\"例如,要 AT 一个 QQ 号为 123456 的用户,可以这样写:\",\"[CQ:at,qq=123456] Hello! \",\"他会被解析为:\",\"@小明 Hello! \"]},\"548\":{\"h\":\"转义\",\"t\":[\"CQ 码由 [ 和 ] 并以 , 分隔的多个部分组成,因此如果要在 CQ 码中使用这些字符,需要进行转义。\",\"原字符\",\"转义字符\",\"&\",\"&\",\"[\",\"[\",\"]\",\"]\",\",\",\",\"]},\"549\":{\"h\":\"消息段\",\"t\":[\"消息段是新一代的消息格式,采用 JSON 格式。\"]},\"550\":{\"h\":\"格式\",\"t\":[\"消息段是一个 JSON 对象,以下是一个消息段的基本格式:\",\"{ \\\"type\\\": \\\"text\\\", // 消息段类型 \\\"data\\\": { // 消息段数据/参数 \\\"text\\\": \\\"Hello!\\\" } } \"]},\"551\":{\"h\":\"示例\",\"t\":[\"例如,要 AT 一个 QQ 号为 123456 的用户,可以这样写:\",\"{ \\\"type\\\": \\\"at\\\", \\\"data\\\": { \\\"qq\\\": 123456 } } \",\"他会被解析为:\",\"@小明 \"]},\"552\":{\"h\":\"组合\",\"t\":[\"消息段可以组合在一起,形成一个消息。\",\"[ { \\\"type\\\": \\\"at\\\", \\\"data\\\": { \\\"qq\\\": 123456 } }, { \\\"type\\\": \\\"text\\\", \\\"data\\\": { \\\"text\\\": \\\" Hello!\\\" } } ] \",\"以上消息段会被解析为:\",\"@小明 Hello! \"]},\"553\":{\"h\":\"媒体消息\",\"t\":[\"提示\",\"对于下述消息类型, 涉及 文件地址 的参数规则如下:\",\"可以是本地文件路径, 以 file:// 开头。\",\"可以是 http(s) 链接, 以 http:// 或 https:// 开头。\",\"可以是 base64 编码的数据, 但是必须以 base64:// 开头。\"]},\"554\":{\"h\":\"图片\"},\"555\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"file\",\"string\",\"✓\",\"✓\",\"是\",\"图片文件地址\",\"url\",\"string\",\"✓\",\"✓\",\"否\",\"图片链接地址\",\"type\",\"string\",\"✓\",\"x\",\"否\",\"图片类型, 分为show, flash, original\",\"subType\",\"int32\",\"✓\",\"x\",\"否\",\"图片子类型\"]},\"556\":{\"h\":\"图片子类型\",\"t\":[\"value\",\"说明\",\"0\",\"正常图片\",\"1\",\"表情包, 在客户端会被分类到表情包图片并缩放显示\",\"2\",\"热图\",\"3\",\"斗图\",\"4\",\"智图?\",\"7\",\"贴图\",\"8\",\"自拍\",\"9\",\"贴图广告?\",\"10\",\"有待测试\",\"13\",\"热搜图\"]},\"557\":{\"h\":\"语音\"},\"558\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"file\",\"string\",\"×\",\"✓\",\"是\",\"语音文件地址\",\"url\",\"string\",\"✓\",\"✓\",\"否\",\"语音链接地址\",\"magic\",\"bool\",\"×\",\"✓\",\"否\",\"是否为魔法语音\",\"注意\",\"发送语音消息需要安装语音引擎,可以在 这里 查看。\"]},\"559\":{\"h\":\"视频\"},\"560\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"file\",\"string\",\"×\",\"✓\",\"是\",\"视频文件地址\"]},\"561\":{\"h\":\"常规消息\"},\"562\":{\"h\":\"AT 某人\"},\"563\":{\"h\":\"参数\",\"t\":[\"提示\",\"当 qq 字段为 \\\"0\\\"或\\\"all\\\" 时, 表示 AT 全体成员。\",\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"qq\",\"string\",\"✓\",\"✓\",\"否\",\"QQ 号\",\"注意\",\"将在未来实现 qq 字段为 online 和 admin 时的功能。\"]},\"564\":{\"h\":\"表情\"},\"565\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"id\",\"int\",\"✓\",\"✓\",\"是\",\"表情 ID\",\"big\",\"bool\",\"✓\",\"X\",\"否\",\"是否是大表情\",\"提示\",\"表情 ID 可以在 这里 查看。\"]},\"566\":{\"h\":\"弹射表情\"},\"567\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"id\",\"int\",\"✓\",\"✓\",\"是\",\"表情 ID\",\"count\",\"int\",\"✓\",\"√\",\"是\",\"数量\",\"提示\",\"表情 ID 可以在 这里 查看。\"]},\"568\":{\"h\":\"回复\"},\"569\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"id\",\"int\",\"✓\",\"✓\",\"是\",\"消息 ID\"]},\"570\":{\"h\":\"特殊消息\"},\"571\":{\"h\":\"篮球\"},\"572\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"id\",\"int\",\"✓\",\"x\",\"是\",\"5 没中, 4 擦边没中, 3 卡框, 2 擦边中, 1 正中\"]},\"573\":{\"h\":\"新猜拳\"},\"574\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"id\",\"int\",\"✓\",\"x\",\"是\",\"锤 3 剪 2 布 1\"]},\"575\":{\"h\":\"新骰子\"},\"576\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"id\",\"int\",\"✓\",\"x\",\"是\",\"点数 ID\"]},\"577\":{\"h\":\"骰子 (NTQQ废弃)\"},\"578\":{\"h\":\"剪刀石头布 (NTQQ废弃)\"},\"579\":{\"h\":\"戳一戳\",\"t\":[\"注意\",\"Shamrock 对于戳一戳的定义与 go-cqhttp 不同。\"]},\"580\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"type\",\"int\",\"✓\",\"✓\",\"是\",\"戳一戳类型\",\"id\",\"int\",\"✓\",\"✓\",\"是\",\"戳一戳 ID\",\"strength\",\"int\",\"✓\",\"✓\",\"否\",\"戳一戳强度(1-5 默认1)\"]},\"581\":{\"h\":\"戳一戳(双击头像)\"},\"582\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"id\",\"int\",\"✓\",\"✓\",\"是\",\"QQ号\"]},\"583\":{\"h\":\"音乐\"},\"584\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"type\",\"string\",\"✓\",\"✓\",\"是\",\"音乐类型(qq/163)\",\"id\",\"int\",\"✓\",\"✓\",\"是\",\"音乐 ID\"]},\"585\":{\"h\":\"音乐(自定义)\"},\"586\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"type\",\"string\",\"✓\",\"✓\",\"是\",\"音乐类型(自定义请使用 custom\",\"url\",\"string\",\"✓\",\"✓\",\"是\",\"跳转链接\",\"audio\",\"string\",\"✓\",\"✓\",\"是\",\"音乐音频链接\",\"title\",\"string\",\"✓\",\"✓\",\"是\",\"标题\",\"singer\",\"string\",\"✓\",\"✓\",\"是\",\"歌手\",\"image\",\"string\",\"✓\",\"✓\",\"否\",\"封面图片链接\"]},\"587\":{\"h\":\"天气\"},\"588\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"city\",\"string\",\"✓\",\"✓\",\"否\",\"城市名称\",\"code\",\"string\",\"✓\",\"✓\",\"否\",\"城市代码\"]},\"589\":{\"h\":\"位置\"},\"590\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"lat\",\"float\",\"✓\",\"✓\",\"是\",\"纬度\",\"lon\",\"float\",\"✓\",\"✓\",\"是\",\"经度\",\"title\",\"string\",\"✓\",\"×\",\"否\",\"标题\",\"content\",\"string\",\"✓\",\"×\",\"否\",\"内容\"]},\"591\":{\"h\":\"链接分享\"},\"592\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"url\",\"string\",\"✓\",\"✓\",\"是\",\"链接地址\",\"title\",\"string\",\"✓\",\"×\",\"是\",\"标题\",\"content\",\"string\",\"✓\",\"×\",\"否\",\"内容\",\"image\",\"string\",\"✓\",\"×\",\"否\",\"图片链接\",\"file\",\"string\",\"✓\",\"×\",\"否\",\"文件链接\"]},\"593\":{\"h\":\"礼物\"},\"594\":{\"h\":\"参数\",\"t\":[\"字段\",\"类型\",\"收\",\"发\",\"必填\",\"说明\",\"qq\",\"int\",\"✓\",\"✓\",\"是\",\"QQ 号\",\"id\",\"int\",\"✓\",\"✓\",\"是\",\"礼物 ID\"]}},\"dirtCount\":0,\"index\":[[\"礼物\",{\"0\":{\"593\":1},\"1\":{\"594\":1}}],[\"经度\",{\"1\":{\"590\":1}}],[\"经测试\",{\"1\":{\"510\":1}}],[\"纬度\",{\"1\":{\"590\":1}}],[\"位置\",{\"0\":{\"589\":1}}],[\"天气\",{\"0\":{\"587\":1}}],[\"封面图片链接\",{\"1\":{\"586\":1}}],[\"歌手\",{\"1\":{\"586\":1}}],[\"标题\",{\"1\":{\"586\":1,\"590\":1,\"592\":1}}],[\"标准的\",{\"1\":{\"350\":1}}],[\"跳转链接\",{\"1\":{\"586\":1}}],[\"双击头像\",{\"0\":{\"581\":1}}],[\"骰子\",{\"0\":{\"577\":1}}],[\"点数\",{\"1\":{\"576\":1}}],[\"点赞的目标用户\",{\"1\":{\"442\":1}}],[\"点赞次数\",{\"1\":{\"442\":1}}],[\"点赞资料卡\",{\"0\":{\"440\":1}}],[\"布\",{\"1\":{\"574\":1}}],[\"剪刀石头布\",{\"0\":{\"578\":1}}],[\"剪\",{\"1\":{\"574\":1}}],[\"锤\",{\"1\":{\"574\":1}}],[\"擦边中\",{\"1\":{\"572\":1}}],[\"擦边没中\",{\"1\":{\"572\":1}}],[\"卡框\",{\"1\":{\"572\":1}}],[\"卡片消息里面的resid\",{\"1\":{\"310\":1}}],[\"没中\",{\"1\":{\"572\":1}}],[\"没有响应数据\",{\"1\":{\"178\":1,\"181\":1}}],[\"篮球\",{\"0\":{\"571\":1}}],[\"回复\",{\"0\":{\"568\":1}}],[\"回复内容\",{\"1\":{\"464\":1,\"465\":1}}],[\"√\",{\"1\":{\"567\":1}}],[\"弹射表情\",{\"0\":{\"566\":1}}],[\"×\",{\"1\":{\"558\":2,\"560\":1,\"590\":2,\"592\":4}}],[\"贴图广告\",{\"1\":{\"556\":1}}],[\"贴图\",{\"1\":{\"556\":1}}],[\"智图\",{\"1\":{\"556\":1}}],[\"斗图\",{\"1\":{\"556\":1}}],[\"热搜图\",{\"1\":{\"556\":1}}],[\"热图\",{\"1\":{\"556\":1}}],[\"热聊\",{\"1\":{\"457\":1}}],[\"正中\",{\"1\":{\"572\":1}}],[\"正常图片\",{\"1\":{\"556\":1}}],[\"正在申请\",{\"1\":{\"534\":1}}],[\"链接地址\",{\"1\":{\"592\":1}}],[\"链接分享\",{\"0\":{\"591\":1}}],[\"链接\",{\"1\":{\"553\":1}}],[\"链接中的含义如下\",{\"1\":{\"352\":1,\"353\":1}}],[\"涉及\",{\"1\":{\"553\":1}}],[\"形成一个消息\",{\"1\":{\"552\":1}}],[\"组合\",{\"0\":{\"552\":1}}],[\"采用\",{\"1\":{\"549\":1}}],[\"原字符\",{\"1\":{\"548\":1}}],[\"因此如果要在\",{\"1\":{\"548\":1}}],[\"因为安装\",{\"1\":{\"524\":1}}],[\"因为\",{\"1\":{\"513\":1}}],[\"因为在新一代机器人设计理念中\",{\"1\":{\"497\":1}}],[\"因为这个api不会提供任何返回数据哦\",{\"1\":{\"258\":1}}],[\"因为您可以调用\",{\"1\":{\"257\":1}}],[\"小明\",{\"1\":{\"547\":1,\"551\":1,\"552\":1}}],[\"小管家\",{\"1\":{\"239\":1}}],[\"他会被解析为\",{\"1\":{\"547\":1,\"551\":1}}],[\"指示要进行的操作\",{\"1\":{\"546\":1}}],[\"指南\",{\"0\":{\"493\":1}}],[\"动作\",{\"1\":{\"546\":1}}],[\"网页等内容\",{\"1\":{\"545\":1}}],[\"网络\",{\"1\":{\"153\":1,\"505\":1}}],[\"视频文件地址\",{\"1\":{\"560\":1}}],[\"视频\",{\"0\":{\"559\":1},\"1\":{\"545\":1}}],[\"音乐音频链接\",{\"1\":{\"586\":1}}],[\"音乐类型\",{\"1\":{\"584\":1,\"586\":1}}],[\"音乐等\",{\"1\":{\"546\":1}}],[\"音乐\",{\"0\":{\"583\":1,\"585\":1},\"1\":{\"545\":1,\"584\":1}}],[\"节点\",{\"0\":{\"539\":1}}],[\"✓\",{\"1\":{\"538\":2,\"539\":2,\"542\":2,\"555\":6,\"558\":4,\"560\":1,\"563\":2,\"565\":3,\"567\":3,\"569\":2,\"572\":1,\"574\":1,\"576\":1,\"580\":6,\"582\":2,\"584\":4,\"586\":12,\"588\":4,\"590\":6,\"592\":6,\"594\":4}}],[\"必填\",{\"1\":{\"538\":1,\"539\":1,\"542\":1,\"555\":1,\"558\":1,\"560\":1,\"563\":1,\"565\":1,\"567\":1,\"569\":1,\"572\":1,\"574\":1,\"576\":1,\"580\":1,\"582\":1,\"584\":1,\"586\":1,\"588\":1,\"590\":1,\"592\":1,\"594\":1}}],[\"必须是\",{\"1\":{\"521\":1}}],[\"必须打开\",{\"1\":{\"520\":1}}],[\"必须\",{\"1\":{\"13\":1,\"22\":1,\"32\":1,\"44\":1,\"52\":1,\"56\":1,\"60\":1,\"77\":1,\"91\":1,\"95\":1,\"99\":1,\"103\":1,\"156\":1,\"166\":1,\"170\":1,\"198\":1,\"202\":1,\"206\":1,\"210\":1,\"214\":1,\"218\":1,\"276\":1,\"280\":1,\"284\":1,\"288\":1,\"293\":1,\"297\":1,\"302\":1,\"306\":1,\"310\":1,\"314\":1,\"319\":1,\"324\":1,\"328\":1,\"333\":1,\"336\":1,\"340\":1,\"344\":1,\"348\":1,\"362\":1,\"375\":1,\"390\":1,\"402\":1,\"420\":1,\"423\":1,\"442\":1}}],[\"收\",{\"1\":{\"538\":1,\"539\":1,\"542\":1,\"555\":1,\"558\":1,\"560\":1,\"563\":1,\"565\":1,\"567\":1,\"569\":1,\"572\":1,\"574\":1,\"576\":1,\"580\":1,\"582\":1,\"584\":1,\"586\":1,\"588\":1,\"590\":1,\"592\":1,\"594\":1}}],[\"收到离线文件\",{\"0\":{\"479\":1}}],[\"收到消息\",{\"1\":{\"449\":1}}],[\"收到的语音文件名\",{\"1\":{\"382\":1}}],[\"合并转发resid\",{\"1\":{\"538\":1}}],[\"合并转发\",{\"0\":{\"538\":1,\"539\":1}}],[\"合并转发消息集\",{\"1\":{\"314\":1,\"319\":1}}],[\"高级消息\",{\"0\":{\"537\":1},\"1\":{\"536\":1}}],[\"特殊消息\",{\"0\":{\"570\":1},\"1\":{\"536\":1}}],[\"媒体消息\",{\"0\":{\"553\":1},\"1\":{\"536\":1}}],[\"常规消息\",{\"0\":{\"561\":1},\"1\":{\"536\":1}}],[\"常见问题\",{\"0\":{\"502\":1},\"1\":{\"494\":1}}],[\"太极\",{\"0\":{\"534\":1}}],[\"缺点是模块更新后需要重新修补\",{\"1\":{\"532\":1}}],[\"缺点是需要\",{\"1\":{\"532\":1}}],[\"集成模式\",{\"1\":{\"532\":1}}],[\"优点是模块更新无需重新修补\",{\"1\":{\"532\":1}}],[\"优先级比上面那个高\",{\"1\":{\"499\":1}}],[\"重新启动\",{\"1\":{\"532\":1}}],[\"重命名群文件夹\",{\"0\":{\"121\":1}}],[\"选择\",{\"1\":{\"532\":1}}],[\"页面点击修补好的\",{\"1\":{\"532\":1}}],[\"页面选择\",{\"1\":{\"532\":1}}],[\"然后点击\",{\"1\":{\"532\":1}}],[\"然后在保证\",{\"1\":{\"506\":1}}],[\"保持后台运行\",{\"1\":{\"532\":1}}],[\"保存在\",{\"1\":{\"515\":1}}],[\"保存文件的根目录\",{\"1\":{\"402\":1}}],[\"本地模式\",{\"1\":{\"532\":2}}],[\"本地文件路径为绝对路径\",{\"1\":{\"108\":1,\"112\":1}}],[\"本地文件路径\",{\"1\":{\"108\":1,\"112\":1}}],[\"修补后无需保持\",{\"1\":{\"532\":1}}],[\"修补后需要保持\",{\"1\":{\"532\":1}}],[\"修补完成后会提示安装\",{\"1\":{\"532\":1}}],[\"修补模式默认且应该优先选择\",{\"1\":{\"532\":1}}],[\"修改了配置文件\",{\"0\":{\"506\":1}}],[\"修改频道角色\",{\"0\":{\"265\":1},\"1\":{\"265\":1}}],[\"管理\",{\"1\":{\"532\":2}}],[\"才会显示已激活\",{\"1\":{\"530\":1}}],[\"才能在模拟器正常使用\",{\"1\":{\"521\":1}}],[\"会导致闪退\",{\"1\":{\"533\":1}}],[\"会显示已激活\",{\"1\":{\"530\":1,\"532\":1}}],[\"会在响应中原样返回\",{\"1\":{\"356\":1}}],[\"会在标题添加标记\",{\"1\":{\"6\":1,\"29\":1,\"79\":1,\"105\":1,\"146\":1,\"220\":1,\"273\":1,\"359\":1,\"431\":1,\"466\":1,\"488\":1,\"537\":1}}],[\"此时\",{\"1\":{\"530\":1,\"532\":1}}],[\"并以\",{\"1\":{\"548\":1}}],[\"并\",{\"1\":{\"532\":1}}],[\"并重新启动\",{\"1\":{\"530\":1}}],[\"并在\",{\"1\":{\"530\":1,\"532\":1}}],[\"启动\",{\"1\":{\"530\":1,\"532\":1}}],[\"启用\",{\"1\":{\"530\":1}}],[\"模块然后保存\",{\"1\":{\"532\":1}}],[\"模块作用域\",{\"1\":{\"532\":1}}],[\"模块后在\",{\"1\":{\"532\":1}}],[\"模块而不用重新修补\",{\"1\":{\"532\":1}}],[\"模块\",{\"1\":{\"530\":1}}],[\"模拟器上部署\",{\"0\":{\"521\":1}}],[\"模拟器可正常使用\",{\"1\":{\"510\":1}}],[\"模拟器部署请使用shamrock的all版本\",{\"1\":{\"510\":1}}],[\"模拟器部署\",{\"0\":{\"510\":1,\"511\":1}}],[\"模拟器部署成功后电脑无法访问\",{\"0\":{\"505\":1},\"1\":{\"511\":1}}],[\"账号\",{\"1\":{\"530\":1}}],[\"账号相关\",{\"0\":{\"6\":1},\"1\":{\"5\":1}}],[\"登录你的\",{\"1\":{\"530\":1}}],[\"打开\",{\"1\":{\"530\":1,\"532\":1}}],[\"环境\",{\"0\":{\"530\":1,\"531\":1}}],[\"怀疑为热更新问题\",{\"1\":{\"529\":1}}],[\"拥有自带\",{\"1\":{\"529\":1}}],[\"之后可以直接使用\",{\"1\":{\"527\":1}}],[\"之后可在系统内使用\",{\"1\":{\"526\":1}}],[\"安卓模拟器部署\",{\"1\":{\"526\":1}}],[\"安装息屏挂机软件\",{\"1\":{\"509\":1}}],[\"安装\",{\"0\":{\"3\":1},\"1\":{\"522\":2,\"530\":1,\"532\":1}}],[\"阅读文章\",{\"1\":{\"526\":1}}],[\"难以实现\",{\"1\":{\"524\":1}}],[\"类需要修补镜像\",{\"1\":{\"524\":1}}],[\"类型的消息\",{\"1\":{\"447\":1}}],[\"类型\",{\"1\":{\"13\":1,\"19\":1,\"22\":1,\"26\":1,\"27\":1,\"28\":1,\"32\":1,\"44\":1,\"52\":1,\"56\":1,\"60\":1,\"61\":1,\"62\":1,\"65\":1,\"66\":1,\"67\":1,\"73\":1,\"77\":1,\"78\":1,\"91\":1,\"95\":1,\"99\":1,\"103\":1,\"108\":1,\"112\":1,\"116\":1,\"119\":1,\"122\":1,\"126\":1,\"130\":1,\"131\":1,\"134\":1,\"135\":1,\"136\":1,\"137\":1,\"140\":1,\"141\":1,\"144\":1,\"145\":1,\"153\":1,\"156\":1,\"166\":1,\"170\":1,\"178\":1,\"181\":1,\"193\":1,\"194\":1,\"195\":1,\"198\":1,\"202\":1,\"206\":1,\"210\":1,\"214\":1,\"218\":1,\"229\":1,\"233\":1,\"235\":1,\"238\":1,\"242\":1,\"246\":1,\"251\":1,\"255\":1,\"260\":1,\"264\":1,\"267\":1,\"271\":1,\"272\":1,\"276\":1,\"277\":1,\"280\":1,\"281\":1,\"284\":1,\"285\":1,\"288\":1,\"289\":1,\"290\":1,\"293\":1,\"297\":2,\"298\":1,\"299\":1,\"302\":1,\"303\":1,\"306\":2,\"310\":1,\"314\":1,\"315\":1,\"319\":1,\"324\":1,\"328\":1,\"333\":1,\"336\":1,\"340\":1,\"344\":1,\"348\":1,\"362\":1,\"363\":1,\"370\":1,\"371\":1,\"372\":1,\"375\":1,\"376\":1,\"390\":1,\"398\":1,\"399\":1,\"402\":1,\"420\":1,\"423\":1,\"438\":1,\"442\":1,\"447\":1,\"449\":1,\"450\":1,\"451\":1,\"452\":1,\"453\":1,\"454\":1,\"456\":3,\"457\":1,\"459\":1,\"464\":1,\"465\":1,\"467\":1,\"468\":1,\"469\":1,\"470\":1,\"471\":1,\"472\":1,\"474\":1,\"476\":1,\"477\":1,\"478\":1,\"479\":1,\"480\":1,\"481\":1,\"482\":1,\"483\":1,\"484\":1,\"485\":1,\"486\":1,\"487\":1,\"489\":1,\"490\":1,\"491\":1,\"492\":1,\"499\":1,\"538\":1,\"539\":1,\"542\":1,\"555\":1,\"558\":1,\"560\":1,\"563\":1,\"565\":1,\"567\":1,\"569\":1,\"572\":1,\"574\":1,\"576\":1,\"580\":1,\"582\":1,\"584\":1,\"586\":1,\"588\":1,\"590\":1,\"592\":1,\"594\":1}}],[\"方案在\",{\"1\":{\"524\":1}}],[\"方法\",{\"1\":{\"522\":2}}],[\"查看\",{\"1\":{\"523\":1,\"524\":1,\"558\":1,\"565\":1,\"567\":1}}],[\"查找\",{\"1\":{\"457\":1}}],[\"出现了无法注入的问题\",{\"1\":{\"522\":1}}],[\"而不是\",{\"1\":{\"522\":1}}],[\"框架\",{\"1\":{\"522\":1}}],[\"框架未激活\",{\"1\":{\"504\":1}}],[\"闪退的问题\",{\"1\":{\"521\":1}}],[\"各种模拟器\",{\"1\":{\"521\":1}}],[\"首次启动\",{\"1\":{\"520\":1}}],[\"首先\",{\"1\":{\"258\":1}}],[\"存活\",{\"1\":{\"520\":2}}],[\"存活的情况下启动\",{\"1\":{\"506\":1}}],[\"有待测试\",{\"1\":{\"556\":1}}],[\"有\",{\"0\":{\"530\":1}}],[\"有关的插件\",{\"1\":{\"520\":1}}],[\"有兼容问题\",{\"1\":{\"510\":1}}],[\"见\",{\"1\":{\"520\":1,\"522\":2}}],[\"兼容的\",{\"1\":{\"520\":1}}],[\"稳定版本\",{\"0\":{\"518\":1}}],[\"仍然处于快速开发阶段\",{\"1\":{\"516\":1}}],[\"按照时间和进程名称\",{\"1\":{\"515\":1}}],[\"云手机支持哪些\",{\"0\":{\"514\":1}}],[\"都在运行\",{\"1\":{\"513\":1}}],[\"推荐的是\",{\"1\":{\"522\":1}}],[\"推荐\",{\"1\":{\"519\":1}}],[\"推荐使用\",{\"1\":{\"354\":1}}],[\"推送配置要求\",{\"1\":{\"513\":1}}],[\"服务运行在\",{\"1\":{\"513\":1}}],[\"一个\",{\"1\":{\"547\":1,\"551\":1}}],[\"一定要保证shamrock主app在后台运行吗\",{\"0\":{\"513\":1}}],[\"一般是闪退一次后再次重新启动便不再闪退\",{\"1\":{\"310\":1}}],[\"外部无法访问接口\",{\"0\":{\"511\":1}}],[\"部署blissos\",{\"0\":{\"527\":1}}],[\"部署windows\",{\"0\":{\"526\":1}}],[\"部署\",{\"0\":{\"520\":1},\"1\":{\"510\":1,\"524\":1}}],[\"部分模拟器采用的是\",{\"1\":{\"505\":1}}],[\"去qq官网下载最新版本即可\",{\"1\":{\"510\":1}}],[\"夜神\",{\"1\":{\"510\":1}}],[\"逍遥模拟器\",{\"1\":{\"521\":1}}],[\"逍遥\",{\"1\":{\"510\":1}}],[\"附加一个息屏挂机状态\",{\"1\":{\"509\":1}}],[\"附带有权限信息和身份组哦~\",{\"1\":{\"240\":1}}],[\"缓慢式\",{\"1\":{\"509\":1}}],[\"缓存保存在\",{\"1\":{\"501\":1}}],[\"息屏省电\",{\"1\":{\"509\":1}}],[\"这是一个\",{\"1\":{\"546\":1}}],[\"这样方便直接更新\",{\"1\":{\"532\":1}}],[\"这将导致无法运行\",{\"1\":{\"520\":1}}],[\"这个选择过于多元化\",{\"1\":{\"524\":1}}],[\"这个选项\",{\"1\":{\"509\":1}}],[\"这个操作源自于\",{\"1\":{\"509\":1}}],[\"这里\",{\"1\":{\"558\":1,\"565\":1,\"567\":1}}],[\"这里是个例子\",{\"1\":{\"499\":1}}],[\"这里的api处于实验性阶段\",{\"1\":{\"88\":1}}],[\"断网式\",{\"1\":{\"509\":1}}],[\"真机息屏状态\",{\"0\":{\"509\":1}}],[\"真实\",{\"1\":{\"289\":1,\"299\":1}}],[\"插件\",{\"1\":{\"508\":1}}],[\"勾选上\",{\"1\":{\"532\":1}}],[\"勾选\",{\"1\":{\"508\":1}}],[\"怎么办\",{\"0\":{\"508\":1}}],[\"某人\",{\"0\":{\"562\":1}}],[\"某些事件\",{\"0\":{\"507\":1}}],[\"某个账号因为某种原因寄了\",{\"1\":{\"388\":1}}],[\">免死金牌\",{\"1\":{\"506\":1}}],[\"相关的所有配置都需要重新启动生效\",{\"1\":{\"506\":1}}],[\"相关功能\",{\"1\":{\"497\":1}}],[\"杀死qq\",{\"1\":{\"506\":1}}],[\"但没有生效\",{\"0\":{\"506\":1}}],[\"但是必须以\",{\"1\":{\"553\":1}}],[\"但是\",{\"1\":{\"351\":1,\"529\":1}}],[\"但是可能无法获取合并转发的内容\",{\"1\":{\"310\":1}}],[\"但是因为数据量大\",{\"1\":{\"236\":1}}],[\"执行这个命令前\",{\"1\":{\"505\":1}}],[\"别和我说为什么别人的模拟器可以在外面直接访问\",{\"1\":{\"505\":1}}],[\"等\",{\"1\":{\"546\":1}}],[\"等异常\",{\"1\":{\"504\":1}}],[\"等格式的语音消息\",{\"1\":{\"3\":1}}],[\"隐藏\",{\"1\":{\"504\":1,\"520\":1}}],[\"禁止对\",{\"1\":{\"520\":1}}],[\"禁止使用隐藏应用列表等其他方法对\",{\"1\":{\"504\":1}}],[\"禁言时长\",{\"1\":{\"170\":1,\"465\":1,\"476\":1}}],[\"反检测\",{\"0\":{\"504\":1}}],[\"理论上支持上述说明未提到的更高版本\",{\"1\":{\"503\":1}}],[\"版本\",{\"1\":{\"503\":1}}],[\"日志文件\",{\"1\":{\"501\":1}}],[\"日志目录\",{\"1\":{\"501\":1}}],[\"└──\",{\"1\":{\"501\":1}}],[\"│\",{\"1\":{\"501\":3}}],[\"临时文件目录\",{\"1\":{\"501\":1}}],[\"临时聊天来源\",{\"1\":{\"459\":1}}],[\"├──\",{\"1\":{\"501\":3}}],[\"截取部分提交\",{\"1\":{\"501\":1}}],[\"记得把注释删掉哦\",{\"1\":{\"499\":1}}],[\"例\",{\"1\":{\"500\":1}}],[\"例子\",{\"1\":{\"499\":1}}],[\"例如当前成员数量之类\",{\"1\":{\"227\":1}}],[\"例如\",{\"1\":{\"153\":3,\"547\":1,\"551\":1}}],[\"作为分割\",{\"1\":{\"499\":1}}],[\"作用\",{\"1\":{\"398\":1,\"399\":1,\"499\":1}}],[\"配置文件\",{\"0\":{\"499\":1},\"1\":{\"501\":1}}],[\"配置选项\",{\"0\":{\"496\":1}}],[\"内部已经做了对应处理\",{\"1\":{\"504\":1}}],[\"内部存储目录\",{\"1\":{\"498\":2}}],[\"内容\",{\"1\":{\"99\":1,\"501\":1,\"590\":1,\"592\":1}}],[\"使其账号可在安卓和平板同时在线\",{\"1\":{\"497\":1}}],[\"使用pve安装任意windows系统之后\",{\"1\":{\"526\":1}}],[\"使用docker\",{\"0\":{\"524\":1}}],[\"使用lspatch\",{\"1\":{\"523\":1,\"524\":1}}],[\"使用某些息屏挂机软件\",{\"1\":{\"509\":1}}],[\"使用tokens实现多token\",{\"1\":{\"499\":1}}],[\"使用http请求时请注意编码\",{\"1\":{\"404\":1}}],[\"使用url\",{\"1\":{\"400\":1}}],[\"使用\",{\"0\":{\"532\":1,\"533\":1,\"534\":1},\"1\":{\"356\":1,\"514\":1,\"532\":2,\"533\":1}}],[\"识别设备为平板\",{\"1\":{\"497\":1}}],[\"让\",{\"1\":{\"497\":1}}],[\"让shamrock下载文件到缓存目录\",{\"0\":{\"400\":1}}],[\"强制平板模式\",{\"0\":{\"497\":1}}],[\"我们将提供\",{\"1\":{\"544\":1}}],[\"我们会实现\",{\"1\":{\"507\":1}}],[\"我们仅仅介绍部分难于理解的配置选项\",{\"1\":{\"495\":1}}],[\"我是自定义消息\",{\"1\":{\"316\":1}}],[\"应用配置\",{\"0\":{\"495\":1},\"1\":{\"494\":1}}],[\"备注\",{\"1\":{\"490\":1}}],[\"验证信息\",{\"1\":{\"489\":1,\"491\":1}}],[\"验证消息\",{\"1\":{\"67\":1,\"457\":1}}],[\"获得头衔\",{\"1\":{\"487\":1}}],[\"获取所有支持的动作\",{\"0\":{\"428\":1}}],[\"获取shamrock日志\",{\"0\":{\"417\":1}}],[\"获取shamerock启动时间\",{\"0\":{\"413\":1}}],[\"获取手机电池信息\",{\"0\":{\"410\":1}}],[\"获取缩略图\",{\"0\":{\"386\":1}}],[\"获取视频\",{\"0\":{\"385\":1}}],[\"获取文件\",{\"0\":{\"384\":1}}],[\"获取语音\",{\"0\":{\"373\":1}}],[\"获取图片\",{\"0\":{\"360\":1}}],[\"获取cookie\",{\"0\":{\"342\":1}}],[\"获取\",{\"0\":{\"334\":1,\"338\":1,\"346\":1}}],[\"获取天气\",{\"0\":{\"326\":1}}],[\"获取城市adcode\",{\"0\":{\"322\":1}}],[\"获取合并转发内容\",{\"1\":{\"308\":1}}],[\"获取合并转发消息内容\",{\"0\":{\"308\":1}}],[\"获取的消息数量\",{\"1\":{\"297\":1,\"302\":1}}],[\"获取的数量\",{\"1\":{\"91\":1}}],[\"获取历史消息\",{\"0\":{\"295\":1}}],[\"获取消息\",{\"0\":{\"286\":1}}],[\"获取身份组列表\",{\"1\":{\"253\":1}}],[\"获取话题频道帖子\",{\"0\":{\"248\":1}}],[\"获取一个频道成员列表\",{\"1\":{\"236\":1}}],[\"获取一个频道的子频道\",{\"1\":{\"231\":1}}],[\"获取子频道列表\",{\"0\":{\"231\":1}}],[\"获取频道消息\",{\"0\":{\"257\":1}}],[\"获取频道角色列表\",{\"0\":{\"253\":1}}],[\"获取频道帖子广场帖子\",{\"0\":{\"249\":1}}],[\"获取频道成员列表\",{\"0\":{\"236\":1}}],[\"获取频道元数据\",{\"1\":{\"227\":1}}],[\"获取频道列表\",{\"0\":{\"224\":1},\"1\":{\"224\":1}}],[\"获取频道系统内bot的资料\",{\"0\":{\"221\":1}}],[\"获取被禁言的群成员列表\",{\"0\":{\"208\":1}}],[\"获取收藏内容\",{\"1\":{\"93\":1}}],[\"获取收藏列表\",{\"0\":{\"89\":1},\"1\":{\"89\":1}}],[\"获取指定收藏的内容\",{\"0\":{\"93\":1}}],[\"获取精华消息列表\",{\"0\":{\"71\":1}}],[\"获取好友\",{\"1\":{\"75\":1}}],[\"获取好友系统消息\",{\"0\":{\"68\":1}}],[\"获取好友列表\",{\"0\":{\"34\":1}}],[\"获取群聊历史消息\",{\"0\":{\"300\":1}}],[\"获取群\",{\"0\":{\"212\":1}}],[\"获取群公告\",{\"0\":{\"190\":1}}],[\"获取群文件资源链接\",{\"0\":{\"142\":1}}],[\"获取群文件系统信息\",{\"0\":{\"128\":1}}],[\"获取群子目录文件列表\",{\"0\":{\"138\":1}}],[\"获取群根目录文件列表\",{\"0\":{\"132\":1}}],[\"获取群系统消息\",{\"0\":{\"63\":1}}],[\"获取群荣誉信息\",{\"0\":{\"58\":1}}],[\"获取群成员列表\",{\"0\":{\"54\":1}}],[\"获取群成员信息\",{\"0\":{\"50\":1}}],[\"获取群列表\",{\"0\":{\"46\":1}}],[\"获取群信息\",{\"0\":{\"42\":1}}],[\"获取单向好友列表\",{\"0\":{\"38\":1}}],[\"获取陌生人信息\",{\"0\":{\"30\":1}}],[\"获取当前账号在线客户端列表\",{\"0\":{\"24\":1}}],[\"获取在线机型\",{\"0\":{\"15\":1}}],[\"获取登录号信息\",{\"0\":{\"7\":1}}],[\"荣誉类型\",{\"1\":{\"486\":1}}],[\"后缀\",{\"1\":{\"484\":1}}],[\"戳了戳\",{\"1\":{\"484\":1}}],[\"戳一戳强度\",{\"1\":{\"580\":1}}],[\"戳一戳类型\",{\"1\":{\"580\":1}}],[\"戳一戳的详细信息\",{\"1\":{\"483\":1}}],[\"戳一戳\",{\"0\":{\"579\":1,\"581\":1},\"1\":{\"453\":1,\"580\":1}}],[\"操作视频参考pve下安装blissos及magisk\",{\"1\":{\"527\":1}}],[\"操作不支持\",{\"0\":{\"507\":1}}],[\"操作图标\",{\"1\":{\"484\":1}}],[\"操作名称\",{\"1\":{\"484\":1}}],[\"操作者\",{\"1\":{\"467\":1,\"468\":1,\"469\":2,\"470\":2,\"476\":1,\"481\":1,\"486\":1,\"487\":1}}],[\"操作者昵称\",{\"1\":{\"74\":1}}],[\"操作者qq\",{\"1\":{\"74\":1}}],[\"且\",{\"1\":{\"483\":1,\"485\":1,\"486\":1,\"487\":1}}],[\"旧名片\",{\"1\":{\"477\":1}}],[\"被动\",{\"1\":{\"497\":1}}],[\"被戳者\",{\"1\":{\"483\":1}}],[\"被禁言成员\",{\"1\":{\"476\":1}}],[\"被邀请者id\",{\"1\":{\"66\":1}}],[\"变动成员\",{\"1\":{\"471\":1,\"477\":1}}],[\"变向风\",{\"1\":{\"329\":4}}],[\"减少成员\",{\"1\":{\"470\":1}}],[\"未实现的消息类型\",{\"1\":{\"537\":1}}],[\"未实现的事件\",{\"1\":{\"466\":1,\"488\":1}}],[\"未设置则未空\",{\"1\":{\"484\":1}}],[\"未处理为0\",{\"1\":{\"66\":1,\"67\":1}}],[\"秒尝试重新连接\",{\"1\":{\"497\":1}}],[\"秒\",{\"1\":{\"465\":1,\"476\":1}}],[\"提交\",{\"1\":{\"507\":1,\"515\":1}}],[\"提供了特例化token\",{\"1\":{\"499\":1}}],[\"提供了一个图形化的配置界面\",{\"1\":{\"495\":1}}],[\"提供了快速处理的功能\",{\"1\":{\"490\":1,\"492\":1}}],[\"提供了快速操作的功能\",{\"1\":{\"465\":1}}],[\"提供了快速回复的功能\",{\"1\":{\"464\":1}}],[\"提示\",{\"1\":{\"3\":1,\"9\":1,\"36\":1,\"40\":1,\"48\":1,\"116\":1,\"149\":1,\"160\":1,\"163\":1,\"170\":1,\"174\":1,\"178\":1,\"181\":1,\"350\":1,\"351\":1,\"366\":1,\"379\":1,\"381\":1,\"447\":1,\"458\":1,\"466\":1,\"488\":1,\"495\":1,\"497\":1,\"517\":1,\"544\":1,\"553\":1,\"563\":1,\"565\":1,\"567\":1}}],[\"快速开始\",{\"0\":{\"516\":1},\"1\":{\"494\":1}}],[\"快速处理\",{\"0\":{\"490\":1,\"492\":1}}],[\"快速操作\",{\"0\":{\"465\":1}}],[\"快速回复\",{\"0\":{\"464\":1}}],[\"快乐之源\",{\"1\":{\"61\":1}}],[\"字节数\",{\"1\":{\"473\":1,\"475\":1}}],[\"字体\",{\"1\":{\"459\":1}}],[\"字段为\",{\"1\":{\"563\":2}}],[\"字段相符\",{\"1\":{\"86\":1}}],[\"字段名\",{\"1\":{\"41\":1,\"74\":1,\"82\":1,\"86\":1,\"149\":1,\"160\":1,\"163\":1,\"174\":1,\"184\":1,\"188\":1,\"192\":1,\"367\":1,\"380\":1,\"382\":1,\"383\":1,\"434\":1,\"473\":1,\"475\":1}}],[\"字段无数据\",{\"1\":{\"23\":1,\"83\":1,\"87\":1,\"150\":1,\"157\":1,\"167\":1,\"171\":1,\"175\":1,\"185\":1,\"189\":1,\"199\":1,\"203\":1,\"207\":1,\"219\":1,\"294\":1,\"307\":1,\"435\":1,\"439\":1,\"443\":1}}],[\"字段\",{\"1\":{\"13\":1,\"19\":1,\"22\":1,\"26\":1,\"27\":1,\"28\":1,\"32\":1,\"44\":1,\"52\":1,\"56\":1,\"60\":1,\"61\":1,\"62\":1,\"65\":1,\"66\":1,\"67\":1,\"73\":1,\"77\":1,\"78\":1,\"91\":1,\"95\":1,\"99\":1,\"103\":1,\"108\":1,\"112\":1,\"116\":1,\"119\":1,\"122\":1,\"126\":1,\"130\":1,\"131\":1,\"134\":1,\"135\":1,\"136\":1,\"137\":1,\"140\":1,\"141\":1,\"144\":1,\"145\":1,\"153\":1,\"156\":1,\"166\":1,\"170\":1,\"178\":1,\"181\":1,\"193\":1,\"194\":1,\"195\":1,\"198\":1,\"202\":1,\"206\":1,\"210\":1,\"214\":1,\"218\":1,\"229\":1,\"233\":1,\"238\":1,\"242\":1,\"246\":1,\"251\":1,\"255\":1,\"260\":1,\"264\":1,\"267\":1,\"271\":1,\"272\":1,\"276\":1,\"277\":1,\"280\":1,\"281\":1,\"284\":1,\"285\":1,\"288\":1,\"289\":1,\"290\":1,\"293\":1,\"297\":1,\"298\":1,\"299\":1,\"302\":1,\"303\":1,\"306\":1,\"310\":1,\"314\":1,\"315\":1,\"319\":1,\"324\":1,\"328\":1,\"333\":1,\"336\":1,\"340\":1,\"344\":1,\"348\":1,\"356\":1,\"362\":1,\"363\":1,\"370\":1,\"371\":1,\"372\":1,\"375\":1,\"376\":1,\"390\":1,\"402\":1,\"420\":1,\"423\":1,\"438\":1,\"442\":1,\"447\":1,\"456\":3,\"459\":1,\"464\":1,\"465\":1,\"467\":1,\"468\":1,\"469\":1,\"470\":1,\"471\":1,\"472\":1,\"474\":1,\"476\":1,\"477\":1,\"478\":1,\"479\":1,\"480\":1,\"481\":1,\"482\":1,\"483\":1,\"484\":1,\"485\":1,\"486\":1,\"487\":1,\"489\":1,\"490\":1,\"491\":1,\"492\":1,\"538\":1,\"539\":1,\"542\":1,\"555\":1,\"558\":1,\"560\":1,\"563\":1,\"565\":1,\"567\":1,\"569\":1,\"572\":1,\"574\":1,\"576\":1,\"580\":1,\"582\":1,\"584\":1,\"586\":1,\"588\":1,\"590\":1,\"592\":1,\"594\":1}}],[\"包含在通用数据中的字段不会在下面的表格中重复出现\",{\"1\":{\"458\":1,\"466\":1,\"488\":1}}],[\"包括隐藏的身份组哦~~\",{\"1\":{\"253\":1}}],[\"详见\",{\"1\":{\"458\":1,\"466\":1,\"488\":1}}],[\"约会\",{\"1\":{\"457\":1}}],[\"多人聊天\",{\"1\":{\"457\":1}}],[\"多云\",{\"1\":{\"329\":11}}],[\"还会包含以下字段\",{\"1\":{\"456\":1}}],[\"还支持事件上报功能\",{\"1\":{\"355\":1}}],[\"运气王\",{\"1\":{\"453\":1,\"485\":1}}],[\"系统通知\",{\"1\":{\"452\":1}}],[\"系统提示\",{\"1\":{\"451\":1}}],[\"精华消息\",{\"0\":{\"481\":1},\"1\":{\"452\":1}}],[\"精华设置时间\",{\"1\":{\"74\":1}}],[\"客户端部署\",{\"1\":{\"520\":1}}],[\"客户端\",{\"1\":{\"497\":1,\"520\":2,\"530\":2,\"532\":1}}],[\"客户端信息\",{\"1\":{\"482\":1}}],[\"客户端状态\",{\"0\":{\"482\":1},\"1\":{\"452\":1}}],[\"客户端id\",{\"1\":{\"28\":1}}],[\"接收到离线文件包\",{\"1\":{\"452\":1}}],[\"接口\",{\"0\":{\"4\":1,\"88\":1,\"387\":1}}],[\"匿名消息\",{\"1\":{\"451\":1}}],[\"上报类型\",{\"1\":{\"447\":1}}],[\"上传文件到缓存目录\",{\"0\":{\"392\":1,\"396\":1}}],[\"上传群图片\",{\"0\":{\"330\":1}}],[\"上传群文件\",{\"0\":{\"110\":1}}],[\"上传者\",{\"1\":{\"472\":1,\"474\":2}}],[\"上传者名字\",{\"1\":{\"136\":1}}],[\"上传者id\",{\"1\":{\"136\":1}}],[\"上传时间\",{\"1\":{\"136\":1}}],[\"上传私聊文件\",{\"0\":{\"106\":1}}],[\"机器人qq\",{\"1\":{\"447\":1}}],[\"机型\",{\"1\":{\"22\":1}}],[\"机型名称\",{\"1\":{\"19\":1}}],[\"所有上报事件都包含通用数据\",{\"1\":{\"458\":1,\"466\":1,\"488\":1}}],[\"所有上报事件都包含以下字段\",{\"1\":{\"447\":1}}],[\"所有上报\",{\"0\":{\"447\":1}}],[\"事件类型\",{\"0\":{\"448\":1}}],[\"事件\",{\"0\":{\"444\":1}}],[\"单向好友qq号\",{\"1\":{\"438\":1}}],[\"单独设置某个用户的身份\",{\"1\":{\"264\":1}}],[\"单独获取频道成员信息\",{\"1\":{\"240\":1}}],[\"单独获取频道成员资料\",{\"0\":{\"240\":1}}],[\"好友请求\",{\"1\":{\"454\":1}}],[\"好友撤回\",{\"1\":{\"452\":1}}],[\"好友添加\",{\"0\":{\"478\":1},\"1\":{\"452\":1}}],[\"好友消息\",{\"1\":{\"451\":1}}],[\"好友\",{\"1\":{\"434\":1,\"467\":1,\"483\":1}}],[\"命令内容\",{\"1\":{\"423\":1}}],[\"远程shell执行\",{\"0\":{\"421\":1}}],[\"|\",{\"1\":{\"415\":2,\"419\":2,\"426\":2}}],[\"清除缓存\",{\"0\":{\"406\":1}}],[\"清除本地缓存消息\",{\"0\":{\"304\":1}}],[\"调用后会阻塞直到下载完成后才会返回数据\",{\"1\":{\"405\":1}}],[\"调用失败时出现\",{\"1\":{\"357\":2}}],[\"总文件大小\",{\"1\":{\"398\":1,\"399\":1}}],[\"从头上传\",{\"1\":{\"398\":1}}],[\"整个文件的md5\",{\"1\":{\"398\":1}}],[\"+\",{\"0\":{\"396\":1},\"1\":{\"498\":2,\"499\":1,\"532\":1}}],[\"允许切换备用能源\",{\"1\":{\"388\":1}}],[\"切换账号\",{\"0\":{\"388\":1}}],[\"转义字符\",{\"1\":{\"548\":1}}],[\"转义\",{\"0\":{\"548\":1}}],[\"转换后的语音文件路径\",{\"1\":{\"383\":1}}],[\"转发\",{\"1\":{\"315\":1}}],[\"实现的相关说明\",{\"1\":{\"381\":1}}],[\"实验功能\",{\"1\":{\"506\":1}}],[\"实验\",{\"0\":{\"330\":1}}],[\"通讯录\",{\"1\":{\"457\":1}}],[\"通知\",{\"1\":{\"449\":1}}],[\"通知事件\",{\"0\":{\"466\":1},\"1\":{\"445\":1}}],[\"通用数据\",{\"0\":{\"446\":1},\"1\":{\"445\":1,\"458\":1,\"466\":1,\"488\":1}}],[\"通常需要安装\",{\"1\":{\"381\":1}}],[\"通过这个api下载的文件能直接放入cq码作为图片发送\",{\"1\":{\"405\":1}}],[\"通过访客获取频道元数据\",{\"0\":{\"227\":1}}],[\"通过网络\",{\"1\":{\"153\":1}}],[\"要\",{\"1\":{\"547\":1,\"551\":1}}],[\"要下载\",{\"1\":{\"518\":1,\"519\":1}}],[\"要转换到的格式\",{\"1\":{\"382\":1}}],[\"要使用此接口\",{\"1\":{\"381\":1}}],[\"要设置的\",{\"1\":{\"160\":1}}],[\"检查是否可以发送语音\",{\"0\":{\"377\":1}}],[\"检查是否可以发送图片\",{\"0\":{\"364\":1}}],[\"输出格式\",{\"1\":{\"375\":1}}],[\"二维数组表示的坐标\",{\"1\":{\"372\":1}}],[\"置信度\",{\"1\":{\"372\":1}}],[\"语言\",{\"1\":{\"371\":1}}],[\"语音链接地址\",{\"1\":{\"558\":1}}],[\"语音文件地址\",{\"1\":{\"558\":1}}],[\"语音\",{\"0\":{\"557\":1},\"1\":{\"545\":1}}],[\"语音频道\",{\"1\":{\"235\":1}}],[\"语音引擎\",{\"0\":{\"3\":1},\"1\":{\"3\":2}}],[\"语音支持库\",{\"1\":{\"3\":1}}],[\"语音支持\",{\"0\":{\"2\":1},\"1\":{\"1\":1}}],[\"yes\",{\"1\":{\"367\":1,\"380\":1}}],[\"yyyy\",{\"1\":{\"13\":1}}],[\"失败\",{\"1\":{\"358\":1}}],[\"错误信息\",{\"1\":{\"357\":1}}],[\"非\",{\"1\":{\"357\":1}}],[\"返回码\",{\"1\":{\"357\":1}}],[\"状态\",{\"0\":{\"358\":1},\"1\":{\"357\":1}}],[\"区别在于\",{\"1\":{\"355\":1,\"447\":1}}],[\"地址有两种\",{\"1\":{\"355\":1}}],[\"地址或域名\",{\"1\":{\"352\":1,\"353\":1}}],[\"支持的qq版本\",{\"0\":{\"503\":1},\"1\":{\"520\":1}}],[\"支持使用\",{\"1\":{\"355\":1}}],[\"支持base64\",{\"1\":{\"188\":1}}],[\"大部分\",{\"1\":{\"501\":1}}],[\"大部分配置简单易于理解\",{\"1\":{\"495\":1}}],[\"大多数情况下\",{\"1\":{\"354\":1}}],[\"大学\",{\"1\":{\"13\":1}}],[\"端口\",{\"1\":{\"352\":1,\"353\":1}}],[\"端点\",{\"0\":{\"8\":1,\"12\":1,\"16\":1,\"21\":1,\"25\":1,\"31\":1,\"35\":1,\"39\":1,\"43\":1,\"47\":1,\"51\":1,\"55\":1,\"59\":1,\"64\":1,\"69\":1,\"72\":1,\"76\":1,\"81\":1,\"85\":1,\"107\":1,\"111\":1,\"115\":1,\"118\":1,\"122\":1,\"125\":1,\"129\":1,\"133\":1,\"139\":1,\"143\":1,\"148\":1,\"152\":1,\"155\":1,\"159\":1,\"162\":1,\"165\":1,\"169\":1,\"173\":1,\"177\":1,\"180\":1,\"183\":1,\"187\":1,\"191\":1,\"197\":1,\"201\":1,\"205\":1,\"217\":1,\"222\":1,\"225\":1,\"228\":1,\"232\":1,\"237\":1,\"241\":1,\"245\":1,\"250\":1,\"254\":1,\"259\":1,\"266\":1,\"270\":1,\"275\":1,\"279\":1,\"283\":1,\"287\":1,\"292\":1,\"296\":1,\"301\":1,\"305\":1,\"309\":1,\"313\":1,\"318\":1,\"323\":1,\"327\":1,\"331\":1,\"335\":1,\"339\":1,\"343\":1,\"347\":1,\"361\":1,\"365\":1,\"369\":1,\"374\":1,\"378\":1,\"381\":1,\"393\":1,\"397\":1,\"401\":1,\"407\":1,\"411\":1,\"414\":1,\"418\":1,\"425\":1,\"429\":1,\"433\":1,\"437\":1,\"441\":1},\"1\":{\"352\":1,\"353\":1,\"356\":1}}],[\"\",{\"1\":{\"352\":2}}],[\"\",{\"1\":{\"352\":2,\"353\":2,\"355\":2}}],[\"\",{\"1\":{\"352\":2,\"353\":2}}],[\"\",{\"1\":{\"352\":2,\"353\":2,\"355\":2}}],[\"由shamrock自己访问该url来下载文件\",{\"1\":{\"400\":1}}],[\"由以下部分组成\",{\"1\":{\"352\":1,\"353\":1}}],[\"由于qq限制\",{\"1\":{\"315\":1}}],[\"由于qq内部错误\",{\"1\":{\"310\":1}}],[\"由于过于简单\",{\"1\":{\"88\":1}}],[\"您需要使用\",{\"1\":{\"351\":1}}],[\"您可以使用\",{\"1\":{\"351\":1}}],[\"您可以通过发送\",{\"1\":{\"350\":1}}],[\"两种请求方式\",{\"1\":{\"351\":1}}],[\"和红手指云手机\",{\"1\":{\"514\":1}}],[\"和\",{\"1\":{\"351\":1,\"513\":1,\"548\":1,\"563\":1}}],[\"和本地路径\",{\"1\":{\"188\":1}}],[\"与\",{\"0\":{\"346\":1}}],[\"与昵称\",{\"1\":{\"316\":1}}],[\"令牌\",{\"0\":{\"338\":1,\"346\":1}}],[\"域名\",{\"1\":{\"336\":1,\"340\":1,\"344\":1,\"348\":1}}],[\"也不是群相册\",{\"1\":{\"330\":1}}],[\"分为show\",{\"1\":{\"555\":1}}],[\"分隔的多个部分组成\",{\"1\":{\"548\":1}}],[\"分享\",{\"1\":{\"329\":1}}],[\"分类\",{\"1\":{\"91\":1}}],[\"北京\",{\"1\":{\"329\":3}}],[\"北京大学交流频道\",{\"1\":{\"226\":1,\"230\":1}}],[\"北京大学频道\",{\"1\":{\"226\":1}}],[\"晴\",{\"1\":{\"329\":2}}],[\"阴天\",{\"1\":{\"329\":2}}],[\"阴\",{\"1\":{\"329\":2}}],[\"西南风\",{\"1\":{\"329\":4}}],[\"微风\",{\"1\":{\"329\":8}}],[\"柳州\",{\"1\":{\"325\":1}}],[\"广西\",{\"1\":{\"325\":1}}],[\"城市代码\",{\"1\":{\"588\":1}}],[\"城市名称\",{\"1\":{\"588\":1}}],[\"城市\",{\"1\":{\"324\":1,\"328\":1}}],[\"同时qq有时也会有概率杀死他自己\",{\"1\":{\"508\":1}}],[\"同时允许两个token可使用|或\",{\"1\":{\"499\":1}}],[\"同时发送url和base64时\",{\"1\":{\"400\":1}}],[\"同\",{\"1\":{\"320\":1}}],[\"引用自定义混合合并转发\",{\"1\":{\"316\":1}}],[\"自拍\",{\"1\":{\"556\":1}}],[\"自身操作\",{\"1\":{\"451\":1}}],[\"自定义请使用\",{\"1\":{\"586\":1}}],[\"自定义\",{\"0\":{\"585\":1}}],[\"自定义的回显字段\",{\"1\":{\"356\":1}}],[\"自定义消息合并转发\",{\"1\":{\"316\":1}}],[\"自动撤回时间间隔\",{\"1\":{\"276\":1,\"280\":1,\"284\":1}}],[\"自动撤回间隔\",{\"1\":{\"246\":1}}],[\"直接引用消息的合并转发\",{\"1\":{\"316\":1}}],[\"直播频道\",{\"1\":{\"235\":1}}],[\"示例\",{\"0\":{\"316\":1,\"547\":1,\"551\":1}}],[\"伏秋洛~\",{\"1\":{\"311\":1}}],[\"起始消息的message\",{\"1\":{\"297\":1,\"302\":1}}],[\"撤回消息\",{\"0\":{\"291\":1}}],[\"性别\",{\"1\":{\"290\":1}}],[\"私聊文件信息结构体\",{\"0\":{\"475\":1}}],[\"私聊文件信息\",{\"1\":{\"474\":1}}],[\"私聊文件上传\",{\"0\":{\"474\":1}}],[\"私聊消息撤回\",{\"0\":{\"467\":1}}],[\"私聊消息\",{\"0\":{\"460\":1,\"462\":1},\"1\":{\"450\":1}}],[\"私聊qq\",{\"1\":{\"297\":1,\"306\":1}}],[\"私聊时是目标qq\",{\"1\":{\"289\":1,\"299\":1,\"459\":1}}],[\"私聊\",{\"1\":{\"289\":1,\"299\":1,\"459\":2}}],[\"暂不支持太极使用\",{\"1\":{\"534\":1}}],[\"暂不支持发送讨论组消息\",{\"1\":{\"284\":1}}],[\"暂不支持设置权限\",{\"1\":{\"265\":1}}],[\"讨论组号\",{\"1\":{\"284\":1}}],[\"码中使用这些字符\",{\"1\":{\"548\":1}}],[\"码中内容含义如下\",{\"1\":{\"546\":1}}],[\"码由\",{\"1\":{\"548\":1}}],[\"码的基本格式\",{\"1\":{\"546\":1}}],[\"码是一种特殊的文本格式\",{\"1\":{\"545\":1}}],[\"码和消息段两种格式的消息示例\",{\"1\":{\"544\":1}}],[\"码格式消息\",{\"1\":{\"459\":1}}],[\"码\",{\"0\":{\"545\":1},\"1\":{\"276\":1,\"280\":1,\"284\":1,\"497\":1}}],[\"以上消息段会被解析为\",{\"1\":{\"552\":1}}],[\"以上的系统中\",{\"1\":{\"533\":1}}],[\"以下是一个消息段的基本格式\",{\"1\":{\"550\":1}}],[\"以便于您更好地理解\",{\"1\":{\"544\":1}}],[\"以免造成不必要的损失\",{\"1\":{\"516\":1}}],[\"以file格式上传文件\",{\"1\":{\"394\":1}}],[\"以\",{\"1\":{\"271\":1,\"553\":2}}],[\"以逗号分隔每个tinyid\",{\"1\":{\"264\":1}}],[\"则需要重启手机\",{\"1\":{\"530\":1}}],[\"则需要勾选模块作用域\",{\"1\":{\"530\":1}}],[\"则使用默认\",{\"1\":{\"499\":1}}],[\"则为发送者的tiny\",{\"1\":{\"459\":1}}],[\"则会包含以下字段\",{\"1\":{\"456\":1}}],[\"则initial\",{\"1\":{\"271\":1}}],[\"则无法发送\",{\"1\":{\"3\":1}}],[\"颜色argb\",{\"1\":{\"267\":1,\"271\":1}}],[\"名称\",{\"1\":{\"267\":1,\"271\":1,\"363\":1,\"398\":1,\"399\":1}}],[\"如发送图片\",{\"1\":{\"546\":1}}],[\"如遇问题请提交\",{\"1\":{\"503\":1}}],[\"如\",{\"1\":{\"382\":1,\"383\":1,\"484\":1,\"546\":2}}],[\"如有需要请提交issue\",{\"1\":{\"265\":1}}],[\"如果已经安装会提示卸载\",{\"1\":{\"532\":1}}],[\"如果环境为\",{\"1\":{\"530\":1}}],[\"如果使用\",{\"1\":{\"530\":1}}],[\"如果您使用了\",{\"1\":{\"520\":1}}],[\"如果您需要向\",{\"1\":{\"351\":1}}],[\"如果盲目升级\",{\"1\":{\"516\":1}}],[\"如果启用了\",{\"1\":{\"506\":1}}],[\"如果未单独定义\",{\"1\":{\"499\":1}}],[\"如果未安装\",{\"1\":{\"3\":1}}],[\"如果默认tk存在则使用默认token鉴权\",{\"1\":{\"499\":1}}],[\"如果群号是`12345678`就跳过了哦\",{\"1\":{\"499\":1}}],[\"如果是频道消息\",{\"1\":{\"456\":1}}],[\"如果是群消息\",{\"1\":{\"456\":1}}],[\"如果是http请求\",{\"1\":{\"271\":1}}],[\"如果users是字符串那么其格式为123456\",{\"1\":{\"264\":1}}],[\"如果需要某些功能可以自行pr\",{\"1\":{\"88\":1}}],[\"如果列表不存在任何消息\",{\"1\":{\"65\":1}}],[\"如果没有\",{\"1\":{\"3\":1}}],[\"批量设置用户s\",{\"1\":{\"264\":1}}],[\"角色id\",{\"1\":{\"260\":1,\"264\":1,\"267\":1,\"272\":1}}],[\"删除单向好友\",{\"0\":{\"436\":1}}],[\"删除好友\",{\"0\":{\"432\":1}}],[\"删除一个身份组\",{\"1\":{\"258\":1}}],[\"删除频道角色\",{\"0\":{\"258\":1}}],[\"删除群文件文件夹\",{\"0\":{\"124\":1}}],[\"删除群文件\",{\"0\":{\"114\":1}}],[\"普通成员\",{\"1\":{\"256\":1}}],[\"新骰子\",{\"0\":{\"575\":1}}],[\"新猜拳\",{\"0\":{\"573\":1}}],[\"新建修补\",{\"1\":{\"532\":1}}],[\"新添加好友\",{\"1\":{\"478\":1}}],[\"新名片\",{\"1\":{\"477\":1}}],[\"新成员\",{\"1\":{\"469\":1,\"470\":1}}],[\"新增成员\",{\"1\":{\"469\":1}}],[\"新的获取帖子广场的帖子哦\",{\"1\":{\"249\":1}}],[\"新群名\",{\"1\":{\"149\":1}}],[\"毫秒\",{\"1\":{\"246\":1,\"276\":1,\"280\":1,\"284\":1}}],[\"最大重试次数\",{\"1\":{\"246\":1}}],[\"最后修改时间\",{\"1\":{\"136\":1}}],[\"子文件id\",{\"1\":{\"475\":1}}],[\"子文件数量\",{\"1\":{\"137\":1}}],[\"子类型\",{\"1\":{\"469\":1,\"470\":1,\"471\":1,\"476\":1,\"481\":1,\"491\":1}}],[\"子频道id\",{\"1\":{\"246\":1}}],[\"发\",{\"1\":{\"538\":1,\"539\":1,\"542\":1,\"555\":1,\"558\":1,\"560\":1,\"563\":1,\"565\":1,\"567\":1,\"569\":1,\"572\":1,\"574\":1,\"576\":1,\"580\":1,\"582\":1,\"584\":1,\"586\":1,\"588\":1,\"590\":1,\"592\":1,\"594\":1}}],[\"发不出去的~~\",{\"1\":{\"244\":1}}],[\"发送语音消息需要安装语音引擎\",{\"1\":{\"558\":1}}],[\"发送二进制数据\",{\"1\":{\"351\":1}}],[\"发送大量数据\",{\"1\":{\"351\":1}}],[\"发送到的目标qq\",{\"1\":{\"319\":1}}],[\"发送到的目标群号\",{\"1\":{\"314\":1}}],[\"发送私聊合并转发\",{\"0\":{\"317\":1},\"1\":{\"317\":1}}],[\"发送私聊消息\",{\"0\":{\"274\":1}}],[\"发送人信息\",{\"1\":{\"289\":1,\"299\":1,\"459\":1}}],[\"发送消息\",{\"0\":{\"282\":1},\"1\":{\"449\":1}}],[\"发送群聊合并转发\",{\"0\":{\"312\":1},\"1\":{\"312\":1}}],[\"发送群聊消息\",{\"0\":{\"278\":1}}],[\"发送群公告\",{\"0\":{\"186\":1}}],[\"发送频道内信息\",{\"1\":{\"244\":1}}],[\"发送信息到子频道\",{\"0\":{\"244\":1}}],[\"发送时有效\",{\"1\":{\"153\":1}}],[\"发送者的tiny\",{\"1\":{\"459\":1}}],[\"发送者tinyid\",{\"1\":{\"456\":1}}],[\"发送者头衔\",{\"1\":{\"456\":1}}],[\"发送者角色\",{\"1\":{\"456\":1}}],[\"发送者等级\",{\"1\":{\"456\":1}}],[\"发送者群名片\",{\"1\":{\"456\":1}}],[\"发送者\",{\"1\":{\"456\":1,\"459\":1,\"465\":1,\"468\":1,\"479\":1,\"481\":1,\"483\":1,\"485\":1}}],[\"发送者昵称\",{\"1\":{\"74\":1,\"456\":1}}],[\"发送者qq\",{\"1\":{\"74\":1}}],[\"成员tinyid\",{\"1\":{\"242\":1}}],[\"成功\",{\"1\":{\"120\":1,\"358\":1}}],[\"主进程运行\",{\"1\":{\"513\":1}}],[\"主进程中\",{\"1\":{\"513\":1}}],[\"主要是不太会\",{\"1\":{\"512\":1}}],[\"主被动ws\",{\"1\":{\"499\":1}}],[\"主动ws监听的端口\",{\"1\":{\"499\":1}}],[\"主题频道\",{\"1\":{\"235\":1}}],[\"主目录\",{\"1\":{\"3\":2,\"498\":2,\"499\":1,\"501\":1}}],[\"文本转语音\",{\"0\":{\"543\":1}}],[\"文本\",{\"1\":{\"372\":1}}],[\"文字频道\",{\"1\":{\"235\":1}}],[\"文件链接\",{\"1\":{\"592\":1}}],[\"文件地址\",{\"1\":{\"553\":1}}],[\"文件创建在\",{\"1\":{\"499\":1}}],[\"文件信息\",{\"0\":{\"480\":1},\"1\":{\"479\":1}}],[\"文件过期时间\",{\"1\":{\"475\":1}}],[\"文件md5\",{\"1\":{\"402\":1}}],[\"文件分段上传数据块\",{\"1\":{\"398\":1}}],[\"文件分段上传偏移\",{\"1\":{\"398\":1}}],[\"文件hex格式的md5值\",{\"1\":{\"398\":1}}],[\"文件路径\",{\"1\":{\"376\":1}}],[\"文件\",{\"1\":{\"362\":1,\"363\":2,\"375\":1,\"376\":1,\"473\":1,\"475\":1}}],[\"文件下载链接\",{\"1\":{\"145\":1}}],[\"文件大小\",{\"1\":{\"136\":1,\"363\":1,\"473\":1,\"475\":1,\"480\":1}}],[\"文件名\",{\"1\":{\"136\":1,\"137\":1,\"473\":1,\"475\":1,\"480\":1}}],[\"文件名称\",{\"1\":{\"108\":1,\"112\":1,\"402\":1}}],[\"文件列表\",{\"1\":{\"135\":1,\"141\":1}}],[\"文件上限\",{\"1\":{\"131\":1}}],[\"文件总数\",{\"1\":{\"131\":1}}],[\"文件类型\",{\"1\":{\"116\":1,\"136\":1,\"144\":1}}],[\"文件id\",{\"1\":{\"116\":1,\"136\":1,\"144\":1}}],[\"文件url则应该是正确的http请求地址\",{\"1\":{\"108\":1,\"112\":1}}],[\"文件url\",{\"1\":{\"108\":1,\"112\":1}}],[\"文件base64内容\",{\"1\":{\"402\":1}}],[\"文件base64为base64\",{\"1\":{\"108\":1,\"112\":1}}],[\"文件base64\",{\"1\":{\"108\":1,\"112\":1}}],[\"文件的话请先下载至本地\",{\"1\":{\"106\":1,\"110\":1}}],[\"文件相关\",{\"0\":{\"105\":1},\"1\":{\"5\":1}}],[\"文件夹内\",{\"1\":{\"515\":1}}],[\"文件夹列表\",{\"1\":{\"135\":1,\"141\":1}}],[\"文件夹id\",{\"1\":{\"126\":1,\"137\":1,\"140\":1}}],[\"文件夹\",{\"1\":{\"3\":1}}],[\"文件夹中\",{\"1\":{\"3\":1}}],[\"已知子频道类型列表\",{\"0\":{\"235\":1}}],[\"已使用空间\",{\"1\":{\"131\":1}}],[\"78\",{\"1\":{\"503\":1}}],[\"75\",{\"1\":{\"503\":1}}],[\"73\",{\"1\":{\"503\":1}}],[\"70\",{\"1\":{\"503\":1}}],[\"70007\",{\"1\":{\"243\":1}}],[\"70006\",{\"1\":{\"243\":1}}],[\"70005\",{\"1\":{\"243\":1}}],[\"70004\",{\"1\":{\"243\":1}}],[\"70003\",{\"1\":{\"243\":1}}],[\"70002\",{\"1\":{\"243\":1}}],[\"70001\",{\"1\":{\"243\":1}}],[\"70000\",{\"1\":{\"243\":1}}],[\"7\",{\"1\":{\"234\":1,\"235\":1,\"457\":1,\"556\":1}}],[\"3102000\",{\"1\":{\"412\":1}}],[\"32长度的字符串\",{\"1\":{\"398\":1}}],[\"3600\",{\"1\":{\"234\":1}}],[\"3006\",{\"1\":{\"243\":1}}],[\"3005\",{\"1\":{\"243\":1}}],[\"3004\",{\"1\":{\"243\":1}}],[\"3003\",{\"1\":{\"243\":1}}],[\"3002\",{\"1\":{\"243\":1}}],[\"3001\",{\"1\":{\"243\":1}}],[\"30007\",{\"1\":{\"243\":1}}],[\"30006\",{\"1\":{\"243\":1}}],[\"30005\",{\"1\":{\"243\":1}}],[\"30004\",{\"1\":{\"243\":1}}],[\"30003\",{\"1\":{\"243\":2}}],[\"30002\",{\"1\":{\"243\":1}}],[\"30001\",{\"1\":{\"243\":1}}],[\"30000\",{\"1\":{\"243\":1}}],[\"300\",{\"1\":{\"234\":1}}],[\"3\",{\"1\":{\"234\":1,\"243\":1,\"329\":4,\"457\":1,\"500\":1,\"556\":1,\"572\":1,\"574\":1}}],[\"333425833\",{\"1\":{\"92\":1}}],[\"每隔一段时间\",{\"0\":{\"508\":1}}],[\"每隔\",{\"1\":{\"497\":1}}],[\"每24小时1条\",{\"1\":{\"234\":1}}],[\"每30分钟1条\",{\"1\":{\"234\":1}}],[\"每12小时1条\",{\"1\":{\"234\":1}}],[\"每1小时1条\",{\"1\":{\"234\":1}}],[\"每15分钟1条\",{\"1\":{\"234\":1}}],[\"每10分钟1条\",{\"1\":{\"234\":1}}],[\"每5分钟1条\",{\"1\":{\"234\":1}}],[\"每分钟10条\",{\"1\":{\"234\":1}}],[\"每分钟1条\",{\"1\":{\"234\":1}}],[\"每分钟5条\",{\"1\":{\"234\":1}}],[\"每分钟2条\",{\"1\":{\"234\":1}}],[\"每个元素内容如下\",{\"1\":{\"193\":1}}],[\"每个元素为一个好友请求的系统信息\",{\"1\":{\"70\":1}}],[\"每个元素为一个好友的信息\",{\"1\":{\"37\":1}}],[\"每个元素为一个群成员的信息\",{\"1\":{\"57\":1}}],[\"每个元素为一个群的信息\",{\"1\":{\"49\":1}}],[\"每个元素如下\",{\"1\":{\"41\":1,\"74\":1}}],[\"关闭睡眠模式\",{\"1\":{\"509\":1}}],[\"关闭shamrock\",{\"0\":{\"424\":1}}],[\"关闭\",{\"1\":{\"234\":1}}],[\"关于\",{\"1\":{\"3\":1}}],[\"闲聊吹水\",{\"1\":{\"234\":1}}],[\"value\",{\"1\":{\"546\":1,\"556\":1}}],[\"value2\",{\"1\":{\"354\":1}}],[\"value1\",{\"1\":{\"354\":1}}],[\"virtualxposed\",{\"0\":{\"533\":1},\"1\":{\"533\":1}}],[\"view\",{\"1\":{\"329\":1}}],[\"visible\",{\"1\":{\"234\":2}}],[\"vector2\",{\"1\":{\"372\":1}}],[\"vector\",{\"1\":{\"264\":1,\"271\":1}}],[\"ver\",{\"1\":{\"329\":1}}],[\"version\",{\"1\":{\"92\":1,\"430\":2,\"500\":1}}],[\"68\",{\"1\":{\"503\":1}}],[\"6656656526\",{\"1\":{\"264\":1}}],[\"6\",{\"1\":{\"234\":1,\"243\":1,\"457\":1}}],[\"6003\",{\"1\":{\"243\":1}}],[\"6002\",{\"1\":{\"243\":1}}],[\"6001\",{\"1\":{\"243\":1}}],[\"60001\",{\"1\":{\"243\":1}}],[\"60000\",{\"1\":{\"243\":1}}],[\"600\",{\"1\":{\"234\":1}}],[\"60\",{\"1\":{\"234\":4}}],[\"639093001\",{\"1\":{\"234\":2}}],[\"639093000\",{\"1\":{\"234\":2}}],[\"6241\",{\"1\":{\"230\":1}}],[\"628获取\",{\"1\":{\"195\":1}}],[\"列表\",{\"1\":{\"231\":1}}],[\"52pojie论坛\",{\"1\":{\"522\":1}}],[\"5800\",{\"1\":{\"499\":1}}],[\"5\",{\"1\":{\"234\":2,\"235\":1,\"243\":1,\"497\":1,\"572\":1,\"580\":1}}],[\"50kb\",{\"1\":{\"515\":1}}],[\"5001\",{\"1\":{\"243\":1}}],[\"50001\",{\"1\":{\"243\":1}}],[\"50000\",{\"1\":{\"243\":1}}],[\"50\",{\"1\":{\"230\":1}}],[\"567571\",{\"1\":{\"153\":1}}],[\"频道消息\",{\"0\":{\"463\":1}}],[\"频道\",{\"1\":{\"459\":1}}],[\"频道主\",{\"1\":{\"243\":2}}],[\"频道助手\",{\"1\":{\"239\":2}}],[\"频道id\",{\"1\":{\"229\":1,\"233\":1,\"238\":1,\"242\":1,\"246\":1,\"251\":1,\"255\":1,\"260\":1,\"264\":1,\"267\":1,\"271\":1}}],[\"频道相关\",{\"0\":{\"220\":1},\"1\":{\"5\":1}}],[\"kvm上部署android\",{\"1\":{\"528\":1}}],[\"kvm部署\",{\"0\":{\"528\":1}}],[\"key\",{\"1\":{\"234\":12,\"500\":1}}],[\"kti=\",{\"1\":{\"223\":1}}],[\"k=\",{\"1\":{\"223\":1}}],[\"king\",{\"1\":{\"453\":1,\"485\":1}}],[\"kind\",{\"1\":{\"28\":1}}],[\"kick\",{\"1\":{\"197\":1,\"430\":2,\"465\":1,\"470\":2}}],[\"田所浩二\",{\"1\":{\"223\":1}}],[\"表情\",{\"0\":{\"564\":1},\"1\":{\"565\":2,\"567\":2}}],[\"表情包\",{\"1\":{\"556\":1}}],[\"表情id\",{\"1\":{\"218\":1}}],[\"表示\",{\"1\":{\"563\":1}}],[\"表示收到了加群请求\",{\"1\":{\"491\":1}}],[\"表示收到了加好友请求\",{\"1\":{\"489\":1}}],[\"表示收到了头像戳一戳事件\",{\"1\":{\"483\":1}}],[\"表示收到了客户端状态事件\",{\"1\":{\"482\":1}}],[\"表示收到了精华消息事件\",{\"1\":{\"481\":1}}],[\"表示收到了离线文件事件\",{\"1\":{\"479\":1}}],[\"表示收到了好友添加事件\",{\"1\":{\"478\":1}}],[\"表示收到了群头衔变更事件\",{\"1\":{\"487\":1}}],[\"表示收到了群荣誉变更事件\",{\"1\":{\"486\":1}}],[\"表示收到了群红包运气王事件\",{\"1\":{\"485\":1}}],[\"表示收到了群成员名片变动事件\",{\"1\":{\"477\":1}}],[\"表示收到了群禁言事件\",{\"1\":{\"476\":1}}],[\"表示收到了群文件上传事件\",{\"1\":{\"472\":1,\"474\":1}}],[\"表示收到了群组管理员变动事件\",{\"1\":{\"471\":1}}],[\"表示收到了群组成员减少事件\",{\"1\":{\"470\":1}}],[\"表示收到了群组成员增加事件\",{\"1\":{\"469\":1}}],[\"表示收到了群聊消息撤回事件\",{\"1\":{\"468\":1}}],[\"表示收到了群消息\",{\"1\":{\"461\":1,\"462\":1,\"463\":1}}],[\"表示收到了私聊消息撤回事件\",{\"1\":{\"467\":1}}],[\"表示收到了私聊消息\",{\"1\":{\"460\":1}}],[\"表示从最后一条发言往前\",{\"1\":{\"297\":1,\"302\":1}}],[\"表示是否使用已缓存的文件\",{\"1\":{\"153\":1}}],[\"只会上报\",{\"1\":{\"447\":1}}],[\"只能获取已缓存的图片\",{\"1\":{\"360\":1}}],[\"只能上传本地文件\",{\"1\":{\"106\":1,\"110\":1}}],[\"只在部分群聊进行灰度测试\",{\"1\":{\"216\":1}}],[\"貌似是从别的地方抄的奇怪功能\",{\"1\":{\"216\":1}}],[\"剩余次数\",{\"0\":{\"212\":1}}],[\"全体成员\",{\"0\":{\"212\":1},\"1\":{\"563\":1}}],[\"全部荣誉\",{\"1\":{\"61\":1}}],[\"退出群组\",{\"0\":{\"200\":1}}],[\"qrspeed\",{\"1\":{\"520\":1}}],[\"qrcode\",{\"1\":{\"329\":1,\"430\":1}}],[\"quick\",{\"1\":{\"430\":1}}],[\"qlogo\",{\"1\":{\"223\":1}}],[\"qpic\",{\"1\":{\"195\":1}}],[\"qq号\",{\"1\":{\"582\":1}}],[\"qq=123456\",{\"1\":{\"547\":1}}],[\"qqapk\",{\"1\":{\"532\":1}}],[\"qq修复了登录响应超时的问题\",{\"1\":{\"510\":1}}],[\"qq闪退\",{\"0\":{\"508\":1,\"510\":1}}],[\"qq主目录\",{\"1\":{\"498\":1}}],[\"qq电影\",{\"1\":{\"457\":1}}],[\"qq咨询\",{\"1\":{\"457\":1}}],[\"qqchannel\",{\"1\":{\"243\":1}}],[\"qq账号\",{\"1\":{\"77\":1}}],[\"qq是否在黑名单内\",{\"0\":{\"75\":1}}],[\"qq\",{\"0\":{\"11\":1},\"1\":{\"7\":1,\"11\":1,\"12\":1,\"15\":1,\"20\":1,\"32\":1,\"41\":1,\"52\":1,\"62\":1,\"156\":1,\"160\":1,\"166\":1,\"170\":1,\"198\":1,\"206\":1,\"276\":1,\"284\":1,\"290\":1,\"333\":1,\"390\":1,\"430\":1,\"434\":1,\"456\":1,\"459\":1,\"467\":2,\"468\":2,\"469\":2,\"470\":2,\"471\":1,\"472\":1,\"474\":2,\"476\":2,\"477\":1,\"478\":1,\"479\":1,\"481\":2,\"483\":3,\"489\":1,\"491\":1,\"497\":2,\"498\":1,\"504\":1,\"506\":2,\"509\":1,\"513\":2,\"520\":3,\"521\":1,\"529\":1,\"530\":3,\"532\":5,\"546\":2,\"547\":1,\"551\":2,\"552\":1,\"563\":4,\"584\":1,\"594\":2}}],[\"qq收藏\",{\"0\":{\"88\":1},\"1\":{\"5\":1}}],[\"的参数规则如下\",{\"1\":{\"553\":1}}],[\"的用户\",{\"1\":{\"547\":1,\"551\":1}}],[\"的版本\",{\"1\":{\"529\":1}}],[\"的开发版本\",{\"1\":{\"519\":1}}],[\"的稳定版本\",{\"1\":{\"518\":1}}],[\"的更新会围绕一个稳定的版本\",{\"1\":{\"516\":1}}],[\"的日志文件\",{\"1\":{\"515\":2}}],[\"的自动唤醒\",{\"1\":{\"508\":1}}],[\"的部分配置需要重新启动\",{\"1\":{\"506\":1}}],[\"的数据\",{\"1\":{\"501\":1}}],[\"的路径\",{\"1\":{\"399\":1}}],[\"的响应状态有以下几种\",{\"1\":{\"358\":1}}],[\"的响应格式为\",{\"1\":{\"357\":1}}],[\"的响应内容为\",{\"1\":{\"193\":1}}],[\"的\",{\"1\":{\"352\":3,\"353\":3,\"506\":1,\"509\":1,\"517\":1,\"522\":1,\"546\":1}}],[\"的语音解码器已经模块化\",{\"1\":{\"3\":1}}],[\"公告图片\",{\"1\":{\"194\":1}}],[\"公告发表时间\",{\"1\":{\"193\":1}}],[\"公告发表者\",{\"1\":{\"193\":1}}],[\"公告内容\",{\"1\":{\"188\":1,\"193\":1,\"194\":1}}],[\"公司\",{\"1\":{\"13\":1}}],[\"移出精华消息\",{\"0\":{\"179\":1}}],[\"时的功能\",{\"1\":{\"563\":1}}],[\"时可以使用它们\",{\"1\":{\"515\":1}}],[\"时间戳\",{\"1\":{\"277\":1,\"281\":1,\"285\":1,\"289\":1,\"299\":1,\"447\":1}}],[\"时\",{\"1\":{\"170\":1,\"356\":1,\"447\":1,\"460\":1,\"461\":1,\"462\":1,\"463\":1,\"467\":1,\"468\":1,\"469\":1,\"470\":1,\"471\":1,\"472\":1,\"474\":1,\"476\":1,\"477\":1,\"478\":1,\"479\":1,\"481\":1,\"482\":1,\"483\":1,\"485\":1,\"486\":1,\"487\":1,\"489\":1,\"491\":1,\"563\":1}}],[\"当然第一次使用\",{\"1\":{\"513\":1}}],[\"当前所处的目录\",{\"1\":{\"423\":1}}],[\"当前发送消息的\",{\"1\":{\"284\":1}}],[\"当前龙王\",{\"1\":{\"61\":1}}],[\"当机器人是管理员时可用\",{\"1\":{\"212\":1}}],[\"当\",{\"1\":{\"170\":1,\"460\":1,\"461\":1,\"462\":1,\"463\":1,\"467\":1,\"468\":1,\"469\":1,\"470\":1,\"471\":1,\"472\":1,\"474\":1,\"476\":1,\"477\":1,\"478\":1,\"479\":1,\"481\":1,\"482\":1,\"483\":1,\"485\":1,\"486\":1,\"487\":1,\"489\":1,\"491\":1,\"563\":1}}],[\"头\",{\"1\":{\"500\":1}}],[\"头像戳一戳\",{\"0\":{\"483\":1}}],[\"头像链接\",{\"1\":{\"62\":1}}],[\"头衔\",{\"1\":{\"166\":1}}],[\"不同\",{\"1\":{\"579\":1}}],[\"不同于\",{\"1\":{\"316\":1}}],[\"不可用\",{\"1\":{\"516\":1}}],[\"不需要\",{\"1\":{\"513\":1}}],[\"不建议使用\",{\"1\":{\"497\":1}}],[\"不支持ws\",{\"1\":{\"415\":1,\"419\":1,\"426\":1}}],[\"不是群文件\",{\"1\":{\"330\":1}}],[\"不要使用wsa\",{\"1\":{\"510\":1}}],[\"不要使用binary\",{\"1\":{\"394\":1}}],[\"不要使用\",{\"1\":{\"244\":1}}],[\"不提供则从首页开始获取\",{\"1\":{\"238\":1}}],[\"不填或空字符串表示删除群备注\",{\"1\":{\"163\":1}}],[\"不填或空字符串表示删除群名片\",{\"1\":{\"160\":1}}],[\"不会进行大量维护和更新\",{\"1\":{\"88\":1}}],[\"为换行符\",{\"1\":{\"404\":1}}],[\"为失败\",{\"1\":{\"357\":1}}],[\"为成功\",{\"1\":{\"357\":2}}],[\"为您提供了一个支持\",{\"1\":{\"350\":1}}],[\"为用户tiny\",{\"1\":{\"271\":1}}],[\"为\",{\"1\":{\"170\":1,\"447\":1,\"460\":1,\"461\":1,\"462\":1,\"463\":1,\"467\":1,\"468\":1,\"469\":1,\"470\":1,\"471\":1,\"472\":1,\"474\":1,\"476\":1,\"477\":1,\"478\":1,\"479\":1,\"481\":1,\"482\":1,\"483\":2,\"485\":2,\"486\":2,\"487\":2,\"489\":1,\"491\":1,\"509\":1}}],[\"为1\",{\"1\":{\"153\":1}}],[\"为了完整支持语音消息\",{\"1\":{\"3\":1}}],[\"默认1\",{\"1\":{\"580\":1}}],[\"默认qq\",{\"1\":{\"530\":1}}],[\"默认情况下\",{\"1\":{\"447\":1}}],[\"默认为0\",{\"1\":{\"297\":1,\"302\":1}}],[\"默认为20\",{\"1\":{\"297\":1,\"302\":1}}],[\"默认身份组成员\",{\"1\":{\"271\":1}}],[\"默认不撤回\",{\"1\":{\"246\":1}}],[\"默认3\",{\"1\":{\"246\":1}}],[\"默认false\",{\"1\":{\"233\":1,\"238\":2,\"246\":1,\"264\":1}}],[\"默认\",{\"1\":{\"153\":1,\"499\":1}}],[\"默认值为0\",{\"1\":{\"398\":1}}],[\"默认值\",{\"1\":{\"82\":1,\"86\":1,\"91\":1,\"95\":1,\"99\":1,\"103\":1,\"160\":1,\"163\":1,\"174\":1,\"188\":1,\"192\":1,\"382\":1,\"390\":1,\"402\":1,\"420\":1,\"423\":1,\"434\":1}}],[\"编码的数据\",{\"1\":{\"553\":1}}],[\"编码\",{\"1\":{\"153\":1}}],[\"绝对路径\",{\"1\":{\"153\":1}}],[\"图片链接\",{\"1\":{\"592\":1}}],[\"图片链接地址\",{\"1\":{\"555\":1}}],[\"图片子类型\",{\"0\":{\"556\":1},\"1\":{\"555\":1}}],[\"图片类型\",{\"1\":{\"555\":1}}],[\"图片文件地址\",{\"1\":{\"555\":1}}],[\"图片文件名\",{\"1\":{\"153\":1}}],[\"图片发送到的群聊\",{\"1\":{\"333\":1}}],[\"图片base64\",{\"1\":{\"333\":1}}],[\"图片base64或者绝对路径或者url\",{\"1\":{\"103\":1}}],[\"图片id\",{\"1\":{\"195\":1,\"370\":1}}],[\"图片宽度\",{\"1\":{\"195\":1}}],[\"图片高度\",{\"1\":{\"195\":1}}],[\"图片\",{\"0\":{\"368\":1,\"554\":1},\"1\":{\"188\":1,\"545\":1}}],[\"创建频道身份组\",{\"1\":{\"269\":1}}],[\"创建频道角色\",{\"0\":{\"269\":1}}],[\"创建者名字\",{\"1\":{\"137\":1}}],[\"创建者\",{\"1\":{\"137\":1}}],[\"创建时间\",{\"1\":{\"137\":1}}],[\"创建群文件文件夹\",{\"0\":{\"117\":1}}],[\"永久文件恒为0\",{\"1\":{\"136\":1}}],[\"过期时间\",{\"1\":{\"136\":1}}],[\"rule\",{\"1\":{\"499\":2}}],[\"rules\",{\"1\":{\"499\":1}}],[\"raw\",{\"1\":{\"459\":1}}],[\"r\",{\"1\":{\"403\":1,\"404\":1}}],[\"round\",{\"1\":{\"329\":1}}],[\"roles\",{\"1\":{\"243\":1,\"254\":1,\"256\":1}}],[\"role\",{\"1\":{\"239\":3,\"243\":4,\"256\":2,\"259\":1,\"260\":1,\"263\":1,\"264\":1,\"266\":1,\"267\":1,\"270\":1,\"272\":1,\"456\":1}}],[\"robot\",{\"1\":{\"230\":1,\"239\":1}}],[\"root\",{\"0\":{\"531\":1},\"1\":{\"133\":1,\"243\":16,\"402\":1,\"430\":1}}],[\"redroid\",{\"1\":{\"524\":1}}],[\"releases\",{\"1\":{\"518\":1}}],[\"reply\",{\"1\":{\"464\":2,\"465\":1}}],[\"restart\",{\"1\":{\"430\":1}}],[\"referer=https\",{\"1\":{\"403\":1,\"404\":1}}],[\"refresh\",{\"1\":{\"36\":1,\"233\":1,\"238\":1}}],[\"recent\",{\"1\":{\"420\":1}}],[\"record\",{\"1\":{\"374\":1,\"378\":1,\"381\":1,\"383\":1,\"430\":1}}],[\"recall\",{\"1\":{\"246\":1,\"276\":1,\"280\":1,\"284\":1,\"452\":2,\"467\":1,\"468\":1}}],[\"real\",{\"1\":{\"289\":1,\"299\":1,\"311\":1}}],[\"reason\",{\"1\":{\"86\":1,\"492\":1}}],[\"ret\",{\"1\":{\"329\":1}}],[\"retry\",{\"1\":{\"246\":1}}],[\"retcode\",{\"1\":{\"92\":1,\"96\":1,\"100\":1,\"104\":1,\"120\":1,\"223\":1,\"226\":1,\"230\":1,\"234\":1,\"239\":1,\"243\":1,\"247\":1,\"256\":1,\"311\":1,\"315\":1,\"357\":1,\"409\":1,\"416\":1,\"430\":1}}],[\"remain\",{\"1\":{\"213\":1,\"430\":1}}],[\"remark\",{\"1\":{\"82\":1,\"162\":1,\"163\":1,\"490\":1}}],[\"reject\",{\"1\":{\"198\":1}}],[\"rename\",{\"1\":{\"122\":1,\"430\":1}}],[\"requesttype\",{\"0\":{\"454\":1}}],[\"requester\",{\"1\":{\"66\":1,\"67\":2}}],[\"request\",{\"1\":{\"66\":1,\"67\":1,\"81\":1,\"85\":1,\"198\":1,\"430\":2,\"449\":1,\"489\":1,\"491\":1}}],[\"requests\",{\"1\":{\"65\":2}}],[\"可以在\",{\"1\":{\"558\":1,\"565\":1,\"567\":1}}],[\"可以在收到请求时快速处理请求\",{\"1\":{\"490\":1,\"492\":1}}],[\"可以在收到消息时快速执行操作\",{\"1\":{\"465\":1}}],[\"可以在收到消息时快速回复消息\",{\"1\":{\"464\":1}}],[\"可以是\",{\"1\":{\"553\":2}}],[\"可以是本地文件路径\",{\"1\":{\"553\":1}}],[\"可以这样写\",{\"1\":{\"547\":1,\"551\":1}}],[\"可以选择从存储目录选择\",{\"1\":{\"532\":1}}],[\"可进行简单的配置操作\",{\"1\":{\"495\":1}}],[\"可为消息段或者cq码\",{\"1\":{\"246\":1}}],[\"可用https\",{\"1\":{\"195\":1}}],[\"可选的\",{\"1\":{\"355\":1}}],[\"可选\",{\"1\":{\"188\":1}}],[\"可通过返回的状态码判断删除是否成功\",{\"1\":{\"127\":1}}],[\"可通过返回的状态码判断重命名是否成功\",{\"1\":{\"123\":1}}],[\"可能导致\",{\"1\":{\"516\":1}}],[\"可能会有大量\",{\"1\":{\"516\":1}}],[\"可能会出现许多问题\",{\"1\":{\"497\":1}}],[\"可能会返回不存在于以下表格中的字段\",{\"1\":{\"33\":1,\"45\":1}}],[\"可能需要分页\",{\"1\":{\"236\":1}}],[\"可能获取不到\",{\"1\":{\"136\":1}}],[\"可能为0表示找不到消息映射\",{\"1\":{\"74\":1}}],[\"可能不是立即生效\",{\"1\":{\"36\":1}}],[\"把已经存在的群文件夹改个名字\",{\"1\":{\"121\":1}}],[\"测试消息2\",{\"1\":{\"316\":1}}],[\"测试消息1\",{\"1\":{\"316\":1}}],[\"测试\",{\"1\":{\"120\":1}}],[\"44\",{\"1\":{\"412\":1,\"548\":1}}],[\"49441099828d62f0ded8112849bce839\",{\"1\":{\"329\":1}}],[\"40\",{\"1\":{\"329\":2}}],[\"4008\",{\"1\":{\"243\":1}}],[\"4007\",{\"1\":{\"243\":1}}],[\"4006\",{\"1\":{\"243\":1}}],[\"4005\",{\"1\":{\"243\":1}}],[\"4004\",{\"1\":{\"243\":1}}],[\"4003\",{\"1\":{\"243\":1}}],[\"4002\",{\"1\":{\"243\":1}}],[\"4001\",{\"1\":{\"243\":1}}],[\"40002\",{\"1\":{\"243\":1}}],[\"40001\",{\"1\":{\"243\":1}}],[\"40000\",{\"1\":{\"243\":1}}],[\"456\",{\"1\":{\"316\":1}}],[\"4286151052\",{\"1\":{\"256\":1}}],[\"4278190080\",{\"1\":{\"243\":1}}],[\"4294917938\",{\"1\":{\"243\":1}}],[\"4294936110\",{\"1\":{\"239\":1}}],[\"43200\",{\"1\":{\"234\":1}}],[\"4\",{\"1\":{\"234\":1,\"243\":2,\"457\":1,\"500\":1,\"556\":1,\"572\":1}}],[\"4139\",{\"1\":{\"120\":1}}],[\"4b46\",{\"1\":{\"92\":1}}],[\"仅群聊\",{\"1\":{\"483\":1}}],[\"仅私聊\",{\"1\":{\"483\":1}}],[\"仅发送文件base64\",{\"1\":{\"400\":1}}],[\"仅发送url\",{\"1\":{\"400\":1}}],[\"仅能在根目录创建文件夹\",{\"1\":{\"117\":1}}],[\"仅在\",{\"1\":{\"357\":2}}],[\"仅在拒绝时有效\",{\"1\":{\"86\":1}}],[\"仅在同意时有效\",{\"1\":{\"82\":1}}],[\"无\",{\"0\":{\"531\":1}}],[\"无论什么情况都请确保\",{\"1\":{\"520\":1}}],[\"无响应\",{\"0\":{\"509\":1},\"1\":{\"427\":1}}],[\"无响应数据\",{\"1\":{\"116\":1,\"149\":1,\"160\":1,\"163\":1,\"174\":1,\"261\":1,\"268\":1}}],[\"无需\",{\"1\":{\"513\":1}}],[\"无需再进行任何操作\",{\"1\":{\"504\":1}}],[\"无需重新启动\",{\"1\":{\"497\":1}}],[\"无需开头base64\",{\"1\":{\"398\":1}}],[\"无需实现一个专属的接口\",{\"1\":{\"257\":1}}],[\"无需参数\",{\"1\":{\"40\":1,\"48\":1,\"366\":1,\"379\":1}}],[\"无法详细介绍\",{\"1\":{\"252\":1}}],[\"对应动作需要的参数\",{\"1\":{\"546\":1}}],[\"对错误信息的描述\",{\"1\":{\"357\":1}}],[\"对象\",{\"1\":{\"116\":2,\"126\":1,\"140\":1,\"144\":2,\"550\":1}}],[\"对于戳一戳的定义与\",{\"1\":{\"579\":1}}],[\"对于下述消息类型\",{\"1\":{\"553\":1}}],[\"对于\",{\"1\":{\"6\":1,\"29\":1,\"79\":1,\"105\":1,\"146\":1,\"220\":1,\"273\":1,\"356\":1,\"359\":1,\"431\":1,\"466\":1,\"488\":1,\"537\":1}}],[\"参考文章\",{\"1\":{\"528\":1}}],[\"参考\",{\"1\":{\"116\":2,\"126\":1,\"140\":1,\"144\":2,\"511\":1}}],[\"参数所对应的值\",{\"1\":{\"546\":1}}],[\"参数名称\",{\"1\":{\"499\":1}}],[\"参数决定是否刷新数据\",{\"1\":{\"36\":1}}],[\"参数\",{\"0\":{\"9\":1,\"13\":1,\"17\":1,\"22\":1,\"26\":1,\"32\":1,\"36\":1,\"40\":1,\"44\":1,\"48\":1,\"52\":1,\"56\":1,\"60\":1,\"73\":1,\"77\":1,\"82\":1,\"86\":1,\"91\":1,\"95\":1,\"99\":1,\"103\":1,\"108\":1,\"112\":1,\"116\":1,\"119\":1,\"126\":1,\"130\":1,\"134\":1,\"140\":1,\"144\":1,\"149\":1,\"153\":1,\"156\":1,\"160\":1,\"163\":1,\"166\":1,\"170\":1,\"174\":1,\"178\":1,\"181\":1,\"184\":1,\"188\":1,\"192\":1,\"198\":1,\"202\":1,\"206\":1,\"210\":1,\"214\":1,\"218\":1,\"229\":1,\"233\":1,\"238\":1,\"242\":1,\"246\":1,\"251\":1,\"255\":1,\"260\":1,\"264\":1,\"267\":1,\"271\":1,\"276\":1,\"280\":1,\"284\":1,\"288\":1,\"293\":1,\"297\":1,\"302\":1,\"306\":1,\"310\":1,\"314\":1,\"319\":1,\"324\":1,\"328\":1,\"333\":1,\"336\":1,\"340\":1,\"344\":1,\"348\":1,\"362\":1,\"366\":1,\"370\":1,\"375\":1,\"379\":1,\"382\":1,\"390\":1,\"394\":1,\"398\":1,\"402\":1,\"408\":1,\"420\":1,\"423\":1,\"434\":1,\"438\":1,\"442\":1,\"542\":1,\"555\":1,\"558\":1,\"560\":1,\"563\":1,\"565\":1,\"567\":1,\"569\":1,\"572\":1,\"574\":1,\"576\":1,\"580\":1,\"582\":1,\"584\":1,\"586\":1,\"588\":1,\"590\":1,\"592\":1,\"594\":1},\"1\":{\"113\":1,\"382\":1,\"550\":1}}],[\"开发版本\",{\"0\":{\"519\":1},\"1\":{\"517\":1}}],[\"开始修补\",{\"1\":{\"532\":1}}],[\"开始的行\",{\"1\":{\"420\":1}}],[\"开始的位置\",{\"1\":{\"91\":1}}],[\"开始获取的位置\",{\"1\":{\"251\":1}}],[\"开头\",{\"1\":{\"108\":1,\"112\":1,\"553\":3}}],[\"目前依旧是采用\",{\"1\":{\"524\":1}}],[\"目前依旧在计划中\",{\"1\":{\"512\":1}}],[\"目前推荐您下载\",{\"1\":{\"517\":1}}],[\"目前允许在中国移动云手机\",{\"1\":{\"514\":1}}],[\"目前不清楚有什么作用\",{\"1\":{\"473\":1}}],[\"目前支持\",{\"1\":{\"351\":1,\"382\":1}}],[\"目前版本\",{\"1\":{\"216\":1}}],[\"目标\",{\"1\":{\"108\":1}}],[\"目录定义\",{\"0\":{\"498\":1},\"1\":{\"3\":1}}],[\"目录\",{\"0\":{\"1\":1,\"5\":1,\"445\":1,\"494\":1,\"536\":1}}],[\"添加一个图片到qq收藏\",{\"1\":{\"101\":1}}],[\"添加一段文字到qq收藏\",{\"1\":{\"97\":1}}],[\"添加图片收藏\",{\"0\":{\"101\":1}}],[\"添加文本收藏\",{\"0\":{\"97\":1}}],[\"添加后的好友备注\",{\"1\":{\"82\":1}}],[\"83\",{\"1\":{\"503\":1}}],[\"81\",{\"1\":{\"503\":1}}],[\"80\",{\"1\":{\"503\":1}}],[\"80002\",{\"1\":{\"243\":1}}],[\"80001\",{\"1\":{\"243\":1}}],[\"80000\",{\"1\":{\"243\":1}}],[\"82\",{\"1\":{\"329\":2}}],[\"86400\",{\"1\":{\"234\":1}}],[\"8cab\",{\"1\":{\"120\":1}}],[\"8\",{\"1\":{\"92\":1,\"234\":1,\"457\":1,\"503\":9,\"556\":1}}],[\"ˢʰᵃᵐʳᵒᶜᵏ\",{\"1\":{\"92\":1}}],[\"24\",{\"1\":{\"329\":1}}],[\"22\",{\"1\":{\"329\":2}}],[\"2222222221\",{\"1\":{\"230\":1}}],[\"22222222222222\",{\"1\":{\"226\":1}}],[\"251425915\",{\"1\":{\"315\":1}}],[\"2652656\",{\"1\":{\"264\":1}}],[\"203\",{\"1\":{\"329\":2}}],[\"202309251800\",{\"1\":{\"329\":3}}],[\"202\",{\"1\":{\"329\":5}}],[\"201\",{\"1\":{\"329\":1}}],[\"2018\",{\"1\":{\"243\":1}}],[\"2017\",{\"1\":{\"243\":1}}],[\"2016\",{\"1\":{\"243\":1}}],[\"2015\",{\"1\":{\"243\":1}}],[\"2014\",{\"1\":{\"243\":1}}],[\"2013\",{\"1\":{\"243\":1}}],[\"2012\",{\"1\":{\"243\":1}}],[\"2011\",{\"1\":{\"243\":1}}],[\"2010\",{\"1\":{\"243\":1}}],[\"2009\",{\"1\":{\"243\":1}}],[\"2008\",{\"1\":{\"243\":1}}],[\"2007\",{\"1\":{\"243\":1}}],[\"2006\",{\"1\":{\"243\":1}}],[\"2005\",{\"1\":{\"243\":1}}],[\"2004\",{\"1\":{\"243\":1}}],[\"2003\",{\"1\":{\"243\":1}}],[\"2002\",{\"1\":{\"243\":1}}],[\"2001\",{\"1\":{\"243\":1}}],[\"20019\",{\"1\":{\"243\":1}}],[\"20018\",{\"1\":{\"243\":1}}],[\"20015\",{\"1\":{\"243\":1}}],[\"20014\",{\"1\":{\"243\":1}}],[\"20013\",{\"1\":{\"243\":1}}],[\"20012\",{\"1\":{\"243\":1}}],[\"20011\",{\"1\":{\"243\":1}}],[\"20010\",{\"1\":{\"243\":1}}],[\"20009\",{\"1\":{\"243\":1}}],[\"20008\",{\"1\":{\"243\":1}}],[\"20007\",{\"1\":{\"243\":1}}],[\"20006\",{\"1\":{\"243\":1}}],[\"20005\",{\"1\":{\"243\":1}}],[\"20004\",{\"1\":{\"243\":1}}],[\"20003\",{\"1\":{\"243\":1}}],[\"20002\",{\"1\":{\"243\":1}}],[\"20001\",{\"1\":{\"243\":1}}],[\"20000\",{\"1\":{\"243\":1}}],[\"2806922524\",{\"1\":{\"92\":2}}],[\"2\",{\"1\":{\"92\":1,\"153\":1,\"234\":5,\"235\":1,\"239\":1,\"243\":1,\"329\":10,\"400\":1,\"412\":1,\"457\":1,\"556\":1,\"572\":1,\"574\":1}}],[\"x\",{\"1\":{\"555\":2,\"565\":1,\"572\":1,\"574\":1,\"576\":1}}],[\"xml\",{\"0\":{\"540\":1}}],[\"xp\",{\"0\":{\"530\":1}}],[\"xposed\",{\"1\":{\"522\":1,\"530\":2}}],[\"xxx\",{\"1\":{\"501\":1,\"505\":1}}],[\"xxxx\",{\"1\":{\"311\":1,\"395\":1,\"405\":1}}],[\"xxxxxxxxx\",{\"1\":{\"499\":1}}],[\"xxxxxxxx\",{\"1\":{\"100\":1,\"104\":1}}],[\"xxxxxx\",{\"1\":{\"92\":1}}],[\"x64\",{\"1\":{\"3\":1}}],[\"93\",{\"1\":{\"548\":1}}],[\"91\",{\"1\":{\"548\":1}}],[\"98\",{\"1\":{\"329\":2}}],[\"986f\",{\"1\":{\"92\":1}}],[\"90001\",{\"1\":{\"243\":1}}],[\"90000\",{\"1\":{\"243\":1}}],[\"90002\",{\"1\":{\"243\":1}}],[\"900\",{\"1\":{\"234\":1}}],[\"99\",{\"1\":{\"234\":1}}],[\"9\",{\"1\":{\"92\":1,\"216\":1,\"234\":1,\"457\":1,\"503\":10,\"556\":1}}],[\"9dec6664\",{\"1\":{\"92\":1}}],[\"13\",{\"1\":{\"500\":1,\"556\":1}}],[\"192\",{\"1\":{\"500\":1}}],[\"1933593189\",{\"1\":{\"247\":1}}],[\"146\",{\"1\":{\"329\":1}}],[\"144115218185291865\",{\"1\":{\"239\":1}}],[\"18\",{\"1\":{\"329\":5}}],[\"1800\",{\"1\":{\"234\":1}}],[\"101010100\",{\"1\":{\"329\":1}}],[\"10\",{\"1\":{\"234\":2,\"556\":1}}],[\"1005\",{\"1\":{\"243\":1}}],[\"1004\",{\"1\":{\"243\":1}}],[\"1003\",{\"1\":{\"243\":1}}],[\"1002\",{\"1\":{\"243\":1}}],[\"1001\",{\"1\":{\"243\":1}}],[\"1000\",{\"1\":{\"256\":1}}],[\"10005\",{\"1\":{\"243\":1}}],[\"10004\",{\"1\":{\"243\":1}}],[\"10003\",{\"1\":{\"243\":1}}],[\"10002\",{\"1\":{\"243\":1}}],[\"10001\",{\"1\":{\"243\":1}}],[\"100002\",{\"1\":{\"243\":1}}],[\"100001\",{\"1\":{\"243\":1}}],[\"10000\",{\"1\":{\"243\":1,\"325\":1,\"356\":1}}],[\"100000\",{\"1\":{\"230\":1,\"243\":1}}],[\"100\",{\"1\":{\"230\":1,\"243\":1}}],[\"163\",{\"1\":{\"584\":1}}],[\"168\",{\"1\":{\"500\":1}}],[\"16°\",{\"1\":{\"329\":1}}],[\"1696749716155\",{\"1\":{\"416\":1}}],[\"1695664515\",{\"1\":{\"329\":3}}],[\"1695664205\",{\"1\":{\"329\":6}}],[\"1699375697\",{\"1\":{\"311\":1}}],[\"16\",{\"1\":{\"329\":3}}],[\"1606878501\",{\"1\":{\"234\":1,\"239\":1}}],[\"1606878500\",{\"1\":{\"230\":1,\"243\":1}}],[\"1606879350\",{\"1\":{\"234\":1}}],[\"1650114384\",{\"1\":{\"120\":2}}],[\"12\",{\"1\":{\"533\":1}}],[\"123\",{\"1\":{\"316\":2}}],[\"12345678\",{\"1\":{\"499\":2}}],[\"123456\",{\"1\":{\"243\":1,\"311\":1,\"356\":1,\"357\":2,\"547\":1,\"551\":2,\"552\":1}}],[\"123446\",{\"1\":{\"223\":1}}],[\"1251316161\",{\"1\":{\"243\":1}}],[\"124105218677239793\",{\"1\":{\"234\":2}}],[\"12820\",{\"1\":{\"92\":1}}],[\"110000\",{\"1\":{\"329\":2}}],[\"114514\",{\"1\":{\"311\":3}}],[\"1145141919810\",{\"1\":{\"223\":1}}],[\"11\",{\"1\":{\"234\":1}}],[\"11111111111\",{\"1\":{\"230\":1}}],[\"1111111111111111111\",{\"1\":{\"234\":4}}],[\"111111111111111\",{\"1\":{\"226\":1}}],[\"111\",{\"1\":{\"120\":1,\"226\":1,\"230\":1,\"234\":1,\"243\":1,\"247\":1,\"256\":1}}],[\"15000\",{\"1\":{\"499\":2}}],[\"15活跃值\",{\"1\":{\"243\":1}}],[\"15\",{\"1\":{\"216\":1,\"243\":1,\"329\":2,\"503\":1}}],[\"1表示使用缓存\",{\"1\":{\"153\":1}}],[\"1706909190\",{\"1\":{\"247\":1}}],[\"1706269735\",{\"1\":{\"120\":2}}],[\"1703004793000\",{\"1\":{\"92\":1}}],[\"1\",{\"1\":{\"92\":2,\"153\":1,\"234\":14,\"235\":1,\"239\":2,\"243\":1,\"256\":1,\"329\":5,\"400\":1,\"457\":1,\"500\":2,\"556\":1,\"572\":1,\"574\":1,\"580\":1}}],[\"0则为无心跳\",{\"1\":{\"499\":2}}],[\"0b38145aa44505000b38145aa4450500\",{\"1\":{\"382\":1,\"383\":1}}],[\"04\",{\"1\":{\"329\":1}}],[\"05\",{\"1\":{\"329\":4}}],[\"06\",{\"1\":{\"329\":10}}],[\"01\",{\"1\":{\"329\":2}}],[\"0800100118032001\",{\"1\":{\"239\":1}}],[\"0关闭关闭缓存\",{\"1\":{\"153\":1}}],[\"031d\",{\"1\":{\"120\":1}}],[\"0\",{\"1\":{\"92\":1,\"96\":1,\"100\":1,\"104\":1,\"120\":1,\"170\":1,\"216\":1,\"223\":1,\"226\":2,\"230\":1,\"234\":13,\"239\":2,\"243\":2,\"247\":1,\"256\":2,\"311\":3,\"315\":1,\"329\":10,\"357\":3,\"409\":1,\"416\":1,\"430\":1,\"457\":1,\"498\":1,\"503\":2,\"556\":1,\"563\":1}}],[\"white\",{\"1\":{\"499\":2}}],[\"whole\",{\"1\":{\"173\":1,\"430\":1}}],[\"wwwwwwwwwwwwwwwwwwwwww==\",{\"1\":{\"500\":1}}],[\"www\",{\"1\":{\"403\":1,\"404\":1}}],[\"wma\",{\"1\":{\"382\":1}}],[\"wording\",{\"1\":{\"357\":1}}],[\"wsa\",{\"1\":{\"529\":2}}],[\"ws\",{\"1\":{\"355\":2,\"499\":2}}],[\"warning\",{\"1\":{\"329\":2}}],[\"wav\",{\"1\":{\"3\":1,\"382\":1}}],[\"windows安卓子系统\",{\"1\":{\"510\":1}}],[\"wind\",{\"1\":{\"329\":19}}],[\"width\",{\"1\":{\"195\":1}}],[\"weeklyprompt\",{\"1\":{\"329\":2}}],[\"weekly\",{\"1\":{\"329\":3}}],[\"weatherforecast\",{\"1\":{\"329\":2}}],[\"weatherinfo\",{\"1\":{\"329\":1}}],[\"weather\",{\"1\":{\"323\":1,\"327\":1,\"329\":27,\"430\":2}}],[\"websocket认证方法\",{\"0\":{\"500\":1}}],[\"websocket请使用另外一个\",{\"1\":{\"393\":1}}],[\"websocket\",{\"0\":{\"355\":1,\"396\":1},\"1\":{\"90\":1,\"94\":1,\"98\":1,\"102\":1,\"355\":2,\"356\":1,\"497\":2,\"499\":2,\"500\":3,\"506\":1}}],[\"handle\",{\"1\":{\"430\":1}}],[\"heartbeat\",{\"1\":{\"499\":2}}],[\"headers为array时示例\",{\"0\":{\"404\":1}}],[\"headers为string时示例\",{\"0\":{\"403\":1}}],[\"headers\",{\"1\":{\"402\":1,\"403\":1,\"404\":1}}],[\"hello\",{\"1\":{\"356\":1,\"547\":2,\"550\":1,\"552\":2}}],[\"height\",{\"1\":{\"195\":1}}],[\"host\",{\"1\":{\"500\":1}}],[\"home\",{\"1\":{\"383\":1}}],[\"hourinfo\",{\"1\":{\"329\":1}}],[\"honorinfo\",{\"0\":{\"62\":1}}],[\"honor\",{\"1\":{\"59\":1,\"430\":2,\"453\":1,\"486\":2}}],[\"humidity\",{\"1\":{\"329\":2}}],[\"history\",{\"1\":{\"296\":1,\"301\":1,\"430\":2}}],[\"http接口\",{\"1\":{\"499\":1}}],[\"https\",{\"1\":{\"243\":1,\"553\":1}}],[\"http\",{\"0\":{\"392\":1,\"396\":1},\"1\":{\"90\":1,\"94\":1,\"98\":1,\"102\":1,\"106\":1,\"110\":1,\"153\":1,\"188\":1,\"223\":1,\"350\":2,\"352\":4,\"353\":3,\"430\":1,\"500\":2,\"553\":2}}],[\"拒绝理由\",{\"1\":{\"86\":1,\"492\":1}}],[\"需要进行转义\",{\"1\":{\"548\":1}}],[\"需要成功登陆\",{\"1\":{\"530\":1}}],[\"需要注意的是部分框架要求开起虚拟化才能使用哦\",{\"1\":{\"524\":1}}],[\"需要在实验室设置手动打开\",{\"1\":{\"421\":1}}],[\"需要单独的api哦\",{\"1\":{\"244\":1}}],[\"需要上传\",{\"1\":{\"106\":1,\"110\":1}}],[\"需要和上报消息中的\",{\"1\":{\"86\":1}}],[\"需从上报的数据中获得\",{\"1\":{\"82\":1,\"86\":1}}],[\"或者直接使用已经安装过的\",{\"1\":{\"532\":1}}],[\"或者使用\",{\"1\":{\"509\":1}}],[\"或者使用某些框架自带qq死亡自动唤醒的xp\",{\"1\":{\"508\":1}}],[\"或者泄露您的token\",{\"1\":{\"421\":1}}],[\"或者需要向\",{\"1\":{\"351\":1}}],[\"或消息段组合array\",{\"1\":{\"276\":1}}],[\"或\",{\"1\":{\"86\":2,\"108\":2,\"112\":2,\"423\":1,\"447\":1,\"498\":1,\"500\":2,\"553\":1,\"563\":1}}],[\"加群请求\",{\"0\":{\"491\":1}}],[\"加群请求的\",{\"1\":{\"86\":1}}],[\"加好友请求\",{\"0\":{\"489\":1}}],[\"加好友请求的\",{\"1\":{\"82\":1}}],[\"空间上限\",{\"1\":{\"131\":1}}],[\"空\",{\"1\":{\"82\":1,\"86\":1,\"160\":1,\"163\":1}}],[\"陌生人是否处于黑名单列表\",{\"1\":{\"75\":1}}],[\"消息段可以组合在一起\",{\"1\":{\"552\":1}}],[\"消息段数据\",{\"1\":{\"550\":1}}],[\"消息段类型\",{\"1\":{\"550\":1}}],[\"消息段是一个\",{\"1\":{\"550\":1}}],[\"消息段是新一代的消息格式\",{\"1\":{\"549\":1}}],[\"消息段\",{\"0\":{\"549\":1}}],[\"消息段的\",{\"1\":{\"382\":1}}],[\"消息格式\",{\"0\":{\"544\":1},\"1\":{\"536\":1}}],[\"消息子类型\",{\"1\":{\"459\":1}}],[\"消息事件\",{\"0\":{\"458\":1,\"459\":1},\"1\":{\"445\":1}}],[\"消息节点无法自定义发送者qq号\",{\"1\":{\"316\":1}}],[\"消息资源id\",{\"1\":{\"310\":1}}],[\"消息集\",{\"1\":{\"298\":1,\"303\":1}}],[\"消息接收者\",{\"1\":{\"289\":1,\"299\":1,\"459\":1}}],[\"消息目标\",{\"1\":{\"289\":1,\"299\":1,\"459\":1}}],[\"消息类型\",{\"1\":{\"284\":1,\"289\":1,\"299\":1,\"459\":1}}],[\"消息\",{\"0\":{\"507\":1,\"535\":1,\"540\":1,\"541\":1},\"1\":{\"277\":1,\"281\":1,\"285\":1,\"288\":1,\"289\":1,\"293\":1,\"297\":1,\"299\":1,\"306\":1,\"315\":1,\"459\":1,\"467\":1,\"468\":1,\"481\":1,\"569\":1}}],[\"消息内容\",{\"1\":{\"276\":1,\"280\":1,\"284\":1,\"459\":1}}],[\"消息发送失败\",{\"1\":{\"246\":1}}],[\"消息发送时间\",{\"1\":{\"74\":1}}],[\"消息体\",{\"1\":{\"246\":1,\"289\":1,\"299\":1}}],[\"消息seq\",{\"1\":{\"74\":1}}],[\"消息id\",{\"1\":{\"74\":1,\"178\":1,\"181\":1,\"218\":1,\"539\":1}}],[\"消息相关\",{\"0\":{\"273\":1},\"1\":{\"5\":1}}],[\"tmpfiles\",{\"1\":{\"501\":1}}],[\"thread\",{\"1\":{\"402\":1}}],[\"thirdqq\",{\"1\":{\"223\":1}}],[\"troop\",{\"1\":{\"333\":1,\"430\":1}}],[\"true为不解析\",{\"1\":{\"246\":1,\"276\":1,\"280\":1,\"284\":1}}],[\"true\",{\"1\":{\"82\":1,\"86\":1,\"174\":1,\"226\":2,\"239\":1}}],[\"target\",{\"1\":{\"289\":1,\"299\":1,\"311\":1,\"459\":1,\"483\":1,\"485\":1}}],[\"talk\",{\"1\":{\"234\":4}}],[\"talkative\",{\"1\":{\"61\":2}}],[\"temp\",{\"1\":{\"459\":1,\"499\":1}}],[\"tempsource\",{\"0\":{\"457\":1}}],[\"temper\",{\"1\":{\"329\":8}}],[\"tencent\",{\"1\":{\"329\":1,\"395\":2,\"405\":2,\"498\":2,\"515\":2}}],[\"test\",{\"1\":{\"234\":1,\"430\":1}}],[\"textdetection\",{\"0\":{\"372\":1}}],[\"texts\",{\"1\":{\"371\":1}}],[\"text\",{\"1\":{\"98\":2,\"194\":1,\"234\":12,\"311\":2,\"316\":2,\"372\":1,\"430\":1,\"550\":2,\"552\":2}}],[\"t=\",{\"1\":{\"223\":1}}],[\"to\",{\"1\":{\"397\":1}}],[\"tomorrowprompt\",{\"1\":{\"329\":2}}],[\"tokens\",{\"1\":{\"499\":1}}],[\"token\",{\"1\":{\"238\":1,\"239\":1,\"329\":1,\"339\":1,\"430\":1,\"499\":7,\"500\":1}}],[\"touch\",{\"1\":{\"205\":1}}],[\"total\",{\"1\":{\"131\":1,\"137\":1}}],[\"ticket\",{\"1\":{\"500\":1}}],[\"tips\",{\"1\":{\"329\":1}}],[\"tiny\",{\"1\":{\"223\":1,\"234\":2,\"239\":1,\"243\":1,\"456\":1,\"459\":1}}],[\"title\",{\"1\":{\"165\":1,\"166\":1,\"239\":1,\"430\":1,\"453\":1,\"456\":1,\"487\":2,\"586\":1,\"590\":1,\"592\":1}}],[\"times\",{\"1\":{\"136\":1}}],[\"time\",{\"1\":{\"74\":2,\"92\":1,\"120\":2,\"136\":3,\"137\":1,\"193\":1,\"226\":1,\"230\":1,\"234\":2,\"239\":1,\"243\":1,\"247\":1,\"277\":1,\"281\":1,\"285\":1,\"289\":1,\"299\":1,\"311\":1,\"329\":11,\"414\":1,\"442\":1,\"447\":1}}],[\"type\",{\"1\":{\"86\":3,\"92\":1,\"234\":6,\"239\":2,\"243\":2,\"284\":1,\"289\":1,\"297\":1,\"299\":1,\"306\":1,\"311\":2,\"316\":7,\"329\":32,\"447\":2,\"459\":2,\"460\":1,\"461\":1,\"462\":1,\"463\":1,\"467\":1,\"468\":1,\"469\":2,\"470\":2,\"471\":2,\"472\":1,\"474\":1,\"476\":2,\"477\":1,\"478\":1,\"479\":1,\"481\":2,\"482\":1,\"483\":2,\"485\":2,\"486\":3,\"487\":2,\"489\":1,\"491\":2,\"550\":1,\"551\":1,\"552\":2,\"555\":1,\"580\":1,\"584\":1,\"586\":1}}],[\"edxp\",{\"1\":{\"522\":1}}],[\"edxposed\",{\"1\":{\"522\":1}}],[\"extinguish\",{\"1\":{\"509\":1}}],[\"exppire\",{\"1\":{\"475\":1}}],[\"expire\",{\"1\":{\"226\":1}}],[\"events\",{\"1\":{\"430\":1}}],[\"en\",{\"1\":{\"329\":1}}],[\"enable\",{\"1\":{\"156\":1,\"174\":1,\"226\":1}}],[\"escape\",{\"1\":{\"246\":1,\"276\":1,\"280\":1,\"284\":1,\"464\":1,\"465\":1}}],[\"essence\",{\"1\":{\"72\":1,\"177\":1,\"180\":1,\"430\":6,\"452\":1,\"481\":1}}],[\"echo\",{\"1\":{\"92\":1,\"96\":1,\"100\":1,\"104\":1,\"120\":1,\"223\":1,\"226\":1,\"230\":1,\"234\":1,\"239\":1,\"243\":1,\"247\":1,\"256\":1,\"311\":1,\"356\":2,\"357\":1,\"430\":1}}],[\"emulated\",{\"1\":{\"498\":1}}],[\"emotion\",{\"1\":{\"61\":1}}],[\"email\",{\"1\":{\"13\":1}}],[\"用法二选一\",{\"1\":{\"400\":1}}],[\"用于在消息中插入表情\",{\"1\":{\"545\":1}}],[\"用于获取群聊谁谁谁啊犯贱或者被二比滥权管理或者某群主时援交手滑禁言掉的人的列表\",{\"1\":{\"208\":1}}],[\"用于主动websocket与被动websocket\",{\"1\":{\"205\":1}}],[\"用于http\",{\"1\":{\"205\":1}}],[\"用于处理请求\",{\"1\":{\"66\":1,\"67\":1}}],[\"用户的个人资料信息\",{\"1\":{\"11\":1}}],[\"用户的登录号信息\",{\"1\":{\"7\":1}}],[\"用户相关\",{\"0\":{\"431\":1},\"1\":{\"5\":1}}],[\"处理加群请求\",{\"0\":{\"84\":1}}],[\"处理加好友请求\",{\"0\":{\"80\":1}}],[\"处理者\",{\"1\":{\"66\":1,\"67\":1}}],[\"处理相关\",{\"0\":{\"79\":1},\"1\":{\"5\":1}}],[\"邀请\",{\"0\":{\"84\":1,\"491\":1},\"1\":{\"84\":1,\"86\":1,\"491\":1}}],[\"邀请者昵称\",{\"1\":{\"66\":1}}],[\"邀请者\",{\"1\":{\"66\":1}}],[\"邀请消息列表\",{\"1\":{\"65\":1}}],[\"将在未来实现\",{\"1\":{\"563\":1}}],[\"将模拟器内的端口监听转发到电脑\",{\"1\":{\"505\":1}}],[\"将不使用默认token\",{\"1\":{\"499\":1}}],[\"将下方\",{\"1\":{\"499\":1}}],[\"将解除禁言\",{\"1\":{\"170\":1}}],[\"将返回\",{\"1\":{\"65\":1}}],[\"将全部文件解压到\",{\"1\":{\"3\":1}}],[\"进行通信\",{\"1\":{\"355\":1}}],[\"进行交互\",{\"1\":{\"350\":1,\"351\":1}}],[\"进群消息列表\",{\"1\":{\"65\":1}}],[\"进阶\",{\"0\":{\"0\":1}}],[\"jump\",{\"1\":{\"234\":6}}],[\"jpg\",{\"1\":{\"153\":1}}],[\"joined\",{\"1\":{\"430\":1}}],[\"joinrequest\",{\"0\":{\"67\":1}}],[\"join\",{\"1\":{\"65\":1,\"239\":1,\"243\":1}}],[\"json5貌似也没有完全支持呢\",{\"1\":{\"499\":1}}],[\"json\",{\"0\":{\"541\":1},\"1\":{\"14\":1,\"41\":1,\"74\":1,\"193\":1,\"354\":2,\"356\":1,\"357\":1,\"499\":3,\"501\":1,\"542\":1,\"549\":1,\"550\":1}}],[\"描述\",{\"1\":{\"62\":1}}],[\"持续天数\",{\"1\":{\"62\":1}}],[\"冒尖小春笋\",{\"1\":{\"61\":1}}],[\"历史龙王\",{\"1\":{\"61\":1}}],[\"群红包运气王\",{\"0\":{\"485\":1}}],[\"群组管理员变动\",{\"0\":{\"471\":1}}],[\"群组成员减少\",{\"0\":{\"470\":1}}],[\"群组成员增加\",{\"0\":{\"469\":1}}],[\"群组踢人\",{\"0\":{\"196\":1}}],[\"群请求\",{\"1\":{\"454\":1}}],[\"群头衔变更\",{\"0\":{\"487\":1},\"1\":{\"453\":1}}],[\"群荣誉变更\",{\"0\":{\"486\":1},\"1\":{\"453\":1}}],[\"群禁言\",{\"0\":{\"476\":1},\"1\":{\"452\":1}}],[\"群成员名片变动\",{\"0\":{\"477\":1},\"1\":{\"452\":1}}],[\"群成员增加\",{\"1\":{\"452\":1}}],[\"群成员减少\",{\"1\":{\"452\":1}}],[\"群管理员变动\",{\"1\":{\"452\":1}}],[\"群文件信息结构体\",{\"0\":{\"473\":1}}],[\"群文件信息\",{\"1\":{\"472\":1}}],[\"群文件上传\",{\"0\":{\"472\":1},\"1\":{\"452\":1}}],[\"群文件夹id\",{\"1\":{\"122\":1}}],[\"群文件夹名字\",{\"1\":{\"119\":1,\"122\":1}}],[\"群临时消息\",{\"1\":{\"451\":1}}],[\"群消息撤回\",{\"1\":{\"452\":1}}],[\"群消息\",{\"0\":{\"461\":1},\"1\":{\"450\":1,\"451\":2}}],[\"群戳一戳\",{\"0\":{\"204\":1}}],[\"群打卡\",{\"0\":{\"182\":1}}],[\"群全员禁言\",{\"0\":{\"172\":1}}],[\"群单人禁言\",{\"0\":{\"168\":1}}],[\"群备注\",{\"1\":{\"163\":1}}],[\"群名片内容\",{\"1\":{\"160\":1}}],[\"群名\",{\"1\":{\"66\":1,\"67\":1}}],[\"群聊消息撤回\",{\"0\":{\"468\":1}}],[\"群聊\",{\"1\":{\"457\":1}}],[\"群聊是群号\",{\"1\":{\"289\":1,\"299\":1,\"459\":1}}],[\"群聊炽焰\",{\"1\":{\"61\":1}}],[\"群聊之火\",{\"1\":{\"61\":1}}],[\"群聊相关\",{\"0\":{\"146\":1},\"1\":{\"5\":1}}],[\"群号\",{\"1\":{\"44\":1,\"52\":1,\"56\":1,\"60\":1,\"61\":1,\"66\":1,\"67\":1,\"73\":1,\"112\":1,\"116\":1,\"119\":1,\"122\":1,\"126\":1,\"130\":1,\"134\":1,\"136\":1,\"137\":1,\"140\":1,\"144\":1,\"149\":1,\"153\":1,\"156\":1,\"160\":1,\"163\":1,\"166\":1,\"170\":1,\"174\":1,\"184\":1,\"188\":1,\"192\":1,\"198\":1,\"202\":1,\"206\":1,\"210\":1,\"214\":1,\"218\":1,\"280\":1,\"284\":1,\"289\":1,\"297\":1,\"299\":1,\"302\":1,\"306\":1,\"459\":1,\"468\":1,\"469\":1,\"470\":1,\"471\":1,\"472\":1,\"476\":1,\"477\":1,\"481\":1,\"483\":1,\"485\":1,\"486\":1,\"487\":1,\"491\":1}}],[\"github\",{\"1\":{\"518\":1,\"519\":1}}],[\"go\",{\"1\":{\"316\":1,\"579\":1}}],[\"guest\",{\"1\":{\"228\":1}}],[\"guild\",{\"1\":{\"222\":1,\"225\":1,\"226\":4,\"228\":1,\"229\":1,\"230\":4,\"232\":1,\"233\":1,\"234\":4,\"237\":1,\"238\":1,\"241\":1,\"242\":1,\"245\":1,\"246\":1,\"250\":1,\"251\":1,\"254\":1,\"255\":1,\"259\":1,\"260\":1,\"263\":1,\"264\":1,\"266\":1,\"267\":1,\"270\":1,\"271\":1,\"430\":2,\"463\":1}}],[\"g\",{\"1\":{\"223\":1}}],[\"gdynamic\",{\"1\":{\"195\":2}}],[\"group\",{\"1\":{\"43\":1,\"44\":1,\"47\":1,\"51\":1,\"52\":1,\"55\":1,\"56\":1,\"59\":1,\"60\":1,\"61\":1,\"64\":1,\"66\":2,\"67\":2,\"73\":1,\"85\":1,\"92\":2,\"111\":1,\"112\":1,\"115\":1,\"116\":1,\"118\":1,\"119\":1,\"122\":2,\"125\":1,\"126\":1,\"129\":1,\"130\":1,\"133\":1,\"134\":1,\"136\":1,\"137\":1,\"139\":1,\"140\":1,\"143\":1,\"144\":1,\"148\":1,\"149\":2,\"152\":1,\"153\":1,\"155\":1,\"156\":1,\"159\":1,\"160\":1,\"162\":1,\"163\":1,\"165\":1,\"166\":1,\"169\":1,\"170\":1,\"173\":1,\"174\":1,\"183\":1,\"184\":1,\"187\":1,\"188\":1,\"191\":1,\"192\":1,\"197\":1,\"198\":1,\"201\":1,\"202\":1,\"205\":1,\"206\":1,\"210\":1,\"213\":1,\"214\":1,\"217\":1,\"218\":1,\"279\":1,\"280\":1,\"284\":1,\"289\":1,\"297\":1,\"299\":1,\"301\":1,\"302\":1,\"306\":1,\"313\":1,\"314\":1,\"331\":1,\"430\":38,\"450\":1,\"451\":2,\"452\":7,\"454\":1,\"459\":1,\"461\":1,\"468\":2,\"469\":2,\"470\":2,\"471\":2,\"472\":2,\"476\":2,\"477\":2,\"481\":1,\"483\":1,\"485\":1,\"486\":1,\"487\":1,\"491\":2,\"499\":1}}],[\"get\",{\"0\":{\"352\":1},\"1\":{\"8\":1,\"16\":1,\"25\":1,\"31\":1,\"35\":1,\"39\":1,\"43\":1,\"47\":1,\"51\":1,\"55\":1,\"59\":1,\"64\":1,\"69\":1,\"72\":1,\"90\":2,\"94\":2,\"129\":1,\"133\":1,\"139\":1,\"143\":1,\"191\":1,\"209\":1,\"213\":1,\"222\":1,\"225\":1,\"228\":1,\"232\":1,\"237\":1,\"241\":1,\"250\":1,\"254\":1,\"257\":1,\"287\":1,\"296\":1,\"301\":1,\"309\":1,\"323\":1,\"327\":1,\"335\":1,\"339\":1,\"343\":1,\"347\":1,\"351\":2,\"352\":2,\"361\":1,\"374\":1,\"381\":1,\"411\":1,\"414\":1,\"415\":1,\"419\":1,\"426\":1,\"429\":1,\"430\":55,\"500\":1}}],[\"来源\",{\"1\":{\"41\":1,\"457\":1}}],[\"数量\",{\"1\":{\"567\":1}}],[\"数据\",{\"1\":{\"542\":1}}],[\"数据目录\",{\"0\":{\"501\":1}}],[\"数据结构\",{\"0\":{\"455\":1}}],[\"数据是一致的\",{\"1\":{\"447\":1}}],[\"数据相比于go\",{\"1\":{\"224\":1}}],[\"数据类型\",{\"1\":{\"41\":1,\"74\":1,\"82\":1,\"86\":1,\"149\":1,\"160\":1,\"163\":1,\"174\":1,\"184\":1,\"188\":1,\"192\":1,\"367\":1,\"380\":1,\"382\":1,\"383\":1,\"434\":1,\"473\":1,\"475\":1}}],[\"数据为数组\",{\"1\":{\"37\":1,\"49\":1,\"57\":1,\"70\":1}}],[\"数组\",{\"1\":{\"41\":1,\"74\":1,\"193\":1}}],[\"ua\",{\"1\":{\"403\":1,\"404\":1}}],[\"u\",{\"1\":{\"311\":1}}],[\"unset\",{\"1\":{\"471\":1}}],[\"unknown\",{\"1\":{\"311\":1}}],[\"unidirectional\",{\"1\":{\"39\":1,\"437\":1}}],[\"uid\",{\"1\":{\"290\":2,\"311\":1,\"430\":2,\"469\":4,\"470\":4}}],[\"uint32\",{\"1\":{\"251\":1}}],[\"uint64\",{\"1\":{\"229\":1,\"233\":1,\"238\":1,\"242\":2,\"246\":2,\"251\":1,\"255\":1,\"260\":2,\"264\":2,\"267\":2,\"271\":1,\"272\":1,\"398\":2,\"399\":1}}],[\"uin\",{\"1\":{\"66\":2,\"67\":1,\"76\":1,\"120\":2,\"234\":2,\"430\":2}}],[\"upgrade\",{\"1\":{\"500\":3}}],[\"updatetime\",{\"1\":{\"329\":4}}],[\"update\",{\"1\":{\"266\":1,\"329\":2}}],[\"uploader\",{\"1\":{\"136\":2}}],[\"upload\",{\"1\":{\"107\":1,\"111\":1,\"136\":1,\"331\":1,\"393\":1,\"397\":1,\"430\":2,\"452\":1,\"472\":1,\"474\":1}}],[\"uri\",{\"1\":{\"153\":1}}],[\"url和base64至少一个不能为空\",{\"1\":{\"400\":1}}],[\"url\",{\"1\":{\"143\":1,\"145\":1,\"153\":2,\"223\":1,\"234\":4,\"243\":1,\"352\":1,\"353\":1,\"363\":2,\"376\":2,\"402\":1,\"430\":1,\"473\":1,\"475\":1,\"480\":1,\"484\":1,\"555\":1,\"558\":1,\"586\":1,\"592\":1}}],[\"used\",{\"1\":{\"131\":1}}],[\"users使用字符串\",{\"1\":{\"271\":1}}],[\"users\",{\"1\":{\"264\":1,\"271\":1}}],[\"user\",{\"1\":{\"32\":1,\"41\":1,\"52\":1,\"62\":1,\"77\":1,\"108\":1,\"156\":1,\"160\":1,\"166\":1,\"170\":1,\"198\":1,\"206\":1,\"242\":1,\"264\":1,\"276\":1,\"284\":1,\"290\":1,\"297\":1,\"306\":1,\"311\":1,\"319\":1,\"329\":1,\"356\":1,\"390\":1,\"403\":1,\"404\":1,\"430\":1,\"434\":1,\"438\":1,\"442\":1,\"456\":1,\"459\":1,\"467\":1,\"468\":1,\"469\":2,\"470\":2,\"471\":1,\"472\":1,\"474\":1,\"476\":1,\"477\":1,\"478\":1,\"479\":1,\"483\":1,\"485\":1,\"486\":1,\"487\":1,\"489\":1,\"491\":1}}],[\"具体如下\",{\"1\":{\"37\":1,\"49\":1,\"57\":1,\"70\":1}}],[\"除了\",{\"1\":{\"497\":1}}],[\"除了发送和响应\",{\"1\":{\"355\":1}}],[\"除\",{\"1\":{\"36\":1}}],[\"float\",{\"1\":{\"590\":2}}],[\"flash\",{\"1\":{\"555\":1}}],[\"flag\",{\"1\":{\"66\":2,\"67\":2,\"82\":2,\"86\":2,\"489\":2,\"491\":2}}],[\"flac\",{\"1\":{\"3\":1,\"382\":1}}],[\"ffmpeg\",{\"1\":{\"381\":1}}],[\"font\",{\"1\":{\"459\":1}}],[\"format\",{\"1\":{\"375\":1,\"382\":1}}],[\"forecast\",{\"1\":{\"329\":4}}],[\"forward\",{\"1\":{\"309\":1,\"313\":1,\"315\":3,\"318\":1,\"320\":1,\"329\":1,\"430\":4,\"505\":1}}],[\"foward\",{\"1\":{\"314\":1,\"319\":1}}],[\"folders\",{\"1\":{\"135\":1,\"141\":1}}],[\"folder\",{\"0\":{\"137\":1},\"1\":{\"118\":1,\"120\":3,\"122\":2,\"125\":1,\"126\":2,\"137\":2,\"139\":1,\"140\":2,\"141\":1,\"430\":4}}],[\"folder在shamrock不受支持\",{\"1\":{\"113\":1}}],[\"feeds\",{\"1\":{\"250\":1}}],[\"finish\",{\"1\":{\"399\":1}}],[\"finished\",{\"1\":{\"239\":1}}],[\"filename\",{\"1\":{\"363\":1}}],[\"file=xxxxx\",{\"1\":{\"316\":1}}],[\"file参数支持以下几种格式\",{\"1\":{\"153\":1}}],[\"files\",{\"1\":{\"133\":1,\"135\":1,\"139\":1,\"141\":1,\"430\":2}}],[\"file\",{\"0\":{\"136\":1},\"1\":{\"103\":1,\"107\":1,\"108\":1,\"111\":1,\"112\":1,\"115\":1,\"116\":3,\"118\":1,\"129\":1,\"131\":1,\"136\":3,\"137\":1,\"141\":1,\"143\":1,\"144\":3,\"153\":3,\"243\":1,\"362\":1,\"375\":1,\"376\":1,\"382\":2,\"383\":1,\"393\":1,\"395\":1,\"397\":1,\"398\":1,\"399\":1,\"401\":1,\"405\":1,\"430\":7,\"452\":1,\"472\":1,\"474\":1,\"479\":2,\"546\":1,\"553\":1,\"555\":1,\"558\":1,\"560\":1,\"592\":1}}],[\"from\",{\"1\":{\"251\":1}}],[\"frozen\",{\"1\":{\"226\":1}}],[\"frequency\",{\"1\":{\"234\":12}}],[\"friend\",{\"1\":{\"35\":1,\"39\":1,\"69\":1,\"81\":1,\"430\":3,\"433\":1,\"437\":1,\"451\":1,\"452\":2,\"454\":1,\"467\":1,\"478\":1,\"489\":1}}],[\"failed\",{\"1\":{\"358\":1}}],[\"false\",{\"1\":{\"226\":2,\"239\":1,\"256\":3,\"420\":1,\"499\":1}}],[\"face\",{\"1\":{\"217\":1,\"218\":1,\"430\":1}}],[\"fav\",{\"1\":{\"90\":2,\"94\":2,\"98\":2,\"102\":2,\"430\":4}}],[\"fdd6e7b6d93f1ef0\",{\"1\":{\"153\":1}}],[\"该文章使用的安卓版本可能较低\",{\"1\":{\"528\":1}}],[\"该文件在安卓系统\",{\"1\":{\"399\":1}}],[\"该配置文件采用json5标准\",{\"1\":{\"499\":1}}],[\"该操作过于落后\",{\"1\":{\"497\":1}}],[\"该请求携带了大量原生响应数据\",{\"1\":{\"252\":1}}],[\"该api接口已经被遗弃\",{\"1\":{\"248\":1}}],[\"该\",{\"1\":{\"33\":1,\"40\":1,\"45\":1,\"48\":1,\"116\":1,\"149\":1,\"160\":1,\"163\":1,\"174\":1,\"178\":1,\"181\":1,\"261\":1,\"268\":1,\"366\":1,\"379\":1}}],[\"该接口可能导致您的隐私数据泄露\",{\"1\":{\"421\":1}}],[\"该接口可能导致闪退等问题的出现\",{\"1\":{\"310\":1}}],[\"该接口默认关闭\",{\"1\":{\"421\":1}}],[\"该接口没有参数\",{\"1\":{\"408\":1}}],[\"该接口仅仅为websocket提供\",{\"1\":{\"397\":1}}],[\"该接口仅仅为http\",{\"1\":{\"393\":1}}],[\"该接口调用来自qq官方服务\",{\"1\":{\"326\":1}}],[\"该接口的响应结果暂不具备意义\",{\"1\":{\"315\":1}}],[\"该接口不会实现\",{\"1\":{\"257\":1}}],[\"该接口返回的\",{\"1\":{\"37\":1,\"49\":1,\"57\":1,\"70\":1}}],[\"该接口将返回处理结果\",{\"1\":{\"23\":1,\"83\":1,\"87\":1,\"150\":1,\"157\":1,\"167\":1,\"171\":1,\"175\":1,\"185\":1,\"189\":1,\"199\":1,\"203\":1,\"207\":1,\"219\":1,\"294\":1,\"307\":1,\"435\":1,\"439\":1,\"443\":1}}],[\"该接口将返回基本的\",{\"1\":{\"14\":1}}],[\"该接口用于删除单向好友\",{\"1\":{\"436\":1}}],[\"该接口用于删除好友\",{\"1\":{\"432\":1}}],[\"该接口用于删除群文件文件夹\",{\"1\":{\"124\":1}}],[\"该接口用于删除群文件\",{\"1\":{\"114\":1}}],[\"该接口用于检查是否可以发送语音\",{\"1\":{\"377\":1}}],[\"该接口用于检查是否可以发送图片\",{\"1\":{\"364\":1}}],[\"该接口用于图片\",{\"1\":{\"368\":1}}],[\"该接口用于清除本地消息缓存\",{\"1\":{\"304\":1}}],[\"该接口用于撤回消息\",{\"1\":{\"291\":1}}],[\"该接口用于发送消息\",{\"1\":{\"282\":1}}],[\"该接口用于发送群聊消息\",{\"1\":{\"278\":1}}],[\"该接口用于发送群公告\",{\"1\":{\"186\":1}}],[\"该接口用于发送私聊消息\",{\"1\":{\"274\":1}}],[\"该接口用于退出群组\",{\"1\":{\"200\":1}}],[\"该接口用于移出精华消息\",{\"1\":{\"179\":1}}],[\"该接口用于群戳一戳\",{\"1\":{\"204\":1}}],[\"该接口用于群组踢人\",{\"1\":{\"196\":1}}],[\"该接口用于群打卡\",{\"1\":{\"182\":1}}],[\"该接口用于群全员禁言\",{\"1\":{\"172\":1}}],[\"该接口用于群单人禁言\",{\"1\":{\"168\":1}}],[\"该接口用于创建群文件文件夹\",{\"1\":{\"117\":1}}],[\"该接口用于上传群聊图片\",{\"1\":{\"330\":1}}],[\"该接口用于上传群文件\",{\"1\":{\"110\":1}}],[\"该接口用于上传私聊文件\",{\"1\":{\"106\":1}}],[\"该接口用于处理加群请求\",{\"1\":{\"84\":1}}],[\"该接口用于处理加好友请求\",{\"1\":{\"80\":1}}],[\"该接口用于设置精华消息\",{\"1\":{\"176\":1}}],[\"该接口用于设置群组专属头衔\",{\"1\":{\"164\":1}}],[\"该接口用于设置群聊备注\",{\"1\":{\"161\":1}}],[\"该接口用于设置群成员名片\",{\"1\":{\"158\":1}}],[\"该接口用于设置群管理员\",{\"1\":{\"154\":1}}],[\"该接口用于设置群头像\",{\"1\":{\"151\":1}}],[\"该接口用于设置群名\",{\"1\":{\"147\":1}}],[\"该接口用于设置\",{\"1\":{\"11\":1,\"20\":1}}],[\"该接口用于获取缩略图\",{\"1\":{\"386\":1}}],[\"该接口用于获取视频\",{\"1\":{\"385\":1}}],[\"该接口用于获取文件\",{\"1\":{\"384\":1}}],[\"该接口用于获取语音\",{\"1\":{\"373\":1}}],[\"该接口用于获取图片\",{\"1\":{\"360\":1}}],[\"该接口用于获取天气\",{\"1\":{\"326\":1}}],[\"该接口用于获取频道系统内bot的资料\",{\"1\":{\"221\":1}}],[\"该接口用于获取精华消息列表\",{\"1\":{\"71\":1}}],[\"该接口用于获取好友系统消息\",{\"1\":{\"68\":1}}],[\"该接口用于获取好友列表\",{\"1\":{\"34\":1}}],[\"该接口用于获取群公告\",{\"1\":{\"190\":1}}],[\"该接口用于获取群文件资源链接\",{\"1\":{\"142\":1}}],[\"该接口用于获取群文件系统信息\",{\"1\":{\"128\":1}}],[\"该接口用于获取群子目录文件列表\",{\"1\":{\"138\":1}}],[\"该接口用于获取群根目录文件列表\",{\"1\":{\"132\":1}}],[\"该接口用于获取群系统消息\",{\"1\":{\"63\":1}}],[\"该接口用于获取群荣誉信息\",{\"1\":{\"58\":1}}],[\"该接口用于获取群成员列表\",{\"1\":{\"54\":1}}],[\"该接口用于获取群成员信息\",{\"1\":{\"50\":1}}],[\"该接口用于获取群列表\",{\"1\":{\"46\":1}}],[\"该接口用于获取群信息\",{\"1\":{\"42\":1}}],[\"该接口用于获取单向好友列表\",{\"1\":{\"38\":1}}],[\"该接口用于获取陌生人的信息\",{\"1\":{\"30\":1}}],[\"该接口用于获取当前账号在线客户端列表\",{\"1\":{\"24\":1}}],[\"该接口用于获取\",{\"1\":{\"7\":1,\"15\":1}}],[\"该接口无输入参数\",{\"1\":{\"9\":1,\"36\":1}}],[\"号为\",{\"1\":{\"547\":1,\"551\":1}}],[\"号\",{\"1\":{\"32\":1,\"41\":1,\"52\":1,\"62\":1,\"74\":2,\"156\":1,\"160\":1,\"166\":1,\"170\":1,\"198\":1,\"206\":1,\"276\":1,\"284\":1,\"290\":1,\"434\":1,\"456\":1,\"459\":1,\"467\":2,\"468\":2,\"469\":1,\"470\":1,\"478\":1,\"489\":1,\"491\":1,\"546\":1,\"563\":1,\"594\":1}}],[\"设备类型\",{\"1\":{\"28\":1}}],[\"设备名称\",{\"1\":{\"28\":1}}],[\"设置为null则默认15000毫秒作为心跳间隔\",{\"1\":{\"499\":2}}],[\"设置头像\",{\"1\":{\"316\":1}}],[\"设置还是移除\",{\"1\":{\"264\":1}}],[\"设置用户身份组\",{\"1\":{\"262\":1}}],[\"设置用户在频道中的角色\",{\"0\":{\"262\":1}}],[\"设置消息底部评论小表情\",{\"0\":{\"216\":1}}],[\"设置精华消息\",{\"0\":{\"176\":1}}],[\"设置群组专属头衔\",{\"0\":{\"164\":1}}],[\"设置群聊备注\",{\"0\":{\"161\":1}}],[\"设置群管理员\",{\"0\":{\"154\":1}}],[\"设置群头像\",{\"0\":{\"151\":1}}],[\"设置群名片\",{\"0\":{\"158\":1}}],[\"设置群名\",{\"0\":{\"147\":1}}],[\"设置在线机型\",{\"0\":{\"20\":1}}],[\"设置\",{\"0\":{\"11\":1}}],[\"img\",{\"1\":{\"484\":1}}],[\"images\",{\"0\":{\"195\":1},\"1\":{\"194\":1}}],[\"image\",{\"1\":{\"102\":2,\"188\":1,\"316\":1,\"329\":1,\"331\":1,\"361\":1,\"365\":1,\"369\":1,\"370\":1,\"430\":2,\"586\":1,\"592\":1}}],[\"ip\",{\"1\":{\"352\":1,\"353\":1}}],[\"icon\",{\"1\":{\"234\":2}}],[\"ivborw0kggoaaaansuheugaaabqaaaavcaiaaadjt1n\",{\"1\":{\"153\":1}}],[\"i1\",{\"1\":{\"153\":1}}],[\"items\",{\"1\":{\"92\":1}}],[\"item\",{\"1\":{\"90\":2,\"94\":2,\"430\":2}}],[\"issue\",{\"1\":{\"501\":1,\"503\":1,\"507\":1,\"515\":1}}],[\"is\",{\"1\":{\"76\":1,\"78\":1,\"218\":1,\"226\":3,\"430\":1}}],[\"id为消息id\",{\"1\":{\"316\":1}}],[\"id为空\",{\"1\":{\"315\":1}}],[\"id不匹配\",{\"1\":{\"315\":1}}],[\"id是其他同类框架所表达的target\",{\"1\":{\"289\":1,\"299\":1}}],[\"id分隔\",{\"1\":{\"271\":1}}],[\"ids\",{\"1\":{\"243\":16}}],[\"id\",{\"1\":{\"28\":1,\"32\":1,\"41\":1,\"44\":1,\"52\":2,\"56\":1,\"60\":1,\"61\":1,\"62\":3,\"66\":2,\"67\":2,\"73\":1,\"74\":3,\"77\":1,\"92\":2,\"95\":2,\"100\":1,\"104\":1,\"108\":1,\"112\":1,\"116\":2,\"119\":1,\"120\":2,\"122\":2,\"126\":2,\"130\":1,\"134\":1,\"136\":2,\"137\":2,\"140\":2,\"144\":2,\"149\":1,\"153\":1,\"156\":2,\"160\":2,\"163\":1,\"166\":2,\"170\":2,\"174\":1,\"178\":1,\"181\":1,\"184\":1,\"188\":1,\"192\":1,\"193\":1,\"195\":2,\"198\":2,\"202\":1,\"206\":2,\"210\":1,\"214\":1,\"218\":3,\"223\":1,\"226\":3,\"229\":1,\"230\":3,\"233\":1,\"234\":10,\"238\":1,\"239\":2,\"242\":2,\"243\":19,\"246\":2,\"247\":1,\"251\":1,\"255\":1,\"256\":1,\"260\":2,\"264\":3,\"267\":2,\"271\":1,\"272\":1,\"276\":1,\"277\":2,\"280\":1,\"281\":2,\"284\":3,\"285\":2,\"288\":2,\"289\":8,\"290\":1,\"293\":2,\"297\":3,\"299\":8,\"302\":2,\"306\":2,\"310\":1,\"311\":5,\"314\":1,\"315\":6,\"316\":3,\"319\":1,\"329\":17,\"356\":1,\"357\":1,\"390\":1,\"434\":1,\"438\":1,\"442\":1,\"447\":1,\"456\":2,\"459\":9,\"467\":4,\"468\":5,\"469\":3,\"470\":3,\"471\":2,\"472\":2,\"473\":2,\"474\":1,\"475\":3,\"476\":3,\"477\":2,\"478\":1,\"479\":1,\"481\":5,\"483\":4,\"485\":3,\"486\":2,\"487\":2,\"489\":1,\"491\":2,\"538\":1,\"539\":1,\"565\":3,\"567\":3,\"569\":2,\"572\":1,\"574\":1,\"576\":2,\"580\":2,\"582\":1,\"584\":2,\"594\":2}}],[\"increase\",{\"1\":{\"452\":1,\"469\":1}}],[\"initial\",{\"1\":{\"271\":1}}],[\"independent\",{\"1\":{\"256\":1}}],[\"in\",{\"1\":{\"239\":1}}],[\"invite\",{\"1\":{\"86\":1,\"469\":1,\"491\":1}}],[\"invitedrequest\",{\"0\":{\"66\":1}}],[\"invited\",{\"1\":{\"65\":1}}],[\"invitor\",{\"1\":{\"66\":2}}],[\"interval\",{\"1\":{\"499\":2}}],[\"int\",{\"1\":{\"153\":1,\"565\":1,\"567\":2,\"569\":1,\"572\":1,\"574\":1,\"576\":1,\"580\":3,\"582\":1,\"584\":1,\"594\":2}}],[\"int64\",{\"1\":{\"28\":1,\"32\":1,\"41\":1,\"44\":1,\"52\":2,\"56\":1,\"60\":1,\"61\":1,\"62\":1,\"66\":5,\"67\":4,\"73\":1,\"74\":4,\"77\":1,\"108\":1,\"112\":1,\"116\":1,\"119\":1,\"122\":1,\"126\":1,\"130\":1,\"131\":2,\"134\":1,\"136\":5,\"137\":2,\"140\":1,\"144\":1,\"149\":1,\"153\":1,\"156\":2,\"160\":2,\"163\":1,\"166\":2,\"170\":3,\"174\":1,\"184\":1,\"188\":1,\"192\":1,\"193\":2,\"198\":2,\"202\":1,\"206\":2,\"210\":1,\"214\":1,\"218\":1,\"246\":1,\"264\":1,\"267\":1,\"271\":1,\"276\":2,\"277\":1,\"280\":2,\"281\":1,\"284\":4,\"285\":1,\"289\":4,\"290\":1,\"297\":2,\"299\":4,\"302\":1,\"306\":2,\"314\":1,\"319\":1,\"333\":2,\"363\":1,\"390\":1,\"434\":1,\"438\":1,\"442\":1,\"447\":2,\"456\":1,\"459\":6,\"465\":1,\"467\":3,\"468\":4,\"469\":3,\"470\":3,\"471\":2,\"472\":2,\"473\":2,\"474\":2,\"475\":2,\"476\":4,\"477\":2,\"478\":1,\"479\":1,\"480\":1,\"481\":4,\"483\":4,\"485\":3,\"486\":2,\"487\":2,\"489\":1,\"491\":2,\"539\":1}}],[\"int32\",{\"1\":{\"13\":1,\"62\":2,\"74\":2,\"91\":3,\"116\":1,\"131\":2,\"136\":3,\"137\":2,\"144\":1,\"178\":1,\"181\":1,\"218\":2,\"246\":1,\"277\":1,\"281\":1,\"285\":1,\"288\":1,\"289\":2,\"290\":1,\"293\":1,\"297\":2,\"299\":2,\"302\":2,\"315\":2,\"372\":1,\"402\":1,\"420\":1,\"442\":1,\"459\":2,\"555\":1}}],[\"info\",{\"1\":{\"8\":1,\"31\":1,\"43\":1,\"51\":1,\"59\":1,\"129\":1,\"329\":4,\"430\":12}}],[\"custom\",{\"1\":{\"586\":1}}],[\"current\",{\"1\":{\"61\":1,\"234\":2,\"329\":2}}],[\"cmd\",{\"1\":{\"423\":1}}],[\"credentials\",{\"1\":{\"347\":1,\"430\":1}}],[\"creator\",{\"1\":{\"120\":1,\"137\":2,\"234\":2}}],[\"create\",{\"1\":{\"118\":1,\"120\":1,\"137\":1,\"230\":1,\"234\":2,\"270\":1,\"430\":1}}],[\"csrf\",{\"0\":{\"338\":1,\"346\":1},\"1\":{\"339\":1,\"430\":1}}],[\"ctime\",{\"1\":{\"329\":1}}],[\"city\",{\"1\":{\"323\":1,\"324\":1,\"325\":1,\"328\":1,\"329\":2,\"430\":1,\"588\":1}}],[\"circle\",{\"1\":{\"234\":12}}],[\"clean\",{\"1\":{\"407\":1,\"430\":1}}],[\"clear\",{\"1\":{\"305\":1,\"430\":1}}],[\"client\",{\"1\":{\"92\":1,\"452\":1,\"482\":2}}],[\"clients\",{\"1\":{\"25\":1,\"27\":1,\"430\":1}}],[\"cqhttp\",{\"1\":{\"316\":1,\"383\":1,\"579\":1}}],[\"cqhttp会有一点不一样\",{\"1\":{\"224\":1}}],[\"cq\",{\"0\":{\"545\":1},\"1\":{\"276\":1,\"280\":1,\"284\":1,\"316\":1,\"459\":1,\"497\":1,\"544\":1,\"545\":1,\"546\":3,\"547\":1,\"548\":2}}],[\"chunk\",{\"1\":{\"398\":1}}],[\"child\",{\"1\":{\"243\":16}}],[\"channel\",{\"1\":{\"231\":1,\"232\":1,\"234\":9,\"245\":1,\"246\":1}}],[\"checked\",{\"1\":{\"66\":1,\"67\":1}}],[\"cnt\",{\"1\":{\"246\":1,\"402\":1}}],[\"cn\",{\"1\":{\"195\":1,\"223\":1}}],[\"c6c661a413ba\",{\"1\":{\"120\":1}}],[\"can\",{\"1\":{\"365\":1,\"378\":1}}],[\"card\",{\"1\":{\"159\":1,\"160\":1,\"430\":2,\"452\":1,\"456\":1,\"477\":3}}],[\"category\",{\"1\":{\"91\":1,\"234\":2}}],[\"cache参数\",{\"1\":{\"153\":1}}],[\"cache\",{\"1\":{\"26\":1,\"153\":1,\"407\":1,\"430\":1}}],[\"coordinates\",{\"1\":{\"372\":1}}],[\"cookies\",{\"1\":{\"335\":1,\"343\":1,\"430\":2}}],[\"cookie\",{\"0\":{\"334\":1,\"346\":1},\"1\":{\"430\":1}}],[\"connection\",{\"1\":{\"500\":1}}],[\"confidence\",{\"1\":{\"372\":1}}],[\"config\",{\"1\":{\"329\":1,\"499\":1,\"501\":1}}],[\"concrete\",{\"1\":{\"329\":8}}],[\"content\",{\"1\":{\"94\":2,\"96\":1,\"99\":1,\"188\":1,\"316\":3,\"430\":1,\"590\":1,\"592\":1}}],[\"code\",{\"1\":{\"323\":1,\"328\":1,\"329\":1,\"430\":1,\"588\":1}}],[\"color\",{\"1\":{\"239\":1,\"243\":2,\"256\":1,\"267\":1,\"271\":1}}],[\"college\",{\"1\":{\"13\":1}}],[\"comment\",{\"1\":{\"217\":1,\"430\":1,\"489\":1,\"491\":1}}],[\"com\",{\"1\":{\"153\":1,\"243\":1,\"329\":1,\"395\":1,\"403\":1,\"404\":1,\"405\":1,\"498\":1,\"515\":1}}],[\"company\",{\"1\":{\"13\":1}}],[\"count\",{\"1\":{\"62\":1,\"131\":2,\"137\":1,\"230\":4,\"234\":2,\"256\":2,\"297\":1,\"302\":1,\"567\":1}}],[\"openshamrock\",{\"1\":{\"527\":1}}],[\"operation\",{\"1\":{\"430\":1}}],[\"operator\",{\"1\":{\"74\":3,\"467\":1,\"468\":1,\"469\":2,\"470\":2,\"476\":1,\"481\":1}}],[\"old\",{\"1\":{\"477\":1}}],[\"offline\",{\"1\":{\"452\":1,\"479\":1}}],[\"offset\",{\"1\":{\"398\":1}}],[\"out\",{\"1\":{\"375\":1,\"382\":1}}],[\"ocr结果\",{\"1\":{\"371\":1}}],[\"ocr\",{\"0\":{\"368\":1},\"1\":{\"368\":1,\"369\":1}}],[\"onebot\",{\"1\":{\"350\":1,\"381\":1,\"513\":1}}],[\"online\",{\"1\":{\"25\":1,\"430\":1,\"482\":1,\"563\":1}}],[\"object\",{\"1\":{\"276\":1,\"280\":1,\"284\":1,\"289\":1,\"299\":1,\"459\":2,\"472\":1,\"474\":1,\"479\":1,\"482\":1}}],[\"object\",{\"1\":{\"289\":1,\"299\":1}}],[\"object\",{\"1\":{\"193\":1}}],[\"object\",{\"1\":{\"27\":1}}],[\"owned\",{\"1\":{\"256\":1}}],[\"owner\",{\"1\":{\"226\":1,\"230\":1,\"234\":2}}],[\"original\",{\"1\":{\"555\":1}}],[\"or\",{\"1\":{\"246\":1,\"264\":1,\"402\":1,\"539\":1}}],[\"ok\",{\"1\":{\"92\":1,\"96\":1,\"100\":1,\"104\":1,\"120\":1,\"223\":1,\"226\":1,\"230\":1,\"234\":1,\"239\":1,\"243\":1,\"247\":1,\"256\":1,\"311\":1,\"315\":1,\"357\":2,\"358\":1,\"409\":1,\"416\":1,\"430\":1}}],[\"ogg\",{\"1\":{\"3\":1,\"382\":1}}],[\"docker\",{\"1\":{\"512\":1,\"524\":2}}],[\"docker部署支持\",{\"0\":{\"512\":1}}],[\"domain\",{\"1\":{\"336\":1,\"340\":1,\"344\":1,\"348\":1}}],[\"download\",{\"1\":{\"136\":1,\"401\":1,\"430\":1}}],[\"dir\",{\"1\":{\"423\":1}}],[\"direct\",{\"1\":{\"329\":8}}],[\"discuss\",{\"1\":{\"284\":1}}],[\"disabled\",{\"1\":{\"256\":1}}],[\"display\",{\"1\":{\"226\":1,\"230\":1,\"243\":2}}],[\"duration\",{\"1\":{\"170\":2,\"246\":1,\"276\":1,\"280\":1,\"284\":1,\"465\":1,\"476\":1}}],[\"dcb7\",{\"1\":{\"92\":1}}],[\"default\",{\"1\":{\"499\":2}}],[\"detail\",{\"1\":{\"483\":1}}],[\"decrease\",{\"1\":{\"452\":1,\"470\":1}}],[\"desc\",{\"1\":{\"329\":4}}],[\"description\",{\"1\":{\"62\":1}}],[\"dead\",{\"1\":{\"136\":1}}],[\"delete\",{\"1\":{\"115\":1,\"125\":1,\"180\":1,\"259\":1,\"292\":1,\"430\":6,\"433\":1,\"437\":1,\"465\":1,\"481\":1}}],[\"device\",{\"0\":{\"28\":1},\"1\":{\"28\":2,\"411\":1,\"430\":1}}],[\"day\",{\"1\":{\"62\":1,\"329\":27}}],[\"data\",{\"1\":{\"23\":1,\"37\":1,\"49\":1,\"57\":1,\"70\":1,\"83\":1,\"87\":1,\"92\":1,\"96\":1,\"100\":1,\"104\":1,\"120\":1,\"150\":1,\"157\":1,\"167\":1,\"171\":1,\"175\":1,\"185\":1,\"189\":1,\"193\":1,\"199\":1,\"203\":1,\"207\":1,\"219\":1,\"223\":1,\"226\":1,\"230\":1,\"234\":1,\"239\":1,\"243\":1,\"247\":1,\"256\":1,\"294\":1,\"307\":1,\"311\":2,\"315\":1,\"316\":7,\"329\":2,\"357\":1,\"383\":1,\"395\":1,\"405\":1,\"416\":1,\"430\":1,\"435\":1,\"439\":1,\"443\":1,\"498\":1,\"515\":1,\"542\":1,\"550\":1,\"551\":1,\"552\":2}}],[\"dd\",{\"1\":{\"13\":1}}],[\"其它模拟器在测试情况下都出现高版本\",{\"1\":{\"521\":1}}],[\"其它平台未测试\",{\"1\":{\"514\":1}}],[\"其次\",{\"1\":{\"510\":1}}],[\"其他配置保持默认\",{\"1\":{\"532\":1}}],[\"其他功能的配置进行修改立即生效\",{\"1\":{\"497\":1}}],[\"其他将在下文中详细说明\",{\"1\":{\"357\":1}}],[\"其他接口\",{\"0\":{\"321\":1},\"1\":{\"5\":1}}],[\"其中对shamrock兼容较好的是\",{\"1\":{\"521\":1}}],[\"其中的日志可作为\",{\"1\":{\"501\":1}}],[\"其中\",{\"1\":{\"23\":1,\"83\":1,\"87\":1,\"150\":1,\"157\":1,\"167\":1,\"171\":1,\"175\":1,\"185\":1,\"189\":1,\"199\":1,\"203\":1,\"207\":1,\"219\":1,\"294\":1,\"307\":1,\"315\":1,\"435\":1,\"439\":1,\"443\":1}}],[\"厂商\",{\"1\":{\"22\":1}}],[\"big\",{\"1\":{\"565\":1}}],[\"birthday\",{\"1\":{\"13\":1}}],[\"bbbb1111\",{\"1\":{\"499\":1}}],[\"beijing\",{\"1\":{\"329\":1}}],[\"black\",{\"1\":{\"239\":1,\"499\":2}}],[\"blacklist\",{\"1\":{\"76\":1,\"430\":1}}],[\"b=oidb\",{\"1\":{\"223\":1}}],[\"battery\",{\"1\":{\"411\":1,\"412\":1,\"430\":1}}],[\"baidu\",{\"1\":{\"403\":1,\"404\":1}}],[\"banned\",{\"1\":{\"226\":1}}],[\"ban\",{\"1\":{\"169\":1,\"173\":1,\"430\":2,\"452\":1,\"465\":2,\"476\":3}}],[\"base64\",{\"1\":{\"153\":2,\"329\":1,\"398\":1,\"402\":1,\"553\":2}}],[\"by\",{\"1\":{\"139\":1,\"228\":1,\"430\":2}}],[\"busid\",{\"1\":{\"116\":1,\"136\":1,\"144\":1,\"473\":2}}],[\"boolean\",{\"1\":{\"82\":1,\"86\":1,\"174\":1,\"367\":1,\"380\":1}}],[\"bool\",{\"1\":{\"19\":1,\"26\":1,\"66\":1,\"67\":1,\"78\":1,\"156\":1,\"198\":1,\"218\":1,\"233\":1,\"238\":2,\"246\":1,\"264\":1,\"276\":1,\"280\":1,\"284\":1,\"399\":1,\"420\":1,\"464\":2,\"465\":5,\"482\":1,\"490\":1,\"492\":1,\"558\":1,\"565\":1}}],[\"在客户端会被分类到表情包图片并缩放显示\",{\"1\":{\"556\":1}}],[\"在后续的文档中\",{\"1\":{\"544\":1}}],[\"在后台运行\",{\"1\":{\"532\":2}}],[\"在第二次启动时会闪退\",{\"1\":{\"529\":1}}],[\"在wsa上部署\",{\"0\":{\"529\":1}}],[\"在linux\",{\"0\":{\"528\":1}}],[\"在linux类服务器上部署\",{\"0\":{\"524\":1}}],[\"在pve上使用\",{\"0\":{\"525\":1}}],[\"在测试情况下\",{\"1\":{\"522\":1}}],[\"在mumu模拟器\",{\"1\":{\"521\":1}}],[\"在未来版本中被删除或修改\",{\"1\":{\"516\":1}}],[\"在更新配置或更新模块后需重启系统\",{\"1\":{\"506\":1}}],[\"在\",{\"1\":{\"500\":1,\"529\":1,\"533\":1}}],[\"在断线之后\",{\"1\":{\"497\":1}}],[\"在频道中\",{\"1\":{\"459\":1}}],[\"在大部分情况下\",{\"1\":{\"351\":1}}],[\"在想可不可以在手机上跑bot\",{\"1\":{\"96\":1}}],[\"在线状态\",{\"1\":{\"482\":1}}],[\"在线客户端列表\",{\"1\":{\"27\":1}}],[\"在线机型\",{\"1\":{\"15\":1,\"20\":1}}],[\"在模拟器上即使对应架构也可能报错\",{\"1\":{\"3\":1}}],[\"mumu模拟器\",{\"1\":{\"521\":1}}],[\"mumu\",{\"1\":{\"510\":1}}],[\"miui游戏助手息屏挂机\",{\"1\":{\"509\":1}}],[\"miui\",{\"1\":{\"509\":1}}],[\"mobileqq\",{\"1\":{\"395\":1,\"405\":1,\"498\":1,\"515\":1}}],[\"modes\",{\"1\":{\"234\":2}}],[\"mode\",{\"1\":{\"234\":38}}],[\"modeldetail\",{\"0\":{\"19\":1}}],[\"model\",{\"1\":{\"16\":1,\"19\":1,\"21\":1,\"22\":1,\"430\":3}}],[\"modifier\",{\"1\":{\"120\":1}}],[\"modify\",{\"1\":{\"120\":1,\"136\":1}}],[\"m4a\",{\"1\":{\"382\":1}}],[\"myqcloud\",{\"1\":{\"243\":1}}],[\"my\",{\"1\":{\"234\":2}}],[\"magic\",{\"1\":{\"558\":1}}],[\"magisk中文网\",{\"1\":{\"522\":1}}],[\"magisk+lsposed\",{\"0\":{\"522\":1}}],[\"magisk\",{\"1\":{\"508\":1,\"514\":1,\"522\":1,\"524\":1,\"529\":1}}],[\"max\",{\"1\":{\"230\":3,\"234\":2,\"256\":1}}],[\"manu\",{\"1\":{\"22\":1}}],[\"md5\",{\"1\":{\"136\":2,\"362\":1,\"375\":1,\"398\":1}}],[\"me\",{\"1\":{\"430\":1,\"470\":1}}],[\"meta\",{\"1\":{\"228\":1,\"329\":1}}],[\"messagetype\",{\"0\":{\"450\":1}}],[\"messagesender\",{\"0\":{\"456\":1}}],[\"messagesubtype\",{\"0\":{\"451\":1}}],[\"messages\",{\"1\":{\"298\":1,\"303\":1,\"311\":1,\"314\":1,\"319\":1}}],[\"message格式同\",{\"1\":{\"280\":1,\"284\":1}}],[\"message格式可为消息段object\",{\"1\":{\"276\":1}}],[\"message去发频道消息\",{\"1\":{\"244\":1}}],[\"message\",{\"0\":{\"194\":1,\"299\":1,\"457\":1},\"1\":{\"67\":1,\"74\":2,\"120\":1,\"178\":1,\"181\":1,\"193\":1,\"226\":1,\"234\":1,\"246\":2,\"247\":1,\"276\":1,\"277\":1,\"280\":1,\"281\":1,\"284\":2,\"285\":1,\"288\":1,\"289\":3,\"293\":1,\"297\":2,\"298\":1,\"299\":3,\"302\":1,\"303\":1,\"306\":1,\"311\":3,\"314\":1,\"315\":3,\"319\":1,\"356\":1,\"357\":1,\"430\":8,\"447\":5,\"449\":2,\"459\":4,\"460\":1,\"461\":1,\"462\":1,\"463\":1,\"467\":1,\"468\":1,\"481\":1}}],[\"members\",{\"1\":{\"239\":1}}],[\"member\",{\"1\":{\"51\":1,\"55\":1,\"209\":1,\"230\":2,\"234\":2,\"237\":1,\"241\":1,\"256\":1,\"263\":1,\"430\":4}}],[\"msgs\",{\"1\":{\"305\":1,\"430\":1}}],[\"msg来获取来自频道的消息\",{\"1\":{\"257\":1}}],[\"msg\",{\"1\":{\"64\":1,\"69\":1,\"72\":1,\"98\":2,\"102\":2,\"177\":1,\"180\":1,\"218\":1,\"245\":1,\"275\":1,\"279\":1,\"280\":1,\"283\":1,\"284\":1,\"287\":1,\"292\":1,\"296\":1,\"301\":1,\"309\":1,\"313\":1,\"318\":1,\"320\":1,\"356\":1,\"357\":1,\"430\":18}}],[\"mm\",{\"1\":{\"13\":1}}],[\"mp3\",{\"1\":{\"3\":1,\"382\":1,\"383\":1}}],[\"格式正确\",{\"1\":{\"499\":1}}],[\"格式的\",{\"1\":{\"354\":1}}],[\"格式使用\",{\"1\":{\"153\":1}}],[\"格式\",{\"0\":{\"546\":1,\"550\":1},\"1\":{\"13\":1,\"549\":1}}],[\"生日\",{\"1\":{\"13\":1}}],[\"年龄\",{\"1\":{\"13\":1,\"290\":1}}],[\"否则无法推送配置文件导致失败\",{\"1\":{\"520\":1}}],[\"否则更新可能不会生效\",{\"1\":{\"506\":1}}],[\"否则请前往谷歌官网或者刷机论坛之类的地方获取\",{\"1\":{\"505\":1}}],[\"否则会出现\",{\"1\":{\"504\":1}}],[\"否则可能无法运行\",{\"1\":{\"3\":1}}],[\"否\",{\"1\":{\"13\":2,\"198\":1,\"218\":1,\"276\":2,\"280\":2,\"284\":2,\"297\":4,\"302\":2,\"306\":2,\"328\":1,\"336\":1,\"340\":1,\"344\":1,\"348\":1,\"402\":6,\"420\":2,\"555\":3,\"558\":2,\"563\":1,\"565\":1,\"580\":1,\"586\":1,\"588\":2,\"590\":2,\"592\":3}}],[\"个人备注\",{\"1\":{\"13\":1}}],[\"个人资料\",{\"0\":{\"11\":1}}],[\"ntqq废弃\",{\"0\":{\"577\":1,\"578\":1}}],[\"nat\",{\"1\":{\"505\":1}}],[\"name\",{\"1\":{\"28\":1,\"66\":1,\"67\":1,\"92\":2,\"108\":1,\"112\":1,\"119\":1,\"120\":1,\"122\":1,\"136\":2,\"137\":2,\"148\":1,\"149\":1,\"226\":1,\"230\":1,\"234\":2,\"239\":1,\"243\":4,\"256\":1,\"267\":1,\"271\":1,\"329\":1,\"402\":1,\"430\":1,\"473\":1,\"475\":1,\"480\":1}}],[\"n\",{\"1\":{\"403\":1,\"404\":1}}],[\"night\",{\"1\":{\"329\":24}}],[\"nick\",{\"1\":{\"66\":1,\"67\":1,\"74\":2}}],[\"nickname\",{\"1\":{\"13\":1,\"41\":1,\"62\":1,\"223\":1,\"239\":1,\"243\":1,\"290\":1,\"311\":1,\"456\":1}}],[\"null\",{\"1\":{\"65\":1,\"329\":8,\"499\":1}}],[\"new\",{\"1\":{\"329\":8,\"477\":1}}],[\"newbie\",{\"1\":{\"61\":1}}],[\"next\",{\"1\":{\"238\":1,\"239\":1}}],[\"need\",{\"1\":{\"19\":1}}],[\"normal\",{\"1\":{\"451\":1}}],[\"node\",{\"1\":{\"316\":6}}],[\"notify\",{\"1\":{\"452\":1,\"483\":1,\"485\":1,\"486\":1,\"487\":1}}],[\"noticenotifysubtype\",{\"0\":{\"453\":1}}],[\"noticetype\",{\"0\":{\"452\":1}}],[\"notice\",{\"1\":{\"187\":1,\"191\":1,\"430\":3,\"449\":1,\"451\":1,\"467\":1,\"468\":1,\"469\":1,\"470\":1,\"471\":1,\"472\":1,\"474\":1,\"476\":1,\"477\":1,\"478\":1,\"479\":1,\"481\":1,\"482\":1,\"483\":1,\"485\":1,\"486\":1,\"487\":1}}],[\"not\",{\"1\":{\"430\":1}}],[\"note\",{\"1\":{\"13\":1}}],[\"no\",{\"1\":{\"26\":1}}],[\"pve开启嵌套虚拟化\",{\"1\":{\"526\":1}}],[\"pm\",{\"1\":{\"329\":3}}],[\"pubtime\",{\"1\":{\"329\":5}}],[\"publish\",{\"1\":{\"193\":1}}],[\"peer\",{\"1\":{\"289\":2,\"299\":2,\"311\":1,\"459\":1}}],[\"permission\",{\"1\":{\"234\":4,\"243\":2,\"256\":1}}],[\"performer\",{\"1\":{\"61\":1}}],[\"personal\",{\"1\":{\"13\":1}}],[\"platform\",{\"1\":{\"239\":1}}],[\"pic\",{\"1\":{\"333\":1}}],[\"pictures\",{\"1\":{\"153\":1}}],[\"piimg\",{\"1\":{\"153\":1}}],[\"png\",{\"1\":{\"153\":1,\"329\":1}}],[\"port\",{\"1\":{\"499\":1}}],[\"portrait\",{\"1\":{\"152\":1}}],[\"power\",{\"1\":{\"329\":11}}],[\"pokedetail\",{\"0\":{\"484\":1},\"1\":{\"483\":1}}],[\"poke\",{\"1\":{\"205\":1,\"430\":1,\"453\":1,\"483\":2}}],[\"posttype\",{\"0\":{\"449\":1}}],[\"post提供\",{\"1\":{\"393\":1}}],[\"post\",{\"0\":{\"353\":1,\"457\":1},\"1\":{\"332\":1,\"351\":2,\"353\":1,\"354\":3,\"415\":1,\"419\":1,\"422\":1,\"426\":1,\"447\":2}}],[\"poster\",{\"1\":{\"329\":1}}],[\"pos\",{\"1\":{\"91\":1}}],[\"prompt\",{\"1\":{\"329\":1}}],[\"proc\",{\"1\":{\"329\":1}}],[\"province\",{\"1\":{\"325\":1}}],[\"prohibited\",{\"1\":{\"209\":1,\"430\":1}}],[\"profile\",{\"1\":{\"12\":1,\"222\":1,\"226\":1,\"230\":1,\"241\":1,\"243\":1,\"430\":3}}],[\"private\",{\"1\":{\"107\":1,\"275\":1,\"280\":1,\"284\":1,\"311\":1,\"318\":1,\"320\":1,\"356\":1,\"430\":4,\"450\":1,\"460\":1,\"474\":2,\"499\":1}}],[\"passive\",{\"1\":{\"499\":1}}],[\"path\",{\"1\":{\"399\":1}}],[\"param\",{\"1\":{\"546\":1}}],[\"params\",{\"1\":{\"356\":1}}],[\"param2=value2\",{\"1\":{\"354\":1,\"546\":1}}],[\"param2\",{\"1\":{\"354\":1}}],[\"param1=value1\",{\"1\":{\"354\":1,\"546\":1}}],[\"param1\",{\"1\":{\"354\":1}}],[\"parent\",{\"1\":{\"120\":1}}],[\"page\",{\"1\":{\"91\":1}}],[\"pay\",{\"1\":{\"19\":1}}],[\"邮箱\",{\"1\":{\"13\":1}}],[\"昵称\",{\"1\":{\"13\":1,\"41\":1,\"62\":1,\"290\":1}}],[\"是发送的消息\",{\"1\":{\"447\":1}}],[\"是收到的消息\",{\"1\":{\"447\":1}}],[\"是或否\",{\"1\":{\"367\":1,\"380\":1}}],[\"是否是大表情\",{\"1\":{\"565\":1}}],[\"是否是黑名单\",{\"1\":{\"78\":1}}],[\"是否为魔法语音\",{\"1\":{\"558\":1}}],[\"是否允许临时消息\",{\"1\":{\"499\":1}}],[\"是否同意\",{\"1\":{\"490\":1,\"492\":1}}],[\"是否同意请求\",{\"1\":{\"82\":1,\"86\":1}}],[\"是否踢出发送者\",{\"1\":{\"465\":1}}],[\"是否撤回消息\",{\"1\":{\"465\":1}}],[\"是否\",{\"1\":{\"465\":1}}],[\"是否自动回复到消息\",{\"1\":{\"464\":1}}],[\"是否自动转义\",{\"1\":{\"464\":1,\"465\":1}}],[\"是否只显示最近的日志\",{\"1\":{\"420\":1}}],[\"是否完成上传\",{\"1\":{\"399\":1}}],[\"是否正常执行切换账号请求的响应\",{\"1\":{\"391\":1}}],[\"是否解析\",{\"1\":{\"276\":1,\"280\":1,\"284\":1}}],[\"是否解析cq码\",{\"1\":{\"246\":1}}],[\"是否一次性获取完所有成员\",{\"1\":{\"238\":1}}],[\"是否刷新数据\",{\"1\":{\"233\":1,\"238\":1}}],[\"是否拒绝再次加群\",{\"1\":{\"198\":1}}],[\"是否禁言发送者\",{\"1\":{\"465\":1}}],[\"是否禁言\",{\"1\":{\"174\":1}}],[\"是否设置或取消评论\",{\"1\":{\"218\":1}}],[\"是否设置\",{\"1\":{\"156\":1}}],[\"是否已被处理\",{\"1\":{\"66\":1,\"67\":1}}],[\"是否无视缓存\",{\"1\":{\"26\":1}}],[\"是否需要付费\",{\"1\":{\"19\":1}}],[\"是\",{\"1\":{\"13\":5,\"22\":2,\"32\":1,\"44\":1,\"52\":2,\"56\":1,\"60\":1,\"77\":1,\"91\":3,\"95\":1,\"99\":1,\"103\":1,\"156\":3,\"166\":3,\"170\":3,\"198\":2,\"202\":1,\"206\":2,\"210\":1,\"214\":1,\"218\":3,\"276\":2,\"280\":2,\"284\":5,\"288\":1,\"293\":1,\"297\":1,\"302\":1,\"306\":1,\"310\":1,\"314\":1,\"319\":1,\"324\":1,\"328\":1,\"333\":3,\"362\":1,\"375\":2,\"390\":1,\"423\":2,\"442\":2,\"538\":1,\"539\":1,\"542\":1,\"555\":1,\"558\":1,\"560\":1,\"565\":1,\"567\":2,\"569\":1,\"572\":1,\"574\":1,\"576\":1,\"580\":2,\"582\":1,\"584\":2,\"586\":5,\"590\":2,\"592\":2,\"594\":2}}],[\"说明\",{\"1\":{\"13\":1,\"19\":1,\"22\":1,\"26\":1,\"27\":1,\"28\":1,\"32\":1,\"41\":1,\"44\":1,\"52\":1,\"56\":1,\"60\":1,\"61\":1,\"62\":1,\"65\":1,\"66\":1,\"67\":1,\"73\":1,\"74\":1,\"77\":1,\"78\":1,\"82\":1,\"86\":1,\"91\":1,\"95\":1,\"99\":1,\"103\":1,\"108\":1,\"112\":1,\"116\":1,\"119\":1,\"122\":1,\"126\":1,\"130\":1,\"131\":1,\"134\":1,\"135\":1,\"136\":1,\"137\":1,\"140\":1,\"141\":1,\"144\":1,\"145\":1,\"149\":1,\"153\":1,\"156\":1,\"160\":1,\"163\":1,\"166\":1,\"170\":1,\"174\":1,\"178\":1,\"181\":1,\"184\":1,\"188\":1,\"192\":1,\"193\":1,\"194\":1,\"195\":1,\"198\":1,\"202\":1,\"206\":1,\"210\":1,\"214\":1,\"218\":1,\"229\":1,\"233\":1,\"235\":1,\"238\":1,\"242\":1,\"246\":1,\"251\":1,\"255\":1,\"260\":1,\"264\":1,\"267\":1,\"271\":1,\"272\":1,\"276\":1,\"277\":1,\"280\":1,\"281\":1,\"284\":1,\"285\":1,\"288\":1,\"289\":1,\"290\":1,\"293\":1,\"297\":1,\"298\":1,\"299\":1,\"302\":1,\"303\":1,\"306\":1,\"310\":1,\"314\":1,\"315\":1,\"319\":1,\"324\":1,\"328\":1,\"333\":1,\"336\":1,\"340\":1,\"344\":1,\"348\":1,\"362\":1,\"363\":1,\"367\":1,\"370\":1,\"371\":1,\"372\":1,\"375\":1,\"376\":1,\"380\":1,\"382\":1,\"383\":1,\"390\":1,\"402\":1,\"420\":1,\"423\":1,\"434\":1,\"438\":1,\"442\":1,\"447\":1,\"449\":1,\"450\":1,\"451\":1,\"452\":1,\"453\":1,\"454\":1,\"456\":3,\"459\":1,\"464\":1,\"465\":1,\"467\":1,\"468\":1,\"469\":1,\"470\":1,\"471\":1,\"472\":1,\"473\":1,\"474\":1,\"475\":1,\"476\":1,\"477\":1,\"478\":1,\"479\":1,\"480\":1,\"481\":1,\"482\":1,\"483\":1,\"484\":1,\"485\":1,\"486\":1,\"487\":1,\"489\":1,\"490\":1,\"491\":1,\"492\":1,\"538\":1,\"539\":1,\"542\":1,\"555\":1,\"556\":1,\"558\":1,\"560\":1,\"563\":1,\"565\":1,\"567\":1,\"569\":1,\"572\":1,\"574\":1,\"576\":1,\"580\":1,\"582\":1,\"584\":1,\"586\":1,\"588\":1,\"590\":1,\"592\":1,\"594\":1}}],[\"响应数据\",{\"0\":{\"193\":1,\"399\":1},\"1\":{\"357\":1}}],[\"响应解释\",{\"0\":{\"123\":1,\"127\":1}}],[\"响应示例\",{\"0\":{\"120\":1,\"223\":1,\"226\":1,\"230\":1,\"234\":1,\"239\":1,\"243\":1,\"247\":1,\"252\":1,\"256\":1}}],[\"响应内容为\",{\"1\":{\"41\":1,\"74\":1}}],[\"响应\",{\"0\":{\"10\":1,\"14\":1,\"18\":1,\"23\":1,\"27\":1,\"33\":1,\"37\":1,\"41\":1,\"45\":1,\"49\":1,\"53\":1,\"57\":1,\"61\":1,\"65\":1,\"70\":1,\"74\":1,\"78\":1,\"83\":1,\"87\":1,\"92\":1,\"96\":1,\"100\":1,\"104\":1,\"109\":1,\"113\":1,\"131\":1,\"135\":1,\"141\":1,\"145\":1,\"150\":1,\"157\":1,\"167\":1,\"171\":1,\"175\":1,\"185\":1,\"189\":1,\"199\":1,\"203\":1,\"207\":1,\"211\":1,\"215\":1,\"219\":1,\"261\":1,\"268\":1,\"272\":1,\"277\":1,\"281\":1,\"285\":1,\"289\":1,\"294\":1,\"298\":1,\"303\":1,\"307\":1,\"311\":1,\"315\":1,\"320\":1,\"325\":1,\"329\":1,\"337\":1,\"341\":1,\"345\":1,\"349\":1,\"357\":1,\"363\":1,\"367\":1,\"371\":1,\"376\":1,\"380\":1,\"383\":1,\"391\":1,\"395\":1,\"405\":1,\"409\":1,\"412\":1,\"416\":1,\"427\":1,\"430\":1,\"435\":1,\"439\":1,\"443\":1}}],[\"lon\",{\"1\":{\"590\":1}}],[\"logs\",{\"1\":{\"501\":1}}],[\"log\",{\"1\":{\"418\":1,\"501\":1,\"515\":1}}],[\"login\",{\"1\":{\"8\":1,\"430\":1}}],[\"lsp\",{\"1\":{\"527\":1}}],[\"lsposed\",{\"1\":{\"522\":2,\"530\":1}}],[\"lspatch+shamrock\",{\"1\":{\"524\":1}}],[\"lspatch\",{\"0\":{\"523\":1,\"532\":1},\"1\":{\"514\":1,\"532\":4}}],[\"lst\",{\"1\":{\"329\":1}}],[\"lucky\",{\"1\":{\"453\":1,\"485\":1}}],[\"lat\",{\"1\":{\"590\":1}}],[\"latest\",{\"1\":{\"430\":1}}],[\"language\",{\"1\":{\"371\":1}}],[\"last\",{\"1\":{\"329\":1}}],[\"less\",{\"1\":{\"462\":1}}],[\"level\",{\"1\":{\"456\":1}}],[\"leave\",{\"1\":{\"201\":1,\"430\":2,\"470\":1}}],[\"legend\",{\"1\":{\"61\":1}}],[\"lift\",{\"1\":{\"476\":1}}],[\"lifeindex\",{\"1\":{\"329\":2}}],[\"like\",{\"1\":{\"430\":1,\"441\":1}}],[\"limit\",{\"1\":{\"131\":1}}],[\"list\",{\"1\":{\"371\":1}}],[\"list\",{\"1\":{\"194\":1}}],[\"list\",{\"1\":{\"65\":1}}],[\"list\",{\"1\":{\"135\":1}}],[\"list\",{\"1\":{\"135\":1}}],[\"list\",{\"1\":{\"65\":1}}],[\"list\",{\"1\":{\"61\":7}}],[\"list\",{\"1\":{\"35\":1,\"39\":1,\"47\":1,\"55\":1,\"61\":5,\"72\":1,\"90\":2,\"209\":1,\"225\":1,\"226\":1,\"232\":1,\"234\":1,\"237\":1,\"329\":7,\"430\":8,\"499\":4}}],[\"lib\",{\"1\":{\"3\":2}}],[\"尚未实现的\",{\"1\":{\"6\":1,\"29\":1,\"79\":1,\"105\":1,\"146\":1,\"220\":1,\"273\":1,\"359\":1,\"431\":1}}],[\"注意请不要提交超过\",{\"1\":{\"515\":1}}],[\"注意请确保qq可以访问\",{\"1\":{\"402\":1}}],[\"注意该接口是上传群消息的图片\",{\"1\":{\"330\":1}}],[\"注意\",{\"1\":{\"6\":1,\"29\":1,\"33\":1,\"45\":1,\"65\":1,\"79\":1,\"88\":1,\"105\":1,\"106\":1,\"108\":1,\"110\":1,\"112\":1,\"113\":1,\"117\":1,\"146\":1,\"220\":1,\"273\":1,\"284\":1,\"316\":1,\"359\":1,\"393\":1,\"397\":1,\"421\":1,\"431\":1,\"466\":1,\"488\":1,\"497\":1,\"504\":1,\"506\":1,\"516\":1,\"520\":1,\"521\":1,\"532\":1,\"533\":1,\"534\":1,\"537\":1,\"558\":1,\"563\":1,\"579\":1}}],[\"资源相关\",{\"0\":{\"359\":1},\"1\":{\"5\":1}}],[\"联系人相关\",{\"0\":{\"29\":1},\"1\":{\"5\":1}}],[\"请访问\",{\"1\":{\"518\":1,\"519\":1}}],[\"请不要过度依赖实验室中的功能\",{\"1\":{\"516\":1}}],[\"请不要作为参考使用\",{\"1\":{\"33\":1,\"45\":1}}],[\"请查看\",{\"1\":{\"515\":1}}],[\"请启动\",{\"1\":{\"513\":1}}],[\"请保证关闭锁屏后断开数据\",{\"1\":{\"509\":1}}],[\"请安装一些软件进行按时重启或者闪退重启\",{\"1\":{\"508\":1}}],[\"请注意adb是安卓调试桥工具包内的东西\",{\"1\":{\"505\":1}}],[\"请注意下载大文件时的超时\",{\"1\":{\"405\":1}}],[\"请使用安卓9+系统\",{\"1\":{\"528\":1}}],[\"请使用\",{\"1\":{\"505\":1,\"520\":1}}],[\"请确保100\",{\"1\":{\"506\":1}}],[\"请确保你的环境中有这个玩意\",{\"1\":{\"505\":1}}],[\"请确保\",{\"1\":{\"499\":1,\"520\":1}}],[\"请勿公开在未知的网络\",{\"1\":{\"421\":1}}],[\"请自行测试\",{\"1\":{\"252\":1}}],[\"请自行创建\",{\"1\":{\"3\":1}}],[\"请求事件\",{\"0\":{\"488\":1},\"1\":{\"445\":1}}],[\"请求头中添加\",{\"1\":{\"500\":1}}],[\"请求头\",{\"1\":{\"402\":1}}],[\"请求中的回显字段\",{\"1\":{\"357\":1}}],[\"请求参数\",{\"1\":{\"356\":1}}],[\"请求外\",{\"1\":{\"355\":1}}],[\"请求格式\",{\"0\":{\"354\":1,\"356\":1}}],[\"请求的数据格式为表单\",{\"1\":{\"354\":1}}],[\"请求的数据格式为\",{\"1\":{\"354\":1,\"356\":1}}],[\"请求的参数\",{\"1\":{\"352\":1}}],[\"请求的\",{\"1\":{\"352\":1,\"353\":1}}],[\"请求\",{\"0\":{\"351\":1,\"352\":1,\"353\":1,\"355\":1},\"1\":{\"351\":1,\"354\":1,\"356\":1,\"449\":1,\"489\":1,\"491\":1}}],[\"请求来与\",{\"1\":{\"350\":1,\"351\":1}}],[\"请求类型\",{\"0\":{\"332\":1,\"415\":1,\"419\":1,\"422\":1,\"426\":1},\"1\":{\"86\":1}}],[\"请求者\",{\"1\":{\"489\":1,\"491\":1}}],[\"请求者昵称\",{\"1\":{\"67\":1}}],[\"请求者id\",{\"1\":{\"67\":1}}],[\"请求id\",{\"1\":{\"66\":1,\"67\":1}}],[\"请求与响应\",{\"0\":{\"350\":1},\"1\":{\"5\":1}}],[\"请你下载对应的正确的架构的lib\",{\"1\":{\"3\":1}}],[\"请参考\",{\"1\":{\"3\":1,\"381\":1}}],[\"请下载对应架构的文件\",{\"1\":{\"3\":1}}],[\"amp\",{\"1\":{\"548\":1}}],[\"amr\",{\"1\":{\"382\":1}}],[\"aaa123456\",{\"1\":{\"499\":1}}],[\"aaa666\",{\"1\":{\"499\":1}}],[\"aaaaaaaaa\",{\"1\":{\"499\":1}}],[\"aaaaaaaaaa\",{\"1\":{\"311\":1}}],[\"aaaa2222\",{\"1\":{\"499\":1}}],[\"aaaa1111\",{\"1\":{\"499\":2,\"500\":1}}],[\"aaaakeleqvq4ewpk5+rmibcwkasrpg9um4mhnxpgowfgmargewnbiejvaaadbgbnazf+qaaaaabjru5erkjggg==\",{\"1\":{\"153\":1}}],[\"anonymous\",{\"1\":{\"451\":1}}],[\"announcement\",{\"1\":{\"430\":1}}],[\"android\",{\"1\":{\"395\":1,\"405\":1,\"498\":1,\"515\":1,\"524\":1,\"533\":1}}],[\"async\",{\"1\":{\"430\":1}}],[\"astro\",{\"1\":{\"329\":4}}],[\"access\",{\"1\":{\"500\":1}}],[\"account\",{\"1\":{\"389\":1,\"430\":1}}],[\"active\",{\"1\":{\"499\":1}}],[\"actions\",{\"1\":{\"429\":1,\"430\":1,\"519\":1}}],[\"action\",{\"1\":{\"356\":1,\"484\":2,\"546\":2}}],[\"actor\",{\"1\":{\"66\":1,\"67\":1}}],[\"almanac\",{\"1\":{\"329\":1}}],[\"all版本\",{\"1\":{\"521\":1}}],[\"allow\",{\"1\":{\"226\":1,\"499\":1}}],[\"all\",{\"1\":{\"61\":1,\"213\":1,\"238\":1,\"329\":1,\"430\":1,\"563\":1}}],[\"air\",{\"1\":{\"329\":4}}],[\"area\",{\"1\":{\"329\":3}}],[\"array\",{\"1\":{\"276\":1,\"280\":1,\"284\":1,\"402\":1,\"423\":1}}],[\"argb\",{\"1\":{\"256\":1}}],[\"arm64audiolibrary\",{\"1\":{\"3\":1}}],[\"abcdefg\",{\"1\":{\"226\":1}}],[\"at\",{\"0\":{\"562\":1},\"1\":{\"213\":1,\"430\":1,\"465\":1,\"546\":1,\"547\":2,\"551\":2,\"552\":1,\"563\":1}}],[\"adb\",{\"1\":{\"505\":1}}],[\"adcode\",{\"1\":{\"325\":1,\"328\":1,\"329\":2}}],[\"admin\",{\"1\":{\"155\":1,\"230\":1,\"430\":1,\"452\":1,\"471\":1,\"563\":1}}],[\"ad86c100\",{\"1\":{\"120\":1}}],[\"address\",{\"1\":{\"499\":2}}],[\"add\",{\"1\":{\"81\":1,\"85\":1,\"86\":1,\"98\":2,\"102\":2,\"198\":1,\"430\":4,\"452\":1,\"478\":1,\"481\":1,\"491\":1}}],[\"audio\",{\"1\":{\"586\":1}}],[\"audiolibrary\",{\"1\":{\"3\":2}}],[\"autosize\",{\"1\":{\"329\":1}}],[\"auto\",{\"1\":{\"246\":1,\"276\":1,\"280\":1,\"284\":1,\"464\":2,\"465\":1}}],[\"authorization\",{\"1\":{\"500\":2}}],[\"author\",{\"1\":{\"92\":3}}],[\"avatar\",{\"1\":{\"62\":1,\"223\":1,\"243\":1}}],[\"approve\",{\"1\":{\"82\":1,\"86\":1,\"469\":1,\"490\":1,\"492\":1}}],[\"app\",{\"1\":{\"28\":1,\"329\":1}}],[\"api会变慢\",{\"0\":{\"509\":1}}],[\"api端点\",{\"0\":{\"90\":1,\"94\":1,\"98\":1,\"102\":1,\"209\":1,\"213\":1,\"263\":1,\"389\":1}}],[\"api\",{\"0\":{\"8\":1,\"12\":1,\"16\":1,\"21\":1,\"25\":1,\"31\":1,\"35\":1,\"39\":1,\"43\":1,\"47\":1,\"51\":1,\"55\":1,\"59\":1,\"64\":1,\"69\":1,\"72\":1,\"76\":1,\"81\":1,\"85\":1,\"107\":1,\"111\":1,\"115\":1,\"118\":1,\"122\":1,\"125\":1,\"129\":1,\"133\":1,\"139\":1,\"143\":1,\"148\":1,\"152\":1,\"155\":1,\"159\":1,\"162\":1,\"165\":1,\"169\":1,\"173\":1,\"177\":1,\"180\":1,\"183\":1,\"187\":1,\"191\":1,\"197\":1,\"201\":1,\"205\":1,\"217\":1,\"222\":1,\"225\":1,\"228\":1,\"232\":1,\"237\":1,\"241\":1,\"245\":1,\"250\":1,\"254\":1,\"259\":1,\"266\":1,\"270\":1,\"275\":1,\"279\":1,\"283\":1,\"287\":1,\"292\":1,\"296\":1,\"301\":1,\"305\":1,\"309\":1,\"313\":1,\"318\":1,\"323\":1,\"327\":1,\"331\":1,\"335\":1,\"339\":1,\"343\":1,\"347\":1,\"361\":1,\"365\":1,\"369\":1,\"374\":1,\"378\":1,\"381\":1,\"393\":1,\"397\":1,\"401\":1,\"407\":1,\"411\":1,\"414\":1,\"418\":1,\"425\":1,\"429\":1,\"433\":1,\"437\":1,\"441\":1},\"1\":{\"6\":1,\"29\":1,\"33\":1,\"40\":1,\"45\":1,\"48\":1,\"79\":1,\"105\":1,\"116\":1,\"146\":1,\"149\":1,\"160\":1,\"163\":1,\"174\":1,\"178\":1,\"181\":1,\"220\":1,\"261\":1,\"268\":1,\"273\":1,\"284\":1,\"350\":1,\"352\":2,\"353\":2,\"355\":2,\"356\":1,\"357\":2,\"359\":1,\"366\":1,\"379\":1,\"431\":1,\"516\":1}}],[\"agent=your\",{\"1\":{\"403\":1,\"404\":1}}],[\"age\",{\"1\":{\"13\":1,\"290\":1,\"311\":1}}],[\"下的\",{\"1\":{\"3\":1}}],[\"下载链接\",{\"1\":{\"480\":1}}],[\"下载的线程数量\",{\"1\":{\"402\":1}}],[\"下载地址\",{\"1\":{\"402\":1,\"473\":1,\"475\":1}}],[\"下载次数\",{\"1\":{\"136\":1}}],[\"下载\",{\"0\":{\"517\":1},\"1\":{\"3\":1}}],[\"你可以使用\",{\"1\":{\"524\":1}}],[\"你可以自行选择安装\",{\"1\":{\"3\":1}}],[\"你要习以为常这个操作\",{\"1\":{\"508\":1}}],[\"你的不行就不行\",{\"1\":{\"505\":1}}],[\"你得保证你有权限\",{\"1\":{\"258\":1}}],[\"你需要安装\",{\"1\":{\"3\":1}}],[\"sanc\",{\"1\":{\"430\":1}}],[\"scale\",{\"1\":{\"412\":1}}],[\"scard\",{\"1\":{\"395\":1,\"405\":1}}],[\"somebody\",{\"1\":{\"383\":1}}],[\"source\",{\"1\":{\"41\":1,\"459\":1}}],[\"switch\",{\"1\":{\"234\":2,\"389\":1,\"430\":1}}],[\"slow\",{\"1\":{\"234\":40}}],[\"suffix\",{\"1\":{\"484\":1}}],[\"supported\",{\"1\":{\"429\":1,\"430\":1}}],[\"summary\",{\"1\":{\"329\":1}}],[\"sunset\",{\"1\":{\"329\":5}}],[\"sunrise\",{\"1\":{\"329\":5}}],[\"success\",{\"1\":{\"226\":1,\"234\":1}}],[\"subtype\",{\"1\":{\"555\":1}}],[\"sub\",{\"1\":{\"86\":2,\"459\":1,\"469\":1,\"470\":1,\"471\":1,\"475\":1,\"476\":1,\"481\":1,\"483\":1,\"485\":1,\"486\":1,\"487\":1,\"491\":1}}],[\"s=0\",{\"1\":{\"223\":1}}],[\"s\",{\"1\":{\"188\":1,\"553\":1}}],[\"spx\",{\"1\":{\"382\":1}}],[\"speak\",{\"1\":{\"234\":12}}],[\"special\",{\"1\":{\"165\":1,\"166\":1,\"430\":1}}],[\"space\",{\"1\":{\"131\":2}}],[\"sdcard\",{\"1\":{\"153\":1,\"498\":1,\"515\":1}}],[\"storage\",{\"1\":{\"498\":1}}],[\"status\",{\"1\":{\"92\":1,\"96\":1,\"100\":1,\"104\":1,\"120\":1,\"223\":1,\"226\":2,\"230\":1,\"234\":1,\"239\":1,\"243\":1,\"247\":1,\"256\":1,\"311\":1,\"315\":1,\"357\":1,\"409\":1,\"412\":1,\"416\":1,\"430\":3,\"452\":1,\"482\":1}}],[\"start\",{\"1\":{\"91\":1,\"414\":1,\"420\":1}}],[\"strength\",{\"1\":{\"580\":1}}],[\"strong\",{\"1\":{\"61\":1}}],[\"stranger\",{\"1\":{\"31\":1,\"430\":2}}],[\"string\",{\"1\":{\"13\":6,\"19\":1,\"22\":2,\"28\":2,\"41\":2,\"62\":3,\"66\":3,\"67\":4,\"74\":2,\"82\":2,\"86\":3,\"95\":1,\"99\":1,\"103\":1,\"108\":2,\"112\":2,\"116\":1,\"119\":1,\"122\":2,\"126\":1,\"136\":6,\"137\":3,\"140\":1,\"144\":1,\"145\":1,\"149\":1,\"153\":1,\"160\":1,\"163\":1,\"166\":1,\"188\":2,\"194\":1,\"195\":3,\"238\":1,\"246\":1,\"264\":1,\"267\":1,\"271\":1,\"276\":1,\"280\":1,\"284\":2,\"289\":1,\"290\":3,\"297\":1,\"299\":1,\"306\":1,\"310\":1,\"324\":1,\"328\":2,\"333\":1,\"336\":1,\"340\":1,\"344\":1,\"348\":1,\"362\":1,\"363\":2,\"370\":1,\"371\":1,\"372\":1,\"375\":2,\"376\":2,\"382\":2,\"383\":1,\"398\":2,\"399\":1,\"402\":5,\"423\":2,\"447\":1,\"456\":6,\"459\":3,\"464\":1,\"465\":1,\"469\":3,\"470\":3,\"471\":1,\"473\":3,\"475\":4,\"476\":1,\"477\":2,\"480\":2,\"481\":1,\"484\":3,\"486\":1,\"487\":1,\"489\":2,\"490\":1,\"491\":3,\"492\":1,\"499\":1,\"538\":1,\"539\":1,\"542\":1,\"555\":3,\"558\":2,\"560\":1,\"563\":1,\"584\":1,\"586\":6,\"588\":2,\"590\":2,\"592\":5}}],[\"singer\",{\"1\":{\"586\":1}}],[\"sign\",{\"1\":{\"183\":1,\"430\":1}}],[\"size\",{\"1\":{\"91\":1,\"136\":1,\"363\":1,\"398\":1,\"399\":1,\"473\":1,\"475\":1,\"480\":1}}],[\"silk\",{\"0\":{\"3\":1},\"1\":{\"3\":2,\"382\":1}}],[\"sec\",{\"1\":{\"500\":2}}],[\"session\",{\"1\":{\"499\":1}}],[\"sent\",{\"1\":{\"447\":2,\"449\":1}}],[\"send\",{\"1\":{\"183\":1,\"187\":1,\"244\":1,\"245\":1,\"275\":1,\"279\":1,\"280\":1,\"283\":1,\"284\":1,\"313\":1,\"318\":1,\"320\":1,\"356\":1,\"365\":1,\"378\":1,\"430\":13,\"441\":1}}],[\"sender\",{\"0\":{\"290\":1},\"1\":{\"74\":3,\"193\":1,\"289\":1,\"299\":1,\"311\":1,\"333\":1,\"459\":1,\"465\":1,\"474\":1,\"481\":1,\"483\":1}}],[\"self\",{\"1\":{\"430\":1,\"447\":1,\"451\":1}}],[\"sex\",{\"1\":{\"290\":1,\"311\":1}}],[\"search\",{\"1\":{\"226\":1}}],[\"service\",{\"1\":{\"222\":1,\"430\":1}}],[\"seq\",{\"1\":{\"74\":1,\"297\":1,\"302\":1}}],[\"set\",{\"1\":{\"12\":1,\"21\":1,\"81\":1,\"85\":1,\"148\":1,\"152\":1,\"155\":1,\"159\":1,\"162\":1,\"165\":1,\"169\":1,\"173\":1,\"177\":1,\"197\":1,\"201\":1,\"217\":1,\"218\":1,\"263\":1,\"264\":1,\"430\":15,\"471\":1}}],[\"system\",{\"1\":{\"64\":1,\"69\":1,\"129\":1,\"430\":3}}],[\"shut\",{\"1\":{\"425\":1}}],[\"shutup\",{\"1\":{\"226\":1}}],[\"share\",{\"1\":{\"329\":4}}],[\"sha3\",{\"1\":{\"136\":2}}],[\"sha\",{\"1\":{\"136\":2}}],[\"shamrocknative\",{\"1\":{\"520\":1}}],[\"shamrock的日志怎么导出\",{\"0\":{\"515\":1}}],[\"shamrock缓存目录\",{\"1\":{\"402\":1}}],[\"shamrock解码后直接转存为文件\",{\"1\":{\"400\":1}}],[\"shamrock环境\",{\"1\":{\"399\":1}}],[\"shamrock相关\",{\"1\":{\"5\":1}}],[\"shamrock\",{\"0\":{\"387\":1},\"1\":{\"3\":4,\"6\":1,\"29\":1,\"79\":1,\"105\":1,\"146\":1,\"153\":1,\"220\":1,\"273\":1,\"316\":1,\"350\":2,\"351\":4,\"352\":3,\"353\":3,\"355\":1,\"356\":2,\"357\":1,\"358\":1,\"359\":1,\"395\":1,\"397\":1,\"405\":1,\"431\":1,\"447\":1,\"464\":1,\"465\":1,\"466\":1,\"488\":1,\"490\":1,\"492\":1,\"495\":1,\"498\":2,\"499\":1,\"501\":2,\"504\":2,\"506\":3,\"508\":1,\"513\":4,\"514\":1,\"515\":2,\"516\":3,\"517\":1,\"518\":1,\"519\":1,\"520\":4,\"521\":1,\"530\":4,\"532\":5,\"537\":1,\"579\":1}}],[\"show\",{\"1\":{\"16\":1,\"19\":1,\"21\":1,\"430\":3}}]],\"serializationVersion\":2}}")).map(([e,t])=>[e,zt(t,{fields:["h","t","c"],storeFields:["h","t","c"]})]));self.onmessage=({data:{type:e="all",query:t,locale:s,options:n}})=>{e==="suggest"?self.postMessage(st(t,v[s],n)):e==="search"?self.postMessage(et(t,v[s],n)):self.postMessage({suggestions:st(t,v[s],n),results:et(t,v[s],n)})}; +//# sourceMappingURL=index.js.map diff --git a/shamrock.jpg b/shamrock.jpg new file mode 100644 index 00000000..baa74179 Binary files /dev/null and b/shamrock.jpg differ diff --git a/shamrock.webp b/shamrock.webp new file mode 100644 index 00000000..5de8a75f Binary files /dev/null and b/shamrock.webp differ