Skip to content

DiamondRoPlayz/Discord-Quester

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 

Repository files navigation

Basic Discord Quester

Automatically completes your enrolled quests
PLAY_ON_DESKTOP/PLAY_ON_PLAYSTATION/PLAY_ON_XBOX/PLAY_ACTIVITY/..., STREAM_ON_DESKTOP/..., WATCH_VIDEO/...
⚠️ Some quests require you to Stream your screen with another person ⚠️

(async()=>{
  let ok=navigator.userAgent.includes('Electron/');if(!ok)return console.log('Change your User-agent to "Electron/" or use the app.');
  let rc;webpackChunkdiscord_app.push([[Symbol()],{},r=>rc=r.c]);
  let api=Object.values(rc).find(x=>x?.exports?.tn?.post).exports.tn;
  let QuestsStore=Object.values(rc).find(x=>x?.exports?.Z?.__proto__?.getQuest).exports.Z;
  let qOrd=['WATCH','PLAY','STREAM'];
  let getQuests=()=>[...QuestsStore.quests.values()]
  .filter(a=>qOrd.some(k=>Object.keys(a.config.taskConfig.tasks)[0].includes(k)))
  .filter(f=>f.userStatus?.enrolledAt&&!f?.userStatus?.completedAt&&new Date(f.config.expiresAt)>new Date())
  .sort((a,b)=>{
    const[tA,tB]=[a,b].map(o=>Object.values(o.config.taskConfig.tasks)[0]);
    return qOrd.findIndex(k=>tA.eventName.includes(k))-qOrd.findIndex(k=>tB.eventName.includes(k))||tA.target-tB.target;
  });
  if(getQuests().length<1)return console.log('No quests to complete.');
  let questBeat=(questId,stream_key)=>api.post({url:`/quests/${questId}/heartbeat`,body:{stream_key,terminal:false}});
  let questVideo=(questId,timestamp)=>api.post({url:`/quests/${questId}/video-progress`,body:{timestamp}});
  let playQuest=(questId)=>questBeat(questId,`call:${questId}:1`);
  let streamQuest=(questId,type,stream)=>questBeat(questId,`${type}:${stream.filter(v=>v).join(':')}`);
  let playVideo=(questId,timestamp)=>questVideo(questId,timestamp);
  let findX=v=>Object.values(rc).find(x=>x?.exports?.Z?.[v]).exports.Z[v];
  let callX=v=>Object.values(rc).find(x=>x?.exports?.Z?.[v]).exports.Z[v]();
  let getCurrentUserActiveStream=()=>callX('getCurrentUserActiveStream');
  let getVoiceStatesForChannel=findX('getVoiceStatesForChannel');
  const sleep=ms=>new Promise(r=>setTimeout(r,ms));
  while(getQuests().length>0){
    let quest=getQuests()[0];
    let tasks=quest.config.taskConfig.tasks;
    let task=Object.keys(tasks)[0];
    console.log(task,'Quest Progress:',`${quest?.userStatus?.progress?.[task]?.value||0}/${tasks?.[task]?.target}`);
    if(task.includes('PLAY')){
      await playQuest(quest.id);await sleep(3e4);
    }else if(task.includes('WATCH')){
      await playVideo(quest.id,(quest?.userStatus?.progress?.[task]?.value||0)+11);await sleep(1e4);
    }else if(task.includes('STREAM')){
      let stream=getCurrentUserActiveStream();
      if(stream){
        let voiceStates=getVoiceStatesForChannel(stream.channelId);
        if(Object.keys(voiceStates).length>1){
          await streamQuest(quest.id,stream.streamType,[stream.guildId,stream.channelId,stream.ownerId]);
          await sleep(3e4);
        }else{console.log('⚠️','You need atleast one user in call, Waiting...');await sleep(5e3)}
      }else{console.log('⚠️','You must Stream your screen, Waiting...');await sleep(5e3)}
    }else{
      console.log('Unknown Quest Task');break;
    }
  };console.log('No more quests left.');
})()

© Created by DiamondRoPlayz

About

Automatically completes your enrolled quests

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published