Skip to content

Instantly share code, notes, and snippets.

@ajdev95
Created April 25, 2024 11:23
Show Gist options
  • Save ajdev95/10072b833e48b8ddde965c6efe431f31 to your computer and use it in GitHub Desktop.
Save ajdev95/10072b833e48b8ddde965c6efe431f31 to your computer and use it in GitHub Desktop.

Complete Genshin Impact Discord Quest:

First way which will work for any Quests not just Genshin, though it needs some knowledge 🤓:

  1. Accept the quest under User Settings -> Gift Inventory.
  2. Join a vc to your alt or your friend.
  3. Stream any window
  4. Press Ctrl + Shift + I to open DevTools
  5. Go to the Console tab
  6. Paste this code and press enter:
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 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()
}
  1. Keep the stream running for 15 minutes.
  2. You can now claim the reward in User Settings -> Gift Inventory!

Second and best and safer and easy way is:

  1. Accept the quest under User Settings -> Gift Inventory.
  2. Open Program Files in your C drive.
  3. Head-over to Windows NT.
  4. Open the folder named Accessories.
  5. See all of these files (en-US - wordpad - WordpadFilter.dll)? Copy Them.
  6. Make a folder named Win64 in your Desktop.
  7. Add the files that you copied to the folder.
  8. Rename the file named wordpad to GenshinImpact NO SPACES.
  9. Open the file.
  10. DON'T click OK.
  11. Go to a VC with your friend or an alt.
  12. Stream the application for 15 minutes and BOOM progress bar should be going up
  13. You can now claim the reward in User Settings -> Gift Inventory!

To check if it's working Discord will detect that your apparently playing Genshin Impact and the progress bar will go up.

Credits

- Credits to aamiaa on Github, which where i found the code from for the first method
- Credits to me for the second method 😀
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment