From 4ac2a7ea19fdb67a135bb0ccdeab205b03b6b73c Mon Sep 17 00:00:00 2001 From: yeyang <746659424@qq.com> Date: Thu, 10 Nov 2022 01:33:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9F=A5=E7=9C=8B=E7=8E=B0?= =?UTF-8?q?=E6=9C=89=E7=BE=A4=E9=82=80=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/gp_admin.js | 10 ++-- apps/handle.js | 113 +++++++++++++++++++++++++++++++++-- config/system/help_system.js | 8 +++ 3 files changed, 121 insertions(+), 10 deletions(-) diff --git a/apps/gp_admin.js b/apps/gp_admin.js index 2b7690b..80dd352 100644 --- a/apps/gp_admin.js +++ b/apps/gp_admin.js @@ -259,14 +259,12 @@ export class Basics extends plugin { if (!e.isMaster && !e.member.is_owner && !e.member.is_admin) { return e.reply("❎ 该命令仅限管理员可用", true); } - let qq = e.message[0].text.replace(/#|踢/g, "").trim() + let qq = e.msg.replace(/#|踢/g, "").trim() - if (e.message[1]) { - qq = e.message[1].qq - } else { - qq = qq.match(/[1-9]\d*/g) + if (e.message.length != 1) { + qq = e.message.find(item => item.type == "at")?.qq } - if (!(/\d{5,}/.test(qq))) return e.reply("❎ 请输入正确的QQ号"); + if (!qq || !(/\d{5,}/.test(qq))) return e.reply("❎ 请输入正确的QQ号"); //判断是否为主人 if (config.masterQQ?.includes(Number(qq))) { return e.reply("居然调戏主人!!!哼,坏蛋(ノ`⊿´)ノ"); diff --git a/apps/handle.js b/apps/handle.js index 1f12227..411d635 100644 --- a/apps/handle.js +++ b/apps/handle.js @@ -4,6 +4,11 @@ import common from '../../../lib/common/common.js' import { segment } from 'oicq' import Cfg from '../model/Config.js'; import moment from 'moment'; +const ROLE_MAP = { + "admin": '群管理', + "owner": '群主', + "member": '群员' +} export class anotice extends plugin { constructor() { super({ @@ -36,9 +41,17 @@ export class anotice extends plugin { fnc: 'agreesAll' }, { - reg: '^#(同意|拒绝|查看)(全部)?加群申请.*$', + reg: '^#(同意|拒绝|查看)(全部)?(加|入)群申请.*$', fnc: 'GroupAdd' }, + { + reg: '^#(同意|拒绝|查看)(全部)?群邀请.*$', + fnc: 'GroupInvite' + }, + { + reg: '^#查看全部请求$', + fnc: 'SystemMsgAll' + } ] }) } @@ -80,7 +93,7 @@ export class anotice extends plugin { FriendAdd = FriendAdd.map((item) => { return [ segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${item.user_id}`), - `申请人QQ:${item.user_id}\n`, + `\n申请人QQ:${item.user_id}\n`, `申请人昵称:${item.nickname}\n`, `申请来源:${item.source || '未知'}\n`, `申请时间:${moment(item.time * 1000).format(`YYYY-MM-DD HH:mm:ss`)}\n`, @@ -235,8 +248,11 @@ export class anotice extends plugin { .then(() => e.reply(`✅ 已向${qq}发送了好友请求`)) .catch(() => e.reply("❎ 发送请求失败")) } + //入群请求 async GroupAdd(e) { + if (!e.isGroup) return e.reply("请在群聊使用此命令哦~") + let SystemMsg = (await Bot.getSystemMsg()) .filter(item => item.request_type == "group" && item.sub_type == "add" && item.group_id == e.group_id) if (lodash.isEmpty(SystemMsg)) return e.reply("暂无加群申请(。-ω-)zzz", true) @@ -275,7 +291,7 @@ export class anotice extends plugin { fail.push(`${fail.length + 1}、${i.user_id}`) } } - await Cfg.sleep(200) + await Cfg.sleep(1000) } let msg = [ `本次共处理${SystemMsg.length}条群申请\n成功:${success.length}\n失败:${fail.length}\n风险:${risk.length}` @@ -285,7 +301,7 @@ export class anotice extends plugin { if (!lodash.isEmpty(risk)) msg.push([`以下为风险账号名单:\n`, risk.join("\n")]) Cfg.getforwardMsg(e, msg) } else { - let qq = e.msg.replace(/#(同意|拒绝)加群申请/g, "").trim() + let qq = e.msg.replace(/#(同意|拒绝)(加|入)群申请/g, "").trim() if (!qq) return e.reply("QQ号呢,QQ号呢d(ŐдŐ๑)", true) @@ -302,4 +318,93 @@ export class anotice extends plugin { } } } + //群邀请列表 + async GroupInvite(e) { + if (!e.isMaster) return e.reply("❎ 该命令仅限主人可用", true); + let SystemMsg = (await Bot.getSystemMsg()).filter(item => item.request_type == "group" && item.sub_type == "invite") + if (lodash.isEmpty(SystemMsg)) return e.reply("暂无群邀请哦(。-ω-)zzz", true) + //查看 + if (/查看/.test(e.msg)) { + SystemMsg = SystemMsg.map(item => { + return [ + segment.image(`https://p.qlogo.cn/gh/${item.group_id}/${item.group_id}/100`), + `\n邀请群号:${item.group_id}\n`, + `邀请群名:${item.group_name}\n`, + `邀请人QQ:${item.user_id}\n`, + `邀请人昵称:${item.nickname}\n`, + `邀请人身份:${ROLE_MAP[item.role]}` + ] + }) + let msg = [ + `现有未处理的群邀请如下,总共${SystemMsg.length}条`, + `可使用 "#(同意|拒绝)群邀请xxx"\n或 "#(同意|拒绝)全部群邀请"`, + ...SystemMsg + ] + return Cfg.getforwardMsg(e, msg) + } + + await e.reply("好哒,我开始处理辣٩(๑•ㅂ•)۶") + let yes = /同意/.test(e.msg) ? true : false + let success = [], fail = [] + if (/全部/.test(e.msg)) { + for (let i of SystemMsg) { + if (await i.approve(yes)) { + success.push(`${success.length + 1}、${i.user_id}`) + } else { + fail.push(`${fail.length + 1}、${i.user_id}`) + } + await Cfg.sleep(1000) + } + let msg = [`本次共处理${SystemMsg.length}条群邀请\n成功:${success.length}\n失败:${fail.length}`] + if (!lodash.isEmpty(success)) msg.push([`以下为成功的名单:\n`, success.join("\n")]) + if (!lodash.isEmpty(fail)) msg.push([`以下为失败的名单:\n`, fail.join("\n")]) + Cfg.getforwardMsg(e, msg) + } else { + let groupid = e.msg.replace(/#(同意|拒绝)群邀请/g, "").trim() + + if (!groupid) return e.reply("群号呢,群号呢d(ŐдŐ๑)", true) + + let Invite = SystemMsg.filter(item => item.group_id == groupid) + + if (lodash.isEmpty(Invite)) return e.reply("欸,你似不似傻哪有这个群邀请(O∆O)") + + if (await Invite[0].approve(yes)) { + e.reply(`已${yes ? '同意' : '拒绝'}${Invite[0].group_id}这个群邀请辣٩(๑^o^๑)۶`) + } else { + e.reply(`呜呜呜,处理失败辣(இωஇ)`) + } + } + } + //全部请求 + async SystemMsgAll(e) { + if (!e.isMaster) return e.reply("❎ 该命令仅限主人可用", true); + let SystemMsg = await Bot.getSystemMsg() + let FriendAdd = [], onewayFriend = [], GroupAdd = [], GroupInvite = [] + for (let i of SystemMsg) { + if (request_type == "friend") { + if (sub_type == 'add') { + FriendAdd.push(i) + } else { + onewayFriend.push(i) + } + } else { + if (sub_type == "add") { + GroupAdd.push(i) + } else { + GroupInvite.push(i) + } + } + } + let msg = [] + if (!lodash.isEmpty(FriendAdd)) msg.push(`好友申请:${FriendAdd.length}条\n可使用"#查看好友申请" 查看详情`) + if (!lodash.isEmpty(GroupInvite)) msg.push(`群邀请:${FriendAdd.length}条\n可使用"#查看群邀请" 查看详情`) + if (!lodash.isEmpty(onewayFriend)) msg.push(`单向好友:${onewayFriend.length}条`) + if (e.isGroup) { + GroupAdd = GroupAdd.filter(item => item.group_id == e.group.id) + if (!lodash.isEmpty(GroupAdd)) msg.push(`当前群申请:${GroupAdd.length}`) + } + if (lodash.isEmpty(msg)) return e.reply("好耶!!一条请求都没有哦o( ❛ᴗ❛ )o") + msg.unshift("以下为暂未处理的请求") + Cfg.getforwardMsg(e, msg) + } } \ No newline at end of file diff --git a/config/system/help_system.js b/config/system/help_system.js index 020fe2c..2d9ce41 100644 --- a/config/system/help_system.js +++ b/config/system/help_system.js @@ -128,6 +128,14 @@ export const helpList = [{ "title": "#查看好友申请", "desc": "查看现有好友申请", "icon": 1 + }, { + "title": "#查看群邀请", + "desc": "查看现有群邀请", + "icon": 7 + }, { + "title": "同意|拒绝全部群邀请", + "desc": "同意或拒绝全部群邀请", + "icon": 7 }] }, {