BotWiz Guides
  • BotWiz Guides
  • BotWiz Guides
    • Slash Commands
      • Warn Command
      • Ticket System
    • Migrate
      • Import
      • Export
    • Co-Create
      • Managing Co-Creators
      • Accepting an Invite
    • Apm Guides
      • Apm Ticket System
        • Ticket Limits
      • Massing Bot
    • Auto Responder
    • Server Statistics
      • Member Count
    • Using API's
      • What is an API?
      • Discord API
  • Discord Guides
    • Server Roles
      • Server Roles: PC Guide
      • Server Roles: Mobile Guide
    • Categories & Channels
      • Channels: PC Guide
      • Channels: Mobile Guide
    • Server Ownership
      • Server Ownership: PC Guide
      • Server Ownership: Mobile Guide
    • Delete Server
      • Server Deletion: PC Guide
      • Server Deletion: Mobile Guide
Powered by GitBook
On this page
  • Introduction
  • Creating the Tickets
  • Adding Permissions
  • Permissions API
  • Ticket Messages & Close Ticket
  • How to Send Messages to a Ticket
  • Creating the 'Close Ticket' Button
  • Follow-up Replies
  • Sending the Ad
  • Giving Access
  • Sep or Batch Option
  • End of the Mass
  • Miscellaneous Options

Was this helpful?

  1. BotWiz Guides
  2. Apm Guides

Apm Ticket System

PreviousApm GuidesNextTicket Limits

Last updated 10 months ago

Was this helpful?

This guide is specifically for apms, and will be unsuitable for those who are not an apm. For those who are not an apm, visit Ticket System.

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. Everything will be explained, and you will be guided through - so don't worry!

If you have any questions throughout or get stuck, feel free to visit our .

Introduction

If you are new to BotWiz, and have not yet added your bot: to learn how!

Below are two options to creating your ticket system. You can either:

  • Have each ticket made by apms using a /mass command for example;

  • Or, have each ticket created by apms using a 'mass' button.

In this tab, it will detail how to create the following embed and the '/mass' command.

Before creating your /mass command, you will need a way to send your ticket information, such as the embeds in the image above.

Start by creating a new command and place a Permissions Condition block to ensure not everybody can use the command. Afterwards, feel free to place action blocks to represent your ticket's information.

After, you'll need to create your /mass command, which will used to create a ticket. In this command, you will start with a 'Create Channel' block. Follow the rest of the guide for the next steps.

In this tab, it will detail how to create the following embed with buttons.

To start, head to your bot's Dashboard, and select the 'Commands' tab. From here, create a new command. When creating your command, make sure to select 'ephemeral'; this means that each message reply will be hidden.

Once in your command builder, you'll notice a good few action blocks. A few may seem the same, however there are a few key differences. Below, are an example of action blocks with buttons:

Left Blocks
Right Blocks

On the left, these are messages that do not reply to a message.

On the right, these messages reply, such as to the previous message, a select message or the command.

Using the information above, start your ticket command by placing down some action blocks to represent your format.

Creating Buttons

Here, you can create buttons with different functions, such as:

  • To send a message each time a button is clicked (use any message block);

  • Give a role to the user who clicks the button (use an 'Add Roles' block); or

  • To create a ticket system: allowing apms to mass with you.

Custom Emojis in Buttons

Type your emoji in a Discord channel. Before spending your custom emoji, put \ before the emoji. This will change your text to the emoji's raw version, such as :botwiz:.

Next, send the message and you will see that the message has sent the emoji's raw form, such as <:botwiz:1249410551575089193>. Copy the emoji's ID (the number), and paste this into the Button Emoji textbox, as shown below.

Interaction Variable Examples

User Variables
Explaination

{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).

Creating the Tickets

To create a ticket, start by placing a Create Channel action block.

Select a tab below to see an example of what your builder should look like thusfar.

For this guide, I have set my ticket names to w2p—{interaction[member.displayName]}. This means that with each new ticket made, it will be named w2p—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.

Optional Create Channel Options

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.

Will this channel hold content that should only be visible to adults? If so, tick this option!

When a channel is marked as NSFW, it will warn users before entering the channel.

This is where you channel will be placed in your server's channel list.

