Переменные

ImpactBot имеет 3 типа переменных с разной областью видимости.

1. Client variables

Per-client storage. Сохраняются между сессиями.

``` set_variable name = "Иван" ```

Использование: `#{name}`

Область видимости: ТОЛЬКО для этого клиента. Other clients не видят.

2. Global variables

Per-project storage. Видны во всех flows проекта.

Settings → Variables → создать:

  • name: `support_phone`
  • value: `+7 (495) 000-00-00`

Использование: `#{global.support_phone}`

3. System (builtin) variables

Read-only, всегда доступны:

| Переменная | Что | |------------|-----| | `#{client.id}` | UUID клиента | | `#{client.name}` | Имя из канала | | `#{client.username}` | Username (TG) | | `#{client.phone}` | Если был ввод | | `#{client.email}` | Если был ввод | | `#{client.platform}` | telegram/vk/whatsapp/... | | `#{client.created_at}` | Дата первого сообщения | | `#{message.text}` | Последнее сообщение | | `#{message.id}` | Telegram message_id | | `#{button}` | Value последней кнопки | | `#{bot.name}` | Имя бота | | `#{bot.id}` | UUID бота | | `#{flow.id}` | UUID текущего flow | | `#{block.id}` | UUID текущего блока | | `#{now}` | ISO 8601 текущего времени | | `#{today}` | YYYY-MM-DD | | `#{random:1:100}` | Случайное число |

Variable expressions (через #{})

Поддерживаются:

  • Арифметика: `#{counter + 1}`, `#{price * 0.9}`
  • Конкатенация: `Hello #{name}!`
  • Conditionals: `#{age >= 18 ? "adult" : "minor"}`

Persistence

  • Client vars — Postgres `client_variables`
  • Global vars — Postgres `project_variables`
  • TTL — нет (живут до удаления клиента / проекта)

Best practices

  • Префиксы для группировки: `order_total`, `order_status`, `order_date`
  • НЕ хранить sensitive data — используйте безопасное хранилище
  • Глобальные — для констант (URL, телефоны компании)
  • Client — для динамических данных по клиенту