Ticket System
Last updated
Last updated
The following guide and subguides will use APIs, regex, and both commands and events.
Although this is fairly complicated, it will introduce you up to new features, and explain them in depth; allowing you to explore new ways to create.
If you have any questions throughout or get stuck, feel free to visit our Support Server.
If you are new to BotWiz, and have not yet added your bot: click here to learn how!
Below are two options to creating your ticket system. You can either:
Have each ticket made by using a command; or
Have each ticket created by using a button.
If you wish for your tickets to be created via a button, start your command with a buttons action block.
{interaction[member]}
Tag the interacting user.
{interaction[member.id]}
Get the interacting user's ID.
{interaction[member.username]}
Grab the interacting user's username.
{interaction[member.displayName]}
Display the interacting user's name.
{interaction[channel.id]}
Shows the current channel's ID.
{interaction[message.id]}
Grabs the interacted message ID. This only works after a trigger (e.g. a button).
Find more combinations for the interaction variable by clicking here.
To create a ticket, start by placing a Create Channel action block.
For this guide, I have set my ticket names to ticket-{interaction[member.displayName]}
. This means that with each new ticket made, it will be named ticket-catnip
for example.
Additionally, you can edit the type of channel; meaning you can have your tickets held in a text channel or a thread. When selecting a thread option, all threads will be made in the current channel.
Below are additional options, allowing you to fully customize your newly created channel.
In each text channel, you can set a topic. Topics can be used to describe the channel's purpose, or state any quick rules such as "No Spamming!".
When a topic is set, everyone who can see the channel will see the topic at the top.
When your ticket channel is created, it will be subject to the permissions that its parent channel has.
To override these permissions, and have your own, you'll need to use an API block. This is needed to make sure that your ticket opener has permissions to view their ticket.
Method: PUT
URL: https://discord.com/api/v10/channels/{create_channel_00000[id]}/permissions/{interaction[member.id]}
This API will edit your channel's permissions. In the URL, make sure to add your unique code. Do this by replacing 00000
with your own create_channel
's variable. You can access your code by visiting your Create Channel block.
To add a specific user, or role, replace {interaction[member.id]}
with the user or role's ID.
With {interaction[member.id]}
in the URL, the interacting user (e.g. the user who clicks the 'Mass' button in this example), will be the one whose permissions you edit.
Authorization
Bot {bot_token}
Before entering your values below, you will need to use a permissions conversion tool.
Discord uses numbers, instead of the typical permissions such as administrator
or manage messages
. In order to get the permissions you'd like, you will need to use this tool.
When using BotWiz's Permissions Calculator tool, first start by selecting the permissions you'd like to allow for the user or role you selected (in the ID part of the API's URL). Once finished, at the top of the page you will see Conversion. Copy the number and put this as your allow
value.
For example, the conversion for the view_channel
and send_messages
permissions is 3072
.
If you would like to also deny some permissions for your selected user or role, repeat the above steps but set the conversion number as the deny
value.
type
0
or 1
(see description)
Put 1
if the ID in the URL belongs to a user.
Else, put 0
if the ID belongs to a role.
allow
See above for instructions.
The permissions to allow.
deny
See above for instructions.
The permissions to deny.
To add more permissions, duplicate the API block and repeat the above blocks!
An update is planned to introduce an "Edit Channel Permissions" block.
If the category your tickets are made in allows permissions for everyone for instance, and you would like to keep permissions private, then feel free to repeat the permissions API.
To send any messages to your new channel, set your action block's location to the following:
You can find your {create_channel_00000}
variable in your 'Create Channel' block.
Using the above variable in the example image will not work for your command; each variable has a different code.
Blocks that reply to a message will not work.
To create your button, you will need to use any 'Message Button' action block, with a button set up to act as the closing button. To send this message to the ticket channel, use your 'Create Channel' block's variable; this variable should look like {create_channel_00000}
.
Depending on your settings, and your preferances, you can set up your 'close' button to:
Delete the ticket channel;
Remove the ticket opener's permissions to see the channel; or
If your channel is a forum post or thread: close and lock the post.
For this, you'll simply need to place a 'Delete Channel' action block after your 'Close' button.
When selecting which channel to delete, remember to use your {create_channel_00000}
variable from before. You can find this by selecting your 'Create Channel' block!