diff --git a/lib/plugins/loader.js b/lib/plugins/loader.js index d1b0942..55f19d2 100644 --- a/lib/plugins/loader.js +++ b/lib/plugins/loader.js @@ -350,38 +350,36 @@ class PluginsLoader { * @param e.isMaster 是否管理员 * @param e.logText 日志用户字符串 * @param e.logFnc 日志方法字符串 - - * 频道 - * @param e.isGuild 是否频道 - * @param e.at 支持频道 tiny_id - * @param e.atBot 支持频道 - */ dealMsg(e) { - if (e.message) { - for (let val of e.message) { - switch (val.type) { - case "text": - e.msg = (e.msg || "") + (val.text || "").replace(/^\s*[##井]+\s*/, "#").replace(/^\s*[\\**※]+\s*/, "*").trim() - break - case "image": - if (!e.img) { - e.img = [] - } - e.img.push(val.url) - break - case "at": - if (val.qq == e.self_id || val.qq == e.self_tiny_id) { - e.atBot = true - } else { - /** 多个at 以最后的为准 */ - e.at = val.qq - } - break - case "file": - e.file = { name: val.name, fid: val.fid } - break - } + if (e.message) for (const i of e.message) { + switch (i.type) { + case "text": + if (!e.msg) e.msg = "" + if (i.text) e.msg += i.text.replace(/^\s*[##井]+\s*/, "#").replace(/^\s*[\\**※]+\s*/, "*").trim() + break + case "image": + if (Array.isArray(e.img)) + e.img.push(i.url) + else + e.img = [i.url] + break + case "at": + if (i.qq == e.self_id) + e.atBot = true + else + e.at = i.qq + break + case "reply": + e.reply_id = i.id + if (e.group?.getMsg) + e.getReply = () => e.group.getMsg(e.reply_id) + else if (e.friend?.getMsg) + e.getReply = () => e.friend.getMsg(e.reply_id) + break + case "file": + e.file = val + break } } diff --git a/plugins/adapter/go-cqhttp.js b/plugins/adapter/go-cqhttp.js index ca9c3d4..94bc6f8 100644 --- a/plugins/adapter/go-cqhttp.js +++ b/plugins/adapter/go-cqhttp.js @@ -89,8 +89,17 @@ Bot.adapter.push(new class gocqhttpAdapter { }) } - getMsg(data, message_id) { - return data.sendApi("get_msg", { message_id }) + async getMsg(data, message_id) { + const msg = (await data.sendApi("get_msg", { message_id })).data + + if (msg?.message) { + const message = [] + for (const i of msg.message) + message.push({ ...i.data, type: i.type }) + msg.message = message + } + + return msg } recallMsg(data, message_id) { @@ -432,7 +441,9 @@ Bot.adapter.push(new class gocqhttpAdapter { return { ...i, sendMsg: msg => this.sendFriendMsg(i, msg), + getMsg: message_id => this.getMsg(i, message_id), recallMsg: message_id => this.recallMsg(i, message_id), + getForwardMsg: message_id => this.getForwardMsg(i, message_id), makeForwardMsg: Bot.makeForwardMsg, sendForwardMsg: msg => this.sendFriendForwardMsg(i, msg), sendFile: (file, name) => this.sendFriendFile(i, file, name), @@ -484,7 +495,9 @@ Bot.adapter.push(new class gocqhttpAdapter { return { ...i, sendMsg: msg => this.sendGuildMsg(i, msg), + getMsg: message_id => this.getMsg(i, message_id), recallMsg: message_id => this.recallMsg(i, message_id), + getForwardMsg: message_id => this.getForwardMsg(i, message_id), makeForwardMsg: Bot.makeForwardMsg, sendForwardMsg: msg => this.sendGuildForwardMsg(i, msg), getInfo: () => this.getGuildInfo(i), @@ -506,7 +519,9 @@ Bot.adapter.push(new class gocqhttpAdapter { return { ...i, sendMsg: msg => this.sendGroupMsg(i, msg), + getMsg: message_id => this.getMsg(i, message_id), recallMsg: message_id => this.recallMsg(i, message_id), + getForwardMsg: message_id => this.getForwardMsg(i, message_id), makeForwardMsg: Bot.makeForwardMsg, sendForwardMsg: msg => this.sendGroupForwardMsg(i, msg), sendFile: (file, name) => this.sendGroupFile(i, file, undefined, name), @@ -532,10 +547,6 @@ Bot.adapter.push(new class gocqhttpAdapter { sendApi: data.sendApi, stat: { start_time: data.time }, - getMsg: message_id => this.getMsg(data, message_id), - recallMsg: message_id => this.recallMsg(data, message_id), - getForwardMsg: message_id => this.getForwardMsg(data, message_id), - pickUser: user_id => this.pickFriend(data, user_id), pickFriend: user_id => this.pickFriend(data, user_id),