Legal · Discord apps · Developer Portal

Nefarious Widget privileged intents

Effective September 12, 2026 · Last updated September 12, 2026

Paste pack for Discord’s Privileged Intent form for Nefarious Widget. These answers match discord.Intents.none(); intents.guilds = True; intents.voice_states = True in widget_server.py. They are not MEE6’s welcome, leveling, or invite-tracking answers. The public application id is not in the widget source.

Do not apply for Message Content, Server Members, or Presence. Voice States (counting who is in one voice channel) is a standard intent, not a privileged one.

01Intent matrix

  • Message Content — NO. widget_server.py never enables intents.message_content and has no on_message, prefix, or slash-command handler. The overlay is driven by a voice-count API, not by reading Discord messages.
  • Server Members — NO. intents.members is not set. The bot does not welcome members, assign roles, or enumerate the guild member list. Occupant count comes from VoiceChannel.members, which discord.py fills from the voice-state cache after intents.voice_states = True — a standard intent, not Server Members.
  • Presence — NO. The bot never reads online, idle, DND, or streaming status. intents.presences is not set. A live count of people in one voice channel is not Presence.

Non-privileged use

  • Guilds — resolve the configured voice channel id after login
  • Voice States — on_voice_state_update refreshes len(channel.members) for that one channel

02What does your application do?

Nefarious Widget is a voice-chat counter for the Nefarious trading community’s streams. A small Discord bot joins a server, watches one configured voice channel (default id 1492973945190748411), and keeps an in-memory count of how many members are connected to that channel. A local HTTP server exposes GET /api/voice-count as JSON (ready, count, channelId, channelName, guildName, updatedAt, error). An HTML overlay polls that endpoint every five seconds and displays the number as “in voice right now” for OBS or an iframe. The client is constructed with discord.Intents.none(), then guilds and voice_states only. The bot does not read Discord messages, does not process commands, does not welcome members, does not assign roles, does not enumerate the server member list, and does not read online or streaming status. Voice States (standard, not privileged) is enough to refresh the count on join/leave. We are not requesting Message Content, Server Members, or Presence.

03Privacy Policy fields

Do you have a public Privacy Policy? Yes
Where is it available? Official Nefarious website (nefarious.trading) and this application's Discord profile.
Privacy Policy URL: https://www.nefarious.trading/legal/nefarious-widget/privacy
Terms of Service URL: https://www.nefarious.trading/legal/nefarious-widget/terms

04Message Content — do not request

Leave Message Content unchecked. Paste this if they ask why you do not need it:

We are not requesting Message Content. Nefarious Widget has no on_message listener, no prefix commands, and no slash commands. The overlay is updated from a voice-count JSON API. Enabling Message Content would not add a feature.

Can users opt out of message-content tracking?

Not applicable
Not applicable — the bot does not read member message content. Members opt out of the count by leaving the watched voice channel.

Storing message content off-platform?

No
No Discord message content is stored. The process keeps an in-memory snapshot (count, channel id/name, guild name, timestamp). It does not write occupant user ids, usernames, or chat to disk.

Used to train ML / AI models?

No

05API data stored off-platform

Store Discord API Data off-platform: No (RAM snapshot only). If the form still asks “30 days or less”: Yes — the snapshot is ephemeral.

The voice-count snapshot lives in RAM and is overwritten on every voice-state change. Operator .env holds the bot token and the configured voice channel id. There is no SQLite or member archive.

Deletion contact: Business@nefarious.trading.

06Server Members and Presence — do not request

Leave those boxes unchecked. Counting one voice channel uses Voice States, not Server Members and not Presence. If Discord asks why you do not need them:

Server Members: intents.members is not set. The bot does not welcome members, assign roles, or enumerate the guild member list. Occupant count comes from VoiceChannel.members, which discord.py fills from the voice-state cache after intents.voice_states = True — a standard intent, not Server Members.

Presence: The bot never reads online, idle, DND, or streaming status. intents.presences is not set. A live count of people in one voice channel is not Presence.

07Proof

widget_server.py sets only guilds and voice_states, refreshes len(channel.members), and serves GET /api/voice-count. It does not send or read Discord messages.

Questions: Business@nefarious.trading.

Also see our Terms of Service, Privacy Policy, and All-bot intents matrix.