| commit | e5ae32886906a52f8737767c28e6d1afbd2583ff | [log] [download] |
|---|---|---|
| author | Rivoreo AutoPilot <autopilot@rivoreo.one> | Fri Oct 03 23:20:08 2025 +0800 |
| committer | Rivoreo AutoPilot <autopilot@rivoreo.one> | Fri Oct 03 23:20:08 2025 +0800 |
| tree | 5d2bc3cf2a44620c976bf2faafc68f97763b62db | |
| parent | 6a6d91d4229182b365bb94d0a26727c881d011f6 [diff] |
fix(webhook): resolve event loop issues and enhance bot communication system Major improvements to the webhook system for stable bot-to-bot communication: Event Loop Fixes: - Replace asyncio.get_event_loop().time() with time.time() to avoid cross-loop issues - Implement queue-based message processing to separate webhook threads from main loop - Add proper task management and cancellation for webhook queue processor Webhook Message Processing: - Add dedicated handle_webhook_message() method for webhook-specific processing - Implement proper @mention detection for webhook messages (_check_mention_in_text_webhook) - Disable random participation for webhook messages to prevent bot spam - Add comprehensive message broadcasting back to webhook server Stream Message Enhancements: - Fix send_streaming_message to return final message object with complete content - Ensure webhook bot replies are properly saved and broadcast to other bots - Add proper error handling for stream message processing Configuration and Scripts: - Add webhook server startup script (start_webhook_server.sh) - Create run_server.py module for independent webhook server operation - Add setup guide script for easy bot deployment - Fix callback server threading in webhook client Architecture Improvements: - Implement cross-thread communication using asyncio.run_coroutine_threadsafe - Add proper chat_id handling in user_info for webhook messages - Enhance logging with ERROR level for critical webhook queue operations - Add bot username setting for accurate @mention detection Breaking Changes: - Webhook messages now use queue processing instead of direct handling - Random participation disabled for webhook messages by default Fixes #webhook-event-loop-error #webhook-message-loss #bot-reply-broadcast 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
基于Claude Code SDK的智能助手项目,支持多种交互模式和Telegram Bot功能。
claude-agent/ ├── src/claude_agent/ # 源代码 │ ├── core/ # 核心Agent功能 │ │ └── agent.py # Agent核心逻辑 │ ├── telegram/ # Telegram Bot模块 │ │ ├── bot.py # Bot主类 │ │ ├── message_handler.py # 消息处理器 │ │ ├── context_manager.py # 上下文管理 │ │ ├── file_handler.py # 文件处理 │ │ ├── stream_sender.py # 流式消息发送 │ │ ├── claude_adapter.py # Claude Agent适配器 │ │ └── interfaces.py # 接口定义 │ ├── storage/ # 持久化存储 │ │ └── persistence.py # 数据持久化 │ └── utils/ # 工具函数 ├── scripts/ # 启动脚本 │ ├── start_telegram_bot.py # Telegram Bot启动脚本 │ ├── verify_telegram_bot.py # 功能验证脚本 │ ├── main.py # 基础CLI │ └── main_enhanced.py # 增强CLI ├── run/telegrambot/ # Telegram Bot专用运行环境 │ ├── CLAUDE.md # Bot个性化提示词 │ └── start_telegrambot.sh # 便捷启动脚本 ├── configs/ # 配置文件 │ ├── default.toml # 默认配置模板 │ ├── local.toml # 本地开发配置 │ └── production.toml # 生产环境配置 ├── tests/ # 测试套件 │ ├── unit/ # 单元测试 │ ├── integration/ # 集成测试 │ └── blackbox/ # 黑盒测试 ├── data/ # 运行时数据 │ └── storage/ # 持久化数据存储 └── temp/ # 临时文件
# 激活虚拟环境 source venv/bin/activate # 确保依赖已安装 pip install -r requirements.txt
获取Bot Token:
配置文件设置 (configs/local.toml):
[telegram] bot_token = "YOUR_BOT_TOKEN_HERE" allowed_users = [YOUR_USER_ID] allowed_groups = [YOUR_GROUP_ID] [telegram.message] stream_update_interval = 1.0 max_message_length = 4096 context_history_limit = 50
获取用户/群组ID:
# 运行Bot后查看日志获取ID python scripts/start_telegram_bot.py
# 方式1: 使用专用启动脚本(推荐) cd run/telegrambot ./start_telegrambot.sh # 方式2: 直接启动 python scripts/start_telegram_bot.py # 方式3: 指定配置环境 CLAUDE_CONFIG=production python scripts/start_telegram_bot.py
# 完整测试套件 python -m pytest tests/unit/ -v # Telegram模块测试 python -m pytest tests/unit/telegram/ -v # 覆盖率检查 python -m pytest tests/unit/ --cov=src/claude_agent --cov-report=term # 功能验证 python scripts/verify_telegram_bot.py
[telegram] bot_token = "BOT_TOKEN" # Telegram Bot Token allowed_users = [123456] # 允许的用户ID列表 allowed_groups = [-1001234567] # 允许的群组ID列表 [telegram.message] stream_update_interval = 1.0 # 流式消息更新间隔(秒) max_message_length = 4096 # 最大消息长度 context_history_limit = 50 # 上下文历史保留数量 [telegram.files] max_file_size_mb = 20 # 最大文件大小(MB) temp_dir = "temp/telegram" # 临时文件目录
Bot Token无效
❌ 请配置有效的Telegram Bot Token
解决: 检查 configs/local.toml 中的 bot_token 配置
权限被拒绝
❌ 用户无权限访问
解决: 将用户/群组ID添加到白名单
Markdown解析错误
❌ Can't parse entities
解决: 已修复Markdown清理机制,确保格式正确
# 运行测试 python -m pytest tests/unit/ -v # 代码格式化 black src/ tests/ # 类型检查 mypy src/
MIT License - 详见 LICENSE 文件
注意: 请勿将包含真实Bot Token的配置文件提交到版本控制系统。