Files

238 lines
4.5 KiB
Markdown
Raw Permalink Normal View History

2026-06-24 17:25:54 +08:00
# Hugo 短代码功能 & Telegram Bot 适配
## ✅ 已实现功能
### 1️⃣ Hugo 短代码
#### 实况照片 (Live Photo)
```markdown
{{< livephoto image="photo.jpg" video="photo.mp4" >}}
```
- 悬停播放视频
- 点击切换播放/暂停
- 静音控制
- 自动检测图片比例
#### 语音气泡
```markdown
{{< voice src="voice.ogg" >}}
```
- 微信风格设计
- 点击播放语音
- 自动显示时长
- 未读标记(当天发布)
#### 音乐卡片
```markdown
{{< music-card src="song.mp3" name="歌曲名" artist="歌手" cover="cover.jpg" >}}
```
- 精美卡片设计
- 播放/暂停控制
- 进度条拖拽
- 时间显示
---
## 📱 Telegram Bot 使用指南
### 发送语音消息
**操作**:
1. 在写作模式下(`/new` 或 `/edit`)
2. 发送语音消息
**Bot 响应**:
```
🎙️ 正在处理语音...
✅ 语音已保存:1719234567-voice.ogg
📝 转文字:今天天气真好...
```
**生成内容**:
```markdown
{{< voice src="1719234567-voice.ogg" >}}
> 今天天气真好...
```
---
### 发送音频文件(MP3)
**操作**:
1. 在写作模式下
2. 发送 MP3 文件
**Bot 响应**:
```
🎵 正在处理音频文件...
✅ 音频已保存:1719234567-music.mp3
请输入歌曲信息(格式:歌名 - 歌手):
```
**用户回复**:
```
晴天 - 周杰伦
```
**Bot 响应**:
```
🎵 歌曲:晴天
🎤 歌手:周杰伦
是否添加封面图?
[📷 添加封面图] [⏭️ 跳过]
```
**选项 A - 添加封面图**:
1. 点击 "添加封面图"
2. 发送图片
3. Bot:✅ 封面图已保存:cover.jpg
4. 生成带封面的音乐卡片
**选项 B - 跳过**:
1. 点击 "跳过"
2. 直接生成不带封面的音乐卡片
**生成内容**:
```markdown
{{< music-card src="1719234567-music.mp3" name="晴天" artist="周杰伦" cover="cover.jpg" >}}
```
---
### 发送图片
**操作**:
1. 在写作模式下
2. 发送图片
**Bot 响应**:
```
📷 图片已保存:1719234567-photo.jpg
💡 提示:如果您发送的是 iOS 实况照片(Live Photo),
动态效果无法自动提取。如需保留动态效果,请:
1. 将实况照片转为视频/GIF 后重新发送
2. 或者单独发送视频部分
继续发送其他内容...
```
**生成内容**:
```markdown
![image](1719234567-photo.jpg)
```
---
## 🎯 功能特性
### PJAX 支持
- 所有短代码支持 PJAX 无刷新页面切换
- 自动重新初始化交互逻辑
- 保持播放状态
### 暗黑模式
- 自动适配暗黑主题
- 深色背景优化
- 高对比度设计
### 响应式设计
- 移动端友好
- 触摸操作支持
- 自适应布局
---
## 🛠️ 技术实现
### 文件结构
**Hugo 主题 (ying)**:
```
themes/ying/
├── layouts/shortcodes/
│ ├── livephoto.html
│ ├── voice.html
│ └── music-card.html
├── assets/css/
│ └── shortcodes.css
└── assets/js/
└── shortcodes.js
```
**Telegram Bot (write-server)**:
```
write-server/src/lib/bot/
├── poll.ts
│ ├── handleVoiceEnhanced() # 语音增强
│ ├── handleAudioEnhanced() # 音频处理
│ ├── handlePhotoEnhanced() # 图片增强
│ ├── handleAudioInfoEnhanced() # 音频信息
│ └── handleAudioCoverCallback() # 封面图回调
└── handlers.ts
```
### API 集成
- Artalk 评论系统
- Telegram Bot API
- Hugo 静态生成
---
## 📝 部署检查清单
- [ ] 提交 ying 主题修改
- [ ] 提交 write-server 修改
- [ ] 推送到远程仓库
- [ ] 重新构建 Hugo 站点
- [ ] 部署 write-server
- [ ] 测试语音消息
- [ ] 测试音频文件
- [ ] 测试图片上传
- [ ] 验证短代码渲染
- [ ] 测试 PJAX 页面切换
- [ ] 测试暗黑模式
---
## 🐛 故障排除
### 语音不播放
- 检查音频文件路径
- 确认文件格式支持(OGG, MP3)
- 查看浏览器控制台错误
### 音乐卡片无响应
- 检查 JS 是否正确加载
- 确认 PJAX 初始化
- 刷新页面重试
### 封面图不显示
- 检查图片路径
- 确认文件已保存
- 查看 Hugo 构建日志
---
## 📚 相关链接
- [Hugo 短代码文档](https://gohugo.io/content-management/shortcodes/)
- [Telegram Bot API](https://core.telegram.org/bots/api)
- [Amigo 主题](https://github.com/zqlit/Hugo-Theme-Amigo)
---
## 📊 版本历史
**v1.0.0** (2026-06-24)
- ✅ 移植 Amigo 主题短代码
- ✅ Telegram Bot 语音增强
- ✅ Telegram Bot 音频文件支持
- ✅ 封面图上传功能
- ✅ 实况照片引导提示
- ✅ PJAX 支持
- ✅ 暗黑模式适配