Files
yenai-plugin/apps/groupAdmin/privateGroupAdmin.js
2024-04-06 19:02:02 +08:00

72 lines
2.4 KiB
JavaScript

import { GroupAdmin as Ga, common } from "../../model/index.js"
import { Time_unit } from "../../constants/other.js"
import translateChinaNum from "../../tools/translateChinaNum.js"
// 正则
const Numreg = "[一壹二两三四五六七八九十百千万亿\\d]+"
const TimeUnitReg = Object.keys(Time_unit).join("|")
const muteMemberReg = new RegExp(`^#禁言\\s?(\\d+)\\s(\\d+)\\s(${Numreg})?(${TimeUnitReg})?$`)
export class PrivateGroupAdmin extends plugin {
constructor() {
super({
name: "椰奶私聊群管",
event: "message.private",
priority: 500,
rule: [
{
reg: muteMemberReg,
fnc: "muteMember"
},
{
reg: "^#解禁\\s?(\\d+)\\s(\\d+)$",
fnc: "noMuteMember"
},
{
reg: "^#全体(禁言|解禁)(\\d+)$",
fnc: "muteAll"
},
{
reg: "^#踢\\s?(\\d+)\\s(\\d+)$",
fnc: "kickMember"
}
]
})
}
async muteMember(e) {
let regRet = e.msg.match(muteMemberReg)
let groupObj = e.bot.pickGroup(Number(regRet[1]))
if (!common.checkPermission(e, "master", "admin", { groupObj })) return
const time = translateChinaNum(regRet[3])
await new Ga(e).muteMember(regRet[1], regRet[2], e.user_id, time, regRet[4])
.then(res => e.reply(res))
.catch(err => common.handleException(e, err))
}
async noMuteMember(e) {
let regRet = e.msg.match(/^#解禁\s?(\d+)\s(\d+)$/)
let groupObj = e.bot.pickGroup(Number(regRet[1]))
if (!common.checkPermission(e, "master", "admin", { groupObj })) return
await new Ga(e).muteMember(regRet[1], regRet[2], e.user_id, 0)
.then(res => e.reply(res))
.catch(err => common.handleException(e, err))
}
async muteAll(e) {
let regRet = e.msg.match(/全体(禁言|解禁)(\d+)/)
let groupObj = (e.bot ?? Bot).pickGroup(Number(regRet[2]))
if (!common.checkPermission(e, "master", "admin", { groupObj })) return
groupObj.muteAll(regRet[1] == "禁言")
e.reply(`✅ 已将群「${groupObj.name}(${groupObj.group_id})」${regRet[1] == "禁言" ? "开启" : "解除"}全体禁言`)
}
async kickMember(e) {
let regRet = e.msg.match(/#踢\s?(\d+)\s(\d+)$/)
let groupObj = (e.bot ?? Bot).pickGroup(Number(regRet[1]))
if (!common.checkPermission(e, "master", "admin", { groupObj })) return
let res = await new Ga(e).kickMember(regRet[1], regRet[2], e.user_id)
e.reply(res)
}
}