把我的老铁机器人的颜值鉴定接口源码放进去,逻辑都在execute函数外面,看不懂也不解释了。

const sharp = require('sharp')const _ = require('lodash')const { sendMsg, Recent, localPic } = require('../qq_api')const { rp, UA, auraCdChk, num } = require('../utils')module.exports = {  name: '颜值',  tags: ['exec', 'aura', 'group', 'cd'],  keywords: ['难看吗'],  usage: ['(发照片后) [botNick_]颜值鉴定', '我难看吗?', '@某用户 难看吗'],  value: { 冷却工夫: { def: '20秒', chk: auraCdChk } },  help: '给照片中人物的颜值打分。AT某用户可鉴定他/她的头像,发送“我难看吗”则鉴定本人的头像。\n☍ 数据接口:微软小冰 https://ux.xiaoice.com/beautyv3',  execute: async ({ name, bot, user, msg: { content: cont, ats = [], pics: [pic] = [] }, g }) => {    cont = cont.replace(/(鉴定|的|\?|?)/, '')    if (cont === '我' || ats.length) {      const q = cont === '我' ? user : ats[0]      pic = { url: `http://q1.qlogo.cn/g?b=qq&nk=${q}&s=640` }    } else if (!pic) {      pic = await Recent.get('pic', user, g)      if (!pic) { // 须要补发照片        Recent.set('cmd', user, g, name)        return sendMsg(bot, g, user, '[at]颜值鉴定须要你提供蕴含人脸的照片,请在20秒内收回'), 'WAITING_PIC' // eslint-disable-line      }      Recent.del('pic', user, g)    }    ;(async () => { // 异步执行,防止指令执行工夫过长      try {        const opts = {          jar: rp.jar(),          headers: { 'User-Agent': UA }        }        let [res, buf] = await Promise.all([          rp.head('https://ux.xiaoice.com/beautyv3', opts), // 小冰颜值首页,拜访此页面仅用于填充cookies,HEAD比GET速度更快          rp.get(pic.url, { encoding: null })]) // 获取图像数据        // 从cookies中提取TraceId参数        const TraceId = JSON.parse(decodeURIComponent(opts.jar.getCookies('http://ux.xiaoice.com').find(c => c.key === 'logInfo').value)).tid        // 对非动画gif,大于200K或大于30万像素的,则放大至30万像素以节俭流量        const img = sharp(buf)        const { format, width, height } = await img.metadata()        if (format !== 'gif' && ((buf.length > 200000) || width * height > 300000)) {          const nw = ~~Math.sqrt(width * 300000 / height)          if (nw < width) buf = await img.resize(nw).jpeg({ quality: 75, chromaSubsampling: '4:2:0' }).toBuffer()        }        // base64形式上传图片        _.merge(opts, {          headers: { 'Content-Type': 'application/x-www-form-urlencoded', Referer: 'https://ux.xiaoice.com/beautyv3' },          body: buf.toString('base64')        })        res = await rp.post('https://ux.xiaoice.com/api/image/UploadBase64?exp=1', opts)        res = JSON.parse(res) // 应答体JSON格局,蕴含上传后的图片host和uri        const MsgId = Date.now()        // 调用颜值鉴定接口,个别须要10秒以上,需设定较长的超时工夫        _.merge(opts, {          json: true,          timeout: 45000,          headers: { 'Content-Type': 'application/json' },          body: { MsgId, CreateTime: ~~(MsgId / 1000), TraceId, Content: { imageUrl: res.Host + res.Url } }        })        res = await rp.post('https://ux.xiaoice.com/api/imageAnalyze/Process?service=beauty', opts)        // 胜利获取到鉴定后果        const { imageUrl, metadata, text } = res.content        let txt = text        if (metadata.score) {          txt = `????下面${{ male: '帅哥', female: '美女' }[metadata.gender]}的颜值有${metadata.score}分!????`          if (metadata.FBR_Cnt) {            const fbr = Object.entries(metadata).reduce((o, [k, v]) => {              const mch = /^FBR_(Key|Score)(\d+)$/.exec(k)              if (mch) (o[+mch[2]] = o[+mch[2]] || {})[mch[1]] = v              return o            }, [])            txt += `\n评分详情:\n${num(fbr.map(f => `${f.Key}:${f.Score}分`)).join('\n')}`          }          txt += `\n⭐${text}`          if (metadata.Comment_Improve) txt += `\n????${metadata.Comment_Improve}`        }        const lpic = await localPic(imageUrl)        sendMsg(bot, g, user, txt, lpic)      } catch (e) {        sendMsg(bot, g, user, `[at]颜值鉴定失败,谬误:${e.message}`)      }    })()    return sendMsg(bot, g, user, `[at]正在鉴定颜值,大概须要20~30秒,请稍候`), 'OK' // eslint-disable-line  }}