Skip to content
This repository was archived by the owner on Oct 20, 2023. It is now read-only.

Commit d0a1ae9

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents b5c9415 + a93075c commit d0a1ae9

File tree

1 file changed

+112
-2
lines changed

1 file changed

+112
-2
lines changed

README.md

Lines changed: 112 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636

3737
# 安装脚本
3838

39-
目前MiraiAndroid已支持lua脚本,感谢[lua-mirai](https://github.com/only52607/lua-mirai)项目
39+
目前MiraiAndroid已支持lua和JavaScript脚本,感谢[lua-mirai](https://github.com/only52607/lua-mirai)[mirai-js](https://github.com/iTXTech/mirai-js)项目
40+
41+
## lua脚本
4042

4143
以下是一个简单的示例
4244

@@ -52,7 +54,113 @@ end
5254

5355
这个脚本实现了最简单的"复读机"功能,更多API请看[lua-mirai android api](https://github.com/only52607/lua-mirai/blob/master/docs/miraiandroid.md)
5456

55-
你可以在脚本管理界面点击右上角直接添加脚本到MiraiAndroid
57+
## JavaScript脚本
58+
59+
以下是一个~~简单~~复杂的示例
60+
61+
```JavaScript
62+
// 插件信息
63+
pluginInfo = {
64+
name: "JsPluginExample",
65+
version: "1.0.0",
66+
author: "PeratX",
67+
website: "https://github.com/iTXTech/mirai-js/blob/master/examples/reply.js"
68+
};
69+
70+
let verbose = true;
71+
72+
// onLoad 事件
73+
plugin.ev.onLoad = () => {
74+
logger.info("插件已加载:" + plugin.dataDir);
75+
76+
// 插件数据读写
77+
let file = plugin.getDataFile("test.txt")
78+
// 第三个编码参数默认为 UTF-8,可空,同readText第二个参数
79+
stor.writeText(file, "真的很强。", Charset.forName("GBK"));
80+
logger.info("读取文件:" + file + " 内容:" + stor.readText(file, Charset.forName("GBK")));
81+
82+
let config = new JsonConfig(plugin.getDataFile("test.json"));
83+
config.put("wow", "Hello World!");
84+
config.save();
85+
86+
let v = 0;
87+
// 启动协程
88+
core.launch(() => {
89+
v++;
90+
logger.info("正在等待:" + v);
91+
if (verbose) {
92+
// 100ms执行一次
93+
return 100;
94+
}
95+
// 停止协程,返回 -1
96+
return -1;
97+
});
98+
// 延时1000ms执行一次
99+
core.launch(() => {
100+
verbose = false
101+
return -1;
102+
}, 1000);
103+
// 命令名称,描述,帮助,别名,回调
104+
core.registerCommand("test", "测试命令", "test", null, (sender, args) => {
105+
logger.info("发送者:" + sender)
106+
logger.info("参数:" + args)
107+
return true
108+
});
109+
};
110+
111+
plugin.ev.onEnable = () => {
112+
logger.info("插件已启用。" + (plugin.enabled ? "是真的" : "是假的"));
113+
try {
114+
// Http 基于 OkHttp,可使用 OkHttp 的 API 自行构造
115+
let result = http.get("https://github.com/mamoe/mirai");
116+
if (result.isSuccessful()) {
117+
logger.info("Mirai GitHub主页长度:" + result.body().string().length());
118+
} else {
119+
logger.error("无法访问Mirai GitHub主页");
120+
}
121+
// 手动调用 OkHttp
122+
let client = http.newClient()
123+
.connectTimeout(5000, TimeUnit.MILLISECONDS)
124+
.readTimeout(5000, TimeUnit.MILLISECONDS)
125+
.build()
126+
let response = client.newCall(
127+
http.newRequest()
128+
.url("https://im.qq.com")
129+
.header("User-Agent", "NMSL Browser 1.0")
130+
.build()
131+
).execute();
132+
if (response.isSuccessful()) {
133+
logger.info("QQ主页长度:" + response.body().string().length());
134+
} else {
135+
logger.error("无法访问QQ主页");
136+
}
137+
} catch (e) {
138+
logger.error("无法获取网页", e)
139+
}
140+
regEv();
141+
};
142+
143+
plugin.ev.onDisable = () => {
144+
logger.info("插件已禁用。");
145+
};
146+
147+
plugin.ev.onUnload = () => {
148+
logger.info("插件已卸载。");
149+
};
150+
151+
function regEv() {
152+
core.subscribeAlways(BotOnlineEvent, ev => {
153+
logger.info(ev);
154+
});
155+
core.subscribeAlways(GroupMessageEvent, ev => {
156+
logger.info(ev);
157+
ev.group.sendMessage(new PlainText("MiraiJs 收到消息:").plus(ev.message));
158+
})
159+
}
160+
```
161+
你可以在[这里](https://github.com/iTXTech/mirai-js/blob/master/examples/reply.js)找到它,更多内容请查看项目介绍
162+
163+
在脚本管理界面点击右上角`+`可直接添加脚本到MiraiAndroid
56164

57165
目前该功能仍在开发中
58166

@@ -73,6 +181,8 @@ end
73181

74182
d8工具已在新版`Android sdk`中自带,它就在`build-tools`中对应版本的文件夹下。在Windows平台他是一个bat文件
75183

184+
如果没有可到上面的交流群内下载
185+
76186
* 编译
77187

78188
打开终端,使用以下命令编译

0 commit comments

Comments
 (0)