Skip to main content
The Discord Ticket Bot creates and deletes channels, sends embeds, pings roles, and manages per-channel permission overrides on the fly. For all of this to work correctly, the bot’s own role must be granted a specific set of permissions in your server. Granting too few permissions causes silent failures — channels won’t be created, staff won’t be pinged, or logs won’t be posted.

Bot Permissions Required

Grant these permissions to the bot’s role in Server Settings → Roles:

Channel-Level Permission Overrides

When a ticket channel is created, on_select_option applies three explicit permission overrides to that specific channel. These overrides are set programmatically via channel.set_permissions(...):

@everyone (the default role)

Hides the ticket channel from everyone who is not explicitly granted access.

Ticket creator

Gives the person who opened the ticket full access to their private channel.

Staff role

Grants staff members the same access as the ticket creator, plus the ability to delete messages in the ticket channel.

Command Permission

The tb!ticket text command is protected by the @commands.has_permissions(administrator=True) decorator. Any user who does not hold the Administrator permission in the server will receive no response when invoking the command — it is silently ignored.
Only server administrators should need this command; it is intended to be run once (or rarely) to post the ticket panel in a designated channel.
The bot’s role must be positioned above the staff role in the server’s role hierarchy (Server Settings → Roles, drag to reorder). Discord enforces that a bot can only modify permissions for roles ranked below its own highest role. If the bot’s role is below or equal to the staff role, channel.set_permissions(rol_staff, ...) will raise a Forbidden error and the ticket channel will be created without the correct staff access.