aardio 文档

aardio 范例: 微信 iLink 机器人 - 下载接收到的媒体文件

//微信 iLink 机器人 - 下载接收到的媒体文件
import web.rest.iLinkClient.login;

var bot = web.rest.iLinkClient.login()
if(!bot) return;

import console;
console.log("✅ 机器人已上线,正在监听微信消息 ..."); 
console.log("💡 给我发送图片、文件或视频,aardio 将自动下载保存。");

// 消息监听循环
while(true){
    var updateRes, err, errCode = bot.getUpdates();

    if(updateRes && updateRes.msgs){
        for i, fromMsg in updateRes.msgs {
            // 遍历消息中的所有项目
            var itemList = fromMsg.item_list;
            if(!itemList) continue;

            for(itemIndex=1; #itemList; 1){
                var item = itemList[itemIndex];
                var mediaType = "";
                var media;
                var fileName = "";

                if(item.text_item && item.text_item.text){
                    console.log("📩 文本: " + item.text_item.text);
                }
                elseif(item.image_item && item.image_item.media){
                    mediaType = "图片";
                    media = item.image_item.media;
                    fileName = "weixin-image-" + itemIndex + ".jpg";
                }
                elseif(item.video_item && item.video_item.media){
                    mediaType = "视频";
                    media = item.video_item.media;
                    fileName = "weixin-video-" + itemIndex + ".mp4";
                }
                elseif(item.file_item && item.file_item.media){
                    mediaType = "文件";
                    media = item.file_item.media;
                    fileName = item.file_item.file_name || ("weixin-file-" + itemIndex);
                }
                elseif(item.voice_item && item.voice_item.media){
                    mediaType = "语音";
                    media = item.voice_item.media;
                    fileName = "weixin-voice-" + itemIndex + ".silk";
                }

                if(media){
                    var savePath = io.fullpath("/downloads/") + fileName;
                    console.log("📥 正在下载" + mediaType + " → " + savePath);

                    var ok, err, errCode = bot.downloadMedia(media, savePath);
                    if(ok){
                        console.log("✅ " + mediaType + "已保存: " + savePath);

                        // 回复用户
                        bot.sendMessage(fromMsg, "🤖 已收到你的" + mediaType + ",已保存到本地。");
                    }
                    else {
                        console.log("❌ 下载" + mediaType + "失败: " + (err || ""));
                    }
                }
            }
        }
    }
    elseif(!updateRes){
        if(errCode && errCode < 0){
            console.log("⚠️ 业务错误: " + (err || "") + " (" + errCode + "),3秒后重试...");

            if(errCode == -14){
                var bot = web.rest.iLinkClient.login()
                if(!bot) return;
            }
        }
        elseif(errCode){
            console.log("⚠️ 网络错误: " + (err || "") + " (" + errCode + "),3秒后重试...");
        }

        thread.delay(1000);
    }
}

Markdown 格式