Changelogs v0.2.4

Upcoming changes in the next release!

New Features

  • Add handling of Twitch VIP Removed
  • Add new Trigger, Twitch VIP Removed
  • Add new Short Cut Key Handling
  • Add new event from, Twitch Clip Created
  • Add new scopes for Twitch Broadcaster account
  • Load Twitch Broadcaster's available emotes on login
  • Add new triggers for Twitch Unban request events (create, deny, approve)
  • Add new trigger for Twitch unban and untime out events
  • Add initial Elgato Facecam Mk.2 support
  • Add trigger for Twitch Auto Reward Redemptions
  • Add integration
  • Add new Twitch sub-action, Set Channel Branded Content
  • Add new context menu for Run Action sub-action to goto the action selected
  • Add new Remote Trigger and Remote Signal features to
  • Add 2 new triggers for when a instance is connected or disconnected
  • Add local signals, this mirrors remote signals, but without the network round trip lag
  • Add 2 new sub-actions, Send Local Signal and Wait For Local Signal
  • Add new Simulated Event, Custom Event, allowing you to trigger Custom Events outside of C#
  • Add new context menu item to run a Twitch Poll again
  • Add support for Twitch Automod Held/Updated events
  • Add 2 new triggers for Twitch Automod Message Held and Twitch Automod Message Updated
  • Add 2 new C# Methods to Approve/Deny a Twitch Automod Held message
  • Add new Coin Exchange event for CrowdControl
  • Add new CrowdControl Trigger, Coin Exchange
  • Toast Notification can now handle relative paths for the icon
  • Add 9 new C# methods related to Global variables and incrementing values
  • Add 2 new C# methods to Enable/Disable an Action by its ID
  • Add Trovo broadcaster data when event source is Trovo
  • Add !quote support to Trovo
  • Add 2 new Triggers for Twitch Blocked Terms Added/Deleted
  • Add 4 new C# methods for Groups
  • Add support for pasting Sub-actions and Triggers onto a selected action
  • Add new C# method, AddQuoteForTrovo
  • Add a new database, commands.db
  • Add 3 new C# methods for Command counters
  • Add to default usings for Execute C# Code


  • Update how No Delete confirmation is handled internally
  • Add a delete confirmation to MIDI In/Out and MIDI Events
  • Add a delete confirmation to Timed Actions
  • Misc updates and tweaks to some internal methods
  • Move Twitch VIP Add to EventSub from PubSub
  • Update TryGetArgs to convert data if a different type is used
  • Add some new icons in the burger menu
  • Promote some Twitch EventSub subscriptions to GA
  • Remove VStream
  • Switch a lot of Twitch PubSub events to EventSub counterparts
  • Add option to Read Random Line from File sub-action to overwrite variables
  • Improve the underlying socket code for the Website integration
  • Change some library file names to match others
  • Improve the underlying socket code for the Streamlabs integration
  • Use v4 for Streamlabs (from v3)
  • Rename and update some libraries
  • Tweaks to update shutdown and restart
  • Add some additional logging
  • Performance improvements to the Variable Viewer, when loading users for a platform
  • Auto add __source argument in some instances
  • Mark deprecated C# methods with the C# attribute Obsolete and cause a compilation error
  • Ignore when trying to fetch a Twitch User with the ID of 0
  • Reset Export metadata when clearing all items
  • Tweaks to StreamElements login routine
  • Internal tweaks to Elgato Library
  • Update Set Paused State, states are renamed to Pause, Resume and Toggle


  • Handle errors when trying to send an empty Twitch message
  • Handle errors trying to send Twitch messages when Broadcaster is not connected yet
  • Handle errors when trying to make changes to Twitch Channel Rewards when Broadcaster is not connected yet
  • Handle another potential crash when connecting to VTubeStudio
  • Handle sub-actions that no longer exist in SB instead of crashing
  • Fix Twitch Modes not working correctly
  • Fix Streamlabs disconnect event triggering a connect event
  • Fix Streamlabs triggers indicating they are Streamelements
  • Fix Twitch user being flagged as Mod when given VIP
  • Fix Twitch Timeout Trigger not working
  • Fix Twitch Stream Update Websocket data
  • Fix C# Midi Send Raw methods, they were outright failing
  • Fix C# Midi Send NoteOn/ControlChange methods, channel range check was wrong
  • Possible fix related to importing old import strings crashing
  • Fix potential crash in OBS v5 code
  • Fix crash in Elgato WaveLink Filter triggers when testing
  • Fix config saving during shutdown to not debounce
  • Fix Timed Actions not being removed from an Export when clearing
  • Fix crash in Get Random Number sub-action when using a value larger then an int
  • Set default state to Enabled for Set Action State when creating
  • Set default state to Enabled for Set Sub-Action State when creating
  • Fix issue with the context menu for Timed Actions, was unable to add to export
  • Fix potential crash in Simulate Events when the event has a user selection, and a viewer is not found
  • Fix flipped to_broadcaster_user_* properties for Twitch Shoutout Created trigger
  • Fix crash when trying to remove permitted users from a newly created command
  • Fix commands directly altering permitted user settings when editing an existing command
  • Fix potential crash when receiving a Trovo Subscription
  • Fix crash related to Throwing System and ActivateTriggerByName and ThrowItemByName methods and sub-actions
  • Fix potential crash related to getting a list of Viewers that belong to a group
  • Fix not being able to set a command's Global or User Cooldown to 0 using C#
  • Fix Commands set to Start not using the command's Case Sensitive setting
  • Fix Fetch URL sub-action not properly parsing some JSON
  • Fix Twitch Hype Train Trigger tests not having a correct percent value
  • Fix potential crash in VTubeStudio Trigger Hotkey sub-action dialog
  • Fix StreamerbotStarted event missing the __source argument
  • Fix potential issue when logging into StreamElements
  • Fix the Forget button not being disabled while logging into StreamElements
  • Only Init() Execute C# Code that is in an enabled action and sub-action on startup
  • Fix wrong name for Elgato Camera Hub Epoc Set Torch Mode
  • Fix wrong dialog being used for Elgato Camera Hub Set Auto White Balance
  • Fix setting boolean based values for Elgato Camera Hub
  • Fix potential crash in Twitch Get Latest Subscriber sub-action
  • Fix issue with renaming sub-action groups, and being able to rename other sub-actions
  • Fix !quote del with no parameter causing a crash
  • Fix potential crash in Twitch Get Ad Schedule sub-action
  • Fix potential null ref crash in the internal handling of Twitch Ads
  • Fix possible crash when removing the default / endpoint for the Websocket Server
  • Fix \s not being replaced correctly for Twitch message replies
  • Fix possible null ref crash when testing a DonorDrive Donation Trigger
  • Fix the wrong button being updated in the TipeeStream UI Tab
  • Fix command handling for Twitch replies
  • Fix missing rollover argument for Twitch Sub-counter
  • Fix C# AddQuoteFor methods not causing a QuoteAdded event
  • Fix naming of Elgato EpocCam Set Torch Mode
  • Fix Elgato EpocCam Set Torch Mode working intermittently
  • Add missing arguments for Twitch User Timedout trigger test