Low positions, starting at 1, will place your channel at the top of the list. Higher positions will place your channel at the bottom of the channel list.

Find out more at Categories & Channels!

Slowmode can be setup, whereby members will rate limited with each message.

A slowmode can be set between 0-21600 seconds.

Users with the the manage_messages or manage_channel permission and bots are unaffected; meaning they can send any message without being rate limited.

This reason will be used for your server's audit logs.

Adding Permissions

When your ticket channel is created, it will be subject to the permissions that its parent channel has.

What is a Parent Channel?

A parent channel is the 'host' channel. For example, a channel's parent is its category.

A newly created channel will adopt the same permissions as it's parent channel.

For channels without a category, they will have the parent channel of the server. Meaning, it's parent channel ID will be the server's ID. The channel will not have any permissions, until they are manually set.

For threads, their parent channel will be the the channel the thread is hosted in. Similarly, forum posts will have the forum channel as its parent.

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.

Permissions API

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.

HTTP Headers

Key
Value

Authorization

Bot {bot_token}

Request Body

Before entering your values below, you will need to use a permissions conversion 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.

Key
Value
Description

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.

Ticket Messages & Close Ticket

How to Send Messages to a Ticket

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.

Creating the 'Close Ticket' Button

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}.

How to add Custom Emojis to Buttons

Type your emoji in a Discord channel. Before spending your custom emoji, put \ before the emoji. This will change your text to the emoji's raw version, such as :botwiz:.

Next, send the message and you will see that the message has sent the emoji's raw form, such as <:botwiz:1249410551575089193>. Copy the emoji's ID (the number), and paste this into the Button Emoji textbox, as shown below.

Depending on your settings, and your preferances, you can set up your 'close' button to:

  1. Delete the ticket channel;

  2. Remove the ticket opener's permissions to see the channel; or

  3. 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!

This method will be useful to allow staff to assess a ticket, or to keep the ticket 'archived'.

First, we'll need to add a new Unique Variable. This will be used to retieve the ticket opener's ID. Since with each interaction, the interaction variables change, we need to store the ID of the user who clicked to open a ticket, not the user who clicked your 'Close Ticket' button.

When creating your new Unique Variable, enter the following settings:

To store the ticket opener's ID, place a 'Set Variable' block after your 'Create Channel' block.

Now, we can place an API block after your 'Close Ticket' button. This will be used to remove the ticket opener's permissions to see the ticket. Any other members, such as staff members, will continue to see the ticket.

Name: remove Method: DELETE URL: https://discord.com/api/v10/channels/{interaction[channel.id]}/permissions/{unique_ticket_opener}

HTTP Headers

Key
Value

Authorization

Bot {bot_token}

Start by placing an API block after your 'Close Ticket' button. This will archive and lock the post.

Name: close Method: PATCH URL: https://discord.com/api/v10/channels/{interaction[channel.id]}

HTTP Headers

Key
Value

Authorization

Bot {bot_token}

Request Body

Key
Value

archived

true

locked

true

Follow-up Replies

The following will be an example of typical replies sent in an apm portal. Feel free to follow these steps, or customize them to how you'd like!

Sending the Ad

There are multiple ways to ask the ticket opener for their server's ad.

  1. You can ask the apm to send it as normal; or

  2. You can ask the apm to send the ad through a modal.

In order to pin the server ad, or setup any , you must run the ad through a modal.

Above is an example of how your builder should look currently, including future steps.

Here, your '1st Block' will be asking the user to send their ad. No checks will be made here, and their server ad will not be pinned. In this example, I have set up my 1st Block to ask the user to click 'Continue' once they have sent their ad in codeblock. For example:

First, we'll work on your first ticket message, such as the one below.

Start by editing your action block to ask for the apm's server ad. Your action block must be either a button, select menu or its own separate command. Without this, you will not be able to use a modal.

Modals will only work when connected to a trigger. Triggers include:

  1. When a command is executed; or

  2. When a button or select menu has been selected.

  1. Title: Send your Server's Ad

  2. Custom ID: ticket

When creating my modal item (question), I have entered the following:

  1. Component Identifier: ad

  2. Component Label: Paste your Server's Ad below in Codeblock

  3. Component Type: Paragraph Text

  4. Component Required: true

All other options were left as default. With these settings, my modal looks like:

