mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2026-03-16 04:03:17 +08:00
@@ -429,6 +429,7 @@ async function handleCommands(cmds: CliMatches): Promise<void> {
|
||||
await router.push({
|
||||
name: "实用脚本",
|
||||
query: {
|
||||
auto: "true",
|
||||
uids: <Array<string>>usMatch.args.uids.value ?? [],
|
||||
exit: `${usMatch.args.exit.value ?? false}`,
|
||||
skip: `${usMatch.args.skip.value ?? false}`,
|
||||
|
||||
@@ -155,7 +155,7 @@ async function tryRefresh(): Promise<void> {
|
||||
loadState.value = false;
|
||||
}
|
||||
|
||||
async function tryAuto(): Promise<void> {
|
||||
async function tryAuto(skip: boolean = false): Promise<void> {
|
||||
if (loadScript.value) {
|
||||
showSnackbar.warn("任务正在执行中,请稍后再试");
|
||||
return;
|
||||
@@ -177,7 +177,7 @@ async function tryAuto(): Promise<void> {
|
||||
loadMission.value = false;
|
||||
return;
|
||||
}
|
||||
await autoSign(cookie.value);
|
||||
await autoSign(cookie.value, skip);
|
||||
const postFilter = parseMissions.value.filter((i) => i.key !== "continuous_sign");
|
||||
if (postFilter.every((i) => i.status)) {
|
||||
await TGLogger.Script("[米游币任务]所有任务已完成");
|
||||
@@ -297,7 +297,7 @@ async function refreshState(ck: TGApp.App.Account.Cookie): Promise<void> {
|
||||
await TGLogger.Script("[米游币任务]任务数据合并完成");
|
||||
}
|
||||
|
||||
async function autoSign(ck: TGApp.App.Account.Cookie, ch?: string): Promise<void> {
|
||||
async function autoSign(ck: TGApp.App.Account.Cookie, skip: boolean, ch?: string): Promise<void> {
|
||||
const signFind = parseMissions.value.find((i) => i.key === "continuous_sign");
|
||||
if (!signFind) {
|
||||
await TGLogger.Script("[米游币任务]未找到打卡任务");
|
||||
@@ -318,13 +318,17 @@ async function autoSign(ck: TGApp.App.Account.Cookie, ch?: string): Promise<void
|
||||
showSnackbar.error(`[${resp.retcode}] ${resp.message}`);
|
||||
return;
|
||||
}
|
||||
if (skip) {
|
||||
await TGLogger.Script("已设置跳过验证,打卡失败");
|
||||
return;
|
||||
}
|
||||
await TGLogger.Script(`[米游币任务]社区签到触发验证码,正在尝试验证`);
|
||||
const challenge = await miscReq.challenge(ckSign);
|
||||
if (challenge === false) {
|
||||
await TGLogger.Script(`[米游币任务]验证失败`);
|
||||
return;
|
||||
}
|
||||
await autoSign(ck, challenge);
|
||||
await autoSign(ck, skip, challenge);
|
||||
return;
|
||||
}
|
||||
await TGLogger.Script("[米游币任务]打卡成功");
|
||||
|
||||
@@ -169,7 +169,7 @@ async function tryRefresh(): Promise<void> {
|
||||
loadState.value = false;
|
||||
}
|
||||
|
||||
async function tryAuto(): Promise<void> {
|
||||
async function tryAuto(skip: boolean = false): Promise<void> {
|
||||
if (loadScript.value) {
|
||||
showSnackbar.warn("任务正在执行中,请稍后再试");
|
||||
return;
|
||||
@@ -199,7 +199,7 @@ async function tryAuto(): Promise<void> {
|
||||
loadSign.value = false;
|
||||
return;
|
||||
}
|
||||
await trySign(selected, cookie.value);
|
||||
await trySign(selected, cookie.value, skip);
|
||||
await refreshState(cookie.value);
|
||||
await TGLogger.Script("[签到任务]签到任务执行完毕");
|
||||
await TGLogger.ScriptSep("签到任务", false);
|
||||
@@ -254,7 +254,11 @@ async function refreshState(ck: TGApp.App.Account.Cookie): Promise<void> {
|
||||
}
|
||||
}
|
||||
|
||||
async function trySign(ac: Array<SignAccount>, ck: TGApp.App.Account.Cookie): Promise<void> {
|
||||
async function trySign(
|
||||
ac: Array<SignAccount>,
|
||||
ck: TGApp.App.Account.Cookie,
|
||||
skip: boolean,
|
||||
): Promise<void> {
|
||||
const cookie = { cookie_token: ck.cookie_token, account_id: ck.account_id };
|
||||
const ckSign = { stoken: ck.stoken, stuid: ck.stuid, mid: ck.mid };
|
||||
for (const item of ac) {
|
||||
@@ -272,6 +276,10 @@ async function trySign(ac: Array<SignAccount>, ck: TGApp.App.Account.Cookie): Pr
|
||||
if (challenge !== undefined) challenge = undefined;
|
||||
if ("retcode" in signResp) {
|
||||
if (signResp.retcode === 1034) {
|
||||
if (skip) {
|
||||
await TGLogger.Script("已设置跳过验证,签到失败");
|
||||
break;
|
||||
}
|
||||
await TGLogger.Script(`[签到任务]触发验证码,正在尝试验证`);
|
||||
const challengeGet = await miscReq.challenge(ckSign);
|
||||
if (challengeGet === false) {
|
||||
|
||||
@@ -79,6 +79,7 @@ import miscReq from "@req/miscReq.js";
|
||||
import painterReq from "@req/painterReq.js";
|
||||
import TSUserAccount from "@Sqlm/userAccount.js";
|
||||
import useUserStore from "@store/user.js";
|
||||
import { exit } from "@tauri-apps/plugin-process";
|
||||
import { storeToRefs } from "pinia";
|
||||
import { onBeforeMount, onMounted, ref, shallowRef, useTemplateRef } from "vue";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
@@ -89,6 +90,7 @@ const router = useRouter();
|
||||
const { uid, briefInfo, cookie, account } = storeToRefs(useUserStore());
|
||||
|
||||
// 路由参数
|
||||
const autoRun = ref<boolean>(false);
|
||||
const exitAfter = ref<boolean>(false);
|
||||
const skipGeetest = ref<boolean>(true);
|
||||
const targetUids = shallowRef<Array<string>>([]);
|
||||
@@ -104,6 +106,7 @@ onBeforeMount(async () => {
|
||||
if (Object.keys(route.query).length > 0) {
|
||||
exitAfter.value = route.query.exit === "true";
|
||||
skipGeetest.value = route.query.skip === "true";
|
||||
autoRun.value = route.query.auto === "true";
|
||||
if (route.query.uids) {
|
||||
if (Array.isArray(route.query.uids)) {
|
||||
targetUids.value = <Array<string>>route.query.uids;
|
||||
@@ -117,10 +120,30 @@ onBeforeMount(async () => {
|
||||
|
||||
onMounted(async () => {
|
||||
accounts.value = await TSUserAccount.account.getAllAccount();
|
||||
targetUids.value = targetUids.value.filter((u) => accounts.value.some((a) => a.uid === u));
|
||||
curAccount.value = accounts.value.find((i) => i.uid === uid.value);
|
||||
await showLoading.end();
|
||||
if (autoRun.value) await tryAutoRun();
|
||||
});
|
||||
|
||||
async function tryAutoRun(): Promise<void> {
|
||||
let uids: Array<string> = accounts.value.map((u) => u.uid);
|
||||
if (targetUids.value.length === 0) {
|
||||
showSnackbar.warn("未接收到合法UID列表,默认全部执行");
|
||||
} else {
|
||||
uids = targetUids.value;
|
||||
}
|
||||
for (const uid of uids) {
|
||||
await loadAccount(uid);
|
||||
await tryExecAll();
|
||||
}
|
||||
if (exitAfter.value) {
|
||||
showSnackbar.success("任务执行完成,即将自动退出");
|
||||
await new Promise<void>((resolve) => setTimeout(resolve, 1000));
|
||||
await exit();
|
||||
}
|
||||
}
|
||||
|
||||
async function loadAccount(ac: string): Promise<void> {
|
||||
if (uid.value && ac === uid.value) {
|
||||
showSnackbar.warn("该账户已经登录,无需切换");
|
||||
@@ -196,8 +219,8 @@ async function tryExecAll(): Promise<void> {
|
||||
return;
|
||||
}
|
||||
runAll.value = true;
|
||||
await missionEl.value?.tryAuto();
|
||||
await signEl.value?.tryAuto();
|
||||
await missionEl.value?.tryAuto(skipGeetest.value);
|
||||
await signEl.value?.tryAuto(skipGeetest.value);
|
||||
runAll.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user