Skip to main content

Discord integration

Read Discord guilds and channels, watch for new messages, and update profiles across your client Discord accounts.

What it does

The Discord integration lets your agency observe and act on Discord guilds, channels, and messages on behalf of your clients without leaving TaskJuice. Connect a client's Discord account once and you can list every guild the user belongs to, inspect channels, read message history, watch a channel for new messages, fire a workflow whenever the connected user joins a new guild, and update the connected user's profile.

Connect a Discord account

  1. Open your workspace in TaskJuice and navigate to Connections.
  2. Choose Discord and click Connect.
  3. Sign in with the Discord account whose guilds you want to manage on behalf of your client.
  4. Grant the requested scopes (identify, guilds, guilds.members.read, messages.read).
  5. TaskJuice returns you to the workspace with the connection ready to use in any workflow.

To revoke access at any time, visit Discord authorized apps and remove the TaskJuice entry, or open Discord User Settings, Authorized Apps, and deauthorize TaskJuice.

Triggers

  • discord/new-channel-message polls a chosen channel's message history and fires once per cycle whose items array carries every new message observed since the previous watermark. Drop a Loop node downstream to process each message individually.
  • discord/new-guild-joined polls the connected user's guild list and fires once per cycle whose items array carries every guild observed since the previous watermark. Used to react when an agency operator joins a new client server.

Actions

  • discord/get-current-user fetches the Discord user associated with the connected OAuth token.
  • discord/list-current-user-guilds lists the guilds the connected user belongs to, paginated by snowflake cursor (before / after).
  • discord/get-guild fetches a single guild by id, with optional approximate member and presence counts.
  • discord/list-guild-channels lists every channel in a guild in a single call.
  • discord/get-channel fetches a single channel by id.
  • discord/list-channel-messages lists messages in a channel, paginated by snowflake cursor (before, after, around).
  • discord/update-current-user updates the connected user's username or avatar.

Known limitations

  • Discord delivers real-time events through two surfaces: the gateway WebSocket (for guild events) and the interactions HTTP endpoint (for slash commands and component clicks). Both sign payloads with Ed25519 (X-Signature-Ed25519 plus X-Signature-Timestamp), and the current TaskJuice inbound-auth envelope supports HMAC variants only. Until Ed25519 lands as a declarative recipe, the Discord integration uses polling triggers instead. The discord/new-channel-message and discord/new-guild-joined polling triggers achieve the same outcome with a short interval (defaults of 300 seconds and 900 seconds keep each connection comfortably under Discord's rate-limit budget).
  • Discord enforces global, per-route, and per-resource rate limits expressed via X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset-After headers, with 429 responses carrying a Retry-After value. TaskJuice surfaces a 429 as a retryable rate-limit error and respects the documented backoff.
  • The user-OAuth flow does not grant access to send messages, manage channels, or kick members. Those operations require a bot token (a different credential kind) issued to a Discord application installed on the target guild. Bot-token actions are out of scope for this integration; the available action set is read-mostly plus the profile update.
  • The messages.read scope is required for the discord/new-channel-message polling trigger and the discord/list-channel-messages action. Without it, both surface a 403 from Discord on the first request.
Was this helpful?
Discord integration | TaskJuice Docs