Privacy Policy
Last updated: November 1, 2026
1. What we collect
When you log into the dashboard with Discord, we receive and store:
- Your Discord user ID, username, global display name, and avatar — used to identify you in the dashboard;
- An encrypted copy of your OAuth access and refresh tokens — used only to keep you signed in, to check, on Discord's servers, which of your Discord servers you have Manage Server permission on, and to add you to the SolsBot support server when you ask to join it (the “join servers for you” permission Discord shows at sign-in). We never add you to any other server;
- Whether you, and the owner of a server you manage, are in or boosting the SolsBot support server — checked with Discord when needed (and kept for about a minute) to unlock perks such as higher sync limits, webhook options and the AI Chat cooldown. It isn't stored beyond that;
- The IDs of the Discord servers (guilds) the bot is a member of, and the configuration you or another admin sets for them — for example, whether a module is enabled, which permission a command requires, and slowmode settings per channel;
- An audit log of configuration changes made through the dashboard or slash commands (who changed what, and when) — used for accountability and troubleshooting;
- When something on the website or in the bot goes wrong: which page or feature it was, the error message and technical details (no message content or personal details), kept so the bot owner can fix it. Only the newest 500 are kept;
- A cookie with your browser's timezone and language, so dates and times show the same way while a page loads as after;
- A random ID saved in your browser, sent (with your Discord user ID if you're signed in) every few seconds while the website is open, so the operator can see how many people are on it right now. It's held in memory only, never stored. The website also keeps one running count of total visits, with nothing about who visited;
- If a server admin lists their server on the public Server List: the description and tags they write, the invite channel and the permanent invite SolsBot makes for it, and the Discord user ID of whoever listed it. The listing (with the server's name, icon, banner and member count from Discord) is shown publicly on /servers until it's taken off the list. Its About page there also shows the server's own Discord description, online count, creation date, boost level, language, the names of a few channels everyone in it can see and its emojis. Unless its admins turn the preview off, anyone can also open a preview of the server there, like Discord's own: the channels everyone in it can see, the latest messages in one of those (only channels where everyone can read the history) and the member list. It's read live from Discord when someone looks, not stored;
- If you're banned from SolsBot itself by its owner: your Discord user ID, the reason given, who banned you, what the ban covers and when it ends. Kept only while the ban lasts, and deleted when it ends or is lifted. Used to refuse the dashboard, commands or other features the ban covers, and to tell you why.
2. Message content, only when a feature needs it
The bot only looks at message content for features a server's admins have turned on, and only in the channels those features cover:
- Logging keeps a short-lived copy of messages (text, author, channel) so it can show what a message said after it's edited or deleted. Copies are removed after 7 days, or as soon as the message is deleted and logged. Depending on what a server turns on, it also posts to the server's own log channels: profile changes (usernames, display names, avatars), which invite someone joined with, applications to join (with the applicant's answers) and who approved or rejected them, reactions, polls, voice mute/deafen/stream changes, and SolsBot commands used — these are posted to Discord, not stored by SolsBot.
- Tickets save a transcript of each ticket's messages when it's closed (if the server has transcripts on), and the answers to the ticket's form, including copies of files posted in the ticket (up to 8 MB each, deleted after 100 days) so they stay downloadable after Discord's links expire, and record ratings members give. A rating is shown to the server's admins and on that ticket's transcript, which anyone with the transcript link can open.
- Modmail reads direct messages sent to the bot and passes them to the server's staff channel, and passes staff replies back. The bot doesn't read any other direct messages.
- Suggestions store each suggestion's text, its author and votes, and who approved or denied it with any reason. Starboard reposts highlighted messages, including their attachments. If the server reviews them first, the review post includes the attachments too, and it keeps who wrote each one, who approved or denied it and any reason.
- Honeypot treats anyone who posts in the server's trap channel as a scam account and bans, kicks or mutes them. It saves who was caught (their user ID and username), what was done and when (the latest 200 per server) for the server's admins, and posts it to the server's log channel if it has one.
- Reaction Roles remembers which reaction-role reactions it has already handled (the message, the member and the emoji), so a restart doesn't give back a role someone removed. A record is deleted when its reaction is removed.
- Anti-Raid, Reaction Delete and Sticky Messages look at messages as they arrive (for example, to spot spam) without storing them.
- VC TTS sends the text of messages in the chosen TTS channel, with the sender's display name and the names of anyone mentioned, to Google's text-to-speech service to turn it into audio. No voice audio is ever recorded.
- Music sends what a member types into /play (a search or a link) to YouTube or SoundCloud (or to the site a pasted link points to) to find and stream the song, and reads a Spotify link's public page for the track names (then finds them on YouTube). The queue, with who added each track, is kept while music plays (saved so it can carry on after a restart) and deleted when the music stops. It stores the server's music settings (DJ roles, volume, queue size, leave timers). It only plays audio into the voice channel and never listens to or records anyone.
- Ping Guard keeps a copy of messages that ping someone (the text, author, channel and who was pinged) for 14 days, so that if the message is deleted or the ping edited out, the people pinged can be told by DM what it said. It also remembers each member's /pingnotify choice (ping DMs on, or ping and ghost-ping DMs off) in that server.
- Leveling stores each member's XP and level in a server, how many messages earned XP and how many minutes they spent in voice (never the messages themselves). If the server turns on its public leaderboard, the top members' names, avatars, levels and XP can be seen by anyone with the link. Server admins can edit or reset anyone's XP.
- Voice Rooms keeps a record of each room it makes (the channel and who controls it) until the room is deleted, which happens as soon as it's empty.
- XP Drops keeps a record of each drop it posts (the channel, the amount, when it expires) and who claimed it and when. It counts messages in its channels only in memory, to know when chat is active. Its “Recommend settings” button looks at when the last 100 messages in the chosen channels were sent (not what they say) and stores nothing.
- VC Roles checks which voice channel a member is in (joining, leaving, moving and deafening) to give and take the roles a server set for it. It stores nothing about members. If a server picks a log channel, who got or lost which role is posted there.
- Giveaways stores each giveaway (prize, settings, who hosted it and who won) and the Discord IDs of the members who entered, until an admin deletes the giveaway. Winners are announced in the channel and, if the server chooses, sent a DM.
- Server Stats counts, per day, how many messages are sent in each channel and by each member, what hour they're sent, how many people join and leave, and the member count — only the numbers, never what the messages say. The counts are deleted after 90 days, except one running total of the server's messages (a single number for the whole server, not per member). Admins see the totals and the most active channels and members on the dashboard, and anyone can see a summary with /serverstats.
- Invite Tracker saves, for each member who joins while it's on, which invite they used and who created it, when they joined and when they left, plus any invites a server's admins add to, remove from or reset on someone's count. That's how invite counts are worked out. Anyone in the server can see someone's count, who invited a member and who they invited with /invites, admins see the top inviters on the dashboard, and giveaways can use the counts. A server's admins can turn it off at any time; the records stay so counts aren't lost, and are deleted if you ask us to.
- Auto Role, if a server turns on “Restore roles on rejoin”, saves the roles a member had when they leave, and whether they left, were kicked or were banned (read from the server's ban list and audit log), to give those roles back if they join again. The saved roles are deleted when they rejoin or when the server turns the setting off.
- Boosters remembers which members are currently boosting a server and since when, so it can give and take back booster roles and post thank-you messages. A member's record is deleted when they stop boosting or leave. If a server turns on the thank-you DM, the bot sends that member one direct message.
- Custom Roles remembers which role belongs to which member. The name, colour and icon you pick live on the Discord role itself; an icon image you upload is fetched once from Discord and set as the role's icon. If the server requires approval, your request (name, colours, icon) is kept until a mod approves or denies it, and you get a DM with the result (and the mod's reason, if they give one). Your role and record are deleted when you delete it, leave the server, or stop being allowed one.
- Interested saves who pressed a post's Interested button and when, until they take it back or the post is deleted. Admins see the list on the dashboard, and if the post has a "see who's interested" button anyone in the server can see it too.
- Lockdown, while a channel or the whole server is locked, saves who started it, the reason they gave and which channel permissions it changed, so ending it can put them back. It's deleted as soon as the lockdown ends.
- Prune, while a server has it on, keeps when each member last did something there (sent a message, reacted, joined voice or used a command): only the time, never what they said. A server's admins use it to remove members who haven't been active for a while; those members can get a DM with an invite back. Removing Prune stops this, and the times are only kept for members still in the server.
- Server Backups, when a server's owner makes a backup (or turns on automatic ones), saves a copy of the server: its settings, roles, channels and permissions, emojis and stickers, AutoMod rules, who is banned (with the reason), each member's roles and nickname, the latest 200 messages in each channel (with the author's name, picture and the attachments' links) and the server's SolsBot settings and data, including members' XP, reminders, AI Chat notes, counting scores, custom roles, ping notification choices and which servers their birthday is turned on in. It's kept in SolsBot's database until the owner deletes it (automatic backups are replaced as new ones are made), and only the owner (and the SolsBot operator, for support) can see, download or restore it. Restoring a backup puts that data back as it was when the backup was made, even if a member has deleted it since.
- Looking for Team posts what a member fills in on its form, with their username and avatar, in the server's chosen channel. It saves who made each post and when (for the posting cooldown), and who pressed its Interested button. If the server turns on review, a post is held in its review channel until a moderator approves or denies it, and the decision (who made it and any reason) is kept for the server's review list. Only the poster can see that list, and if the server turns it on, the poster gets a DM saying who's interested.
- Word Blocker checks messages (and edits, and names if a server turns that on) against the server's blocked words as they arrive, without storing them. When one is removed, the message, the word and the member are posted to the server's chosen log channel, if it has one.
- Messages keeps a copy of each message a server's admins send from the dashboard (its text, embeds, buttons and who sent it) so it can be edited or deleted later, until an admin deletes it.
- Bot profile (Settings) stores the name and bio a server gives the bot (and the music bot), and who set them, so the bot can put its normal profile back if the server loses the support-server perk. Uploaded avatar and banner images are sent straight to Discord and not kept by us.
- Reminders stores each reminder a member sets with /remind — the text they wrote, when it's due, where it was set and how to deliver it — until it's sent (a one-off reminder is kept a week after that so it can be snoozed, then deleted), plus the timezone they choose (or that their browser reports when they open the “Detect my timezone” link — only the timezone name, like Europe/London, is saved). The member can cancel theirs any time, and the server's admins can see and cancel reminders on the dashboard.
- Birthdays stores the birthday a member saves (month and day only, never the year, one for every server), which servers they turned it on in and whether it's private there, and whether they turned on countdown DMs, until they remove it. A server only sees it once they turn it on there. It uses the same timezone as Reminders, so it's celebrated at their midnight, and keeps a note of each year's celebration (so it happens once) for about two years. Private birthdays aren't celebrated in the server (only its birthday DM is sent) or listed anywhere, including the dashboard.
- Counting stores where a server's count is (the last number, who posted it and that message's ID), its high score, and how many correct numbers each member has counted, for the leaderboard. Each number is re-posted through a webhook with the member's display name and avatar, and their original message is deleted.
- Question of the Day asks OpenRouter (DeepSeek) to write each day's question, and keeps the questions it posted so it doesn't repeat them. When the AI replies in a question's thread, it sends that answer and the member's display name to OpenRouter.
- AI Chat sends messages in the channels a server picks — the new message plus the channel's last few messages for context, with the authors' display names — to an AI provider (OpenRouter) to write a reply, along with any notes it remembers about the people in the conversation. Images in those messages (attachments, image links and GIFs, and images in a message being replied to) are shrunk and sent to OpenRouter too, so a vision model can describe them; only the short description is kept, in memory, to avoid describing the same image twice. If the server leaves memory on, the AI may save short notes about a member from what they tell it (like interests or what they like to be called), kept for that server only — never shared with other servers. Members can delete theirs with /forgetme, and the server's admins can view and clear them on the dashboard; they're also cleared when the server changes the AI's personality. Otherwise only how much of the server's AI allowance was used is stored, and how much of it each member used this week (shown to the server's admins on the dashboard).
- AI Assistant sends what you type in it, plus your server's name, member count, channels and roles and its SolsBot setup (settings, and items such as members' reminders, giveaways, Interested posts and followed social accounts), to an AI provider (OpenRouter) to generate replies. Your conversation is kept in your own browser.
- Development assistant (SolsBot team only, in the support server): when a team member pings it, it sends their message, the message they replied to, attachments and the people's display names to OpenRouter, and keeps the conversation in its thread so it can continue it. Images it edits with AI are sent to OpenRouter too, and so are voice messages sent to it, to be written out as text. When a team member asks it to, it can join their voice channel (or another one they name) and listen to everyone there (it posts a notice in the channel's chat first): each thing someone says is sent to OpenRouter as audio to be written out, and only the text is kept, in its thread. In talk mode it answers out loud too, sending a short version of its reply (never what people said) to Google's text-to-speech voice, the same one VC TTS uses. Silence is never sent, and it leaves when asked, after 10 minutes without speech, or when that team member leaves (if it joined their channel). It can also post messages in support-server channels when the team asks it to. When the team asks, it can also read recent messages (up to 1,000 per channel) from support-server channels it has been given access to, and sends them to OpenRouter as context. If the team sets it up to use Claude Code on its own server instead, its thread messages (and images, and voice turned into text) are sent to Anthropic's Claude for that, rather than OpenRouter. In a thread started by the SolsBot operator, it can also use the Admin Panel for them, including the support view of a server's channels, members and messages described in section 5, and the bot's own logs; what it reads there is sent to the same AI provider. Code changes it makes are saved on GitHub with the name of the team member who asked for them. The SolsBot team can download its threads to improve it. It only reads messages that ping it or that are in its own threads.
3. What we deliberately do not collect
- We don't read or store messages for any feature a server hasn't turned on. Auto-Slowmode only counts how many messages arrive, not what they say;
- We don't read direct messages other than ones sent to the bot for Modmail;
- We do not record voice audio or video (apart from the development assistant above, in the support server only, when the team asks it to listen), or collect presence/status data;
- We do not sell personal data, and we do not use it for advertising.
4. How we use what we collect
Collected data is used only to:
- Operate the features you or your server's admins turn on (e.g., applying slowmode automatically);
- Authenticate you and enforce that you can only view or change servers you actually manage on Discord, or that their owner gave your role dashboard access to;
- Keep the dashboard and the bot in sync in real time;
- Now and then, DM server owners and admins (members with the Administrator permission) a message from the SolsBot team about the Service, once per person, saying which of their servers it's for;
- Diagnose problems and prevent abuse of the Service.
5. Where data lives and who can see it
Configuration data and encrypted tokens are stored in a database operated for SolsBot. The bot process is the only component with direct database access; the dashboard never connects to the database directly and instead calls the bot's own authenticated API. OAuth tokens are encrypted at rest (AES-256-GCM) and are never displayed back to you or any other user through the dashboard.
We do not share your data with third parties except: Discord itself (as part of normal OAuth and bot API operation); the infrastructure providers hosting the bot process, the dashboard, and the database, who process it only on our behalf to keep the Service running; and, only when a server uses those features, Google's text-to-speech service (VC TTS message text), YouTube, SoundCloud and Spotify (Music searches and links, and the site a pasted link points to), OpenRouter (AI Chat, AI Assistant and Question of the Day messages, and the team's development assistant), Anthropic (the development assistant, when the team sets it up to use Claude Code), GitHub (the name of the team member who asked for a code change), and YouTube, Twitch and TikTok (Social Notifier looks up the public channels and profiles a server follows — only the channel names, never anything about you; Google's push notification service is given the IDs of followed YouTube channels so it can tell SolsBot about new uploads).
To help a server with an issue it's having with SolsBot, the operator can view that server's channels, roles and messages that the bot itself can see (fetched live from Discord when looked at, not stored; the team's development assistant can do the same for the operator, see section 2), and fix channel, permission and role settings within the bot's own permissions there, or reply in a channel as the bot. While that view is open it also shows that server's new messages, edits, deletions, reactions, who is typing (never what they type), role or channel changes, members' role, nickname and profile changes, who is in which voice channel (joins, leaves, mute, streaming), threads and pins as they happen — held in memory only while the view is open, never stored. This is only used for support. Every such view of a channel's messages and every change is recorded in the server's audit log. The operator can also use their own login's "Join servers for you" permission to join a server the bot is in.
Admins of a server using Cross-Server Roles can search the other servers SolsBot is in and see each one's name, icon and member count. If they link one, the bot gives their members a role for also being in it, so its admins can tell which of their members are in the linked server (never anything else about it, and never its other members). A server can turn this off in Settings > Privacy: it then never shows in the search, and no server gives roles for being in it.
6. How long we keep it
Session data expires automatically and is periodically purged. Logging's message copies are deleted after 7 days. Ticket transcripts and suggestions are kept like the rest of a server's data (below), unless you ask us to delete them sooner. Per-server data (settings, and records like XP, transcripts and suggestions) is kept even after the bot is removed from a server, so nothing is lost if it's added back. To delete your own data, use /privacy (see below). If you'd like your server's data deleted sooner, or want a copy of what we hold about you, contact us using the details below.
7. Your choices
- Remove the bot from a server at any time to stop it from acting there;
- Revoke SolsBot's OAuth authorization from your Discord account's connections settings at any time, which ends your dashboard sessions;
- Ask for your data to be deleted with the /privacy command (in any server with SolsBot, or in a DM with it). SolsBot DMs you what gets deleted and the servers you share with it, and asks whether it should also leave the servers you own and remove you from the servers where it has permission to (it kicks you there, so you can join again later). Your request (your user ID, those servers and your choices) is posted in a private channel in the SolsBot support server for the SolsBot team to approve or deny, and you get a DM with the result, so your DMs need to be on. Once approved, your personal data is deleted in every server: XP, your birthday, reminders and timezone, AI Chat memories, suggestion votes, giveaway entries, Interested and Looking for Team sign-ups, counting scores, ping notification settings, message stats, AI usage, invite records (you no longer count toward whoever invited you), reaction role history and your dashboard login (with beta access, if you had it), and your reactions on running reaction giveaways are removed. Bans from SolsBot and servers' moderation records (tickets, transcripts, modmail, logs, honeypot catches, recent message copies, which delete themselves after 7 or 14 days, and roles a server saved for when you rejoin) are kept, as is what you posted in a server (suggestions, posts), the giveaways you hosted or won and XP drops you claimed, copies in a server's backups (until its owner deletes them), and anything still working for you (a custom role, a booster or birthday role, a voice room) until it ends. The dashboard's change history keeps the changes you made but no longer shows your name on them. Prune's record of when you were last active is set to the time of the deletion, so you aren't counted as inactive. The request itself is removed 30 days after it's decided;
- Request access to, correction of, or deletion of other data we hold about you or your server through our support contact below.
8. Children's privacy
The Service is not directed at children and requires a Discord account, which itself has its own minimum age requirement under Discord's Terms of Service. We do not knowingly collect personal information from anyone below that age.
9. Changes to this policy
We may update this Privacy Policy from time to time. Material changes will be reflected by updating the "Last updated" date above.
10. Contact
Questions about this policy, or requests regarding your data, can be sent through our support server on Discord. For details on where the dashboard itself is hosted, see https://bot.solslfy.dev.
