From afaa991ef33b2d32fa2272009e0f8a9f7232a834 Mon Sep 17 00:00:00 2001 From: yeyang <746659424@qq.com> Date: Sat, 15 Oct 2022 17:25:16 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=A2=AB=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E4=B8=BA=E5=8F=AA=E5=85=B3=E6=B3=A8=E8=A2=AB=E8=89=BE=E7=89=B9?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=97=B6=E4=B8=8D=E8=83=BD=E6=92=A4=E5=9B=9E?= =?UTF-8?q?=E7=9B=91=E5=90=AC=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/notice_message.js | 378 +++++++++++++++++++++-------------------- apps/set.js | 15 +- 2 files changed, 191 insertions(+), 202 deletions(-) diff --git a/apps/notice_message.js b/apps/notice_message.js index 9780c46..9f615ed 100644 --- a/apps/notice_message.js +++ b/apps/notice_message.js @@ -11,192 +11,194 @@ export class anotice extends plugin { priority: 2000, }) } - - async accept(e) { - // 判断是否为机器人消息 - if (e.user_id == cfg.qq) return - // 判断是否主人消息 - if (cfg.masterQQ.includes(e.user_id)) return - //删除缓存时间 - let deltime = Number(await redis.get(`yenai:notice:deltime`)) - // 判断群聊还是私聊 - if (e.isGroup) { - // 关闭撤回停止存储 - if (await redis.get(`yenai:notice:groupRecall`)) { - // 写入 - await redis.set( - `notice:messageGroup:${e.message_id}`, - JSON.stringify(e.message), - { EX: deltime } - ) - } - } else if (e.isPrivate) { - // 关闭撤回停止存储 - if (await redis.get(`yenai:notice:PrivateRecall`)) { - // 写入 - await redis.set( - `notice:messagePrivate:${e.message_id}`, - JSON.stringify(e.message), - { EX: deltime } - ) - } - } - - // 消息通知 - let msg = '' - let forwardMsg - if ( - e.message[0].type == 'flash' && - e.message_type === 'group' && - await redis.get(`yenai:notice:flashPhoto`) - ) { - logger.mark("[椰奶]群聊闪照") - msg = [ - segment.image(`https://p.qlogo.cn/gh/${e.group_id}/${e.group_id}/100`), - '[消息 - 闪照消息]\n', - `发送人QQ:${e.user_id}\n`, - `发送人昵称:${e.sender.nickname}\n`, - `来源群号:${e.group_id}\n`, - `来源群名:${e.group_name}\n`, - `闪照链接:${e.message[0].url}` - ] - } else if ( - e.message[0].type == 'flash' && - e.message_type === 'discuss' && - await redis.get(`yenai:notice:flashPhoto`) - ) { - logger.mark("[椰奶]讨论组闪照") - msg = [ - segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`), - '[消息 - 闪照消息]\n', - `发送人QQ:${e.user_id}\n`, - `发送人昵称:${e.sender.nickname}\n`, - `讨论组号:${e.discuss_id}\n`, - `讨论组名:${e.discuss_name}\n`, - `闪照链接:${e.message[0].url}` - ] - } else if ( - e.message[0].type == 'flash' && - e.message_type === 'private' && - await redis.get(`yenai:notice:flashPhoto`) - ) { - logger.mark("[椰奶]好友闪照") - msg = [ - segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`), - '[消息 - 闪照消息]\n', - `发送人QQ:${e.user_id}\n`, - `发送人昵称:${e.sender.nickname}\n`, - `闪照链接:${e.message[0].url}` - ] - } else if (e.message_type === 'private' && e.sub_type === 'friend') { - if (!await redis.get(`yenai:notice:privateMessage`)) return - - let res = e.message - // 特殊消息处理 - let arr = this.getSpecial(e.message) - if (arr) { - forwardMsg = arr.msg - res = arr.type - } - logger.mark("[椰奶]好友消息") - msg = [ - segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`), - '[消息 - 好友消息]\n', - `好友QQ:${e.user_id}\n`, - `好友昵称:${e.sender.nickname}\n`, - '消息内容:', - ...res - ] - // 添加提示消息 - let key = `tz:privateMessage:${e.user_id}` - if (!(await redis.get(key))) { - await redis.set(key, '1', { EX: 600 }) - msg.push( - '\n-------------\n', - '引用该消息:回复 <内容>\n', - `或发送:回复 ${e.user_id} <内容>` - ) - } - } else if (e.message_type === 'private' && e.sub_type === 'group') { - if (!await redis.get(`yenai:notice:grouptemporaryMessage`)) return - // 特殊消息处理 - let res = e.message - let arr = this.getSpecial(e.message) - if (arr) { - forwardMsg = arr.msg - res = arr.type - } - logger.mark("[椰奶]群临时消息") - // 发送的消息 - msg = [ - segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`), - '[消息 - 群临时消息]\n', - `来源群号:${e.sender.group_id}\n`, - `发送人QQ:${e.user_id}\n`, - '消息内容:', - ...res - ] - } else if (e.message_type === 'group') { - if (!await redis.get(`yenai:notice:groupMessage`)) return - // 特殊消息处理 - let res = e.message - let arr = this.getSpecial(e.message) - if (arr) { - forwardMsg = arr.msg - res = arr.type - } - logger.mark("[椰奶]群聊消息") - msg = [ - segment.image(`https://p.qlogo.cn/gh/${e.group_id}/${e.group_id}/100`), - '[消息 - 群聊消息]\n', - `来源群号:${e.group_id}\n`, - `来源群名:${e.group_name}\n`, - `发送人QQ:${e.user_id}\n`, - `发送人昵称:${e.sender.nickname}\n`, - '消息内容:', - ...res - ] - } else if (e.message_type === 'discuss') { - if (!await redis.get(`yenai:notice:groupMessage`)) return - logger.mark("[椰奶]讨论组消息") - msg = [ - segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`), - '[消息 - 群聊消息]\n', - `来源讨论组号:${e.discuss_id}\n`, - `来源讨论组名:${e.discuss_name}\n`, - `发送人QQ:${e.user_id}\n`, - `发送人昵称:${e.sender.nickname}\n`, - `消息内容:${e.raw_message}` - ] - } - // 发送消息 - await xcfg.getSend(msg) - if (forwardMsg) { - await xcfg.getSend(forwardMsg) - } - } - - // 特殊消息处理 - getSpecial(msg) { - let res = msg - if (res[0].type === 'record') { - // 语音 - return { - msg: segment.record(res[0].url), - type: '[语音]' - } - } else if (res[0].type === 'video') { - // 视频 - return { - msg: segment.video(res[0].file), - type: '[视频]' - } - } else if (res[0].type === 'xml') { - // 合并消息 - return { - msg: res, - type: '[合并消息]' - } - } else return false - } } + +Bot.on("message", async (e) => { + + // 判断是否为机器人消息 + if (e.user_id == cfg.qq) return + // 判断是否主人消息 + if (cfg.masterQQ.includes(e.user_id)) return + //删除缓存时间 + let deltime = Number(await redis.get(`yenai:notice:deltime`)) + // 判断群聊还是私聊 + if (e.isGroup) { + // 关闭撤回停止存储 + if (await redis.get(`yenai:notice:groupRecall`)) { + // 写入 + await redis.set( + `notice:messageGroup:${e.message_id}`, + JSON.stringify(e.message), + { EX: deltime } + ) + } + } else if (e.isPrivate) { + // 关闭撤回停止存储 + if (await redis.get(`yenai:notice:PrivateRecall`)) { + // 写入 + await redis.set( + `notice:messagePrivate:${e.message_id}`, + JSON.stringify(e.message), + { EX: deltime } + ) + } + } + + // 消息通知 + let msg = '' + let forwardMsg + if ( + e.message[0].type == 'flash' && + e.message_type === 'group' && + await redis.get(`yenai:notice:flashPhoto`) + ) { + logger.mark("[椰奶]群聊闪照") + msg = [ + segment.image(`https://p.qlogo.cn/gh/${e.group_id}/${e.group_id}/100`), + '[消息 - 闪照消息]\n', + `发送人QQ:${e.user_id}\n`, + `发送人昵称:${e.sender.nickname}\n`, + `来源群号:${e.group_id}\n`, + `来源群名:${e.group_name}\n`, + `闪照链接:${e.message[0].url}` + ] + } else if ( + e.message[0].type == 'flash' && + e.message_type === 'discuss' && + await redis.get(`yenai:notice:flashPhoto`) + ) { + logger.mark("[椰奶]讨论组闪照") + msg = [ + segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`), + '[消息 - 闪照消息]\n', + `发送人QQ:${e.user_id}\n`, + `发送人昵称:${e.sender.nickname}\n`, + `讨论组号:${e.discuss_id}\n`, + `讨论组名:${e.discuss_name}\n`, + `闪照链接:${e.message[0].url}` + ] + } else if ( + e.message[0].type == 'flash' && + e.message_type === 'private' && + await redis.get(`yenai:notice:flashPhoto`) + ) { + logger.mark("[椰奶]好友闪照") + msg = [ + segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`), + '[消息 - 闪照消息]\n', + `发送人QQ:${e.user_id}\n`, + `发送人昵称:${e.sender.nickname}\n`, + `闪照链接:${e.message[0].url}` + ] + } else if (e.message_type === 'private' && e.sub_type === 'friend') { + if (!await redis.get(`yenai:notice:privateMessage`)) return + + let res = e.message + // 特殊消息处理 + let arr = getSpecial(e.message) + if (arr) { + forwardMsg = arr.msg + res = arr.type + } + logger.mark("[椰奶]好友消息") + msg = [ + segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`), + '[消息 - 好友消息]\n', + `好友QQ:${e.user_id}\n`, + `好友昵称:${e.sender.nickname}\n`, + '消息内容:', + ...res + ] + // 添加提示消息 + let key = `tz:privateMessage:${e.user_id}` + if (!(await redis.get(key))) { + await redis.set(key, '1', { EX: 600 }) + msg.push( + '\n-------------\n', + '引用该消息:回复 <内容>\n', + `或发送:回复 ${e.user_id} <内容>` + ) + } + } else if (e.message_type === 'private' && e.sub_type === 'group') { + if (!await redis.get(`yenai:notice:grouptemporaryMessage`)) return + // 特殊消息处理 + let res = e.message + let arr = getSpecial(e.message) + if (arr) { + forwardMsg = arr.msg + res = arr.type + } + logger.mark("[椰奶]群临时消息") + // 发送的消息 + msg = [ + segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`), + '[消息 - 群临时消息]\n', + `来源群号:${e.sender.group_id}\n`, + `发送人QQ:${e.user_id}\n`, + '消息内容:', + ...res + ] + } else if (e.message_type === 'group') { + if (!await redis.get(`yenai:notice:groupMessage`)) return + // 特殊消息处理 + let res = e.message + let arr = getSpecial(e.message) + if (arr) { + forwardMsg = arr.msg + res = arr.type + } + logger.mark("[椰奶]群聊消息") + msg = [ + segment.image(`https://p.qlogo.cn/gh/${e.group_id}/${e.group_id}/100`), + '[消息 - 群聊消息]\n', + `来源群号:${e.group_id}\n`, + `来源群名:${e.group_name}\n`, + `发送人QQ:${e.user_id}\n`, + `发送人昵称:${e.sender.nickname}\n`, + '消息内容:', + ...res + ] + } else if (e.message_type === 'discuss') { + if (!await redis.get(`yenai:notice:groupMessage`)) return + logger.mark("[椰奶]讨论组消息") + msg = [ + segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}`), + '[消息 - 群聊消息]\n', + `来源讨论组号:${e.discuss_id}\n`, + `来源讨论组名:${e.discuss_name}\n`, + `发送人QQ:${e.user_id}\n`, + `发送人昵称:${e.sender.nickname}\n`, + `消息内容:${e.raw_message}` + ] + } + // 发送消息 + await xcfg.getSend(msg) + if (forwardMsg) { + await xcfg.getSend(forwardMsg) + } +}) + +// 特殊消息处理 +function getSpecial(msg) { + let res = msg + if (res[0].type === 'record') { + // 语音 + return { + msg: segment.record(res[0].url), + type: '[语音]' + } + } else if (res[0].type === 'video') { + // 视频 + return { + msg: segment.video(res[0].file), + type: '[视频]' + } + } else if (res[0].type === 'xml') { + // 合并消息 + return { + msg: res, + type: '[合并消息]' + } + } else return false +} + diff --git a/apps/set.js b/apps/set.js index 440471d..8cc0777 100644 --- a/apps/set.js +++ b/apps/set.js @@ -3,7 +3,6 @@ import fs from "fs"; import lodash from "lodash"; import Common from "../components/Common.js"; import common from '../../../lib/common/common.js' -import cfg from "../../../lib/config/config.js"; export class NewConfig extends plugin { @@ -43,11 +42,6 @@ export class NewConfig extends plugin { // 解析消息 let index = e.msg.replace(/#|椰奶设置|开启|关闭/g, "") - let groupCfg = cfg.getConfig('group')?.default - - if (groupCfg.onlyReplyAt == 1 && configs[index] == "groupRecall") { - return e.reply('❎ 因您开启了"仅关注主动@机器人的消息",群撤回监听无法生效!!!') - } if (!configs.hasOwnProperty(index)) return // 开启还是关闭 @@ -58,7 +52,7 @@ export class NewConfig extends plugin { logger.error(`[椰奶]启用失败${index}`, err) }) } else { - await redis.del(`yenai:notice:${index}`).then(() => { + await redis.del(`yenai:notice:${configs[index]}`).then(() => { logger.mark(`[椰奶]已禁用${index}`) }).catch(err => { logger.error(`[椰奶]禁用失败${index}`, err) @@ -98,17 +92,10 @@ export class NewConfig extends plugin { } let no = ["sese", "deltime", "notificationsAll"] - let groupCfg = cfg.getConfig('group')?.default - if (yes) { for (let i in configs) { if (no.includes(configs[i])) continue - if (groupCfg.onlyReplyAt == 1 && configs[i] == "groupRecall") { - e.reply('❎ 因您开启了"仅关注主动@机器人的消息",群撤回监听无法生效!!!') - continue - } - await redis.set(`yenai:notice:${configs[i]}`, "1").then(() => { logger.mark(`[椰奶]已启用${i}`) }).catch(err => {