Skip to content

Discord Troubleshooting

stbrumm edited this page Sep 8, 2026 · 2 revisions

Discord-Troubleshooting

English · Deutsch · Español · Languages

Your Discord status does not appear, looks wrong, or the connection keeps failing? Work through the symptoms below — every diagnosis needs only the Stream view and the daily log.

Setup basics (portal uploads, client ID, bundled files): see Discord-Setup.

Status does not appear

  1. Check the Stream view connection line. It reports one of three states: Not connected (no Discord desktop app, activity disabled, or empty client ID), Connecting…, or Connected — Discord shows the Rivulet status. When it is stuck on Not connected, use the Reconnect button — it rebuilds the adapter and retries the handshake without an app restart.

  2. Is the toggle on? Settings → Discord Rich Presence → Show activity on Discord must be enabled and the Application client ID must be filled in. An empty client ID keeps the adapter off by design.

  3. Is Discord running? The Rich Presence IPC only exists while the Discord desktop app is open (browser Discord is not enough). The adapter reconnects automatically with a growing backoff once Discord appears.

  4. Read the log. Log locations:

    • Windows: %LOCALAPPDATA%\Rivulet\logs\
    • Linux/macOS: the local user data directory under Rivulet/logs/

    Connected in the Stream view but no card in Discord is Discord-side caching — the client can take a few minutes (or a restart) to render a new icon or asset; the wire delivery is then already proven by the log.

Reading the log: the two decisive lines

Every status push logs exactly one of these lines:

Discord Rich Presence SET_ACTIVITY delivered activity=<status> game=<game name>

→ Discord accepted the payload. If the card still looks stale, restart Discord — the delivery is proven.

Discord Rich Presence IPC unavailable error=… backoff_secs=N

→ The adapter could not reach Discord's IPC socket. Typical causes: Discord not running, a second Discord installation (e.g. PTB/Canary) owning the pipe, or a socket permission problem. The adapter retries with exponential backoff up to 30 s; a Reconnect in the Stream view forces an immediate retry.

Wrong or missing application ID

  • The client ID must be 17–20 digits, numeric only. Settings shows an immediate warning if you pasted the application URL or an incomplete ID — copy the numeric Application ID from Developer Portal → General Information.
  • The ID is validated and persisted on Apply; a wrong-looking value never silently disables the adapter.
  • Discord resolves the presence only for an application that exists and has Rich Presence enabled. If the ID is valid but nothing renders, open Rich Presence → Art Assets in the portal and confirm the artwork was saved under the asset key rivulet_logo.

Handshake keeps failing

  • Framing/handshake errors in the log (e.g. Protocol error, HandshakeIncomplete) usually mean something else is listening on the Discord IPC pipe. Close other apps that emulate Discord (launchers, chat overlays) and press Reconnect.
  • Rejected payload (error 4000): Rivulet validates every payload against Discord's rules before sending (empty details, overlong status/game text

    128 chars, implausible asset keys are filtered out) and Settings warns on Apply. A 4000 in the log therefore points at a portal-side asset problem rather than the payload — re-check the art asset key.

  • Still nothing? Run the live handshake probe while Discord is open: powershell -File scripts/test-discord-handshake.ps1 (from a repository checkout). A READY reply proves the IPC path, framing and client ID; the reply also echoes the resolved art asset IDs.

Rendering limits (not bugs)

  • The server member list always shows only the app icon plus the registered app name ("Rivulet") — never the status lines. The detailed status appears on the profile card / detail view. This is Discord's rendering rule; the icon comes from the portal App Icon upload.
  • The status labels follow the Rivulet UI language (Recording/Aufnahme, …) — switch the app language to change the wording.

Security: never paste stream keys, OAuth tokens, or application secrets into wiki pages, screenshots, issue reports, or logs.

Clone this wiki locally