Files
qqbot/skills/qqbot-media/SKILL.md
rianli 93f284891c feat(qqbot): 添加图片发送功能及优化定时任务载荷格式
新增功能:
- 新增 qqbot-media 技能,支持 <qqimg> 标签发送本地图片
- 添加图片尺寸检测工具 (image-size.ts),自动识别常见图片格式
- 支持将本地图片上传至 QQ 富媒体服务器

优化改进:
- 定时任务支持结构化 JSON 载荷格式
- 优化 <qqimg> 标签正则表达式,避免误匹配反引号内的说明文字
- 完善消息处理流程和错误处理

文件变更:
- src/gateway.ts: 添加图片处理、上传逻辑
- src/outbound.ts: 增强外发消息能力
- src/utils/image-size.ts: 新增图片尺寸解析工具
- skills/qqbot-media/SKILL.md: 新增图片功能说明文档
- skills/qqbot-cron/SKILL.md: 补充结构化载荷说明
2026-02-03 13:14:22 +08:00

137 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: qqbot-media
description: QQ Bot 媒体发送指南。教 AI 如何发送图片给用户。
metadata: {"clawdbot":{"emoji":"📸"}}
triggers:
- qqbot
- qq
- 发送图片
- 发送文件
- 图片
- 本地文件
- 本地图片
priority: 80
---
# QQBot 媒体发送指南
## ⚠️ 重要:你有能力发送本地图片!
**当用户要求发送本地图片时,只需使用 `<qqimg>` 标签包裹图片路径即可。系统会自动处理文件读取和发送。**
**不要说"无法发送本地图片"!使用正确的标签格式,系统就能发送。**
---
## 📸 发送图片(推荐方式:`<qqimg>` 标签)
使用 `<qqimg>` 标签包裹图片路径,即可发送图片:
```
<qqimg>图片路径</qqimg>
```
### ✅ 发送本地图片示例
当用户说"发送那张图片"、"把图发给我"等,你应该输出:
```
这是你要的图片:
<qqimg>/Users/xxx/images/photo.jpg</qqimg>
```
### ✅ 发送网络图片示例
```
这是网络上的图片:
<qqimg>https://example.com/image.png</qqimg>
```
### ✅ 发送多张图片
```
这是你要的所有图片:
<qqimg>/Users/xxx/image1.jpg</qqimg>
<qqimg>/Users/xxx/image2.png</qqimg>
```
### 📝 标签说明
| 格式 | 说明 |
|------|------|
| `<qqimg>本地路径</qqimg>` | 发送本地图片(绝对路径) |
| `<qqimg>网络URL</qqimg>` | 发送网络图片 |
### ⚠️ 注意事项
1. **路径必须正确**:本地文件需要绝对路径,网络图片需要完整 URL
2. **支持的图片格式**jpg, jpeg, png, gif, webp, bmp
3. **不要拒绝**:如果用户要求发送本地图片,直接使用 `<qqimg>` 标签即可
4. **标签外的文本会正常发送**:可以在标签前后添加描述文字
---
## 🚫 错误示例(不要这样做)
**错误**:说"我无法发送本地图片"
**错误**:说"受限于技术限制,无法直接发送"
**错误**:只提供路径文本,不使用 `<qqimg>` 标签
**正确**:直接使用 `<qqimg>` 标签包裹路径
---
## 🔤 告知路径信息(不发送图片)
如果你需要**告知用户图片的保存路径**(而不是发送图片),直接写路径即可,不要使用标签:
```
图片已保存在:/Users/xxx/images/photo.jpg
```
或用反引号强调:
```
图片已保存在:`/Users/xxx/images/photo.jpg`
```
---
## 📋 高级选项JSON 结构化载荷
如果需要更精细的控制(如添加图片描述),可以使用 JSON 格式:
```
QQBOT_PAYLOAD:
{
"type": "media",
"mediaType": "image",
"source": "file",
"path": "/path/to/image.jpg",
"caption": "图片描述(可选)"
}
```
### JSON 字段说明
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `type` | string | ✅ | 固定为 `"media"` |
| `mediaType` | string | ✅ | 媒体类型:`"image"` |
| `source` | string | ✅ | 来源:`"file"`(本地)或 `"url"`(网络) |
| `path` | string | ✅ | 图片路径或 URL |
| `caption` | string | ❌ | 图片描述,会作为单独消息发送 |
> 💡 **提示**:对于简单的图片发送,推荐使用 `<qqimg>` 标签,更简洁易用。
---
## 🎯 快速参考
| 场景 | 使用方式 |
|------|----------|
| 发送本地图片 | `<qqimg>/path/to/image.jpg</qqimg>` |
| 发送网络图片 | `<qqimg>https://example.com/image.png</qqimg>` |
| 发送多张图片 | 多个 `<qqimg>` 标签 |
| 告知路径(不发送) | 直接写路径文本 |