diff --git a/streamerbot/1.get-started/_faq/1.assign-action.md b/streamerbot/1.get-started/_faq/1.assign-action.md index 5dbb36a4..e0f6196d 100644 --- a/streamerbot/1.get-started/_faq/1.assign-action.md +++ b/streamerbot/1.get-started/_faq/1.assign-action.md @@ -2,6 +2,6 @@ description: Why can I no longer assign an action to an event? --- -Since update v0.2.0, the actions are no longer assigned in the event, but the other way round. In the `Actions` tab, you will now find a `Triggers` area in which you can select an event/trigger like commands, a subscription, an OBS event and many more triggers for the respective action. +Since Streamer.bot v0.2.0, the actions are no longer assigned in the event, but the other way round. In the `Actions` tab, you will now find a `Triggers` area in which you can select an event/trigger like commands, a subscription, an OBS event and many more triggers for the respective action. ![Add Trigger Animation](../assets/add-trigger.gif) diff --git a/streamerbot/1.get-started/_faq/12.exclude-users.md b/streamerbot/1.get-started/_faq/12.exclude-users.md index 8068bb90..45eebda9 100644 --- a/streamerbot/1.get-started/_faq/12.exclude-users.md +++ b/streamerbot/1.get-started/_faq/12.exclude-users.md @@ -2,6 +2,8 @@ description: How can I exclude bots/certain users from an action like *First Words*? --- -For the most cases, this can be accomplished by an if/else-subaction (`Core -> Logic -> If/Else`). The goal is to check for the username and if it matches, break the action (`if user equals (Ignore Case) TheUserName break, else continue`). You can also make use of groups (`Settings -> Groups`) and check if a user is in a group (e.g. `Twitch -> User Groups -> User In Group`) and break the action if they are. +For the most cases, this can be accomplished by an if/else-subaction (`Core -> Logic -> If/Else`). The goal is to check for the username and if it matches, break the action. So for `Input` we enter the variable `%userName%`, choose `Equals (Ignore Case)` as the `Operation` and the actual username in the `Value` field. And to make it break, we then add a `Core -> Logic -> Break` subaction into `True Result`. + +You can also make use of groups (`Settings -> Groups`) and check if a user is in a group (e.g. `Twitch -> User Groups -> User In Group`) and break the action if they are. ![Exclude User Example](../assets/exclude-user.png) diff --git a/streamerbot/1.get-started/_faq/13.user-in-group.md b/streamerbot/1.get-started/_faq/13.user-in-group.md index 754ce6f2..e6e92f9a 100644 --- a/streamerbot/1.get-started/_faq/13.user-in-group.md +++ b/streamerbot/1.get-started/_faq/13.user-in-group.md @@ -1,9 +1,9 @@ --- description: How do I check whether a user is in a group? --- -Since version 0.2.3, platform-specific group sub-actions have been introduced, accessible in the context menu under `User Groups`. If you want to check whether a Twitch user is in a group via sub-actions, navigate to `Twitch -> User Groups -> User In Group`. You can either input a direct username or use a variable such as `%userName%` or `%targetUserName%`, followed by the group name. The sub-action will generate a variable called `inGroup`, which you can utilize in an if/else sub-action (`if inGroup Equals True continue, else break`). +Since version 0.2.3, platform-specific group sub-actions have been introduced, accessible in the context menu under `User Groups`. If you want to check whether a Twitch user is in a group via sub-actions, navigate to `Twitch -> User Groups -> User In Group`. You can either input a direct username or use a variable such as `%userName%` or `%targetUserName%`, followed by the group name. The sub-action will generate a variable called `inGroup`, which you can utilize in an if/else sub-action (`if %inGroup% Equals True continue (do nothing), else break with the break subaction`). -This can also be done in C#. Create a subaction `Core -> C# -> Execute C# Code`) and paste the code below in there. Replace *group1* with the name of your group. Hit *Save and Compile* afterwards. This will provide the `%inGroup%` variable, that you can then check against in an if/else-subaction (`if inGroup equals True continue, else break`). +This can also be done in C#. Create a subaction `Core -> C# -> Execute C# Code`) and paste the code below in there. Replace *group1* with the name of your group. Hit *Save and Compile* afterwards. This will provide the `%inGroup%` variable, that you can then check against in an if/else-subaction (`if %inGroup% Equals True continue (do nothing), else break with the break subaction`). Since 0.2.3, all C# group methods require a platform property, like shown below in the code example. **After 0.2.3** @@ -39,4 +39,4 @@ public class CPHInline return true; } } -``` \ No newline at end of file +``` diff --git a/streamerbot/1.get-started/_faq/15.obs-media-source-delay.md b/streamerbot/1.get-started/_faq/15.obs-media-source-delay.md index e1c0df8f..fe85d98f 100644 --- a/streamerbot/1.get-started/_faq/15.obs-media-source-delay.md +++ b/streamerbot/1.get-started/_faq/15.obs-media-source-delay.md @@ -4,7 +4,7 @@ description: Can I get a dynamic delay of an OBS media source? Yes, this can be done with OBS Raw (`OBS -> Raw`) and a [GetMediaInputStatus request](). Paste the code below into the Raw subaction and replace the inputName with the name of your media source. This request will populate a `%obsRaw.mediaDuration%` variable that gives the media duration in milliseconds. You can then use that variable within the `Delay` subaction. -__Note__: For the variable to populate, the media source needs to be visible. Use a `Set Source Visibility State` subaction to make it visible, add a delay of 100ms and then use the Raw subaction. (Example: [see here]()) +__Note__: For the variable to populate, the media source needs to be visible. Use a `Set Source Visibility State` subaction to make it visible, add a delay of 100ms and then use the Raw subaction. (Example: [see here]()) ```json { diff --git a/streamerbot/1.get-started/_faq/16.obs-filter-settings.md b/streamerbot/1.get-started/_faq/16.obs-filter-settings.md index 3e5d9e3c..9b7df573 100644 --- a/streamerbot/1.get-started/_faq/16.obs-filter-settings.md +++ b/streamerbot/1.get-started/_faq/16.obs-filter-settings.md @@ -4,7 +4,7 @@ description: Can StreamerBot change the settings within a filter (like Move Valu This can be done with an OBS Raw subaction (`OBS -> Raw`) and a [SetSourceFilterSettings request](). To find out what the correct settings for a request are called, you can manually set the settings on your filter and do a [**Get**SourceFilter request]() beforehand. This will give you the list of settings. -In [this example]() a GetSourceFilter request for a *Move Value* filter with a *Type Writer* effect on a text source was done and returned `"settings_text"`. So we use that in our **Set**SourceFilterSettings request [like so](). +In [this example]() a GetSourceFilter request for a *Move Value* filter with a *Type Writer* effect on a text source was done and returned `"settings_text"`. So we use that in our **Set**SourceFilterSettings request [like so](). You can also use variables within the request (__Note__: If you click "Test" on the Raw subaction, the variable won't be populated. In that case you will have to test the entire action). @@ -21,4 +21,4 @@ You can also use variables within the request (__Note__: If you click "Test" on } } ``` -This can also be done for filters on a scene, but you won’t be able to select it on the OBS Raw website. In that case, do a request in a subaction, use the scene name as the sourceName and hit “Test”. \ No newline at end of file +This can also be done for filters on a scene, but you won’t be able to select it on the OBS Raw website. In that case, do a request in a subaction, use the scene name as the sourceName and hit “Test”. diff --git a/streamerbot/1.get-started/_faq/17.current-game-toggle.md b/streamerbot/1.get-started/_faq/17.current-game-toggle.md index 63e7dab0..3c6a85bd 100644 --- a/streamerbot/1.get-started/_faq/17.current-game-toggle.md +++ b/streamerbot/1.get-started/_faq/17.current-game-toggle.md @@ -3,8 +3,8 @@ description: How can I enable actions/rewards/commands based on the current game --- There are two options. The first one would be to trigger whenever you change your category on Twitch. You'd use the [Stream Update]() trigger and create an if/else-subaction (`Core -> Logic -> If/Else`) to check for: -`if gameName equals GameX do ActionY`, where ActionY would contain all subactions to enable/disable whatever you want. +`if %gameName% Equals GameXYZ` and put the action you want to run into the `True Result`. That action would contain all subactions to enable/disable whatever you want. -The second option is to check for when the game process starts on your PC. You'd use the [Process Started]() trigger (`Core -> Processes -> Process Started`) for that. You can then specify the name within the trigger, it usually is just the name that pops up in your [task manager](). If there are multiple process names available, try them out one by one and see which one triggers the action. +The second option is to check for when the game process starts on your PC. You'd use the [Process Started]() trigger (`Core -> Processes -> Process Started`) for that. You can then specify the name within the trigger, it usually is just the name that pops up in your [task manager](). If there are multiple process names available, try them out one by one and see which one triggers the action. Make sure process watcher is enabled in Streamer.bot's settings, too. -**Note**: Some games with anticheat will prevent you from using the process as a trigger. \ No newline at end of file +**Note**: Some games with anticheat will prevent you from using the process as a trigger. diff --git a/streamerbot/1.get-started/_faq/18.streamerbot-chat-variables.md b/streamerbot/1.get-started/_faq/18.streamerbot-chat-variables.md index f2ed2342..707df359 100644 --- a/streamerbot/1.get-started/_faq/18.streamerbot-chat-variables.md +++ b/streamerbot/1.get-started/_faq/18.streamerbot-chat-variables.md @@ -2,4 +2,4 @@ description: Why are my variables like %user% or %rawInput% not parsing when using Quick Actions from the internal chat? --- -The variables for the Quick Action Bar are different from the ones in commands or rewards. It's `%displayName%` instead of `%user%` or `%message%` instead of `%rawInput%`. To see all available variables on the Quick Action Bar, doubleclick the action in the `Action Queues -> Action History` tab. +The variables for the Quick Action Bar are different from the ones in commands or rewards. It's `%displayName%` instead of `%user%` or `%message%` instead of `%rawInput%`. To see all available variables on the Quick Action Bar, doubleclick the action in the `Actions & Queues -> Action History` tab. diff --git a/streamerbot/1.get-started/_faq/2.tts-delay.md b/streamerbot/1.get-started/_faq/2.tts-delay.md index e142b15b..94d0e95e 100644 --- a/streamerbot/1.get-started/_faq/2.tts-delay.md +++ b/streamerbot/1.get-started/_faq/2.tts-delay.md @@ -2,6 +2,6 @@ description: Is it possible to have a dynamic delay for the duration of the TTS? --- -With v.0.2.3 you are now able to use the new `Speaker.bot -> Speak` subaction. This requires a websocket connection. Navigate to `Settings -> Websocket Server` in **Speaker.bot** and start the server. In **Streamer.bot** then go to `Integrations -> Speaker.bot` and connect it there. You can then check *Delay* on the subaction and the upcoming subactions will wait until TTS has finished. Checking the *Delay* box also populates the `%duration%` variable (ms). +Since Streamer.bot v.0.2.3 you are able to use the new `Speaker.bot -> Speak` subaction. This requires a websocket connection. Navigate to `Settings -> Websocket Server` in **Speaker.bot** and start the server. In **Streamer.bot** then go to `Integrations -> Speaker.bot` and connect it there. You can then check *Delay* on the subaction and the upcoming subactions will wait until TTS has finished. Checking the *Delay* box also populates the `%duration%` variable (ms). ![Speakerbot Speak Subaction](../assets/tts-delay.png) diff --git a/streamerbot/1.get-started/_faq/26.obs-alerts-after-update.md b/streamerbot/1.get-started/_faq/26.obs-alerts-after-update.md index cc5a08ac..b4c9e1bc 100644 --- a/streamerbot/1.get-started/_faq/26.obs-alerts-after-update.md +++ b/streamerbot/1.get-started/_faq/26.obs-alerts-after-update.md @@ -2,6 +2,7 @@ description: Actions are triggering but OBS Alerts are not showing up? --- -After updating Streamer.bot or OBS, some of your OBS alerts are not working correctly anymore? You confirmed that they are running in your action history (`Action Queues -> Action History`), and they also work fine when testing the OBS subactions themselves? +After updating Streamer.bot or OBS, some of your OBS alerts are not working correctly anymore? You confirmed that they are running in your action history (`Actions & Queues -> Action History`), and they also work fine when testing the OBS subactions themselves? -The usual fix for this would be to go to `StreamApps -> OBS`, here you right-click the OBS connection which you are using to display your alerts, then click on `Update All Actions to...`. This will update **ALL** your OBS sub-actions to that specific OBS connection, so be also mindful when you use it. If you don't want to update all your sub-actions you'd have to go to each action and "update" the OBS subaction by re-setting them to the OBS connection again. \ No newline at end of file + +The usual fix for this would be to go to `StreamApps -> OBS`, here you right-click the OBS connection which you are using to display your alerts, then click on `Update All Actions to...`. This will update **ALL** your OBS sub-actions to that specific OBS connection, so be also mindful when you use it. If you don't want to update all your sub-actions you'd have to go to each action and "update" the OBS subaction by re-setting them to the OBS connection again. diff --git a/streamerbot/1.get-started/_faq/3.tts-speaks-twice.md b/streamerbot/1.get-started/_faq/3.tts-speaks-twice.md index c0b65676..bcf16548 100644 --- a/streamerbot/1.get-started/_faq/3.tts-speaks-twice.md +++ b/streamerbot/1.get-started/_faq/3.tts-speaks-twice.md @@ -2,4 +2,4 @@ description: My TTS is speaking twice, why's that? --- -On rare occasions the UDP broadcast can cause SpeakerBot to speak twice. StreamerBot v0.2.3 now has a websocket speak subaction (`Speaker.bot -> Speak`) that won't cause this issue. As for the UDP subaction, a PC restart will fix this. +On rare occasions the UDP broadcast can cause SpeakerBot to speak twice. StreamerBot v0.2.3 introduced a websocket speak subaction (`Speaker.bot -> Speak`) that won't cause this issue. As for the UDP subaction, either disabling the second (unused) network adapter or a PC restart will fix this. diff --git a/streamerbot/1.get-started/_faq/34.switch-subaction.md b/streamerbot/1.get-started/_faq/34.switch-subaction.md new file mode 100644 index 00000000..9057526e --- /dev/null +++ b/streamerbot/1.get-started/_faq/34.switch-subaction.md @@ -0,0 +1,17 @@ +--- +description: How does a Switch subaction work? +--- + +A `Core -> Logic -> Switch` subaction takes an input (such as a variable) and compares it against multiple cases. If the input matches one of the cases, the subactions inside that case will run. It works similarly to an *If/Else* subaction, but instead of being limited to just `True` or `False`, it allows for many different options. + +In this example, we use `%userName%` as the input, with individual usernames defined as cases. + +To add a new case, right-click the subaction and select **Add Case**. Enter the desired value, then click **Add** and **OK** when you’re finished. You can include multiple values within a single case, or just keep one — it’s up to you. Add as many cases as you need. + +Next, add the subactions to each case. In our example, we use `Send Message` subactions to give specific users a personalized welcome message. + +The **Default** case acts as a *catch-all*: if none of the cases above it match, the default case will be used instead. + +*Note: If you are using numbers, make sure to check `Auto Type`* + +![Switch Subaction](../assets/switch.png) diff --git a/streamerbot/1.get-started/_faq/35.while-subaction.md b/streamerbot/1.get-started/_faq/35.while-subaction.md new file mode 100644 index 00000000..93366594 --- /dev/null +++ b/streamerbot/1.get-started/_faq/35.while-subaction.md @@ -0,0 +1,15 @@ +--- +description: How does a While subaction work? +--- + +A `Core -> Logic -> While` subaction allows you to create a loop that runs until a certain condition is met. Once the condition is no longer true, the loop stops executing. + +In this example, we create a numeric variable `%myNumber%` and set it to `1`. With each loop cycle, we increment this variable by `1` using a math-inline operation, then post a message. We want to repeat this process until the variable reaches the value `5`. + +For the configuration, we use `%myNumber%` as the **Input**, `Less Than` as the **Operation**, and `5` as the **Value**. This means that as long as the variable is less than `5`, the loop will continue to run. Once it reaches `5`, the loop ends and execution continues with any subactions that follow. + +**⚠️ Note:** A misconfigured *While* subaction can cause an infinite loop. In such a case, you’ll need to exit Streamer.bot to stop it. Be careful when setting up loops and always ensure you have valid break conditions. + + + +![Switch Subaction](../assets/while.png) diff --git a/streamerbot/1.get-started/_faq/5.random-subaction.md b/streamerbot/1.get-started/_faq/5.random-subaction.md index 77b5b566..94c71ab2 100644 --- a/streamerbot/1.get-started/_faq/5.random-subaction.md +++ b/streamerbot/1.get-started/_faq/5.random-subaction.md @@ -2,6 +2,6 @@ description: How do I run a random subaction? --- -You can either rightclick an action and check *Random*, so a single subaction within the action is being picked randomly. Or you can create a group within the subactions, then rightclick that group and check *Random*. This will then only run a random subaction **within** the group. All the other subactions in the action outside the group will run from top to bottom as usual. (Example: [see here]()) +You can either rightclick an action and check *Random*, so a single subaction within the action is being picked randomly. Or you can create a group within the subactions, then rightclick that group and check *Random*. This will then only run a random subaction **within** the group. All the other subactions in the action outside the group will run from top to bottom as usual. (Example: [see here]()) -**Note**: Once "Random" is checked, you can rightclick the subactions and set their weight to set their probabilities. \ No newline at end of file +**Note**: Once "Random" is checked, you can rightclick the subactions and set their weight to set their probabilities. diff --git a/streamerbot/1.get-started/_faq/6.view-variables.md b/streamerbot/1.get-started/_faq/6.view-variables.md index 36611e8c..49b877f1 100644 --- a/streamerbot/1.get-started/_faq/6.view-variables.md +++ b/streamerbot/1.get-started/_faq/6.view-variables.md @@ -4,4 +4,4 @@ description: How do I know which variables are available? The easiest way would be to check out the [Streamer.bot docs](/api) and look for the trigger or subaction you are using. A full list of variables will be given there, e.g. [Twitch Follow trigger](/api/triggers/twitch/channel/follow). -A second method would be to run the action, then go into the **Action Queues** tab, into the **Action History** and then doubleclick the action that has run. This will give you all variables that have been populated. (Example: [see here]()) +A second method would be to run the action, then go into the **Action Queues** tab, into the **Action History** and then doubleclick the action that has run. This will give you all variables that have been populated. (Example: [see here]()) diff --git a/streamerbot/1.get-started/_faq/8.twitch-user-info.md b/streamerbot/1.get-started/_faq/8.twitch-user-info.md index 77059f0f..769a60ac 100644 --- a/streamerbot/1.get-started/_faq/8.twitch-user-info.md +++ b/streamerbot/1.get-started/_faq/8.twitch-user-info.md @@ -2,4 +2,7 @@ description: How do I get the profile picture or most recent game of a Twitch user? --- -Those variables are being populated by the *Get User Info For Target* subaction (`Twitch -> User`). For *Source Type* you can then choose between different sources. *User* is the one who redeems the trigger (e.g. the one who follows on a *Follow* trigger or uses the command on a *Command Triggered* trigger). *From Input* uses the `%rawInput%` as the target, so the command `!command nate1280` would populate the variables for user *nate1280*. Just make sure the command location is set to *Start* in its settings. You can also choose *Variable* and type a variable like `%randomUser0%` in there if you have a preceding *Add Random Viewer* subaction. \ No newline at end of file +Those variables are being populated by the *Get User Info For Target* subaction (`Twitch -> User`). The `User Login` field can either be a plain username or you use variables. If it's the redeemer, it'd be `%userName%`, if it was a targeted user from a command like `!hug nate1280`, you'd want to type `%input0%` in there. So it can be **any** variable, but it obviously depends what trigger you are using. + + +![Add Trigger Animation](../assets/twitch-target-user-info.png) diff --git a/streamerbot/1.get-started/_faq/9.action-blocking.md b/streamerbot/1.get-started/_faq/9.action-blocking.md index 34621308..3a1ca5fb 100644 --- a/streamerbot/1.get-started/_faq/9.action-blocking.md +++ b/streamerbot/1.get-started/_faq/9.action-blocking.md @@ -2,7 +2,7 @@ description: How do I prevent my actions from overlapping/running multiple times at once? --- -1. Go into the `Action Queues` tab, then into `Queues` and create a new queue (`Rightclick -> Add`). Give it any name you like. +1. Go into the `Actions & Queues` tab, then into `Queues` and create a new queue (`Rightclick -> Add`). Give it any name you like. 2. Check `Blocking` and click `Ok`. diff --git a/streamerbot/1.get-started/assets/Streamer.bot_n4ePvPVwTd.gif b/streamerbot/1.get-started/assets/Streamer.bot_n4ePvPVwTd.gif new file mode 100644 index 00000000..1a0cb197 Binary files /dev/null and b/streamerbot/1.get-started/assets/Streamer.bot_n4ePvPVwTd.gif differ diff --git a/streamerbot/1.get-started/assets/action-history.png b/streamerbot/1.get-started/assets/action-history.png new file mode 100644 index 00000000..3e8a94e6 Binary files /dev/null and b/streamerbot/1.get-started/assets/action-history.png differ diff --git a/streamerbot/1.get-started/assets/add-trigger.gif b/streamerbot/1.get-started/assets/add-trigger.gif index c12d37f8..c3cedabe 100644 Binary files a/streamerbot/1.get-started/assets/add-trigger.gif and b/streamerbot/1.get-started/assets/add-trigger.gif differ diff --git a/streamerbot/1.get-started/assets/cpr-settings.png b/streamerbot/1.get-started/assets/cpr-settings.png index 67449fb0..91a8b48a 100644 Binary files a/streamerbot/1.get-started/assets/cpr-settings.png and b/streamerbot/1.get-started/assets/cpr-settings.png differ diff --git a/streamerbot/1.get-started/assets/dynamic-delay.png b/streamerbot/1.get-started/assets/dynamic-delay.png new file mode 100644 index 00000000..3ff89621 Binary files /dev/null and b/streamerbot/1.get-started/assets/dynamic-delay.png differ diff --git a/streamerbot/1.get-started/assets/exclude-user.png b/streamerbot/1.get-started/assets/exclude-user.png index 86c46982..44759afb 100644 Binary files a/streamerbot/1.get-started/assets/exclude-user.png and b/streamerbot/1.get-started/assets/exclude-user.png differ diff --git a/streamerbot/1.get-started/assets/math-inline.png b/streamerbot/1.get-started/assets/math-inline.png index 33a960ba..f744322b 100644 Binary files a/streamerbot/1.get-started/assets/math-inline.png and b/streamerbot/1.get-started/assets/math-inline.png differ diff --git a/streamerbot/1.get-started/assets/process-example.png b/streamerbot/1.get-started/assets/process-example.png new file mode 100644 index 00000000..89c8c1cc Binary files /dev/null and b/streamerbot/1.get-started/assets/process-example.png differ diff --git a/streamerbot/1.get-started/assets/random-group.gif b/streamerbot/1.get-started/assets/random-group.gif new file mode 100644 index 00000000..e672b501 Binary files /dev/null and b/streamerbot/1.get-started/assets/random-group.gif differ diff --git a/streamerbot/1.get-started/assets/raw-getsourcefiltersettings.png b/streamerbot/1.get-started/assets/raw-getsourcefiltersettings.png new file mode 100644 index 00000000..20970d8d Binary files /dev/null and b/streamerbot/1.get-started/assets/raw-getsourcefiltersettings.png differ diff --git a/streamerbot/1.get-started/assets/raw-setsourcefiltersettings.png b/streamerbot/1.get-started/assets/raw-setsourcefiltersettings.png new file mode 100644 index 00000000..d81d5af2 Binary files /dev/null and b/streamerbot/1.get-started/assets/raw-setsourcefiltersettings.png differ diff --git a/streamerbot/1.get-started/assets/switch.png b/streamerbot/1.get-started/assets/switch.png new file mode 100644 index 00000000..e3042984 Binary files /dev/null and b/streamerbot/1.get-started/assets/switch.png differ diff --git a/streamerbot/1.get-started/assets/tts-delay.png b/streamerbot/1.get-started/assets/tts-delay.png index a626b265..122d39a0 100644 Binary files a/streamerbot/1.get-started/assets/tts-delay.png and b/streamerbot/1.get-started/assets/tts-delay.png differ diff --git a/streamerbot/1.get-started/assets/twitch-target-user-info.png b/streamerbot/1.get-started/assets/twitch-target-user-info.png new file mode 100644 index 00000000..2e51bd37 Binary files /dev/null and b/streamerbot/1.get-started/assets/twitch-target-user-info.png differ diff --git a/streamerbot/1.get-started/assets/while.png b/streamerbot/1.get-started/assets/while.png new file mode 100644 index 00000000..a1fba7cf Binary files /dev/null and b/streamerbot/1.get-started/assets/while.png differ