QuestQuorum
QuestQuorum is a YourBot.gg marketplace plugin for coordinating one active Project: Gorgon guild quest in Discord.
Comandos que añade este plugin
Acerca de este plugin
QuestQuorum
One board. Every objective. No duplicate grind.
QuestQuorum is a YourBot.gg marketplace plugin for coordinating one active Project: Gorgon guild quest in Discord. Members assign themselves absolute quantities, managers manually sync what the game has counted, and the board shows uncovered and overbooked work.
QuestQuorum is unofficial. It does not connect to Project: Gorgon, inspect the client, read memory, packets, logs, chat, or game files at runtime, automate gameplay, or request a game account or character identity.
The three numbers
QuestQuorum deliberately keeps these concepts separate:
- Game (
observed_completed) is progress a server manager manually copied from the active in-game quest. - Ready is item stock a member says is already ready to turn in. It is self-reported and is valid only for item objectives.
- Claimed is work a member intends to gather, craft, deliver, or kill. It is a plan, not progress.
Each member has one commitment row per objective. /qq-commit sets the
absolute current amount; it never adds to a previous amount. Saving 40 and
then 25 leaves a commitment of 25.
For every objective:
remaining = max(0, required - Game)
planned = Ready + Claimed
covered = min(remaining, planned)
uncovered = max(0, remaining - planned)
overbooked = max(0, planned - remaining)
Kills cannot be Ready because there is no item quantity waiting to turn in; they can only be Claimed. Managers may lower Game progress to correct a prior entry, and that correction never changes member commitments.
Server setup
- Install or upload QuestQuorum through YourBot's Dev Portal.
- Grant the displayed SQL and interaction-response capabilities.
- Open the plugin dashboard and choose Start or Close Quest.
- Select a bundled template or enter a strict custom board.
- Verify every objective against the active quest in Project: Gorgon.
- Confirm the form and start the board.
- Run
/questquorumin the Discord channel where the board should appear.
Starting a board never replaces another active board. Archive the old board explicitly first.
Bundled boards
Version 0.1.0 ships a compact snapshot generated from Elder Game's official
Project: Gorgon third-party quests.json, data version 480. The public board
shows that version and tells members to verify it in game. The snapshot can go
stale; no data is fetched at runtime.
Custom boards
Enter one nonblank objective per line:
ITEM|150|Grass
KILL|100|Fae-Afflicted Animals
OTHER|1|Speak to Percy after the work is complete
There may be 1–12 objectives. Types are ITEM, KILL, or OTHER; quantities
are whole numbers from 1 to 100000; labels are 1–120 safe Unicode characters.
Blank lines are ignored. Inputs are NFKC-normalized, and unsafe controls, NUL,
extra delimiters, and pipes in labels are rejected.
Member commands
| Command | Purpose |
|---|---|
/questquorum |
Post the current public board, or show setup guidance if none exists. |
/qq-commit objective amount state |
Replace your current commitment for one objective. |
/qq-release objective |
Remove only your own commitment; safe if already absent. |
/qq-mine |
Show your commitments privately. |
/qq-objective objective |
Show totals and up to 25 member commitments privately. |
/qq-help |
Explain Game, Ready, Claimed, and Open. |
All responses suppress Discord mention parsing. Public boards include a Refresh button, My Commitments button, How It Works button, and one objective detail selector.
Why the public board refreshes explicitly
Commit and release handlers update canonical SQL and reply privately. They do not race to rewrite shared Discord messages. Press Refresh on a posted board to reconstruct its complete content and component tree from current SQL state. Multiple public copies are allowed and no message ID is stored.
Old controls carry their board ID. Once a board is archived, they return a stale-board message instead of reading or changing another board.
Dashboard
- Overview (viewer): active quest, source/version, objective statuses, uncovered total, canonical objective table, last sync, and disclaimer.
- Start or Close Quest (manager): bundled/custom start and explicit archive. An active board is never replaced automatically.
- Sync In-Game Progress (manager): absolute observed progress for up to 12 objectives. Values may decrease as corrections.
- History (viewer): read-only, paginated archived-board summaries.
- Settings (manager): retention from 30–365 days and whether custom boards are allowed.
The current manifest-dashboard schema is static. The sync page therefore declares twelve numbered fields and shows the active objective table directly above them; only fields belonging to the current board are accepted on save.
Privacy, storage, and retention
QuestQuorum stores only per-server quest configuration, objective quantities and states, timestamps, Discord user IDs needed for current commitments, and Discord user IDs used for manager attribution. It stores no Project: Gorgon identity, game credentials, inventory export, message content, chat or game logs, contribution score, or leaderboard.
Member detail is returned ephemerally and is capped at 25 rows. Archived commitment rows remain tenant-isolated until their board reaches retention, but history exposes only board-level summaries. Default retention is 180 days and is configurable from 30–365 days. Cleanup is bounded to ten boards per run and is opportunistic on plugin readiness and manager start/archive activity—not at an exact scheduled second. Platform storage lifecycle after uninstall remains governed by YourBot.
Capabilities
The manifest requests exactly:
storage:sqlfor isolated per-server durable state.interaction:respondfor slash/component replies.
YourBot 0.8.4 automatically infers interaction:respond from declared slash
commands. Its local validator still reports the capability as undeclared when
production code calls ctx.interaction.respond, so the manifest lists this
safe, already-implied capability explicitly. QuestQuorum does not request or
use KV, secrets, HTTP, WebSockets, message content, arbitrary Discord sends or
edits, roles, channels, or schedules. ctx.ephemeral needs no capability and
is used only for best-effort rate limits and 24-hour interaction deduplication;
durable operations are absolute/idempotent in SQL.
Template maintenance
The full official source dump is never packaged or committed. To regenerate a future reviewed snapshot from a local source file:
python scripts/extract_guild_quests.py \
--input vendor/project_gorgon_v480_quests.json \
--output questquorum/data/guild_quests_pg_v480.json \
--source-version 480
The v480 input SHA-256 recorded in the snapshot and source metadata is:
cb4fcb0ed093e01ec63fdb1f3734565cc63c7fbb5a761355becb991a7a803d93
Unknown objective types fail extraction rather than being guessed. Scripted steps are excluded from divisible work and preserved as completion notes.
Development
Python 3.11+ is required. This repository is pinned to yourbot-sdk 0.8.4.
python3 -m virtualenv .venv
source .venv/bin/activate
python -m pip install -r requirements-dev.txt
python -m pytest
python -m compileall .
yourbot doctor
yourbot validate
python scripts/build_zip.py
unzip -l dist/questquorum-0.1.0.zip
The release zip contains production files only, with manifest.json and
__main__.py at its root. See RELEASE_CHECKLIST.md for
the live Discord gate, which cannot be truthfully completed by local tests.
SDK implementation notes
The build was verified against the installed and current YourBot SDK 0.8.4 surface rather than the older local prose reference:
- SQL uses psycopg-style
%splaceholders. - Dashboard RPC names are direct decorator names and form saves use
save_rpc_method. - Dashboard RPCs can arrive before normal event readiness, so each dashboard entry path idempotently ensures the tenant SQL schema before querying it.
- Dashboard saves are manager-gated server-side by YourBot. SDK 0.8.4 exposes
no trusted manager boolean to Python handlers, so handlers never trust a
client
is_managervalue; they consume only documented platform viewer IDs. - Manifest forms cannot return a dynamic field schema, which is why progress uses twelve fixed numbered inputs with active-board validation.
- Current artifact limits are 25 MB compressed, 100 MB uncompressed, 500 files, and 10 MB per file; the build script enforces them.
- Slash commands are platform-acknowledged before normal handlers run, while
component refreshes use the documented full replacement payload with
update_message=True. - Multi-objective progress sync uses one PostgreSQL data-modifying CTE and a row lock on the active board, so archive and sync cannot interleave into a partial archived snapshot.
Troubleshooting
The template does not match my quest. The bundle is a v480 convenience snapshot. Archive the board and start a verified custom board.
Why did my commitment replace my previous number? Commitments are absolute current intent, not additive events. Save the total you currently intend.
Why did the public board not change immediately? Commits avoid racing to edit shared messages. Press Refresh to rebuild the board from SQL.
Why can't I mark kills as ready? Ready means an item quantity already available to turn in. Kills and other work can only be claimed.
Why is an old button rejected? Controls are bound to one board. Archived or noncurrent board controls fail safely.
Why does the board say uncovered after I completed work? Finished work is not Game progress until a manager copies the current in-game count into the Sync page.
How do I correct an in-game progress entry? Managers may save a lower value on the Sync page. Commitments remain unchanged.
Disclaimer
QuestQuorum is an unofficial community tool and is not affiliated with or endorsed by Elder Game, LLC. Project: Gorgon and related names and content belong to Elder Game, LLC. Bundled quest templates are convenience snapshots and may be outdated; verify objectives and progress in game. Coverage and member commitments are self-reported.
¿Tienes alguna pregunta?
Pregunta directamente al desarrollador de QuestQuorum. Inicia sesión con Discord para enviar tu pregunta. Se te notificará cuando respondan.
Inicia sesión para preguntar al desarrollador →¿Listo para instalar QuestQuorum?
Inicia sesión con Discord, configura tu servidor y añádelo en minutos.
Instalar en tu servidor →