榴莲自定义功能

来自XJ·Minecraft
Jeff讨论 | 贡献2021年3月6日 (六) 20:46的版本 →‎内置函数

关于

该功能为基于 JavaScript 虚拟执行环境的被动响应式可编程功能,仅在附属群机器人研究室内开启内测。如果您不熟悉编程也没关系,可以来尝试由大家开发的最新小功能,或者对机器人进行简单的“调教”;如果您熟悉 JavaScript,非常欢迎来发散您的创意;如果您有意愿学习 JavaScript 编程语言,那同样欢迎您加入来利用虚拟环境练习、测试、开发属于自己的专属功能。

由于该功能向群内完全开放了自定义能力,因此严禁出现包括但不限于有关政治、色情、暴力、恐怖等敏感话题或违规话题,严禁任何违反 QQ 软件许可及服务协议 8.2 条款的功能开发或调用,如果

  • 您开发违反以上内容的功能,例如从色情网站上搬运照片等,则您会被拉黑,该功能会被直接删除
  • 您利用他人开发的中立性功能有意调用导致出现违反以上内容的情况,例如利用他人开发的维基百科搬运功能搜索政治人物事件等,则您会被拉黑

另外,由于在群内所有群友共享一个 JavaScript 执行上下文,因此请不要恶意攻击虚拟执行环境,不要恶意覆盖、删除他人定义的变量或函数。屡犯不改的群友同样可能会被拉黑。

基本使用方法

本节列举了无需编程知识就可以使用的功能列表,其中一些进阶的说明会用注释罗列到本节的最后。

计算器

此功能可以当作一个简单的计算器来用,支持 +, -, *, /, % (模), ** (幂) 等运算[注释 1]sin, cos, exp, log 等数学函数[注释 2]

发送 回应
1 + 1 2
sqrt(3 ** 2 + 4 ** 2) 5
PI * 10 ** 2 314.1592653589793
(100 + 200 + 300) / 12 50

定义自动回复

此功能可以当作另一个”调教榴莲“的方式使用,并且支持图片和表情。语法为 触发语句='回复语句'触发语句="回复语句"触发语句=`回复语句`,只有最后一种表达式支持多行定义[注释 3],触发语句不能包含标点、空格或其它特殊字符。如果需要删除定义的自动回复,发送 delete 触发语句 即可。

查找功能

如果您想查找别人定义的功能,发送 .find 关键词 可以进行搜索,兼容句号前缀。注意,名称是大小写敏感的,错误的大小写无法得到预期的结果。

查看功能帮助

如果您想查看某个功能的帮助信息,发送 .help 功能名 即可,兼容句号前缀。具体的帮助信息由开发此功能的人员提供。

调用功能

发送 .功能名 可以调用该功能。如果这个功能需要参数,可以用空格分隔功能名称和参数,例如 .功能名 参数1 参数2。兼容句号前缀。

查看源码

如果您好奇别人开发的功能是如何实现的,可以发送 .view 功能名 查看源代码。兼容句号前缀。

  1. 支持的运算符还包括位运算、比较运算、逻辑运算等,请参考表达式和运算符
  2. 为了方便使用数学函数,所有 Math 对象的属性和方法均直接赋给了全局对象。支持的数学常数和函数请参考 Math 对象
  3. 具体来说,这个是定义了一个名为“触发语句”的字符串变量。字符串语法请参考 String

进阶使用方法

内置 API

内置对象

该功能是纯 JavaScript V8 执行环境,因此不像 Node.js 一样包含 require, process 等方法,也不像 Chrome 一样包含 window, document 等对象,只有标准 ECMAScript 6 内置的对象。

  • 值对象:Infinity, NaN, undefined, globalThis
  • 函数属性:eval, isFinite, isNaN, parseFloat, parseInt, decodeURI, decodeURIComponent, encodeURI, encodeURIComponent, escape, unescape
  • 基本对象:Object, Function, Boolean, Symbol
    • 错误对象:Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError
  • 数字和日期对象:Number, BigInt, Math, Date
  • 字符串:String, RegExp
  • 可索引的集合对象:Array, Int8Array, Uint8Array, Int8Array, Uint16Array, Int16Array, Uint32Array, Int32Array, Float32Array, Float64Array, Uint8ClampedArray, BigUint64Array, BigInt64Array
  • 使用键的集合对象:Map, Set, WeakMap, WeakSet
  • 结构化数据:ArrayBuffer, SharedArrayBuffer, Atomics, DataView, JSON
  • 控制抽象对象:Promise
  • 反射:Proxy, Reflect

具体的内置对象使用方法请参考 JavaScript 标准内置对象

内置函数

本节包括针对 QQ 环境注入的函数和方便开发功能注入的函数。这部分内容会随着开发频繁更改。如果您需要什么其它方便的函数请尽管提出。

QQ 相关内置函数
定义 参数类型 返回值类型 备注
qq(qq) (可选) ?string number 返回 QQ 号,默认为发送消息者
messageTime() number 消息的秒级时间戳
groupID() number 消息所在的群号
groupName() string 消息所在的群名称
qqName() string 名称
qqSex() string 性别
qqArea() string 地区
qqAge() number 年龄
qqLevel() number 等级
qqRole() string 群员类型
qqTitle() string 头衔
qqHead(qq) (可选) ?(number | string) string 生成 QQ 头像消息片段(默认发送消息者)
at(qq) number | string string 生成 at 此人的消息片段
img(imgURL) string string 生成图片消息片段
env() object 消息环境变量,一般以上函数足够使用,不需要手动处理环境变量
其它内置函数
定义 参数类型 返回值类型 备注
Buffer 对象 buffer 包提供的类似 Node.js Buffer 对象
seedRandom(seed) any () => number seed-random 包提供的带种伪随机数
parse(html) string object node-html-parser 包提供的 HTML 解析器,风格与 Web API 相近
setTimeout

(callback, ms, ...args)

function, number,

any

number 定时执行函数,延迟不能小于 5000 ms
clearTimeout(timeout) number void 取消定时执行的函数
alert(message) string | number |

boolean | bigint

void 向群里发送消息
get(url) string Promise<string> 向指定 URL 发送 GET 请求,返回 UTF-8 编码的结果

实用的自定义函数

这里列举一些非内置的使用函数,由群友开发,请务必不要随意更改、删除这些函数。

定义 参数类型 返回值类型 备注

注意事项

开发计划