💎 新增投票禁言配置 #I9O38D
This commit is contained in:
@@ -37,9 +37,11 @@ export class GroupVoteBan extends plugin {
|
||||
*/
|
||||
async Switch() {
|
||||
if (!common.checkPermission(this.e, "master")) return
|
||||
|
||||
let type = !!/启用/.test(this.e.msg)
|
||||
|
||||
const { VoteBan } = Config.groupAdmin
|
||||
|
||||
if (VoteBan && type) return this.reply("❎ 投票禁言功能已处于启用状态")
|
||||
if (!VoteBan && !type) return this.reply("❎ 投票禁言功能已处于禁用状态")
|
||||
|
||||
@@ -52,14 +54,17 @@ export class GroupVoteBan extends plugin {
|
||||
* @param e
|
||||
*/
|
||||
async Initiate(e) {
|
||||
if (!Config.groupAdmin.VoteBan) return e.reply("❎ 该功能已被禁用,请发送 #启用投票禁言 来启用该功能。", true)
|
||||
const { VoteBan, outTime, minNum, BanTime, voteAdmin } = Config.groupAdmin
|
||||
|
||||
if (!VoteBan) return e.reply("❎ 该功能已被禁用,请发送 #启用投票禁言 来启用该功能。", true)
|
||||
|
||||
if (!common.checkPermission(e, "all", "admin")) return
|
||||
|
||||
let targetQQ = e.at || (e.msg.match(/\d+/)?.[0] || "")
|
||||
targetQQ = Number(targetQQ) || String(targetQQ)
|
||||
let key = e.group_id + targetQQ
|
||||
|
||||
const time = Config.groupAdmin.outTime
|
||||
if (e.user_id === targetQQ) return e.reply("❎ 您不能对自己进行投票")
|
||||
|
||||
if (Config.masterQQ?.includes(Number(targetQQ) || String(targetQQ)) || a.includes(md5(String(targetQQ)))) return e.reply("❎ 该命令对主人无效")
|
||||
|
||||
@@ -70,15 +75,21 @@ export class GroupVoteBan extends plugin {
|
||||
const group = e.bot.pickGroup(e.group_id, true)
|
||||
const targetMember = group.pickMember(targetQQ)
|
||||
const targetMemberInfo = targetMember?.info || await targetMember?.getInfo?.()
|
||||
|
||||
if (!targetMemberInfo) return e.reply("❎ 该群没有这个人")
|
||||
if (targetMemberInfo.role === "owner") return e.reply("❎ 权限不足,该命令对群主无效")
|
||||
if (targetMemberInfo.role === "admin" && !group.is_owner) return e.reply("❎ 权限不足,需要群主权限")
|
||||
if (targetMemberInfo.role === "admin") {
|
||||
if (!voteAdmin) return e.reply("❎ 该命令对管理员无效")
|
||||
if (!group.is_owner) return e.reply("❎ Bot权限不足,需要群主权限")
|
||||
}
|
||||
|
||||
/** 写入数据 */
|
||||
Vote[key] = {
|
||||
supportCount: 1,
|
||||
opposeCount: 0,
|
||||
List: [ e.user_id ]
|
||||
}
|
||||
|
||||
let res = await e.reply([
|
||||
segment.at(targetQQ),
|
||||
`(${targetQQ})的禁言投票已发起\n`,
|
||||
@@ -89,24 +100,29 @@ export class GroupVoteBan extends plugin {
|
||||
`「#支持禁言${targetQQ}」\n`,
|
||||
"不支持者请发送:\n",
|
||||
`「#反对禁言${targetQQ}」\n`,
|
||||
`超时时间:${time}秒\n`,
|
||||
"规则:支持票大于反对票且参与人高于3人即可成功禁言"
|
||||
`超时时间:${outTime}秒\n`,
|
||||
`禁言时间:${BanTime}秒\n`,
|
||||
`规则:支持票大于反对票且参与人高于${minNum}人即可成功禁言`
|
||||
])
|
||||
|
||||
if (!res) return false
|
||||
|
||||
setTimeout(async() => {
|
||||
// 处理结果
|
||||
if (!Vote[key]) return
|
||||
const { supportCount, opposeCount } = Vote[key]
|
||||
|
||||
let msg = `投票结束,投票结果:\n支持票数:${supportCount}\n反对票数:${opposeCount}\n`
|
||||
if (supportCount > opposeCount && supportCount >= 3) {
|
||||
|
||||
if (supportCount > opposeCount && supportCount >= minNum) {
|
||||
msg += "支持票数大于反对票\n执行禁言操作"
|
||||
await e.group.muteMember(targetQQ, 3600)
|
||||
await e.group.muteMember(targetQQ, BanTime)
|
||||
} else {
|
||||
msg += "反对票数大于支持票数或支持票数小于3,不进行禁言操作"
|
||||
msg += `反对票数大于支持票数或支持票数小于${minNum},不进行禁言操作`
|
||||
}
|
||||
delete Vote[key]
|
||||
return e.reply(msg, true)
|
||||
}, time * 1000)
|
||||
}, outTime * 1000)
|
||||
|
||||
setTimeout(async() => {
|
||||
const { supportCount, opposeCount } = Vote[key]
|
||||
const msg = [
|
||||
@@ -117,10 +133,11 @@ export class GroupVoteBan extends plugin {
|
||||
"请支持者发送:\n",
|
||||
`「#支持禁言${targetQQ}」\n`,
|
||||
"不支持者请发送:\n",
|
||||
`「#反对禁言${targetQQ}」\n`
|
||||
`「#反对禁言${targetQQ}」`
|
||||
]
|
||||
e.reply(msg)
|
||||
}, time * 1000 - 60000)
|
||||
|
||||
await e.reply(msg)
|
||||
}, outTime * 1000 - 60000)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -129,24 +146,30 @@ export class GroupVoteBan extends plugin {
|
||||
*/
|
||||
async Follow(e) {
|
||||
if (!common.checkPermission(e, "all", "admin")) return
|
||||
|
||||
let targetQQ = e.at || (e.msg.match(/\d+/)?.[0] || "")
|
||||
targetQQ = Number(targetQQ) || String(targetQQ)
|
||||
let key = e.group_id + targetQQ
|
||||
if (Config.masterQQ?.includes(Number(targetQQ) || String(targetQQ)) || a.includes(md5(String(targetQQ)))) return e.reply("❎ 该命令对主人无效")
|
||||
|
||||
if (!targetQQ) return e.reply("❎ 请艾特或输入需要进行跟票的被禁言人QQ")
|
||||
|
||||
if (Config.masterQQ?.includes(Number(targetQQ) || String(targetQQ)) || a.includes(md5(String(targetQQ)))) return e.reply("❎ 该命令对主人无效")
|
||||
|
||||
if (e.user_id === targetQQ) return e.reply("❎ 您不能对自己进行投票")
|
||||
|
||||
if (!Vote[key]) return e.reply("❎ 未找到对应投票")
|
||||
|
||||
if (e.member.is_admin || e.member.is_owner) {
|
||||
if (/支持/.test(e.msg)) {
|
||||
await e.reply("投票结束,管理员介入,无需投票直接执行禁言", true)
|
||||
await e.group.muteMember(targetQQ, 3600)
|
||||
} else {
|
||||
await e.reply("投票取消,管理员介入", true)
|
||||
if (Config.groupAdmin.veto) {
|
||||
if (e.member.is_admin || e.member.is_owner) {
|
||||
if (/支持/.test(e.msg)) {
|
||||
await e.reply("投票结束,管理员介入,无需投票直接执行禁言", true)
|
||||
await e.group.muteMember(targetQQ, 3600)
|
||||
} else {
|
||||
await e.reply("投票取消,管理员介入", true)
|
||||
}
|
||||
delete Vote[key]
|
||||
return true
|
||||
}
|
||||
delete Vote[key]
|
||||
return true
|
||||
}
|
||||
|
||||
const { List } = Vote[key]
|
||||
|
||||
@@ -2,7 +2,16 @@
|
||||
whiteQQ: []
|
||||
#白名单禁言自动解禁
|
||||
noBan: false
|
||||
|
||||
# 投票禁言开关
|
||||
VoteBan: true
|
||||
# 投票禁言超时时间 单位:秒
|
||||
outTime: 180
|
||||
# 投票最低所需票数 不建议太低
|
||||
minNum: 3
|
||||
# 投票成功禁言时间 单位:秒
|
||||
BanTime: 3600
|
||||
# 是否允许管理员一票否决
|
||||
veto: true
|
||||
# 是否允许投票禁言管理员(Bot为群主的情况下)
|
||||
voteAdmin: false
|
||||
Reference in New Issue
Block a user