Files
docker-configs/discord_bot/test_bot.py
Will Song 568dcc45e4 Fix router failover and add Discord bot
- Remove duplicate claude_api provider to fix automatic failover
- Enhance error detection with HTTP status codes and more indicators
- Add comprehensive README documentation with manual switching
- Implement Discord bot with Claude Code CLI integration
- Support /terminal and /claude commands with AI-powered responses

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 21:35:52 -05:00

106 lines
3.0 KiB
Python
Executable File
Raw Permalink 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.

#!/usr/bin/env python3
"""
Discord Bot 测试脚本
用于本地测试bot功能不连接Discord
"""
import asyncio
import sys
from pathlib import Path
import logging
# 添加项目路径
sys.path.append(str(Path(__file__).parent))
from slash_commands.terminal.terminal_handler import TerminalHandler
from utils.database import DatabaseManager
from utils.token_reader import TokenReader
# 配置日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
async def test_terminal_handler():
"""测试Terminal处理器"""
print("\n🧪 测试Terminal处理器...")
handler = TerminalHandler()
test_user_id = "test_user_123"
# 测试命令列表
test_commands = [
"ls",
"pwd",
"docker ps",
"查看当前目录文件",
"查看Docker容器状态",
"rm -rf /", # 应该被拒绝
]
for command in test_commands:
print(f"\n🔧 测试命令: {command}")
try:
result = await handler.handle_command(command, test_user_id)
print(f"✅ 结果: {result[:200]}...")
except Exception as e:
print(f"❌ 错误: {e}")
def test_database():
"""测试数据库功能"""
print("\n🧪 测试数据库功能...")
try:
# 使用测试数据库
db_manager = DatabaseManager("./test.db")
# 测试术语查询
term_def = db_manager.get_term_definition("docker ps")
print(f"✅ 术语定义: {term_def}")
# 测试添加术语
success = db_manager.add_term("test_term", "测试术语定义", "test", 1)
print(f"✅ 添加术语: {'成功' if success else '失败'}")
# 测试命令日志
db_manager.log_command("test_user", "test command", "terminal", "success", "测试结果", 1.5)
print("✅ 命令日志记录成功")
except Exception as e:
print(f"❌ 数据库测试失败: {e}")
def test_token_reader():
"""测试Token读取器"""
print("\n🧪 测试Token读取器...")
try:
token_reader = TokenReader("/home/will/docker/tokens.txt")
# 测试读取token
tu_token = token_reader.get_token("tu_discord_token")
print(f"✅ Tu Token: {tu_token[:20]}..." if tu_token else "❌ Tu Token读取失败")
claude_api = token_reader.get_token("claude_API")
print(f"✅ Claude API: {claude_api[:20]}..." if claude_api else "❌ Claude API读取失败")
except Exception as e:
print(f"❌ Token读取测试失败: {e}")
async def main():
"""主测试函数"""
print("🚀 Discord Bot 功能测试")
print("=" * 50)
# 测试各个组件
test_token_reader()
test_database()
await test_terminal_handler()
print("\n" + "=" * 50)
print("✅ 测试完成")
if __name__ == "__main__":
asyncio.run(main())