Skip to content
This repository was archived by the owner on Aug 4, 2025. It is now read-only.

Jeiel0rbit/-iscord-mission

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

-iscord-mission

Resgate missĂ”es do 𝖣iscord-mission

Estando com o programa oficial instalado, logado e desligado, siga o método 2:

https://github.com/brunos3d/discord-enable-devtools

Depois execute o programa.

Use ctrl + shift + I, apĂłs carregado por completo.

Vå para MissÔes e aceite apenas 1 missão.

Para Chorme, use allow pasting no Console do DevTools, para permitir colar o cĂłdigo.

script:

(async () => {
  delete window["$"];

  let wpRequire = webpackChunkdiscord_app.push([[Symbol()], {}, r => r]);
  webpackChunkdiscord_app.pop();

  let ApplicationStreamingStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.__proto__?.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?.__proto__?.getQuest)?.exports?.Z;
  let ChannelStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.__proto__?.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?.__proto__?.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 = typeof DiscordNative !== "undefined";

  if (!quest) {
    console.log("VocĂȘ nĂŁo tem nenhuma missĂŁo nĂŁo concluĂ­da!");
  } 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", "PLAY_ACTIVITY", "WATCH_VIDEO_ON_MOBILE"]
      .find(x => quest.config.taskConfigV2.tasks[x] != null);
    const secondsNeeded = quest.config.taskConfigV2.tasks[taskName].target;
    let secondsDone = quest.userStatus?.progress?.[taskName]?.value ?? 0;

    if (taskName === "WATCH_VIDEO" || taskName === "WATCH_VIDEO_ON_MOBILE") {
      const maxFuture = 10, speed = 7, interval = 1;
      const enrolledAt = new Date(quest.userStatus.enrolledAt).getTime();

      let fn = async () => {
        while (true) {
          const maxAllowed = Math.floor((Date.now() - enrolledAt) / 1000) + maxFuture;
          const diff = maxAllowed - secondsDone;
          const timestamp = secondsDone + speed;
          if (diff >= speed) {
            await api.post({
              url: `/quests/${quest.id}/video-progress`,
              body: { timestamp: Math.min(secondsNeeded, timestamp + Math.random()) }
            });
            secondsDone = Math.min(secondsNeeded, timestamp);
          }

          if (timestamp >= secondsNeeded) {
            break;
          }
          await new Promise(resolve => setTimeout(resolve, interval * 1000));
        }
        console.log("MissĂŁo concluĂ­da!");
      };

      fn();
      console.log(`Spoofing vĂ­deo para ${applicationName}.`);
    } else if (taskName === "PLAY_ON_DESKTOP") {
      if (!isApp) {
        console.log(`Isso não funciona mais no navegador para missÔes que não sejam em vídeo. Use o aplicativo para desktop para concluir a missão de ${applicationName}!`);
      } else {
        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(">", "");

          const fakeGame = {
            cmdLine: `C:\\Program Files\\${appData.name}\\${exeName}`,
            exeName,
            exePath: `c:/program files/${appData.name.toLowerCase()}/${exeName}`,
            hidden: false,
            isLauncher: false,
            id: applicationId,
            name: appData.name,
            pid,
            pidPath: [pid],
            processName: appData.name,
            start: Date.now()
          };

          const realGames = RunningGameStore.getRunningGames();
          const fakeGames = [fakeGame];
          const realGetRunningGames = RunningGameStore.getRunningGames;
          const 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 });

          let fn = data => {
            let progress = quest.config.configVersion === 1
              ? data.userStatus.streamProgressSeconds
              : Math.floor(data.userStatus.progress.PLAY_ON_DESKTOP.value);

            console.log(`Progresso da missĂŁo: ${progress}/${secondsNeeded}`);

            if (progress >= secondsNeeded) {
              console.log("MissĂŁo concluĂ­da!");

              RunningGameStore.getRunningGames = realGetRunningGames;
              RunningGameStore.getGameForPID = realGetGameForPID;
              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(`Seu jogo foi falsificado para ${applicationName}. Aguarde mais ${Math.ceil((secondsNeeded - secondsDone) / 60)} minutos.`);
        });
      }
    } else if (taskName === "STREAM_ON_DESKTOP") {
      if (!isApp) {
        console.log(`Isso não funciona mais no navegador para missÔes que não sejam em vídeo. Use o aplicativo de desktop para concluir a missão de ${applicationName}!`);
      } else {
        let realFunc = ApplicationStreamingStore.getStreamerActiveStreamMetadata;
        ApplicationStreamingStore.getStreamerActiveStreamMetadata = () => ({
          id: applicationId,
          pid,
          sourceName: null
        });

        let fn = data => {
          let progress = quest.config.configVersion === 1
            ? data.userStatus.streamProgressSeconds
            : Math.floor(data.userStatus.progress.STREAM_ON_DESKTOP.value);

          console.log(`Progresso da missĂŁo: ${progress}/${secondsNeeded}`);

          if (progress >= secondsNeeded) {
            console.log("MissĂŁo concluĂ­da!");

            ApplicationStreamingStore.getStreamerActiveStreamMetadata = realFunc;
            FluxDispatcher.unsubscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn);
          }
        };

        FluxDispatcher.subscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn);

        console.log(`Sua transmissĂŁo foi falsificada para ${applicationName}. Transmita qualquer janela no VC por mais ${Math.ceil((secondsNeeded - secondsDone) / 60)} minutos.`);
        console.log("Lembre-se de que vocĂȘ precisa de pelo menos mais uma pessoa no VC!");
      }
    } else if (taskName === "PLAY_ACTIVITY") {
      const channelId =
        ChannelStore.getSortedPrivateChannels()[0]?.id ??
        Object.values(GuildChannelStore.getAllGuilds()).find(x => x && x.VOCAL.length > 0)?.VOCAL[0]?.channel?.id;

      if (!channelId) {
        console.log("Nenhum canal de voz disponĂ­vel para realizar a atividade.");
        return;
      }

      const streamKey = `call:${channelId}:1`;

      let fn = async () => {
        console.log("Concluindo missĂŁo", 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(`Progresso da missĂŁo: ${progress}/${secondsNeeded}`);

          if (progress >= secondsNeeded) {
            await api.post({ url: `/quests/${quest.id}/heartbeat`, body: { stream_key: streamKey, terminal: true } });
            break;
          }

          await new Promise(resolve => setTimeout(resolve, 20000));
        }

        console.log("MissĂŁo concluĂ­da!");
      };

      fn();
    }
  }
})();

