# Supported Variables

A variable, just as in math, is something that can have a changing state. In your tickets you have access to certain variables whose value will vary among tickets, you can use these variables on the different fields of your ticket messages!!

Let's see a bit more about what each variable works for

### General Variables

| **Variable**          | **Description**                                                    |
| --------------------- | ------------------------------------------------------------------ |
| `{server.name}`       | Will display the server's name                                     |
| `{server.id}`         | The server's ID                                                    |
| `{server.icon}`       | Direct URL to the server's icon                                    |
| `{server.banner}`     | Direct URL to the server's banner                                  |
| `{channel.name}`      | Name of the channel in which the variable is being used            |
| `{channel.id}`        | The ID of that channel                                             |
| `{panel.count}`       | The current count of the panel in which this message was triggered |
| `{panel.name}`        | The name of the panel in which the variable is being used          |
| `{panel.ticketLimit}` | The Ticket Limit for the current panel                             |

### Ticket Variables

| **Variable**                       | **Description**                                             |
| ---------------------------------- | ----------------------------------------------------------- |
| `{ticket}`                         | Mention to the ticket channel in which the variable is used |
| `{ticket.id}`                      | The ID for the `{ticket}` channel                           |
| `{ticket.user}` / `{ticket.owner}` | The mention to the user who created the ticket              |
| `{ticket.user.name}`               | The name of `{ticket.user}`                                 |
| `{ticket.user.id}`                 | The ID of `{ticket.user}`                                   |
| `{ticket.user.nickname}`           | The nickname of `{ticket.user}`                             |
| `{ticket.user.icon}`               | Direct Url of the profile picture of the `{ticket.user}`    |
| `{ticket.user.tag}`                | The 4 digit discriminator, of the `{ticket.user}`           |
| `{ticket.user.full}`               | The username + the 4 digit discriminator of `{ticket.user}` |

{% hint style="info" %}

* `{ticket.owner}` is just an alias of `{ticket.user}` meaning it has all of it's sub-variables `{ticket.owner.name}` and so on.
* This set of variables as it name tells, will only work within tickets, if you use it within a tag it will only render when used within a ticket.
  {% endhint %}

### Author Variables

Let's talk about the **`{author}`** variable. Any action, such as opening, closing, claiming, deleting etc, a ticket, will have the **`{author}`** variable, which refers to the user who triggered the action.

| **Variable**        | **Description**                                                       |
| ------------------- | --------------------------------------------------------------------- |
| `{author}`          | The mention to the user who triggered the message                     |
| `{author.name}`     | The name of the `{author}`                                            |
| `{author.id}`       | The ID of the `{author}`                                              |
| `{author.nickname}` | The nickname of the `{author}`                                        |
| `{author.icon}`     | Direct Url of the profile picture of the user triggering this message |
| `{author.tag}`      | The 4 digit discriminator, of the `{author}`                          |
| `{author.full}`     | The username + the 4 digit discriminator of `{author}`                |

{% hint style="danger" %}
The **`{author}`** variable has the same as usage as **`{user}`**. Take into account that **`{ticket.user}`** refers to the user creating a ticket, so if for example you want to ping the user of your ticket in the claiming, **do not** use **`{user}`** as it will ping the user who claimed, if you want to ping use **`{ticket.user}`**.\
\&#xNAN;**`{user}`** ≠ **`{ticket.user}`**
{% endhint %}

### Special Variables

