Resgate missĂ”es do đŁiscord-mission
https://github.com/brunos3d/discord-enable-devtools
Use ctrl + shift + I
, apĂłs carregado por completo.
Vå para MissÔes e aceite apenas 1 missão.
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();
}
}
})();
Com isso, vocĂȘ verĂĄ a execução da missĂŁo iniciando em 1% a cada 3/5 segundos.
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.