У попередніх статтях ми розібрали, що таке Streamer.bot, як створювати команди та працювати з тригерами. Сьогодні поговоримо про найцікавіше — Sub-Actions. Я наведу кілька прикладів їх використання і як в попередньому разі, постараюсь виділити основні, якими варто користуватись.
Sub-Action (Під-дія) - це конкретна дія, яку виконує Streamer.bot після спрацювання тригера. Якщо тригер - це "КОЛИ щось відбувається", то Sub-Action - це "ТОДІ зроби ось це".
В Українській мові, немає дослівного перекладу sub-action. Для зручності, використовуватиметься абревіатура SA, або просто — під-дія.
Якщо ви читали попередні статті, то ви вже бачили кілька з них: написання повідомлення в чат, логування повідомлень, тощо. Але функціонал цим, звичайно не обмежується.
Примітка. Sub-action, як і тригерів може бути скільки завгодно. Вони відпрацьовують завжди зверху вниз.
Як створити Sub-Action?
Для початку, нам потрібно перейти головному меню SB (Streamer.bot) в Actions & Queues → Action. Бачимо знайомі 3 вікна. Нам потрібно натиснути ПКМ на вікно, де знаходиться надпис Sub-Actions. Виглядатиме це приблизно так:

Далі, ми обираємо, що нам потрібно, почати стрим, написати повідомлення, забанити, зняти таймаут, змінити категорію, тощо. Варіантів настільки багато, що все залежить від вашої уяви. Можна навіть зробити скрипт, який комп’ютер здатен вимикати, або відкривати якусь програму. Більш детальні приклади (щоб не повторюватись) розглянемо в розділі видів SA.
Уточнення
Перед тим, як перейти до детального огляду SA, рекомендую ознайомитись з статею про Змінні. Вона допоможе вам опанувати розуміння, що це таке і як вони працюють.
Примітка. Будь-який sub-action, який має текстове поле, може приймати аргументи, чи змінні.
Посилання про змінні я залишу в Корисних посиланнях.
Види Sub-Action
Якщо ви хочете більш детально ознайомитись з тим, які бувають SA, рекомендую перейти по цьому посиланню. Тут зібрані усі SA, з їх налаштуваннями. Я постараюсь більш коротко і зрозуміло пояснити, які вони бувають.
Core - Це універсальні дії, які не залежать від платформи стримінгу.
Delay - це затримка. Дуже корисно, якщо вам треба зробити якусь паузу між діями. Час вимірюється у мілісекундах (1000мс = 1с). Можна поставити діапазон.
Actions - це SA, які спрямовані на дії (Action), щоб дізнатись стан, чи вони увімкненні, або вимкненні. Можна також керувати ними.
Run Action - Дозволяє запускати іншу Action з поточної дії. Це зручно, щоб не дублювати якісь дії, а виносити функціонал і викликати його через Run Action.
Get Action State/Group State - SA, що дозволяє дізнатись поточний стан дії, або групи дій. 0 - вимкнено, 1 - увімкнено.
Set Action State/Group State - SA, що дозволяє змінити поточний стан дії, або групи дій. 0 - вимкнено, 1 - увімкнено.
Розумію, що це може здатись на перший погляд трохи складним. Давайте спробуємо зробити приклад. Створимо 3 дії: Підписка Tier 1, Підписка Tier 2 і базовий алерт. Додамо до підписок-алертів дію Run Action й оберемо “базовий алерт”. У “базовому алерті” зробимо вивід повідомлення в чат. Виглядатиме це наступним чином:


Нам не потрібен тригер для “базового алерта”, адже він й так виконається через Run Action.
Тепер, для кожного тіра, окрім повідомлення в чат, ми можемо додати якийсь ефект, чи звук, або ще одне повідомлення:

