koishi-plugin-onebot-tool
Version:
OneBot 工具集,带有点赞、打卡、拍一拍、表情回应和 AI 语音等功能,可独立开关和自由配置
176 lines (140 loc) • 7.82 kB
Markdown
# koishi-plugin-onebot-tool
[](https://www.npmjs.com/package/koishi-plugin-onebot-tool)
OneBot 工具集,带有点赞、打卡、拍一拍、表情回应和 AI 语音等功能,可独立开关和自由配置
## 主要功能
### 点赞
- 用户发送"赞我"后,机器人会给该用户点赞(默认点赞5次)
- 支持管理点赞列表,可添加或移除用户
- 支持每日自动点赞功能(基于 cron 或定时器)
- 自动撤回命令响应消息,保持聊天环境整洁
### 拍一拍
- 自定义拍一拍的回复内容
- 支持消息回复和命令执行两种响应方式
- 可设置不同响应的触发权重
- 防刷屏的时间间隔控制(可设置为0关闭限制)
- 支持通过命令主动拍一拍他人,可配置单次最大次数和间隔时间
- 丰富的占位符支持,实现个性化回复内容
#### 占位符
在拍一拍中,可以使用以下占位符:
| 占位符 | 说明 | 示例 |
|--------|------|------|
| `{at}` | @用户 | `{at}不要拍我啦!` |
| `{username}` | 用户昵称 | `你好,{username}!` |
| `{hitokoto:参数}` | 随机一言(直接传递参数) | `{hitokoto:c=a&min_length=10}` |
| `{image:URL}` | 显示图片 | `{image:URL}` |
| `{pixiv}` | 随机Pixiv图片 | `{pixiv}` |
| `{~}` | 分段发送 | `插画来啦~{~}{pixiv}` |
> - `{hitokoto}` 支持传递参数,详见[一言API文档](https://developer.hitokoto.cn/sentence/)
> - `{pixiv}` 会自动从配置的图片列表中随机选取一张图片发送
### 表情回应
- 支持多种表情响应模式:
- 关闭:不启用表情回应功能
- 仅关键词:仅对配置的关键词进行表情回应
- 仅同表情:仅对消息中包含的表情进行同表情回应
- 二者:同时支持关键词和表情响应
- 支持通过关键词触发特定表情回应,可配置多个关键词和表情映射
- 自动识别消息中的表情元素并添加相应表情回应
- 提供表情ID查询和搜索功能
- 支持发送随机表情和多个表情组合
### 群打卡
- 支持多种打卡模式:
- 关闭:不启用群打卡功能
- 手动:仅为手动添加的群列表执行打卡
- 自动:自动获取所有群并执行打卡
- 支持每日自动群打卡(基于 cron 或定时器)
- 支持手动添加和移除群到打卡列表
- 支持单独为指定群发起打卡
- 支持一键为所有群打卡
- 自动撤回命令响应消息,保持聊天环境整洁
## AI 语音
- 支持通过命令发送 AI 语音到群聊
- 支持文字转 AI 语音并返回语音消息
- 支持查询和预览所有可用的 AI 语音角色
- 支持角色预览试听
## 命令说明
### 点赞指令
- `zanwo` / `赞我` - 为自己点赞(单次点赞5次)
- `zanwo.user @用户` - 为指定用户点赞(支持@和QQ号两种格式)
- `zanwo.list` - 查看当前点赞列表中的用户(需要权限等级3)
- `zanwo.add @用户` - 添加指定用户到点赞列表(需要权限等级2)
- `zanwo.remove @用户` - 从点赞列表移除指定用户(需要权限等级2)
- `zanwo.all` - 立即执行对列表中所有用户的点赞(需要权限等级3)
- `zanwo.clear` - 清空点赞列表中的用户(需要权限等级4)
### 拍一拍指令
- `poke [次数]` - 发送拍一拍给自己,可指定次数
- `poke [用户]` - 拍指定用户一次
- `poke [次数] [用户]` - 拍指定用户多次
- 例如:`poke 3 @12345` - 拍用户12345三次
### 表情回应指令
- `stick [表情ID/名称]` - 使用指定表情回应消息
- 例如:`stick 76,77` - 使用ID为76和77的表情回应
- 例如:`stick 赞,踩` - 使用名称为赞和踩的表情回应
- `stick.random [数量]` - 回应随机表情,可指定数量(最多20个)
- `stick.search [关键词]` - 搜索包含关键词的表情
- 例如:`stick.search 龙` - 搜索包含"龙"的表情
- `stick.list [页码]` - 查看支持的表情列表,分页显示
### 群打卡指令
- `gsign` - 为当前群发起打卡
- `gsign.group <群号>` - 为指定群发起打卡
- `gsign.list` - 查看当前打卡列表中的群(需要权限等级3)
- `gsign.add <群号>` - 添加指定群到打卡列表(需要权限等级2)
- `gsign.remove <群号>` - 从打卡列表移除指定群(需要权限等级2)
- `gsign.all` - 立即执行对所有群的打卡(需要权限等级3)
- `gsign.clear` - 清空打卡列表(需要权限等级4)
### AI 语音指令
- `airec <角色ID/名称> <文本>` - 以指定 AI 语音角色发送语音到群聊
- `airec.list` - 查看所有可用的 AI 语音角色列表
- `airec.text <角色ID/名称> <文本>` - 文字转 AI 语音,返回语音消息
- `airec.preview <角色ID/名称/ID>` - 预览指定语音角色的语音示例
## 插件配置
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| `autoLike` | 是否启用每日自动点赞 | `false` |
| `signMode` | 群打卡模式(off/manual/auto) | `off` |
| `stickMode` | 表情回应模式(off/keyword/emoji/all) | `off` |
| `enabled` | 启用自动响应拍一拍 | `true` |
| `maxTimes` | 单次拍一拍最大次数 | `3` |
| `actionInterval` | 连续拍一拍间隔(毫秒) | `500` |
| `keywordEmojis` | 关键词触发的表情回应配置 | `[{"keyword":"点赞","emojiId":"76"}]` |
| `responses` | 拍一拍响应列表 | 见下方示例 |
| `imagesPath` | 图集地址 | `https://raw.githubusercontent.com/YisRime/koishi-plugin-onebot-tool/main/resource/pixiv.json` |
```yaml
autoLike: true # 启用每日自动点赞
stickMode: 'off' # 表情回应模式:'off'(关闭)、'keyword'(仅关键词)、'emoji'(仅同表情)、'all'(二者)
enabled: true # 启用自动响应拍一拍
maxTimes: 3 # 单次拍一拍最大次数(1-200)
actionInterval: 500 # 连续拍一拍间隔(ms)
keywordEmojis: # 关键词触发的表情回应配置
- keyword: '点赞' # 触发关键词
emojiId: '76' # 表情ID或名称
responses: # 拍一拍响应列表
- type: 'message' # 类型:message(消息)或command(命令)
content: '{at}你干嘛~!'
weight: 0 # 触发概率权重(0-100)
- type: 'message'
content: '{hitokoto}'
weight: 0
- type: 'message'
content: '稍等哦~插画一会就来~{~}{pixiv}'
weight: 100
- type: 'command'
content: 'poke'
weight: 0
```
## 使用方法
1. 发送"赞我"即可体验点赞功能
2. 拍一拍机器人会根据配置随机回应,可配置响应间隔(设置为0时关闭间隔限制)
3. 使用 `poke` 命令可以主动拍一拍用户,支持多种参数形式
4. 当群成员发送包含表情的消息时,机器人会根据表情回应模式自动添加相应的表情回应
5. 也可以配置关键词触发表情回应,当消息中包含特定关键词时添加对应表情
6. 使用 `stick` 命令可手动为消息添加表情回应,支持多种表情组合
7. 使用 AI 语音相关命令可体验语音角色发送、文字转语音和角色预览等功能
## 注意事项
- **如何自定义图片数据**
- 插件默认数据源自于 [Omega Miya](https://github.com/Ailitonia/omega-miya),本人仅作简单处理。
- 若需自定义图片数据,请设置 `imagesPath` 以使用本地文件夹或下载外置链接列表。
- 下载 JSON 数据格式为每行一个图片直链,已自动添加 Referer 请求头,无需特殊处理即可获取 Pixiv 图片。
- **自动点赞/打卡未生效?**
- 需安装并启用 `koishi-plugin-cron` 插件以支持定时任务,或未到配置的 24H 定时器执行时间。
- **AI 语音无效?**
- 请确保 OneBot 适配器支持 AI 语音接口。