修复判断权限bug

This commit is contained in:
yeyang
2023-01-09 12:59:50 +08:00
parent 76cffe87ad
commit 4ef745eaaf
4 changed files with 61 additions and 53 deletions

View File

@@ -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()
}

View File

@@ -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('目前还没有定时禁言任务')

View File

@@ -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}`)

View File

@@ -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) {