Головне дивіться не забувайте дивитись на порядок того, як у вас розміщені дії.
Arguments - він лише один, проте ми це розглянемо в майбутніх статтях більш детально. Аргументи, це %змінні%, але які працюють лише в області SA вашого Action. Тут ви можете назвати свій аргумент і надати йому якогось значення.
Commands - керування командами.
Get Command State - дізнатись, чи увімкнена команда
Set Command State - увімкнути/вимкнути команду
Get/Set Command Group State - те саме, але для груп
Get Commands - отримати список всіх команд
C# - тут хочу засередити окрему увагу. SB підтримує можливість писати власні скрипти, використовуючи власну бібліотеку з функціями. Треба розуміти, що майже усі SA, які тут описуються, використовують ці функції, але з більш user-friendly інтерфейсом. Детальніше про програмування для цієї програми, буде описано в майбутніх статтях, але це дуже важлива тема, якщо вам цікаво автоматизувати свої етери і додавати якийсь інтерактив з міні-іграми, вставками, API й так далі.
Execute C# Code - виконання коду. При створенні, з’явиться віконце з редактором коду. Потрібно писати там, де це позначено, нічого не видалявши при цьому.
Execute C# Method - також ми можемо написати через Execute C# Code свій перелік методів і обирати їх в цій SA. Це теж дуже зручно.
Logic - дуже важлива категорія, для керування логічними елементами.
If/Else - у програмуванні постійно використовується така конструкція (не лякайтесь, тут все доволі просто). Це потрібно, щоб дізнатись, чи проходить змінна якусь умову, якщо ІСТИННА то вона йде одним шляхом, якщо ХИБНО то за іншим. Наприклад: якщо 5 це непарне число то виконується умова IF, якщо ми робимо перевірку, чи 5 це парне число, то виконується умова else.

Ми можемо використовувати це, щоб перевіряти людей в чаті на якісь повідомлення, їх акаунт, тощо. При створенні цієї дії, буде таке вікно:

В Input треба вписати змінну/аргумент, з яким ми будемо працювати. Operation означає те, як саме порівнюватиметься наша змінна/аргумент зі значенням (Value). Список доступних операторів:
Equals - дорівнює значенню
Not Equals - не дорівнює значенню
Contains - містить текст
Regex Match - регулярний вираз (про це треба окремо почитати. Рекомендую цей сайт)
Less Than - менше ніж значення (НЕ включає саме значення)
Greater Than - більше ніж значення (НЕ включає саме значення)
Does Not Exist - змінна не існує
Equals (Ignore Case) - дорівнює (ігнорує регістр)
Not Equals (Ignore Case) - не дорівнює (ігнорує регістр)
Is Null or Empty - порожнє або null.
Давайте зробимо простий приклад використання цієї конструкції. Створимо тригер Test і через ПКМ додамо аргумент number і дамо йому значення 1. Далі, оберемо в полі input, впишемо %number%, оператор Equals і значення 1.

У нас з’явиться дві SA - True Result і False Result. У True створимо дію, яка виведе повідомлення в чат, що наше число це 1, а в False напишемо, що наше число не є 1.

Оскільки, ми в тригері, написали значення number = 1, то в чаті ми побачимо наступне:

Якщо це читають люди, які користувались SB до зміни дизайну програми, то ви можете помітити, як легше стало користуватись цією конструкцією, бо раніше це виглядало приблизно так:

Get Random Number - Генерує випадкове число.

Break - перериває виконання дії (action)
File I/O - це SA, для робити з файлами (input/output)
Write To File - записати текст у файл. Можна файл або переписувати, або додавати рядки, до наявного файлу, увімкнувши Append To File.

Read Lines From File - прочитати всі рядки
Read Random Line From File - прочитати випадковий рядок
File Exists - перевірити, чи існує файл
Folder Exists - перевірити, чи існує тека
Read Specific Line From File - прочитати конкретний рядок
Globals - це можливість створювати глобальні змінні в SB і користуватись ними, в незалежності від того, який action ми будемо використовувати (це і є різниця між аргументами).
Get Global Variables - отримати глобальну змінну.
Set Global Variables - призначити цій глобальній змінній якесь значення.
Це окрема тема, як цим користуватись, тому слідкуйте за новими статтями.
Misc - різне
Comment - це дія, яка нічого не виконує, а використовується для коментарів, щоб орієнтуватись.
Log - це те, що я розповідав в попередній статті. Записує повідомлення в лог Streamer.bot.
Information - Загальна інформація, яка завжди буде відображатися у логу;
Warning - Інформація, коли ви хочете попередити про щось;
Debug - Інформація, призначена спеціально для цілей налагодження (це вже більше про програмування);
Verbose - Детальна інформація, яка буде записана в журнал тільки в тому випадку, якщо користувач встановив рівень логу на «детальний».
В основному, ви будете використовувати Information.
Network - мережеві SA.
Fetch URL - робить HTTP запит (лише GET, якщо потрібен POST, то треба писати код). Виглядає приблизно так

Quotes - дії, що пов’язані з цитатами (про них йшла мова в статті з тригерами).
Add Quote - додати цитату
Get Quote - отримати цитату за номером
Delete Quote - видалити цитату
Get Quote Count - кількість цитат
Sounds - дії, які дозволяють вмикати звуки, або їх вимикати
Play Sound - Відтворює звуковий файл (MP3, WAV, M4A, OGG)
Play Sound From Folder - відтворює випадковий звук з теки
Stop Sound Playback - зупиняє конкретний звук
Stop all Sound Playback - зупиняє всі звуки
System - системні дії.
Keyboard Press - симулює натискання клавіші

Run a Program - запускає програму/скрипт

Toast Notification - показує Windows-сповіщення
Set Timer set - встановлення стану таймера
Clear Users From Group - видаляє учасників з групи
Integrations - категорія різних допоміжних інтеграцій, що працюють з SB.
Discord. Basic Webhook - відправити повідомлення у Discord. Насправді тема дуже цікава, адже відкриває можливість будь-яким чином контактувати з своїм Discord сервером. Документація і більш детальна інформація тут: https://discord.com/developers/docs/resources/webhook
Lumia Stream - якщо ви маєте світло, яке здатне співпрацювати з цією програмою, то ви можете ним керувати через SB!
Send Command - відправити команду
Set Color - встановити колір світла
Set To Default - повернути до стандартного
Можна, наприклад, зробити так, щоб при підписці буде на кілька секунд якийсь колір, або якщо у людини перше повідомлення в чаті, то брати її колір нікнейму і передавати на лампи.
Voicemod. Якщо ви користуєтесь цією програмою, а ще маєте платну версію, то можна змінювати свій голос будь-яким доступним
Get Current Voice - дізнатись поточний голос
Play Sound - відтворити звук з Voicemod
Select Random Voice - випадковий голос
Select Voice - вибрати голос
Select Voice By Id - вибрати за ID
Set Background Effect State - фоновий ефект
Set Censor State - цензура
Set Hear My Voice State - чути свій голос
Set Mute State - вимкнути/увімкнути мікрофон
Set Voice Changer State - увімкнути/вимкнути зміну голосу
Stop All Sounds - зупинити всі звуки
Я гадаю, що зробити редімку, яка активує голос демона, чи будь-якого іншого персонажа - найбазовіше, що можна зробити з цим.
VTube Studio - функціонал для VTюберів
Color Tint - змінити колір моделі
Get Current Model - дізнатись поточну модель
Load Model - завантажити VTuber модель
Load Model by Name - завантажити модель за назвою
Move Model - перемістити модель на екрані
Reset All Color Tints - скинути всі кольори
Send Raw Request - відправити власний запит до VTube Studio API
Set Expression State - увімкнути/вимкнути вираз обличчя
Trigger Hotkey - активувати гарячу клавішу (емоції, анімації)
Trigger Hotkey by Name - активувати за назвою
Kick. Не хочу зосереджувати на ньому сильно увагу, адже весь його функціонал побудований на Twitch, але значно обмеженіше. Тому, пройдемось дуже швидко.
Channel
Set Channel Category - змінити категорію стриму
Set Channel Title - змінити назву стриму
Chat
Send Message to Channel - відправити повідомлення в чат
Reply To Message - відповісти на конкретне повідомлення
Moderation
Ban User - забанити користувача
Unban User - розбанити користувача
Timeout User - дати таймаут
UnTimeout User - зняти таймаут
User
Add Broadcaster Information - додати інфо про стримера в змінні
Add Random Users - додати випадкових користувачів
Get User Info for Target - отримати інфо про користувача
User Groups
Add User To Group - додати користувача до групи
Remove User from Group - видалити з групи
User In Group - перевірити членство в групі
OBS Studio. Це є повне керування OBS, джерела, сцени, фільтри, тощо.
Без категорії.
Get Current Scene - отримати назву поточної сцени
Get Status - отримати статус OBS
Raw - відправити запит до OBS WebSocket API. Дуже раджу використовувати цей сайт: https://obs-raw.streamer.bot/ Він допоможе вам розібратись з тим, як працює Raw. Що це взагалі таке? Raw — це запит (команда), який відправляється до OBS, щоб здійснити якусь дію. Наприклад посунути джерело по X на 30 пікселів і на Y 40 пікселів. Усе, що ви робите в OBS, чи то запускаєте трансляцію, чи то створюєте джерело, це відправлення команди Raw до OBS. Просто існує якийсь інтерфейс, де є кнопки, що спрощують сприйняття використання цих запитів.
Recording - почати/зупинити/поставити на паузу/відновити запис
Set Active Scene - змінити активну сцену
Streaming - почати/зупинити стрим
Take Screenshot - зробити скриншот
Filters. Set State of a Random Filter - Встановити стан випадкового фільтра. Виглядає так:

Встановлюється до конкретного джерела. Можна вказати три стани: увімкнути/вимкнути/перемкнути.
Scenes. Сцени
Get Scene Item Properties - отримати властивості джерела в сцені (позиція, розмір, тощо)
Hide Scene's Sources - сховати всі джерела на сцені
Set Random Scene Source Visible - показати випадкове джерело зі сцени
Set Scene Filter State - увімкнути/вимкнути/перемкнути фільтр на сцені
Sources. Джерела
Flip Source - віддзеркалити джерело (горизонтально/вертикально)
Hide Group's Sources - сховати всі джерела в групі
Hide Source's Filters - сховати всі фільтри джерела
Rotate Source - повернути джерело на певний кут
Set Browser Source URL - змінити URL браузерного джерела
Set Color Source Color - змінити колір кольорового джерела. Можна генерувати випадковий колір
Set GDI Text - змінити текст текстового джерела
Set Image Source File - встановлює шлях до файлу для джерела зображення
Set Media Source File - встановлює шлях до файлу для джерела медіа. Приклад:

Set Media State - керування медіа. Має 6 станів: відтворення/пауза/рестарт/стоп/наступне/попереднє
Set Source Audio State - увімкнути/вимкнути/перемкнути аудіодоріжку
Set Source Filter State - увімкнути/вимкнути/перемкнути фільтр джерела
Set Source Mute State - увімкнути/вимкнути/перемкнути звук джерела
Set Source Visibility State - увімкнути/вимкнути/перемкнути джерело
Через підтримку %змінних%, ви можете керувати і вигадувати для свого OBS безмежну кількість команд, функцій, інтерактиву і багато різних цікавих речей.
Speaker.bot. Про це хотілось би написати окрему статтю, але поясню дуже коротко і в більшій статті, повернемось до SA, які пов’язанні з цією програмою. Speaker.bot - це програма, від розробника Streamer.bot, яка дозволяє використовувати різні моделі, щоб генерувати голосові повідомлення (Text-To-Speech). Він здатен підтримувати усі наявні популярні голосові рушії, які вже містять потрібні голоси (так, українські теж є). Більш детально тут: https://speaker.bot/
Twitch. Як це було з тригерами, ця категорія є найбільша. Розберемо по максимуму, але кілька категорій пропустимо (Ads, Charity Guest Star).
Channel
Add Viewer Count - додати кількість глядачів до змінних
Create Clip - створити кліп.
Примітка. Створений кліп завжди матиме тривалість 30 секунд. Назва кліпу буде відповідати назві вашого стриму на момент створення. Щоб самостійно змінити тривалість та/або назву кліпу, ви можете пізніше вручну ,відредагувавши кліп.
Create Stream Marker - додати маркер на таймлайні. Ви можете використовувати цю функцію, щоб позначити важливу подію або як нагадування про момент у трансляції, який ви хотіли б переглянути пізніше у своєму VOD.
Примітка. Маркери доступні тільки в тому випадку, якщо на вашому каналі увімкнено VOD.
Set Channel Game - змінити категорію/гру. Ви можете використовувати значення String, щоб вписувати назву категорії, або скористатись Specific Game, щоб обрати гру з категорій.
Set Channel Title - змінити назву стриму.
Chat. Чат (ого)
Clear Chat Messages - очистити чат
Reply To Message - відповісти на конкретне повідомлення.
Send Announcement to Channel - відправити анонс (фіолетове повідомлення)
Send Message to Channel - відправити повідомлення в чат. Якщо пригадуєте, то саме цей SA ми використовували в попередніх статтях
Виглядають ці SA, окрім першого, майже однаково:

Вони мають дві пташки, перша відповідає з якого акаунту писати повідомлення. Якщо увімкнено то з акаунту бота, якщо ні, то з акаунту стримера. Друга відповідає за те, якщо з ботівського акаунту не вдасться написати повідомлення, то зробити це зі стримерського (це режим увімкнено).
Followers. Фоловери
Get Follow Age Info for Target - дізнатись, як давно користувач зафоловив
Get Follower Count - отримати кількість фоловерів
Get Latest Follower - отримати останнього фоловера
Інформація цих SA буде зберігатись в даних action, де це виконується. Тобто нам треба перейти в Actions & Queues → Action History, відкрити виконану дію і переглянути результат.
Moderation. Модерація
Add Moderator - додати модератора
Add VIP - додати VIP
Ban User - забанити користувача
Chat Modes - режими чату (Emote Only, Followers Only, Slow, Subscribers Only, Unique Chat)
Remove Moderator - видалити модератора
Remove VIP - видалити VIP
Send Shoutout - відправити шаутаут
Shield Mode - режим щита (захист від набігів)
Timeout User - дати таймаут
Примітка. Якщо модератор отримав таймаут і вийшов з нього, він автоматично перепризначаться модератором. Едітор не отримує назад свої права після таймаута. Це треба призначати вручну.
Unban User - розбанити користувача
UnTimeout User - зняти таймаут
Warn User - попередити користувача
Нагадування. До кожного SA, як і в попередніх так і в наступних, можна використовувати %змінні%
Polls. Опитування
Archive Active Poll - архівувати опитування. Опитування закінчується і відразу ж приховується.
Create Poll - створити опитування. Виглядає таким чином:

Get Active Poll - отримати активне опитування. Дані зберігаються в Action History
Terminate Active Poll - передчасно закрити опитування
Predictions. Прогнози
Cancel Active Prediction - скасувати прогноз
Create Prediction - створити прогноз

Get Active Prediction - отримати активний прогноз
Lock Active Prediction - заблокувати прийом ставок
Resolve Last Prediction - завершити прогноз (вказати переможця)
Resolve Last Prediction By Title - завершити за назвою
Raid. Рейд
Cancel Raid - скасувати рейд
Start Raid - почати рейд на інший канал
Rewards. Редімки. Пам’ятаєте, я розповідав, що можна в SB створювати редімки і вони автоматично додауться на ваш Twitch канал? Так ось, це можна робити також за допомогою SA. Навіщо? Варіантів багато, можна зробити міні-гру, де з’являються і зникають редімки і хто перший забрав редімку, той переміг, а вона зникла, або подорожчала. Зробити гру, зникнуть ваші звичайні редімки на час, а їх замінять пусті редімки червоного кольору, але треба знайти одну синю. Варіантів багато, оскільки це можливість саме ДИНАМІЧНО керувати нагородами на каналі, а не статично.
Configure Rewards - налаштувати кілька редімок одночасно

У вас є можливість вмикати/вимикати і ставити на паузу кілька редімок. Достатньо взяти редімку, натиснути ПКМ і обрати категорію, до якої вона буде належати.
Get Reward Info - отримати інформацію про редімку
Reset Reward Counter - скинути лічильник редімки
Reset Reward User Counters - скинути лічильники користувачів
Set Background Color - змінити колір фону
Примітка. Це працює лише з тими нагородами, які створенні в SB.
Set Cost - змінити ціну редімки. Виглядає так:

