From 4ef745eaaf7bfcacacea556336cf2267ded2e683 Mon Sep 17 00:00:00 2001 From: yeyang <746659424@qq.com> Date: Mon, 9 Jan 2023 12:59:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=A4=E6=96=AD=E6=9D=83?= =?UTF-8?q?=E9=99=90bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assistant.js | 6 ++--- apps/gp_admin.js | 61 +++++++++++++++++++++++++-------------------- apps/groupverify.js | 26 ++++++++++--------- apps/handle.js | 21 ++++++++-------- 4 files changed, 61 insertions(+), 53 deletions(-) diff --git a/apps/assistant.js b/apps/assistant.js index 8fb0dd0..4d11407 100644 --- a/apps/assistant.js +++ b/apps/assistant.js @@ -109,12 +109,10 @@ export class example extends plugin { { reg: '^#改群头像.*$', fnc: 'GroupPhoto', - permission: 'admin' }, { reg: '^#改群昵称.*$', fnc: 'Groupname', - permission: 'admin' }, { reg: '^#获取(群|好友)列表$', @@ -228,7 +226,7 @@ export class example extends plugin { /**改群头像 */ async GroupPhoto(e) { if (e.isPrivate) { - if (!e.isMaster) return; + if (!e.isMaster) return logger.mark("[椰奶][改群头像]不为主人"); groupPhotoid = e.msg.replace(/#|改群头像/g, "").trim() if (!groupPhotoid) return e.reply("❎ 群号不能为空"); @@ -237,6 +235,7 @@ export class example extends plugin { if (!Bot.gl.get(Number(groupPhotoid))) return e.reply("❎ 群聊列表查无此群"); } else { + if (!e.member.is_admin && !e.member.is_owner && !e.isMaster) return logger.mark("[椰奶][改群头像]该群员权限不足") groupPhotoid = e.group_id } groupPhotoid = Number(groupPhotoid); @@ -296,6 +295,7 @@ export class example extends plugin { if (!group) return e.reply("❎ 群号不能为空"); if (!Bot.gl.get(Number(msg[1]))) return e.reply("❎ 群聊列表查无此群"); } else { + if (!e.member.is_admin && !e.member.is_owner && !e.isMaster) return logger.mark("[椰奶][改群昵称]该群员权限不足") group = e.group_id card = e.msg.replace(/#|改群昵称/g, "").trim() } diff --git a/apps/gp_admin.js b/apps/gp_admin.js index 8382eee..a0985a8 100644 --- a/apps/gp_admin.js +++ b/apps/gp_admin.js @@ -6,11 +6,12 @@ import { Cfg, Gpadmin, common, QQInterface, Browser } from '../model/index.js' import moment from 'moment' -/**API请求错误文案 */ +//API请求错误文案 const API_ERROR = "❎ 出错辣,请稍后重试" //无管理文案 const ROLE_ERROR = "做不到,怎么想我都做不到吧ヽ(≧Д≦)ノ" - +//权限不足文案 +const Permission_ERROR = "❎ 该命令仅限管理员可用" //正则 let Numreg = "[一壹二两三四五六七八九十百千万亿\\d]+" let noactivereg = new RegExp(`^#(查看|清理|确认清理|获取)(${Numreg})个?(年|月|周|天)没发言的人(第(${Numreg})页)?$`) @@ -26,52 +27,42 @@ export class Basics extends plugin { { reg: '^#禁言.*$', fnc: 'Taboo', - permission: 'admin' }, { reg: '^#解禁.*$', fnc: 'Relieve', - permission: 'admin' }, { reg: '^#全体(禁言|解禁)$', fnc: 'TabooAll', - permission: 'admin' }, { reg: '^#踢(.*)$', fnc: 'Kick', - permission: 'admin' }, { reg: '^#(设置|取消)管理.*$', fnc: 'SetAdmin', - permission: 'master' }, { reg: '^#(允许|禁止|开启|关闭)匿名$', fnc: 'AllowAnony', - permission: 'admin' }, { reg: '^#发群公告.*$', fnc: 'AddAnnounce', - permission: 'admin' }, { reg: '^#删群公告(\\d+)$', fnc: 'DelAnnounce', - permission: 'admin' }, { reg: '^#查群公告$', fnc: 'GetAnnounce', - permission: 'admin' }, { reg: '^#修改头衔.*$', fnc: 'adminsetTitle', - permission: 'master' }, { reg: '^#申请头衔.*$', @@ -88,12 +79,10 @@ export class Basics extends plugin { { reg: '^#替换(幸运)?字符(\\d+)$', fnc: 'qun_luckyuse', - permission: 'admin' }, { reg: '^#(开启|关闭)(幸运)?字符$', fnc: 'qun_luckyset', - permission: 'admin' }, { reg: '^#(获取|查看)?禁言列表$', @@ -102,12 +91,10 @@ export class Basics extends plugin { { reg: '^#解除全部禁言$', fnc: 'relieveAllMute', - permission: 'admin' }, { reg: `^#(查看|(确认)?清理)从未发言过?的人(第(${Numreg})页)?$`, fnc: 'neverspeak', - permission: 'admin' }, { reg: `^#(查看|获取)?(不活跃|潜水)排行榜(${Numreg})?$`, @@ -120,17 +107,14 @@ export class Basics extends plugin { { reg: noactivereg,//清理多久没发言的人 fnc: 'noactive', - permission: 'admin' }, { reg: `^#发通知.*$`, fnc: 'Send_notice', - permission: 'admin' }, { reg: `(^#定时禁言(.*)解禁(.*)$)|(^#定时禁言任务$)|(^#取消定时禁言$)`, fnc: 'timeMute', - permission: 'admin' }, { reg: `^#(查看|获取)?群?发言榜单((7|七)天)?`, @@ -177,7 +161,8 @@ export class Basics extends plugin { } /**禁言 */ async Taboo(e) { - + //判断权限 + if (!e.member.is_admin && !e.member.is_owner && !e.isMaster) return e.reply(Permission_ERROR) //判断是否有管理 if (!e.group.is_admin && !e.group.is_owner) { return e.reply(ROLE_ERROR, true); @@ -256,6 +241,8 @@ export class Basics extends plugin { } /**解禁 */ async Relieve(e) { + //判断权限 + if (!e.member.is_admin && !e.member.is_owner && !e.isMaster) return e.reply(Permission_ERROR) //判断是否有管理 if (!e.group.is_admin && !e.group.is_owner) { return e.reply(ROLE_ERROR, true); @@ -282,6 +269,8 @@ export class Basics extends plugin { } /**全体禁言 */ async TabooAll(e) { + //判断权限 + if (!e.member.is_admin && !e.member.is_owner && !e.isMaster) return e.reply(Permission_ERROR) //判断是否有管理 if (!e.group.is_admin && !e.group.is_owner) { return e.reply(ROLE_ERROR, true); @@ -305,6 +294,8 @@ export class Basics extends plugin { } //踢群员 async Kick(e) { + //判断权限 + if (!e.member.is_admin && !e.member.is_owner && !e.isMaster) return e.reply(Permission_ERROR) // 判断是否有管理 if (!e.group.is_admin && !e.group.is_owner) { return e.reply(ROLE_ERROR, true); @@ -362,6 +353,8 @@ export class Basics extends plugin { //设置管理 async SetAdmin(e) { + //判断权限 + if (!e.isMaster) return e.reply(Permission_ERROR) if (!e.group.is_owner) return e.reply(ROLE_ERROR, true) let qq @@ -395,6 +388,8 @@ export class Basics extends plugin { //匿名 async AllowAnony(e) { + //判断权限 + if (!e.member.is_admin && !e.member.is_owner && !e.isMaster) return e.reply(Permission_ERROR) //判断是否有管理 if (!e.group.is_admin && !e.group.is_owner) { return e.reply(ROLE_ERROR, true); @@ -419,6 +414,8 @@ export class Basics extends plugin { //发群公告 async AddAnnounce(e) { + //判断权限 + if (!e.member.is_admin && !e.member.is_owner && !e.isMaster) return e.reply(Permission_ERROR) //判断是否有管理 if (!e.group.is_admin && !e.group.is_owner) { return e.reply(ROLE_ERROR, true); @@ -442,6 +439,8 @@ export class Basics extends plugin { } //删群公告 async DelAnnounce(e) { + //判断权限 + if (!e.member.is_admin && !e.member.is_owner && !e.isMaster) return e.reply(Permission_ERROR) //判断是否有管理 if (!e.group.is_admin && !e.group.is_owner) { return e.reply(ROLE_ERROR, true); @@ -462,6 +461,8 @@ export class Basics extends plugin { //修改头衔 async adminsetTitle(e) { + if (!e.isMaster) return e.reply(Permission_ERROR) + if (e.message.length < 2) return if (e.message[1].type != 'at') return @@ -540,6 +541,7 @@ export class Basics extends plugin { } //替换幸运字符 async qun_luckyuse(e) { + if (!e.member.is_admin && !e.member.is_owner && !e.isMaster) return e.reply(Permission_ERROR) //判断是否有管理 if (!e.group.is_admin && !e.group.is_owner) { return e.reply(ROLE_ERROR, true); @@ -554,6 +556,8 @@ export class Basics extends plugin { //开启或关闭群字符 async qun_luckyset(e) { + if (!e.member.is_admin && !e.member.is_owner && !e.isMaster) return e.reply(Permission_ERROR) + let res = await QQInterface.swichLucky(e.group_id, /开启/.test(e.msg)) if (!res) return e.reply(API_ERROR) @@ -581,12 +585,12 @@ export class Basics extends plugin { Cfg.getforwardMsg(e, msg) } - //解禁全部禁言 + //解除全部禁言 async relieveAllMute(e) { + if (!e.member.is_admin && !e.member.is_owner && !e.isMaster) return e.reply(Permission_ERROR) //判断是否有管理 - if (!e.group.is_admin && !e.group.is_owner) { - return e.reply(ROLE_ERROR, true); - } + if (!e.group.is_admin && !e.group.is_owner) return e.reply(ROLE_ERROR, true); + let mutelist = await Gpadmin.getMuteList(e) if (!mutelist) return e.reply("都没有人被禁言我怎么解的辣\(`Δ’)/") for (let i of mutelist) { @@ -598,6 +602,7 @@ export class Basics extends plugin { //查看和清理多久没发言的人 async noactive(e) { + if (!e.member.is_admin && !e.member.is_owner && !e.isMaster) return e.reply(Permission_ERROR) let Reg = noactivereg.exec(e.msg) Reg[2] = common.translateChinaNum(Reg[2] || 1) //确认清理直接执行 @@ -625,6 +630,7 @@ export class Basics extends plugin { //查看和清理从未发言的人 async neverspeak(e) { + if (!e.member.is_admin && !e.member.is_owner && !e.isMaster) return e.reply(Permission_ERROR) let list = await Gpadmin.getneverspeak(e) if (!list) return //确认清理直接执行 @@ -664,9 +670,9 @@ export class Basics extends plugin { } //发送通知 async Send_notice(e) { - if (!e.group.is_admin && !e.group.is_owner) { - return e.reply(ROLE_ERROR, true); - } + if (!e.member.is_admin && !e.member.is_owner && !e.isMaster) return e.reply(Permission_ERROR) + if (!e.group.is_admin && !e.group.is_owner) return e.reply(ROLE_ERROR, true); + e.message[0].text = e.message[0].text.replace("#发通知", "").trim() if (!e.message[0].text) e.message.shift() if (lodash.isEmpty(e.message)) return e.reply("❎ 通知不能为空") @@ -677,6 +683,7 @@ export class Basics extends plugin { //设置定时群禁言 async timeMute(e) { + if (!e.member.is_admin && !e.member.is_owner && !e.isMaster) return e.reply(Permission_ERROR) if (/任务/.test(e.msg)) { let task = await redis.keys('Yunzai:yenai:Taboo:*') if (!task.length) return e.reply('目前还没有定时禁言任务') diff --git a/apps/groupverify.js b/apps/groupverify.js index 80abb8e..324d99d 100644 --- a/apps/groupverify.js +++ b/apps/groupverify.js @@ -15,33 +15,27 @@ export class NEWCMD extends plugin { rule: [ { reg: '^#重新验证.*$', - fnc: 'cmdReverify', - permission: 'admin' + fnc: 'cmdReverify' }, { reg: '^#绕过验证.*$', - fnc: 'cmdPass', - permission: 'admin' + fnc: 'cmdPass' }, { reg: '^#开启验证$', - fnc: 'openverify', - permission: 'admin' + fnc: 'openverify' }, { reg: '^#关闭验证$', - fnc: 'closeverify', - permission: 'admin' + fnc: 'closeverify' }, { reg: '^#切换验证模式$', - fnc: 'setmode', - permission: 'master' + fnc: 'setmode' }, { reg: '^#设置验证超时时间(\\d+)(s|秒)?$', - fnc: 'setovertime', - permission: 'master' + fnc: 'setovertime' } ] }) @@ -58,6 +52,8 @@ export class NEWCMD extends plugin { if (!verifycfg.openGroup.includes(e.group_id)) return e.reply("当前群未开启验证哦~", true); + if (!e.isMaster && !e.member.is_owner && !e.member.is_admin) return e.reply("❎ 该命令仅限管理员可用", true); + let qq = e.msg.replace(/#|重新验证/g, "").trim(); if (e.message.length != 1) { @@ -83,6 +79,8 @@ export class NEWCMD extends plugin { if (!verifycfg.openGroup.includes(e.group_id)) return e.reply("当前群未开启验证哦~", true); + if (!e.isMaster && !e.member.is_owner && !e.member.is_admin) return e.reply("❎ 该命令仅限管理员可用", true); + let qq = e.msg.replace(/#|绕过验证/g, "").trim(); if (e.message.length != 1) { @@ -107,6 +105,7 @@ export class NEWCMD extends plugin { //开启验证 async openverify(e) { + if (!e.isMaster && !e.member.is_owner && !e.member.is_admin) return e.reply("❎ 该命令仅限管理员可用", true); if (!e.group.is_admin && !e.group.is_owner) return e.reply("做不到,怎么想我都做不到吧ヽ(≧Д≦)ノ", true); let verifycfg = Config.verifycfg if (verifycfg.openGroup.indexOf(e.group_id) != -1) return e.reply("❎ 本群验证已处于开启状态") @@ -116,6 +115,7 @@ export class NEWCMD extends plugin { //关闭验证 async closeverify(e) { + if (!e.isMaster && !e.member.is_owner && !e.member.is_admin) return e.reply("❎ 该命令仅限管理员可用", true); let verifycfg = Config.verifycfg let key = verifycfg.openGroup.indexOf(e.group_id) if (key == -1) return e.reply("❎ 本群暂未开启验证") @@ -124,6 +124,7 @@ export class NEWCMD extends plugin { } //切换验证模式 async setmode(e) { + if (!e.isMaster) return e.reply("❎ 该命令仅限主人可用", true); let verifycfg = Config.verifycfg let value = verifycfg.mode == "模糊" ? "精确" : "模糊" new YamlReader(this.verifypath).set(`mode`, value) @@ -131,6 +132,7 @@ export class NEWCMD extends plugin { } //设置验证超时时间 async setovertime(e) { + if (!e.isMaster) return e.reply("❎ 该命令仅限主人可用", true); let overtime = e.msg.match(/\d+/g) new YamlReader(this.verifypath).set("time", Number(overtime)) e.reply(`✅ 已将验证超时时间设置为${overtime}秒`) diff --git a/apps/handle.js b/apps/handle.js index c661a8c..4d24fcb 100644 --- a/apps/handle.js +++ b/apps/handle.js @@ -18,41 +18,34 @@ export class anotice extends plugin { { reg: '^#?(同意|拒绝)$', fnc: 'agrees', - permission: 'master', event: 'message.private', }, { reg: '^#?回复.*$', fnc: 'Replys', - permission: 'master', event: 'message.private', }, { reg: '^#?(同意|拒绝|查看)(全部)?好友申请(\\d+)?$', fnc: 'agreesAll', - permission: 'master', }, { reg: '^#?(加为|添加)好友$', fnc: 'addFriend', - permission: 'master', event: 'message.private', }, { reg: '^#?(同意|拒绝|查看)(全部)?(加|入)?群申请(\\d+)?$', fnc: 'GroupAdd', - permission: 'admin', event: 'message.group', }, { reg: '^#?(同意|拒绝|查看)(全部)?群邀请(\\d+)?$', fnc: 'GroupInvite', - permission: 'master', }, { reg: '^#?查看全部请求$', fnc: 'SystemMsgAll', - permission: 'master', } ] }) @@ -60,6 +53,7 @@ export class anotice extends plugin { /** 同意好友申请 */ async agree(e) { + if (!e.isMaster) return false; let yes = /同意/.test(e.msg) ? true : false let qq = e.message[0].text.replace(/#|(同意|拒绝)好友申请/g, '').trim() if (e.message[1]) { @@ -81,7 +75,7 @@ export class anotice extends plugin { /**同意拒绝全部好友申请 */ async agreesAll(e) { - + if (!e.isMaster) return false; let yes = /同意/.test(e.msg) ? true : false let FriendAdd = (await Bot.getSystemMsg()) @@ -146,7 +140,8 @@ export class anotice extends plugin { } /** 引用同意好友申请和群邀请 */ async agrees(e) { - if (!e.source) return + if (!e.isMaster) return false; + if (!e.source) return false; let yes = /同意/.test(e.msg) ? true : false let source = (await e.friend.getChatHistory(e.source.time, 1)).pop() @@ -200,6 +195,7 @@ export class anotice extends plugin { // 回复好友消息 async Replys(e) { + if (!e.isMaster) return false; let qq = ''; let group = ''; let msgs = e.message[0].text.split(' ') @@ -256,10 +252,11 @@ export class anotice extends plugin { //加群员为好友 async addFriend(e) { - if (!e.source) return + if (!e.isMaster) return false; + if (!e.source) return false; let source = (await e.friend.getChatHistory(e.source.time, 1)).pop() let msg = source.raw_message.split('\n') - if (!/临时消息/.test(msg[0]) || !/来源群号/.test(msg[1]) || !/发送人QQ/.test(msg[2])) return + if (!/临时消息/.test(msg[0]) || !/来源群号/.test(msg[1]) || !/发送人QQ/.test(msg[2])) return false; let group = msg[1].match(/\d+/g) let qq = msg[2].match(/\d+/g) if (Bot.fl.get(Number(qq))) return e.reply('❎ 已经有这个人的好友了哦~') @@ -339,6 +336,7 @@ export class anotice extends plugin { } //群邀请列表 async GroupInvite(e) { + if (!e.isMaster) return false; let SystemMsg = (await Bot.getSystemMsg()).filter(item => item.request_type == "group" && item.sub_type == "invite") if (lodash.isEmpty(SystemMsg)) return e.reply("暂无群邀请哦(。-ω-)zzz", true) //查看 @@ -395,6 +393,7 @@ export class anotice extends plugin { } //全部请求 async SystemMsgAll(e) { + if (!e.isMaster) return false; let SystemMsg = await Bot.getSystemMsg() let FriendAdd = [], onewayFriend = [], GroupAdd = [], GroupInvite = [] for (let i of SystemMsg) {