Переменная event
В тексте сообщений и в условиях сценария доступна переменная `event`: она описывает событие, из-за которого сценарий сработал. Свойства зависят от события, поэтому здесь они собраны по каждому из них.
Что еще есть в шаблоне
Кроме event, в тексте доступны обычные переменные шаблонов сообщений:
| Переменная | Что это |
|---|---|
member | Участник события: тот, о ком оно (event.targetId), а если такого нет, то тот, кто его вызвал (event.actorId). Если участника нет совсем, например при событии по расписанию, это бот |
chat | Чат, в котором работает сценарий |
bot | Бот |
event | Событие, свойства ниже |
Общие свойства
Эти свойства есть у любого события. У событий по расписанию участников нет, поэтому event.actorId и event.targetId пустые.
| Свойство | Тип | Что содержит |
|---|---|---|
event.type | Строка | Тип события, например level.up или mod.warn |
event.actorId | Число или пусто | ID того, кто совершил действие, например модератора. Если действие совершил не человек, пусто |
event.targetId | Число или пусто | ID того, кого событие касается |
event.threadId | Число или пусто | ID топика, если событие произошло в топике |
Свойства из таблиц ниже добавляются к общим. Если у события нет нужного свойства, оно пустое. Проверяйте это условием: {% if event.reason %}…{% endif %}.
Участники
| Событие | Свойства |
|---|---|
| Участник вошел | Только общие: event.targetId вошедший, event.actorId тот, кто его добавил |
| Участник вышел | Только общие. event.actorId есть, если участника удалил другой человек |
| Заявка на вступление | Только общие: event.targetId подавший заявку |
| Участник сменил имя | event.from старое имя, event.to новое имя. Событие приходит, только если в чате включен журнал смены имен |
| Закончился режим новичка | Только общие |
| Капча пройдена, Капча провалена | Только общие |
| Новый уровень | event.level достигнутый уровень |
Модерация
Во всех событиях модерации event.actorId это модератор, event.targetId наказанный участник.
| Событие | Свойства |
|---|---|
| Выдано предупреждение | event.caseNo номер кейса, event.reason причина |
| Снято предупреждение | event.caseNo номер кейса и event.relatedCase номер снятого предупреждения. При снятии всех сразу вместо них event.clearedCount сколько снято |
| Выдан мут | event.caseNo, event.reason, event.until время окончания в миллисекундах Unix, если срок задан |
| Снят мут | event.caseNo |
| Выдан бан | event.caseNo, event.reason, event.until |
| Снят бан | event.caseNo |
| Участник исключен | event.caseNo, event.reason |
| Наказание истекло | event.caseNo номер кейса. Вид истекшего наказания в шаблон не передается: event.type всегда тип самого события |
Роли и права
| Событие | Свойства |
|---|---|
| Назначен администратор | Только общие. event.actorId назначивший |
| Администратор разжалован | Только общие |
| Изменены права администратора | event.rights_diff.added и event.rights_diff.removed: списки прав, которые добавили и убрали |
Сообщения
| Событие | Свойства |
|---|---|
| Новое сообщение | event.message.id номер сообщения, event.message.text текст, event.message.linkCount число ссылок. event.actorId и event.targetId это автор |
| Сообщение изменено | event.message_id номер сообщения |
| Бот удалил сообщение | Автомодерация: event.message_id, event.thread_id, event.filter название фильтра, event.earlier пометка, что удалено раньше. Команда /del: event.messageId |
| Сообщение закреплено | event.message_id, если закрепил человек в Telegram, и event.messageId, если закрепили командой /pin |
Названия свойств
Свойства разных событий исторически названы по-разному: где-то message_id, где-то messageId. Названия в таблицах точные, пишите их так же.
Автомодерация
| Событие | Свойства |
|---|---|
| Сработала автомодерация | event.filter название фильтра, event.action примененное наказание, event.excerpt фрагмент сообщения, event.infraction_case номер кейса, если наказание выдано. event.targetId нарушитель |
Чат
| Событие | Свойства |
|---|---|
| Изменено название чата | event.from старое название, event.to новое |
| Изменено фото чата | Только общие |
| Создан топик | event.thread_id ID топика, event.name название |
| Изменен топик | event.from старое название, event.to новое |
| Закрыт топик | event.thread_id |
| Начат видеочат | Только общие |
По расписанию
События «Каждый день», «Каждую неделю» и «Через равные промежутки» несут только event.type. Участника нет, поэтому member это бот, а действия и условия про участника недоступны.
Клубы
События «Игрок вступил в клуб» и «Игрок покинул клуб» описывают игрока Brawl Stars, а не участника чата.
| Свойство | Тип | Что содержит |
|---|---|---|
event.player.tag | Строка | Тег игрока с решеткой, например #2YPLR8Y |
event.player.name | Строка | Никнейм |
event.player.trophies | Число | Кубки |
event.player.role | Строка | Роль в клубе |
event.club.tag | Строка | Тег клуба с решеткой |
event.club.name | Строка | Название клуба |
event.telegram.linked | Да или нет | Привязан ли тег игрока к Telegram |
event.telegram.username | Строка | Юзернейм в Telegram без @, пусто, если не привязан или юзернейма нет |
event.telegram.userId | Число или пусто | ID в Telegram |
Если Telegram привязан и ID известен, member это этот участник чата, и можно писать {{ member }}. Подробнее: События клуба.
Примеры
Поздравление с уровнем:
{{ member }} получил уровень {{ event.level }}!Предупреждение с причиной, если она указана:
{{ member }}, вам вынесено предупреждение №{{ event.caseNo }}.{% if event.reason %} Причина: {{ event.reason }}.{% endif %}Игрок вышел из клуба:
Игрок {{ event.player.name }} ({{ event.player.tag }}) покинул клуб {{ event.club.name }}
Кубки: {{ number_format(event.player.trophies) }}
{% if event.telegram.linked %}Telegram: {% if event.telegram.username %}@{{ event.telegram.username }}{% else %}привязан{% endif %}{% else %}Telegram не был привязан{% endif %}Сообщение со ссылкой (для события «Новое сообщение»):
{{ member }}, ссылок в сообщении: {{ event.message.linkCount }}События, которые пока не срабатывают
Внимание
Эти события есть в списке выбора, но бот пока их не отправляет, поэтому сценарии на них не запустятся: «Заявка одобрена», «Заявка отклонена», «Изменились роли», «Добавлен буст», «Сработала лесенка». Не стройте на них сценарии, пока они не появятся в заметках к версии.