Hide Playerbot accounts from search, character pages and guild rosters #2

Merged
yrtria merged 2 commits from hide-bot-accounts into master 2026-09-02 14:22:06 -06:00
Owner

Playerbots are ordinary accounts, not game masters, so upstream's hideGameMasters never touched them. On a realm running mod-playerbots the armory is effectively a bot directory.

The filter

Two new options, applied exactly the way the existing GM filter works — left join the accounts we don't want, then require the join to have missed:

Option Default
hideBotAccounts true
botAccountPattern RNDBOT%

Applied in three places: the search listing, guild rosters, and the character lookup — so a bot's page 404s rather than rendering. A realm with no bots matches nothing, so the default is harmless upstream.

ARMORY_HIDE_BOTS and ARMORY_BOT_PATTERN are wired through docker-compose.mythica.yml, both defaulted on, so no stack changes are needed — just pull and redeploy.

Verified against the live realm

listed before patch   1377
listed after patch      27
Spinnaker             shown
Kdog                  shown
Rarzosh   (bot)       hidden

Typecheck and eslint both clean.

One note on the SQL

The pattern is spliced into join clauses the query builder emits as raw SQL, so it can't be a bound parameter without disturbing the positional values around it. It comes from the operator's config rather than from a request, but Utils.quoteSqlString quotes it anyway so a stray apostrophe can't produce a broken or surprising query.

This is upstreamable as-is if you ever want to send it back — it's a general Playerbots problem, not a Mythica-specific one.

🤖 Generated with Claude Code

https://claude.ai/code/session_01NW2ooBP2KPqQVzdZZDMvZd

Playerbots are ordinary accounts, not game masters, so upstream's `hideGameMasters` never touched them. On a realm running mod-playerbots the armory is effectively a bot directory. ## The filter Two new options, applied exactly the way the existing GM filter works — left join the accounts we don't want, then require the join to have missed: | Option | Default | |---|---| | `hideBotAccounts` | `true` | | `botAccountPattern` | `RNDBOT%` | Applied in three places: the **search listing**, **guild rosters**, and the **character lookup** — so a bot's page 404s rather than rendering. A realm with no bots matches nothing, so the default is harmless upstream. `ARMORY_HIDE_BOTS` and `ARMORY_BOT_PATTERN` are wired through `docker-compose.mythica.yml`, both defaulted on, so no stack changes are needed — just pull and redeploy. ## Verified against the live realm ``` listed before patch 1377 listed after patch 27 Spinnaker shown Kdog shown Rarzosh (bot) hidden ``` Typecheck and eslint both clean. ## One note on the SQL The pattern is spliced into join clauses the query builder emits as raw SQL, so it can't be a bound parameter without disturbing the positional values around it. It comes from the operator's config rather than from a request, but `Utils.quoteSqlString` quotes it anyway so a stray apostrophe can't produce a broken or surprising query. This is upstreamable as-is if you ever want to send it back — it's a general Playerbots problem, not a Mythica-specific one. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01NW2ooBP2KPqQVzdZZDMvZd
yrtria added 1 commit 2026-09-02 14:08:43 -06:00
Hide Playerbot accounts from search, character pages and guild rosters
Some checks failed
Build / build (push) Waiting to run
Lint / eslint (push) Waiting to run
Build / build (pull_request) Has been cancelled
Lint / eslint (pull_request) Has been cancelled
cc7ca06182
Playerbots are ordinary accounts, not game masters, so hideGameMasters does
not touch them. On a realm running mod-playerbots that means the armory is
almost entirely bots: 1,377 characters listed, of which about 1,350 are bots.

Adds two options, hideBotAccounts (default true) and botAccountPattern
(default "RNDBOT%"), applied the same way the game master filter already
works: left join the accounts we do not want, then require the join to have
missed. A realm without bots matches nothing, so the default is harmless.

Applied in the search listing, guild rosters, and the character lookup, so a
bot's page 404s rather than rendering.

The pattern is spliced into join clauses the query builder emits as raw SQL,
so it cannot be a bound parameter. It comes from the operator's own config
rather than from a request, but Utils.quoteSqlString quotes it so a stray
apostrophe cannot produce a broken query.

Verified against the live realm:

  listed before  1377
  listed after     27
  Spinnaker, Kdog  shown
  Rarzosh (bot)    hidden

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NW2ooBP2KPqQVzdZZDMvZd
yrtria added 1 commit 2026-09-02 14:10:57 -06:00
Show game master characters in the armory
Some checks failed
Build / build (push) Has been cancelled
Lint / eslint (push) Has been cancelled
Build / build (pull_request) Has been cancelled
Lint / eslint (pull_request) Has been cancelled
6d7398d055
Upstream hides GM accounts by default, which assumes GM means staff-only.
On this realm GM accounts belong to real players — Spinnaker, the highest
level character on the server, is gmlevel 3 — so the filter was hiding
people who should be listed.

Flips the stack default to 0 and documents both this and the bot filter.
ARMORY_HIDE_GMS=1 restores upstream behaviour.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NW2ooBP2KPqQVzdZZDMvZd
yrtria merged commit 424d65233b into master 2026-09-02 14:22:06 -06:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: yrtria/azerothcore-armory#2
No description provided.