Код для фарма прогресса в Discord

Код для фарма прогресса в Discord

-

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 !== "1412491570820812933" && x.userStatus?.enrolledAt && !x.userStatus?.completedAt && new Date(x.config.expiresAt).getTime() > Date.now())

let isApp = typeof DiscordNative !== "undefined"

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 questName = quest.config.messages.questName

  const taskConfig = quest.config.taskConfig ?? quest.config.taskConfigV2

  const taskName = ["WATCH_VIDEO", "PLAY_ON_DESKTOP", "STREAM_ON_DESKTOP", "PLAY_ACTIVITY", "WATCH_VIDEO_ON_MOBILE"].find(x => taskConfig.tasks[x] != null)

  const secondsNeeded = taskConfig.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 completed = false

    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) {

          const res = await api.post({url: `/quests/${quest.id}/video-progress`, body: {timestamp: Math.min(secondsNeeded, timestamp + Math.random())}})

          completed = res.body.completed_at != null

          secondsDone = Math.min(secondsNeeded, timestamp)

        }

      

        if(timestamp >= secondsNeeded) {

          break

        }

        await new Promise(resolve => setTimeout(resolve, interval * 1000))

      }

      if(!completed) {

        await api.post({url: `/quests/${quest.id}/video-progress`, body: {timestamp: secondsNeeded}})

      }

      console.log("Quest completed!")

    }

    fn()

    console.log(`Spoofing video for ${questName}.`)

  } else if(taskName === "PLAY_ON_DESKTOP") {

    if(!isApp) {

      console.log("This no longer works in browser for non-video quests. Use the discord desktop app to complete the", questName, "quest!")

    } 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: 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(`Quest progress: ${progress}/${secondsNeeded}`)

        

          if(progress >= secondsNeeded) {

            console.log("Quest completed!")

          

            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(`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 discord desktop app to complete the", questName, "quest!")

    } 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(`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 ${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", questName, "-", 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()

  }

}

Report Page