- Documentation
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
- Open your workspace in TaskJuice and navigate to Connections.
- Choose Discord and click Connect.
- Sign in with the Discord account whose guilds you want to manage on behalf of your client.
- Grant the requested scopes (
identify,guilds,guilds.members.read,messages.read). - 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-messagepolls a chosen channel's message history and fires once per cycle whoseitemsarray carries every new message observed since the previous watermark. Drop a Loop node downstream to process each message individually.discord/new-guild-joinedpolls the connected user's guild list and fires once per cycle whoseitemsarray carries every guild observed since the previous watermark. Used to react when an agency operator joins a new client server.
Actions
discord/get-current-userfetches the Discord user associated with the connected OAuth token.discord/list-current-user-guildslists the guilds the connected user belongs to, paginated by snowflake cursor (before/after).discord/get-guildfetches a single guild by id, with optional approximate member and presence counts.discord/list-guild-channelslists every channel in a guild in a single call.discord/get-channelfetches a single channel by id.discord/list-channel-messageslists messages in a channel, paginated by snowflake cursor (before,after,around).discord/update-current-userupdates 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-Ed25519plusX-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. Thediscord/new-channel-messageanddiscord/new-guild-joinedpolling 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, andX-RateLimit-Reset-Afterheaders, with 429 responses carrying aRetry-Aftervalue. 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.readscope is required for thediscord/new-channel-messagepolling trigger and thediscord/list-channel-messagesaction. Without it, both surface a 403 from Discord on the first request.
Was this helpful?