To send the server ad entered, you can use a "Send a Message" block, with your modal's variable as the content. For instance, my modal's variable is {modal_ticket_ad}, as my Custom ID is 'ticket' and my Component Identifier is 'ad'.

To pin the server ad, use a 'Pin a Message' block, and select your 'Send a Message' block.

Giving Access

After the server ad has been sent, this is typically when apms will start posting. Here, you can either tag yourself, or a helper role, asking to verify the server before confirming they can mass.

To help, there are some that can be manually performed by your bot to remove the need to manually approve each server ad.

Here, we'll have the following:

Starting with your 'Add Roles' block, set your block to have the following settings:

'Message Author' is another way to refer to the interacting user. In this instance, it would be the user who clicks the 'Click 2 Continue' button.

Before giving access, you can send a message to your helpers / you, to ask for a manual check. Here, you can add a staff-only 'Approve' button, which'll lead into giving the ticket opener access to your servers and massing information.

For this, your builder will end up looking like the following:

First, lets start by creating the message showing how to tag a role and a specific user. This will be your "Asks for a Manual Check".

Approve Button

To have an approve button, you'll need to make sure the user interacting with that button has a specific role, or is a specific user. To do this, place a 'Role Condition' and/or a 'User Condition' block after your 'Approve' button. To use both conditions, you can do the following:

How to get a Role or User ID

If you're unsure how to get a User or Role ID, you will need to have Developer Mode enabled in your Discord Settings. Head to yoru Settings > Advanced and enable Developer Mode. Then, right click any user or visit your Server Role Settings, and right click a role to get it's ID.

To add custom emojis to a button, see Custom Emojis in Buttons.

Getting the Ticket Opener's ID

To add the access role to the ticket opener, you'll need a unique variable. As, if you use your approve button, {interaction[member.id]} will return your user ID instead of the ticket openers.

If you did not use the Remove Permissions method, you will not have the unique variable you need already setup. To do this, head to the unique variable tab to create a new unique variable.

After, create a new unique value with the following settings:

This unique variable will store the ticket opener's ID. Though, to set this up you will need to place a 'Set Variable' block after your 'Create a Channel' block, as shown:

Now, in your 'Add Roles' block, you can use {unique_ticket_opener} as the user ID.

Next, to create the "Posting Info" embed, I have used a 'Send Embed & Button' block. Cutomize this to how you would like, and make sure to send this message to your Ticket channel.

Sep or Batch Option

First, we'll need to ask if the apm would like their ad to be posted separately or in a batch. Next, if the user picks separately then we will need to see how long. Here, by using the buttons, you can add sep options - such as 30 minutes, 1 hour or overnight.

After each option, we will need a message block for your bot to notify you of which option they chose.

Feel free to use the following screenshot to see how to layout your action blocks.

Make sure that each of your messages go to your Ticket channel. You can do this by using:

Also, make sure to use your own {created_channel_00000} variable. You can find this at your 'Create a Channel' block.

How to Limit Some Options

If you'd like to make the 'overnight' option exclusive to a role, for example, you can add a 'Role Condition' block for example.

With a role condition block, it will make sure that the user who interacts with the button has the role. If not, then any blocks in the 'Else' condition will be performed. If the user does infact have the role, any blocks in the comparison will be performed.

End of the Mass

Here, you can add a way for ticket openers to be notified when their ticket has been posted. This step is similar to Sep or Batch Option.

Below is an example of how to ask the user, and to then let you know what the apm would prefer.

To link multiple blocks together, you will need to use a merge block. See the screenshot above for an example.

Miscellaneous Options

You can add more to your ticket system, including:

  1. Ticket Limits: such as 1 ticket per user, or 1 ad in each ticket.

Click any of the above titles to be directed to a subpage containing the selected guide(s).

More miscellaneous options coming soon...

Find more combinations for the interaction variable by .

Some users may have Family Centre enabled or safe settings, meaning NSFW messages, or channels, are blurred or blocked. Find out more .

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 .

If you are new to modals, visit this . However, I have set up my modal with the following settings:

Feel free to use the following guide on how to tag users or roles for example.

clicking here
here
this tool
documentation page
message format
Support Server
click here
BotWiz's Permissions Calculator Tool