DĂȘ Enter:

Com isso, vocĂȘ verĂĄ a execução da missĂŁo iniciando em 1% a cada 3/5 segundos.

Para usar o script no Browser, use este:

delete window["$"];

let wpRequire = webpackChunkdiscord_app.push([[Symbol()], {}, r => r]);
webpackChunkdiscord_app.pop();

let ApplicationStreamingStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.__proto__?.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?.__proto__?.getQuest)?.exports?.Z;
let ChannelStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.__proto__?.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?.__proto__?.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 = typeof DiscordNative !== "undefined";

if (!quest) {
	console.log("VocĂȘ nĂŁo tem nenhuma missĂŁo nĂŁo concluĂ­da!");
} 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", "PLAY_ACTIVITY", "WATCH_VIDEO_ON_MOBILE"]
		.find(x => quest.config.taskConfigV2.tasks[x] != null);
	const secondsNeeded = quest.config.taskConfigV2.tasks[taskName].target;
	let secondsDone = quest.userStatus?.progress?.[taskName]?.value ?? 0;

	if (taskName === "WATCH_VIDEO" || taskName === "WATCH_VIDEO_ON_MOBILE") {
		const maxFuture = 10, speed = 7, interval = 1;
		const enrolledAt = new Date(quest.userStatus.enrolledAt).getTime();

		let fn = async () => {
			while (true) {
				const maxAllowed = Math.floor((Date.now() - enrolledAt) / 1000) + maxFuture;
				const diff = maxAllowed - secondsDone;
				const timestamp = secondsDone + speed;
				if (diff >= speed) {
					await api.post({
						url: `/quests/${quest.id}/video-progress`,
						body: { timestamp: Math.min(secondsNeeded, timestamp + Math.random()) }
					});
					secondsDone = Math.min(secondsNeeded, timestamp);
				}

				if (timestamp >= secondsNeeded) {
					break;
				}
				await new Promise(resolve => setTimeout(resolve, interval * 1000));
			}
			console.log("MissĂŁo concluĂ­da!");
		};

		fn();
		console.log(`Spoofing vĂ­deo para ${applicationName}.`);
	} else if (taskName === "PLAY_ON_DESKTOP") {
		if (!isApp) {
			console.log(`Isso não funciona mais no navegador para missÔes que não sejam em vídeo. Use o aplicativo para desktop para concluir a missão de ${applicationName}!`);
		} else {
			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(">", "");

				const fakeGame = {
					cmdLine: `C:\\Program Files\\${appData.name}\\${exeName}`,
					exeName,
					exePath: `c:/program files/${appData.name.toLowerCase()}/${exeName}`,
					hidden: false,
					isLauncher: false,
					id: applicationId,
					name: appData.name,
					pid,
					pidPath: [pid],
					processName: appData.name,
					start: Date.now()
				};

				const realGames = RunningGameStore.getRunningGames();
				const fakeGames = [fakeGame];
				const realGetRunningGames = RunningGameStore.getRunningGames;
				const 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 });

				let fn = data => {
					let progress = quest.config.configVersion === 1
						? data.userStatus.streamProgressSeconds
						: Math.floor(data.userStatus.progress.PLAY_ON_DESKTOP.value);

					console.log(`Progresso da missĂŁo: ${progress}/${secondsNeeded}`);

					if (progress >= secondsNeeded) {
						console.log("MissĂŁo concluĂ­da!");

						RunningGameStore.getRunningGames = realGetRunningGames;
						RunningGameStore.getGameForPID = realGetGameForPID;
						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(`Seu jogo foi falsificado para ${applicationName}. Aguarde mais ${Math.ceil((secondsNeeded - secondsDone) / 60)} minutos.`);
			});
		}
	} else if (taskName === "STREAM_ON_DESKTOP") {
		if (!isApp) {
			console.log(`Isso não funciona mais no navegador para missÔes que não sejam em vídeo. Use o aplicativo de desktop para concluir a missão de ${applicationName}!`);
		} else {
			let realFunc = ApplicationStreamingStore.getStreamerActiveStreamMetadata;
			ApplicationStreamingStore.getStreamerActiveStreamMetadata = () => ({
				id: applicationId,
				pid,
				sourceName: null
			});

			let fn = data => {
				let progress = quest.config.configVersion === 1
					? data.userStatus.streamProgressSeconds
					: Math.floor(data.userStatus.progress.STREAM_ON_DESKTOP.value);

				console.log(`Progresso da missĂŁo: ${progress}/${secondsNeeded}`);

				if (progress >= secondsNeeded) {
					console.log("MissĂŁo concluĂ­da!");

					ApplicationStreamingStore.getStreamerActiveStreamMetadata = realFunc;
					FluxDispatcher.unsubscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn);
				}
			};

			FluxDispatcher.subscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn);

			console.log(`Sua transmissĂŁo foi falsificada para ${applicationName}. Transmita qualquer janela no VC por mais ${Math.ceil((secondsNeeded - secondsDone) / 60)} minutos.`);
			console.log("Lembre-se de que vocĂȘ precisa de pelo menos mais uma pessoa no VC!");
		}
	} else if (taskName === "PLAY_ACTIVITY") {
		const channelId =
			ChannelStore.getSortedPrivateChannels()[0]?.id ??
			Object.values(GuildChannelStore.getAllGuilds()).find(x => x && x.VOCAL.length > 0)?.VOCAL[0]?.channel?.id;

		if (!channelId) {
			console.log("Nenhum canal de voz disponĂ­vel para realizar a atividade.");
			return;
		}

		const streamKey = `call:${channelId}:1`;

		let fn = async () => {
			console.log("Concluindo missĂŁo", 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(`Progresso da missĂŁo: ${progress}/${secondsNeeded}`);

				if (progress >= secondsNeeded) {
					await api.post({ url: `/quests/${quest.id}/heartbeat`, body: { stream_key: streamKey, terminal: true } });
					break;
				}

				await new Promise(resolve => setTimeout(resolve, 20000));
			}

			console.log("MissĂŁo concluĂ­da!");
		};

		fn();
	}
}

Caution

USe somente se vocĂȘ estiver sabendo o que estĂĄ fazendo. Esse README.md serve apenas para afins educacionais, entendendo o fluxo do programa de como funciona e possbilidades de executar sem quebrar as regras da plataforma.

About

Resgate missĂ”es do 𝖣iscord-mission

Topics

Resources

Stars

Watchers

Forks