Privacy
Short, because the bots have almost nothing to hide: a few settings and counters, trivia scores, no message reading, no outside services.
What the bots store
Everything is kept in data/, on the machine that runs the bots:
companions.json: per-server settings (channel, language, frequency, quiet hours, question of the day, trivia and poll switches).usage.json: daily counters only, meaning how many conversations of each kind were started and engaged. No messages and no user ids.custom.json: the questions, jokes, facts and polls your managers added.scores.json: the Discord user ids of people who answered a trivia round correctly, with their points per week.voice.json: minutes people spent in the voice room the companions sit in: user ids with minutes per week./voice forgeterases a person's entries.praise.json: the names (never IDs) typed or picked for /khen and /che, with how many times each was cheered or teased, for the current week onlybirthdays.json: a birthday a member saved with /sinhnhat: the user id, the display name, the day and the month (no year). They erase it with /sinhnhat remove.reminders.json: waiting reminders and event countdowns, meaning the text typed and the author's user id. Each entry is deleted once it is delivered or cancelled.backups/: a copy of the files above, taken once a day. The newest 7 days are kept, so an erased person's entries also disappear from the backups within a week.
User ids are stored in scores.json, voice.json, reminders.json and birthdays.json and nowhere else. Each person can erase their own scores with /trivia forget their voice time with /voice forget and their birthday with /sinhnhat remove. Nothing else about a person is stored, and no message is ever stored.
What the bots do not do
- They do not read message content. The only intents they use are
Guilds,GuildMessagesandGuildVoiceStates: no message content and no members intent. They only notice that someone wrote, replied or joined the voice room. The one exception is the optional AI mode described under Third parties. - They never speak, play or listen in voice. They just sit in the room, with no mute or deafen icon, and receive no audio.
- They send nothing to outside services, except a short health message (a bot is offline, a voice join keeps failing) to a webhook that you set yourself, which never contains member data. The banks of questions, jokes and fun facts (about 1,250 fun facts and about 300 trivia questions in each language, checked and filtered) are written into the repo.
- They do not pretend to be human: the bots keep Discord's BOT tag.
Self-hosted means you are responsible
This project runs on your own machine. The data lives there, you manage it, and you are responsible for your own server. Tell your members what these bots are, and keep the frequency modest.
Third parties
Optional AI mode: it is off unless the host sets a Gemini API key and a manager turns it on with /companions ai replies or /companions ai daily. With replies on, when someone mentions a bot or replies to it in the companions channel, that single message (up to 500 characters, with no name or id) and, for a reply, the bot's own earlier message are sent to Google's Gemini API to write an answer. Discord gives a bot the text of a message only in that case. Nothing is stored here, and what Google does with it is covered by Google's own terms. The daily post sends no member data at all, only a request to write a riddle. Turn either off with the same command.
Discord processes messages and commands under Discord's own policies. This website is static, has no tracking, and only remembers your light or dark theme choice in your own browser.
Deleting it
Anyone can erase their own trivia scores with /trivia forget and their voice time with /voice forget. To remove everything, delete the files in data/ (companions.json, usage.json, custom.json, scores.json, voice.json, reminders.json) on the machine that runs the bots, or remove the bots from your server. That is the whole procedure.
Contact
Questions or bugs? Open an issue in the repo:
GitHub: companionsDISCORD • nhaajtt • Instagram: @nhaajt_hehee