This document describes all bot slash commands based on the actual logic in commands.py, helpers.py, commands_helpers.py, and roles.py.
SuperAdminAdminRegistrator
| Command / permission | SuperAdmin | Admin | Registrator |
|---|---|---|---|
/register_channel |
yes | yes | yes |
/link_channel |
yes | yes | yes |
/link_channel_to_group |
yes | yes | yes |
/unlink_channel |
yes | yes | no |
/remove_channel_registration |
yes | yes | no |
/set_admin |
yes | no | no |
/set_registrator |
yes | yes | no |
/remove_admin |
yes | no | no |
/remove_registrator |
yes | yes | no |
/show_registered_channels |
yes, sees all | yes, sees all | yes, but only own entries |
/show_linked_channels |
no role check | no role check | no role check |
/show_admins |
no role check | no role check | no role check |
/set_superadmin |
separate logic | separate logic | separate logic |
/set_my_avatar |
no role check | no role check | no role check |
/remove_my_avatar |
no role check | no role check | no role check |
/show_my_avatar |
no role check | no role check | no role check |
/get_invites |
no role check | no role check | no role check |
/update_invites |
no role check | no role check | no role check |
- A
SuperAdmincannot be assigned asAdminthrough/set_admin. - A
SuperAdminorAdmincannot be assigned asRegistratorthrough/set_registrator. - In the current implementation,
Registratoris effectively one-time use: after a successfullink_channelorlink_channel_to_group, the registrator entry is removed. - Most commands are designed for server use. Some commands check this explicitly, while others simply assume
interaction.guildandinteraction.channelexist.
/register_channel adds a channel to registered_channels. At this stage the channel is only registered and is not yet linked to anything.
/link_channel creates a new linked group from two previously registered channels.
/link_channel_to_group adds another registered channel to an existing linked group.
After successful linking, the relevant channels are removed from the registered channels state and moved into linked groups.
SuperAdminAdminRegistrator
- The command only works inside a server.
- The dropdown only allows
textandforumchannels. - The same channel cannot be registered twice.
- Shows an ephemeral dropdown with channels from the current server.
- After selection it saves:
guild_idguild_namechannel_idchannel_nameregistrator_idregistrator_name
- The channel becomes available for later linking.
- Any user, but the visible scope depends on role.
- If the caller is a
SuperAdminorAdmin, they see all registered channels in the state. - If the caller does not have one of those roles, they only see channels registered by themselves.
- Shows the list of registered channels.
- For each entry it displays:
GuildChannelGuild IDandChannel ID
- If the channel is missing from the current Discord cache, it shows
Channel not found.
- Ephemeral response.
SuperAdminAdminRegistrator
- The command is used in a server.
- The user must have at least one registered channel in the current server.
- The user must have at least one registered channel in another server.
- Both channels must be registered by the same user who runs the command.
- A channel cannot be linked to itself.
- Channels that are already linked together cannot be linked again.
- A channel that already belongs to any group cannot be used.
group_namecannot be empty.
- Opens a modal with:
- source channel selection from the current server
- target channel selection from another server
group_nameinput
- Creates invites for the source and target channels.
- Creates a new linked group containing the two channels.
- Removes both channels from the registered list.
- Removes the calling user from
registratorsfor the current guild.
- The target channel must not just be registered by someone, it must be registered by the same user who invokes the command.
- Ephemeral response.
- Any user.
- There is no role check.
- The command only shows groups that include at least one channel from the current guild.
- Finds all linked groups that include the current server.
- For each group it shows:
- the group name
- local channels from the current server
- the other linked channels in that group
- Ephemeral response.
SuperAdminAdmin
- The command operates on the current channel where it is called.
- The current channel must belong to a linked group.
- Removes the current channel from the matching group.
- Deletes it from both
linksandchannel_list. - If only one channel remains in the group afterwards, the whole group is deleted.
- Ephemeral response.
SuperAdminAdmin
- The command operates on the current channel.
- The current channel must exist in the registered channels list.
- Removes the current channel from the registered channels state.
- Ephemeral response.
SuperAdminonly.
- You cannot assign
Adminto a user who is already treated ascan't_be_admin. - In the current logic this means you cannot assign
Adminto a user who is alreadySuperAdminin this guild. - The target user must not already be an
Adminin this guild.
- Adds the target user to the
adminslist for the current guild.
- Ephemeral response.
- Any server user with the Discord
administratorpermission.
- This command uses separate logic and does not depend on the bot's internal role system.
- Only one
SuperAdmincan exist per server. - The calling user must not already be
SuperAdminin this guild.
- Assigns the calling user as
SuperAdminfor the current guild.
- Ephemeral response.
- Any user.
- There is no role check.
- Shows all
Adminusers for the current guild. SuperAdminusers are not included here, only theadminslist.
- Ephemeral response.
SuperAdminAdmin
- You cannot assign
Registratorto a user who matchescan't_be_registrator. - In the current logic this means you cannot assign
Registratorto aSuperAdminorAdminof the same guild. - The target user must not already be a registrator in this guild.
- Adds the target user to the
registratorslist. - The command text calls this a
one-time registrator, which matches the current post-link behavior.
- Ephemeral response.
SuperAdminonly.
- The target user is selected by
user_idwith autocomplete. - The target user must exist in the current guild.
- The target user must actually be an
Adminin this guild.
- Removes the target user from the
adminslist for the current guild.
- Ephemeral response.
SuperAdminAdmin
- The target user is selected by
user_idwith autocomplete. - The target user must exist in the current guild.
- The target user must actually be a
Registratorin this guild.
- Removes the target user from the
registratorslist for the current guild.
- Ephemeral response.
SuperAdminAdminRegistrator
- The command only works inside a server.
- The user must have at least one registered channel in the current server that does not already belong to any group.
- The user must have access to at least one existing group.
- Access to a group is granted only if all channels in that group are already registered by the same user.
- The selected source channel must be registered by the same user.
- The selected source channel must not already belong to another group.
- Shows an ephemeral view with two dropdowns:
- channel selection
- existing group selection
- After confirmation it:
- adds the channel to
links - adds its
channel_idtochannel_list - removes the calling user from
registratorsfor the current guild - removes all channels of that group from the registered channels state
- adds the channel to
- This command is intentionally strict: a user can add a channel to an existing group only if the whole group is already fully owned by that same registrator from the registration-state perspective.
- Ephemeral response.
- Any user.
- The
emojiparameter must contain exactly one emoji. - Supported formats:
- one Unicode emoji
- one Discord custom emoji in the form
<:name:id>or<a:name:id>
- Stores the user's emoji avatar in MongoDB.
- That emoji is then used in bridged message headers instead of the default one.
- Ephemeral response.
- Any user.
- The user must already have a custom avatar set.
- Removes the custom emoji avatar for the user.
- After that the bot falls back to the default emoji avatar.
- Ephemeral response.
- Any user.
- Shows the user's current custom avatar.
- If no custom avatar is set, it reports that the default emoji is being used.
- Ephemeral response.
- Any user.
- The current channel must belong to a linked group.
- Finds the linked group for the current channel.
- Builds a list of invite links for all channels in that group.
- Sends that message in the current channel.
- Then tries to broadcast the same message to every other channel in the group.
- This is not an ephemeral response.
- The command broadcasts to linked channels if the bot can resolve them and send messages there.
- Any user.
- The current channel must belong to a linked group.
- Tries to regenerate an invite for every channel in the group.
- If invite creation succeeds, it updates
invite_urlin the linked group state. - If a channel is unavailable or invite creation fails, that is included in the report.
- If there are guilds where invite creation fails, the command first sends an ephemeral message listing the failed guilds.
- After that it still tries to call
interaction.response.send_message(...)again for the final report. - That conflicts with the Discord interaction lifecycle and can produce a second-response error if
failed_guildsis not empty.
- In the normal success path, the response is ephemeral.
/show_admins,/show_linked_channels,/get_invites,/update_invites,/set_my_avatar,/remove_my_avatar, and/show_my_avatarare not restricted by the bot's internal role system./show_adminsonly displaysadmins, notsuperadmins./get_invitesand/update_invitesdo not perform separate permission checks./link_channeland/link_channel_to_groupremove the caller's registrator role after successful completion.- In practice,
Registratoris only needed for channel registration and linking operations.