Add justdiscord.org - #112
Conversation
There was a problem hiding this comment.
Pull request overview
Adds JustDiscord (justdiscord.org) to the bot-list dataset so BotBlock can recognize it as a supported directory/listing site with its API endpoints and capabilities.
Changes:
- Introduces a new list definition for JustDiscord including API docs, stats POST endpoint, and public listings endpoint.
- Declares supported feature flags and metadata (language(s), Discord invite, display/defunct status).
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
A Discord directory covering servers, bots, emojis, stickers and packs. Ownership is verified through Discord — a server's owner via OAuth guilds with MANAGE_GUILD, a bot's developer by inviting the application to the verification server and having it answer a challenge — and ranked order comes from votes, ratings and written reviews. The API is documented at https://justdiscord.org/docs/introduction. /api/v0 deliberately follows the conventional bot-list shape so existing libraries work unchanged: POST /api/v0/bots/:id/stats takes server_count, shard_count and shards, GET .../check?userId= answers {"voted": 1}, and GET .../votes lists voters. /api/v1 is the site's own; the public listings endpoint is used here for api_all. view_bot, bot_widget and api_get are null: listing pages resolve by the owner-chosen slug rather than the application id, there is no widget image, and the per-bot GET is scoped to the listing's own token, so none of them can be built from a bot id alone. owners is null because the pattern requires the legacy discriminator format, which no current Discord username has. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
9f46ca4 to
e2129c2
Compare
Listing pages resolve by an owner-chosen slug, so /bots/<application_id> answered 404 and view_bot was left null when this was opened. JustDiscord now resolves the id form: an id-shaped address that matches no slug is looked up by application id and 308s to the canonical slug page, subpath and language prefix carried over. /bots/774043716797071371 -> /bots/beatra /bots/774043716797071371/commands -> /bots/beatra/commands /tr/bots/774043716797071371 -> /tr/bots/beatra The slug is still what is canonical — the id address is a permanent alias, not a second page — so nothing gets indexed twice. It is live now. api_get stays null: the per-bot GET is scoped to the listing's own token and cannot answer for an arbitrary bot id. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Follow-up: `view_bot` is now set to `https://justdiscord.org/bots/:id\`. It was null when this was opened because listing pages resolve by an owner-chosen slug and `/bots/<application_id>` answered 404. JustDiscord now resolves the id form — an id-shaped address that matches no slug is looked up by application id and 308s to the canonical slug page, with the subpath and language prefix carried over. Live now: ``` The slug stays canonical — the id address is a permanent alias, not a second page — so nothing is indexed twice. The same is in place for server listings by guild id. `api_get` stays null: the per-bot GET is scoped to the listing's own token and cannot answer for an arbitrary bot id. |
This was set to /api/v1/listings?kind=bot on the claim that it returns every bot. It does not, and I should have checked before filing it. The endpoint has no pagination at all — no offset, no cursor, no page parameter. It answers with the top of a sort and stops there, capped at 50 rows a request. So it is a top-N endpoint, not an all-bots one, and anything walking it expecting the full catalogue would silently get the first page and believe it had everything. Nulled rather than documented as partial: the field means all bots, and a URL that answers with 50 of 8,000 is a wrong answer to the question this field asks, not a partial one. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Correction to my own earlier comment: I have set I filed it as
Current state of the entry: |
| "name": "JustDiscord", | ||
| "url": "https://justdiscord.org/", | ||
| "icon": "https://justdiscord.org/icon.png", | ||
| "language": "English, French, German, Spanish, Portuguese, Italian, Dutch, Polish, Czech, Swedish, Ukrainian, Russian, Turkish, Hindi, Indonesian, Vietnamese, Thai, Chinese, Japanese & Korean", |
There was a problem hiding this comment.
This should be a single language, the primary language for the site
There was a problem hiding this comment.
Done — set to English.
| "view_bot": "https://justdiscord.org/bots/:id", | ||
| "bot_widget": null, | ||
| "content": null, | ||
| "owners": null, |
There was a problem hiding this comment.
This should be a list of the Discord account of the folks that own/operate the bot list
There was a problem hiding this comment.
Done — set to umutxyp#0000 (518341959765458985). I had left it null because no current Discord username carries a discriminator; I see now that #0000 is the established convention here for those.
- language: single primary language, as with every other entry - owners: the list operator's Discord account
Adds JustDiscord as a list.
A Discord directory covering servers, bots, emojis, stickers and packs. Ownership is verified through Discord itself — a server's owner via OAuth
guildswithMANAGE_GUILD, a bot's developer by inviting the application to the verification server and having it answer a challenge — and ranked order comes from votes, ratings and written reviews. Sponsored placements are sold separately, are labelled wherever they appear, and do not change any ranked position.API
Documented at https://justdiscord.org/docs/introduction.
/api/v0deliberately follows the conventional bot-list shape so existing libraries work unchanged:api_postPOST /api/v0/bots/:id/stats—server_count,shard_count,shardsGET /api/v0/bots/:id/check?userId=…→{"voted": 1}voting_dataGET /api/v0/bots/:id/votesapi_allGET /api/v1/listings?kind=bot(public, rate limited)Fields left null, and why
view_bot/bot_widget— listing pages resolve by an owner-chosen slug (/bots/<slug>), not by application id, and there is no widget image. Neither can be built from a bot id alone. Happy to addview_botin a follow-up if id-based lookup is added upstream on our side.api_get—GET /api/v0/bots/:id/statsexists but is scoped to the listing's own token, so it can't be used to look up an arbitrary bot.owners— the schema pattern requires the legacyname#0000 (id)discriminator format, which no current Discord username has.npx jestpasses locally (39/39).