RollerBoi — Privacy Policy
RollerBoi (“the bot”) is a Discord application and companion web dashboard built for the RollerCoin community. This policy describes what data the bot handles, why, who it is shared with, how long it is kept, and how to have it deleted.
Who is responsible
RollerBoi is operated by Captain Jellybones (“we”, “us”) as an independent community project. We are the data controller for the data described below.
Independence. RollerBoi is not operated by, affiliated with, endorsed by, or sponsored by RollerCoin or its operators. The person who runs RollerBoi is a RollerCoin player and a volunteer moderator on the official RollerCoin Discord server, and acts in a personal capacity only. RollerBoi is likewise not affiliated with or endorsed by Discord Inc.
Contact us — for privacy requests, bug reports, feedback, or to report misuse of the bot — at github.com/CaptainJellybones/RollerBoi-Public.
What we collect
Discord identifiers
User IDs, server (guild) IDs, channel IDs, role IDs and message IDs. These are the handles the Discord API gives us and are needed to run every feature. For each server the bot is in we also store its name, icon and owner ID, so the dashboard can show you the servers you manage.
Our database does not hold member usernames or avatars. Where the dashboard displays them, they are fetched live from Discord at the moment of display and held only in a short-lived memory cache. The one exception is your own dashboard sign-in, described below.
Server configuration
Which features a server has enabled, per-feature settings chosen by its administrators (channels, roles, reward layouts, scoreboard themes and similar), and which roles that server designates as moderators.
Moderation and administration log
Actions taken by server staff, in the dashboard or through staff commands: who did what, to
what, and when. Stored as Discord user IDs plus a short description. Where a moderator types a
reason — for example when timing someone out with /mute — that reason, and any
public note they post with it, is kept with the entry. Members’ own messages are never
recorded here.
Ordinary member activity — chatting, playing games, winning prizes — is not written to this log, with one exception. If a server has switched on the optional AI Chat feature, each reply the bot sends is recorded: the user ID of the member who addressed it, the channel ID, the time, which AI model answered, how long the reply was, and — where support mode is on — how many knowledge base articles matched and how closely. What was said is not recorded, by the bot or by us, and neither is what was searched for.
Competition and prize data
- Sign-ups. When you enter a competition you submit your public RollerCoin profile link. We store it alongside your Discord user ID so prizes can be paid out to the right account.
- Duplicate checks. We compare submitted profile links within a competition to detect one person entering through several Discord accounts. Where a match is found we record the profile ID and the Discord accounts involved, for a moderator to review.
- Disqualifications and competition bans. If a moderator disqualifies an entry, we record that decision, who made it, and the accounts affected.
- Promo-code claims. When you win a code we record that you won a specific code (by internal code ID), and when. We never log or display the code value itself in readable form.
Content you or your moderators submit to a feature
A small amount of content is stored because the feature cannot work otherwise. We list it explicitly rather than claiming we store none:
- Scheduled announcements — the message text a moderator writes with
/schedule messageis stored until the message has been posted, so it survives a restart. - Game guesses — the words you submit while playing RollerCoindle are stored for the duration of that event so your board and score can be shown.
- Promo-drop challenges — the prompt and accepted answers an administrator sets up for a drop.
- Tournament entries — the RollerCoin username and character build a player submits when joining a tournament.
- Knowledge base articles — if a server switches on the AI Chat feature’s support mode, the questions and answers its moderators write for the bot to answer from. This is content the server’s staff author, not anything taken from members’ messages.
- Recent AI Chat exchanges — if a server switches on that feature’s short-term memory, your last few messages to the bot and its replies, so a follow-up question makes sense. See the next section for exactly where that is held and for how long.
Short-term AI Chat memory
Off unless a server’s moderators switch it on. When it is on, the messages you address to the bot in a channel — and only those — are kept briefly so it can follow a conversation:
- Held in our Redis cache only. It is never written to the database, the moderation log or our server logs.
- Kept separately for each person in each channel, so nobody else’s conversation is ever mixed into yours.
- Limited to the last few exchanges — older ones are dropped as new ones arrive — and the whole window is deleted automatically after a period of inactivity a server sets, 30 minutes by default and never more than 3 hours.
- Mentions are already replaced by placeholders before anything is stored, so no Discord user IDs are kept here either.
- Members on the feature’s opt-out list are ignored before any of this happens, so they have nothing stored.
- A moderator can clear every stored window in their server immediately from the dashboard, and will do so on request.
Random picks
The /pick command draws a winner from a list of entries: names a moderator
types or uploads as a .txt/.csv file, the members holding a role,
the people currently in a voice channel, or the people who reacted to a message. For a role,
the bot reads the server’s member list from Discord and keeps only the ID and display name of
members holding that role. The entries are held in memory only while the pick’s buttons stay
live — 15 minutes at most — and are then discarded; they are never written to our database.
The names are drawn on the wheel image the bot posts in the channel.
Scam protection
If a server runs the optional Scam Shield feature, we store hashes of the scam images its moderators have blocked — a 64-bit numeric summary of a picture that cannot be turned back into the picture. We do not store the images themselves, the messages they were posted in, or filenames. When a post is removed, the moderation log records who posted it, in which channel, and how confident the match was — never the content.
Dashboard sign-in
If you sign in to the web dashboard, Discord’s OAuth flow gives us your user ID, username, avatar, the list of servers you can manage, and an access token that lets the dashboard ask Discord for that list on your behalf. These are stored in a session row in our database, paired with a cookie in your browser, so you stay signed in. Signing out deletes the session and everything in it; otherwise it expires automatically after 7 days.
What we do not collect
- General message content. Some features read messages as they arrive so they can react — auto-replies, secret-word drops and the optional AI Chat feature. Those messages are processed in memory and discarded: message content is never written to our database or to our logs. (The community-vote feature and chat drops react to a message arriving without reading what it says.) The one exception is the optional AI Chat short-term memory described above, which holds messages addressed to the bot in our Redis cache for a short time — still never in the database or the logs.
- Behavioural profiles. We do not track when you are online, build activity patterns, infer your location, or profile your relationships with other users. An earlier version of the weather feature recorded activity hours to guess a timezone; that was removed and the stored data deleted.
- Passwords. We will never ask you for one — dashboard sign-in happens at Discord, not here. The only credential we hold is the Discord-issued access token in your dashboard session described above, and it is destroyed with that session.
- Payment or financial information.
- Special-category data (health, biometrics, beliefs, and similar).
- Readable promo-code values. Codes are encrypted at rest with AES-256-GCM and decrypted only in memory, at the moment one is delivered to its winner.
How we use it, and our legal basis
We use this data only to operate the bot’s features for the server that invited it. Under the GDPR our lawful bases are:
- Legitimate interests — running the bot, delivering prizes, keeping a moderation record, and preventing abuse of prize competitions (such as one person entering through multiple accounts).
- Consent — where you voluntarily submit something to take part, for example entering a competition with your profile link or joining a tournament.
We do not sell, rent or license your data. We do not share it with data brokers, advertising networks or any other monetisation service. We do not use it to train machine-learning or AI models. We do not use it to profile you, to discriminate against you, or to make decisions about your eligibility for anything outside the bot’s own features.
Who we share it with
This is the complete list of parties that receive any data through RollerBoi.
| Recipient | What reaches them | Why |
|---|---|---|
| Discord | The API requests the bot and dashboard make to Discord, and whatever the bot posts in your server | Discord is the platform the bot runs on. Their handling is covered by Discord’s Privacy Policy. |
| Google (Google Sheets, via a service account under our Google Workspace) | For the Ban Roulette feature only: the Discord usernames, RollerCoin profile links and team names in the sign-up sheet a server administrator connects, plus the pass/fail result the bot writes back. The sheet is the administrator’s own document. The bot reads a row, matches the username to a Discord account, and does not keep the username afterwards. | Server administrators run these sign-ups on a Google Sheet; the bot reads it and writes back whether each row was applied. |
| OpenWeatherMap | A city name and country code only — chosen from a fixed list inside the bot. Nothing identifying you is sent. | To look up current weather for the /weather command. |
| Groq (Groq Cloud, United States) | For the optional AI Chat feature only. Two cases, and nothing else from the channel
is sent in either — no Discord user IDs, usernames or avatars are sent, and all
mentions are replaced by placeholders first:
|
To write the bot’s reply. Groq’s published terms state that customer inputs and outputs are not used to train or fine-tune AI models; that is their commitment, not something we can verify. We keep none of the text: the message is sent, the reply is posted, and neither is written down. A record that a reply happened is kept in the administration log described above. |
| RollerCoin (public website) | Two cases, neither of which sends anything about you:
|
To draw a player’s avatar, and to let the bot answer game questions from RollerCoin’s own FAQ rather than guessing. Answers taken from it link back to the page they came from. |
| Cerebras (United States) — fallback only, and only if configured | Exactly the same message content described for Groq above, and only when Groq has temporarily refused the request because the bot has hit its rate limit. If the operator has not configured this fallback, nothing is ever sent to Cerebras. | To write the bot’s reply when the primary provider is unavailable, instead of the bot going silent. Cerebras’ published privacy policy states they do not retain inputs and outputs from their inference services, with no exception for free usage. As with Groq, that is their commitment rather than something we can verify. |
| Giphy (United States) | For the optional AI Chat reaction-GIF feature only, and only when a server switches it on. A short search phrase the bot chose for itself, such as “shrug” or “popcorn”. No part of your message, and nothing identifying you, is sent — the bot decides on a reaction and searches for that phrase alone. | To fetch a reaction GIF to attach to a reply. Results are limited to Giphy’s G or PG content ratings, set by the server. |
Beyond these, we share data only where we are legally required to, or where you expressly ask us to.
Where your data is held
The bot, the dashboard and their databases run on a single server hosted in Stockholm, Sweden (Oracle Cloud Infrastructure, eu-stockholm region) — inside the EU/EEA. Google Sheets data is processed under our Google Workspace agreement. If a server switches on the optional AI Chat feature, the messages that address the bot are sent to Groq in the United States (or, only if Groq is rate-limiting us and the fallback is configured, to Cerebras, also in the United States) to generate a reply. They are not written to our database or logs; the only copy we hold is the optional short-term memory in our Redis cache described above. Giphy, also in the United States, receives only the bot’s own short search phrase.
How long we keep it
| Data | Kept for |
|---|---|
| Promo drops, claims and encrypted codes | 90 days after a drop finishes, then automatically purged |
| Everything belonging to a server | Deleted 30 days after the bot is removed from that server. Re-inviting it within 30 days cancels the deletion. |
| Dashboard sessions | 7 days, or until you sign out |
| Live game state (RollerCoindle events, spin state) | Expires automatically — between 90 minutes and 7 days depending on the item |
/pick entries (memory only) | Discarded when the pick’s buttons expire — 15 minutes at most, or sooner if the bot restarts |
| Short-term AI Chat memory (Redis only, off by default) | Expires automatically after a period of inactivity set by the server — 30 minutes by default, never more than 3 hours. A moderator can clear it sooner. |
| Server configuration | Until changed by an administrator, or the server deletion above |
| Moderation log, disqualifications and competition bans | Retained while the bot is in the server — these are the server’s accountability and anti-abuse record. They are then removed with everything else in the 30-day deletion above |
Your rights and how to delete your data
If you are in the EU/EEA or the UK you have the right to access, correct, delete, restrict or object to our processing of your data, and to receive a copy of it. Those rights are guaranteed by law in those places; as a matter of practice we offer the same access and deletion process to everyone, wherever they are.
Asking for deletion
You can either:
- Ask an administrator of the server in question. They can erase your data for that server from the dashboard, which deletes your promo-claim records and your competition sign-ups (including the profile link you submitted) and removes you from any duplicate-check records.
- Or contact us directly at github.com/CaptainJellybones/RollerBoi-Public. Tell us your Discord user ID and which server, and we will deal with verified requests as soon as we reasonably can.
What a deletion does not remove, and why
If you are subject to an active competition ban or have a recorded disqualification, we keep that record. A ban exists precisely to stop the banned person re-entering, so deleting it would defeat the measure it records; we rely on our legitimate interest in preventing abuse of prize competitions. It holds only your Discord user ID and the reason. Entries in the moderation log that record what a moderator did are likewise retained as the server’s accountability record. If you think a ban is wrong, ask a server administrator or contact us — having it lifted is the remedy here.
Other ways to stop the bot processing your data
- Don’t enter competitions — sign-up data is only created when you submit it.
- Sign out of the dashboard to clear your session.
- Server administrators can disable any feature, or remove the bot entirely.
- For the AI Chat feature: don’t
@mentionthe bot, or ask a server moderator to add you to that feature’s opt-out list — listed members’ messages are never sent to the AI provider, even if they mention the bot. You can also ask a moderator to clear the short-term memory described above; it takes one click in the dashboard and applies immediately.
If you believe we have handled your data improperly, you may complain to your local data protection authority. In Sweden this is the Swedish Authority for Privacy Protection (IMY).
Security
- Promo codes are encrypted with AES-256-GCM before being written to the database; the bot refuses to start without a valid encryption key.
- The server’s storage volumes are encrypted at rest by the hosting provider.
- The database is not publicly reachable and is access-controlled.
- The dashboard is served over HTTPS with hardened session cookies and standard security headers.
- Secrets are held in the server environment, never in the codebase.
If we become aware of unauthorised access to your data we will act on it without delay. We will notify affected users where the law requires it, Discord as our developer agreement with them requires, and the relevant supervisory authority where that is required.
Children
RollerBoi is not directed to anyone under 13, or under the minimum age required in their country, consistent with Discord’s Terms of Service. We do not knowingly collect data from such users. If you believe a child’s data has reached us, contact us and we will delete it. RollerBoi contains no age-restricted (18+) material.
Changes
We may update this policy. The “last updated” date above always reflects the current version, and material changes will be announced in the servers where the bot operates.