blob: 599623b731120bc93dbbac6a3d6c2d1809869ccb [file] [log] [blame] [view] [raw]
# Rivoreo Agent - Telegram Bot 详细指南
专为Rivoreo社区设计的智能Telegram Bot,基于Claude Code SDK实现,支持私聊和群组消息处理、流式消息发送、文件处理等完整功能。
> 📚 **主要文档**: 请先阅读 [主项目README](../README.md) 了解整体功能和快速开始指南
>
> 📊 **当前状态**: v2.3.0 | 461个测试用例100%通过 | 89%代码覆盖率 | 2025-10-04
## 🎯 Telegram Bot 专属特性
### 💬 智能消息处理
- **流式回复**: 消息内容实时更新,提供流畅的对话体验
- **Markdown智能清理**: 自动处理格式问题,确保Telegram兼容性
- **上下文感知**: 每个用户/群组独立的对话历史和上下文
- **持久化记忆**: Bot重启后自动恢复所有对话历史
### 🖼️ 多媒体文件处理
- **图片分析**: 自动分析上传的图片并提供详细描述
- **文档处理**: 支持PDFWord、文本等多种格式文档分析
- **文件安全**: 大小限制(20MB)、格式白名单、自动清理
### 🏢 群组智能参与
- **@机器人检测**: 自动识别群组中的@提及
- **智能回复时机**: 基于上下文判断是否需要参与讨论
- **权限精细控制**: 支持用户级和群组级权限管理
## 🔧 详细配置指南
### 创建Telegram Bot
1. Telegram中联系 [@BotFather](https://t.me/BotFather)
2. 发送 `/newbot` 创建新机器人
3. 按提示设置Bot名称和用户名
4. 获取Bot Token (格式: `1234567890:ABCdefGhIjKlMnOpQrStUvWxYz`)
### 获取用户和群组ID
```bash
# 启动Bot并查看日志
python scripts/start_telegram_bot.py
# 私聊Bot或在群组@Bot后查看日志输出:
# [INFO] 收到用户消息: 用户ID=123456789, 用户名=@username
# [INFO] 收到群组消息: 群组ID=-1001234567890, 群组名=Group Name
```
### 完整配置文件示例 (configs/local.toml)
```toml
[telegram]
bot_token = "1234567890:ABCdefGhIjKlMnOpQrStUvWxYz"
allowed_users = [123456789, 987654321] # 允许的用户ID列表
allowed_groups = [-1001234567890] # 允许的群组ID列表 (负数)
[telegram.message]
stream_update_interval = 1.0 # 流式消息更新间隔(秒)
max_message_length = 4096 # 最大消息长度
context_history_limit = 50 # 上下文历史保留数量
reply_timeout = 30 # 回复超时时间(秒)
[telegram.files]
max_file_size_mb = 20 # 最大文件大小(MB)
temp_dir = "temp/telegram" # 临时文件目录
allowed_image_types = ["jpg", "jpeg", "png", "gif", "webp"]
allowed_document_types = ["pdf", "doc", "docx", "txt", "md"]
[telegram.storage]
data_dir = "data/storage" # 持久化数据目录
auto_save_interval = 60 # 自动保存间隔(秒)
backup_enabled = true # 启用备份功能
max_history_per_chat = 1000 # 每个聊天最大历史记录数
[telegram.behavior]
auto_typing = true # 发送"正在输入"状态
markdown_mode = "safe" # Markdown处理模式: safe/strict/off
error_retry_count = 3 # 错误重试次数
rate_limit_per_user = 10 # 每用户每分钟消息限制
```
## 🚀 启动和部署选项
### 开发环境启动
```bash
# 方式1: 专用启动脚本(推荐)
cd run/telegrambot
./start_telegrambot.sh
# 方式2: Python直接启动
python scripts/start_telegram_bot.py
# 方式3: 指定工作目录
python scripts/start_telegram_bot.py --working-dir ./run/telegrambot
# 方式4: 指定配置环境
CLAUDE_CONFIG=local python scripts/start_telegram_bot.py
```
### 生产环境部署
```bash
# 1. 配置生产环境
export CLAUDE_CONFIG=production
export ANTHROPIC_API_KEY="your_production_api_key"
# 2. 使用systemd服务(推荐)
sudo cp scripts/rivoreo-agent.service /etc/systemd/system/
sudo systemctl enable rivoreo-agent
sudo systemctl start rivoreo-agent
# 3. 查看服务状态
sudo systemctl status rivoreo-agent
sudo journalctl -u rivoreo-agent -f
```
### Docker容器部署
```bash
# 构建镜像
docker build -t rivoreo-agent .
# 运行容器
docker run -d --name rivoreo-telegram-bot \
-e ANTHROPIC_API_KEY=your_api_key \
-e CLAUDE_CONFIG=production \
-v ./configs:/app/configs:ro \
-v ./data:/app/data \
--restart unless-stopped \
rivoreo-agent
# 查看日志
docker logs -f rivoreo-telegram-bot
```
## 💬 使用场景和最佳实践
### 私聊使用模式
```
用户: 你好
Bot: 🤖 你好!我是Rivoreo Agent,你的智能AI助手。我可以:
• 💬 进行自然对话和问答
• 🖼️ 分析你发送的图片
• 📄 处理文档和文件
• 🧠 使用YOLO模式进行深度思考
直接发送消息、图片或文档给我即可!
用户: [发送图片]
Bot: 🖼️ 我看到了一张...的图片。图片中显示了...
[实时更新消息内容,流式显示分析结果]
```
### 群组使用模式
```
用户A: 大家好!
用户B: @rivoreo_agent 请分析一下这个技术问题...
Bot: 🤖 我来分析这个技术问题...
[基于群组上下文提供相关回复]
管理员: @rivoreo_agent 总结一下刚才的讨论
Bot: 📝 根据刚才的讨论,我总结如下要点:
1. ...
2. ...
```
### 文件处理工作流
1. **上传文件**: 直接发送图片或文档到Bot
2. **自动识别**: Bot自动识别文件类型和内容
3. **智能分析**: 根据文件类型进行相应的分析处理
4. **结果反馈**: 流式更新分析结果和建议
## 🧪 测试和监控
### 功能验证脚本
```bash
# 运行完整的功能验证
python scripts/verify_telegram_bot.py
# 输出示例:
# ✅ Bot Token验证通过
# ✅ 权限配置验证通过
# ✅ 文件处理功能正常
# ✅ 持久化存储正常
# ✅ 流式消息功能正常
```
### 测试覆盖状态 (2025-10-04)
| 测试模块 | 测试数量 | 通过率 | 覆盖率 | 状态 |
|----------|----------|--------|--------|------|
| Bot核心功能 | 45 | 100% | 81% | 优秀 |
| 消息处理器 | 38 | 100% | 72% | 良好 |
| 文件处理器 | 32 | 100% | 81% | 优秀 |
| 上下文管理 | 25 | 100% | 93% | 🏆 卓越 |
| 流式发送器 | 20 | 100% | 56% | ⚠️ 待改进 |
### 性能监控指标
```bash
# 查看Bot运行状态
ps aux | grep start_telegram_bot
# 监控内存使用
watch -n 5 'ps -p $(pgrep -f start_telegram_bot) -o pid,ppid,cmd,%mem,%cpu'
# 查看存储使用情况
du -sh data/storage/
ls -la data/storage/telegram_*
# 实时日志监控
tail -f logs/telegram_bot.log | grep -E "(ERROR|WARNING|消息处理|用户)"
```
## 🔧 故障排除专题
### 常见错误及解决方案
#### 1. Bot Token相关错误
```
❌ Error: 401 Unauthorized: bot token is invalid
```
**解决方案**:
- 检查Token格式是否正确 (数字:字母数字组合)
- 确认Token未过期或被撤销
- 重新从BotFather获取Token
#### 2. 权限被拒绝
```
❌ 用户 123456789 无权限访问此Bot
```
**解决方案**:
```toml
# 在 configs/local.toml 中添加用户ID
[telegram]
allowed_users = [123456789] # 添加用户ID到列表
allowed_groups = [-1001234567890] # 群组ID(负数)
```
#### 3. 文件处理失败
```
❌ 文件过大: 25.5MB > 20MB限制
```
**解决方案**:
```toml
# 调整文件大小限制
[telegram.files]
max_file_size_mb = 50 # 增加到50MB
```
#### 4. Markdown解析错误
```
❌ Can't parse entities: can't find end of the entity starting at byte offset 123
```
**解决方案**: Bot已集成智能Markdown清理,自动修复格式问题。如仍有问题,可调整配置:
```toml
[telegram.behavior]
markdown_mode = "safe" # safe/strict/off
```
#### 5. 持久化数据问题
```
❌ 无法保存对话历史: Permission denied
```
**解决方案**:
```bash
# 检查目录权限
ls -la data/storage/
chmod 755 data/storage/
chown -R $USER:$USER data/
# 检查磁盘空间
df -h
```
### 调试工具和技巧
#### 启用详细日志
```python
# 在启动脚本中添加调试配置
import logging
logging.basicConfig(level=logging.DEBUG)
# 或通过环境变量
export PYTHONPATH=/path/to/project:$PYTHONPATH
export LOG_LEVEL=DEBUG
python scripts/start_telegram_bot.py
```
#### 测试特定功能
```bash
# 测试消息处理
python -m pytest tests/unit/telegram/test_message_handler.py -v -k "test_process_text_message"
# 测试文件处理
python -m pytest tests/unit/telegram/test_file_handler.py -v
# 测试完整流程
python -m pytest tests/integration/telegram/ -v
```
## 🎯 高级功能配置
### 自定义AI行为
通过 `run/telegrambot/CLAUDE.md` 文件自定义Bot的个性和行为:
```markdown
# Rivoreo Agent 个性化设置
你是Rivoreo社区的智能AI助手,具有以下特点:
- 🤖 专业而友好的交流风格
- 🎯 专注于技术问题的深度分析
- 🚀 积极主动提供解决方案
- 🌟 保持对新技术的好奇和学习态度
在群组中:
- 只在被@时响应,保持适度参与
- 基于上下文提供相关性建议
- 避免重复已讨论的内容
在私聊中:
- 主动了解用户需求
- 提供详细的技术说明
- 推荐最佳实践方案
```
### webhook集成配置
```toml
[webhook]
enable = true
port = 8080
secret_token = "your_webhook_secret"
allowed_ips = ["127.0.0.1"]
[webhook.bot_communication]
enable_broadcast = true
target_bots = ["@another_bot"]
```
## 📈 性能优化建议
### 消息处理优化
- **批处理**: 启用消息批处理减少API调用频率
- **缓存**: 使用Redis缓存频繁访问的数据
- **异步队列**: 使用Celery处理耗时任务
### 存储优化
- **定期清理**: 设置自动清理过期数据的定时任务
- **分片存储**: 大量用户时考虑按用户ID分片存储
- **压缩备份**: 启用数据压缩减少存储空间
### 监控告警
```python
# 添加性能监控
import psutil
import time
def monitor_performance():
cpu_percent = psutil.cpu_percent()
memory_percent = psutil.virtual_memory().percent
if cpu_percent > 80 or memory_percent > 80:
# 发送告警通知
send_alert(f"高资源使用: CPU {cpu_percent}%, 内存 {memory_percent}%")
```
## 🤝 社区和支持
### 贡献指南
1. **问题反馈**: 通过GitHub Issues报告问题
2. **功能建议**: 提交Feature Request描述需求
3. **代码贡献**: Fork项目并提交Pull Request
4. **文档改进**: 帮助改善文档和示例
### 技术交流
- **Rivoreo社区群**: 加入Rivoreo技术交流群组
- **开发者论坛**: 参与技术讨论和经验分享
- **定期更新**: 关注项目更新和新功能发布
---
**📱 Telegram Bot专属**: 本指南专注于Telegram Bot的详细配置和使用,更多整体功能请参考[主项目文档](../README.md)
**🎉 Rivoreo Agent Telegram Bot**: Rivoreo社区量身定制的智能AI聊天助手,让AI技术真正为社区服务!
**最后更新**: 2025104 | **版本**: v2.3.0