---
title: Systems and variables
description: "Systems are the automatic messages Shiori sends: each one uses a saved embed with variables that get replaced with real data when sent."
---

## What is a system?

A **system** is an automatic message the bot sends by itself. Each system uses a saved embed (see [The embed system](/en/embeds)), and you can add **variables** like `{{shop.channel.mention}}` — they get replaced with real data when the message is sent.

:::note
**Syntax:** `{{variable.name}}`. If a variable doesn't exist, it's left as written.
:::

## Available systems

| System | When it's sent |
| --- | --- |
| `welcome` | When a new member joins the server. |
| `shop_creation_es` / `shop_creation_en` | In a new shop when it's created. |
| `shop_opening_es` / `shop_opening_en` | When `/shop ping` (opening) is used. |
| `shop_updated_es` / `shop_updated_en` | When `/shop ping` (updated) is used. |

:::note
The **language of each shop** (es/en) decides which version of the message it gets.
:::

## Variables of the `welcome` system

Sent when a new member joins the server.

| Variable | Description |
| --- | --- |
| `{{member.id}}` | Member's ID |
| `{{member.username}}` | Username |
| `{{member.displayName}}` | Display name |
| `{{member.globalName}}` | Global name |
| `{{member.mention}}` | Member mention |
| `{{member.joinedUnixMs}}` | Joined timestamp (Unix, ms) |
| `{{member.joinedUnixSeconds}}` | Joined timestamp (Unix, s) |
| `{{member.accountCreatedUnixMs}}` | Account creation timestamp (Unix, ms) |
| `{{member.accountCreatedUnixSeconds}}` | Account creation timestamp (Unix, s) |

## Variables of `shop_opening_es` / `shop_opening_en` and `shop_updated_es` / `shop_updated_en`

Sent when `/shop ping` (opening or updated) is used. The following variables are available in both:

| Variable | Description |
| --- | --- |
| `{{shop.id}}` | Shop's ID |
| `{{shop.accentColor}}` | Shop's accent color |
| `{{shop.status}}` | Status: **Open** / **Closed** / **Warned** |
| `{{shop.tier}}` | Tier: **Free** / **Premium** |
| `{{shop.language}}` | Language: **Spanish** / **English** |
| `{{shop.creator.id}}` | Shop creator's ID |
| `{{shop.creator.mention}}` | Shop creator's mention |
| `{{shop.createdUnixMs}}` | Shop creation timestamp (Unix, ms) |
| `{{shop.createdUnixSeconds}}` | Shop creation timestamp (Unix, s) |
| `{{shop.updatedUnixMs}}` | Last update timestamp (Unix, ms) |
| `{{shop.updatedUnixSeconds}}` | Last update timestamp (Unix, s) |
| `{{shop.channel.id}}` | Channel's ID |
| `{{shop.channel.url}}` | Channel URL |
| `{{shop.channel.name}}` | Channel name |
| `{{shop.channel.topic}}` | Channel topic |
| `{{shop.channel.mention}}` | Channel mention |
| `{{shop.channel.createdUnixMs}}` | Channel creation timestamp (Unix, ms) |
| `{{shop.channel.createdUnixSeconds}}` | Channel creation timestamp (Unix, s) |
| `{{shop.channel.category.id}}` | Category's ID |
| `{{shop.channel.category.name}}` | Category name |
| `{{shop.channel.category.mention}}` | Category mention |

## Variables of `shop_creation_es` / `shop_creation_en`

Sent in a new shop when it's created. Besides all the **shop_opening / shop_updated** variables, it includes:

| Variable | Description |
| --- | --- |
| `{{remainingMs}}` | Remaining time to claim the shop (Unix, ms) |
| `{{remainingSeconds}}` | Remaining time to claim the shop (Unix, s) |

:::note
`remaining*` is a Unix timestamp (an instant), not a duration: it can be used with Discord's `<t:...>`.
:::
