Skip to content

Instantly share code, notes, and snippets.

@BussyBakks
Last active January 29, 2026 12:18
Show Gist options
  • Select an option

  • Save BussyBakks/1b30e9ba601bdce5f11edb7e29078db5 to your computer and use it in GitHub Desktop.

Select an option

Save BussyBakks/1b30e9ba601bdce5f11edb7e29078db5 to your computer and use it in GitHub Desktop.
FkrysQuestFarmer - a discord script for farming quests.

no longer obfuscate this... but i will minify it (simply removing newline :L)

Under this file is the code.
Recommend using native discord app (DiscordCanary)
To get started, load the code bellow and type `FkrysQuestFarmer(true)` for only orb quests, `FkrysQuestFarmer(false)` to accept all available quests.

TODO:
- Make "auto-claim" possible (cus that route have captcha)
- ~~Port it into Vencord plugin, just for convenient i guess?~~ (nah it impossible)
- ... *update later*
/*
Copyright (R) 2024-2026 aamiaa and contributors
*/
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"));
@AppleSang
Copy link

pls, add auto claim in your code, it have auto captcha solver

@BussyBakks
Copy link
Author

pls, add auto claim in your code, it have auto captcha solver

find for me a captcha solver lol

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment