From 070d54cd712e3e5d76f3bb2d8e6228b96ea7d290 Mon Sep 17 00:00:00 2001 From: Kokomi <102026640+yoimiya-kokomi@users.noreply.github.com> Date: Mon, 14 Aug 2023 04:15:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=9C=AA=E5=AE=89=E8=A3=85axios?= =?UTF-8?q?=E4=BE=9D=E8=B5=96=E7=9A=84=E6=83=85=E5=86=B5=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + plugins/genshin/apps/takeBirthdayPhoto.js | 80 +++++++++++++++-------- 2 files changed, 54 insertions(+), 27 deletions(-) diff --git a/package.json b/package.json index 2e32221..6b1217e 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ }, "dependencies": { "art-template": "^4.13.2", + "axios": "^1.4.0", "chalk": "^5.2.0", "chokidar": "^3.5.3", "https-proxy-agent": "5.0.1", diff --git a/plugins/genshin/apps/takeBirthdayPhoto.js b/plugins/genshin/apps/takeBirthdayPhoto.js index dea56c0..68d8c34 100644 --- a/plugins/genshin/apps/takeBirthdayPhoto.js +++ b/plugins/genshin/apps/takeBirthdayPhoto.js @@ -1,9 +1,22 @@ import plugin from '../../../lib/plugins/plugin.js' import gsCfg from '../model/gsCfg.js' -import axios from 'axios' +// import axios from 'axios' +let axios = null +let getAxios = async function () { + if (axios) { + return axios + } + try { + axios = (await import('axios')).default + } catch (e) { + console.log('未安装依赖axios...') + return false + } + return axios +} export class takeBirthdayPhoto extends plugin { - constructor() { + constructor () { super({ name: '留影叙佳期', dsc: '留影叙佳期', @@ -15,59 +28,60 @@ export class takeBirthdayPhoto extends plugin { /** 命令正则匹配 */ reg: '#?留影叙佳期$', /** 执行方法 */ - fnc: 'birthdaystar', + fnc: 'birthdaystar' } ] }) } - async birthdaystar(e) { - const { user_id } = e; + + async birthdaystar (e) { + const { user_id } = e const userInfo = await this.getCookie(user_id) if (!userInfo) { - e.reply('请先绑定ck再使用本功能哦~', true); - return true; + e.reply('请先绑定ck再使用本功能哦~', true) + return true } const e_hk4e_token = await this.getEHK4EToken(userInfo.ck, userInfo.uid) if (!e_hk4e_token) { - e.reply('获取e-hk4e_token失败,请刷新ck后再试~', true); - return true; + e.reply('获取e-hk4e_token失败,请刷新ck后再试~', true) + return true } - const birthday_star_list = await this.getBirthdayStar(userInfo.uid, e_hk4e_token, userInfo.ck); + const birthday_star_list = await this.getBirthdayStar(userInfo.uid, e_hk4e_token, userInfo.ck) if (!birthday_star_list) { - e.reply('获取生日角色失败,请稍后再试~', true); - return true; + e.reply('获取生日角色失败,请稍后再试~', true) + return true } if (birthday_star_list.length === 0) { - e.reply('今天没有生日角色哦~', true); - return true; + e.reply('今天没有生日角色哦~', true) + return true } for (let role of birthday_star_list) { - await e.reply(`正在获取${role.name}的图片,请稍等~`, true); + await e.reply(`正在获取${role.name}的图片,请稍等~`, true) await e.reply(segment.image(role.take_picture)) let message = await this.getBirthdayStarImg(userInfo.uid, e_hk4e_token, userInfo.ck, role.role_id) if (message != 'success') { await e.reply(message) return true } else { - await e.reply(`获取${role.name}的图片成功~`, true); + await e.reply(`获取${role.name}的图片成功~`, true) } } return true } - async getCookie(user_id) { + async getCookie (user_id) { const userInfo = ((await gsCfg.getBingCk()).ckQQ)[user_id] return userInfo } - async getEHK4EToken(ck, uid) { - const isCN = uid.toString().match(/^[125]/) ? true : false; + async getEHK4EToken (ck, uid) { + const isCN = uid.toString().match(/^[125]/) ? true : false const url = isCN ? 'https://api-takumi.mihoyo.com/common/badge/v1/login/account' : 'https://api-os-takumi.mihoyo.com/common/badge/v1/login/account' const game_biz = isCN ? 'hk4e_cn' : 'hk4e_global' const region = await this.getServer(uid) @@ -81,8 +95,12 @@ export class takeBirthdayPhoto extends plugin { uid: Number(uid), game_biz: game_biz, lang: 'zh-cn', - region: region, + region: region }) + let axios = await getAxios() + if (!axios) { + return false + } let res = await axios.post(url, body, { headers: header }) if (res.data.retcode != 0) { return false @@ -91,7 +109,7 @@ export class takeBirthdayPhoto extends plugin { return e_hk4e_token } - async getServer(uid) { + async getServer (uid) { switch (String(uid)[0]) { case '1': case '2': @@ -110,28 +128,36 @@ export class takeBirthdayPhoto extends plugin { return 'cn_gf01' } - async getBirthdayStar(uid, e_hk4e_token, ck) { + async getBirthdayStar (uid, e_hk4e_token, ck) { let cookie = `e_hk4e_token=${e_hk4e_token};${ck}` let badge_region = await this.getServer(uid) - let isCN = uid.toString().match(/^[125]/) ? true : false; + let isCN = uid.toString().match(/^[125]/) ? true : false let game_biz = isCN ? 'hk4e_cn' : 'hk4e_global' let header = { - 'Cookie': cookie, + 'Cookie': cookie } let url = `https://hk4e-api.mihoyo.com/event/birthdaystar/account/index?lang=zh-cn&badge_uid=${uid}&badge_region=${badge_region}&game_biz=${game_biz}&activity_id=20220301153521` + let axios = await getAxios() + if (!axios) { + return false + } let res = await axios.get(url, { headers: header }) return res.data.data.role } - async getBirthdayStarImg(uid, e_hk4e_token, ck, role_id) { + async getBirthdayStarImg (uid, e_hk4e_token, ck, role_id) { let cookie = `e_hk4e_token=${e_hk4e_token};${ck}` let badge_region = await this.getServer(uid) - let isCN = uid.toString().match(/^[125]/) ? true : false; + let isCN = uid.toString().match(/^[125]/) ? true : false let game_biz = isCN ? 'hk4e_cn' : 'hk4e_global' let header = { - 'Cookie': cookie, + 'Cookie': cookie } let url = `https://hk4e-api.mihoyo.com/event/birthdaystar/account/post_my_draw?lang=zh-cn&badge_uid=${uid}&badge_region=${badge_region}&game_biz=${game_biz}&activity_id=20220301153521` + let axios = await getAxios() + if (!axios) { + return false + } let res = await axios.post(url, { role_id: Number(role_id) }, { headers: header }) if (res.data.retcode != 0) { return res.data.message