细节优化
This commit is contained in:
parent
5e86f18195
commit
9c31f1fda9
|
@ -16,3 +16,6 @@ proxyAddress:
|
||||||
online_msg: true
|
online_msg: true
|
||||||
# 上线推送通知的冷却时间
|
# 上线推送通知的冷却时间
|
||||||
online_msg_exp: 86400
|
online_msg_exp: 86400
|
||||||
|
|
||||||
|
# 单条日志长度
|
||||||
|
logLength: 1000
|
56
lib/bot.js
56
lib/bot.js
|
@ -5,6 +5,8 @@ import ListenerLoader from "./listener/loader.js"
|
||||||
import { EventEmitter } from "events"
|
import { EventEmitter } from "events"
|
||||||
import express from "express"
|
import express from "express"
|
||||||
import http from "http"
|
import http from "http"
|
||||||
|
import { WebSocketServer } from "ws"
|
||||||
|
import _ from "lodash"
|
||||||
|
|
||||||
export default class Yunzai extends EventEmitter {
|
export default class Yunzai extends EventEmitter {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@ -13,11 +15,40 @@ export default class Yunzai extends EventEmitter {
|
||||||
this.adapter = []
|
this.adapter = []
|
||||||
this.express = express()
|
this.express = express()
|
||||||
this.server = http.createServer(this.express)
|
this.server = http.createServer(this.express)
|
||||||
this.wss = {}
|
|
||||||
this.server.on("upgrade", (req, socket, head) => {
|
this.server.on("upgrade", (req, socket, head) => {
|
||||||
const wss = this.wss[req.url.split("/")[1]]
|
this.wss.handleUpgrade(req, socket, head, conn => {
|
||||||
if (wss) wss.handleUpgrade(req, socket, head, conn => wss.emit("connection", conn, req))
|
conn.id = `${req.connection.remoteAddress}-${req.headers["sec-websocket-key"]}`
|
||||||
|
this.makeLog("mark", `${logger.blue(`[${conn.id} <=> ${req.url}]`)} 建立连接:${JSON.stringify(req.headers)}`)
|
||||||
|
conn.on("error", logger.error)
|
||||||
|
conn.on("close", () => this.makeLog("mark", `${logger.blue(`[${conn.id} <≠> ${req.url}]`)} 断开连接`))
|
||||||
|
conn.on("message", msg => this.makeLog("debug", `${logger.blue(`[${conn.id} => ${req.url}]`)} 消息:${String(msg).trim()}`))
|
||||||
|
conn.sendMsg = msg => {
|
||||||
|
if (typeof msg == "object")
|
||||||
|
msg = JSON.stringify(msg)
|
||||||
|
this.makeLog("debug", `${logger.blue(`[${conn.id} <= ${req.url}]`)} 消息:${msg}`)
|
||||||
|
return conn.send(msg)
|
||||||
|
}
|
||||||
|
for (const i of this.wsf[req.url.split("/")[1]] || [])
|
||||||
|
i(conn, req, socket, head)
|
||||||
})
|
})
|
||||||
|
})
|
||||||
|
this.wss = new WebSocketServer({ noServer: true })
|
||||||
|
this.wsf = {}
|
||||||
|
}
|
||||||
|
|
||||||
|
makeLog(level, msg) {
|
||||||
|
logger[level](_.truncate(msg, { length: cfg.bot.logLength }))
|
||||||
|
}
|
||||||
|
|
||||||
|
em(name = "", data = {}) {
|
||||||
|
if (data.self_id)
|
||||||
|
Object.defineProperty(data, "bot", { value: Bot[data.self_id] })
|
||||||
|
while (true) {
|
||||||
|
this.emit(name, data)
|
||||||
|
const i = name.lastIndexOf(".")
|
||||||
|
if (i == -1) break
|
||||||
|
name = name.slice(0, i)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async run() {
|
async run() {
|
||||||
|
@ -30,7 +61,7 @@ export default class Yunzai extends EventEmitter {
|
||||||
|
|
||||||
serverLoad() {
|
serverLoad() {
|
||||||
this.express.use(req => {
|
this.express.use(req => {
|
||||||
logger.info(`${logger.blue(`[${req.ip}]`)} HTTP ${req.method} 请求:${req.url} ${JSON.stringify(req.rawHeaders)}`)
|
logger.mark(`${logger.blue(`[${req.ip} => ${req.url}]`)} HTTP ${req.method} 请求:${JSON.stringify(req.headers)}`)
|
||||||
req.res.redirect("https://github.com/TimeRainStarSky/Yunzai")
|
req.res.redirect("https://github.com/TimeRainStarSky/Yunzai")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -38,7 +69,7 @@ export default class Yunzai extends EventEmitter {
|
||||||
const host = this.server.address().address
|
const host = this.server.address().address
|
||||||
const port = this.server.address().port
|
const port = this.server.address().port
|
||||||
logger.mark(`启动 HTTP 服务器:${logger.green(`http://[${host}]:${port}`)}`)
|
logger.mark(`启动 HTTP 服务器:${logger.green(`http://[${host}]:${port}`)}`)
|
||||||
for (const i of Object.keys(this.wss))
|
for (const i of Object.keys(this.wsf))
|
||||||
logger.info(`本机 ${i} 连接地址:${logger.blue(`ws://localhost:${port}/${i}`)}`)
|
logger.info(`本机 ${i} 连接地址:${logger.blue(`ws://localhost:${port}/${i}`)}`)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -60,7 +91,7 @@ export default class Yunzai extends EventEmitter {
|
||||||
}
|
}
|
||||||
|
|
||||||
getFriendMap() {
|
getFriendMap() {
|
||||||
const map = new Map()
|
const map = new Map
|
||||||
for (const bot_id of this.uin)
|
for (const bot_id of this.uin)
|
||||||
for (const [id, i] of this[bot_id].fl || [])
|
for (const [id, i] of this[bot_id].fl || [])
|
||||||
map.set(id, { ...i, bot_id })
|
map.set(id, { ...i, bot_id })
|
||||||
|
@ -85,13 +116,20 @@ export default class Yunzai extends EventEmitter {
|
||||||
}
|
}
|
||||||
|
|
||||||
getGroupMap() {
|
getGroupMap() {
|
||||||
const map = new Map()
|
const map = new Map
|
||||||
for (const bot_id of this.uin)
|
for (const bot_id of this.uin)
|
||||||
for (const [id, i] of this[bot_id].gl || [])
|
for (const [id, i] of this[bot_id].gl || [])
|
||||||
map.set(id, { ...i, bot_id })
|
map.set(id, { ...i, bot_id })
|
||||||
return map
|
return map
|
||||||
}
|
}
|
||||||
get gl() { return this.getGroupMap() }
|
get gl() { return this.getGroupMap() }
|
||||||
|
get gml() {
|
||||||
|
const map = new Map
|
||||||
|
for (const bot_id of this.uin)
|
||||||
|
for (const [id, i] of this[bot_id].gml || [])
|
||||||
|
map.set(id, i)
|
||||||
|
return map
|
||||||
|
}
|
||||||
|
|
||||||
pickFriend(user_id) {
|
pickFriend(user_id) {
|
||||||
user_id = Number(user_id) || String(user_id)
|
user_id = Number(user_id) || String(user_id)
|
||||||
|
@ -123,7 +161,7 @@ export default class Yunzai extends EventEmitter {
|
||||||
|
|
||||||
return new Promise(resolve =>
|
return new Promise(resolve =>
|
||||||
this.once(`connect.${bot_id}`, data =>
|
this.once(`connect.${bot_id}`, data =>
|
||||||
resolve(data.pickFriend(user_id).sendMsg(msg))))
|
resolve(data.bot.pickFriend(user_id).sendMsg(msg))))
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error(`${logger.blue(`[${bot_id}]`)} 发送好友消息失败:[$${user_id}] ${err}`)
|
logger.error(`${logger.blue(`[${bot_id}]`)} 发送好友消息失败:[$${user_id}] ${err}`)
|
||||||
}
|
}
|
||||||
|
@ -140,7 +178,7 @@ export default class Yunzai extends EventEmitter {
|
||||||
|
|
||||||
return new Promise(resolve =>
|
return new Promise(resolve =>
|
||||||
this.once(`connect.${bot_id}`, data =>
|
this.once(`connect.${bot_id}`, data =>
|
||||||
resolve(data.pickGroup(group_id).sendMsg(msg))))
|
resolve(data.bot.pickGroup(group_id).sendMsg(msg))))
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error(`${logger.blue(`[${bot_id}]`)} 发送群消息失败:[$${group_id}] ${err}`)
|
logger.error(`${logger.blue(`[${bot_id}]`)} 发送群消息失败:[$${group_id}] ${err}`)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +1,23 @@
|
||||||
import EventListener from '../listener/listener.js'
|
import EventListener from "../listener/listener.js"
|
||||||
import cfg from '../config/config.js'
|
import cfg from "../config/config.js"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 监听连接事件
|
* 监听连接事件
|
||||||
*/
|
*/
|
||||||
export default class connectEvent extends EventListener {
|
export default class connectEvent extends EventListener {
|
||||||
constructor() {
|
constructor() {
|
||||||
super({ event: 'connect' })
|
super({ event: "connect" })
|
||||||
}
|
}
|
||||||
|
|
||||||
async execute(e) {
|
async execute(e) {
|
||||||
|
if (!Bot.uin.includes(e.self_id))
|
||||||
|
Bot.uin.push(e.self_id)
|
||||||
|
|
||||||
if (!cfg.bot.online_msg) return
|
if (!cfg.bot.online_msg) return
|
||||||
const key = `Yz:loginMsg:${e.uin}`
|
const key = `Yz:loginMsg:${e.self_id}`
|
||||||
if (await redis.get(key)) return
|
if (await redis.get(key)) return
|
||||||
redis.set(key, "1", { EX: cfg.bot.online_msg_exp })
|
redis.set(key, "1", { EX: cfg.bot.online_msg_exp })
|
||||||
for (const i of cfg.master[e.uin] ?? [])
|
for (const i of cfg.master[e.self_id] || [])
|
||||||
e.pickFriend(i).sendMsg(`欢迎使用【TRSS-Yunzai v${cfg.package.version}】\n【#帮助】查看指令说明\n【#状态】查看运行状态\n【#日志】查看运行日志\n【#重启】重新启动\n【#更新】拉取 Git 更新\n【#全部更新】更新全部插件\n【#更新日志】查看更新日志\n【#设置主人】设置主人账号\n【#安装插件】查看可安装插件`)
|
e.bot.pickFriend(i).sendMsg(`欢迎使用【TRSS-Yunzai v${cfg.package.version}】\n【#帮助】查看指令说明\n【#状态】查看运行状态\n【#日志】查看运行日志\n【#重启】重新启动\n【#更新】拉取 Git 更新\n【#全部更新】更新全部插件\n【#更新日志】查看更新日志\n【#设置主人】设置主人账号\n【#安装插件】查看可安装插件`)
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -125,8 +125,7 @@ Bot.adapter.push(new class stdinAdapter {
|
||||||
}
|
}
|
||||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 系统消息:[${data.sender.nickname}(${data.user_id})] ${data.raw_message}`)
|
logger.info(`${logger.blue(`[${data.self_id}]`)} 系统消息:[${data.sender.nickname}(${data.user_id})] ${data.raw_message}`)
|
||||||
|
|
||||||
Bot.emit(`${data.post_type}.${data.message_type}`, data)
|
Bot.em(`${data.post_type}.${data.message_type}`, data)
|
||||||
Bot.emit(`${data.post_type}`, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
load() {
|
load() {
|
||||||
|
@ -148,7 +147,9 @@ Bot.adapter.push(new class stdinAdapter {
|
||||||
group_name: this.name,
|
group_name: this.name,
|
||||||
}),
|
}),
|
||||||
get gl() { return this.fl },
|
get gl() { return this.fl },
|
||||||
|
gml: new Map,
|
||||||
}
|
}
|
||||||
|
Bot[this.id].gml.set(this.id, Bot[this.id].fl)
|
||||||
|
|
||||||
if (!Bot.uin.includes(this.id))
|
if (!Bot.uin.includes(this.id))
|
||||||
Bot.uin.push(this.id)
|
Bot.uin.push(this.id)
|
||||||
|
@ -156,7 +157,6 @@ Bot.adapter.push(new class stdinAdapter {
|
||||||
process[this.id].on("data", data => this.message(data.toString()))
|
process[this.id].on("data", data => this.message(data.toString()))
|
||||||
|
|
||||||
logger.mark(`${logger.blue(`[${this.id}]`)} ${this.name}(${this.id}) 已连接`)
|
logger.mark(`${logger.blue(`[${this.id}]`)} ${this.name}(${this.id}) 已连接`)
|
||||||
Bot.emit(`connect.${this.id}`, Bot[this.id])
|
Bot.em(`connect.${this.id}`, { self_id: this.id })
|
||||||
Bot.emit("connect", Bot[this.id])
|
|
||||||
}
|
}
|
||||||
})
|
})
|
|
@ -32,7 +32,7 @@
|
||||||
"node-xlsx": "^0.23.0",
|
"node-xlsx": "^0.23.0",
|
||||||
"oicq": "link:lib/modules/oicq",
|
"oicq": "link:lib/modules/oicq",
|
||||||
"pm2": "^5.3.0",
|
"pm2": "^5.3.0",
|
||||||
"puppeteer": "^21.0.3",
|
"puppeteer": "^21.1.0",
|
||||||
"redis": "^4.6.7",
|
"redis": "^4.6.7",
|
||||||
"sequelize": "^6.32.1",
|
"sequelize": "^6.32.1",
|
||||||
"sqlite3": "^5.1.6",
|
"sqlite3": "^5.1.6",
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"eslint": "^8.47.0",
|
"eslint": "^8.47.0",
|
||||||
"eslint-config-standard": "^17.1.0",
|
"eslint-config-standard": "^17.1.0",
|
||||||
"eslint-plugin-import": "^2.28.0",
|
"eslint-plugin-import": "^2.28.1",
|
||||||
"eslint-plugin-n": "^16.0.1",
|
"eslint-plugin-n": "^16.0.1",
|
||||||
"eslint-plugin-promise": "^6.1.1"
|
"eslint-plugin-promise": "^6.1.1"
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import { WebSocketServer } from "ws"
|
|
||||||
import { randomUUID } from "crypto"
|
import { randomUUID } from "crypto"
|
||||||
import path from "node:path"
|
import path from "node:path"
|
||||||
import fs from "node:fs"
|
import fs from "node:fs"
|
||||||
|
@ -32,9 +31,8 @@ Bot.adapter.push(new class ComWeChatAdapter {
|
||||||
|
|
||||||
sendApi(ws, action, params = {}) {
|
sendApi(ws, action, params = {}) {
|
||||||
const echo = randomUUID()
|
const echo = randomUUID()
|
||||||
const msg = JSON.stringify({ action, params, echo })
|
const msg = { action, params, echo }
|
||||||
logger.debug(`发送 API 请求:${logger.cyan(this.makeLog(msg))}`)
|
ws.sendMsg(msg)
|
||||||
ws.send(msg)
|
|
||||||
return new Promise(resolve =>
|
return new Promise(resolve =>
|
||||||
Bot.once(echo, data =>
|
Bot.once(echo, data =>
|
||||||
resolve({ ...data, ...data.data })))
|
resolve({ ...data, ...data.data })))
|
||||||
|
@ -125,7 +123,7 @@ Bot.adapter.push(new class ComWeChatAdapter {
|
||||||
return Bot.sendForwardMsg(msg => this.sendFriendMsg(data, msg), msg.data)
|
return Bot.sendForwardMsg(msg => this.sendFriendMsg(data, msg), msg.data)
|
||||||
|
|
||||||
const message = await this.makeMsg(data, msg)
|
const message = await this.makeMsg(data, msg)
|
||||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送好友消息:[${data.user_id}] ${this.makeLog(message)}`)
|
logger.info(`${logger.blue(`[${data.self_id} => ${data.user_id}]`)} 发送好友消息:${this.makeLog(message)}`)
|
||||||
return data.sendApi("send_message", {
|
return data.sendApi("send_message", {
|
||||||
detail_type: "private",
|
detail_type: "private",
|
||||||
user_id: data.user_id,
|
user_id: data.user_id,
|
||||||
|
@ -138,7 +136,7 @@ Bot.adapter.push(new class ComWeChatAdapter {
|
||||||
return Bot.sendForwardMsg(msg => this.sendGroupMsg(data, msg), msg.data)
|
return Bot.sendForwardMsg(msg => this.sendGroupMsg(data, msg), msg.data)
|
||||||
|
|
||||||
const message = await this.makeMsg(data, msg)
|
const message = await this.makeMsg(data, msg)
|
||||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送群消息:[${data.group_id}] ${this.makeLog(message)}`)
|
logger.info(`${logger.blue(`[${data.self_id} => ${data.group_id}]`)} 发送群消息:${this.makeLog(message)}`)
|
||||||
return data.sendApi("send_message", {
|
return data.sendApi("send_message", {
|
||||||
detail_type: "group",
|
detail_type: "group",
|
||||||
group_id: data.group_id,
|
group_id: data.group_id,
|
||||||
|
@ -212,7 +210,7 @@ Bot.adapter.push(new class ComWeChatAdapter {
|
||||||
}
|
}
|
||||||
|
|
||||||
async getMemberMap(data) {
|
async getMemberMap(data) {
|
||||||
const map = new Map()
|
const map = new Map
|
||||||
for (const i of (await this.getMemberArray(data)))
|
for (const i of (await this.getMemberArray(data)))
|
||||||
map.set(i.user_id, i)
|
map.set(i.user_id, i)
|
||||||
return map
|
return map
|
||||||
|
@ -300,14 +298,15 @@ Bot.adapter.push(new class ComWeChatAdapter {
|
||||||
getFriendArray: () => this.getFriendArray(data),
|
getFriendArray: () => this.getFriendArray(data),
|
||||||
getFriendList: () => this.getFriendList(data),
|
getFriendList: () => this.getFriendList(data),
|
||||||
getFriendMap: () => this.getFriendMap(data),
|
getFriendMap: () => this.getFriendMap(data),
|
||||||
fl: new Map(),
|
fl: new Map,
|
||||||
|
|
||||||
pickMember: (group_id, user_id) => this.pickMember(data, group_id, user_id),
|
pickMember: (group_id, user_id) => this.pickMember(data, group_id, user_id),
|
||||||
pickGroup: group_id => this.pickGroup(data, group_id),
|
pickGroup: group_id => this.pickGroup(data, group_id),
|
||||||
getGroupArray: () => this.getGroupArray(data),
|
getGroupArray: () => this.getGroupArray(data),
|
||||||
getGroupList: () => this.getGroupList(data),
|
getGroupList: () => this.getGroupList(data),
|
||||||
getGroupMap: () => this.getGroupMap(data),
|
getGroupMap: () => this.getGroupMap(data),
|
||||||
gl: new Map(),
|
gl: new Map,
|
||||||
|
gml: new Map,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Bot.uin.includes(data.self_id))
|
if (!Bot.uin.includes(data.self_id))
|
||||||
|
@ -324,8 +323,7 @@ Bot.adapter.push(new class ComWeChatAdapter {
|
||||||
Bot[data.self_id].getGroupMap()
|
Bot[data.self_id].getGroupMap()
|
||||||
|
|
||||||
logger.mark(`${logger.blue(`[${data.self_id}]`)} ${this.name}(${this.id}) ${Bot[data.self_id].version.impl}-${Bot[data.self_id].version.version} 已连接`)
|
logger.mark(`${logger.blue(`[${data.self_id}]`)} ${this.name}(${this.id}) ${Bot[data.self_id].version.impl}-${Bot[data.self_id].version.version} 已连接`)
|
||||||
Bot.emit(`connect.${data.self_id}`, Bot[data.self_id])
|
Bot.em(`connect.${data.self_id}`, data)
|
||||||
Bot.emit("connect", Bot[data.self_id])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
makeMessage(data) {
|
makeMessage(data) {
|
||||||
|
@ -369,8 +367,7 @@ Bot.adapter.push(new class ComWeChatAdapter {
|
||||||
logger.warn(`${logger.blue(`[${data.self_id}]`)} 未知消息:${logger.magenta(JSON.stringify(data))}`)
|
logger.warn(`${logger.blue(`[${data.self_id}]`)} 未知消息:${logger.magenta(JSON.stringify(data))}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
Bot.emit(`${data.post_type}.${data.message_type}`, data)
|
Bot.em(`${data.post_type}.${data.message_type}`, data)
|
||||||
Bot.emit(`${data.post_type}`, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
makeNotice(data) {
|
makeNotice(data) {
|
||||||
|
@ -423,9 +420,7 @@ Bot.adapter.push(new class ComWeChatAdapter {
|
||||||
if (!data.sub_type)
|
if (!data.sub_type)
|
||||||
data.sub_type = data.detail_type.split("_").pop()
|
data.sub_type = data.detail_type.split("_").pop()
|
||||||
|
|
||||||
Bot.emit(`${data.post_type}.${data.notice_type}.${data.sub_type}`, data)
|
Bot.em(`${data.post_type}.${data.notice_type}.${data.sub_type}`, data)
|
||||||
Bot.emit(`${data.post_type}.${data.notice_type}`, data)
|
|
||||||
Bot.emit(`${data.post_type}`, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
makeRequest(data) {
|
makeRequest(data) {
|
||||||
|
@ -446,9 +441,7 @@ Bot.adapter.push(new class ComWeChatAdapter {
|
||||||
if (!data.sub_type)
|
if (!data.sub_type)
|
||||||
data.sub_type = data.detail_type.split("_").pop()
|
data.sub_type = data.detail_type.split("_").pop()
|
||||||
|
|
||||||
Bot.emit(`${data.post_type}.${data.request_type}.${data.sub_type}`, data)
|
Bot.em(`${data.post_type}.${data.request_type}.${data.sub_type}`, data)
|
||||||
Bot.emit(`${data.post_type}.${data.request_type}`, data)
|
|
||||||
Bot.emit(`${data.post_type}`, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
makeMeta(data) {
|
makeMeta(data) {
|
||||||
|
@ -503,7 +496,6 @@ Bot.adapter.push(new class ComWeChatAdapter {
|
||||||
logger.warn(`${logger.blue(`[${data.self_id}]`)} 未知消息:${logger.magenta(JSON.stringify(data))}`)
|
logger.warn(`${logger.blue(`[${data.self_id}]`)} 未知消息:${logger.magenta(JSON.stringify(data))}`)
|
||||||
}
|
}
|
||||||
} else if (data.echo) {
|
} else if (data.echo) {
|
||||||
logger.debug(`请求 API 返回:${logger.cyan(JSON.stringify(data))}`)
|
|
||||||
Bot.emit(data.echo, data)
|
Bot.emit(data.echo, data)
|
||||||
} else {
|
} else {
|
||||||
logger.warn(`${logger.blue(`[${data.self_id}]`)} 未知消息:${logger.magenta(JSON.stringify(data))}`)
|
logger.warn(`${logger.blue(`[${data.self_id}]`)} 未知消息:${logger.magenta(JSON.stringify(data))}`)
|
||||||
|
@ -511,11 +503,10 @@ Bot.adapter.push(new class ComWeChatAdapter {
|
||||||
}
|
}
|
||||||
|
|
||||||
load() {
|
load() {
|
||||||
Bot.wss[this.path] = new WebSocketServer({ noServer: true })
|
if (!Array.isArray(Bot.wsf[this.path]))
|
||||||
Bot.wss[this.path].on("connection", ws => ws
|
Bot.wsf[this.path] = []
|
||||||
.on("error", logger.error)
|
Bot.wsf[this.path].push((ws, ...args) =>
|
||||||
.on("message", data => this.message(data, ws))
|
ws.on("message", data => this.message(data, ws, ...args))
|
||||||
)
|
)
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
})
|
})
|
|
@ -1,4 +1,3 @@
|
||||||
import { WebSocketServer } from "ws"
|
|
||||||
import { randomUUID } from "crypto"
|
import { randomUUID } from "crypto"
|
||||||
import path from "node:path"
|
import path from "node:path"
|
||||||
import fs from "node:fs"
|
import fs from "node:fs"
|
||||||
|
@ -29,12 +28,6 @@ Bot.adapter.push(new class GSUIDCoreAdapter {
|
||||||
return this.toStr(msg).replace(/base64:\/\/.*?"/g, "base64://...\"")
|
return this.toStr(msg).replace(/base64:\/\/.*?"/g, "base64://...\"")
|
||||||
}
|
}
|
||||||
|
|
||||||
sendApi(ws, data) {
|
|
||||||
const msg = JSON.stringify(data)
|
|
||||||
logger.debug(`发送 API 请求:${logger.cyan(this.makeLog(msg))}`)
|
|
||||||
return ws.send(msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
makeMsg(msg) {
|
makeMsg(msg) {
|
||||||
if (!Array.isArray(msg))
|
if (!Array.isArray(msg))
|
||||||
msg = [msg]
|
msg = [msg]
|
||||||
|
@ -81,7 +74,7 @@ Bot.adapter.push(new class GSUIDCoreAdapter {
|
||||||
|
|
||||||
sendFriendMsg(data, msg) {
|
sendFriendMsg(data, msg) {
|
||||||
const content = this.makeMsg(msg)
|
const content = this.makeMsg(msg)
|
||||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送好友消息:[${data.user_id}] ${this.makeLog(content)}`)
|
logger.info(`${logger.blue(`[${data.self_id} => ${data.user_id}]`)} 发送好友消息:${this.makeLog(content)}`)
|
||||||
data.bot.sendApi({
|
data.bot.sendApi({
|
||||||
bot_id: data.bot.bot_id,
|
bot_id: data.bot.bot_id,
|
||||||
bot_self_id: data.bot.bot_self_id,
|
bot_self_id: data.bot.bot_self_id,
|
||||||
|
@ -95,7 +88,7 @@ Bot.adapter.push(new class GSUIDCoreAdapter {
|
||||||
sendGroupMsg(data, msg) {
|
sendGroupMsg(data, msg) {
|
||||||
const target = data.group_id.split("-")
|
const target = data.group_id.split("-")
|
||||||
const content = this.makeMsg(msg)
|
const content = this.makeMsg(msg)
|
||||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送群消息:[${data.group_id}] ${this.makeLog(content)}`)
|
logger.info(`${logger.blue(`[${data.self_id} => ${data.group_id}]`)} 发送群消息:${this.makeLog(content)}`)
|
||||||
data.bot.sendApi({
|
data.bot.sendApi({
|
||||||
bot_id: data.bot.bot_id,
|
bot_id: data.bot.bot_id,
|
||||||
bot_self_id: data.bot.bot_self_id,
|
bot_self_id: data.bot.bot_self_id,
|
||||||
|
@ -163,16 +156,13 @@ Bot.adapter.push(new class GSUIDCoreAdapter {
|
||||||
get pickUser() { return this.pickFriend },
|
get pickUser() { return this.pickFriend },
|
||||||
pickMember: (group_id, user_id) => this.pickMember(data.self_id, group_id, user_id),
|
pickMember: (group_id, user_id) => this.pickMember(data.self_id, group_id, user_id),
|
||||||
pickGroup: group_id => this.pickGroup(data.self_id, group_id),
|
pickGroup: group_id => this.pickGroup(data.self_id, group_id),
|
||||||
fl: new Map(),
|
fl: new Map,
|
||||||
gl: new Map(),
|
gl: new Map,
|
||||||
|
gml: new Map,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Bot.uin.includes(data.self_id))
|
|
||||||
Bot.uin.push(data.self_id)
|
|
||||||
|
|
||||||
logger.mark(`${logger.blue(`[${data.self_id}]`)} ${this.name}(${this.id}) 已连接`)
|
logger.mark(`${logger.blue(`[${data.self_id}]`)} ${this.name}(${this.id}) 已连接`)
|
||||||
Bot.emit(`connect.${data.self_id}`, Bot[data.self_id])
|
Bot.em(`connect.${data.self_id}`, data)
|
||||||
Bot.emit("connect", Bot[data.self_id])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message(data, ws) {
|
message(data, ws) {
|
||||||
|
@ -183,7 +173,7 @@ Bot.adapter.push(new class GSUIDCoreAdapter {
|
||||||
}
|
}
|
||||||
|
|
||||||
data.self_id = data.bot_self_id
|
data.self_id = data.bot_self_id
|
||||||
data.sendApi = data => this.sendApi(ws, data)
|
data.sendApi = data => ws.sendMsg(data)
|
||||||
if (Bot[data.self_id])
|
if (Bot[data.self_id])
|
||||||
Bot[data.self_id].sendApi = data.sendApi
|
Bot[data.self_id].sendApi = data.sendApi
|
||||||
else
|
else
|
||||||
|
@ -245,16 +235,14 @@ Bot.adapter.push(new class GSUIDCoreAdapter {
|
||||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 群消息:[${data.group_id}, ${data.user_id}] ${data.raw_message}`)
|
logger.info(`${logger.blue(`[${data.self_id}]`)} 群消息:[${data.group_id}, ${data.user_id}] ${data.raw_message}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
Bot.emit(`${data.post_type}.${data.message_type}`, data)
|
Bot.em(`${data.post_type}.${data.message_type}`, data)
|
||||||
Bot.emit(`${data.post_type}`, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
load() {
|
load() {
|
||||||
Bot.wss[this.path] = new WebSocketServer({ noServer: true })
|
if (!Array.isArray(Bot.wsf[this.path]))
|
||||||
Bot.wss[this.path].on("connection", ws => ws
|
Bot.wsf[this.path] = []
|
||||||
.on("error", logger.error)
|
Bot.wsf[this.path].push((ws, ...args) =>
|
||||||
.on("message", data => this.message(data, ws))
|
ws.on("message", data => this.message(data, ws, ...args))
|
||||||
)
|
)
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
})
|
})
|
|
@ -1,4 +1,3 @@
|
||||||
import { WebSocketServer } from "ws"
|
|
||||||
import { randomUUID } from "crypto"
|
import { randomUUID } from "crypto"
|
||||||
import path from "node:path"
|
import path from "node:path"
|
||||||
import fs from "node:fs"
|
import fs from "node:fs"
|
||||||
|
@ -31,9 +30,8 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
|
|
||||||
sendApi(ws, action, params) {
|
sendApi(ws, action, params) {
|
||||||
const echo = randomUUID()
|
const echo = randomUUID()
|
||||||
const msg = JSON.stringify({ action, params, echo })
|
const msg = { action, params, echo }
|
||||||
logger.debug(`发送 API 请求:${logger.cyan(this.makeLog(msg))}`)
|
ws.sendMsg(msg)
|
||||||
ws.send(msg)
|
|
||||||
return new Promise(resolve =>
|
return new Promise(resolve =>
|
||||||
Bot.once(echo, data =>
|
Bot.once(echo, data =>
|
||||||
resolve({ ...data, ...data.data })))
|
resolve({ ...data, ...data.data })))
|
||||||
|
@ -64,7 +62,7 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
if (msg?.type == "node")
|
if (msg?.type == "node")
|
||||||
return this.sendFriendForwardMsg(data, msg.data)
|
return this.sendFriendForwardMsg(data, msg.data)
|
||||||
|
|
||||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送好友消息:[${data.user_id}] ${this.makeLog(msg)}`)
|
logger.info(`${logger.blue(`[${data.self_id} => ${data.user_id}]`)} 发送好友消息:${this.makeLog(msg)}`)
|
||||||
return data.sendApi("send_msg", {
|
return data.sendApi("send_msg", {
|
||||||
user_id: data.user_id,
|
user_id: data.user_id,
|
||||||
message: this.makeMsg(msg),
|
message: this.makeMsg(msg),
|
||||||
|
@ -75,7 +73,7 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
if (msg?.type == "node")
|
if (msg?.type == "node")
|
||||||
return this.sendGroupForwardMsg(data, msg.data)
|
return this.sendGroupForwardMsg(data, msg.data)
|
||||||
|
|
||||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送群消息:[${data.group_id}] ${this.makeLog(msg)}`)
|
logger.info(`${logger.blue(`[${data.self_id} => ${data.group_id}]`)} 发送群消息:${this.makeLog(msg)}`)
|
||||||
return data.sendApi("send_msg", {
|
return data.sendApi("send_msg", {
|
||||||
group_id: data.group_id,
|
group_id: data.group_id,
|
||||||
message: this.makeMsg(msg),
|
message: this.makeMsg(msg),
|
||||||
|
@ -84,9 +82,9 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
|
|
||||||
sendGuildMsg(data, msg) {
|
sendGuildMsg(data, msg) {
|
||||||
if (msg?.type == "node")
|
if (msg?.type == "node")
|
||||||
return this.sendGuildForwardMsg(data, msg.data)
|
return Bot.sendForwardMsg(msg => this.sendGuildMsg(data, msg), msg)
|
||||||
|
|
||||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送频道消息:[${data.guild_id}-${data.channel_id}] ${this.makeLog(msg)}`)
|
logger.info(`${logger.blue(`[${data.self_id}] => ${data.guild_id}-${data.channel_id}`)} 发送频道消息:${this.makeLog(msg)}`)
|
||||||
return data.sendApi("send_guild_channel_msg", {
|
return data.sendApi("send_guild_channel_msg", {
|
||||||
guild_id: data.guild_id,
|
guild_id: data.guild_id,
|
||||||
channel_id: data.channel_id,
|
channel_id: data.channel_id,
|
||||||
|
@ -132,7 +130,7 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
}
|
}
|
||||||
|
|
||||||
async sendFriendForwardMsg(data, msg) {
|
async sendFriendForwardMsg(data, msg) {
|
||||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送好友转发消息:[${data.user_id}] ${this.makeLog(msg)}`)
|
logger.info(`${logger.blue(`[${data.self_id} => ${data.user_id}]`)} 发送好友转发消息:${this.makeLog(msg)}`)
|
||||||
msg = await data.sendApi("send_private_forward_msg", {
|
msg = await data.sendApi("send_private_forward_msg", {
|
||||||
user_id: data.user_id,
|
user_id: data.user_id,
|
||||||
messages: this.makeForwardMsg(msg),
|
messages: this.makeForwardMsg(msg),
|
||||||
|
@ -141,7 +139,7 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
}
|
}
|
||||||
|
|
||||||
async sendGroupForwardMsg(data, msg) {
|
async sendGroupForwardMsg(data, msg) {
|
||||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送群转发消息:[${data.group_id}] ${this.makeLog(msg)}`)
|
logger.info(`${logger.blue(`[${data.self_id} => ${data.group_id}]`)} 发送群转发消息:${this.makeLog(msg)}`)
|
||||||
msg = await data.sendApi("send_group_forward_msg", {
|
msg = await data.sendApi("send_group_forward_msg", {
|
||||||
group_id: data.group_id,
|
group_id: data.group_id,
|
||||||
messages: this.makeForwardMsg(msg),
|
messages: this.makeForwardMsg(msg),
|
||||||
|
@ -149,13 +147,6 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
return msg
|
return msg
|
||||||
}
|
}
|
||||||
|
|
||||||
async sendGuildForwardMsg(data, msg) {
|
|
||||||
const messages = []
|
|
||||||
for (const i of msg)
|
|
||||||
messages.push(await this.sendGuildMsg(data, i.message))
|
|
||||||
return messages
|
|
||||||
}
|
|
||||||
|
|
||||||
async getFriendArray(data) {
|
async getFriendArray(data) {
|
||||||
return (await data.sendApi("get_friend_list")).data
|
return (await data.sendApi("get_friend_list")).data
|
||||||
}
|
}
|
||||||
|
@ -228,7 +219,7 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
}
|
}
|
||||||
|
|
||||||
async getMemberMap(data) {
|
async getMemberMap(data) {
|
||||||
const map = new Map()
|
const map = new Map
|
||||||
for (const i of (await this.getMemberArray(data)))
|
for (const i of (await this.getMemberArray(data)))
|
||||||
map.set(i.user_id, i)
|
map.set(i.user_id, i)
|
||||||
return map
|
return map
|
||||||
|
@ -258,7 +249,7 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
}
|
}
|
||||||
|
|
||||||
async getGuildChannelMap(data) {
|
async getGuildChannelMap(data) {
|
||||||
const map = new Map()
|
const map = new Map
|
||||||
for (const i of (await this.getGuildChannelArray(data)))
|
for (const i of (await this.getGuildChannelArray(data)))
|
||||||
map.set(i.channel_id, i)
|
map.set(i.channel_id, i)
|
||||||
return map
|
return map
|
||||||
|
@ -292,7 +283,7 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
}
|
}
|
||||||
|
|
||||||
async getGuildMemberMap(data) {
|
async getGuildMemberMap(data) {
|
||||||
const map = new Map()
|
const map = new Map
|
||||||
for (const i of (await this.getGuildMemberArray(data)))
|
for (const i of (await this.getGuildMemberArray(data)))
|
||||||
map.set(i.user_id, i)
|
map.set(i.user_id, i)
|
||||||
return map
|
return map
|
||||||
|
@ -366,7 +357,7 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
}
|
}
|
||||||
|
|
||||||
async sendFriendFile(data, file, name) {
|
async sendFriendFile(data, file, name) {
|
||||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送好友文件:[${data.user_id}] ${name}(${file})`)
|
logger.info(`${logger.blue(`[${data.self_id} => ${data.user_id}]`)} 发送好友文件:${name}(${file})`)
|
||||||
return data.sendApi("upload_private_file", {
|
return data.sendApi("upload_private_file", {
|
||||||
user_id: data.user_id,
|
user_id: data.user_id,
|
||||||
...await this.makeFile(data, file, name),
|
...await this.makeFile(data, file, name),
|
||||||
|
@ -464,7 +455,6 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
getMsg: message_id => this.getMsg(i, message_id),
|
getMsg: message_id => this.getMsg(i, message_id),
|
||||||
recallMsg: message_id => this.recallMsg(i, message_id),
|
recallMsg: message_id => this.recallMsg(i, message_id),
|
||||||
getForwardMsg: message_id => this.getForwardMsg(i, message_id),
|
getForwardMsg: message_id => this.getForwardMsg(i, message_id),
|
||||||
makeForwardMsg: Bot.makeForwardMsg,
|
|
||||||
sendForwardMsg: msg => this.sendFriendForwardMsg(i, msg),
|
sendForwardMsg: msg => this.sendFriendForwardMsg(i, msg),
|
||||||
sendFile: (file, name) => this.sendFriendFile(i, file, name),
|
sendFile: (file, name) => this.sendFriendFile(i, file, name),
|
||||||
getInfo: () => this.getFriendInfo(i),
|
getInfo: () => this.getFriendInfo(i),
|
||||||
|
@ -518,8 +508,6 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
getMsg: message_id => this.getMsg(i, message_id),
|
getMsg: message_id => this.getMsg(i, message_id),
|
||||||
recallMsg: message_id => this.recallMsg(i, message_id),
|
recallMsg: message_id => this.recallMsg(i, message_id),
|
||||||
getForwardMsg: message_id => this.getForwardMsg(i, message_id),
|
getForwardMsg: message_id => this.getForwardMsg(i, message_id),
|
||||||
makeForwardMsg: Bot.makeForwardMsg,
|
|
||||||
sendForwardMsg: msg => this.sendGuildForwardMsg(i, msg),
|
|
||||||
getInfo: () => this.getGuildInfo(i),
|
getInfo: () => this.getGuildInfo(i),
|
||||||
getChannelArray: () => this.getGuildChannelArray(i),
|
getChannelArray: () => this.getGuildChannelArray(i),
|
||||||
getChannelList: () => this.getGuildChannelList(i),
|
getChannelList: () => this.getGuildChannelList(i),
|
||||||
|
@ -542,7 +530,6 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
getMsg: message_id => this.getMsg(i, message_id),
|
getMsg: message_id => this.getMsg(i, message_id),
|
||||||
recallMsg: message_id => this.recallMsg(i, message_id),
|
recallMsg: message_id => this.recallMsg(i, message_id),
|
||||||
getForwardMsg: message_id => this.getForwardMsg(i, message_id),
|
getForwardMsg: message_id => this.getForwardMsg(i, message_id),
|
||||||
makeForwardMsg: Bot.makeForwardMsg,
|
|
||||||
sendForwardMsg: msg => this.sendGroupForwardMsg(i, msg),
|
sendForwardMsg: msg => this.sendGroupForwardMsg(i, msg),
|
||||||
sendFile: (file, name) => this.sendGroupFile(i, file, undefined, name),
|
sendFile: (file, name) => this.sendGroupFile(i, file, undefined, name),
|
||||||
getInfo: () => this.getGroupInfo(i),
|
getInfo: () => this.getGroupInfo(i),
|
||||||
|
@ -581,14 +568,15 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
getFriendArray: () => this.getFriendArray(data),
|
getFriendArray: () => this.getFriendArray(data),
|
||||||
getFriendList: () => this.getFriendList(data),
|
getFriendList: () => this.getFriendList(data),
|
||||||
getFriendMap: () => this.getFriendMap(data),
|
getFriendMap: () => this.getFriendMap(data),
|
||||||
fl: new Map(),
|
fl: new Map,
|
||||||
|
|
||||||
pickMember: (group_id, user_id) => this.pickMember(data, group_id, user_id),
|
pickMember: (group_id, user_id) => this.pickMember(data, group_id, user_id),
|
||||||
pickGroup: group_id => this.pickGroup(data, group_id),
|
pickGroup: group_id => this.pickGroup(data, group_id),
|
||||||
getGroupArray: () => this.getGroupArray(data),
|
getGroupArray: () => this.getGroupArray(data),
|
||||||
getGroupList: () => this.getGroupList(data),
|
getGroupList: () => this.getGroupList(data),
|
||||||
getGroupMap: () => this.getGroupMap(data),
|
getGroupMap: () => this.getGroupMap(data),
|
||||||
gl: new Map(),
|
gl: new Map,
|
||||||
|
gml: new Map,
|
||||||
|
|
||||||
request_list: [],
|
request_list: [],
|
||||||
getSystemMsg: () => Bot[data.self_id].request_list,
|
getSystemMsg: () => Bot[data.self_id].request_list,
|
||||||
|
@ -617,8 +605,7 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
Bot[data.self_id].getGroupMap()
|
Bot[data.self_id].getGroupMap()
|
||||||
|
|
||||||
logger.mark(`${logger.blue(`[${data.self_id}]`)} ${this.name}(${this.id}) ${Bot[data.self_id].version.app_full_name} 已连接`)
|
logger.mark(`${logger.blue(`[${data.self_id}]`)} ${this.name}(${this.id}) ${Bot[data.self_id].version.app_full_name} 已连接`)
|
||||||
Bot.emit(`connect.${data.self_id}`, Bot[data.self_id])
|
Bot.em(`connect.${data.self_id}`, data)
|
||||||
Bot.emit("connect", Bot[data.self_id])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
makeMessage(data) {
|
makeMessage(data) {
|
||||||
|
@ -644,10 +631,7 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
logger.warn(`${logger.blue(`[${data.self_id}]`)} 未知消息:${logger.magenta(JSON.stringify(data))}`)
|
logger.warn(`${logger.blue(`[${data.self_id}]`)} 未知消息:${logger.magenta(JSON.stringify(data))}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.sub_type)
|
Bot.em(`${data.post_type}.${data.message_type}.${data.sub_type}`, data)
|
||||||
Bot.emit(`${data.post_type}.${data.message_type}.${data.sub_type}`, data)
|
|
||||||
Bot.emit(`${data.post_type}.${data.message_type}`, data)
|
|
||||||
Bot.emit(`${data.post_type}`, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async makeNotice(data) {
|
async makeNotice(data) {
|
||||||
|
@ -756,10 +740,7 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
Object.defineProperty(data, "friend", { get() { return this.member || {}}})
|
Object.defineProperty(data, "friend", { get() { return this.member || {}}})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.sub_type)
|
Bot.em(`${data.post_type}.${data.notice_type}.${data.sub_type}`, data)
|
||||||
Bot.emit(`${data.post_type}.${data.notice_type}.${data.sub_type}`, data)
|
|
||||||
Bot.emit(`${data.post_type}.${data.notice_type}`, data)
|
|
||||||
Bot.emit(`${data.post_type}`, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
makeRequest(data) {
|
makeRequest(data) {
|
||||||
|
@ -778,10 +759,7 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
}
|
}
|
||||||
|
|
||||||
data.bot.request_list.push(data)
|
data.bot.request_list.push(data)
|
||||||
if (data.sub_type)
|
Bot.em(`${data.post_type}.${data.request_type}.${data.sub_type}`, data)
|
||||||
Bot.emit(`${data.post_type}.${data.request_type}.${data.sub_type}`, data)
|
|
||||||
Bot.emit(`${data.post_type}.${data.request_type}`, data)
|
|
||||||
Bot.emit(`${data.post_type}`, data)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
heartbeat(data) {
|
heartbeat(data) {
|
||||||
|
@ -847,7 +825,6 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
logger.warn(`${logger.blue(`[${data.self_id}]`)} 未知消息:${logger.magenta(JSON.stringify(data))}`)
|
logger.warn(`${logger.blue(`[${data.self_id}]`)} 未知消息:${logger.magenta(JSON.stringify(data))}`)
|
||||||
}
|
}
|
||||||
} else if (data.echo) {
|
} else if (data.echo) {
|
||||||
logger.debug(`请求 API 返回:${logger.cyan(JSON.stringify(data))}`)
|
|
||||||
Bot.emit(data.echo, data)
|
Bot.emit(data.echo, data)
|
||||||
} else {
|
} else {
|
||||||
logger.warn(`${logger.blue(`[${data.self_id}]`)} 未知消息:${logger.magenta(JSON.stringify(data))}`)
|
logger.warn(`${logger.blue(`[${data.self_id}]`)} 未知消息:${logger.magenta(JSON.stringify(data))}`)
|
||||||
|
@ -855,11 +832,10 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
}
|
}
|
||||||
|
|
||||||
load() {
|
load() {
|
||||||
Bot.wss[this.path] = new WebSocketServer({ noServer: true })
|
if (!Array.isArray(Bot.wsf[this.path]))
|
||||||
Bot.wss[this.path].on("connection", ws => ws
|
Bot.wsf[this.path] = []
|
||||||
.on("error", logger.error)
|
Bot.wsf[this.path].push((ws, ...args) =>
|
||||||
.on("message", data => this.message(data, ws))
|
ws.on("message", data => this.message(data, ws, ...args))
|
||||||
)
|
)
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
})
|
})
|
Loading…
Reference in New Issue