Skip to content

nyxxbit/discord-quest-completer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Orion

Auto-complete every Discord Quest in seconds — v4.5.3

Version Stars License

Completes all Discord Quests automatically — game, video, stream, activity, and achievement quests. Paste one script into DevTools, get every reward. No installs, no tokens, no dependencies.

Works on every Discord update — no hardcoded paths, uses constructor.displayName for resilient module detection.

Get StartedHow It WorksConfiguration


Why Orion?

  • Completes ALL quest types — Video, Game, Stream, Activity, and the new Achievement quests
  • Auto-claiming — Claim rewards directly from the dashboard. Tries to claim automatically (if enabled), or provides a smart interactive button if captcha is needed
  • Resilient module loader — finds Discord stores by class name, not minified paths. Survives Discord updates
  • Smart rate limiting — exponential backoff on 429/5xx, skip-list for dead quests, randomized polling intervals. Distinguishes between global and endpoint limits, non-blocking retries
  • Fault-tolerant execution — One failed quest won't break the queue (Promise.allSettled)
  • Zero setup — single paste into the console. No Node.js, no npm, no extensions

Quick start

Important

Discord Desktop client only. Orion hooks into Discord's internal webpack stores, which are only exposed in the desktop app (Stable, PTB, or Canary). It will not work in browser Discord, mobile Discord, or any web-based client — even with DevTools or script-injection extensions like Kiwi Browser. GAME and STREAM quests in particular are impossible outside the desktop client.

1. Open Discord (Canary recommended — console enabled by default)

2. Press Ctrl + Shift + I → Console tab

3. Paste index.js and hit Enter

Shift + . toggles the dashboard. Click STOP to kill it instantly.

Enable console on stable Discord

Close Discord, edit %appdata%/discord/settings.json:

{ "DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOURE_DOING": true }

Restart Discord.


How it works

Orion extracts Discord's internal webpack stores (QuestStore, RunStore, Dispatcher, etc.) and uses them to spoof game processes, send fake video progress, and dispatch heartbeat signals — all through Discord's own authenticated API client.

QuestStore → filter incomplete → JIT enroll → dispatch tasks → poll progress → auto-claim → done
Quest type What Orion does
Video Sends fake video-progress timestamps with natural 7-9.5s polling intervals and precise float payloads
Game Injects a spoofed process into RunStore with real metadata from Discord's app registry
Stream Patches StreamStore.getStreamerActiveStreamMetadata with synthetic stream data
Activity Heartbeats against a voice channel to simulate participation
Achievement Monitors ACHIEVEMENT_IN_ACTIVITY events — requires joining the Activity manually

Dashboard

Draggable overlay with persistent position. Live-sorts tasks so you always see what matters:

Priority State Visual
1st Running (highest progress first) Blue accent, animated progress bar
2nd Queued Orange accent, dimmed
3rd Completed Green checkmark + Interactive CLAIM button if manual action needed

Desktop notifications fire on each quest completion.


Auto & In-UI Claiming

You can configure Orion's claiming behavior via the TRY_TO_CLAIM_REWARD setting.

  • Automated Claiming: If enabled, tries to claim instantly upon completion.
  • In-UI Button: If auto-claim fails due to captcha, or is disabled, a CLAIM REWARD button appears directly on the task card.

Configuration

Most settings are now configurable through the quest picker UI that appears before the script starts:

  • Reward filters — Toggle quests by reward type (Orbs, Avatar Decorations, In-Game Items)
  • Quest checkboxes — Select/deselect individual quests
  • Auto-enroll — Automatically accept quests before running them (default: ON)
  • Auto-claim — Attempt to claim rewards on completion (default: OFF to avoid captcha)

Advanced settings can still be tweaked in the CONFIG object before pasting:

const CONFIG = {
    HIDE_ACTIVITY: false,        // suppress "Playing..." from friends list
    MAX_LOG_ITEMS: 60,           // UI log limit
};

Error handling

Scenario Behavior
429 / 5xx Exponential backoff, re-queued up to MAX_RETRIES, distinguishes global vs endpoint limits
404 on enroll Quest added to skip-list, script continues
Repeated failures Task abandoned after MAX_TASK_FAILURES consecutive errors
25 min timeout Task force-stopped, cycle advances
Missing modules Required modules validated on boot; optional ones log a warning
Claim fails Falls back to CLAIM button in dashboard
Fatal crash Unconditionally releases window.orionLock so the script can be re-run without refreshing

Architecture

Single-file IIFE. No build tools, no external deps.

index.js
├─ CONFIG / SYS / RUNTIME      tunables, frozen system limits, active cleanups
├─ ErrorHandler                classifies HTTP errors (retry / skip / fatal)
├─ Logger                      DOM dashboard + task state + log output
├─ Traffic                     FIFO request queue with exponential backoff
├─ Patcher                     RunStore / StreamStore monkey-patching
├─ Tasks                       VIDEO, GAME, STREAM, ACTIVITY, ACHIEVEMENT handlers
├─ loadModules()               resilient webpack extraction via constructor.displayName
└─ main()                      discover → JIT enroll → execute → claim → loop

Module detection

Unlike other scripts that break on every Discord update, Orion finds stores by their class name (QuestStore, RunningGameStore, etc.) via constructor.displayName. The Dispatcher is found by structural signature (_subscriptions + subscribe + dispatch), and the API client by its unique .del method. No hardcoded minified paths.