| **Variable**              | **Description**                                                                                                                                      |
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{empty}`                 | Places an empty-like character on a required field of an embed                                                                                       |
| `{reason}`                | The given reason for the action triggered                                                                                                            |
| `{create.reason}`         | Reason given for a ticket **creation** when using [Command Style Tickets](https://docs.tickettool.xyz/dashboard/panel-configs/command-style-tickets) |
| `{close.reason}`          | Reason given for a ticket **closure**                                                                                                                |
| `{delete.reason}`         | Reason given for a ticket **deletion**                                                                                                               |
| `{claim.reason}`          | Reason given for a ticket **claim**                                                                                                                  |
| `{claim.user}`            | The **last** user who claimed a ticket, has the same sub-variables as [`{ticket.user}`](#ticket-variables)                                           |
| `{@Role Name}`            | **Replace** `Role Name` with the name of your role and it will ping that role                                                                        |
| `{Role ID}`               | **Replace** `Role ID` with the ID of your role and it will ping that role                                                                            |
| `{random}`                | Will provide you with a random number (by default lower than 0), use [variable modifiers](#modifiers) to customize this behavior                     |
| `{regex.X}`               | Named group support variables for Regex, only works for [**Custom Commands**](https://docs.tickettool.xyz/custom-commands#regex)                     |
| `{create.form.X}`         | Displays the user's answer for question #`X` in a [Form](https://docs.tickettool.xyz/dashboard/form-options#displaying-form-answers)                 |
| Escalate Variables        | Visit the [Escalate documentation](https://docs.tickettool.xyz/dashboard/escalate-options#available-variables) for a full list of variables.         |
| Roblox/Bloxlink Variables | Visit the [Integrations documentation](https://docs.tickettool.xyz/dashboard/integration-options#bloxlink-variables) for a full list of variables.   |

### Time Variables

| **Variable**         | **Description**                                                                                               |
| -------------------- | ------------------------------------------------------------------------------------------------------------- |
| `{time}`             | Sends the current unix time in seconds                                                                        |
| `<t:{time}>`         | Will send the unix time using Discord's timestamp native feature                                              |
| `{time.created.age}` | A human-readable **text** that indicates how long ago was the ticket **created**                              |
| `{time.claimed.age}` | A human-readable **text** that indicates the time **between** the ticket's creation and it being **claimed**  |
| `{time.closed.age}`  | A human-readable **text** that indicates the time **between** the ticket's creation and it being **closed**   |
| `{time.opened.age}`  | A human-readable **text** that indicates the time **between** the ticket's closure and it being **re-opened** |
| `{time.deleted.age}` | A human-readable **text** that indicates the time **between** the ticket's creation and it being **deleted**  |
| `{time.created}`     | A unix **timestamp** pointing to the time when the ticket was **opened**                                      |
| `{time.claimed}`     | A unix **timestamp** pointing to the time when the ticket was **claimed**                                     |
| `{time.closed}`      | A unix **timestamp** pointing to the time when the ticket was **closed**                                      |
| `{time.opened}`      | A unix **timestamp** pointing to the time when the ticket was **re-opened**                                   |
| `{time.deleted}`     | A unix **timestamp** pointing to the time when the ticket was **deleted**                                     |

{% hint style="info" %}
The time-action variables that point to actions that can take place more than once (e.g claiming, closure, re-opening), will take the value of the last moment the action took place.
{% endhint %}

![Dynamic Timestamps](https://i.imgur.com/Qf2GncB.png)

{% hint style="info" %}
For a more convinient use on Discord's Dynamic Timestamps we recommend you checking [HammerTime](https://hammertime.djdavid98.art/), here you can replace the actual unix time for the `{time}` variable to make custom messages!
{% endhint %}

### Modifiers

Since [October 2022](https://docs.tickettool.xyz/ticket-tool-changelog#october-2022), you can customize even more your variables! These are all the modifiers you can apply at the end of your variables, remember that to use them you must prefix them using **`?`**, check the [cheatsheet](#cheatsheet) for a sample.

| **Modifier**    | **Aliases** | **Description**                                                                                                                                                                                |
| --------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `?uppercase`    | `?uc`       | Will make the variable to be upper case                                                                                                                                                        |
| `?lowercase`    | `?lc`       | Will make the variable to be lower case                                                                                                                                                        |
| `?maxLength=`   | `?ml=`      | Set the maximum lenght for a variable, if it's exceeded, the variable will be truncated                                                                                                        |
| `?padLeft=`     | `?pl=`      | Pad the variable to the left with zeros                                                                                                                                                        |
| `?padRight=`    | `?pr=`      | Pad the variable to the right with zeros                                                                                                                                                       |
| `?fallback=`    | `?fb=`      | If the variable you attach this modifier to is empty, the fallback text (anything placed after the `=`) will be displayed instead. You can also use variables for a fallback text.             |
| `?notfallback=` | `?nfb=`     | If the variable you attach this modifier to contains information, the fallback text (anything placed after the `=`) will be displayed instead. You can also use variables for a fallback text. |
| `?math=`        | `?m=`       | Use algebra operators (`+`, `-`, `*`, `/`,) to perform operations on variables such as [`{time}`](#time-variables)                                                                             |
| `?clean`        | None        | Replaces the \` character to prevent breaking in variables such as [`{create.form}`](https://docs.tickettool.xyz/dashboard/form-options#response-usage)                                        |
| `?rlist=`       | None        | Add this modifier to the [`{random}`](#special-variables) followed by the items you want the bot to choose from, separated by a pipe (\|) character                                            |
| `?rmin=`        | None        | Set the **minimum** value [`{random}`](#special-variables) can return                                                                                                                          |
| `?rmax=`        | None        | Set the **maximum** value [`{random}`](#special-variables) can return                                                                                                                          |

#### Cheatsheet

Here you'll find some examples when using this modifiers, if you have questions around them, don't hesitate to contact our [Support Team](https://tickettool.xyz/support)

![Dashboard](https://i.imgur.com/sHFfy2t.png) ![Output](https://i.imgur.com/ctFuftU.png)
