PlatformsDiscord

Discord: the clients GitHub has, and how much of what we found each one already does

The 7 user-account Discord clients the GitHub search turned up (githubSearch.md) were shallow-cloned on 2026-10-28 into ~/.buzz/REPOS/discordClients/, not committed. Each was searched for the 66 things our inspect runs found (README.md, background/*.md), in four areas, by ~/.buzz/RESEARCH/DISCORD_CLIENT_VENDOR_MATRIX/coverage.py (raw: coverage.json). The gaps the pattern search reported for the leading clients were then checked by hand.

The count

ClientLanguageWatch (18)Read and send (8)Sign in (6)Background calls (34)All (66)Last push
Merubokkusu/Discord-S.C.U.MPython17749372024-03-25
chojs23/concordRust16737332026-10-23
sparklost/endcordPython18734322026-10-28
HuyaneMatsu/hataPython17707312026-10-21
DiscordMessenger/dmC++15714272026-10-03
uowuo/abaddonC++14622242026-09-09
Badim41/DiscordUserAPIPython14400182026-10-20

Corrected by hand from the pattern search: Discord-S.C.U.M reads history (discum/messages/messages.py getMessages, ?limit=&before=), and endcord resumes the socket (endcord/gateway.py resume(), resume_gateway_url) and reads the DM list from READY's private_channels.

What each of the three Python ones has and lacks

Discord-S.C.U.Mendcordhata
Gateway, zlib-stream, identify, heartbeat, resume, READYyesyesyes
MESSAGE_CREATE, TYPING_START, MESSAGE_REACTION_ADD, MESSAGE_ACKyesyesyes
PASSIVE_UPDATE_V2noyesno
SESSIONS_REPLACEyesyesyes
History (before + limit)yesyesyes
Send (nonce), ack, typing, profileyesyesyes
mobile_network_type on a sendnonono
auth/login, captchayesyesno (a bot library)
mfa/totpyesnono
settings-protonoyesno
Shapea library (discum)a terminal app; endcord/gateway.py, discord.py, auth.py are its clienta bot library
Transportrequests, websocket-client 0.59websocket-clientaiohttp
Size78 code files53 code files1362 code files

Where it leaves us

  • The watch (one gateway socket, every MESSAGE_CREATE to someone else) is done in Discord-S.C.U.M, endcord and hata alike. endcord is the only one with PASSIVE_UPDATE_V2 and is kept up to date (pushed the day we searched); Discord-S.C.U.M hasn't been pushed since March 2024.
  • Read and send (history paging, a send with a nonce, ack, typing) are in all three Python ones. None sends mobile_network_type, which the web client does.
  • Sign-in is in Discord-S.C.U.M and endcord; only Discord-S.C.U.M does two-step. Our account is signed in by matt in the browser, so the client would carry the token from the account's session.
  • The background calls (experiments, quests, billing, science…) are mostly the web client's own; no client does many of them, and nothing we do depends on them.
  • concord (Rust) covers about as much as the Python ones, and is the one to read when the web client's exact headers matter.