For a full internal tour of the script, see docs/ARCHITECTURE.md.


Contributing

Contributions are welcome — bug reports, PRs, and docs. Start with CONTRIBUTING.md for the checklist and code style. Use the issue templates when reporting bugs or requesting features.


Changelog

v4.5.3

  • Pending state — Unenrolled quests now wait for manual acceptance in Discord instead of failing when auto-enroll is disabled.
  • Ghost-task fix — Unenrolled and hidden quests no longer attempt execution or time out in the background.
  • Claim button lock — Prevented API spam and visual state resets by locking the "Claim Reward" button during UI renders.
  • Picker refactor — Moved UI logic inside Logger and switched to native HTML forms for resilient state collection.
  • Dynamic filters — Added Quest Type filtering.

v4.5.2

  • Fix NodeList error$$ now returns a real Array so .every() works on visible quest cards. Resolves TypeError: visible.every is not a function when clicking (De)select All

v4.5.1

  • Fix (De)select All — The toggle button now correctly checks/unchecks visible quest checkboxes without hiding them. Reward filters remain independent. Button label syncs with actual checkbox state

v4.5

  • Quest picker UI — Script no longer starts immediately. A visual quest picker shows all available quests with checkboxes, color-coded by reward type (Orbs, Avatar Decorations, In-Game Items). Filter entire reward categories with one click, select/deselect individual quests, then hit START
  • Options panel — Toggle auto-enroll and auto-claim directly from the picker UI before starting. No more editing CONFIG to control these behaviors
  • Reward type filters — Pill buttons at the top let you enable/disable entire reward categories. Disabling "Orbs" hides and unchecks all Orb quests instantly

v4.4

  • JIT enrollment — Quests enroll one at a time right before execution instead of in bulk, eliminating mass-enrollment detection vectors
  • Natural video polling — Replaced static 1s intervals with 7–9.5s polling using 6-decimal float timestamps that match native Chromium player behavior
  • Randomized delays — All fixed-interval API calls now use randomized timing ranges to break predictable patterns
  • Correct Windows PIDs — Fake game process IDs generated as multiples of 4 to comply with Windows NT kernel architecture
  • Sequential execution — Both game and video tasks now run sequentially (concurrency = 1) to avoid parallel request spikes
  • Proper cleanup — Removes #orion-styles element on shutdown, debug logging for previously silent catch blocks

v4.3

  • GO TO QUESTS button — Achievement quests in RUNNING state now show an ACTION REQUIRED status with a navigation button that uses Discord's native router (transitionTo('/quest-home')) to jump straight to the quest page
  • Resilient router detection — New findRouter() locates Discord's minified transitionTo by source signature ("transitionTo -"), no hardcoded paths
  • Standardized log tags — Unified prefixes across the codebase ([System], [Network], [Task], [Cycle], [Enroll], [Claim]) for consistent, readable output
  • Cleaner UI logsdebug level messages now go to DevTools only and no longer spam the in-app dashboard
  • Achievement progress display — Progress text now omits the s (seconds) suffix for ACHIEVEMENT quests since their target is a count, not a duration
  • Fixed progress text updates — Restored missing progress-text class so live progress numbers update correctly on task cards

v4.2

  • Native UI Claiming: Added in-UI claiming via Claim Reward button.
  • Rigid Configuration: Moved hardcoded system limits to a frozen SYS object and added TRY_TO_CLAIM_REWARD config.
  • Fault-Tolerant Concurrency: Switched to Promise.allSettled to prevent queue crashes on a single task failure.
  • Strict Garbage Collection: Added RUNTIME.cleanups to track and safely flush active event listeners on script stop.
  • RPC & Lock Failsafes: Forces dummy PID 9999 to reliably clear "Playing" status, and releases window.orionLock on fatal errors.
  • Granular Rate Limiting: Differentiates between global (queue-freezing) and endpoint-specific API limits.

v4.1

  • Resilient loadModules() — uses constructor.displayName instead of hardcoded .A/.Z/.Ay/.ZP paths
  • Auto-claim rewards (optimistic POST + captcha fallback with CLAIM button)
  • Adaptive video speed (6-22 API calls instead of 180 for 900s quests)
  • ACHIEVEMENT_IN_ACTIVITY handler for milestone-based quests
  • WATCH_VIDEO_ON_MOBILE progress tracking fix
  • Task sorting by progress percentage
  • Per-cycle try-catch for crash isolation
  • Fixed scroll (After activating the script, it turned blue when hovered)

v4.0

  • Fixed Issue #5: enrollment 404 no longer crashes the script
  • ErrorHandler module with retry/skip/fatal classification
  • Traffic queue with exponential backoff for 5xx errors
  • Skip-list for permanently failed quests
  • Idempotent cleanup in GAME/STREAM handlers

Disclaimer

This tool is for educational and research purposes only. Automating user actions violates Discord's Terms of Service. The developer is not responsible for any account suspensions or bans. Use at your own risk.


Built by syntt_

If this helped you, drop a star — it keeps the project alive.

About

Auto-complete every Discord Quest in seconds. Paste one script, get all rewards. Resilient module loader, auto-claim, adaptive speed. No installs, no tokens, no dependencies.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors