Sodium documentation
Sodium is an all-in-one bot for Discord: moderation, AI moderation, logging, tickets, a welcomer, a message builder and analytics. Almost everything below is configured from the dashboard - a handful of moderation actions run as slash commands, and nothing here needs hosting or code.
Getting started #
Adding Sodium takes about two minutes. You need the Manage Server permission on the server you want to add it to.
- Open the dashboard and sign in with Discord.
- Servers where Sodium is already active appear first. Servers you can add it to appear under Add Sodium.
- Pick a server, accept the permission prompt, and Sodium joins instantly.
Sodium does nothing until you enable a system. Adding the bot is safe - no messages are scanned and no events are logged until you turn a feature on.
Permissions #
Sodium requests a focused set of permissions when you add it. Each maps to a system you can use:
| Permission | Used for |
|---|---|
Moderate Members | Timeouts issued by the moderation and AI systems. |
Kick / Ban Members | Kick, softban and ban actions and their cases. |
Manage Messages | Deleting flagged content and proof messages. |
View Audit Log | Attributing server events to the right actor in logs. |
Manage Webhooks | Posting clean, branded log embeds to your channels. |
Manage Channels / Manage Threads | Opening and closing ticket channels. |
Manage Roles | Toggling reaction roles from message buttons. |
Send Messages / Embed Links / Attach Files | Welcomer greetings, generated images and message templates. |
Sodium can only act on members below its own highest role. Keep the Sodium role above the roles you want it to moderate.
The dashboard #
The dashboard is where every server is configured. After signing in you'll see two groups:
- Your Sodium servers - servers where the bot is already a member. Select
Configureto manage its systems. - Add Sodium - servers you manage where the bot isn't yet. Select
Inviteto add it to that exact server.
Only servers where you hold Manage Server or Administrator are shown - the same gate Discord uses for adding bots.
Fetching server data
Channel and role pickers in the workspace read from a saved snapshot of your server rather than calling Discord on every page load, which keeps the dashboard fast and avoids rate limits. If you've just created a channel or role and don't see it yet, press Fetch data at the top of the sidebar to pull a fresh copy. Refetching is limited to once every 30 seconds.
Moderation & cases #
Every moderation action is recorded as a numbered case with the moderator, target, reason, optional duration and up to two proof images.
Actions
Sodium supports warn, timeout, kick, softban and ban, each as a slash command your moderators run in Discord. Every command takes a reason, an optional duration and up to two proof images:
# time a member out for an hour with a reason
/mute user:@Nova reason:spamming in general duration:1h
The timeout command is /mute. Everything else about the system - per-action defaults, requiring a reason, deleting the proof message, immunity - is set from Moderation in the dashboard, so your whole team stays consistent without memorizing flags.
Immunity
Protect staff from automated punishment by marking roles or individual users as immune in the dashboard. Immune targets are skipped by both the manual and AI moderation paths.
| Setting | Effect |
|---|---|
immune_roles | Members with any listed role are never auto-punished. |
immune_users | Specific users are never auto-punished. |
force_reason | Blocks an action until a reason is supplied. |
delete_proof_message | Removes the offending message once the case is filed. |
AI moderation #
AI moderation scores content as it arrives and acts when your thresholds are crossed. It runs on three scan types, each toggled independently:
- text - message content for harassment, hate and other categories.
- image - attachments and embeds for NSFW and graphic content.
- scam - links and message patterns matching known scams.
Rules
You build rules under Moderation → AI moderation in the dashboard. A rule binds a category and a threshold (0–1 confidence) to an action - a higher threshold means the model has to be more certain before Sodium acts. For example, a rule can time out anyone whose message scores 0.80 or higher for harassment, or delete an image that scores 0.90 for graphic content. Each scan type keeps its own set of rules.
Start permissive. Set thresholds high (0.85+) and the action to warn, watch the logs for a few days, then tighten. Every AI action is filed as a case, so nothing is invisible.
Logging #
Logging routes server events to channels you choose. Each of the eighteen event types can go to its own channel, so message logs and member logs never crowd each other.
Event types
messages · members · roles · channels · threads · voice · invites · webhooks · emojis · stickers · scheduled events · polls · automod · stage · soundboard · applications - and more.
Exemptions
Silence the noise you don't need. Exempt channels, roles or users from logging entirely:
| Exemption | Effect |
|---|---|
exempt channel | Events in that channel are never logged. |
exempt role | Actions by members with that role are skipped. |
exempt user | A specific user's events are skipped. |
Tickets #
Tickets let members open a private channel with your staff. They're tracked from the same dashboard as everything else, so support lives next to moderation instead of in a second bot.
- Members open a ticket from a panel button or select menu - you build the panel under Messages and post it to a channel from the dashboard.
- Sodium creates a private channel and pings your staff roles.
- Closing the ticket (or running
/ticket close) saves a transcript, then removes the channel.
Transcripts & ticket logs
When a ticket closes, Sodium renders the whole conversation - messages, embeds and attachments - into a styled HTML transcript that looks like the original chat. Open Tickets → Ticket logs in the dashboard to see recent open and closed tickets and to view or download any transcript.
Transcripts are kept for 14 days after a ticket closes, then deleted automatically. Download the ones you want to keep before they expire.
Welcomer #
The welcomer greets people as they arrive and marks the moments that matter. It sends a message on three events, each configured and toggled on its own:
- Welcome - when a member joins the server.
- Leave - when a member leaves or is removed.
- Boost - when a member boosts the server.
Message content
Each event can send plain text, an embed, a generated image, or any combination. Text and embed fields understand variables that are filled in per member when the message sends:
| Variable | Becomes |
|---|---|
{user} | The member, as plain text. |
{user.mention} | A ping of the member. |
{user.name} | The member's display name. |
{server} | The server name. |
{count} | The current member count. |
Dynamic images
Under Welcomer → Dynamic images you design a banner from layers - a background, text and the member's avatar - and attach it to any event. Sodium renders it fresh for each member, dropping in their avatar and name. Use Simulation to preview an event, and Send test to fire a real message to your channel with your own account.
Messages #
Messages is a shared builder for rich embeds with buttons and dropdowns. You design a message once as a template, then reuse it wherever Sodium sends messages on your behalf.
- Ticket panels - the message members click to open a ticket. A button can open a ticket, a dropdown can offer several ticket types.
- Reaction roles - buttons that toggle a role on and off for whoever presses them.
- Sticky messages - a template that Sodium keeps pinned to the bottom of a channel, reposting it as the conversation scrolls.
Buttons carry an action - toggle a role, send another template, open a ticket, or link out. Templates share the same variables as the rest of Sodium, so {user.name}, {server} and {ticket.number} resolve when the message is sent.
Analytics #
Analytics shows how your server is doing over time - message and voice activity, membership growth, and where new members come from. It's on by default and needs no setup; numbers begin appearing within a minute of activity.
| Metric | What it tracks |
|---|---|
| Messages | Messages sent per text channel, per day. |
| Voice | Time spent and sessions per voice channel. |
| Membership | Joins, leaves and net growth. |
| Invites | How many joins each invite link brought in. |
Analytics only ever stores counts - never the content of anyone's messages. Daily totals are kept for 180 days, then dropped automatically.
Commands #
Sodium is configured almost entirely from the dashboard - these are the only slash commands, and each shows only to members with the matching Discord permission. Everything else (cases, immunity, AI rules, log routing, ticket panels, welcomer and analytics) lives in the dashboard.
| Command | Description |
|---|---|
/warn | Warn a member and open a case. |
/mute | Time a member out for a duration. |
/kick | Kick a member and open a case. |
/softban | Ban and immediately unban to purge recent messages. |
/ban | Ban a member and open a case. |
/ticket close | Close the current ticket and save a transcript. |
/ticket claim | Claim the current ticket for yourself. |
/ping | Check bot and database latency. |
FAQ #
Is Sodium free?
Yes. Adding Sodium and using its core systems is free. Subscriptions unlock higher limits on some servers.
Does Sodium store my messages?
Almost never. Moderated content is scored in transit and discarded - only cases and the logs you configure are persisted. Analytics keeps counts (how many messages, not what they said) for 180 days. The one exception is tickets: when a ticket closes, its conversation is saved as a transcript for 14 days so your staff can review it, then deleted automatically.
What happens if I remove Sodium?
All of that server's settings, cases and logs are deleted automatically. Re-adding starts clean.
