The short answer: leave all three unchecked
This bot needs no privileged gateway intents. If the boxes are ticked when you open the
form — they often are by default — untick all three and submit nothing else.
bot.py builds the client with discord.Intents.default(), which excludes all three privileged
intents. The structural test harness asserts it on every release:
Why each one is unnecessary here
Server Members Intent
Grants the full member list of every server, and member join/leave events. This bot never enumerates members. Everything it does with a person happens because that person just interacted with it:interaction.user on a slash command, a button, or a modal, all of which
Discord supplies without the intent. Role granting uses interaction.user, who is by definition
present.
Presence Intent
Grants every member’s online status, activity and rich presence. Nothing in this bot reads presence. There is no “who is online” feature and no plan for one.Message Content Intent
Grants the text of every message in every server it is in. This bot has no prefix commands — only slash commands and component interactions, which deliver their arguments as structured data, not as message text. There is noon_message handler
at all.
The command_prefix is when_mentioned specifically so discord.py does not warn about the
missing intent. A string prefix like "!" makes it log “Privileged message content intent is
missing, commands may not work as expected” on every startup — true about prefix commands,
irrelevant here, and exactly the kind of warning that teaches operators to ignore warnings.
Filling in the form
Everything below that heading in the form — the per-intent justification, screenshots, and
off-platform storage questions — only applies to intents you request. With none requested, none of
it needs answering.
If you ever do need one
The likeliest candidate is Server Members, if you later add something that acts on people who have not just interacted — bulk role syncing, or granting a role to everyone who bought before a date. You would need to:- Add it in
bot.pybefore the client is constructed. discord.py reads intents when the client is built, so mutatingintentsafterwards silently does nothing. - Enable it in the Developer Portal under Bot → Privileged Gateway Intents.
- Apply through this form once you pass 100 servers, with a screen recording of the feature working.
- Update Privacy — the data you collect would have changed, and the policy is a factual description of that.