koishi-plugin-nl-permission
v0.0.1
Published
自用
Maintainers
Readme
koishi-plugin-nl-permission
群组和私聊白名单管理插件,支持拦截非白名单消息。
功能特性
- ✅ 群组白名单:只在白名单群组中响应消息
- ✅ 私聊白名单:支持私聊白名单或完全禁止私聊
- ✅ 智能拦截:使用
before-send中间件拦截非白名单消息 - ✅ 被 @ 提示:在非白名单群聊中被 @ 时可发送自定义提示
- ✅ 管理员权限:支持管理员绕过白名单限制
- ✅ 数据持久化:使用数据库存储白名单,重启后不丢失
- ✅ 多平台支持:支持不同平台的独立白名单管理
配置项
| 配置项 | 类型 | 默认值 | 说明 |
|--------|------|--------|------|
| allowPrivate | boolean | false | 是否允许所有私聊(关闭时只允许白名单用户) |
| privateReply | string | "抱歉,暂不支持私聊功能。" | 私聊被拒绝时的回复消息 |
| replyWhenMentioned | boolean | true | 在非白名单群聊中被 @ 时是否回复 |
| mentionReply | string | "抱歉,本群未开启服务。如需使用请联系管理员。" | 被 @ 时的回复消息 |
| adminUsers | string[] | [] | 管理员用户ID列表 |
| bypassAdmin | boolean | true | 管理员是否绕过白名单限制 |
使用命令
管理命令(仅管理员)
nlp.群白名单 <群组ID> [备注]- 添加群组到白名单nlp.私聊白名单 <用户ID> [备注]- 添加用户到私聊白名单nlp.这里 [备注]- 快速添加当前群组到白名单nlp.移除群 <群组ID>- 从白名单移除群组nlp.移除私聊 <用户ID>- 从私聊白名单移除用户nlp.列表- 查看所有白名单nlp.状态- 查看当前环境信息
命令别名
nlp.addguild=nlp.群白名单nlp.addprivate=nlp.私聊白名单nlp.here=nlp.这里nlp.removeguild=nlp.移除群nlp.removeprivate=nlp.移除私聊nlp.list=nlp.列表nlp.status=nlp.状态
使用场景
场景 1:只在特定群组中提供服务
- 在配置中添加管理员用户ID
- 在需要开启服务的群组中发送
nlp.这里 - 机器人将只在白名单群组中响应消息
场景 2:禁止私聊
- 保持
allowPrivate为false(默认) - 非白名单用户私聊时会收到拒绝消息
- 如需允许特定用户私聊,使用
nlp.私聊白名单 <用户ID>
场景 3:被 @ 时提示
- 保持
replyWhenMentioned为true(默认) - 在非白名单群聊中被 @ 时,机器人会发送提示消息
- 可自定义
mentionReply消息内容
工作原理
插件使用 Koishi 的 before-send 中间件拦截消息:
- 检查用户是否是管理员(如果启用绕过)
- 私聊环境:检查私聊白名单或
allowPrivate配置 - 群聊环境:检查群组白名单
- 非白名单群聊被 @:发送提示消息
- 其他情况:清空
session.elements拦截消息
注意事项
- 需要 Koishi 数据库服务支持
- 管理员用户ID需要在配置中手动添加
- 白名单按平台独立管理(OneBot、Discord 等)
- 拦截的是机器人的发送消息,不影响接收消息
License
MIT
