Skip to Content
Yogurt 文档自定义 JavaScript

自定义 JavaScript

Yogurt 内置了 QuickJS 引擎 ,提供了实验性的加载自定义 JavaScript 的能力,允许用户在不对接 Milky API 的情况下实现有限的自动化操作。

Warning

Yogurt 的脚本执行环境与浏览器或 Node.js 等常见的 JavaScript 运行环境不同,无法直接使用 DOM API 或 Node.js API,只能使用以下列出的全局对象和函数。目前没有支持使用第三方库、插件协作、热重载等功能的计划。对于较复杂的需求,建议使用 NoneBot2、Koishi 等成熟的机器人框架来实现。

编写脚本

Yogurt 脚本是一个后缀为 .yogurtx.js 的 JavaScript 文件,放置在 Yogurt 的 scripts 目录下。Yogurt 在登录完成后会自动加载该目录下的所有脚本文件。可以使用任何文本编辑器编写脚本。

Yogurt 提供了一个名为 @acidify/yogurt-script-api 的 NPM 包,包含了 Yogurt 脚本可用的全局对象和函数的类型定义文件。可以将该包以 devDependencies 的形式安装到本地项目中,并且在脚本的开头引入:

import {} from '@acidify/yogurt-script-api';

即可在支持 TypeScript 的编辑器中获得代码补全和类型检查的功能。

一个使用 TypeScript 开发、tsdown  打包的 Yogurt 脚本示例可以参考 script-sample 

调用 Milky API

Yogurt 在脚本环境中提供了一个名为 yogurt 的全局对象,可以通过此对象调用 Milky API 和监听 Milky 事件,例如:

await yogurt.api.send_group_message({ group_id: 123456789, message: [ { type: 'text', data: { text: 'Hello, world!', }, }, ], }); yogurt.event.on('message_receive', (event) => { console.log('Received message:', JSON.stringify(event)); });

标准库

为方便开发,Yogurt 通过全局对象提供了有限的标准库支持,目前包括:

  • console - 与 DOM API 类似的日志输出功能
  • http - 基础的网络请求功能

具体的 API 定义可以参考 DTS 文件 

最后更新于