UNPKG

koishi-plugin-onebot-manager

Version:

群管插件,功能梭哈,支持禁言/踢出等全部管理可用功能,另可自动审核好友/加群/邀请请求,还支持进退群等事件通知

115 lines (93 loc) 8.48 kB
# koishi-plugin-onebot-manager [![npm](https://img.shields.io/npm/v/koishi-plugin-onebot-manager?style=flat-square)](https://www.npmjs.com/package/koishi-plugin-onebot-manager) 群管插件,功能梭哈,支持禁言/踢出等全部管理可用功能,另可自动审核好友/加群/邀请请求,还支持进退群等事件通知 ## ✨ 功能亮点 - **🤖 全自动请求处理**:自动处理好友申请、加群请求和群邀请。当请求不满足预设条件时,将无缝转为人工审核。 - **🧠 智能条件审批**:可基于 **QQ 等级****验证信息正则****邀请人白名单****群成员数****群容量**等多种条件,实现精准的自动化审批。 - **🔔 关键事件通知** - **成员变动**:可自定义成员入群和退群的提示消息。 - **待办提醒**:待审核的请求将发送至指定联系人或群组,并可通过指令快速处理。 - **被踢通知**:当机器人被移出群聊时,会立刻向指定目标发送通知。 - **管理变动**:当群内管理员被设置或取消时,会发送通知。 - **🛠️ 全面的群管命令**:提供从设置群名片、专属头衔到设置精华消息、禁言、踢人等一系列实用管理命令。 - **⚡️ 高效批量操作**:对于待处理的请求,管理员可以使用 `ya``na` 等指令一键同意或拒绝所有请求。 ## ⚠️ 注意事项 - **本插件强依赖 OneBot v11 适配器**。使用前,请确保您的 Koishi 实例已正确安装并配置 `koishi-plugin-adapter-onebot`- **`notifyTarget` 是人工审核的核心**。请务必正确填写此项,否则所有需要人工审核的请求都将静默地等待超时后自动处理。 - 插件的许多管理功能需要机器人拥有**群主****管理员**权限才能正常工作。 - 您可以在 Koishi 的配置文件中为 `qgroup` 命令设置别名,以简化输入。 ## ⚙️ 配置说明 以下是所有可用的配置项说明。 ```yaml plugins: onebot-manager: # ------------------ 监听配置 ------------------ enableKick: true # 开启机器人被踢或主动退群的监听。 enableAdmin: true # 开启群内管理员变动(设置/取消)的监听。 notifyTarget: '' # [必填] 审核和事件通知的目标,格式为 "guild:群号" 或 "private:QQ号"。 enableJoin: false # 开启新成员入群监听。 enableLeave: false # 开启群成员退群监听。 redirectMsg: false # 把成员入群和退群通知统一发送到通知目标。 joinMessage: '{userName}({userId}) 加入了 {guildName}({guildId})' # 自定义入群欢迎语。 leaveMessage: '{userName}({userId}) 离开了 {guildName}({guildId})' # 自定义退群提示。 # 可用占位符: {userName}, {userId}, {guildName}, {guildId} # ------------------ 请求配置 ------------------ enable: true # 开启插件的请求处理总开关(好友、加群、邀请)。 manualTimeout: 360 # 人工审核的超时时长(分钟),0 表示永不超时。 manualTimeoutAction: 'accept' # 超时后的默认操作:'accept' (同意) 或 'reject' (拒绝)。 # --- 自动审批条件 --- # 【好友请求】 FriendLevel: -1 # 自动通过的好友最低QQ等级(-1表示不限制)。 FriendRequestAutoRegex: '' # 匹配好友验证信息的正则表达式,满足条件则自动通过。 # 【加群请求】 MemberRequestAutoRules: [] # 自动审批规则,可为不同群组设定不同规则。 # 示例: # MemberRequestAutoRules: # - guildId: '123456' # 目标群号 # keyword: 'koishi' # 匹配加群验证信息的正则表达式 # minLevel: 16 # 申请人的最低QQ等级(可选,-1为不限制) # - guildId: '654321' # keyword: '芝麻开门' # 【群邀请】 GuildAllowUsers: [] # 邀请人白名单(QQ号列表),白名单内的用户发出的邀请将直接通过。 GuildMinMemberCount: -1 # 自动同意邀请的群最低成员数(-1表示不限制)。 GuildMaxCapacity: -1 # 自动同意邀请的群最低容量(-1表示不限制)。 # ------------------ 命令配置 ------------------ commandWhitelist: [] # 命令白名单 (填写用户QQ号),白名单用户可无视权限要求使用所有管理命令。 ``` ## 📖 命令用法 **权限说明**- **机器人权限**:执行大多数命令要求机器人自身在群内拥有**管理员****群主**身份。 - **用户权限**:命令执行者通常需要是群内的**管理员****群主**- **白名单**:在 `commandWhitelist` 中的用户不受用户权限的限制。 - **远程管理**:大多数命令支持 `-g <群号>``--group <群号>` 参数,允许在其他聊天窗口远程管理指定群组。 | 命令 | 描述 | 权限要求 (机器人/用户) | 示例 | | --- | --- | --- | --- | | `qgroup tag [头衔] [目标]` | 设置或清除群专属头衔 | **群主** / **管理员****群主** (为他人) | `qgroup tag 技术大佬` (为自己设置)`qgroup tag BUG制造机 @张三` (为他人)`qgroup tag "" @张三` (清除他人头衔) | | `qgroup membercard [名片] [目标]` | 设置或清除群名片 | 管理员 / 管理员或群主 (为他人) | `qgroup membercard 摸鱼中` (为自己)`qgroup membercard 奋斗中 @李四` (为他人) | | `qgroup groupname <群名>` | 设置当前群的名称 | 管理员 / 管理员或群主 | `qgroup groupname Koishi交流群` | | `qgroup essence [消息ID]` | 将消息设为精华 | 管理员 / 管理员或群主 | `qgroup essence` (引用一条消息)`qgroup essence 123456` | | `qgroup essence.del [消息ID]` | 移除精华消息 | 管理员 / 管理员或群主 | `qgroup essence.del` (引用一条精华消息) | | `qgroup admin <目标>` | 设置某人为管理员 | **群主** / 管理员或群主 | `qgroup admin @王五` | | `qgroup admin.del <目标>` | 取消某人的管理员 | **群主** / 管理员或群主 | `qgroup admin.del @王五` | | `qgroup mute <目标> [时长]` | 禁言成员 (秒),默认30分钟 | 管理员 / 管理员或群主 | `qgroup mute @赵六 60` (禁言60秒)`qgroup mute @赵六 -c` (取消禁言) | | `qgroup mute.all [开关]` | 全体禁言 | 管理员 / 管理员或群主 | `qgroup mute.all` (开启)`qgroup mute.all false` (关闭) | | `qgroup kick <目标>` | 踢出成员 | 管理员 / 管理员或群主 | `qgroup kick @钱七``qgroup kick @钱七 -r` (踢出并拒加) | | `qgroup revoke` | 撤回消息 | 管理员 / 消息发送者 | (引用一条消息) `qgroup revoke` | ## 审批流程详解`enable` 设为 `true` 时,插件将按以下流程处理所有请求: 1. **自动审批检查**:插件首先根据请求类型(好友/加群/邀请),检查其是否满足您在配置中设定的任一自动审批条件。 - **加群请求**:匹配 `MemberRequestAutoRules` 中对应群号的 `keyword` 正则或 `minLevel` 等级要求。 - **好友请求**:匹配 `FriendRequestAutoRegex` 正则或 `FriendLevel` 等级要求。 - **群邀请**:邀请人位于 `GuildAllowUsers` 白名单中,或被邀请的群满足 `GuildMinMemberCount``GuildMaxCapacity` 的要求。 2. **通过或转交**:如果满足条件,请求将**自动同意**。若不满足任何条件,请求将进入人工审核流程。 3. **发送审核通知**:插件会将请求详情(如申请人、目标群、验证信息等)格式化后,发送到您指定的 `notifyTarget`,并为该请求分配一个唯一的请求编号。 4. **人工审核**:管理员可根据收到的通知,回复指令来处理请求: - **单条处理** - 同意:`y<请求编号> [备注]``通过<请求编号> [备注]` - 拒绝:`n<请求编号> [理由]``拒绝<请求编号> [理由]` - **批量处理** - 全部同意:`ya [备注]``全部同意 [备注]` - 全部拒绝:`na [理由]``全部拒绝 [理由]` 5. **超时自动处理**:如果在 `manualTimeout` 设定的时间内无人处理,请求将根据 `manualTimeoutAction` 的配置被自动同意或拒绝,并发送通知。 6. **通知失败**:若 `notifyTarget` **未填写或格式错误**,需要人工审核的请求将无法发出通知,并会在超时后按步骤 5 自动处理。