QRSpeed 变量大全安♡玖特别版
作者：[image: https://icean.moe/?req=anavat.png]An!♡[image: https://icean.moe/?req=annieavat.png]阿玖
—————
如何在网页内进行搜索？
智能手机：
一般是 菜单 → 页内查找 或者 菜单 → 工具箱 → 页内查找；
你也可以使用 百度 搜索你所使用的浏览器的页内搜索方法。
Windows：Ctrl + F
macOS：⌘command + F
2021/08/06 新增&修改：更新日志
## 目录
QRSpeed 变量大全安♡玖特别版
	## 目录
	变量
		发言者相关变量
			%QQ%
			%昵称%
			%Title%
		发言内容相关变量
			%群号%
			%GroupName%
			%参数1%
			%参数-1%
			%括号1%
			%AT0%
			%IMG0%
			%FACE0%
			%FACENEW0%
			%FACEPRO0%
			%FACENUM%
			%FACENEWNUM%
			%FACEPRONUM%
		全局变量
			%主人%
			%管理员%
			%Robot%
			%RobotAuth%
			%Time%
			%NDTime%
			%RobotRunTime%
			%随机数x-y%
			%%随机数x-y%%
			%时间%
		「[高级]」中的专用变量 授权专用
			%BUB0%
			%JSON0%
			%XML0%
			%FIMG0%
		其他变量
			%Msgbar%
			%Status%
			%Adminuin%
			%Adminame%
			%Skey%
			%Json%
			%Value%
			%Type%
	函数
		消息内容操作函数
			±at %QQ%±
			±at 0±
			±rep=%Msgbar%±strmsg=%参数-1%±
			±anony 匿名±
			±face 187±
			±facenew 277±
			±facepro 4194325±
		文件操作函数
			$写 教程/%群号%/测试 m 0$
			$读 教程/%群号%/测试 m 0$
			$下载 /QR/路径 链接$
			$下载 /QR/路径 链接 {JSON格式请求头} A$
			$删除 /QR/QRDic/data/……$
		文本处理函数
			$替换 𒑜 文本𒑜原内容𒑜新内容$
			$正则 𒑜 文本𒑜正则内容𒑜新内容$
			$取中间 𒑜 文本𒑜开头𒑜结尾$
		消息发送函数
			$发送$
			$发送 群 msg %群号% -1 内容$
			$发送 临时 msg %群% %QQ% 内容$
			±ptt=音频路径或链接±
			$发送 群 ptt %群号% -1 音频路径或链接$
			card:1 xml卡片代码 授权专用
			$发送 群 xml %群号% %QQ% xml卡片代码$ 授权专用
			$发送 临时 xml %群号% %QQ% xml卡片代码$ 授权专用
			json: JSON卡片代码授权专用
			$发送 群 json %群号% %QQ% json卡片代码$ 授权专用
			$发送 临时 json %群号% %QQ% json卡片代码$ 授权专用
			±img=图片路径或链接或MD5±
			$发送 群 img %群号% 图片路径或链接或MD5$
			$发送 临时 img %群号% %QQ% 图片路径或链接或MD5$ 授权专用
			±ximg=图片路径/链接/md5±
			±fimg=图片路径或链接或MD5±
			$发送 群 fimg %群号% 图片路径或链接或MD5$
			±shake 1±
		QQ/QQ群操作函数
			$点赞 %QQ% 10$
			$禁 %群号% %QQ% 禁言时间$
			$改 %群号% %QQ% 新群昵称$
			$踢 %群号% %QQ%$
			$全体禁言 开 %群号%$
			$全体禁言 关 %群号%$
			$撤回 %群号% %Msgbar%$
			$申请群 申请群号 理由$授权专用
			$退出群 退出群号$授权专用
			$设置群状态 %群号% 开$
			$设置群状态 %群号% 关$
			$获取群状态 %群号%$
			$进群审核 %群号% %QQ% 31 12 拒绝理由$
			$进群审核 %群号% %QQ% 2001 11 0$
		代码相关函数
			$调用 1000 内容$
			$回调 内容$
			$回调内部 内容$
			$执行 %括号1%$
			$变量 A 123456$
			$jump -7$
			:lable
			$jump :lable$
		类变量函数
			$随机数 1-%a%$
			$群昵称 %群号% %QQ%$
			$管理员 %QQ%$
			$图片链接 %IMG0%$
		访问函数
			$访问 file://路径$ 
			$访问 链接$
			$访问 SETGET {JSON格式请求头} 链接$
			$访问 SETGETFT {JSON格式请求头} A 链接$
			$访问 POST 网址 post参数$
			$访问 SETPOST {JSON格式请求头} 链接 post参数$
			$访问 SETPOSTFT {JSON格式请求头} A 链接 post参数$
		运算函数
			$字符长度 %括号1%$
			$URLEncoder %括号1%$
			$URLDecoder %括号1%$
			$HexEncoder %括号1%$
			$HexDecoder %括号1%$
			$时间格式 %NDTime% yyyy-MM-dd HH:mm:ss.SSS E$
			$MD5 内容$
			$GTK %Skey%$
			$BKN %Skey%$
			$SIG 内容$
		JSON 操作函数
			@A[1]
			$JSON 添加 A 1 100$
			$JSON 添加 A 100$
			$JSON 删除 A 1$
			$JSON 长度 A$
			$JSON 获取 A 1$
		外部Java调用
			$BSH xxxx.java %a%$
			$BSH xxxx.java %a% %b%$
	其他代码
	特殊关键词前缀
		特殊事件
			[系统]
			[退群]
			[撤回]xxx 授权专用
			[红包]
			[转账]xxx
			[初始化]
			[上下管理]
		其他前缀
			[内部]xxx
			[高级]xxx 授权专用
	运算符
		数学运算符
			基础运算符
			其他运算符
		逻辑运算符与条件语句
			关系运算符
			逻辑运算符
	其他知识
		正则表达式基础
			简介
			元字符
				匹配某些字符
				数量限制
			正则表达式触发词实例
			转义符 \
			完整的正则表达式教程
		QR 中的 JSON
			关于 JSON
			JSON 操作代码示例
				$JSON 添加 DATAName 1$
				$JSON 添加 DATAName 1 1$
				$JSON 获取 DATAName 1$
				$JSON 删除 DATAName 1$
				$JSON 长度 DATAName$
	QQ 官方 API
			±img=http://q2.qlogo.cn/headimg_dl?dst_uin=%QQ%&spec=5±
			±img=http://p.qlogo.cn/gh/%群号%/%群号%/±
	时间变量详解
			基础时间变量
			进阶时间变量
	未整理&杂项
		闪字
		红包/转账相关
			转账检测
			抢红包
			查红包
		卡片示例
			JSON 卡片
			XML 卡片
	废弃&失效&不明意义部分
			±ximgtype=%随机数40000-40005%±
			%Number%
			%Pid%
			%Reqid%
			%Strmsg%
			±nick 测试昵称±
			±title 测试±
			±bub 1± 授权专用
			%Inviteename%
			发红包
	关于
		关于变量大全编写
			作者
			编辑工具
		关于共享
			许可协议 🄯
			想要制作 变量大全安♡玖特别版 的网页镜像？
			想要以文件形式分享 变量大全安♡玖特别版？
—————
变量
发言者相关变量
—————
%QQ%
获取发言者的 QQ 号。
备选方案：%Code% %Uin%
所有匿名用户的发言，%QQ% 为 80000000。
—————
%昵称%
获取发言者的 群昵称。
备选方案：%UinName%
要获取真正的「昵称」，可以参考 $群昵称 $ 函数。
—————
%Title%
获取群内 专属头衔。
无专属头衔时返回空值。
—————
发言内容相关变量
%群号%
获取本群的 群号。（推荐）
备选方案：%群% %Groupid%
临时会话中，%群号% 为本群群号；
好友会话中，%群号% 为 0。
—————
%GroupName%
获取本群的 群名。
在 [系统] [撤回] 与 [上下管理] 前缀的代码中无法正常获取。
—————
%参数1%
发言中第一个空格以后，第二个空格或结尾以前的内容，以此类推。
自从有了 %括号1% ，谁还用 %参数1% 啊
—————
%参数-1%
获取发言的全部内容。
—————
%括号1%
触发词中，从左到右第对括号中的内容。括号顺序以前半括号 ( 的出现顺序为准。
你可以尝试以下代码。
(测试(测测)和(试试))
%括号1%\n
%括号2%\n
%括号3%
发送 测试测测和试试 以触发。
想要具体了解？请学习 正则表达式-捕获组。
—————
%AT0%
获取被@的第一个成员的 QQ 号。
第二个成员的 QQ 号为 %AT1%，以此类推。
获取不到 %AT0%，%AT1%…时，对应变量值为0；
@全体成员时，%AT0%，%AT1%…均为0。
—————
%IMG0%
获取图片代码，可以在发图时使用。
第二张图片的代码为 %IMG1%，以此类推。
%IMG0% 的核心是一串 32 位的大写字母 + 数字，即图片的 MD5。
手机、电脑；群聊、私聊发图得到的 %IMG0% 有一定差异，只有部分渠道获取的 %IMG0% 无需处理即可插入发图代码。
因此，想提取 MD5 放入发图代码，建议使用以下方法处理 %IMG0%：
更新：现在，你也可以通过 $图片链接 %IMG0%$ 获取图片链接。
图转
$正则 @ %IMG0%@/.*-|[^\dA-Z]@$
将以上代码放入词库，之后发送 图转+图片（不需要「+」号、换行、空格等），即可获取图片 MD5。
（使用了略复杂的正则表达式进行正则替换。萌新无需纠结原理，直接使用即可。）
—————
%FACE0%
获取消息中第一个表情的编号。
第二个表情的编号为 %FACE1%，以此类推。
只能获取较为早期的 QQ 表情，较晚更新的 QQ 表情（如：/元宝 /菜狗 等）无法获取。
%FACENEW0%
同上，但只能获取 %FACE0% 获取不到的、较新的 QQ 表情。
%FACEPRO0%
同上，但只能获取表情页无法找到的、被称为「会员小表情」的 QQ 表情（如：/流星 /猫爪 ）。
—————
%FACENUM%
%FACENEWNUM%
%FACEPRONUM%
获取消息中对应种类表情的总数量。
—————
全局变量
—————
%主人%
获取 QR 词库插件中设置的「主人」QQ 号。
—————
%管理员%
获取 QR 词库插件中设置的「管理员」，返回数组形式。
不建议萌新使用，萌新可以参考 $管理员 $ 函数。
—————
%Robot%
获取当前登录的机器人的 QQ 号。
—————
%RobotAuth%
判断本机器人 QQ 是否在 QR 授权。
%RobotAuth% 为 0，说明未授权；
%RobotAuth% 为 1，说明己授权。
—————
%Time%
获取当前系统 UNIX 时间戳。
本地时间，不联网。修改系统时间会导致 %Time% 变化。
—————
%NDTime%
获取当前系统 毫秒级 时间戳。
—————
%RobotRunTime%
获取QR主程序本次打开时的 毫秒级 时间戳。
可用于计算连续运行时间。
—————
%随机数x-y%
获取 x 至 y 之间（包括 x、y）的一个随机数。其中 x 小于等于 y。
示例：%随机数1-100%
x 和 y 只能为自然数。想要使用变量作为随机数的端点，请参考$随机数 $函数
—————
%%随机数x-y%%
获取随机变量（变量名是 x 至 y 之间的自然数）的内容。
示例：
你好 
0:你好
1:我好
2:早上好
%%随机数0-2%%
%时间%
由于许多 %时间% 变量很少用到且规则复杂，这里只介绍一些简单的时间变量。想具体了解，请点击 时间变量详解 查看。
使用示例：
%时间HHmm%\n
%时间yyyy年MM月dd日 HH:mm:ss%\n
%时间现在时间ahh时mm分ss秒%
你可以将上述代码添加到词库中查看效果。
yyyy 年
MM 月
dd 日
HH 时：24 小时制
hh 时：12 小时制
mm 分
ss 秒
E 星期
a 半日（上午/下午）
%时间% 变量实际上是调用 Java SimpleDateFormat 类，处理当前时间并输出。
由于作者并没有找到足够详尽的 SimpleDateFormat 中文介绍，因此在下方按照自己的理解与实践编纂了详解。
如果你发现了详解中的疏漏，或者可以找到完整的中文介绍，希望可以联系作者修正或补充链接。
—————
「[高级]」中的专用变量 授权专用
%BUB0%
获取发言者 气泡 ID。
—————
%JSON0%
获取 JSON 卡片 代码。代码不存在时为空。
—————
%XML0%
获取 XML 卡片 代码。代码不存在时为空。
—————
%FIMG0%
获取修饰后的闪照的 MD5 码，类似 %IMG0%。
—————
部分用法示例：
[高级][\s\S]*
如果:%JSON0%!=
捕获到JSON卡片：%JSON0%
如果尾
如果:%XML0%!=
捕获到XML卡片：%XML0%
如果尾
如果:%FIMG0%!=
捕获到闪照：%FIMG0%
如果尾
其他变量
—————
%Msgbar%
消息的群内唯一 ID，每群单独计算，每一条消息的 %Msgbar% 是上一条消息的 %Msgbar% + 1
—————
%Status%
消息的状态码。
常用%Status%
%Status%==33 进群
%Status%==34 被邀请的人进群。
%Status%==84 申请进群
%Status%==87 被邀请的人申请进群
%Status%==82 群聊消息
%Status%==166 好友消息
%Status%==141 群临时消息
关于邀请和进群的 %Status% 可能并不准确。
—————
%Adminuin%
进行群管理操作的管理员的 QQ 号。
—————
%Adminame%
进行群管理操作的管理员的群昵称。
—————
%Skey%
获取机器人 Skey。
需要在 QR主程序→插件列表→长按词库插件 弹出的界面勾选 Skey 授权。
—————
%Json%
获取机器人 Pskey，JSON 格式。
需要在 QR主程序→插件列表→长按词库插件 弹出的界面勾选 Pskey 授权。
—————
%Value%
在[上下管理]中使用。
%Value% 为 1 时，%QQ% 被任命群管理员；
%Value% 为 0 时，%QQ% 被取消群管理员。
—————
%Type%
消息类型。
词库中很少用到。
—————
函数
函数中的 %QQ% %群号% 等是作为示例的变量，并非指在参数前后加上%。
如：
☑ $发送 群 msg %群号% -1 你好！$
☑ $发送 群 msg 12345678 -1 你好！$
☒ $发送 群 msg %12345678% -1 你好！$
消息内容操作函数
此处的函数只是对消息内容进行特殊操作，不会增加消息内容。
因此，这些函数需要搭配文字才能成功发送消息并产生效果。
—————
±at %QQ%±
在消息中插入 @ 代码。
关于@：
±at %QQ%±是「@」代码，可以产生「@」效果，即对方会收到「有人@你」黄字通知，但消息中不会显示「@xxxx」文字。
而「@昵称 」只会在消息中显示@文本，而没有通知提示。
因此，QR中正确的「@」方式为：
±at %QQ%±@%昵称%
特别地，macOS 版本的 QQ 可以看到 @ 代码，因此会看到两次 @。此问题暂时无法解决。
另外，消息内容操作函数 部分的其他函数，macOS QQ 也可以看到空消息。
—————
±at 0±
@全体成员，同样不显示「@全体成员」的文字。
—————
±rep=%Msgbar%±strmsg=%参数-1%±
「回复」ID 为 %Msgbar% 的消息。
当前版本的 QR 中无法选定消息进行回复，只能回复触发指令的消息。疑似 bug。
±strmsg=%参数-1%± 中，%参数-1% 处为回复框里面的内容，可以自行修改。
±strmsg=%参数-1%± 非必选，若不写则回复框引用内容为空。
—————
±anony 匿名±
使本条消息匿名发送。
—————
±face 187±
发送编号为 187 的普通（以 %FACE0% 获取）表情。
±facenew 277±
发送编号为 277 的新（以 %FACENEW0% 获取）表情。
±facepro 4194325±
发送编号为 4194325 的会员（以 %FACEPRO0% 获取）小表情。
—————
文件操作函数
—————
$写 教程/%群号%/测试 m 0$
向 /sdcard/QR/QRDic/data/教程/%群号%/测试 中写入 m=0
我们将这里的「m」称为「key」。key 可以为任意数目的任意字符。
一个文件中，可以写入多个 key 不同的数据。
示例：，你可以使用 $写 教程/%群号%/测试 mass 100$ 和 $写 教程/%群号%/测试 火锅 100$ 在文件「测试」中写入两个数据。
之后，你可以使用下方的$读 $函数读取这些数据。
—————
$读 教程/%群号%/测试 m 0$
读取 /sdcard/QR/QRDic/data/教程/%群号%/测试 中 m 对应的值，不存在则返回默认值 0。
你可以修改默认值「0」。
若将代码修改成 $读 教程/%群号%/测试 m 100$ 
则对应值不存在时返回默认值「100」。
—————
$下载 /QR/路径 链接$
将 $访问 链接$ 得到的结果下载到 /sdcard/QR/路径。路径需要精确到文件名。
示例：
$下载 /QR/QRDic/data/百度.html https://www.baidu.com$
$下载 /QR/QRDic/data/backup.txt file:///sdcard//QR/QRDic/dic.txt$
无法自动创建文件夹，需要使用已有文件夹或手动创建路径文件夹才能成功下载文件。
—————
$下载 /QR/路径 链接 {JSON格式请求头} A$
和上一个函数类似。可以自定义请求头。返回头将存储于变量 A。
—————
$删除 /QR/QRDic/data/……$
删除 /sdcard/QR 路径下的任意文件或空文件夹。
不能删除含有文件的文件夹。
若想删除文件夹，可以自行写代码或参考群文件，使用递归删除的方式删除文件夹。
注意！$删除 /QR/QRDic/dic.txt$ 将会直接删除你的词库。
请不要在代码中留下被删除词库的隐患。
—————
文本处理函数
—————
$替换 𒑜 文本𒑜原内容𒑜新内容$
将「文本」中的「原内容」全部替换为「新内容」。
—————
$正则 𒑜 文本𒑜正则内容𒑜新内容$
以正则表达式匹配「文本」中的「正则内容」，并将匹配结果全部全部替换为「新内容」。
注意：$正则 函数中，[0-9] 将不会匹配数字 0 - 9 中的任意一个，而是被当作 计算格式 运算后匹配 -9
—————
$取中间 𒑜 文本𒑜开头𒑜结尾$
—————
消息发送函数
—————
$发送$
将上方运算完的消息直接发送。
示例：
测试发送
123
$发送$
456
—————
$发送 群 msg %群号% -1 内容$
向指定群发送文本，无法带图。
$发送 临时 msg %群% %QQ% 内容$
向指定群的群成员发送文本临时消息。
临时会话权限可能被群主关闭。
—————
±ptt=音频路径或链接±
向当前群发送语音消息。
大于 1MB 的音频文件无法发送。
Arcaea 玩家，把你的 ptt 数据填写到 ±ptt= ± 中是发不出来语音的。
$发送 群 ptt %群号% -1 音频路径或链接$
向指定群发送语音消息。
无法向单独的某人（好友、临时消息）发送语音消息。
—————
card:1 xml卡片代码 授权专用
向当前聊天发送 XML 卡片。
$发送 群 xml %群号% %QQ% xml卡片代码$ 授权专用
向指定群发送 XML 卡片。
$发送 临时 xml %群号% %QQ% xml卡片代码$ 授权专用
向指定群成员发送 XML 卡片。
—————
json: JSON卡片代码授权专用
向当前聊天发送 JSON 卡片。
$发送 群 json %群号% %QQ% json卡片代码$ 授权专用
向指定群发送 JSON 卡片。
$发送 临时 json %群号% %QQ% json卡片代码$ 授权专用
向指定群成员发送 JSON 卡片。
—————
±img=图片路径或链接或MD5±
向当前群发送图片消息。
可以搭配文字。
私聊发图为 授权专用 功能。
$发送 群 img %群号% 图片路径或链接或MD5$
向指定群发送图片消息。
$发送 临时 img %群号% %QQ% 图片路径或链接或MD5$ 授权专用
向指定群的群成员发送图片临时消息。
—————
±ximg=图片路径/链接/md5±
向当前群发送秀图。
[//]:(±ximgtype=%随机数40000-40005%± 指随机六种秀图中的一种。
当然，你也可以指定某一种秀图，如 ±ximgtype=40002± 或 ±ximgtype=%括号1%±
±ximgtype= ± 非必选，不选时默认 40001 普通秀图。)
—————
±fimg=图片路径或链接或MD5±
向当前群发送闪照。
$发送 群 fimg %群号% 图片路径或链接或MD5$
向指定群发送闪照。
—————
±shake 1±
发送窗口抖动。
—————
QQ/QQ群操作函数
—————
$点赞 %QQ% 10$
点赞 %QQ% 10 次。只能给机器人的好友点赞。
当然，如果你的机器人拥有 SVIP，你可以将 10 改为 20。
—————
$禁 %群号% %QQ% 禁言时间$
禁言群成员。机器人需有 QQ 群管理员权限。
禁言时间以「秒」为单位。
禁言时间为 0 时，表示解除禁言。
—————
$改 %群号% %QQ% 新群昵称$
修改群成员的群昵称。修改他人群昵称时，机器人需有 QQ 群管理员权限。
即使没有管理员权限，机器人也可以修改自己的群昵称。
—————
$踢 %群号% %QQ%$
移除群成员。机器人需有 QQ 群管理员权限。
—————
$全体禁言 开 %群号%$
开启指定群的全员禁言。
$全体禁言 关 %群号%$
关闭指定群的全员禁言。
—————
$撤回 %群号% %Msgbar%$
撤回 ID 为 %Msgbar% 的消息。
—————
$申请群 申请群号 理由$授权专用
申请加入群。
由于 腾讯风控 的原因，机器人发出的入群申请可能被 屏蔽 或 过滤。
—————
$退出群 退出群号$授权专用
退出群。
—————
$设置群状态 %群号% 开$
$设置群状态 %群号% 关$
设置 QR 主程序中的开关。
这样一来，你无法在当前群触发任何消息。因此，你将难以在当前群内重新打开此开关。
$获取群状态 %群号%$
获取 %群号% 在 QR 主程序中的开关状态，返回 开 或 关。
—————
$进群审核 %群号% %QQ% 31 12 拒绝理由$
拒绝 %QQ% 入群。
很可能仅在 [系统] 前缀的触发词代码中有效。
$进群审核 %群号% %QQ% 2001 11 0$
同意 %QQ% 入群。
很可能仅在 [系统] 前缀的触发词代码中有效。
—————
代码相关函数
$调用 1000 内容$
延迟 1000 毫秒后，触发关键词「内容」
示例：
说话
$调用 1000 说你好$
$调用 2000 说再见$
$调用 3000 说走开走开$
[内部]说(.*)
%括号1%
1 秒 = 1000 毫秒
—————
$回调 内容$
触发关键词「内容」，并将执行结果返回到 $回调 内容$ 处。
示例：
说话
a:$回调 说你好$
我说了个「%a%」\n
我又说了个「$回调 说再见$」\n
$回调 说走开走开$
[内部]说(.*)
%括号1%
—————
$回调内部 内容$
在触发词中使用的回调。
会一定程度上影响运行速度。
—————
$执行 %括号1%$
将一段文字作为 QRSpeed 词库代码执行。
无法执行多行语句；无法执行条件语句。
你可以自行编写代码，以循环的方式执行多行语句中的每一行。但是仍然不能执行条件语句。
建议不要在私聊中执行，否则可能会出现 bug。
如果你需要用到它，记得加上权限或防范措施，以免被恶意执行（如被删除词库）。
—————
$变量 A 123456$
将变量A赋值为123456，支持多字变量。
示例：
$变量 金币 10000$
你现在有%金币%枚金币。
—————
$jump -7$
当前版本中，你可以使用 跳 代替 jump，就像这样：$跳 -7$
代码跳行。
以下一行为基准（即 $jump 0$ 相当于不跳行），向上跳行为负数，向下为正数。
无法跳行到第一行；无法跳行到其他代码块；注释不算行数。
示例：
循环示例
a:0
a:[%a%+1]
如果:%a%!=11
%a%\n
$jump -4$
:lable
$jump :lable$
:lable 指定一个跳行标签。你可以使用 $jump :lable$ 跳行到对应标签处。
你可以指定多个标签，且lable可以改为其他字符串。
示例：
循环示例
1$jump :lable3$
2
:lable1
3$jump :lable2$
:lable3
4$jump :lable1$
:lable2
5
看晕了对吗？请尽量不要在一段代码中使用过多跳行，除非你确认以后不会再更改它。
—————
类变量函数
$随机数 1-%a%$
可以用变量指定随机数范围的随机数。
示例：
a:100
b:999
$随机数 %a%-%b%$
注意：与 %随机数x-y% 变量不同，此函数「随机数」三个字后留有一个空格
—————
$群昵称 %群号% %QQ%$
获取%QQ%在%群号%的群名片。
当然，%QQ% 和 %群号% 可以换成任意 QQ 号或群号。
当机器人或 %QQ% 不在所查询群时，返回 %QQ% 的真实昵称。
因此，可以使用 $群昵称 0 %QQ%$ 获取某人真实昵称。
—————
$管理员 %QQ%$
检测 %QQ% 是否为词库插件中设置的管理员
若是，返回 %QQ%；否则，返回 0。
示例：
如果:$管理员 %QQ%$==%QQ%
是管理员
—————
$图片链接 %IMG0%$
将代码为 %IMG0% 的图片上传到 QR 服务器并获取链接。
—————
访问函数
访问结果以 UTF-8 编码。如果不懂，可以忽略这句话。
—————
$访问 file://路径$ 
访问本机文件，获取文件内容。
—————
$访问 链接$
向链接发送 GET 请求，可以理解为普通的访问链接。
—————
以下的访问方法，如果看不懂可以忽略。
—————
$访问 SETGET {JSON格式请求头} 链接$
向链接发送自定义请求头的 GET 请求。
—————
$访问 SETGETFT {JSON格式请求头} A 链接$
向链接发送自定义请求头的 GET 请求，并将返回头赋值给变量 A。
—————
$访问 POST 网址 post参数$
向链接发送 POST 请求。
—————
$访问 SETPOST {JSON格式请求头} 链接 post参数$
向链接发送自定义请求头的 POST 请求。
—————
$访问 SETPOSTFT {JSON格式请求头} A 链接 post参数$
向链接发送自定义请求头的 POST 请求，并将返回头赋值给变量 A。
—————
运算函数
—————
$字符长度 %括号1%$
获取文本中的字符长度。
以 UTF-16 BE 编码后的长度。因此，少部分生僻字、特殊符号可能会判断为 2 个字符。
—————
$URLEncoder %括号1%$
URL 编码：将文本使用 UTF-8 百分号编码方式进行转码。
QR 的 URL 编码中，除了数字 0-9、大小写形式的 26 字母 a-z A-Z、句点 .、减号/连字符 - 以及下划线 _ 之外，其他符号都会被编码。
$URLDecoder %括号1%$
URL 解码：将 UTF-8 百分号编码转换为文本。
—————
$HexEncoder %括号1%$
Hex 编码：将文本使用 UTF-8 十六进制编码方式进行转码。
实际上就是将 所有 字符 URL 编码之后去掉百分号
$HexDecoder %括号1%$
Hex 解码：将 UTF-8 十六进制编码转换为文本。
—————
$时间格式 %NDTime% yyyy-MM-dd HH:mm:ss.SSS E$
将毫秒级时间戳 %NDTime% 转换为一般时间格式。时间格式的定义请参考 时间变量。
—————
$MD5 内容$
取一段文字的 MD5。
可以用来校验文件是否被更改。
—————
$GTK %Skey%$
$BKN %Skey%$
这两个函数完全相同，将 %Skey% 转换为 bkn/gtk。
—————
$SIG 内容$
固定的数字签名算法。
—————
JSON 操作函数
注意，QR中所有JSON操作中都直接使用变量名，如「A」而不是「%A%」。
—————
@A[1]
•	获取 JSON 数组 A 中索引 1 对应的值;
•	获取 JSON 对象 A 中，键 "1" 对应的值。
—————
$JSON 添加 A 1 100$
•	将 JSON 数组 A 中索引 1 对应的值修改为字符串 "100" ，如果前方有索引没有对应值，将会补充空值 null ；
•	将 JSON 对象 A 中键 "1" 对应的值修改为字符串 "100" ，如果不存在键 "1" ，则创建一个新的键值对 "1":"100" 。
—————
$JSON 添加 A 100$
•	在 JSON 数组 A 的末尾添加字符串 "100" 。
—————
$JSON 删除 A 1$
•	删除 JSON 数组 A 中索引为 1 的值；
•	删除 JSON 对象 A 中键为 "1" 的键值对。
—————
$JSON 长度 A$
•	获取 JSON 数组 A 中元素的数量。
•	获取 JSON 对象 A 中元素的数量。
—————
$JSON 获取 A 1$
建议在 @A[1] 函数无法成功获取时使用
•	获取 JSON 数组 A 中索引为 1 的值；
•	获取 JSON 对象 A 中键 "1" 对应的值。
—————
外部Java调用
—————
$BSH xxxx.java %a%$
调用 /sdcard/QR/QRDic/BSH/xxxx.java中的函数「%a%」。
—————
$BSH xxxx.java %a% %b%$
调用 /sdcard/QR/QRDic/BSH/xxxx.java中的函数「%a%」，参数为「%b%」。
—————
其他代码
\r \n \r\n 换行符
\%0A 换行符
\%25 百分号
\%20 空格
「\%xx」为 UTF-8 百分号编码的字符。
—————
特殊关键词前缀
注:
[xx]xxx
表示前缀后需要加触发词;
[xx]
表示单独使用前缀即可.
—————
特殊事件
—————
[系统]
进群等系统通知触发。
—————
[退群]
成员退群触发。
—————
[撤回]xxx 授权专用
有人（包括机器人自己）撤回消息时触发。
[红包]
有人发送红包时触发。
QR 甚至可以撤回红包。（不过好像还是可以在群未领红包里领到？）
—————
[转账]xxx
有人向机器人转账时触发。
—————
[初始化]
QRSpeed词库插件每次开始运行（重启、重连）时触发一次。
因为不是在特定群执行，所以许多函数、变量无法使用。
—————
[上下管理]
检测QQ群管理变动。
示例:
[上下管理]
如果:%Value%==1
%昵称% 成为了管理员。
返回
如果尾
如果:%Value%==0
%昵称% 不再是管理员了。
—————
其他前缀
[内部]xxx
只能通过调用/回调触发，不会被 QQ 消息触发。
—————
[高级]xxx 授权专用
能使用部分特殊变量。
—————
运算符
数学运算符
可以进行混合运算，小数结果四舍五入取整数
示例：
[1+2]
[3-2]
[2*(2+3)/2]
基础运算符
+ 加法
- 减法
* 乘法
/ 除法
其他运算符
取模 约等于取余数，其他三个运算符很少会用到。
如果想了& |与 ^ 的运算方式，请 百度搜索位运算
请注意，此处 & | 与逻辑运算符中的& | 意义并不完全相同。
& 按位与
| 按位或
^ 按位异或
% 取模
取模运算符后不能接变量。
☒错误示例：[62%%a%]
—————
逻辑运算符与条件语句
关系运算符
< 小于
> 大于
<= 小于等于
>= 大于等于
== 等于
!= 不等于
逻辑运算符
| 逻辑或
& 逻辑与
QR 中，逻辑运算从左到右依次运行，不支持括号。
因此
%a%==1&%b%==2|%c%==3&%d%==4
运算顺序为
((%a%==1&%b%==2)|%c%==3)&%d%==4
不知道什么是逻辑运算?请查阅高中数学课本或 百度一下。
—————
其他知识
正则表达式基础
简介
QR 中的触发词使用正则表达式进行匹配。即使你不知道什么是正则表达式，你也很可能在 QR 中使用过它。
如：.*早上好.* 我想.*
你可能已经知道，.* 指代 任意数量的任意字符 ① 。实际上，它就是简单的正则表达式。
① 严格来说并非如此。我们将在下面学到，.* 并不能匹配换行符 \n。
在正则表达式中，具有特殊意义的字符被称为「元字符」。接下来将简单介绍常用的元字符的用法。
元字符
匹配某些字符
\w 匹配 文字、数字、下划线。
\W 匹配 \w 不能匹配的字符。
\d 匹配 数字。
\D 匹配 \d 不能匹配的字符。
\s 匹配 空白字符（包括空格、换行等）。
\S 你猜得没错，匹配 \s 不能匹配的字符。
\n 匹配 换行符。
\r 匹配 回车符。
QQ 中，手机发送的换行为换行符 \n ，而电脑发送的换行为回车符 \r。
因此，防止电脑端无法触发指令，我们更建议使用 [\n\r] 来匹配换行。
[] 根据方括号的内容匹配 部分字符。
如：
[abcde] 匹配 a b c d e中的任意一个字符。它可以匹配 a b c d 或 e，而不能匹配 f abc。
[^xyz] 匹配除 x y z 之外的任意一个字符。它可以匹配 a 3 / 之 或 こ 等，而不能匹配 x abc。

. 匹配除换行符 \n 外的 任意字符。
. 与数量限制元字符 * 组合成 .* 或许可以称为「通配符」，它可以匹配任意不带换行的文本
但是，更加通配的明显是 [\s\S]* [\d\D]* 或 [\w\W]* 等，它们可以匹配任意文本。
当单独出现的「通配符」如 .* [\s\S]* 等作为触发词时，该触发词下方的触发词几乎都不会被触发。
因此，词库中最好只出现至多一次的「通配符」且仅将它放在词库的最下方。
数量限制
{4} 限制前方元素出现 4 次。如：\d{4} 匹配 4 个数字；(abc){2} 匹配 abcabc。
{1,4} 限制出现 1-4 次。如：\d{1,4} 匹配 1-4 个数字；[abc]{2} 匹配 aa bb ac bc 等。
{4,} 限制出现 4 次或更多次。如：\d{4,} 四位及以上数字；(苹果|apple){2,} 匹配 apple苹果 appleapple苹果 苹果apple苹果苹果apple 等。
? 限制出现 0 次或 1 次。相当于 {0,1}
+ 限制出现 1 次或更多次。相当于 {1,}
* 限制出现 0 次或更多次。相当于 {0,}
正则表达式触发词实例
你可以尝试以下代码：
(无路赛){2,}
测试成功了，你个傲娇。
(\w)\n是\n笨\n蛋
如果:%括号1%==你
虽然很不情愿，但是
如果尾
测试成功了。
([你我他]不?)是笨蛋\W*
如果:%括号1%==你不|%括号1%==我|%括号1%==他
那当然！
返回
如果尾
这怎么可能呢？
戳了你(\d+)次(\W*)
捶了你%括号1%天%括号2%
点歌\s*(.+)
你点了一首「%括号1%」
转义符 \
转义符本应放在 元字符 中介绍的。但是为了不打断学习的连续性，我们把转义符从 元字符 中独立了出来。
我们先来看一个例子：
一只小可爱 A 想写一个骰子。他选择了 .r 来作为掷骰子的触发词。
测试之后，他发现骰子没有问题，便在群内开放使用了。
第二天，大家在群里聊天：
B：「A 劳斯您好，您家崽人设是您自己画的对叭？！太神仙了呜呜呜，请问您接单吗？」
A：「接。」
B：「多少钱呀？」
A：「1r」
机器人：「@A 1d100 = 32」
A：？
内容完全虚构，若有雷同，纯属我太聪明了wwwwwww
在正则表达式中， . 表示的是一个任意非换行字符。因此，1r 可以被 .r 匹配，触发了指令。
一些字符（如 . ( + 等）由于成为了 元字符 而被赋予了特殊含义，从而不再代表这些字符本身。
那么如何匹配这些字符本身呢？答案很简单，我们需要在元字符前加上 转义符 \ 来表示它本身。
在这个例子中，如果将词库中的触发词改为 \.r，就只有 .r 才可以触发骰子了。
完整的正则表达式教程
点我查看
—————
QR 中的 JSON
关于 JSON
https://baike.baidu.com/item/JSON/2462549
 JSON 在线解析格式化工具：https://m.sojson.com/
当你拿到一串 JSON 代码时，它一般是没有换行与空格的一个字符串，给人的直观感受就是「乱糟糟的一团」。
这时，你可以使用 JSON 格式化工具将其格式化，以直观地看到 JSON 的层次结构。
同时，你也可以用 JSON 格式化工具来检查自己的长串 JSON 是否包含语法错误。
—————
JSON 操作代码示例
$JSON 添加 DATAName 1$
JSON添加1
A:[1,2,3]
$JSON 添加 A 9$
%A%
—————
$JSON 添加 DATAName 1 1$
JSON添加2
A:[1,2,3]
B:{"玖":"1","安":"an"}
$JSON 添加 A 1 a$
$JSON 添加 B 玖 9$
$JSON 添加 B 玖玖 安安$
A：%A%\n
B：%B%
—————
$JSON 获取 DATAName 1$
JSON获取
A:[1,"8",3]
B:{"玖":"9","安":"an","玖玖":"安安"}
$JSON 获取 A 1$\n
$JSON 获取 B 玖$
—————
$JSON 删除 DATAName 1$
JSON删除
A:[1,"8",3]
B:{"玖":"9","安":"an","玖玖":"安安","an":"annie"}
$JSON 删除 A 1$
$JSON 删除 B an$
A：%A%\n
B：%B%
—————
$JSON 长度 DATAName$
JSON长度
A:[1,"8",3]
B:{"玖":"9","安":"an","玖玖":"安安","an":"annie"}
$JSON 长度 A$\n
$JSON 长度 B$
—————
QQ 官方 API
—————
±img=http://q2.qlogo.cn/headimg_dl?dst_uin=%QQ%&spec=5±
获取发言人头像
—————
±img=http://p.qlogo.cn/gh/%群号%/%群号%/±
获取群头像
—————
时间变量详解
从 %时间% 过来却看晕了？点我返回 %时间% 变量。（劝退?）
%时间% 变量里有很多保留字符。使用 %时间% 变量时，保留字符会被替换为对应值，而其他字符保持不变。
这样说可能有些抽象，这里先放示例。
你可以通过尝试下方的代码，了解 %时间% 变量的用法。
时间变量测试
%时间HHmm%\n
%时间yyyy年MM月dd日 HH:mm:ss%\n
%时间现在时间ah时m分s秒%
接下来将具体说明 %时间% 变量中的的保留字符。
如果 %时间% 变量中带有保留字符之外的 英文字母（如：%时间AAHHmmss%），会报错并使整段代码不可用。
在这种情况下，你可以使用单引号 ' 包裹住不想被转换为时间的部分，以期其不会被格式化解释；而连续的两个单引号 '' 则会被转换为一个单引号 '。这种方法也适用于保留字符。（如：%时间'AA'HH''mm'ss'%）
基础时间变量
参考 %时间% 变量。（二次劝退?）
进阶时间变量
部分时间变量存在 补 0 规则。
你可以通过以下示例来了解补 0 规则：
%时间y% %时间yyy% %时间yyyy% 值为 2021
%时间yyyyy% 值为 02021
%时间yyyyyy% 值为 002021
除了少部分特殊字符组，大部分结果为 纯数字 的时间变量均具有 补 0 规则 。
为方便学习，具有 补 0 规则 的时间变量，将在「结果示例」中标注补0。
未标注 补0 的变量，无论重复多少次字母均不会使结果变化
如：%时间EEEE% %时间EEEEE% 甚至 %时间EEEEEEEEEEEEEEEE% 结果均为 星期五。
以下所有 结果示例 使用的示例时间为：
2021 年 2 月 19 日 18:03:25.876 GMT+8:00
G 历法
yy 年
结果示例：21
y 年
结果示例：2021 补0
M L 月
结果示例：2 补0
d 日 补0
H 小时：24 小时制（午夜为 0 点，没有 24 点）
结果示例：18 补0
k 小时：24 小时制（午夜为 24 点，没有 0 点）
结果示例：18 补0
h 小时：12小时制（午夜为 0 点，正午为 12 点）
结果示例：6 补0
K 小时：12小时制（午夜为 12 点，正午为 0 点）
结果示例：6 补0
m 分
结果示例：3 补0
s 秒
结果示例：25 补0
a 上午/下午
结果示例：下午
cccc EEEE 星期
结果示例：星期五
c E 星期
结果示例：周五
u 星期
结果示例：5 补0
D 今年第x天
结果示例：50 补0
w 今年第x个星期 日/一/二 …
结果示例：8 补0
W 本月第x个星期 日/一/二 …
结果示例：3 补0
F 本月的第x个七天
结果示例：3 补0
G 历法
结果示例：公元
S 十分之一秒
结果示例：8
SS 百分之一秒
结果示例：87
SSS 千分之一秒（毫秒）
结果示例：876 补0
z Z X 系列：当前时区
z 结果示例：+0800
zz zzz 结果示例：GMT+08:00
zzzz 更多z 结果示例：中国标准时间
Z ZZ ZZZ 结果示例：+0800
ZZZZ 结果示例：GMT+08:00
更多Z 结果示例：+08:00
X 结果示例：+08 
XX 结果示例：+0800 
XXX 结果示例：+08:00
XXXX 更多X 会！报！错！
z、Z 和 X 似乎是 一般时区、RFC 822 时区 和 ISO 8601 时区 的区别。
其中「一般时区」原文为「General time zone」，翻译可能有误。
虽然我也不知道他们之间有什么区别，但我先把它写在这。
—————
未整理&杂项
闪字
(乱舞|多变|嗨爆|输入|放大)闪字 ?(.+)
a:{"E4B9B1E8889E":"2000","E5A49AE58F98":"2001","E597A8E78886":"2002","E8BE93E585A5":"2003","E694BEE5A4A7":"2004"}
T:{"a":"com.tencent.randomwords","desc":"500","resid":@a[$HexEncoder %括号1%$],"m":"main","v":"1.0.0.16","prompt":"闪字"}
±fmsg %T%±
±%括号2%±
—————
红包/转账相关
转账检测
[转账]([\S\s]+)
如果:%Tfuin%!=
%Tfuin%\n
%Tfurl%\n
%Tftip%\n
%Tftitle%\n
%Tftext%\n
%TfAmounts%\n
如果尾
—————
抢红包
$抢红包 %Groupid% %Skey% %Authkey% %Listid% %Number% Data$
—————
查红包
$查红包 %群% %Skey% %Authkey% %Listid% A$
%A%
—————
卡片示例
JSON 卡片
json: {"app":"com.tencent.miniapp","view":"notification","meta":{"notification":{"appInfo":{"appName":"优质解答","iconUrl":"http://8.131.89.211/s/0.png"},"button":[{"name":"一种植物"}]}}}
—————
XML 卡片
card:1 <?xml version='1.0' encoding='UTF-8' standalone='yes' ?><msg servicetemplateaction="viewMultiMsg" brief="[聊天记录]" m_resm_fileName="6931536343294312393" tSum="1" sourceMsgurl="" flag="3" adverSign="0" multiMsgFlag="0"><item layout="1" advertiser_amaxLines="2" lineSpace="12">群聊的聊天记录</title><title size="26" color="#777777" maxLines="2" lineSpace="12">An!:  这是一张卡片</title><hr hidden="false" style="0" /><summary size="26" color="#777777">查看1条转发消息</summary></item><source name="聊天记录" icon="" action="" app/></msg>

—————
废弃&失效&不明意义部分
±ximgtype=%随机数40000-40005%±
定义秀图类型；已失效
%Number%
目前已知在红包消息中为 1，其他消息中为 0。官方解释是红包金额，可能已废弃。
%Pid%
未知
%Reqid%
未知
%Strmsg%
废弃
±nick 测试昵称±
废弃
±title 测试±
自定义头衔为「测试」，仅作用于当前一条消息。
失效。
与群主设置的专属头衔不同，QR 设置的头衔可以超过 6 字限制。
—————
±bub 1± 授权专用
使用气泡 ID 为 1 的气泡发言。
失效。
不受 VIP 限制；仅作用于当前一条消息，后续消息仍为原气泡。
—————
%Inviteename%
字面意思是被邀请人的昵称，但是完全没有反应
—————
发红包
##指定专属红包 8不指定 32口令红包 1024指定 65536语音红包
A:1024
##红包类型 1普通红包 2拼手气红包
B:2
##发送类型 1好友 3群 4非好友
C:3
##红包金额 分为单位
D:%随机数5-10%
##红包数量
E:1
##接收红包 群号或好友QQ号
F:%群号%
##红包标题 或 口令
G:我是红包
##指定发红包用|分割
H:%Code%
$红包 %A% %B% %C% %D% %E% %F% %G% %H%$
示例:
我要红包
$红包 1024 1 3 1 1 %群号% 你的红包 %QQ%$
—————
关于
关于变量大全编写
作者
•	An! 
•	阿玖
编辑工具
Typora
—————
关于共享
许可协议 🄯
本作品采用 知识共享 署名-相同方式共享 4.0 国际许可协议 进行许可。
如果你认为本文有不妥之处，可以对下载后的文件进行适当修改。修改后的文章仍应以 此许可协议 发布。
感谢你对知识共享的支持与对 QR 新人的帮助。
想要制作 变量大全安♡玖特别版 的网页镜像？
你可以 点此下载 HTML 文件，并在稍后上传到你的服务器。
如果想用其他 Markdown 编辑器重新渲染网页，你也可以 点此下载 Markdown 文件。
想要以文件形式分享 变量大全安♡玖特别版？
你可以选择下载以下一个或多个文档并上传到任何平台：
PDF 文档（推荐） HTML 文档（推荐） Word 文档 Epub 文档 RTF 文档
HTML 以外格式的文档不保证最新版本；其中 PDF 格式的文档较常更新，但仍可能会落后于最新版本1-2次修改。
—————