Get Started

FAQ

Frequently Asked Questions

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.

Add Trigger Animation

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).

Speakerbot Speak Subaction

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.

There could be various reasons for this, but here are some common solutions:

  • Ensure that the Enable WebSocket Server option is enabled in OBS
  • Ensure you have entered matching IP, Port, and Password configuration in both OBS and Streamer.bot
  • If Streamer.bot and OBS are running on the same PC, use 127.0.0.1 as the IP, otherwise make sure you are using the correct LAN IP address (e.g. 192.168.1.x)
  • If you are trying to access OBS over an outside network, such as a VPN or tunnel, you should bind the OBS WebSocket server to 0.0.0.0
  • If you are on the same network, you can consider deactivating authentication
  • In rare cases, the default port 4455 is already occupied, you can try changing it to something else like 4456 or 1234
  • Make sure you are using the correct obs-websocket version. If you aren't sure, you should select v5.x on the connection configuration in Streamer.bot

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.

The easiest way would be to check out https://docs.streamer.bot/ and look for the trigger or subaction you are using. A full list of variables will be given there, e.g. Twitch Follow trigger. 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)

No, you can't do that. The only workaround is to use the Source Dock OBS plugin to dock a window capture of the internal chat. This however is read-only and won't allow you to interact with it through OBS.

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.

  1. Go into the Action Queues tab, then into Queues and create a new queue (Rightclick -> Add). Give it any name you like.
  2. Check Blocking and click Ok.
  3. Now go back into your Actions tab and assign the queue to all the actions you want in there by editing the action (Doubeclick the action or Rightclick -> Edit)

Done! Now the upcoming actions will only start running once the previous one has finished.

Note: if you use OBS media sources in that action, consider putting a little delay at the end of the action so the hide transition can finish (100ms are enough if you don't use any hide transition)

By rightclicking an action, you can check Concurrent. This will cause subactions to all run at the same time instead of going from top to bottom as usual.

Here is a flowchart overview:

If-Else FLowchart

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.

Exclude User Example

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).

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). Since 0.2.3, all C# group methods require a platform property, like shown below in the code example.

After 0.2.3

using System;

public class CPHInline
{
    public bool Execute()
    {
        Platform platform = Platform.Twitch; 
        string userId = args["userId"].ToString();
        string groupName = "group1";
        bool inGroup = CPH.UserIdInGroup(userId, platform, groupName);
        CPH.SetArgument("inGroup",inGroup);
        return true;
    }
}

Before 0.2.3

using System;

public class CPHInline
{
    public bool Execute()
    {
        string userId = args["userId"].ToString();
        string groupName = "group1";
        bool inGroup = CPH.UserIdInGroup(userId,groupName);
        CPH.SetArgument("inGroup",inGroup);
        return true;
    }
}

Yes, though this can only be done with C# (Core -> C# -> Execute C# Code). Note that there are certain requirements and limitations when it comes to whispers: to send a whisper you need a verified phone number (so does your bot if you are sending it with the bot account), whisper limits can be seen here. You will not be able to see whether a whisper has been sent successfully.

This code example sends a whisper to the user who is redeeming a command:

using System;

public class CPHInline
{
    public bool Execute()
    {

        CPH.TryGetArg("user", out string user);
        string message = "Hello, this is a test whisper message!";
        CPH.SendWhisper(user, message, true); //set "true" to "false" if you want to send the whisper with your broadcaster account
        return true;
    }
}

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)

{
  "requestType": "GetMediaInputStatus",
  "requestData": {
    "inputName": "Your Media Source"
  }
}

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 GetSourceFilter 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 SetSourceFilterSettings 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).

{
  "requestType": "SetSourceFilterSettings",
  "requestData": {
    "sourceName": "Test Text Source",
    "filterName": "Move Value",
    "filterSettings": {
      "setting_text": "%user% said: %rawInput%"
    },
    "overlay": true
  }
}

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”.

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.

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.

Note: Some games with anticheat will prevent you from using the process as a trigger.

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.

Yes, this can be accomplished with C#:

Example
using System;

public class CPHInline
{
    public bool Execute()
    {
        /**
         * `true` for persisted variables
         * `false` for non-persisted variables
         */
        CPH.UnsetAllUsersVar("yourVariableName", true);

        return true;
    }
}

Before using variables from triggers or subactions in a C# code, you will need to import them. The method depends on the variable type you are trying to import, see here.

Example to import the %user% variable (string):

using System;

public class CPHInline
{
    public bool Execute()
    {
        string user = args["user"].ToString();
        return true;
    }
}

Note: If you import a variable that has not been populated, the code will break at this point. v.0.2.3 now offers a new method for that:

CPH.TryGetArg("fromKofi", out string fromKofi);

In this example, if %fromKofi% doesn't exist, it will have the value null and the code will continue to run.

Yes, you can use inline functions in subactions*.

You can also use any numeric variable in there and then do the math like seen in the picture. If you wanted to convert seconds to milliseconds to use it in a delay subaction, you could do it like this: $math(%secondsVariable% * 1000)$

Inline Math 10s Delay

*for some subactions you will need a preceding Set Argument subaction (Core -> Arguments -> Set Argument) that does the inline math and then use that argument in your other subaction

Anyone can gain access to the current Alpha version of Streamer.bot by becoming a Silver Tier supporter (or higher) on Patreon!

  1. Connect your Discord account to both Patreon and the Streamer.bot website
  2. Join the Streamer.bot Discord server with the same Discord account

After you've ensured both are signed in and connected, head over to the the Downloads section of the website and you will see alpha releases when they are available!

Automatic Updates can also be configured to grab alpha releases once you have enabled the Streamer.bot Website Integration within your bot.

  1. Connect your Discord account to the Streamer.bot website.
  2. Join the Streamer.bot Discord server with the same Discord account.
  3. Head to the Channels & Roles channel, scroll to the bottom and select Yes! at the question "Want to have early access to beta testing releases?".
  4. Go into Streamer.bot, Integrations > Streamer.bot Website, and log into your account.
  5. The only thing left would be to go to the Hamburger menu on the top left, select Check for Updates and change your Update channel to beta.

You are also able to directly download the beta via Downloads if you are logged in to the website.

Please remember, Alpha and Beta releases are not stable versions so they may contain unexpected bugs. Best practice is to copy/backup your stable Streamer.bot folder somewhere. This will ensure a fast fallback method back to stable if a crashes might be happening.

BEFORE YOU STREAM

Be sure to check any triggers you have set up that have criteria (like Cheers, Twitch Subs, etc.), and may overlap in some way, and configure the Don't Run If settings for them. This can be done by right-clicking the trigger, then Don't Run If. This is unfortunately not something that can be done with a configuration upgrade, as it has no idea what triggers are supposed to activate over others.

For a more detailed explanation about the Trigger update, read the Changelogs 0.2.3

This is done with a Twitch -> Rewards -> Update Redemption Status subaction. This subaction requires the rewardId and redemptionId, those automatically come with the Twitch -> Channel Reward -> Reward Redemption trigger.

In the settings for the channel point rewards (Platforms -> Twitch -> Channel Point Rewards) you will have to make sure that the reward is owned by StreamerBot. StreamerBot owns them if they have been created in there. This also makes them editable. Also make sure that Redemptions Skips Queue stays unchecked in the reward settings.

Channel Point Reward Settings

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?

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.