diff --git a/apps/groupAdmin.js b/apps/groupAdmin.js index f90950b..432714d 100644 --- a/apps/groupAdmin.js +++ b/apps/groupAdmin.js @@ -414,20 +414,8 @@ export class GroupAdmin extends plugin { // 获取禁言列表 async Mutelist (e) { - let mutelist = await ga.getMuteList(e.group_id) - if (!mutelist) return e.reply('还没有人被禁言欸(O∆O)') - let msg = [] - for (let i of mutelist) { - let Member = e.group.pickMember(i) - let { info } = Member - msg.push([ - segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${info.user_id}`), - `\n昵称:${info.card || info.nickname}\n`, - `QQ:${info.user_id}\n`, - `群身份:${common.ROLE_MAP[info.role]}\n`, - `禁言剩余时间:${common.getsecondformat(Member.mute_left)}` - ]) - } + let msg = await ga.getMuteList(e.group_id, true) + if (!msg) return e.reply('还没有人被禁言欸(O∆O)') common.getforwardMsg(e, msg) } @@ -447,9 +435,10 @@ export class GroupAdmin extends plugin { Reg[2] = common.translateChinaNum(Reg[2] || 1) // 确认清理直接执行 if (Reg[1] == '确认清理') { - if (!e.group.is_admin && !e.group.is_owner) return e.reply(ROLE_ERROR, true) - let msg = ga.clearNoactive(e.group_id, Reg[2], Reg[3]) - return e.reply(msg) + if (!e.group.is_admin && !e.group.is_owner) { + return e.reply(ROLE_ERROR, true) + } + return e.reply(await ga.clearNoactive(e.group_id, Reg[2], Reg[3])) } // 查看和清理都会发送列表 let page = common.translateChinaNum(Reg[5] || 1) @@ -457,9 +446,14 @@ export class GroupAdmin extends plugin { if (msg?.error) return e.reply(msg.error) // 清理 if (Reg[1] == '清理') { - 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 list = await ga.noactiveList(e.group_id, Reg[2], Reg[3]) - e.reply(`本次共需清理「${list.length}」人,防止误触发\n请发送:#确认清理${Reg[2]}${Reg[3]}没发言的人`) + e.reply([ + `本次共需清理「${list.length}」人,防止误触发\n`, + `请发送:#确认清理${Reg[2]}${Reg[3]}没发言的人` + ]) } common.getforwardMsg(e, msg) } @@ -473,8 +467,8 @@ export class GroupAdmin extends plugin { if (/^#?确认清理/.test(e.msg)) { if (!e.group.is_admin && !e.group.is_owner) return e.reply(ROLE_ERROR, true) e.reply('我要开始清理了哦,这可能需要一点时间٩(๑•ㅂ•)۶') - let msg = await ga.BatchKickMember(e.group_id, list.map(item => item.user_id)) - return e.reply(msg) + let arr = list.map(item => item.user_id) + return e.reply(await ga.BatchKickMember(e.group_id, arr)) } // 清理 if (/^#?清理/.test(e.msg)) { diff --git a/model/GroupAdmin.js b/model/GroupAdmin.js index bc8cc9b..024605c 100644 --- a/model/GroupAdmin.js +++ b/model/GroupAdmin.js @@ -22,11 +22,23 @@ export default new class { * @param {Number} groupId 群号 * @return {Array} */ - async getMuteList (groupId) { + async getMuteList (groupId, info = false) { let list = await this.getMemberMap(groupId, true) - let mutelist = list.filter(item => Bot.pickGroup(groupId - 0).pickMember(item).mute_left != 0) + let groupObj = Bot.pickGroup(groupId - 0) + let mutelist = list.filter(item => groupObj.pickMember(item).mute_left != 0) if (_.isEmpty(mutelist)) return false - return mutelist + if (!info) return mutelist + return mutelist.map(item => { + let Member = groupObj.pickMember(item) + let { info } = Member + return [ + segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${info.user_id}`), + `\n昵称:${info.card || info.nickname}\n`, + `QQ:${info.user_id}\n`, + `群身份:${common.ROLE_MAP[info.role]}\n`, + `禁言剩余时间:${common.getsecondformat(Member.mute_left)}` + ] + }) } /** @@ -37,11 +49,7 @@ export default new class { async releaseAllMute (groupId) { let mutelist = await this.getMuteList(groupId) if (!mutelist) return false - for (let i of mutelist) { - await Bot.pickGroup(groupId - 0).muteMember(i, 0) - await common.sleep(2000) - } - return true + return Promise.all(mutelist.map(item => Bot.pickGroup(groupId - 0).muteMember(item, 0))) } /** @@ -87,7 +95,7 @@ export default new class { let list = await this.noactiveList(groupId, times, unit) if (!list) return false list = list.map(item => item.user_id) - return await this.BatchKickMember(groupId, list) + return this.BatchKickMember(groupId, list) } /** @@ -333,6 +341,13 @@ export default new class { return time == 0 ? `✅ 已把「${Memberinfo.card || Memberinfo.nickname}」从小黑屋揪了出来(。>∀<。)` : `已把「${Memberinfo.card || Memberinfo.nickname}」扔进了小黑屋( ・_・)ノ⌒●~*` } + /** + * @description: 踢群成员 + * @param {Number} groupId 群号 + * @param {Number} userId 被踢人 + * @param {Number} executor 执行人 + * @return {*} + */ async kickMember (groupId, userId, executor) { let group = null try { group = Bot.pickGroup(Number(groupId), true) } catch (err) { return err.message }