#!/usr/bin/env python3
"""
测试发送飞书机器人消息
基于 feishu-send-message-as-app skill 的原理
"""

import json
import subprocess
import sys
from pathlib import Path

def get_feishu_credentials():
    """从OpenClaw配置获取飞书凭证"""
    config_path = Path.home() / ".openclaw" / "openclaw.json"
    
    if not config_path.exists():
        print(f"错误: 找不到OpenClaw配置文件: {config_path}")
        return None, None
    
    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 None, None
    
    return app_id, app_secret

def get_app_token(app_id, app_secret):
    """获取App Access Token"""
    import requests
    
    url = "https://open.feishu.cn/open-apis/auth/v3/app_access_token/internal"
    data = {
        "app_id": app_id,
        "app_secret": app_secret
    }
    
    try:
        response = requests.post(url, json=data)
        response.raise_for_status()
        result = response.json()
        
        app_token = result.get('app_access_token')
        if not app_token:
            print(f"错误: 获取App Token失败: {result}")
            return None
        
        print(f"✅ 成功获取App Token")
        return app_token
        
    except Exception as e:
        print(f"错误: 获取App Token时出错: {e}")
        return None

def send_message(app_token, receive_id, msg_type, content, receive_id_type="open_id"):
    """发送消息"""
    import requests
    
    url = f"https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type={receive_id_type}"
    headers = {
        "Authorization": f"Bearer {app_token}",
        "Content-Type": "application/json"
    }
    data = {
        "receive_id": receive_id,
        "msg_type": msg_type,
        "content": content
    }
    
    print(f"📤 发送消息到: {receive_id}")
    print(f"📝 消息类型: {msg_type}")
    print(f"📄 消息内容: {content}")
    
    try:
        response = requests.post(url, headers=headers, json=data)
        response.raise_for_status()
        result = response.json()
        
        message_id = result.get('data', {}).get('message_id')
        if message_id:
            print(f"✅ 消息发送成功!")
            print(f"📨 消息ID: {message_id}")
            return message_id
        else:
            print(f"❌ 消息发送失败: {result}")
            return None
            
    except Exception as e:
        print(f"❌ 发送消息时出错: {e}")
        return None

def main():
    """主函数"""
    print("🤖 飞书机器人消息发送测试")
    print("=" * 50)
    
    # 1. 获取凭证
    print("🔑 读取飞书凭证...")
    app_id, app_secret = get_feishu_credentials()
    if not app_id or not app_secret:
        return
    
    print(f"   AppId: {app_id}")
    
    # 2. 获取App Token
    print("🔐 获取App Access Token...")
    app_token = get_app_token(app_id, app_secret)
    if not app_token:
        return
    
    # 3. 准备消息
    receive_id = "ou_e3075722dc18d6589aa320c6ccdeed6b"  # 你的飞书用户ID
    msg_type = "text"
    
    # 消息内容 - 机器人身份发送
    content = json.dumps({
        "text": """👋 你好！我是爪子（机器人身份）！

这是从微信触发，在飞书以机器人身份发送的测试消息！

🎯 测试功能：
1. 微信触发 → 飞书发送
2. 机器人身份（不是用户身份）
3. 主动发起消息（不是被动响应）

⏰ 时间：2026年4月20日 12:40
✅ 跨平台消息系统测试"""
    })
    
    # 4. 发送消息
    print("\n🚀 开始发送消息...")
    message_id = send_message(app_token, receive_id, msg_type, content)
    
    if message_id:
        print("\n🎉 测试成功！")
        print("你现在应该能在飞书收到这条机器人消息了。")
    else:
        print("\n❌ 测试失败")

if __name__ == "__main__":
    main()