Свои команды: от подстановки до условия

Команда бота — это текст, который он скажет в чат. В текст можно вставлять подстановки (ник зрителя, название стрима, случайное число) и блоки — условия, счёт, выбор. Ниже всё, что понимает бот, с примерами.

1

Где заводить команды

На сайте: панель управления → «Команды канала» → «Добавить команду». Там же настраиваются права, кулдаун, алиасы и автоповтор, а текст проверяется на лету.

Из чата — модератору канала:

!создать !обнял ${user} обнял ${arg1}

Из чата команда заводится с обычными правами и кулдауном 30 секунд; поменять их можно только на сайте. Изменить текст — !ред, удалить — !удалить.
2

Подстановки

Подстановка — это ${…} в тексте команды. Бот заменяет её на значение в тот момент, когда отвечает.

${notag} без тега Бот не обратится к тому, кто вызвал команду.
${user} ник зрителя Имя того, к кому обращена команда: вызвавшего либо указанного после команды.
${randomchatter} случайный зритель Случайный ник из чата. Twitch: боту нужна модерка. Kick: не поддерживается.
${title} название стрима Текущее название трансляции.
${game} категория Текущая категория трансляции.
${arg1} 1-е слово Первое слово после команды.
${arg2} 2-е слово Второе слово после команды.
${arg3} 3-е слово Третье слово после команды.
${args} все слова Всё, что написано после команды.
${rand 1 100} случайное число Случайное число от первого до второго включительно.
${arg1:кто-нибудь} слово или запасное Первое слово после команды, а если его нет — то, что написано после двоеточия. Работает и с ${arg2}, ${arg3}, ${args}, ${user}.
На автоповторе зрителя и аргументов нет, поэтому ${user} и ${arg…} там пусты — вместе с обращением «@» перед ними. Если команда должна что-то сказать и на автоповторе, пользуйтесь подстановкой с умолчанием: ${arg1:кто-нибудь}.
3

Блоки

Блок — это {слово …} в тексте команды. Блоки считаются до того, как подставляются значения, и умеют то, чего подстановка не умеет: выбирать, считать и сравнивать.

{if} если Разный ответ по условию. Можно {elif} и {else}, закрывается {end}.
{math} счёт Сложение, вычитание, умножение, деление и остаток. Степени нет.
{pick} выбор Один вариант из перечисленных через черту.
{countdown} сколько осталось Сколько времени до даты: ДД.ММ или ДД.ММ.ГГГГ, можно с часами.
{countup} сколько прошло Сколько времени прошло с даты.
{upper} ЗАГЛАВНЫМИ Текст заглавными буквами.
{lower} строчными Текст строчными буквами.
{len} длина Сколько знаков в тексте.
{urlencode} для ссылки Текст, пригодный для подстановки в адрес.

{if} обязательно закрывается {end}; между ними может быть сколько угодно {elif} и один {else}. Остальные блоки закрываются сами.

4

Что можно написать в условии

Внутри {if} и {math} разрешены числа, текст в кавычках, подстановки, круглые скобки и вот эти действия:

== != равно и не равно; регистр букв не важен
< > <= >= больше, меньше — числа как числа, текст по алфавиту
contains содержит ли текст слева текст справа
starts ends начинается с … и заканчивается на …
and or not и, или, не
+ - * / % сложить, вычесть, умножить, разделить, остаток
Текст в условии пишется В КАВЫЧКАХ: {if ${arg1} == "да"}. Слово без кавычек — ошибка, а не строка: молча считать его текстом значило бы превратить опечатку в вечно ложное условие.
5

Готовые примеры

Обнять — а без аргумента переспросить:

{if ${arg1} == ""}кого обнимать-то?{else}${user} обнял ${arg1}{end}

То же самое короче, через умолчание:

${arg1:кого-нибудь} получает пирожок

Сколько осталось до даты:

До Нового года {countdown 01.01}

Два кубика:

выпало {math ${rand 1 6} + ${rand 1 6}}

Случайный выбор:

${user}, сегодня ты {pick кот|пёс|бобр}

Несколько веток подряд:

{if ${args} contains "спасибо"}и тебе!{elif ${args} == ""}чего молчишь?{else}не понял{end}

6

Если бот отвечает скобками

Значит текст не разобрался — чаще всего забыт {end}. Редактор на сайте проверяет текст при вводе, показывает, что не так и на каком знаке, и не даёт сохранить сломанное — не стирая написанное.

Из чата такой текст тоже не примут: !создать и !ред ответят, что в тексте ошибка.

Команда без блоков работает ровно как раньше. Фигурные скобки сами по себе блоком не считаются: «{кто-то}» останется обычным текстом.
← ко всем командам

Вход на peepebot

Выберите площадку.

Пароль вводится на самой площадке: мы его не видим и не храним.