New Scopes

The following scopes are required on the broadcaster account now, these supoport the move from PubSub events to EventSub events

  • user:read:emotes
  • moderator:manage:unban_requests
  • moderator:read:moderators
  • moderator:read:vips


It was mentioned in the last TwitchDev broadcast, that sometime in the near future PubSub would be deprecated. So starting with this alpha, I have moved a good majority of the events that rely on PubSub over to there counterparts on EventSub.


Take note, there are breaking changes with the update to EventSub for some events, specifically for those that rely on's websocket messages.

This will affect the following events:

  • Timeout
  • Untimeout
  • Ban
  • Unban
  • Clear Chat
  • Moderator Add
  • Moderator Remove
  • VIP Add
  • VIP Remove

There are 4 events still left on PubSub, and they are:

  • Ad Midroll
  • Viewer Count Update
  • Community Goal Contribution
  • Community Goal Ended

The 2 community goal events do not have an equivalent in EventSub (yet), these goals are the channel point based goals, which seem to be overlooked by Twitch.

The Ad Midroll event will likely be going away, and I will expand the new Ad event that was introduced in 0.2.3.

The Viewer Count Update event has no EventSub counterpart, so this will require other means to obtain, but may not be as accurate.

Auto Reward Redemptions

These rewards, are the 5 fixed ones that you can enable/disable in your channel points.

These rewards are also now being tracked in the twitch data db.

Before it's asked, no, you can not enable/disable them from SB, as there are no API endpoints to do this as of this version.

HypeRate added a new feature to auto clip on Twitch, and the new event is related to this, it only triggers when HypeRate itself has created a clip.

THIS IS NOT an event for whenever a Twitch Clip is created, that does not exist in Twitch's EventSub/API capabilities at the moment. is now supported!

