Skip to content

Discord

Discord is the integration where your Jootle has the most power — and the most safety rails. Where Slack is a chat surface, Discord with Jootle is a chat surface AND a server admin tool. Your Jootle can post messages, generate invite links, create channels and roles, change permissions, and (with your approval) kick members or delete channels.

This chapter is what to expect once Discord is connected. Setup is described at the end.

You add your Jootle to your Discord server once. It shows up as a server member that your team can:

  • DM for private one-on-one chat.
  • @-mention in channels for in-thread help.
  • Receive notifications from in dedicated channels (e.g. #jootle-tasks for task progress, #alerts for anomalies).

It’s the same Jootle as your web and Telegram. Same memory, same projects, same artifacts. Discord is just another window onto it — with the bonus that your Jootle can also do real work on the server.

A DM to your Jootle is a private conversation, just like web chat but in Discord.

Each member’s DM is their own scope. Privacy: you can’t read your colleague’s DMs with your Jootle, even on a team instance. Everyone is talking to the same Jootle, but the conversations are separated.

By default, your Jootle silently ignores DMs from anyone who isn’t a known team member. This prevents random Discord users from being able to chat with it just because they share a server. To grant access, ask your Jootle to “link this Discord user to my account” or have your admin add them via the People page in the dashboard.

When you @-mention your Jootle in a Discord channel, it sees the message and can reply.

@Jarvis can you summarize this thread and post the summary?

@Jarvis turn this into a task on the redesign project.

@Jarvis what’s the status of the partner portal sprint?

Your Jootle only sees messages it’s @-mentioned in (or DMs). It does NOT read all channel chatter — that’s a deliberate privacy default. Future versions will add an opt-in “passive listening” mode for channels where you want your Jootle to observe + extract context without responding to everything.

Action capabilities are grouped by safety tier. Non-destructive actions execute immediately; destructive ones require your explicit approval before they run.

These actions are safe to take at any time. Jootle fires them as soon as you ask.

  • Send a message to a channel — “post a hello to #general”. Supports file attachments: “send the rendered banner to #announcements” attaches the image from your library.
  • React to a message with an emoji — “add a 👀 reaction to that message”.
  • Pin or unpin a message in a channel.
  • Generate an invite link for a channel — “make a 1-use invite to #general that expires in 1 hour”.
  • Create a new text channel“create #leadership-test in the Engineering category”. When no category is specified, the channel is placed under “Text Channels” if that category exists.
  • Create or edit a role“create a ‘Test Squad’ role, blurple color, hoisted and mentionable”. Edits are idempotent: asking again with different settings updates the existing role.

These actions could cause harm if misfired (deleted channels can’t be undone; kicked members lose access). Jootle never fires them blind. Instead, it generates an approval gate with a token and shows you an inline Approve / Reject button card in chat. Click Approve and the action runs; click Reject (with optional reason) and it’s recorded as refused.

  • Change channel permissions — denying send_messages for a role, granting access, etc.
  • Kick or ban a member — removes them from the server. Bans prevent re-joining.
  • Delete a channel — irrevocable. The gate prompt includes an impact preview (channel name, recent message count, member count) so you can see what you’re about to lose.

Gates expire in 30 minutes. If you approve from Discord/Telegram DM instead of clicking the button, type /approve <token> exactly as your Jootle showed you — embedded /approve inside a longer message won’t work (a security rule that prevents injection attacks).

Categorically refused — won’t fire even with approval

Section titled “Categorically refused — won’t fire even with approval”

A few actions are blocked outright. No “are you sure?” prompt, no override:

  • Posting environment-variable-shaped content (e.g. DATABASE_URL=...) to any channel — prevents credential leaks through paste mistakes.
  • Removing your Jootle’s own admin role — would lock you out of management.
  • Demoting the server owner — protects continuity of control.
  • Deleting the entire server — definitionally unrecoverable.

Asking your Jootle to do any of these returns a refusal and an audit entry. The refusal isn’t shown as a security event to other users; only operators see it.

Notification channels — where your Jootle posts

Section titled “Notification channels — where your Jootle posts”

Beyond responding to your DMs and mentions, your Jootle can proactively post to channels you designate. Configure these on the Integration Settings page for the Discord integration, under the Channels tab.

  • task_progress — when your Jootle runs a multi-step task, a live progress card appears in the chosen channel and updates in place as steps complete. Useful for keeping a team channel apprised without asking.
  • task_completion — final result posted when a task finishes (success or failure).
  • gate_pending — the approval card appears in this channel, not just in your DM. Useful when you want a team-visible audit trail of destructive actions.
  • anomaly_signal — fired when your Jootle detects something off (rate limit breach, repeated injection attempts, etc.). Best routed to an #alerts or #ops channel.

Each event type can be subscribed to a different channel. Multiple channels can subscribe to the same event.

The Integration Settings page has a Members tab that lists everyone your Jootle can see in your server. Each Discord user shows up as:

  • Linked — the Discord user is tied to a Jootle actor (a real person your Jootle knows about). Your Jootle recognizes them across Discord, email, Telegram, and web as the same identity.
  • Unmapped — your Jootle has seen them in the server but doesn’t know who they are. Their DMs are silently ignored by default.
  • Ignored — explicitly marked as a non-team member. Your Jootle won’t respond to them.

You can link a Discord user to an existing actor, create a new actor and link them, or mark them as ignored. Conversational shortcuts work too: ask your Jootle to “link @Bob to a new contact” and it’ll handle it.

When a member is kicked and rejoins later, their actor link survives automatically. They show up on the Members tab as linked from the moment they rejoin, with no manual relinking needed.

Rules — behavioral guidance per integration

Section titled “Rules — behavioral guidance per integration”

The Rules tab on Integration Settings lets you set behavioral guardrails your Jootle applies on every Discord message. Examples:

On the Discord (your-server-name) integration, don’t share company financials.

On this integration, always reply in a thread instead of the main channel.

On this integration, refuse to post if anyone besides me asked.

Rules are best added conversationally — tell your Jootle directly and it’ll write the rule into the Rules tab. Rules are enforced as soft constraints (your Jootle interprets and applies them per-message); severity can be set to enforced (hard refusal if violated) or advisory (warn-and-proceed).

Be explicit about which integration. The chat sidebar doesn’t always know what page you’re viewing — saying “on the Discord (Acme) integration” is clearer than “on this integration”.

  • Destructive actions are rate-limited to 5 per hour per integration. Hits the limit and the 6th attempt returns rate_limited with a retry-after hint. Resets continuously (sliding window). Designed to slow down a runaway loop, not block legitimate ops.
  • Action audit trail — every Discord action attempt is logged with outcome (success / denied / gated / failed / rate_limited / denylist / expired). Ask your Jootle for a summary: “show me what Discord actions ran in the last hour”.
  • Your Jootle can’t change its own Discord permissions or those of higher-ranked roles — standard Discord constraint. If something doesn’t work, check your Jootle’s role position in your server’s role hierarchy.

Your Jootle’s Discord bot user needs specific permissions to do its job. When you add it to a server, request these:

  • View Channels — read which channels exist.
  • Send Messages + Send Messages in Threads — post replies.
  • Manage Messages — pin, react, edit own messages.
  • Create Instant Invite — generate invite links.
  • Manage Channels — create new text channels.
  • Manage Roles — create / edit roles.
  • Kick Members + Ban Members — for the gated removal flow.
  • Read Message History — see prior context when @-mentioned in a thread.
  • View Audit Log — surface server-side audit trail to operators when investigating.

Without these permissions your Jootle still works for the actions it CAN do; you’ll get “missing permissions” errors for the ones it can’t.

To connect: on your Jootle dashboard, go to Integrations, click Add Integration, choose Discord, and follow the OAuth flow. Once installed, your Jootle appears in your server and starts responding to DMs and mentions.

A few things that come up:

  • “channel not found” when I asked my Jootle to post to #general — if your Jootle is in multiple Discord servers, you need to disambiguate. Say “post to #general on the Acme server” (or whatever the server is named). With only one server connected, this isn’t an issue.
  • My Jootle doesn’t reply when I @-mention it — check it has Read Message History permission in that channel. Also: in voice channels, your Jootle doesn’t see text messages by default.
  • My approval /approve <token> didn’t work — type the command EXACTLY as your Jootle wrote it, with no surrounding text. Embedded /approve inside a longer sentence is intentionally rejected as a security measure. Or just use the Approve / Reject buttons in the web sidebar.
  • My Jootle tried to do something I said and replied that it didn’t have a way to do that — Jootle’s Discord capabilities are listed above. If you wanted something that isn’t there (welcome messages, reaction roles, polls, voice transcription), those are on the roadmap.

These are real capabilities other Discord bots offer and that Jootle plans to add. They aren’t shipped today:

  • Welcome / farewell messages — auto-greet new members or log departures.
  • Reaction roles — react with an emoji to opt into a role.
  • Native Discord polls — start a poll from chat.
  • Scheduled recurring channel posts — “every Monday at 9am, post a standup reminder to #engineering”.
  • Voice channel transcription and summarization — join a voice channel, transcribe in real-time, summarize after.
  • Passive listening modes — observe channel chatter without responding, extracting team context into the knowledge graph.

If any of these matter for your use case, tell your Jootle and it’ll record it. The roadmap is informed by what customers actually ask for.