Переменные
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 — для динамических данных по клиенту