|
delete window.$;let wpRequire=webpackChunkdiscord_app.push([[Symbol()],{},r=>r]);webpackChunkdiscord_app.pop();let ApplicationStreamingStore=Object.values(wpRequire.c).find((x=>x?.exports?.A?.__proto__?.getStreamerActiveStreamMetadata)).exports.A,RunningGameStore=Object.values(wpRequire.c).find((x=>x?.exports?.Ay?.getRunningGames)).exports.Ay,QuestsStore=Object.values(wpRequire.c).find((x=>x?.exports?.A?.__proto__?.getQuest)).exports.A,ChannelStore=Object.values(wpRequire.c).find((x=>x?.exports?.A?.__proto__?.getAllThreadsForParent)).exports.A,GuildChannelStore=Object.values(wpRequire.c).find((x=>x?.exports?.Ay?.getSFWDefaultChannel)).exports.Ay,FluxDispatcher=Object.values(wpRequire.c).find((x=>x?.exports?.h?.__proto__?.flushWaitQueue)).exports.h,api=Object.values(wpRequire.c).find((x=>x?.exports?.Bo?.get)).exports.Bo,isApp="undefined"!=typeof DiscordNative;class FkrysLogger{static#log(level,levelColor,args){console[level](`%c FkrysQuestFarmer %c %c ${level.toUpperCase()} `,"background: #669DF6; color: black; font-weight: bold; border-radius: 5px;","",`background: ${levelColor}; color: black; font-weight: bold; border-radius: 5px;`,...args)}static info(...args){this.#log("info","#a6d189",args)}static error(...args){this.#log("error","#e78284",args)}static warn(...args){this.#log("warn","#ffff67",args)}static debug(...args){this.#log("debug","#eebebe",args)}}const Worker=async quest=>{const pid=Math.floor(3e4*Math.random())+1e3,applicationId=quest.config.application.id,questName=(quest.config.application.name,quest.config.messages.questName),taskConfig=quest.config.taskConfig??quest.config.taskConfigV2,taskName=["WATCH_VIDEO","PLAY_ON_DESKTOP","STREAM_ON_DESKTOP","PLAY_ACTIVITY","WATCH_VIDEO_ON_MOBILE"].find((x=>null!=taskConfig.tasks[x])),secondsNeeded=taskConfig.tasks[taskName].target;let secondsDone=quest.userStatus?.progress?.[taskName]?.value??0;if("WATCH_VIDEO"===taskName||"WATCH_VIDEO_ON_MOBILE"===taskName){const maxFuture=10,speed=7,interval=1,enrolledAt=new Date(quest.userStatus.enrolledAt).getTime();let completed=!1;for(;;){const timestamp=secondsDone+speed;if(Math.floor((Date.now()-enrolledAt)/1e3)+maxFuture-secondsDone>=speed){completed=null!=(await api.post({url:`/quests/${quest.id}/video-progress`,body:{timestamp:Math.min(secondsNeeded,timestamp+Math.random())}})).body.completed_at,secondsDone=Math.min(secondsNeeded,timestamp)}if(timestamp>=secondsNeeded)break;await new Promise((r=>setTimeout(r,1e3*interval)))}completed||await api.post({url:`/quests/${quest.id}/video-progress`,body:{timestamp:secondsNeeded}}),FkrysLogger.info("Quest completed:",questName)}else if("PLAY_ON_DESKTOP"===taskName)if(isApp){const appData=(await api.get({url:`/applications/public?application_ids=${applicationId}`})).body[0],exeName=appData.executables.find((x=>"win32"===x.os)).name.replace(">",""),fakeGame={cmdLine:`C:\\Program Files (x86)\\${appData.name}\\${exeName}`,exeName:exeName,exePath:`c:/program files (x86)/${appData.name.toLowerCase()}/${exeName}`,hidden:!1,isLauncher:!1,id:applicationId,name:appData.name,pid:pid,pidPath:[pid],processName:appData.name,start:Date.now()},realGames=RunningGameStore.getRunningGames(),fakeGames=[fakeGame],realGetRunningGames=RunningGameStore.getRunningGames,realGetGameForPID=RunningGameStore.getGameForPID;RunningGameStore.getRunningGames=()=>fakeGames,RunningGameStore.getGameForPID=pid=>fakeGames.find((x=>x.pid===pid)),FluxDispatcher.dispatch({type:"RUNNING_GAMES_CHANGE",removed:realGames,added:[fakeGame],games:fakeGames}),await new Promise((resolve=>{let fn=data=>{let progress=1===quest.config.configVersion?data.userStatus.streamProgressSeconds:Math.floor(data.userStatus.progress.PLAY_ON_DESKTOP.value);FkrysLogger.info(`Quest progress: ${progress}/${secondsNeeded}`),progress>=secondsNeeded&&(FkrysLogger.info("Quest completed:",questName),RunningGameStore.getRunningGames=realGetRunningGames,RunningGameStore.getGameForPID=realGetGameForPID,FluxDispatcher.dispatch({type:"RUNNING_GAMES_CHANGE",removed:[fakeGame],added:[],games:[]}),FluxDispatcher.unsubscribe("QUESTS_SEND_HEARTBEAT_SUCCESS",fn),resolve())};FluxDispatcher.subscribe("QUESTS_SEND_HEARTBEAT_SUCCESS",fn)}))}else FkrysLogger.error("Desktop app required for:",questName);else if("STREAM_ON_DESKTOP"===taskName)if(isApp){let realFunc=ApplicationStreamingStore.getStreamerActiveStreamMetadata;ApplicationStreamingStore.getStreamerActiveStreamMetadata=()=>({id:applicationId,pid:pid,sourceName:null}),await new Promise((resolve=>{let fn=data=>{let progress=1===quest.config.configVersion?data.userStatus.streamProgressSeconds:Math.floor(data.userStatus.progress.STREAM_ON_DESKTOP.value);FkrysLogger.info(`Quest progress: ${progress}/${secondsNeeded}`),progress>=secondsNeeded&&(FkrysLogger.info("Quest completed:",questName),ApplicationStreamingStore.getStreamerActiveStreamMetadata=realFunc,FluxDispatcher.unsubscribe("QUESTS_SEND_HEARTBEAT_SUCCESS",fn),resolve())};FluxDispatcher.subscribe("QUESTS_SEND_HEARTBEAT_SUCCESS",fn)}))}else FkrysLogger.error("Desktop app required for:",questName);else if("PLAY_ACTIVITY"===taskName){const streamKey=`call:${ChannelStore.getSortedPrivateChannels()[0]?.id??Object.values(GuildChannelStore.getAllGuilds()).find((x=>null!=x&&x.VOCAL.length>0)).VOCAL[0].channel.id}:1`;for(;;){const progress=(await api.post({url:`/quests/${quest.id}/heartbeat`,body:{stream_key:streamKey,terminal:!1}})).body.progress.PLAY_ACTIVITY.value;if(FkrysLogger.info(`Quest progress: ${progress}/${secondsNeeded}`),progress>=secondsNeeded){await api.post({url:`/quests/${quest.id}/heartbeat`,body:{stream_key:streamKey,terminal:!0}});break}await new Promise((r=>setTimeout(r,2e4)))}FkrysLogger.info("Quest completed:",questName)}},isQuestStarted=q=>null!==q.userStatus,isOrbsQuest=q=>q.config.rewardsConfig.rewards.some((r=>r?.messages?.name?.toLowerCase().includes("orb"))),isQuestCompleted=q=>null!==q.userStatus.completedAt,OrbsQuestFarmer=async()=>{QuestsStore=Object.values(wpRequire.c).find((x=>x?.exports?.A?.__proto__?.getQuest)).exports.A,console.log("\n\n----------------------------------------------------------------------------------------------------------------\n\n");let quests=Array.from(QuestsStore.quests.values()).filter((data=>new Date(data.config.expiresAt).getTime()>Date.now()));if(0!==quests.length){for(let quest of quests)if(isOrbsQuest(quest))if(isQuestStarted(quest)&&isQuestCompleted(quest))FkrysLogger.info(`Skipping ${quest.config.messages.questName}: Already completed.`);else{isQuestStarted(quest)||(FkrysLogger.info(`Quest ${quest.config.messages.questName} not started. Starting...`),await api.post({url:`/quests/${quest.id}/enroll`,body:{is_targeted:!1,location:11,metadata_raw:null,metadata_sealed:null}}),await new Promise((r=>setTimeout(r,1e3))),quest=QuestsStore.quests.get(quest.id)),quest.userStatus||(quest.userStatus={enrolledAt:(new Date).toISOString(),progress:{},completedAt:null}),FkrysLogger.info(`Starting orb quest: ${quest.config.messages.questName} (Rewards: ${quest.config.rewardsConfig.rewards?.[0].messages.name})`);try{await Worker(quest)}catch(e){FkrysLogger.error("Worker failed:",e)}}else FkrysLogger.info(`Skipping ${quest.config.messages.questName}: Not an orb quest.`);FkrysLogger.info("All orb quests completed! Waiting for 5 minutes for rerun."),FkrysLogger.info(`Timeout ID: ${setTimeout(OrbsQuestFarmer,3e5)} | Use: "clearTimeout(timeout ID)" to stop.`)}else FkrysLogger.error("You don't have any available quests! (requirements: Not expired)")},NormalQuestFarmer=async()=>{QuestsStore=Object.values(wpRequire.c).find((x=>x?.exports?.A?.__proto__?.getQuest)).exports.A,console.log("\n\n----------------------------------------------------------------------------------------------------------------\n\n");let quests=Array.from(QuestsStore.quests.values()).filter((x=>new Date(x.config.expiresAt).getTime()>Date.now()));if(0!==quests.length){for(let quest of quests)if(isQuestStarted(quest)&&isQuestCompleted(quest))FkrysLogger.info(`Skipping ${quest.config.messages.questName}: Already completed.`);else{isQuestStarted(quest)||(FkrysLogger.info(`Quest ${quest.config.messages.questName} not started. Starting...`),await api.post({url:`/quests/${quest.id}/enroll`,body:{is_targeted:!1,location:11,metadata_raw:null,metadata_sealed:null}}),await new Promise((r=>setTimeout(r,1e3))),quest=QuestsStore.quests.get(quest.id)),quest.userStatus||(quest.userStatus={enrolledAt:(new Date).toISOString(),progress:{},completedAt:null}),FkrysLogger.info("Starting quest:",quest.config.messages.questName);try{await Worker(quest)}catch(e){FkrysLogger.error("Worker failed:",e)}}FkrysLogger.info("All quests completed! Waiting for 5 minutes for rerun."),FkrysLogger.info(`Timeout ID: ${setTimeout(NormalQuestFarmer,3e5)} | Use: "clearTimeout(timeout ID)" to stop.`)}else FkrysLogger.error("You don't have any available quests! (requirements: Not expired)")},FkrysQuestFarmer=only_orbs=>{1==only_orbs?OrbsQuestFarmer():NormalQuestFarmer()};FkrysLogger.info("FkrysQuestFarmer - a script for farming Discord quests."),FkrysLogger.info("Made by Fkrystal (Discord: fkrystal.noppy)."),FkrysLogger.info("Original code by aamiaa on gist."),FkrysLogger.info('Loaded successfully. Use "FkrysQuestFarmer(only_orbs={true or false})" to use.'),FkrysLogger.info('Note: Let "only_orbs" to true if you only need to farm orbs. Otherwise will run a default aamiaa\'s code.'),isApp||(FkrysLogger.warn("Erm... Seems like you didn't run this script inside an actual Discord client."),FkrysLogger.warn("If you still use this inside web client, some features may not work correctly."),FkrysLogger.warn("Consider changing into DiscordCanary for stable use."),FkrysLogger.warn("Download link: https://discord.com/api/downloads/distributions/app/installers/latest?channel=canary&platform=win&arch=x64")); |
pls, add auto claim in your code, it have auto captcha solver