Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Flyingbacen/Discord-rawrbot/llms.txt

Use this file to discover all available pages before exploring further.

Rawrbot uses Discord’s permission system in two complementary ways — the OAuth2 permissions granted when the bot is invited to a server, and per-command access restrictions enforced at runtime in the bot’s code. Understanding both helps you configure the bot correctly and know which commands your members (and you) can run in any given context.

Required Discord Permissions

The invite link requests the permission integer 2147486720. This value is the bitwise sum of all the individual permissions the bot needs to function fully. The table below maps each included permission to the commands that rely on it:
PermissionCommands That Need It
Read Messages / View ChannelsAll commands — needed to receive interactions and log channel names
Send MessagesAll commands — needed to send responses to interactions
Read Message History/random_image — scans channel history to find image attachments
Mute Members/mute — server-mutes a member in a voice channel
Deafen Members/deafen — server-deafens a member in a voice channel
Move Members/move_user, /move_voicechannel — moves members between voice channels
Manage Channels/move_voicechannel (with lock_channel=True) — sets a permission overwrite on the source channel to prevent reconnection while the move is in progress
Moderate Members/timeout — applies a Discord timeout to a member
If any of these permissions are missing, the bot may fail silently or return a discord.Forbidden error when the relevant command is invoked.

Owner-Only Commands

Some commands are restricted to specific Discord user IDs that are hardcoded directly in the source files. These restrictions are enforced at runtime — the bot checks interaction.user.id before executing the privileged action.
  • /sync — restricted to user IDs listed in bigDict["sync"]["extras"]["allowedUsers"] inside cogs/general.py. Users not in that list receive a “Missing perms” message, and the response is deleted after five seconds.
  • /timeout — the handler in cogs/moderation.py checks interaction.user.id != 717471432816459840 at the top of the function and sends an error message to anyone who doesn’t match.
  • /upload — checks interaction.user.id at runtime; users who are not the owner are redirected to use /random_image instead.
The owner user ID (717471432816459840) is hardcoded in cogs/general.py, cogs/moderation.py, and cogs/utility.py. If you are self-hosting Rawrbot, you must update these values to your own Discord user ID before running the bot. See the Self-Hosting guide for instructions on finding your user ID.

Command Contexts and Install Types

Every slash command in Rawrbot is decorated with @app_commands.allowed_contexts(...) and @app_commands.allowed_installs(...) from discord.py’s app_commands module. These decorators control exactly where and how a command can be invoked:
  • allowed_contexts(guilds, dms, group_dms) — three boolean arguments that determine whether the command can be used in guild channels, direct messages, and group DMs respectively.
  • allowed_installs(guild_install, user_install) — two boolean arguments that determine whether the command is available when the bot is installed as a server bot, as a user app, or both.
The table below shows the effective availability for every command based on the decorators in the source:
CommandGuild (Server)DMsGroup DMsInstall Type
/pingServer & User
/helloServer & User
/inviteServer & User
/popServer & User
/syncUser only
/ban_listServer only
/muteServer only
/deafenServer only
/timeoutServer only
/move_userServer only
/move_voicechannelServer only
/convertsonglinkServer & User
/searchspotifyServer & User
/translateServer & User
/random_imageServer only
/uploadServer & User
Note that /sync is unique: its contexts are set to allowed_contexts(True, True, True), so it is technically usable in guilds, DMs, and group DMs, but it is restricted to user install only (allowed_installs(False, True)). This means it can only be invoked by a user who has installed the bot to their account — it is intentionally not registered as a guild bot command to avoid accidental syncs from server members.

Ephemeral Responses

Several moderation commands use ephemeral=True when deferring or sending follow-up messages. An ephemeral response is only visible to the user who invoked the command — no one else in the channel can see it. The following commands use ephemeral responses to keep moderation actions discreet:
  • /mute — the deferred response and all follow-up messages (including the timed unmute confirmation) are ephemeral.
  • /deafen — the deferred response and all follow-up messages (including the timed undeafen confirmation) are ephemeral.
  • /timeout — both the deferred response and the outcome message are ephemeral.
  • /move_user — all follow-up messages, including the “not in a voice channel” error, are ephemeral.
  • /move_voicechannel — the deferred response and all status messages are ephemeral.
This means moderators can invoke these commands in public channels without broadcasting the action or any error messages to the rest of the server.

Build docs developers (and LLMs) love