In order to setup, you will need an API Key from there website. You can get this from your dashboard.

Triggers Added

  • Connected
  • Disconnected
  • Campaign Tip


With this release, command counters have been moved to there own database. This allows for greater control and flexibility. Existing counters are converted over to the new database if they are persisted.

New C# Methods

int CommandGetCounter(string commandId);
CommandCounter CommandGetUserCounter(string userLogin, string platform, string commandId);
CommandCounter CommandGetUserCounterById(string userId, string platform, string commandId);

CommandCounter class

public class CommandCounter
    public string UserId { get; set; }
    public string UserLogin { get; set; }
    public string UserName { get; set; }
    public string Platform { get; set; }
    public int Count { get; set; }
    public int Source { get; set; }
    public DateTime LastUsed { get; set; }
} Website

The interop between the website and the application got a bit of a boost with 2 new features!

Remote Triggers, and Remote Signaling

For both of these features to function, while in alpha, 0.2.4-alpha.5 is the minimum required version for Triggers, and 0.2.4-alpha.6 for Signals.

This feature REQUIRES both instances of to have the Website Integration connected.

Remote Triggers

You can now send a trigger to another instance of that is logged into your account.

Much like the C# activate trigger, you are able to add a Remote Instance Trigger trigger to an action, and specify any or a specific origin instance, as well as the custom name for the event. In another copy of, you can use the Remote Instance Trigger sub-action, to trigger that remote trigger.

You can also see an event history on the website under your settings, with the ability to replay triggers from there.

Remote Signals

You are now able to wait for signals sent by other instances.

There are 2 new sub-actions added:

  • Send Remote Signal
  • Wait For Remote Signal

The premise behind these 2 sub-actions is a way to communicate with another remote instance of

Send Signal

This will allow you to send a named signal, with or without arguments to either all, or a specific Instance

Wait For Signal

This sub-action will, as the name implies, wait for a named signal from any or a specific instance up to a specified timeout (default 30s), consume the arguments it received, and carry on with the rest of the action.

Run Action Sub-action

This sub-action has received a custom runtime menu item, Goto Action

Read Random Line from File

This sub-action has been updated to include an option to Overwrite Existing Variable(s)

If this is enabled, the variables added to the action, will always start at 0, and overwrite any existing.

Local Signals

Signals have been added for the local instance of, these behave the same way as there Remote counter parts, but, are meant for local usage.

Shortcut Keys

I've gone through and hopefully fixed shortcut key, and also added a few new ones.

Global Keys Available

  • F1 - Launch
  • Ctrl + S - Save
  • Ctrl + Alt + I - Open Import Dialog
  • Ctrl + Alt + E - Open Export Dialog
  • Ctrl + Alt + C - Open Chat
  • Ctrl + Alt + V - Open Variable Viewer
  • Ctrl + L - Open your Log Folder

Actions, Sub-Actions, Triggers, Commands, Timed Actions, MIDI In/Out, MIDI Events, and Quotes all have shortcut keys as well.

New C# Methods

Added the following C# Methods for Twitch Auto Mod

bool TwitchApproveAutoHeldMessage(string messageId);
bool TwitchDenyAutoHeldMessage(string messageId);

Added the following C# Methods for Incrementing a global variable

void IncrementAllTwitchUsersVar(string varName, object value, bool persisted = true);
void IncrementTwitchUsersVarById(List<string> userIds, string varName, object value, bool persisted = true);
void IncrementAllYouTubeUsersVar(string varName, object value, bool persisted = true);
void IncrementYouTubeUsersVarById(List<string> userIds, string varName, object value, bool persisted = true);
void IncrementAllTrovoUsersVar(string varName, object value, bool persisted = true);
void IncrementTrovoUsersVarById(List<string> userIds, string varName, object value, bool persisted = true);
void IncrementOrCreateTwitchUsersVarById(List<string> userIds, string varName, object value, bool persisted = true);
void IncrementOrCreateYouTubeUsersVarById(List<string> userIds, string varName, object value, bool persisted = true);
void IncrementOrCreateTrovoUsersVarById(List<string> userIds, string varName, object value, bool persisted = true);

Added the following C# Methods for enabling/disabling an action

void DisableActionById(string actionId);
void EnableActionById(string actionId);

Added the following C# Methods for groups

List<string> GetGroups();
bool GroupExists(string groupName);
bool DeleteGroup(string groupName);
bool AddGroup(string groupName);

Added the following C# method for Trovo Quotes

int AddQuoteForTrovo(string userId, string quote, bool captureGame = false);