Pay for one year of Premium, keep it forever.

See the offer

Privileged intents use cases

Discord keeps three kinds of data behind privileged intents: the text of messages (Message Content), the member list and its changes (Server Members), and who is online and what they are doing (Presence). This page lists every FlaviBot feature that needs one of them, with a screenshot of each feature working in a Discord server.

It is written for Discord's review team, and for owners of a custom bot, who link this page when they answer Discord's intents review. Every FlaviBot bot runs the same code, custom bots included, so everything below applies to all of them.

Two rules hold for every feature on this page. It does nothing until a server manager turns it on from the dashboard, and the bot only sees the channels the server lets it view.

IntentUsedFor
Message Contentyesautomations, server logs, counting channels, the music controller, starboard, tickets, AI characters
Server Membersyeswelcome and goodbye messages, persistent roles, invite tracking, boost and server tag rewards, member logs, join automations, server-wide role actions, permission checks
Presencenonothing: FlaviBot never requests it

Message Content

FlaviBot reads the text of a message only for the features below, and only in the channels where a server turned them on.

Automations

The autoresponder matches the text of new and edited messages against rules the server writes: contains, starts with, exact match, or a regular expression (run with RE2, so no pattern can stall the bot). Servers use it to delete scam and invite links, filter banned words and answer common questions.

Server logs

When a message is edited or deleted, the server logs show what it said before and after. Discord does not resend the old text with these events, so for servers with message logs, or with automations on edited and deleted messages, recent messages go into a temporary cache that expires on its own after 48 hours.

A log channel with three entries: the message carrying an invite link that the automation deleted, a Message Edited entry with the text before and after the edit, then a Message Deleted entry with the text that was removed

A moderator can see what a message said after its author edited or deleted it.

Counting channels

In a counting channel, members count up together. FlaviBot reads each message to check it is the next number (simple maths like 4+5 too, when the server allows it), and adds ✅ to each right one. A wrong number ends the run: FlaviBot says what went wrong, and the count starts again at 1 unless a save keeps it alive.

A counting channel where two members counted from 1 to 4, each number with a green check, then someone typed 6 and FlaviBot answered with a red cross: it expected 5, and the count is back to 1

Each right number gets a check. A wrong one ends the run.

Music controller channel

In the controller channel, members type a song name or a link, with no command, and it starts playing or joins the queue. One panel message in the channel shows what is playing.

FlaviBot's Now playing panel in the music controller channel, showing the track a member asked for by typing its name, with the playback buttons

The panel right after a member typed a song name, with no command.

Starboard

The starboard reposts a message that enough members reacted to, with its text and its first image, in a channel the server picks.

A starboard post, showing a star and the count 2, then a yellow embed carrying the original author, their message, and a footer naming the source channel

The reposted message, with a link back to the original.

Tickets

Tickets need the text of what members and staff write in them:

  • the ticket's page on the dashboard shows the conversation live, so staff can answer from the website;
  • what staff write in the private 📋 Staff notes thread is kept as a note on the ticket, still readable after the channel is deleted;
  • the transcript is built from the ticket's messages when it closes;
  • when a server turns on the AI assistant, it reads the ticket to draft an answer from the server's own knowledge base, and summarises the ticket when it closes.
A ticket's page on the dashboard, with the member's and the staff's messages on one side and the staff notes on the other

A ticket on the dashboard: the conversation and the staff notes.

AI characters

A server can create an AI character that answers when a message contains its trigger word. It reads the channel's recent messages so its reply fits the conversation. Those messages are kept in a temporary cache for 2 hours.

A member mentions the character's trigger word in a channel, and the character replies to what was being discussed

The character answers the conversation, not only the last message.

Prefix commands

FlaviBot also answers commands typed with a prefix, such as !play. They are being retired: every prefix command already tells the member which slash command to use instead, and a command that mentions the bot keeps working without this intent.

Server Members

FlaviBot uses this intent in three ways: to react when a member joins, leaves or changes, to read a server's full member list for a few actions a server manager starts, and to keep members' roles up to date.

Welcome and goodbye messages

When a member joins, FlaviBot can post a welcome message with an image card, give them roles, and send them a welcome DM. When they leave, it can post a goodbye message.

A welcome channel where FlaviBot greets a member who just joined, with the welcome card showing their avatar and the member count

The welcome message a new member sees in the server.

Persistent roles

When a member leaves, FlaviBot remembers the roles they had and gives them back if they rejoin within the period the server chooses (365 days at most). The server picks which ones: every role, a list, or the roles below a role it chooses.

The Persistent Roles page of the dashboard, with the module enabled, the roles to restore and how long they are kept

The server decides which roles come back, and for how long.

Invite tracking

FlaviBot matches each join to the invite that was used and credits the member who shared it. Self-invites, leave-and-rejoin loops and accounts that are too new count as fake. Servers use it to reward the members who bring people in.

FlaviBot's reply to /invites leaderboard, ranking the server's inviters with their regular, left, fake and bonus invites

/invites leaderboard: who brought people in, and how many stayed.

Boost and server tag rewards

Members who boost the server get a reward role, and the server can thank them with a message and a DM. Members who wear the server's tag on their profile get a role too. FlaviBot notices both through the member update event, and takes the role back when they stop.

The Server Tag page of the dashboard, with the role given to members who wear the server tag and the streak tiers

The roles a member gets for wearing the server tag.

Member logs

The server logs record members joining and leaving, and their nickname, role, avatar and timeout changes. A join line carries the account's age and the invite used, which is how moderators spot a raid.

A log channel showing a member joined line with the account age, the member count and the invite used, then a roles changed line naming the role added and who added it

A join and a role change, as the moderators see them.

Automations on joins and member changes

Automations can start when a member joins or leaves, gains or loses a role, boosts, or is timed out. Servers use them against raids and scams, for example to kick accounts younger than an age the server sets.

The Join Gate rule in the autoresponder editor: on member join, when the account is younger than the set age, kick the member

The curated Join Gate preset: new accounts are kicked before they can post.

Server-wide role actions

A few actions need the whole member list. Each one is started, or turned on, by a server manager:

  • /mass-role add gives a role to every human member who does not have it yet;
  • economy role income pays coins to every member holding a role the server chose;
  • /info boost, /info server-tag and /badge-count count the members concerned, and the dashboard buttons that give the boost and server tag roles to members who already qualified before the feature was turned on.
FlaviBot's reply to /mass-role status: the role was given to every member of the server, with none failed and none left

/mass-role status once the role has reached every member.

Permission checks

Member update events keep FlaviBot's copy of each member's roles current. The dashboard and the moderation commands check those roles to decide who may change a server's settings or sanction a member, so a moderator who loses their staff role loses those powers at once.

Presence

FlaviBot does not use the Presence intent. It never requests it from Discord, so it never receives who is online or what anyone is playing or listening to. The online count it shows comes from the approximate count Discord gives every bot.

What happens to this data

  • Nothing here trains an AI model. FlaviBot does not train or fine-tune any model with message content or member data, and does not let anyone else do so. The two AI features above, which a server must turn on, send text to Anthropic's API to write a reply or a summary, and Anthropic does not train on it.
  • Message text is not kept, with these exceptions: the temporary caches (48 hours for logs, 2 hours for AI characters, and about an hour for a 200-character excerpt when a server debugs an automation), ticket staff notes, and what the ticket assistant writes (a summary, and knowledge base entries stripped of names and personal details).
  • Members stay in control. /privacy shows each member the statistics FlaviBot keeps about them, turns them off, and explains how to have their data deleted.

The full list, with how long each thing is kept, is in the privacy policy.

Written on