Хей, в прошлом гайде мы разобрались, как сделать команду с выбором конкретной цели. Сегодняшний гайд расскажет, как сделать команду с выбором случайного зрителя из чата твича. И как объеденить их в универсальное действие.
На момент написания гайда я использую стример.бот версии 0.2.1, миничат версии 0.12.4.β и интеграцию версии 1.0.2.
Поехали
Открываем стримербот и создаём новое действие (в дальнейшем, я буду называть действия экшенами).
В примере это [twitch] Тык.
Добавим sub-action для выбора случайного зрителя из чата твича. Twitch -> User -> Add Random Users.
В Count пишем 1, так как нам нужен всего один зритель. Галочка Present Only отвечает за то, чтобы бот взял зрителя из текущего списка, а не из списка всех зрителей вашего канала.
Далее, дадим боту случайную строчку из вашего файла с фразами-ответами. Напомню, что делается это через Core -> File IO -> Read Random Line From FIle.
Не забываем про галочку Parse variables.
Поскольку этот экшн делается только для твича, воспользуемся встроенной функцией отправки сообщений на твич. Добавляем sub-action Twitch -> Chat -> Send Message to Channel.
В Preferred Account выбираем аккаунт от имени которого отправится сообщение. В поле Message пишем %randomline%.
Далее мы сделаем экшн более универсальным.
Универсализация
Создаём новый экшн. Я назвал его просто тык так как он объеденит в себе вызовы целевого тыка из прошлого гайда, случайного тыка для твича из этого и случайного тыка на вкпл из будущего гайда.
Накинем логику, по которой экшн будет понимать, требуется от него случайный тык на конкретной площадке, или целевой откуда угодно. Напомню, что выбор рандомного зрителя, на момент написания гайда, возможен только на твиче и вкпл.
Добавляем sub-action Core -> Logic - If/Else.
Дальнейшая магия будет немного похожа на программирование, но не пугайтесь, после я объясню, что мы сделали.
В появившемся окошке:
- в variable пишем rawInput,
- в operator выбираем Not Equals,
- в value оставляем пустоту,
- в do action выбираем наш экшн из прошлого гайда, у меня он назывался Тыкнуть,
- ставим галочку Run Action Immediatley,
- в then выбираем Break.
- В блоке Else Condition оставляем do action без выбранного действия (<No Action Selected>),
- в then выбираем Continue.
Что же мы сделали?
В переменную rawInput попадает текст, набранный зрителем после команды -- если зритель напишет !тык редиску, то в rawInput запишется редиску. Тогда, если rawInput не является пустой строкой (Not Equals value <пустая строка>), то тыкающий сам выбрал цель и мы запускаем (do action) наш таргетный тык. После этого прекращаем работу экшона (then Breake).
Иначе, если rawInput пустая, то пользователь хочет сделать случайный тык. Тогда посылаем экшен дальше делать дополнительные проверки. (Else Condition then continue).
Далее, создаём If/Else sub-action для проверки, что команда пришла с твича.
- в variable пишем commandSource,
- в operator выбираем Equals,
- в value пишем twitch,
- в do action выбираем экшн из текущего гайда -- [twitch] тык.
- Не забываем про галочку Run Action Immediately.
- И в then выбираем Break.
- Блок Esle Condition делаем так же, как в прошлом sub-action.
Что мы сделали на этот раз? В commandSource записывается площадка, с которой была вызвана команда. И если это был твич (Equals value twitch), то мы выполняем наш твичёвский экшн и выходим. Иначе, переходим к следующей проверке, которая будет в следующем гайде про команду на вкпл. Поскольку сейчас следующего sub-action нет -- экшн просто завершится.
Теперь нам осталось добавить триггер для вызова общего экшена. Напомню, что в случае триггера через команду это делается в Core -> Commands -> Command Triggered, где мы можем выбрать существующую команду или создать новую.
Бонус
Мы можем сделать наш тык ещё более универсальным и добавить активацию не только командой, но и наградой за баллы твича.
Для этого создаём на твиче две награды. Я назвал их соответственно эшкенам:
- !тык -- простая награда,
- !тыкнуть -- награда с обязательным вводом текста.
После создания наград мы можем добавить их в качестве триггеров. Переключаемся на экшн Тыкнуть и в области Triggers создаём Twitch -> Channel Reward -> Reward Redemption.
В появившемся окошке ищем нашу награду !тыкнуть.
Готово. Теперь целевой тык будет работать как по команде !тык цель тыка, так и по награде !тыкнуть.
Таким же образом можем переключиться на экшн [twitch] Тык и добавить ему в триггеры награду !тык.
Итого
Если вы следовали гайдам по порядку, то на данный момент мы имеем:
- Экшн Тыкнуть, который тыкает указанную зрителем цель и вызывается командой !тыкнуть (бонусная часть первого гайда), наградой !тыкнуть на твиче и экшеном Тык.
- Экшн [twitch] тык, который тыкает случайного зрителя на твиче и вызывается наградой !тык на твиче и экшеном Тык.
- Экшн Тык, который является универсальным действием и сам выбирает целевой это тык или случайный и вызывается командой !тык.
В следующем гайде мы сделаем случайный тык на вкпл и объеденим его с твичёвским через наш универсальный Тык. В итоге, на твиче и вкпл можно будет тыкаться случайно или целенаправленно, командой или за баллы.
Всем бобра!
Если у вас появились вопросы по этому гайду или запросы на гайд, которого ещё нет -- пишите в комментарии, тг, дискорд и приходите на стримы.
Видео-гайд обязательно выйдет позже, когда я перестану заходиться часовым кашлем после каждого слова xD
Сказать спасибо за гайды можно несколькими способами:
1. Оформить подписку на бусти.
2. Закинуть донат на бусти. Можно и на DA, но без стрима лучше не надо.
3. Просто прийти на стрим (они по выходным, если я не болею) и увидеть интерактивы в действии.