diff --git a/.puppeteerrc.cjs b/.puppeteerrc.cjs index 8ff4fe9..cff2701 100644 --- a/.puppeteerrc.cjs +++ b/.puppeteerrc.cjs @@ -1,33 +1,12 @@ -const os = require("os"); -const { existsSync } = require("fs"); -const arch = os.arch(); -let skipDownload = false; -let executablePath; -//win32 存在 Edge 优先选择 -if (process.platform == "win32") { - if ( - existsSync("C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe") - ) { - skipDownload = true; - executablePath = - "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"; - } -} else if (process.platform == "linux") { - //如果arm64架构跳过下载 - if (arch == "arm64" || arch == "aarch64") { - skipDownload = true; - } - //不管什么架构,如果存在配置则跳过下载,且配置路径 - if (existsSync("/usr/bin/chromium")) { - skipDownload = true; - executablePath = "/usr/bin/chromium"; - } +const os = require("os") +const { existsSync } = require("fs") +let skipDownload = false +let executablePath +if (process.platform == "win32" && existsSync("C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe")) { + skipDownload = true + executablePath = "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe" +} else if (process.platform == "linux" && existsSync("/usr/bin/chromium")) { + skipDownload = true + executablePath = "/usr/bin/chromium" } - -/** - * @type {import("puppeteer").Configuration} - */ -module.exports = { - skipDownload, - executablePath, -}; \ No newline at end of file +module.exports = { skipDownload, executablePath } \ No newline at end of file diff --git a/lib/plugins/loader.js b/lib/plugins/loader.js index 3e07b8b..c0ba16f 100644 --- a/lib/plugins/loader.js +++ b/lib/plugins/loader.js @@ -169,6 +169,8 @@ class PluginsLoader { if (!this.checkBlack(e)) return /** 冷却 */ if (!this.checkLimit(e)) return + /** 处理事件 */ + this.dealEvent(e) /** 处理消息 */ this.dealMsg(e) /** 处理回复 */ @@ -338,6 +340,18 @@ class PluginsLoader { return true } + dealEvent(e) { + if (!e.friend && e.user_id) e.friend = e.bot.pickFriend(e.user_id) + if (!e.group && e.group_id) e.group = e.bot.pickGroup(e.group_id) + if (!e.member && e.group && e.user_id) e.member = e.group.pickMember(e.user_id) + for (const i of [e.friend, e.group, e.member]) { + if (typeof i != "object") continue + if (!i.makeForwardMsg) i.makeForwardMsg = Bot.makeForwardMsg + if (!i.sendForwardMsg) i.sendForwardMsg = msg => Bot.sendForwardMsg(msg => i.sendMsg(msg), msg) + if (!i.getInfo) i.getInfo = () => i + } + } + /** * 处理消息,加入自定义字段 * @param e.msg 文本消息,多行会自动拼接 diff --git a/lib/plugins/stdin.js b/lib/plugins/stdin.js index af58aa9..89ae63f 100644 --- a/lib/plugins/stdin.js +++ b/lib/plugins/stdin.js @@ -107,8 +107,6 @@ Bot.adapter.push(new class stdinAdapter { group_name: this.name, sendMsg: msg => this.sendMsg(msg), recallMsg: message_id => this.recallMsg(message_id), - makeForwardMsg: Bot.makeForwardMsg, - sendForwardMsg: msg => Bot.sendForwardMsg(msg => this.sendMsg(msg), msg), sendFile: (file, name) => this.sendFile(file, name), } } diff --git a/package.json b/package.json index 18558b4..ec75ea0 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "node-xlsx": "^0.23.0", "oicq": "link:lib/modules/oicq", "pm2": "^5.3.0", - "puppeteer": "^21.0.1", + "puppeteer": "^21.0.3", "redis": "^4.6.7", "sequelize": "^6.32.1", "sqlite3": "^5.1.6", @@ -40,7 +40,7 @@ "yaml": "^2.3.1" }, "devDependencies": { - "eslint": "^8.46.0", + "eslint": "^8.47.0", "eslint-config-standard": "^17.1.0", "eslint-plugin-import": "^2.28.0", "eslint-plugin-n": "^16.0.1", diff --git a/plugins/adapter/ComWeChat.js b/plugins/adapter/ComWeChat.js index 44b55e0..efe5768 100644 --- a/plugins/adapter/ComWeChat.js +++ b/plugins/adapter/ComWeChat.js @@ -241,9 +241,6 @@ Bot.adapter.push(new class ComWeChatAdapter { return { ...i, sendMsg: msg => this.sendFriendMsg(i, msg), - recallMsg: () => false, - makeForwardMsg: Bot.makeForwardMsg, - sendForwardMsg: msg => Bot.sendForwardMsg(msg => this.sendFriendMsg(i, msg), msg), sendFile: (file, name) => this.sendFile(i, msg => this.sendFriendMsg(i, msg), file, name), getInfo: () => this.getFriendInfo(i), getAvatarUrl: async () => (await this.getFriendInfo(i))["wx.avatar"], @@ -274,9 +271,6 @@ Bot.adapter.push(new class ComWeChatAdapter { return { ...i, sendMsg: msg => this.sendGroupMsg(i, msg), - recallMsg: () => false, - makeForwardMsg: Bot.makeForwardMsg, - sendForwardMsg: msg => Bot.sendForwardMsg(msg => this.sendGroupMsg(i, msg), msg), sendFile: (file, name) => this.sendFile(i, msg => this.sendGroupMsg(i, msg), file, name), getInfo: () => this.getGroupInfo(i), getAvatarUrl: async () => (await this.getGroupInfo(i))["wx.avatar"], @@ -367,13 +361,9 @@ Bot.adapter.push(new class ComWeChatAdapter { switch (data.message_type) { case "private": logger.info(`${logger.blue(`[${data.self_id}]`)} 好友消息:[${data.user_id}] ${data.raw_message}`) - data.friend = data.bot.pickFriend(data.user_id) break case "group": logger.info(`${logger.blue(`[${data.self_id}]`)} 群消息:[${data.group_id}, ${data.user_id}] ${data.raw_message}`) - data.friend = data.bot.pickFriend(data.user_id) - data.group = data.bot.pickGroup(data.group_id) - data.member = data.group.pickMember(data.user_id) break default: logger.warn(`${logger.blue(`[${data.self_id}]`)} 未知消息:${logger.magenta(JSON.stringify(data))}`) diff --git a/plugins/adapter/GSUIDCore.js b/plugins/adapter/GSUIDCore.js index f53b633..9af9e58 100644 --- a/plugins/adapter/GSUIDCore.js +++ b/plugins/adapter/GSUIDCore.js @@ -116,10 +116,6 @@ Bot.adapter.push(new class GSUIDCoreAdapter { return { ...i, sendMsg: msg => this.sendFriendMsg(i, msg), - recallMsg: () => false, - makeForwardMsg: Bot.makeForwardMsg, - sendForwardMsg: msg => Bot.sendForwardMsg(msg => this.sendFriendMsg(i, msg), msg), - getInfo: () => i, } } @@ -147,10 +143,6 @@ Bot.adapter.push(new class GSUIDCoreAdapter { return { ...i, sendMsg: msg => this.sendGroupMsg(i, msg), - recallMsg: () => false, - makeForwardMsg: Bot.makeForwardMsg, - sendForwardMsg: msg => Bot.sendForwardMsg(msg => this.sendGroupMsg(i, msg), msg), - getInfo: () => i, pickMember: user_id => this.pickMember(id, group_id, user_id), } } @@ -245,16 +237,12 @@ Bot.adapter.push(new class GSUIDCoreAdapter { if (data.user_type == "direct") { data.message_type = "private" logger.info(`${logger.blue(`[${data.self_id}]`)} 好友消息:[${data.user_id}] ${data.raw_message}`) - data.friend = data.bot.pickFriend(data.user_id) } else { data.message_type = "group" data.group_id = `${data.user_type}-${data.group_id}` if (!data.bot.gl.has(data.group_id)) data.bot.gl.set(data.group_id, { group_id: data.group_id }) logger.info(`${logger.blue(`[${data.self_id}]`)} 群消息:[${data.group_id}, ${data.user_id}] ${data.raw_message}`) - data.friend = data.bot.pickFriend(data.user_id) - data.group = data.bot.pickGroup(data.group_id) - data.member = data.group.pickMember(data.user_id) } Bot.emit(`${data.post_type}.${data.message_type}`, data) diff --git a/plugins/adapter/go-cqhttp.js b/plugins/adapter/go-cqhttp.js index ba40f52..ded51d4 100644 --- a/plugins/adapter/go-cqhttp.js +++ b/plugins/adapter/go-cqhttp.js @@ -630,21 +630,15 @@ Bot.adapter.push(new class gocqhttpAdapter { switch (data.message_type) { case "private": logger.info(`${logger.blue(`[${data.self_id}]`)} 好友消息:[${data.sender.nickname}(${data.user_id})] ${data.raw_message}`) - data.friend = data.bot.pickFriend(data.user_id) break case "group": logger.info(`${logger.blue(`[${data.self_id}]`)} 群消息:[${data.group_id}, ${data.sender.card||data.sender.nickname}(${data.user_id})] ${data.raw_message}`) - data.friend = data.bot.pickFriend(data.user_id) - data.group = data.bot.pickGroup(data.group_id) - data.member = data.group.pickMember(data.user_id) break case "guild": data.message_type = "group" data.group_id = `${data.guild_id}-${data.channel_id}` logger.info(`${logger.blue(`[${data.self_id}]`)} 频道消息:[${data.group_id}, ${data.sender.nickname}(${data.user_id})] ${JSON.stringify(data.message)}`) - data.group = data.bot.pickGroup(data.group_id) - data.member = data.group.pickMember(data.user_id) - data.friend = data.member + Object.defineProperty(data, "friend", { get() { return this.member }}) break default: logger.warn(`${logger.blue(`[${data.self_id}]`)} 未知消息:${logger.magenta(JSON.stringify(data))}`) @@ -757,16 +751,9 @@ Bot.adapter.push(new class gocqhttpAdapter { if (notice) data.sub_type = notice - if (data.user_id) - data.friend = data.bot.pickFriend(data.user_id) - if (data.group_id) { - data.group = data.bot.pickGroup(data.group_id) - data.member = data.group.pickMember(data.user_id) - } else if (data.guild_id && data.channel_id) { + if (data.guild_id && data.channel_id) { data.group_id = `${data.guild_id}-${data.channel_id}` - data.group = data.bot.pickGroup(data.group_id) - data.member = data.group.pickMember(data.user_id) - data.friend = data.member + Object.defineProperty(data, "friend", { get() { return this.member }}) } if (data.sub_type) @@ -780,14 +767,10 @@ Bot.adapter.push(new class gocqhttpAdapter { case "friend": logger.info(`${logger.blue(`[${data.self_id}]`)} 加好友请求:[${data.user_id}] ${data.comment}(${data.flag})`) data.sub_type = "add" - data.friend = data.bot.pickFriend(data.user_id) data.approve = approve => data.bot.setFriendAddRequest(data.flag, approve) break case "group": logger.info(`${logger.blue(`[${data.self_id}]`)} 加群请求:[${data.group_id}, ${data.user_id}] ${data.sub_type} ${data.comment}(${data.flag})`) - data.friend = data.bot.pickFriend(data.user_id) - data.group = data.bot.pickGroup(data.group_id) - data.member = data.group.pickMember(data.user_id) data.approve = approve => data.bot.setGroupAddRequest(data.flag, data.sub_type, approve) break default: