#!/usr/bin/env python3
"""
简化版飞书消息发送测试
使用标准库，无需额外安装
"""

import json
import urllib.request
import urllib.error
from pathlib import Path

def main():
    print("🤖 飞书机器人消息发送测试（简化版）")
    print("=" * 50)
    
    # 1. 读取配置
    config_path = Path.home() / ".openclaw" / "openclaw.json"
    print(f"📁 读取配置: {config_path}")
    
    if not config_path.exists():
        print("❌ 错误: 找不到OpenClaw配置文件")
        return
    
    with open(config_path, 'r', encoding='utf-8') as f:
        config = json.load(f)
    
    feishu_config = config.get('channels', {}).get('feishu', {})
    app_id = feishu_config.get('appId')
    app_secret = feishu_config.get('appSecret')
    
    if not app_id or not app_secret:
        print("❌ 错误: 配置文件中缺少feishu的appId或appSecret")
        return
    
    print(f"✅ 找到AppId: {app_id}")
    
    # 2. 获取App Token
    print("\n🔐 获取App Access Token...")
    token_url = "https://open.feishu.cn/open-apis/auth/v3/app_access_token/internal"
    token_data = json.dumps({
        "app_id": app_id,
        "app_secret": app_secret
    }).encode('utf-8')
    
    token_req = urllib.request.Request(
        token_url,
        data=token_data,
        headers={'Content-Type': 'application/json'},
        method='POST'
    )
    
    try:
        with urllib.request.urlopen(token_req) as response:
            token_result = json.loads(response.read().decode('utf-8'))
            app_token = token_result.get('app_access_token')
            
            if not app_token:
                print(f"❌ 获取App Token失败: {token_result}")
                return
            
            print("✅ 成功获取App Token")
            
    except urllib.error.URLError as e:
        print(f"❌ 网络错误: {e}")
        return
    
    # 3. 发送消息
    print("\n🚀 发送测试消息...")
    
    receive_id = "ou_e3075722dc18d6589aa320c6ccdeed6b"  # 你的飞书用户ID
    msg_type = "text"
    
    # 消息内容
    message_content = {
        "text": "👋 你好！这是从微信触发的飞书机器人测试消息！\n\n测试时间：2026年4月20日 12:45\n发送者：爪子（机器人身份）"
    }
    
    send_url = f"https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id"
    send_data = json.dumps({
        "receive_id": receive_id,
        "msg_type": msg_type,
        "content": json.dumps(message_content)  # 注意：content需要是JSON字符串
    }).encode('utf-8')
    
    send_req = urllib.request.Request(
        send_url,
        data=send_data,
        headers={
            'Content-Type': 'application/json',
            'Authorization': f'Bearer {app_token}'
        },
        method='POST'
    )
    
    print(f"📤 发送到: {receive_id}")
    print(f"📝 内容: {message_content['text']}")
    
    try:
        with urllib.request.urlopen(send_req) as response:
            send_result = json.loads(response.read().decode('utf-8'))
            message_id = send_result.get('data', {}).get('message_id')
            
            if message_id:
                print(f"✅ 消息发送成功!")
                print(f"📨 消息ID: {message_id}")
                print("\n🎉 测试完成！请检查飞书是否收到消息。")
            else:
                print(f"❌ 发送失败: {send_result}")
                
    except urllib.error.URLError as e:
        print(f"❌ 发送消息时出错: {e}")
        # 打印更多错误信息
        if hasattr(e, 'read'):
            print(f"错误详情: {e.read().decode('utf-8')}")

if __name__ == "__main__":
    main()