Revisions
-
aamiaa revised this gist
Dec 13, 2024 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -15,6 +15,7 @@ How to use this script: <summary>Click to expand</summary> ```js delete window.$; let wpRequire; window.webpackChunkdiscord_app.push([[ Math.random() ], {}, (req) => { wpRequire = req; }]); -
aamiaa revised this gist
Dec 3, 2024 . 1 changed file with 27 additions and 3 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,7 +1,7 @@ ## Complete Recent Discord Quest > [!NOTE] > This does not works in browser for non-video, non-activity quests! For stream/play quests use the desktop app! > [!NOTE] > When doing stream quests, you need at least 1 other account in the vc! @@ -21,7 +21,8 @@ window.webpackChunkdiscord_app.push([[ Math.random() ], {}, (req) => { wpRequire let ApplicationStreamingStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.getStreamerActiveStreamMetadata).exports.Z; let RunningGameStore = Object.values(wpRequire.c).find(x => x?.exports?.ZP?.getRunningGames).exports.ZP; let QuestsStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.getQuest).exports.Z; let ChannelStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.getAllThreadsForParent).exports.Z; let GuildChannelStore = Object.values(wpRequire.c).find(x => x?.exports?.ZP?.getSFWDefaultChannel).exports.ZP; let FluxDispatcher = Object.values(wpRequire.c).find(x => x?.exports?.Z?.flushWaitQueue).exports.Z; let api = Object.values(wpRequire.c).find(x => x?.exports?.tn?.get).exports.tn; @@ -34,7 +35,7 @@ if(!quest) { const applicationId = quest.config.application.id const applicationName = quest.config.application.name const taskName = ["WATCH_VIDEO", "PLAY_ON_DESKTOP", "STREAM_ON_DESKTOP", "PLAY_ACTIVITY"].find(x => quest.config.taskConfig.tasks[x] != null) const secondsNeeded = quest.config.taskConfig.tasks[taskName].target const secondsDone = quest.userStatus?.progress?.[taskName]?.value ?? 0 @@ -130,6 +131,29 @@ if(!quest) { console.log(`Spoofed your stream to ${applicationName}. Stream any window in vc for ${Math.ceil((secondsNeeded - secondsDone) / 60)} more minutes.`) console.log("Remember that you need at least 1 other person to be in the vc!") } else if(taskName === "PLAY_ACTIVITY") { const channelId = ChannelStore.getSortedPrivateChannels()[0]?.id ?? Object.values(GuildChannelStore.getAllGuilds()).find(x => x != null && x.VOCAL.length > 0).VOCAL[0].channel.id const streamKey = `call:${channelId}:1` let fn = async () => { console.log("Completing quest", applicationName, "-", quest.config.messages.questName) while(true) { const res = await api.post({url: `/quests/${quest.id}/heartbeat`, body: {stream_key: streamKey, terminal: false}}) const progress = res.body.progress.PLAY_ACTIVITY.value console.log(`Quest progress: ${progress}/${secondsNeeded}`) await new Promise(resolve => setTimeout(resolve, 20 * 1000)) if(progress >= secondsNeeded) { await api.post({url: `/quests/${quest.id}/heartbeat`, body: {stream_key: streamKey, terminal: true}}) break } } console.log("Quest completed!") } fn() } } ``` -
aamiaa revised this gist
Nov 30, 2024 . 1 changed file with 5 additions and 0 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -160,6 +160,11 @@ They have also started checking how many people are in the vc, so make sure you **Q: I get a syntax error/unexpected token error** A: Make sure your browser isn't auto-translating this website before copying the script. Turn off any translator extensions and try again. **Q: I get the error `Cannot read properties of undefined (reading 'nativeModules')`** A: You're on a modded client which is a browser wrapper (i.e. Vesktop). Use an actual desktop app. **Q: I get a different error** -
aamiaa revised this gist
Nov 25, 2024 . 1 changed file with 40 additions and 28 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,14 +1,10 @@ ## Complete Recent Discord Quest > [!NOTE] > This does not works in browser for non-video quests! For stream/play quests use the desktop app! > [!NOTE] > When doing stream quests, you need at least 1 other account in the vc! How to use this script: 1. Accept a quest under User Settings -> Gift Inventory @@ -31,30 +27,42 @@ let api = Object.values(wpRequire.c).find(x => x?.exports?.tn?.get).exports.tn; let quest = [...QuestsStore.quests.values()].find(x => x.id !== "1248385850622869556" && x.userStatus?.enrolledAt && !x.userStatus?.completedAt && new Date(x.config.expiresAt).getTime() > Date.now()) let isApp = navigator.userAgent.includes("Electron/") if(!quest) { console.log("You don't have any uncompleted quests!") } else { const pid = Math.floor(Math.random() * 30000) + 1000 const applicationId = quest.config.application.id const applicationName = quest.config.application.name const taskName = ["WATCH_VIDEO", "PLAY_ON_DESKTOP", "STREAM_ON_DESKTOP"].find(x => quest.config.taskConfig.tasks[x] != null) const secondsNeeded = quest.config.taskConfig.tasks[taskName].target const secondsDone = quest.userStatus?.progress?.[taskName]?.value ?? 0 if(taskName === "WATCH_VIDEO") { const tolerance = 2, speed = 10 const diff = Math.floor((Date.now() - new Date(quest.userStatus.enrolledAt).getTime())/1000) const startingPoint = Math.min(Math.max(Math.ceil(secondsDone), diff), secondsNeeded) let fn = async () => { for(let i=startingPoint;i<=secondsNeeded;i+=speed) { try { await api.post({url: `/quests/${quest.id}/video-progress`, body: {timestamp: Math.min(secondsNeeded, i + Math.random())}}) } catch(ex) { console.log("Failed to send increment of", i, ex.message) } await new Promise(resolve => setTimeout(resolve, tolerance * 1000)) } if((secondsNeeded-secondsDone)%speed !== 0) { await api.post({url: `/quests/${quest.id}/video-progress`, body: {timestamp: secondsNeeded}}) } console.log("Quest completed!") } fn() console.log(`Spoofing video for ${applicationName}. Wait for ${Math.ceil((secondsNeeded - startingPoint)/speed*tolerance)} more seconds.`) } else if(taskName === "PLAY_ON_DESKTOP") { if(!isApp) { console.log("This no longer works in browser for non-video quests. Use the desktop app to complete the", applicationName, "quest!") } api.get({url: `/applications/public?application_ids=${applicationId}`}).then(res => { const appData = res.body[0] const exeName = appData.executables.find(x => x.os === "win32").name.replace(">","") @@ -95,7 +103,11 @@ if(!isApp) { console.log(`Spoofed your game to ${applicationName}. Wait for ${Math.ceil((secondsNeeded - secondsDone) / 60)} more minutes.`) }) } else if(taskName === "STREAM_ON_DESKTOP") { if(!isApp) { console.log("This no longer works in browser for non-video quests. Use the desktop app to complete the", applicationName, "quest!") } let realFunc = ApplicationStreamingStore.getStreamerActiveStreamMetadata ApplicationStreamingStore.getStreamerActiveStreamMetadata = () => ({ id: applicationId, -
aamiaa revised this gist
Sep 12, 2024 . 1 changed file with 0 additions and 6 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -131,12 +131,6 @@ if(!isApp) { You can track the progress by looking at the `Quest progress:` prints in the Console tab, or by reopening the Gift Inventory tab in settings. ## FAQ **Q: Ctrl + Shift + I doesn't work** -
aamiaa revised this gist
Aug 9, 2024 . 1 changed file with 12 additions and 24 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -22,24 +22,14 @@ How to use this script: let wpRequire; window.webpackChunkdiscord_app.push([[ Math.random() ], {}, (req) => { wpRequire = req; }]); let ApplicationStreamingStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.getStreamerActiveStreamMetadata).exports.Z; let RunningGameStore = Object.values(wpRequire.c).find(x => x?.exports?.ZP?.getRunningGames).exports.ZP; let QuestsStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.getQuest).exports.Z; let ExperimentStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.getGuildExperiments).exports.Z; let FluxDispatcher = Object.values(wpRequire.c).find(x => x?.exports?.Z?.flushWaitQueue).exports.Z; let api = Object.values(wpRequire.c).find(x => x?.exports?.tn?.get).exports.tn; let quest = [...QuestsStore.quests.values()].find(x => x.id !== "1248385850622869556" && x.userStatus?.enrolledAt && !x.userStatus?.completedAt && new Date(x.config.expiresAt).getTime() > Date.now()) let isApp = navigator.userAgent.includes("Electron/") if(!isApp) { console.log("This no longer works in browser. Use the desktop app!") @@ -141,13 +131,11 @@ if(!isApp) { You can track the progress by looking at the `Quest progress:` prints in the Console tab, or by reopening the Gift Inventory tab in settings. ## Unsupported Quests The following active quests cannot be completed with this script: * Krunker Strike ## FAQ -
aamiaa revised this gist
Aug 5, 2024 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -165,7 +165,7 @@ They have also started checking how many people are in the vc, so make sure you **Q: I get a syntax error/unexpected token error** A: Make sure your browser isn't auto-translating this website before copying the script. Turn off any translator extensions and try again. **Q: I get a different error** -
aamiaa revised this gist
Aug 5, 2024 . 1 changed file with 5 additions and 0 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -163,6 +163,11 @@ A: Discord has patched the script from working in browsers. Use the desktop app, They have also started checking how many people are in the vc, so make sure you join it on at least 1 other account. **Q: I get a syntax error/unexpected token error** A: Make sure your browser isn't auto-translating this website. Turn off any translator extensions and try again. **Q: I get a different error** A: Make sure you're copy/pasting the script correctly and that you've have done all the steps. -
aamiaa revised this gist
Aug 5, 2024 . 1 changed file with 10 additions and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -165,4 +165,13 @@ They have also started checking how many people are in the vc, so make sure you **Q: I get a different error** A: Make sure you're copy/pasting the script correctly and that you've have done all the steps. **Q: Can you make the script auto accept the quest/reward?** A: No. Both of those actions may show a captcha, so automating them is not a good idea. Just do the two clicks yourself. ___ <sup>Side note: Please don't post your "fixed" or "improved" versions of the script in the comments. It creates unnecessary confusion, often doesn't fix anything, and sometimes puts other people's accounts at risk. I might redact/delete such comments without notice. Thank you for understanding.</sup> -
aamiaa revised this gist
Jul 3, 2024 . 1 changed file with 8 additions and 0 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -141,6 +141,14 @@ if(!isApp) { You can track the progress by looking at the `Quest progress:` prints in the Console tab, or by reopening the Gift Inventory tab in settings. ## Completing The Console Quest While the script doesn't work on it, it is possible to complete the "play any game on your console" quest without owning a console by using Xbox's Cloud Gaming: 1. Connect your Xbox (aka Microsoft) account to Discord (Settings -> Connections) 2. Go to https://xbox.com/play and login via the same Xbox account 3. Launch a free game (such as [Fortnite](https://www.xbox.com/play/games/fortnite/BT5P2X999VH2)) 4. Leave it running for 10 minutes ## FAQ **Q: Ctrl + Shift + I doesn't work** -
aamiaa revised this gist
Jun 27, 2024 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -39,7 +39,7 @@ if(window.GLOBAL_ENV.SENTRY_TAGS.buildId === "366c746173a6ca0a801e9f4a4d7b6745e6 api = Object.values(wpRequire.c).find(x => x?.exports?.tn?.get).exports.tn; } let quest = [...QuestsStore.quests.values()].find(x => x.id !== "1245082221874774016" && x.userStatus?.enrolledAt && !x.userStatus?.completedAt && new Date(x.config.expiresAt).getTime() > Date.now()) let isApp = navigator.userAgent.includes("Electron/") if(!isApp) { console.log("This no longer works in browser. Use the desktop app!") -
aamiaa revised this gist
Jun 18, 2024 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -87,7 +87,7 @@ if(!isApp) { FluxDispatcher.dispatch({type: "RUNNING_GAMES_CHANGE", removed: [], added: [fakeGame], games: games}) let fn = data => { let progress = quest.config.configVersion === 1 ? data.userStatus.streamProgressSeconds : Math.floor(data.userStatus.progress.PLAY_ON_DESKTOP.value) console.log(`Quest progress: ${progress}/${secondsNeeded}`) if(progress >= secondsNeeded) { @@ -114,7 +114,7 @@ if(!isApp) { }) let fn = data => { let progress = quest.config.configVersion === 1 ? data.userStatus.streamProgressSeconds : Math.floor(data.userStatus.progress.STREAM_ON_DESKTOP.value) console.log(`Quest progress: ${progress}/${secondsNeeded}`) if(progress >= secondsNeeded) { -
aamiaa revised this gist
Jun 17, 2024 . 1 changed file with 17 additions and 7 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -22,12 +22,22 @@ How to use this script: let wpRequire; window.webpackChunkdiscord_app.push([[ Math.random() ], {}, (req) => { wpRequire = req; }]); let ApplicationStreamingStore, RunningGameStore, QuestsStore, ExperimentStore, FluxDispatcher, api if(window.GLOBAL_ENV.SENTRY_TAGS.buildId === "366c746173a6ca0a801e9f4a4d7b6745e6de45d4") { ApplicationStreamingStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getStreamerActiveStreamMetadata).exports.default; RunningGameStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getRunningGames).exports.default; QuestsStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getQuest).exports.default; ExperimentStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getGuildExperiments).exports.default; FluxDispatcher = Object.values(wpRequire.c).find(x => x?.exports?.default?.flushWaitQueue).exports.default; api = Object.values(wpRequire.c).find(x => x?.exports?.getAPIBaseURL).exports.HTTP; } else { ApplicationStreamingStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.getStreamerActiveStreamMetadata).exports.Z; RunningGameStore = Object.values(wpRequire.c).find(x => x?.exports?.ZP?.getRunningGames).exports.ZP; QuestsStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.getQuest).exports.Z; ExperimentStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.getGuildExperiments).exports.Z; FluxDispatcher = Object.values(wpRequire.c).find(x => x?.exports?.Z?.flushWaitQueue).exports.Z; api = Object.values(wpRequire.c).find(x => x?.exports?.tn?.get).exports.tn; } let quest = [...QuestsStore.quests.values()].find(x => x.userStatus?.enrolledAt && !x.userStatus?.completedAt && new Date(x.config.expiresAt).getTime() > Date.now()) let isApp = navigator.userAgent.includes("Electron/") @@ -55,7 +65,7 @@ if(!isApp) { } if(canPlay) { api.get({url: `/applications/public?application_ids=${applicationId}`}).then(res => { const appData = res.body[0] const exeName = appData.executables.find(x => x.os === "win32").name.replace(">","") -
aamiaa revised this gist
Jun 4, 2024 . 1 changed file with 23 additions and 7 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -25,6 +25,7 @@ window.webpackChunkdiscord_app.push([[ Math.random() ], {}, (req) => { wpRequire let ApplicationStreamingStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getStreamerActiveStreamMetadata).exports.default; let RunningGameStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getRunningGames).exports.default; let QuestsStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getQuest).exports.default; let ExperimentStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getGuildExperiments).exports.default; let FluxDispatcher = Object.values(wpRequire.c).find(x => x?.exports?.default?.flushWaitQueue).exports.default; let api = Object.values(wpRequire.c).find(x => x?.exports?.getAPIBaseURL).exports; @@ -36,10 +37,25 @@ if(!isApp) { console.log("You don't have any uncompleted quests!") } else { const pid = Math.floor(Math.random() * 30000) + 1000 let applicationId, applicationName, secondsNeeded, secondsDone, canPlay if(quest.config.configVersion === 1) { applicationId = quest.config.applicationId applicationName = quest.config.applicationName secondsNeeded = quest.config.streamDurationRequirementMinutes * 60 secondsDone = quest.userStatus?.streamProgressSeconds ?? 0 canPlay = quest.config.variants.includes(2) } else if(quest.config.configVersion === 2) { applicationId = quest.config.application.id applicationName = quest.config.application.name canPlay = ExperimentStore.getUserExperimentBucket("2024-04_quest_playtime_task") > 0 && quest.config.taskConfig.tasks["PLAY_ON_DESKTOP"] const taskName = canPlay ? "PLAY_ON_DESKTOP" : "STREAM_ON_DESKTOP" secondsNeeded = quest.config.taskConfig.tasks[taskName].target secondsDone = quest.userStatus?.progress?.[taskName]?.value ?? 0 } if(canPlay) { api.HTTP.get({url: `/applications/public?application_ids=${applicationId}`}).then(res => { const appData = res.body[0] const exeName = appData.executables.find(x => x.os === "win32").name.replace(">","") @@ -50,7 +66,7 @@ if(!isApp) { exePath: `c:/program files/${appData.name.toLowerCase()}/${exeName}`, hidden: false, isLauncher: false, id: applicationId, name: appData.name, pid: pid, pidPath: [pid], @@ -77,12 +93,12 @@ if(!isApp) { } FluxDispatcher.subscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn) console.log(`Spoofed your game to ${applicationName}. Wait for ${Math.ceil((secondsNeeded - secondsDone) / 60)} more minutes.`) }) } else { let realFunc = ApplicationStreamingStore.getStreamerActiveStreamMetadata ApplicationStreamingStore.getStreamerActiveStreamMetadata = () => ({ id: applicationId, pid, sourceName: null }) @@ -100,7 +116,7 @@ if(!isApp) { } FluxDispatcher.subscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn) console.log(`Spoofed your stream to ${applicationName}. Stream any window in vc for ${Math.ceil((secondsNeeded - secondsDone) / 60)} more minutes.`) console.log("Remember that you need at least 1 other person to be in the vc!") } } -
aamiaa revised this gist
May 26, 2024 . 1 changed file with 86 additions and 28 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,26 +1,32 @@ ## Complete Recent Discord Quest > [!NOTE] > This no longer works in browser! > > This no longer works if you're alone in vc! Somebody else has to join you! > > [!WARNING] > There are now two quest types ("stream" and "play")! Pay attention to the instructions! > How to use this script: 1. Accept a quest under User Settings -> Gift Inventory 2. Press <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>I</kbd> to open DevTools 3. Go to the `Console` tab 4. Paste the following code and hit enter: <details> <summary>Click to expand</summary> ```js let wpRequire; window.webpackChunkdiscord_app.push([[ Math.random() ], {}, (req) => { wpRequire = req; }]); let ApplicationStreamingStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getStreamerActiveStreamMetadata).exports.default; let RunningGameStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getRunningGames).exports.default; let QuestsStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getQuest).exports.default; let FluxDispatcher = Object.values(wpRequire.c).find(x => x?.exports?.default?.flushWaitQueue).exports.default; let api = Object.values(wpRequire.c).find(x => x?.exports?.getAPIBaseURL).exports; let quest = [...QuestsStore.quests.values()].find(x => x.userStatus?.enrolledAt && !x.userStatus?.completedAt && new Date(x.config.expiresAt).getTime() > Date.now()) let isApp = navigator.userAgent.includes("Electron/") @@ -29,33 +35,85 @@ if(!isApp) { } else if(!quest) { console.log("You don't have any uncompleted quests!") } else { const pid = Math.floor(Math.random() * 30000) + 1000 const secondsNeeded = quest.config.streamDurationRequirementMinutes * 60 if(quest.config.variants.includes(2)) { api.HTTP.get({url: `/applications/public?application_ids=${quest.config.applicationId}`}).then(res => { const appData = res.body[0] const exeName = appData.executables.find(x => x.os === "win32").name.replace(">","") const games = RunningGameStore.getRunningGames() const fakeGame = { cmdLine: `C:\\Program Files\\${appData.name}\\${exeName}`, exeName, exePath: `c:/program files/${appData.name.toLowerCase()}/${exeName}`, hidden: false, isLauncher: false, id: quest.config.applicationId, name: appData.name, pid: pid, pidPath: [pid], processName: appData.name, start: Date.now(), } games.push(fakeGame) FluxDispatcher.dispatch({type: "RUNNING_GAMES_CHANGE", removed: [], added: [fakeGame], games: games}) let fn = data => { let progress = data.userStatus.streamProgressSeconds console.log(`Quest progress: ${progress}/${secondsNeeded}`) if(progress >= secondsNeeded) { console.log("Quest completed!") const idx = games.indexOf(fakeGame) if(idx > -1) { games.splice(idx, 1) FluxDispatcher.dispatch({type: "RUNNING_GAMES_CHANGE", removed: [fakeGame], added: [], games: []}) } FluxDispatcher.unsubscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn) } } FluxDispatcher.subscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn) console.log(`Spoofed your game to ${quest.config.applicationName}. Wait for ${Math.ceil(quest.config.streamDurationRequirementMinutes - (quest.userStatus?.streamProgressSeconds ?? 0) / 60)} more minutes.`) }) } else { let realFunc = ApplicationStreamingStore.getStreamerActiveStreamMetadata ApplicationStreamingStore.getStreamerActiveStreamMetadata = () => ({ id: quest.config.applicationId, pid, sourceName: null }) let fn = data => { let progress = data.userStatus.streamProgressSeconds console.log(`Quest progress: ${progress}/${secondsNeeded}`) if(progress >= secondsNeeded) { console.log("Quest completed!") ApplicationStreamingStore.getStreamerActiveStreamMetadata = realFunc FluxDispatcher.unsubscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn) } } FluxDispatcher.subscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn) console.log(`Spoofed your stream to ${quest.config.applicationName}. Stream any window in vc for ${Math.ceil(quest.config.streamDurationRequirementMinutes - (quest.userStatus?.streamProgressSeconds ?? 0) / 60)} more minutes.`) console.log("Remember that you need at least 1 other person to be in the vc!") } } ``` </details> 5. Follow the printed instructions depending on what type of quest you have - If your quest says to "play" the game, you can just wait and do nothing - If your quest says to "stream" the game, join a vc with a friend or alt and stream any window 7. Wait for 15 minutes 8. You can now claim the reward in User Settings -> Gift Inventory! You can track the progress by looking at the `Quest progress:` prints in the Console tab, or by reopening the Gift Inventory tab in settings. ## FAQ -
aamiaa revised this gist
Apr 27, 2024 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -73,4 +73,4 @@ They have also started checking how many people are in the vc, so make sure you **Q: I get a different error** A: Make sure you're copy/pasting the script correctly and that you've have done all the steps. -
aamiaa revised this gist
Apr 27, 2024 . 1 changed file with 2 additions and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -29,9 +29,10 @@ if(!isApp) { } else if(!quest) { console.log("You don't have any uncompleted quests!") } else { let pid = Math.floor(Math.random() * 30000) + 1000 ApplicationStreamingStore.getStreamerActiveStreamMetadata = () => ({ id: quest.config.applicationId, pid, sourceName: null }) -
aamiaa revised this gist
Apr 27, 2024 . 1 changed file with 19 additions and 25 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,6 +1,6 @@ ## Complete Recent Discord Quest > [!NOTE] > This no longer works in browser! > [!NOTE] > This no longer works if you're alone in vc! Somebody else has to join you! @@ -18,43 +18,37 @@ How to use this script: let wpRequire; window.webpackChunkdiscord_app.push([[ Math.random() ], {}, (req) => { wpRequire = req; }]); let ApplicationStreamingStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getStreamerActiveStreamMetadata).exports.default; let QuestsStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getQuest).exports.default; let FluxDispatcher = Object.values(wpRequire.c).find(x => x?.exports?.default?.flushWaitQueue).exports.default; let quest = [...QuestsStore.quests.values()].find(x => x.userStatus?.enrolledAt && !x.userStatus?.completedAt && new Date(x.config.expiresAt).getTime() > Date.now()) let isApp = navigator.userAgent.includes("Electron/") if(!isApp) { console.log("This no longer works in browser. Use the desktop app!") } else if(!quest) { console.log("You don't have any uncompleted quests!") } else { ApplicationStreamingStore.getStreamerActiveStreamMetadata = () => ({ id: quest.config.applicationId, pid: Math.floor(Math.random() * 30000) + 1000, sourceName: null }) let secondsNeeded = quest.config.streamDurationRequirementMinutes * 60 let fn = data => { let progress = data.userStatus.streamProgressSeconds console.log(`Quest progress: ${progress}/${secondsNeeded}`) if(progress >= secondsNeeded) { console.log("Quest completed!") FluxDispatcher.unsubscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn) } } FluxDispatcher.subscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn) console.log(`Spoofed your stream to ${quest.config.applicationName}. Stay in vc for ${Math.ceil(quest.config.streamDurationRequirementMinutes - (quest.userStatus?.streamProgressSeconds ?? 0) / 60)} more minutes.`) console.log("Remember that you need at least 1 other person to be in the vc!") } ``` 7. Keep the stream running for 15 minutes -
aamiaa revised this gist
Apr 27, 2024 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -43,7 +43,7 @@ if(!isApp) { let heartbeat = async function() { console.log("Completing quest", quest.config.messages.gameTitle, "-", quest.config.messages.questName) while(true) { let res = await api.post({url: `/quests/${quest.id}/heartbeat`, body: {stream_key: streamId}, headers: {"X-Discord-Resource-Optimization-Level": "1"}}) let progress = res.body.stream_progress_seconds console.log(`Quest progress: ${progress}/${secondsNeeded}`) -
aamiaa revised this gist
Apr 27, 2024 . 1 changed file with 4 additions and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,6 +1,9 @@ ## Complete Recent Discord Quest > [!NOTE] > This no longer works in browser! If you absolutely need to use browser instead of desktop app, use an extension to add the string `Electron/` anywhere in your user-agent. > [!NOTE] > This no longer works if you're alone in vc! Somebody else has to join you! > How to use this script: @@ -75,4 +78,4 @@ They have also started checking how many people are in the vc, so make sure you **Q: I get a different error** A: Make sure you've started streaming *before* running the script. Also make sure you're copy/pasting it correctly. -
aamiaa revised this gist
Apr 27, 2024 . 1 changed file with 21 additions and 10 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -6,25 +6,36 @@ How to use this script: 1. Accept the quest under User Settings -> Gift Inventory 2. Join a vc 3. **Join the same vc on an alt** 4. Stream any window (can be notepad or something) 5. Press <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>I</kbd> to open DevTools 6. Go to the `Console` tab 7. Paste the following code and hit enter: ```js let wpRequire; window.webpackChunkdiscord_app.push([[ Math.random() ], {}, (req) => { wpRequire = req; }]); let api = Object.values(wpRequire.c).find(x => x?.exports?.getAPIBaseURL).exports.HTTP; let ApplicationStreamingStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getStreamerActiveStreamMetadata).exports.default; let VoiceStateStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getCurrentClientVoiceChannelId).exports.default; let QuestsStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getQuest).exports.default; let encodeStreamKey = Object.values(wpRequire.c).find(x => x?.exports?.encodeStreamKey).exports.encodeStreamKey; let sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); let quest = [...QuestsStore.quests.values()].find(x => x.userStatus?.enrolledAt && !x.userStatus?.completedAt && new Date(x.config.expiresAt).getTime() > Date.now()) let streamData = ApplicationStreamingStore.getCurrentUserActiveStream() let isApp = navigator.userAgent.includes("Electron/") let isAloneInVC = streamData && Object.keys(VoiceStateStore.getVoiceStatesForChannel(streamData.channelId)).length === 1 if(!isApp) { console.log("This no longer works in browser. Use the desktop app!") } else if(!quest) { console.log("You don't have any uncompleted quests!") } else if(!streamData) { console.log("You haven't started a stream!") } else if(isAloneInVC) { console.log("You need to join the vc on 1 other account!") } else { let streamId = encodeStreamKey(streamData) let secondsNeeded = quest.config.streamDurationRequirementMinutes * 60 let heartbeat = async function() { console.log("Completing quest", quest.config.messages.gameTitle, "-", quest.config.messages.questName) @@ -48,8 +59,6 @@ if(!quest) { You can track the progress by looking at the `Quest progress:` prints in the Console tab, or by reopening the Gift Inventory tab in settings. The progress should update every 30s. ## FAQ **Q: Ctrl + Shift + I doesn't work** @@ -59,7 +68,9 @@ A: Either download the [ptb client](https://discord.com/api/downloads/distributi **Q: I get an error saying "Unauthorized"** A: Discord has patched the script from working in browsers. Use the desktop app, or alternatively find some extension which lets you change your User-Agent and append the string `Electron/` anywhere in it. They have also started checking how many people are in the vc, so make sure you join it on at least 1 other account. **Q: I get a different error** -
aamiaa revised this gist
Apr 26, 2024 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -54,7 +54,7 @@ You do NOT need anybody watching your stream for this to work. You can be alone **Q: Ctrl + Shift + I doesn't work** A: Either download the [ptb client](https://discord.com/api/downloads/distributions/app/installers/latest?channel=ptb&platform=win&arch=x64), or use [this](https://www.reddit.com/r/discordapp/comments/sc61n3/comment/hu4fw5x/) to enable DevTools on stable **Q: I get an error saying "Unauthorized"** -
aamiaa revised this gist
Apr 26, 2024 . 1 changed file with 18 additions and 2 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -7,7 +7,7 @@ How to use this script: 1. Accept the quest under User Settings -> Gift Inventory 2. Join a vc 3. Stream any window (can be notepad or something) 4. Press <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>I</kbd> to open DevTools 5. Go to the `Console` tab 6. Paste the following code and hit enter: ```js @@ -48,4 +48,20 @@ if(!quest) { You can track the progress by looking at the `Quest progress:` prints in the Console tab, or by reopening the Gift Inventory tab in settings. The progress should update every 30s. You do NOT need anybody watching your stream for this to work. You can be alone in vc just fine. ## FAQ **Q: Ctrl + Shift + I doesn't work** A: Either download the [canary client](https://discord.com/api/downloads/distributions/app/installers/latest?channel=canary&platform=win&arch=x64), or use [this](https://www.reddit.com/r/discordapp/comments/sc61n3/comment/hu4fw5x/) to enable DevTools on stable **Q: I get an error saying "Unauthorized"** A: Discord has patched the script from working in browsers. Use the desktop app, or alternatively find some extension which lets you change your User-Agent and append the string `Electron/` anywhere in it **Q: I get a different error** A: Make sure you've started streaming *before* running the script -
aamiaa revised this gist
Apr 26, 2024 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -7,7 +7,7 @@ How to use this script: 1. Accept the quest under User Settings -> Gift Inventory 2. Join a vc 3. Stream any window (can be notepad or something) 4. Press <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>I</kbd> to open DevTools (see [this](https://www.reddit.com/r/discordapp/comments/sc61n3/comment/hu4fw5x/) if it doesn't work) 5. Go to the `Console` tab 6. Paste the following code and hit enter: ```js -
aamiaa revised this gist
Apr 26, 2024 . 1 changed file with 4 additions and 0 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,4 +1,8 @@ ## Complete Recent Discord Quest > [!NOTE] > This no longer works in browser! If you absolutely need to use browser instead of desktop app, use an extension to add the string `Electron/` anywhere in your user-agent. > How to use this script: 1. Accept the quest under User Settings -> Gift Inventory 2. Join a vc -
aamiaa revised this gist
Apr 24, 2024 . 1 changed file with 21 additions and 13 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,4 +1,4 @@ ## Complete Recent Discord Quest How to use this script: 1. Accept the quest under User Settings -> Gift Inventory 2. Join a vc @@ -12,24 +12,32 @@ window.webpackChunkdiscord_app.push([[ Math.random() ], {}, (req) => { wpRequire let api = Object.values(wpRequire.c).find(x => x?.exports?.getAPIBaseURL).exports.HTTP; let ApplicationStreamingStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getStreamerActiveStreamMetadata).exports.default; let QuestsStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getQuest).exports.default; let encodeStreamKey = Object.values(wpRequire.c).find(x => x?.exports?.encodeStreamKey).exports.encodeStreamKey; let sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); let quest = [...QuestsStore.quests.values()].find(x => x.userStatus?.enrolledAt && !x.userStatus?.completedAt) if(!quest) { console.log("You don't have any uncompleted quests!") } else { let streamId = encodeStreamKey(ApplicationStreamingStore.getCurrentUserActiveStream()) let secondsNeeded = quest.config.streamDurationRequirementMinutes * 60 let heartbeat = async function() { console.log("Completing quest", quest.config.messages.gameTitle, "-", quest.config.messages.questName) while(true) { let res = await api.post({url: `/quests/${quest.id}/heartbeat`, body: {stream_key: streamId}}) let progress = res.body.stream_progress_seconds console.log(`Quest progress: ${progress}/${secondsNeeded}`) if(progress >= secondsNeeded) break; await sleep(30 * 1000) } console.log("Quest completed!") } heartbeat() } ``` 7. Keep the stream running for 15 minutes 8. You can now claim the reward in User Settings -> Gift Inventory! -
aamiaa renamed this gist
Apr 24, 2024 . 1 changed file with 3 additions and 3 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,4 +1,4 @@ ## Complete Discord Genshin Quest How to use this script: 1. Accept the quest under User Settings -> Gift Inventory 2. Join a vc @@ -18,7 +18,7 @@ let sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); let streamId = encodeStreamKey(ApplicationStreamingStore.getCurrentUserActiveStream()) let heartbeat = async function() { while(true) { let res = await api.post({url: "/quests/1227767407154561034/heartbeat", body: {stream_key: streamId}}) let progress = res.body.stream_progress_seconds console.log(`Quest progress: ${progress}/900`) @@ -32,7 +32,7 @@ let heartbeat = async function() { heartbeat() ``` 7. Keep the stream running for 15 minutes 8. You can now claim the reward in User Settings -> Gift Inventory! You can track the progress by looking at the `Quest progress:` prints in the Console tab, or by reopening the Gift Inventory tab in settings. The progress should update every 30s. -
aamiaa revised this gist
Apr 19, 2024 . 1 changed file with 8 additions and 13 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -11,21 +11,14 @@ let wpRequire; window.webpackChunkdiscord_app.push([[ Math.random() ], {}, (req) => { wpRequire = req; }]); let api = Object.values(wpRequire.c).find(x => x?.exports?.getAPIBaseURL).exports.HTTP; let ApplicationStreamingStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getStreamerActiveStreamMetadata).exports.default; let encodeStreamKey = Object.values(wpRequire.c).find(x => x?.exports?.encodeStreamKey).exports.encodeStreamKey; let sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); let streamId = encodeStreamKey(ApplicationStreamingStore.getCurrentUserActiveStream()) let heartbeat = async function() { while(true) { let res = await api.post({url: "/quests/1227395355193118750/heartbeat", body: {stream_key: streamId}}) let progress = res.body.stream_progress_seconds console.log(`Quest progress: ${progress}/900`) @@ -41,4 +34,6 @@ heartbeat() 7. Keep the stream running for 15 minutes 8. You can now claim the decoration in User Settings -> Gift Inventory! You can track the progress by looking at the `Quest progress:` prints in the Console tab, or by reopening the Gift Inventory tab in settings. The progress should update every 30s. You do NOT need anybody watching your stream for this to work. You can be alone in vc just fine. -
aamiaa revised this gist
Apr 19, 2024 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -19,7 +19,7 @@ let sleep = ms => new Promise(resolve => setTimeout(resolve, ms)) let vc = ChannelStore.getChannel(SelectedChannelStore.getVoiceChannelId()) let streamId if(vc.guild_id) { streamId = `guild:${vc.guild_id}:${vc.id}:${UserStore.getCurrentUser().id}` } else { streamId = `call:${vc.id}:${UserStore.getCurrentUser().id}` } -
aamiaa revised this gist
Apr 18, 2024 . 1 changed file with 14 additions and 3 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -16,18 +16,29 @@ let SelectedChannelStore = Object.values(wpRequire.c).find(x => x?.exports?.defa let UserStore = Object.values(wpRequire.c).find(x => x?.exports?.default?.getCurrentUser).exports.default; let sleep = ms => new Promise(resolve => setTimeout(resolve, ms)) let vc = ChannelStore.getChannel(SelectedChannelStore.getVoiceChannelId()) let streamId if(vc.guild_id) { streamId = `guild:${vc.id}:${vc.id}:${UserStore.getCurrentUser().id}` } else { streamId = `call:${vc.id}:${UserStore.getCurrentUser().id}` } let heartbeat = async function() { while(true) { let res = await api.post({url: "/quests/1227395355193118750/heartbeat", body: {stream_key:streamId}}) let progress = res.body.stream_progress_seconds console.log(`Quest progress: ${progress}/900`) if(progress >= 900) break; await sleep(30 * 1000) } console.log("Quest completed!") } heartbeat() ``` 7. Keep the stream running for 15 minutes 8. You can now claim the decoration in User Settings -> Gift Inventory! You can track the progress by looking at the `Quest progress:` prints in the Console tab, or by reopening the Gift Inventory tab in settings. The progress should update every 30s.
NewerOlder