例子
### 例子
>i 连接插件
```javascript
let ws = new WebSocket("ws://localhost:7778/pwd=xxxx"); //创建连接
ws.onopen = () => { //连接成功后立马发送密码
console.log("机器人已连接");
setInterval(() => server.send("{}"), 6e5); //心跳包,保持连接不被系统切断
}
ws.onmessage = ({data}) => { //收到消息,取出数据到 data
data = JSON.parse(data); //解析为JSON
if(data.event.split("_")[0] === "msg" && data.msg) { //判断此类型是否为收到消息
data.nickname = decode(data.nickname); //昵称unicode解码
if(data.group) data.group.card = decode(data.group.card); //名片unicode解码
send(data, data.msg); //我是复读机
... //下面就是你收到群聊或私聊后要做的事
}
}
ws.onclose = () => { //连接断开后
console.log("机器人已断开");
}
function decode(str) { //unicode解码
return unescape(str.replace(/\\(u[0-9A-Z]{4})/gm, "%$1")) //用正则替换符号再解码
}
function send(data, msg) { // 自动判断私聊/群聊并回复
ws.send(JSON.stringify({
action: "send_msg",
[!data.group?"uid":"gid"]: data.uid || data.group.id,
msg: msg
}))
}
```
---
<br/>
>i 发送图文混合
```javascript
ws.send(JSON.stringify({
action: "send_msg",
uid: 2424261468,
msg: "base64图片:[image,base64:iVBORw0KGgoAAAANSUhEUgAAACIAAAAyCAYAAAA5kQlZAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAASUExURQAAAC4sPhwZJouTqEA/VmZpgOegPxcAAAHHSURBVFhH7Ze9SsRAEIBP8Qm0UbDUQ4KIpY0/WGojIhaCteBDiJW9leADWInYaGmhjaWIBDktBW30FdQZ8kkcbsklOeKE+MEybLyT3S8zs3sDrT4xM73wKfHj/U3nL6+dXP97MIl/TmkjmNje2dX5xemZxufOncZezdTfCCbm5pd1fnl+ojFvbkD9jYyPtdXIRHtW56sb6xoPD/Y0NrdqMGNpnhGbI5C3f0B9jSwtbqoJqoRO2ryqCZloR5HGyWhK41P8qDFvp62PkSwTnTjWCEVzxb+RkAmwRpjf3lxpzDqV6UM8d2NkKIk9Q+fEgOX+4Vp3+H131R2vrG1JEDM6B/vcb46E7qAQqhaekxPDI6O/ojVoc8eNkeBCpEPSJbshv1/4DZNGDMiQXJHB58Rgelj85Yi9lbNqqoR3zd+Pj/b1u6HbPJ/vZk2wfaU+Riy2g7Jj+oI1WbuzJnMhZL2F6mBQDWJChpjo1YbgJ0dCuYEFzg5Oy9QZoRG4zefNDfCfI7x7MSGDuYVcKJob4N+I3SHVQ3VYipoAv1Vj7wkWe9fsF36MsMOyfaAs/qumavwtJHTKVsX/q7G4WcgPnLLJtHKcGGm1vgApIDup0z4VMQAAAABJRU5ErkJggg==]\n\n" +
"本地图片:[image,file=/Users/enternal/Desktop/icon/暗影束法杖.png]\n\n" +
"网络图片:[image,https://tianyu.res.netease.com/pc/fab/20151207122943/images/yldBtn-3_ed171d8.jpg]"
}));
```
---
<br/>
>i 根据ip发送地图
```javascript
gid = 12345678; // 群号
function sendMap(data) {
ws.send(JSON.stringify({
action: "send_jsonMsg",
gid: data.gid || gid,
msg: '{"app":"com.tencent.map","desc":"'+(data.desc||"地图")+'","view":"LocationShare","ver":"1.0.1.70","prompt":"[地图]'+data.posiName+'","from":1,"appID":"","sourceName":"","actionData":"","actionData_A":"","sourceUrl":"","meta":{"Location.Search":{"id":"3354792866842694713","name":"'+data.posiName+'","address":"地图","lat":"'+data.x+'","lng":"'+data.y+'","from":"plusPanel"}},"config":{"forward":1,"autosize":1,"type":"card"}}'
}))
}
res = await get("http://ip-api.com/json/106.88.88.88?fields=61439&lang=zh-CN"); // 请求http
sendMap({posiName: res.country + " - " + res.regionName + " - " + res.city, x: res.lat, y: res.lon});
```
---
<br/>
>i 读取文件
```javascript
ws.onmessage = (data) => {
data = JSON.parse(data);
if(data.event.split("_")[0] === "msg" && data.msg) {
data.nickname = decode(data.nickname);
if(data.group) data.group.card = decode(data.group.card);
return command(data);
}
if(data.code.slice(0, 4) === "获取验证") {
send({uid: data.code.slice(4)}, data.data);
}
}
function command(data) {
let i = data.msg.indexOf(":");
let msg = data.msg.slice(i + 1);
switch(data.msg.slice(0, i)) {
case "获取验证":
if(msg || data.group) return;
ws.send(JSON.stringify({action: "file_read", path: "/aaa.txt", code: "获取验证" + data.uid}));
break;
}
}
command({uid: 2424261468, msg: "读取文件:"}); // 通过代码测试指令
```