koishi-plugin-onebot-manager
Version:
适用于 Onebot 的 QQ 群管,可自动处理好友申请、群邀请和入群请求,提供群组管理功能
116 lines (91 loc) • 6.7 kB
Markdown
# koishi-plugin-onebot-manager
[](https://www.npmjs.com/package/koishi-plugin-onebot-manager)
适用于 Onebot 的 QQ 群管,可自动处理好友申请、群邀请和入群请求,提供群组管理功能
## 功能特性
- **请求处理**:自动处理好友申请、群邀请和入群请求
- **通知功能**:将请求消息转发至指定群或私聊,并可通过回复进行处理
- **智能筛选**:根据账号注册时间、QQ等级、会员等级等条件自动决定是否通过请求
- **群管理**:设置群专属头衔、管理精华消息、设置群名片、禁言管理等实用功能
### OneBot管理工具
- 提供丰富的信息查询功能,包括消息、图片、语音、合并转发等内容
- 支持查询账号信息、群组信息、成员信息等
- 提供OneBot实现重启、缓存清理等管理功能
- 支持获取运行状态和版本信息
## 配置说明
```yaml
enable: true # 是否启用插件,默认为 true
enableNotify: false # 是否启用通知功能
notifyTarget: '' # 通知目标,格式为 "guild:群号" 或 "private:QQ号"
# 请求处理方式
friendRequest: 'reject' # 好友请求处理:accept(同意)、reject(拒绝)、manual(手动)、auto(智能)
memberRequest: 'reject' # 加群请求处理:accept(同意)、reject(拒绝)、manual(手动)、auto(智能)
guildRequest: 'reject' # 入群邀请处理:accept(同意)、reject(拒绝)、manual(手动)、auto(智能)
# 人工审核模式下的超时设置
manualTimeout: 720 # 手动审核超时时间(分钟),0表示永不超时
manualTimeoutAction: 'reject' # 超时后的行为:accept(同意) 或 reject(拒绝)
# 当好友请求为 auto 时的筛选条件
FriendRegTime: -1 # 最短注册年份(-1表示不启用此条件)
FriendLevel: -1 # 最低QQ等级(-1表示不启用此条件)
FriendVipLevel: -1 # 最低会员等级(-1表示不启用此条件)
# 当加群请求为 auto 时的筛选条件
MemberRegTime: -1 # 最短注册年份(-1表示不启用此条件)
MemberLevel: -1 # 最低QQ等级(-1表示不启用此条件)
MemberVipLevel: -1 # 最低会员等级(-1表示不启用此条件)
# 当入群邀请为 auto 时的筛选条件
GuildAllowUsers: [] # 邀请ID白名单
GuildMinMemberCount: -1 # 最低群成员数量(-1表示不启用此条件)
GuildMaxCapacity: -1 # 最低群容量要求(-1表示不启用此条件)
```
## OneBot命令
| 命令 | 说明 | 示例 |
|-----|------|------|
| `qgroup.restart` | 重启 OneBot | `qgroup.restart` |
| `qgroup.clean` | 清理缓存 | `qgroup.clean` |
| `get` | 获取消息内容及状态 | `get -i 1234567890` |
| `get.forward` | 获取合并转发内容 | `get.forward -i 1234567890` |
| `get.record` | 获取语音文件 | `get.record -f 1234.silk -t mp3` |
| `get.image` | 获取图片文件 | `get.image -f abc.image` |
| `get.file` | 获取文件信息 | `get.file -i file_id` |
| `get.stat` | 获取运行状态 | `get.stat` |
| `get.ver` | 获取版本信息 | `get.ver` |
| `get.csrf` | 获取相关接口凭证 | `get.csrf qun.qq.com` |
| `info` | 查询账号信息 | `info -n` |
| `info.user` | 查询其它账号信息 | `info.user 123456 -n` |
| `info.myfriend` | 获取本账号好友列表 | `info.myfriend all` |
| `info.mygroup` | 获取本账号群组列表 | `info.mygroup 1` |
| `info.group` | 查询群信息 | `info.group 123456 -n` |
| `info.groupuser` | 查询群成员信息 | `info.groupuser 123456 654321 -n` |
| `info.memberlist` | 获取群成员列表 | `info.memberlist 123456 1` |
| `info.grouphonor` | 查询群荣誉信息 | `info.grouphonor 123456 -t talkative` |
## 群管理命令
| 命令 | 描述 | 示例 |
|------|------|------|
| `qgroup tag [头衔] [目标]` | 设置群专属头衔 | `qgroup tag 管理员` 设置自己头衔 `qgroup tag 群主 @用户` 设置他人头衔 `qgroup tag` 清除自己头衔 |
| `qgroup membercard [名片] [目标]` | 设置群名片 | `qgroup membercard 新名片` 设置自己名片 `qgroup membercard 新名片 @用户` 设置他人名片 |
| `qgroup groupname <群名>` | 设置群名称 | `qgroup groupname 新群名` |
| `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 <目标> [时长]` | 禁言群成员 | `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` 撤回引用的消息 |
### 自动处理规则说明
- **好友请求**:当设置为 `auto` 时,插件会检查申请人的注册时间、QQ等级和会员等级,如果满足设置的条件则通过,否则拒绝
- **加群请求**:当设置为 `auto` 时,插件会检查申请人的注册时间、QQ等级和会员等级,如果满足设置的条件则通过,否则拒绝
- **入群邀请**:当设置为 `auto` 时,插件会检查邀请人是否在白名单中、群成员数量和群容量是否满足条件,满足则通过,否则拒绝
### 通知功能
当 `enableNotify` 设置为 `true` 时,插件会将请求消息转发到 `notifyTarget` 指定的目标。
- 通知目标格式:`guild:群号` 或 `private:QQ号`
- 请求通知将显示请求编号,例如 `#1`
- 处理请求回复格式:`y1` 同意请求 #1,`n1 理由` 拒绝请求 #1
- 添加好友请求回复格式:`y1 备注` 添加好友并设置备注
- 超时处理:如果设置了 `manualTimeout`,超时未处理的请求将按 `manualTimeoutAction` 自动处理
## 注意事项
- 插件需要 Onebot 适配器支持
- 命令前缀均为 `qgroup`,可根据实际配置调整
- 群管理功能需要机器人具有相应的权限,如设置头衔需要群主权限
- 群管理命令支持 `-g` 参数指定群号,如 `qgroup tag 头衔 -g 123456`
- 自动处理功能需要正确配置并启用对应条件
- 对于 `auto` 模式,如果未设置条件(保持 -1),将默认拒绝请求