# Recipes (/automations/recipes)



Each recipe is a full build. Most of them also exist as a template on the automations page, which fills everything in for you, so use these when you want to understand what the template did or build something it does not cover.

## A poll command [#a-poll-command]

**What it does:** a member types `!poll who are you - im him - im you` and Tickety posts the question with a vote button per choice, counting as people click.

<Steps>
  <Step>
    ### Trigger [#trigger]

    Mode **A command**, trigger `!poll`.
  </Step>

  <Step>
    ### Arguments [#arguments]

    Add two, in this order:

    | Name       | Type | Required |
    | ---------- | ---- | -------- |
    | `question` | Text | yes      |
    | `options`  | List | yes      |

    Leave the separator as a dash. The question takes everything before the first dash, so members can write a question with spaces in it without quoting anything. A text argument that takes the rest of the message has to be the last one before the list.
  </Step>

  <Step>
    ### The message [#the-message]

    Under **Automation Reply**, write:

    ```
    **{args.question}**
    Asked by {member.mention}
    ```
  </Step>

  <Step>
    ### The vote buttons [#the-vote-buttons]

    Add a group, behavior **Votes**, and set **Build the options from an argument** to `options`.

    Turn on **Show the counts** so the tally appears on the buttons.
  </Step>

  <Step>
    ### Tidy up [#tidy-up]

    Turn on **Delete the member's message** so the command itself disappears once the poll is up.
  </Step>
</Steps>

**Variations**

* Swap the vote group for **Attach a Discord Poll** with **Build the answers from an argument** set to `options` to get Discord's native poll instead.
* Set **Stops accepting votes after** to 1 day so the buttons lock themselves the next day. Every vote closes eventually; a month is the default.

## A suggestion board [#a-suggestion-board]

**What it does:** every message in `#suggestions` gets upvote and downvote buttons and a thread to discuss it.

<Steps>
  <Step>
    ### Trigger [#trigger-1]

    Mode **Any message in a channel**, and pick your suggestions channel.
  </Step>

  <Step>
    ### The message [#the-message-1]

    A short header is enough, since the member's own message is already right there:

    ```
    **New suggestion**
    ```
  </Step>

  <Step>
    ### The vote buttons [#the-vote-buttons-1]

    Add a group, behavior **Votes**, buttons, with two options: `Upvote` and `Downvote`. Turn on **Show the counts**.
  </Step>

  <Step>
    ### A thread 👑 [#a-thread-]

    Turn on **Open a thread under it** so discussion stays out of the channel.
  </Step>
</Steps>

<Callout type="info">
  Leave **Delete the member's message** off here. The suggestion is the member's own message, screenshots and all, and Tickety's post sits under it.
</Callout>

**Variations**

* Prefer a command? Use **A command** with `!suggest`, one required text argument that takes the rest of the message, and **Post to a channel** pointed at `#suggestions`. Members can then suggest from anywhere.
* Add a **Choice** argument called `category` with choices like `feature`, `bug`, `other`, and put `{args.category}` in the thread name.

## A self role panel [#a-self-role-panel]

**What it does:** a message you post once, with buttons that hand out roles.

<Steps>
  <Step>
    ### Trigger [#trigger-2]

    Mode **You post it yourself**.
  </Step>

  <Step>
    ### The message [#the-message-2]

    Write what the panel is for, for example a short embed titled **Pick your roles**.
  </Step>

  <Step>
    ### The role buttons [#the-role-buttons]

    Add a group, behavior **Roles**, and add one option per role. Give each a label members will understand.

    Choose **Toggle** so members can hold several, or **Only one at a time** for things like colours.
  </Step>

  <Step>
    ### Post it [#post-it]

    Save, then press **Send the Panel** and pick a channel.
  </Step>
</Steps>

Editing the automation later updates the posted message on save. Moving it to another channel needs a fresh send.

<Callout type="warn">
  Tickety's role has to sit **above** every role it hands out in your server settings, or Discord refuses to add them.
</Callout>

**Variations**

* Use a dropdown instead of buttons when you have more than a handful of roles.
* Add a second group with behavior **Links** for your rules or your store.

## An FAQ answer [#an-faq-answer]

**What it does:** answers a common question however people phrase it.

<Steps>
  <Step>
    ### Trigger [#trigger-3]

    Mode **Words in a message**, trigger `how do i get support`, match percentage 85.
  </Step>

  <Step>
    ### The message [#the-message-3]

    Write the answer as an embed.
  </Step>

  <Step>
    ### Optional [#optional]

    Turn on **OCR Trigger Detection** so a screenshot of the question finds the answer too.
  </Step>
</Steps>

**Variations**

* Add a **Links** group pointing at the relevant page of your own docs.
* Set **Only inside tickets** under Conditions so it only helps in ticket channels.

## A report command [#a-report-command]

**What it does:** `!report @someone spamming` posts to a private staff channel and pings your moderators.

<Steps>
  <Step>
    ### Trigger [#trigger-4]

    Mode **A command**, trigger `!report`, with **Delete the member's message** on so the report is not public.
  </Step>

  <Step>
    ### Arguments [#arguments-1]

    | Name     | Type | Required | Notes                         |
    | -------- | ---- | -------- | ----------------------------- |
    | `who`    | User | yes      |                               |
    | `reason` | Text | yes      | Takes the Rest of the Message |
  </Step>

  <Step>
    ### The message [#the-message-4]

    ```
    **Report from {member.mention}**
    Against: {args.who.mention}
    Reason: {args.reason}
    ```
  </Step>

  <Step>
    ### Where it goes [#where-it-goes]

    Set **Post to a channel** and pick your staff channel.
  </Step>

  <Step>
    ### Optional 👑 [#optional-]

    Add a **Votes** group with `Handled` and `Ignored` so staff can mark what they dealt with, or an **Alert a channel** step to ping the mod role.
  </Step>
</Steps>

## A ticket shortcut 👑 [#a-ticket-shortcut-]

**What it does:** `!close solved` closes the ticket the member is in, with their reason attached.

<Steps>
  <Step>
    ### Trigger [#trigger-5]

    Mode **A command**, trigger `!close`. Under Conditions, turn on **Only inside tickets** and set **Required roles** to your support role.
  </Step>

  <Step>
    ### Argument [#argument]

    One text argument called `reason`, optional, Takes the Rest of the Message.
  </Step>

  <Step>
    ### The message [#the-message-5]

    ```
    Closing this ticket. Reason: {args.reason}
    ```
  </Step>

  <Step>
    ### The step [#the-step]

    Add a **Close the ticket** step and put `{args.reason}` in its reason field.
  </Step>
</Steps>

The step runs the same permission checks the `/close` command does, so nobody gains access they did not already have.