Ми можемо використовувати оператори, щоб змінювати вартість редімки. Формула наступна: СТАРА ЦІНА ОПЕРАТОР ЗНАЧЕННЯ В ПОЛІ COST
Set Enabled State - увімкнути/вимкнути/перемкнути редімку
Set Global Cooldown - встановити глобальний кулдаун
Set Group Enabled State - увімкнути/вимкнути/перемкнути групу редімок
Set Group Paused State - увімкнути/вимкнути/перемкнути призупинення групи редімок
Set Max Per Stream - максимум редімок за стрим
Set Max per User per Stream - максимум редімок на користувача за стрим
Set Paused State - увімкнути/вимкнути/перемкнути призупинення редімку
Set Prompt - змінити опис
Set Title - змінити назву
Update - оновити всі параметри редімки
Update Redemption Status - позначити редімку як виконану/скасовану
Sub Counter. Лічильник підписок
Get Twitch Sub Counter Count - отримати кількість підписок
Set Twitch Sub Counter Count - встановити кількість підписок
Subscribers. Підписники
Get Latest Subscriber - отримати останнього підписника
Get Subscriber Count - отримати загальну кількість підписників
Tags. Теги каналу
Add Channel Tag - додати тег до каналу. Тегів може бути лише 10 і кожен обмежений 25-ма символами. Він не може мати пусті поля чи спеціальні символи
Clear Channel Tags - видалити всі теги
Remove Channel Tag - видалити тег
Set Channel Tags - встановити список тегів (замінить наявні)
User. Користувачі
Add Broadcaster Information - отримати інформацію про стрімера в змінні
Add Present User - отримати присутнього користувача. Вказується не ім’я, а індекс (числове значення). Також треба враховувати, що список присутніх глядачів змінюється під час трансляції.
Add Random Users - отримати випадкових користувачів в змінні

Get User Info for Target - отримати дані користувача Twitch за заданим значенням і заповнити набір змінних. Тут трішки детальніше. Вікно наступне:

Це дозволяє нам отримати усі дані про абсолютно будь-якого користувача. Не лише, який присутній на трансляції, а принципі, що зареєстрований на Twitch. Приклади, якими можна користуватись:
%userName% - користувач, який затригерив виконання цієї дії
genericuser - це означає, що в поле User Login ми можемо написати чийсь нікнейм, щоб отримати про нього інформацію
%input0% - це перше, що ви вводите після команди чи редімки, яка потребує тексту. Наприклад: Ви маєте команду !перевірка quarryck. %input0% буде quarryck
%broadcastUserName% - нікнейм стримера. Якщо немає спеціального тригера, то потрібно обов’язково додати SA Add Broadcaster Information, щоб виникла змінна %broadcastUserName%. Змінних дуже багато, посилання, я лишу категорії нижче, щоб ви могли самі переглянути.
User Groups. Групи користувачів
Add User To Group - додати користувача до групи
Remove User from Group - видалити користувача з групи
User In Group - перевірити, чи є користувач у групі.
Висновок
За 3 статті, ми розглянули фундаментальні компоненти, на яких побудований Streamer.bot та як він може полегшити ваше життя. Так, інформації дещо багато, але це основа вашого майбутнього функціоналу.
Надалі, статті будуть значно менші, адже саме головне - це розказати те, як він працює та що саме він має такого, щоб він вам замінив нудних ботів Streamelements, Nightbot, Streamlabs, Wize і так далі.
Корисні посилання
Посібник по SA від автора: https://docs.streamer.bot/guide/actions
Перелік усіх SA: https://docs.streamer.bot/api/sub-actions
Інформація про змінні: https://docs.streamer.bot/guide/variables
Інформація про користувача: https://docs.streamer.bot/api/sub-actions/twitch/user/get-user-info-for-target
💜Мій Twitch канал: https://www.twitch.tv/quarryck
🥰Підписатись на канал Streamer.BotUA: https://t.me/StreamBotUA
🫂Платна підписка на автора: https://base.monobank.ua/quarryck
💴Донат: https://send.monobank.ua/jar/9mvkm2Hy2z
❔Питання до автора: https://discord.gg/BmhReWjPTT