Group echo cave
npm install koishi-plugin-echo-cave


koishi-plugin-echo-cave 是一个为 Koishi 机器人框架设计的群聊消息存储与回溯插件。它能够将群聊中的消息(包括普通消息和转发消息)存储到"回声洞"中,并支持随时随机或指定 ID 调取这些消息,为群聊增添更多互动乐趣和记录功能。
- 📥 消息存储:支持存储普通消息和转发消息到数据库
- 🔍 消息查询:支持随机获取消息或通过 ID 精确查找
- 🗑️ 消息管理:支持删除特定 ID 的消息(消息存储者、原始发送者或管理员)
- 👤 个人追踪:支持查看自己投稿的消息列表
- 🔍 发言回溯:支持查看自己被他人投稿的消息列表
- 📊 排行榜功能:支持查看不同时间段内的回声洞排行榜
- 🎨 模板化展示:消息展示时自带多种风格的外部包裹信息
- 🔒 管理员保护:可配置管理员消息保护
- 📏 媒体限制:支持配置媒体文件大小限制
- 👥 转发消息用户选择:支持从转发消息中选择相关用户进行绑定
- ⚖️ 加权随机抽取:根据消息被抽取次数动态调整抽取概率,被抽取次数越多,概率越低。使用公式:
```
权重 = 1 / (1 + drawCount * α)
概率 = 权重 / 总权重
drawCount
其中, 为消息被抽取次数,α 为调整因子(可配置,默认0.2)
| 命令 | 说明 | 权限要求 |
|-------------------------------|------------------|-----------------|
| cave | 随机获取一条回声洞消息 | 所有人 |cave
| | 获取特定 ID 的回声洞消息 | 所有人 |cave.echo [...userIds]
| | 将引用的消息存入回声洞 | 所有人 |cave.drop
| | 删除特定 ID 的回声洞消息 | 消息存储者、原始发送者或管理员 |cave.listen
| | 获取自己投稿的回声洞列表 | 所有人 |cave.trace
| | 获取自己发言被投稿的回声洞列表 | 所有人 |cave.purge <...ids>
| | 批量删除多个 ID 的回声洞消息 | 消息存储者、原始发送者或管理员 |cave.search
| | 搜索特定 ID 的回声洞消息 | 所有人 |cave.bind
| | 将用户绑定到特定 ID 的回声洞 | 所有人 |cave.rank [period]
| | 查看回声洞排行榜,支持多种时间段 | 所有人 |
`bash`
npm install koishi-plugin-echo-cave
或在插件商城中搜索 koishi-plugin-echo-cave 进行安装。
| 配置项 | 类型 | 默认值 | 说明 |
|------------------------------|---------|---------|-------------------------------|
| adminMessageProtection | boolean | false | 开启管理员消息保护,使管理员发布的消息只能由其他管理员删除 |allowContributorDelete
| | boolean | true | 允许消息投稿者删除自己投稿的消息 |allowSenderDelete
| | boolean | true | 允许原始消息发送者删除自己被投稿的消息 |deleteMediaWhenDeletingMsg
| | boolean | true | 删除消息时是否同时删除媒体文件 |enableSizeLimit
| | boolean | false | 启用媒体文件大小限制 |maxImageSize
| | number | 2048 | 最大图片大小(KB) |maxVideoSize
| | number | 512 | 最大视频大小(KB) |maxFileSize
| | number | 512 | 最大文件大小(KB) |maxRecordSize
| | number | 512 | 最大录音大小(KB) |useBase64ForMedia
| | boolean | false | 是否使用 Base64 编码发送媒体文件 |sendAllAsForwardMsg
| | boolean | false | 是否将所有消息以转发消息形式发送 |rankingTopCount
| | number | 10 | 排行榜显示的用户数量 |forwardSelectTimeout
| | number | 20 | 转发消息用户选择超时时间(秒) |enableForwardUserSelection
| | boolean | true | 启用转发消息用户选择功能 |alpha
| | number | 0.2 | 加权随机抽取的调整因子,控制抽取次数对概率的影响程度,值越大影响越明显 |
- 插件仅在群聊中可用,私聊模式下无法正常工作
- 使用 cave.echo` 命令前必须先引用一条消息
- 删除消息权限可通过配置项灵活控制
- 存储的消息会保留原始发送者信息
- 支持媒体文件大小限制,可通过配置项调整
- 自动检测并避免存储重复消息
- 支持嵌套转发消息的递归处理
- 转发消息可选择相关用户进行绑定,超时后自动跳过
- 可通过配置项禁用转发消息用户选择功能或调整超时时间
欢迎提交 Issue 或 Pull Request 来帮助改进这个插件!
本项目采用 MIT 许可证 - 详情请查看 LICENSE 文件