koishi-plugin-echo-cave 是一个为 Koishi 机器人框架设计的群聊消息存储与回溯插件。它能够将群聊中的消息(包括普通消息和转发消息)存储到"回声洞"中,并支持随时随机或指定 ID 调取这些消息,为群聊增添更多互动乐趣和记录功能。
- 📥 消息存储:支持存储普通消息和转发消息到数据库
- 🔍 消息查询:支持随机获取消息或通过 ID 精确查找
- 🗑️ 消息管理:支持删除特定 ID 的消息(消息存储者、原始发送者或管理员)
- 👤 个人追踪:支持查看自己投稿的消息列表
- 🔍 发言回溯:支持查看自己被他人投稿的消息列表
- 📊 排行榜功能:支持查看不同时间段内的回声洞排行榜
- 🎨 模板化展示:消息展示时自带多种风格的外部包裹信息
- 🔒 管理员保护:可配置管理员消息保护
- 📏 媒体限制:支持配置媒体文件大小限制
- 👥 转发消息用户选择:支持从转发消息中选择相关用户进行绑定
- ⚖️ 加权随机抽取:根据消息被抽取次数动态调整抽取概率,被抽取次数越多,概率越低。使用公式:
其中,
权重 = 1 / (1 + drawCount * α) 概率 = 权重 / 总权重drawCount为消息被抽取次数,α为调整因子(可配置,默认0.2)
| 命令 | 说明 | 权限要求 |
|---|---|---|
cave |
随机获取一条回声洞消息 | 所有人 |
cave <id> |
获取特定 ID 的回声洞消息 | 所有人 |
cave.echo [...userIds] |
将引用的消息存入回声洞 | 所有人 |
cave.drop <id> |
删除特定 ID 的回声洞消息 | 消息存储者、原始发送者或管理员 |
cave.listen |
获取自己投稿的回声洞列表 | 所有人 |
cave.trace |
获取自己发言被投稿的回声洞列表 | 所有人 |
cave.purge <...ids> |
批量删除多个 ID 的回声洞消息 | 消息存储者、原始发送者或管理员 |
cave.search <id> |
搜索特定 ID 的回声洞消息 | 所有人 |
cave.bind <id> <...userIds> |
将用户绑定到特定 ID 的回声洞 | 所有人 |
cave.rank [period] |
查看回声洞排行榜,支持多种时间段 | 所有人 |
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 文件