Streamer.bot v0.2.5
New Features
- Add a possibility of a prompt when creating triggers, if there are no criteria
- Add 2 new Twitch sub-actions,
Get Active Poll
,Get Active Prediction
- Add a new sub-action,
Set Trigger State
- Add a new
User Interface
option toDisable Capturing of Variable Viewer Window
, this requires the Variable Viewer to be re-opened after changing - Add new events related to groups
- Add 5 new Triggers for
Group
Events - C# Method,
TryGetValue
will try to convert strings toGuid
, whenT
isGuid
- Add Triggers for
HypeRate.io
Connected
/Disconnected
- Add new C# Method,
TwitchGetBlockedTerms
- Add a new
userGroup
argument for actions, that will contain a comma delimited list of the groups the user is in - Add new C# Method,
void TriggerCodeEvent(string eventName, string json)
- Add some new internal methods for the
Chat
window - Add a new sub-action,
Custom Event Trigger
- Add a new sub-action,
Twitch Create Prediction
- Add new integration for
mtion studio
- Add 2 new sub-actions for
mtion studio
- Add new context menu item to
Action History
,Goto Action
, that will go to the action that ran - Add a new argument,
oldSceneName
to theOBS Scene Changed
event/trigger, this will contain the previous Scene's name - Add 2 new
Speaker.bot
triggers,Connected
andDisconnected
- Add new universal argument,
unixtime
- Update
Twitch Send Message
andTwitch Reply To Message
sub-actions with better options - Update
Twitch C# Methods
related to sending messages to handle new fallback option. - Add new C# method,
GetCommands
- Add a new streaming application integration,
Meld Studio
! - Add 10 new sub-actions for
Meld Studio
- Add 8 new triggers for
Meld Studio
- Add 8 new C# Methods for Meld Studio
- Add a
Delete Confirmation
when deletingTwitch Channel Rewards
- Add
Short Cut
keys toTwitch Channel Rewards
tab - Add new
returningChatter
argument toTwitch Chat Message
andTwitch First Words
events - Implement more events in
Twitch Event Sub
library - Add 4 new
Events
andTriggers
forTwitch Prime Paid Upgrade
,Pay It Forward
,Gift Paid Upgrade
andBits Badge Tier
- Added 9 new
Twitch Shared Event
triggers - Add new
bonusGifts
argument toTwitch Gift Bomb
andTwitch Shared Gift Bomb
events - Add a new
Labs
feature,Pending Action Cache
! - Add new option for
Actions
,Exclude from Pending Cache
, this option exists in theContext Menu
forActions
- Add new
OBS Sub-action
,Create Record Chapter
- Add new C# method,
bool ObsCreateRecordChapter(string chapterName, int connection = 0);
- Add 4 new
Twitch Prediction
sub-actions, to cancel, lock and resolve predictions - Add some new
WebSocket Server
request methods to support features inDockable Chat
- Add 8 new
WebSocket
request methods for accessingGlobal Variables
- Add handling for
Twitch Shared Moderator
events - Add 5 new
Twitch Triggers
forShared Moderator
Events - Add
Authentication
option toWebSocket Server
- Add new
Twitch Shared Chat
to sources forCommands
- Handle commands that come from
Twitch Shared Chat
- Add a new
GetUserPronouns
WebSocket
request forDockable Chat
- Add 2 new
C# Methods
to turnTwitch Shield Mode On
andOff
- Add
Verbose
logging for incomingWebSocket Server
data - Update
Streamlabs Website
integration to useOAuth
- Add 3 new events
Application Events
,Command Added
,Command Updated
andCommand Deleted
- Add
year
,month
,day
,hour
,minute
,second
split data as arguments toTwitch Get Follow Age
sub-action - Nearly all lists with columns have their widths saved and restored
- Add handling of
YouTube Poll Closed
event - Add new
YouTube Poll Closed
Trigger
Updates
- Update YouTube New Subscription trigger to show a prompt, indicating StreamElements is required for it
- Add validation checks when creating a custom DonorDrive provider
- Update
LiteDB
to5.0.21
- Add
input#
variables toYouTube
messages - Add new option to
Folder Watcher
,Add Changed Data
- Release Notes dialog now properly follows links
- Messages that are sent from yout
Twitch Bot
account within Streamer.bot, are now flagged as internal - Add a minimum width to the Action columns, so they can't accidentally be hidden
- Update how the creation of
Twitch Rewards
are handled, this means direct API calls will now show a new Reward - Update wording in
Perform Command
sub-action dialog, now saysTarget
instead ofCommand
, same as a Windows Shortcut - Updates to YouTube Trigger test methods and providing properly named test data
- Add a new field,
Info
to1
Twitch Badge` class, this will contain the subscribed duration - Add
MonthsSubscribed
toTwitch ReSub
, andGift Sub
related events - Update
DonorDrive Donation
Trigger, use DonorDrive's default Avatar Url indonarAvatarUrl
- Add missing context menu items to the Trigger + button
- Add payload data to the Websocket events for Custom Event and Custom Code Event
- Small tweak to the
YouTube Broadcast
context menu,Monitor
has been moved before thePrivacy
andTags
items - Add a
randomUser
to theTwitch Charity Donation
trigger test - Tweak to how
YouTube Statistic
event works, should be a transparent change - Add
YouTube
broadcast information to theWebsocket
payload for theYouTube Command
andYouTube Command Cooldown
events - Tweak to when an Event's Websocket message is sent
- Add special handling for C#
TryGetArgs
when dealing withGuid
- When monitoring a
YouTube
broadcast that is not live, it will auto-unmonitor after 10 minutes to preserve quota usage. - Update some logging entries related to actions
- Update connection methods for
YouTube Broadcast
andBot
account to setup these 2 users - Internal tweaks to Queue handling
- Tweak to
mtion studio
process detection - Update
OBS Set Image Source File
to supportUrls
- Some tweaks to
Elgato Camera Hub
client - Update
Twitch Announce
to use the new UseBot and Fallback options - Some general cleanup
- Update the handling of
Twitch Gift Sub
andTwitch Gift Bomb
events - Add handling of
Super Moderator
toTrovo
, they are now treated as aModerator
- Tweaks and fixes to internal handling of
Twitch Channel Rewards
- Provide a better error message if adding a
Twitch Channel Reward
fails - When adding a
Twitch Channel Reward
, the group of the reward or group selected is used by default - Add a
mnemonic
key to the No button on the dialog prompt, pressingN
will dismiss it - Add a user's subscription tier to
Twitch Chat Message WebSocket
payload - Update
Twitch Chat Message
, andCheer
eventWebSocket Payload
to a new format, the deprecatedMessage
property will still exist - Some tweaks to internal methods used when looking up users
- Internal tweaks/fixes to parsing routines
- Update OS detection
- Update
WebSocket
payloads forTwitch Shared Chat Session
events Twitch Whisper
,Twitch Announcement
,Twitch Message Deleted
and allTwitch Subscription
events are now handled byEventSub
- Update
WebSocket
payload forTwitch Clear Chat
event - Update
Twitch First Words
to use new WebSocket payload - Some tweaks to
Elgato WaveLink
sub-action dialogs - Update
Find Refs
to provide error details if it is unable to load assemblies, this is related to the fix above - Add
FadeTime
toVTubeStudio Set Expression State
sub-action - Update
VTubeStudio
C# Method,bool VTubeStudioActivateExpression(string expressionFile, float fadeTime = 0.25f);
- General tweaks to Streamer.bot instances list/handling
- Some minor refactoring to how
WebSocket
requests are handled internally - Add a source user object to
Twitch Shared
chat events, this contains the originating channel Variable Viewer
applies the filter forUser Variables
when selecting a differentUser
Twitch Chat Messages
that are from aShared Chat
, are only handled as messages, and no longer go throughCommand
,Pyramid
,Quote
,Cheer
, andFirst Words
handling- When logging out of
Twitch
accounts, properly disable some timers that should not be running - When logging out of
Trovo
accounts, properly disable some timers that should not be running - Flag messages from
Inline Chat
to no longer be internal, they will behave as if they came from outside of Streamer.bot - Update
WebSocket Server
Subscribe
request to be a bit more robust - Update handling of
Twitch
/me
chat messages, these are now sent via theAPI
call, and should be properly flagged internal - Tweaks to
Twitch Stream Update
event - The
Twitch Bot
account no longer relies onTwitch Chat
, instead, it connects toEventSub
to handle any events it needs - Tweaks to
WebSocket
service handlers - Updates to
SendMessage WebSocket
request forDockable Chat
- Update
Serilog
logging to be threaded with async module, may gain performance improvements in high volume logging - No longer log Twitch EventSub KeepAlive related data
- Add an Id to Twitch EventSub logging
- Add some additional variables to
Twitch Reward Redemption
event - Tweaks to S
treamlabs Desktop Client
, the entire session is now cached and kept up to date in real time, improving some performance - Update
Streamlabs Desktop Client
to supportHorizontal
/Vertical
sources - Update some
Streamlabs Sub-actions
with a newHorizontal
/Vertical
option, this defaults to both - Update some
Streamlabs C# Methods
- Tweaks to
WebSocket Client Settings
dialog, better indication of disabled items - Apply a minimum width to most List Columns, so they can not be shrunk out of existence
- Remove API token from
Lumia Stream
logging - Remove API token from
CrowdControl
logging, and tweak subscription code - Add a longer timeout (20s) for the initial
VTubeStudio
authentication, when it asks the user to authorize the plugin - Add
userProfileUrl
variable toYouTube New Subscriber
event fromStreamElements
- Update
Twitch AutoMod
events to new v2, which contains more data - Update
Twitch AutoMod Hold
andTwitch AutoMod Update
events to contain more arguments - Prevent editing
Midi In Device
orMidi Out Device
if the device is open
Fixes
- Fix typos
- Fix a long standing bug related to
Authentication
, this was not actually causing a crash - Fix potential crash during startup when checking for/creating application folders
- Fix Twitch Archive Poll suba-ction showing Terminate instead
- Fix Read Random Line From File sub-action, Overwrite option was not being saved
- Fix
Ctrl
+Alt
+C
shortcut key, should now openChat
again - Fix changing the
Enabled
state when editing an action not being saved properly - Fix potential crash when adding a custom DonorDrive provider
- Fix potential crash when adding a DonorDrive provider with a non-numeric ID
- Fix
Midi In
Events context menu not working, you can nowEdit
,Delete
and toggleEnabled
again - Fix
YouTube Command
event,inputUrlEscaped#
variables always had the full message - Fix potential crash in Execute C# Code editor when Finding Refs, and having a using statement not terminated properly
- Fix being able to add an empty named
Group
inC#
- Fix potential crash when connecting to
Elgato WaveLink
, handle some unexpected data - Fix not being able to upgrade from
0.2.0
,0.2.1
, and0.2.2
- Fix potential crash when handling
VoiceMod
events - Fix unicode parsing issues in
Twitch Channel Points Automatic Reward
event - Fix potential crash related to
Speaker.bot
integration initialization - Fix potential crash when opening a
Streamer.bot Remote
sub-action - Fix potential crash in
Throwing System
client when parsing data - Fix a
0.2.3
to0.2.4
upgrade issue with a lot of Commands and Counters, causing a slow upgrade - Fix C#
Twitch Get Clips
methods - Fix
Perform Command
sub-action to properly capture STDOUT when aWait Time
is specified - Fix potential crash when initializing Trovo Moderators
- Fix potential crash related to Toast Notifications on Windows 7 (it's time to upgrade)
- Fix Set Trigger State sub-action dialog text
- Fix Set Sub-Action State sub-action dialog text
- Fix Refresh Triggers context menu item only working when right clicking on a trigger
- Fix potential crash in File Changed Events when unable to open the file
- Fix C# Method TryGetValue and properly handle Guid types
- Fix potential issue with right clicking within the Actions window
- Fix a potential UI crashes in
Perform Command
sub-action dialog - Fix a potential UI crashes in
Fetch URL
sub-action dialog - Fix a potential UI crashes in
IFTTT Notification Advanced
sub-action dialog - Fix a potential UI crashes in
PolyPop Trigger Alert
sub-action dialog - Fix a potential UI crashes in
Test Trigger
dialog - Check for empty data when sending a
Twitch Announcement
- Fix potential crash when connecting to
Elgato CameraHub
and requests timing out - Tweaks to
Twitch GetClips
, and RFC3339 dates - Fix a potential crashes in
YouTube Gift Membership Received
Trigger test - Fix a potential issue when using C# method,
YouTubeGetBot()
- Fix a potential crash within the internal event handling and collections
- Fix handling of
Streamer.bot Remote
sub-actions when not connected to the website - Fix a potential crash when checking for an update
- Fix
OBS Event Trigger
,Default
entry was not showing correct version of events - Fix
Twitch Gift Sub
tigger, 1 month was not saving correctly - Fixes when handling cloning of
Dictionaries
internally - Fix backup, was missing the new
webview_settings
file - Fix potential crash when selecting a
YouTube
broadcast updates the UI - Fix an internal issue/crash realted to
OBS Events
- Fix potential crash when retrieving data from
Streamer.bot Website
- Fix potential crash when connecting to
Speaker.bot
- Fix a potential crash in
Elgato Camera Hub
client - Fix an internal parsing error in
Elgato Camera Hub
client - Fix a crash that can happen when there is an exception in an
Execute C# Code's
constructor method - Tweaks to
YouTube
connection, and caching of certain data - Fix a potential crash, when trying to authenticate
YouTube Broadcaster
andYouTube Bot
at the same time - Fix the potential for the wrong
OBS Scene
to be returned when changingOBS scenes
after a disconnection - Fix the
YouTube Present Interval
incorrectly altering the present viewer timer - Fix the
Twitch Present Viewer Interval
incorrectly altering the present viewer timer when not getting live data - Fix Twitch
Stream Offline
endedAt
variable not being in UTC - Fix Twitch
GetClipsForGame
C# Methods - Fix a potential crash when handling some Twitch EventSub events
- Fix some settings for Twitch Rewards not saving properly
- Fix Twitch Stream Update event triggering on content classification changes
- Fix C# Method,
TwitchGetRewardUserCoutners
, should return correct data now - Fix excess spaces defeating the Internal message checks for
Twitch
- Internal tweaks/fixes for new events/payloads
- Fix being able to add no user, when adding a user in
Command Permissions
- Fix the
X
clear button not working in theUser Search
dialog - Fix user selection, and context menu in Command dialog for the User Permission list
- Fix potential crash when connecting the S
peaker.bot
integration to a port that is notSpeaker.bot's
- Fix error prompt when unable to start the
WebSocket
server - Fix a potential crash when shutting down
- Fix a potential error when internally looking up a
Twitch
user in certain events - Fix a potential crash when testing the
Twitch Guest Star Update
trigger, 2 random users are required - Fix a potential crash in the
Elgato WaveLink Set Filter State
sub-action dialog - Fix a potential crash when clicking
Find Refs
in theExecute C# Code
sub-action - Fix a potential crash when editing a
VTubeStudio Set Expression State
sub-action - Fix not being able to select
Default
queue inSet Action Queue Paused State
sub-action - Fix
Twitch Emote On
/Off
Trigger test having wrong variable - Fix
Twitch Replies
sent from within Streamer.bot not being properly flagged as internal - Fix potential crash when emote is not found for
Twitch Gigantify Emote Automatic Reward Redemption
, not even sure how this can happen - Fix some typos, add some new ones
- Fix a potential crash related to
Twitch First Words
andInline Chat
- Fix a potential crash in
Twitch Channel Update
event - Fix a potential crash in
VTubeStudio Trigger Hot Key by Name
sub-action - Fix typo,
isSubscribed
, in someTwitch
events - Fix handling of
7TV
dupe bypass method - When forgetting
Twitch Broadcaster
/Twitch Bot
token, clear some internal references that were never cleaned up - Fix a potential crash when handling
FourthWall Draw Started
andDraw Ende
d events - Tweaks to OBS authentication
- Fix a potential crash when dealing with
Commands
- Fix a potential crash when trying to send a message on a closed
WebSocket Server
session - Fix a potential crash when closing
Chat
orEvent Feed
windows - Fix a potential crash in
CameraHub
client with missing data - Fix a potential crash when handling
Trovo Present Viewer
tick - Fix a potential crash when handling
Trovo UI
events, and Streamer.bot is shutting down - Fix a potential crash in
TipeeeStream
when trying to send data to a closed socket - Fix a potential crash in
Elgato CameraHub
when retrieving available WebCams, and the request times out - Fix
Twitch Predictions
andTwitch Polls
UI
, can no longer refresh these when theBroadcaster
is not logged in - Fix not being able to start the
Websocket Server
after encountering an error starting it - Fix missing constructors for some classes that get serialized/deserialized
- Fixes/tweaks to
WebSocket Service Subscribe
request - Fix a potential crash when testing
OBS Recording
orOBS Streaming
,Started
andStopped
triggers - Fix a potential crash when
Importing
- Fix a potential crash in
VTubeStudio's
message handling - Fix a potential crash when loading the list of
Editors
for theTwitch Broadcaster
- Fix a potential null ref when loading
YouTube Categories
when logging in, it will prevent the login now - Fix a potential crash when testing the
Twitch Reward Redemption Trigger
- Fix a potential crash when
StreamElements Client
is trying to reconnect, but a user clicks theLogout
button - Fix a potential crash related to some
Twitch WebSocket
payloads and gift data - Tweaks/fixes to
Twitch Bot Event Sub
login methods - Fix
Twitch Viewer Count Update
event not passing the viewer count parameter - Fix a potential crash in
WebSocket
service handling - Fix a potential crash when removing a
Command
from anExport
that no longer exists - Fix a potential crash when deleting an
Action
via aHotkey
that no longer exists or is not selected - Fix potential crash when loading
7TV
channel emotes, and there is no image URL - Tweaks to
Twitch EventSub Connection
/Disconnection
- Fix an issue when entering your
Pally.gg URL
- Fix
StreamElements UI
disabling wrong Forget button - Fix potential crash in the
YouTube
client when aMonitored Broadcast
is deleted - Fix potential crash when trying to update a
YouTube Broadcast
that no longer exists - Fix deleted
YouTube Broadcasts
that areMonitored
not being correctly removed in the UI - Fix
YouTube Broadcast UI
, setting button states, and deselecting deleted Broadcasts if they are selected - Fix wording for
Streamlabs Desktop Settings Add
/Edit
dialog - Fix some
Application Events
having incorrect friendly names - Fix
Trovo Present Viewer Tick
,Live Data
is not a supported option, so it behaves likeYouTube
now - Fix potential crash in
OBS UI
when usingForced Connection
option, UI was not overridingDefault
/Forced
when retrieving info - Fix
C# Method
,TwitchGetRewardUserCounters
not having the user's count - Fix loading of
Twitch VIP
users on connection for non-affiliate users - Fix potential internal crash when
WebSocket Server
authentication fails - Fix
Kofi Donation
event not passing amount as a parameter for theTrigger
criteria - Fix validation logic in the
Custom WebSocket Client
dialog - Fix potential crash when attempting to login to
YouTube
, but the ports used for auth are in use - Fix logic for
Global (Set) Decrement
, was not setting initial value correctly if variable did not exist - Fix delete shortcut key showing the confirmation dialog for
Midi In Devices
andMidi Out Devices
when the device is open - Fix
Midi Device
deletion dialog not showing the device name - Fix validation handling for
Midi In Device
andMidi Out Device
dialogs - Fix validation handling for
Midi Event Settings
dialog - Fix
Midi Message Trigger
triggering if theMidi Event
associated with it has been deleted - Fix disconnecting
YouTube
not shutting down properly, preventing monitoring from starting again when connecting
Details
Most of the fixes/changes going into this release can be considered a hot fix release, which is why it is going straight into beta
YouTube
With 0.2.4 and the Multi Broadcast support feature, you could now monitor any type of broadcast, so you can do testing while not live. Monitoring a broadcast that is not live consumes the same amount of quota as a broadcast that is live, and there are no mechanisms in place to stop monitoring a non-live broadcast.
Starting with 0.2.5, in order to help limit quota usage, any non-live broadcast if monitored, will be un-monitored after 10 minutes. If you still need to do testing, etc, you can always monitor the broadcast again.
This is mostly in place for those that might monitor a broadcast, and forget to monitor it, and it runs for hours.
Meld Studio
I couldn't wait till TwitchCon
any longer, so, for those that have been asking for it, it's finally here. Meld Studio integration!
A very important note, Meld Studio is still a work in progress application, as such, so is the integration for it. It is something that will evolve over time as more and more features are added and exposed for 3rd party tools to take advantage of.
There are 10 new sub-actions:
- Get Current Scene
- Show Scene
- Get Status
- Recording
- Streaming
- Take Screenshot
- Set Layer Visibility State
- Set Effect Enabled State
- Set Layer Track Muted State
- Set Track Muted State There are also 8 new triggers:
- Connected
- Disconnected
- Recording Started
- Recording Stopped
- Streaming Started
- Streaming Stopped
- Scene Changed
- Event
C# Methods
A connection index of -1
is the fall back to Default
int MeldStudioGetConnectionByName(string name);
bool MeldStudioIsConnected(int connectionIdx = -1);
bool MeldStudioConnect(int connectionIdx = -1);
void MeldStudioDisconnect(int connectionIdx = -1);
bool MeldStudioShowScene(string sceneId, int connectionIdx = -1);
bool MeldStudioShowSceneByName(string sceneName, int connectionIdx = -1);
bool MeldStudioShowLayerByName(string sceneName, string layerName, int connectionIdx = -1);
bool MeldStudioHideLayerByName(string sceneName, string layerName, int connectionIdx = -1);
Streamer.bot Chat
This release brings a new WebSocket
server mode to Streamer.bot Chat
, allowing it to function in any web browser environment.
Yes!, this includes OBS custom browser docks, and even remote mobile devices for those of you savvy enough to setup tunnelling to your Streamer.bot WebSocket Server
😉
Limitations
- Much work has been done to reduce the limitations of chat when using the
WebSocket Server
mode. However, you will notice that many direct moderation actions are disabled inWebSocket
mode. You can still work around this with your own quick actions. - Configuration settings are separate from the main chat application. Though this may be more of a feature than a limitation depending on the user 😄
- You can now sync settings from the main Streamer.bot chat window to
WebSocket
windows inSettings
->General
There will be bugs
Some things are very much still a work in progress, and some event payloads are still being updated to catch up with recent Streamer.bot application changes.
Streamer.bot Configuration
- The Streamer.bot WebSocket Server must be enabled
- To send chat messages, you must also enable authentication
Elgato WaveLink
Thanks to some of the error reports, I was able to spot some unusual data coming from Elgato WaveLink
when making certain calls, this is now hopefully being handled.
Folder Watcher
The new option, Add Changed Data
, which defaults to true
, will add changed data withini the File Watcher Changed
event. If you do not need the changed data in this event, or you know for a fact that the files are binary, it is highly recommended to uncheck this option.
Pending Action Cache
A restart is REQUIRED after enabling or disabling this labs feature, and by default, it is disabled.
This labs feature will, on close, write to a database any outstanding pending actions. Pending
actions are actions
that have not yet run, and are waiting to run, either because they're in a blocking queue, or a queue that is paused.
When Streamer.bot is started, if this cache file is present, it will auto load in any actions that have been cached, as well, it will pause the queue that they belong to. In addition, an argument will be added, wasCached
, this will be set to true
; during normal operation, this variable will not exist.
This feature is very experimental, and I need feedback on it, for options, capabilities, etc.
A caveat to note, due to the nature of serializing/deserializing, not all data types will preserved. Ones that I am aware of are List<T>
objects, these will become object[]
arrays when loaded.
NOTE
Consider this feature experimental, and hopefully will evolve over time. Keep in mind, being a lab feature, does not guarantee it will get added as full fledged feature.
YouTube
During some testing, I noticed the Poll closed event was actually coming through in the data, so this is wired up.
Twitch
Added 2 new sub-actions with this release, Get Active Poll
, and Get Active Prediction
. Both of these sub-actions will add an argument active
that is either true
or false
. If this is false
, then there is currently no running poll or prediction. If it is true
, then the data for the poll or prediction will be added to the arguments, in the same format as the triggers.
There is a new sub-action, Twitch Create Prediction
. Yes, that means you can finally use the UI to create a prediction instead of relying on C# code to do this. Much like the Twitch Create Poll
sub-action, all fields support variables and methods, this includes the outcomes.
Gift Bombs and Gift Subs
For a while, the Gift Sub
and Gift Bomb
events have been giving users intermittent troubles, and after looking more in depth at some verbose logs, I think I was finally able to solve most, if not all the issues with these events. Hopefully moving forward, these events are a bit more reliable.
Just to re-iterate how and when these events fire:
- A
user
in your chat directly gifts another user in your chat a sub, this will trigger aTwitch Gift Sub
event - A
user
in your chat gifts 1 random sub, this will trigger aTwitch Gift Sub
event - A
user
in your chat gifts 2 or more subs, this will trigger aTwitch Gift Bomb
event, and ifIgnore Gift Subs from Bombs
is not enabled, it will also trigger aTwitch Gift Sub
for every gifted sub.
Some new variables have been added to the Gift Sub
and Gift Bomb
event.
random
- Whether or not this was a targetedGift sub
, this will only be true for single gift subs that were directly given to a user.systemMessage
- The system message that was put into Twitch Chat.totalSubsGiftedShared
- A boolean value if the user gifting the sub(s) shares there total gift count.random
is only available in the TwitchGift Sub
event, while the rest are available in both events
Send Message, Reply to Message and Twitch Announce
Send Message
, Reply To Message
, Twitch Announce
sub-actions received a small update. Prior to 0.2.5
, you needed to specify a preferred
account to use, either the Broadcaster
, or the Bot
. If the preferred
account was the Bot
account, and it was not connected, it would fallback to the Broadcaster
account.
These 2 sub-actions have done away with the preferred
account, and have 2 new options, Send using Bot account
, and Fallback to Broadcaster
. How these options work is outline below:
- If
Send using Bot account
is checked, andFallback to Broadcaster
is checked, this is the same behaviour as if you had Bot as your preferred account - If
Send using Bot account
is checked, andFallback to Broadcaster
is not checked, it will try to send using only theBot
account, and do nothing if it can't (i.e, not logged in) - If
Send using Bot account
is not checked, then it will send using theBroadcaster
account
A configuration upgrade is also in place, it will convertt any Twitch Send Message
/Twitch Reply To
sub-actions to the new format, and if Bot
was the preferred account, then both new settings will be checked
Shared Chat
Twitch recently released the Shared Chat feature/capability, and support for it is being added to 0.2.5
.
With beta.12
, support for the new source
tags has been added to Twitch Chat Message
events. And at the moment, this data is only exposed to Chat Message
and Cheer
triggers. Commands
, pyramids
and first words
are still being worked on, and should be available for use in a shared chat in a future beta version.
Payloads for various existing Twitch EventSub
events have been updated to handle the new Shared Chat
data, but at the moment, this data is not exposed yet, as there are quite a few events to work through and figure out.
Finally, the 3 new events for Shared Chat
, Begin
, Update
and End
, have been added as new Triggers
Commands
received a new source, Twitch Shared Chat
, this will allow you to handle commands from other chats within a Shared Chat Session
13 new events/triggers were added, that hopefully will be working with Twitch's
new Shared Chat
feature.
New Shared Chat Triggers
- Shared Chat Announcement
- Shared Chat Pay It Forward
- Shared Chat Prime Paid Upgrade
- Shared Chat Gift Paid Upgrade
- Shared Chat Sub
- Shared Chat Resub
- Shared Chat Sub Gift
- Shared Chat Gift Bomb (Community Sub Gift)
- Shared Chat Ban
- Shared Chat Unban
- Shared Chat Timeout
- Shared Chat Untimeout
- Shared Chat Message Deleted
Predictions
To round out the Prediction
sub-actions, there are 4 new sub-actions that can be used to interact with the current active prediction.
- Cancel Active prediction
- Lock Active prediction
- Resolve Active Prediction
- Resolve Active Prediction by Title
C# Methods
The C# methods have also been updated. The only thing that has changed, is a new optional parameter fallback to introduce the same behaviour in the sub-action
The new signatures for them are
void SendMessage(string message, bool useBot = true, bool fallback = true);
void TwitchReplyToMessage(string message, string replyId, bool useBot = true, bool fallback = true);
void SendAction(string action, bool useBot = true, bool fallback = true);
Twitch Shield Mode Methods
bool TwitchShieldModeOn();
bool TwitchShieldModeOff();
These changes will be transparent, and will only need updating if you wish to change the behavior
Reward Redemptions
Reward Redemption events have had 5 variables added to them, they are:
skipsQueue
- Whether or not the Reward is auto completed when redeemedrequiresUserInput
- Whether or not the Reward requires user inputmaxPerStream
- How many redemptions can be done per stream, 0 is disabledmaxPerUserPerStream
- How many redemptions a user can make during a stream, 0 is disabledglobalCooldown
- The global cooldown of the Reward in seconds
Groups
Groups got a bit of an update, there are now events, and triggers associated with them.
New Triggers
- Group Added
- Group Removed
- Group Cleared
- Group Users Added
- Group Users Removed
Streamlabs Website
This is a breaking change, since Streamlabs
is making it harder for new users to retrieve their API token, I've finally switched it over to an OAuth
type Authentication.
The UI for Streamlabs has been updated with the common login and client connections.
If you are using the Streamlabs integration, be sure to login after starting 0.2.5
to continue receiving events
Streamlabs Desktop
The Streamlabs Desktop
integration has been updated to support Horizontal
and Vertical
sources. In order to better handle these sources and just overall tracking, an internal session is kept of your Streamlabs
, and almost all events are handled to keep it updated in real time.
Unfortunately, Groups
are completely broken in Streamlabs Desktop
. They do not emit any data changes, nor do they have unique enough IDs to be able to figure out which belongs to Horizontal
or Vertical
. Also, there is no way via WebSocket to enable/disable, or perform any sort of actions or transforms on them. TLDR; use nested Scenes
for better control.
The following C# Methods
have been updated.
bool SlobsIsSourceVisible(string scene, string source, StreamlabsDesktopOutputType output = StreamlabsDesktopOutputType.Both, int connection = 0);
void SlobsSetSourceVisibility(string scene, string source, bool visible, StreamlabsDesktopOutputType output = StreamlabsDesktopOutputType.Both, int connection = 0);
void SlobsSetSourceVisibilityState(string scene, string source, int state, StreamlabsDesktopOutputType output = StreamlabsDesktopOutputType.Both, int connection = 0);
void SlobsShowSource(string scene, string source, StreamlabsDesktopOutputType output = StreamlabsDesktopOutputType.Both, int connection = 0);
void SlobsHideSource(string scene, string source, StreamlabsDesktopOutputType output = StreamlabsDesktopOutputType.Both, int connection = 0);
void SlobsHideGroupsSources(string scene, string groupName, StreamlabsDesktopOutputType output = StreamlabsDesktopOutputType.Both, int connection = 0);
string SlobsSetRandomGroupSourceVisible(string scene, string groupName, StreamlabsDesktopOutputType output = StreamlabsDesktopOutputType.Both, int connection = 0);
The StreamlabsDesktopOutputType
enum
public enum StreamlabsDesktopOutputType
{
Both = 0,
Horizontal = 1,
Vertical = 2
}
New C# Methods
There is a new overload method for TriggerCodeEvent
void TriggerCodeEvent(string eventName, string json);
This method accepts a json string, that Streamer.bot will parse itself. The reason for this, is because of the way the C# code is handled and kept separate, you can not use your own object types within a Dictionary
that you pass to the other methods of this, or use JObject
, JArray
types
New C# Method for Getting a list of commands
List<CommandData> GetCommands();
CommandData
class
public class CommandData
{
`public Guid Id { get; set; }
public string Name { get; set; }
public bool Enabled { get; set; }
public string Group { get; set; }
public int Mode { get; set; }
public List<string> Commands { get; set; }
public string RegexCommand { get; set; }
public bool CaseSensitive { get; set; }
public List<string> Sources { get; set; }
`}
Custom Event Trigger Sub-action
This new trigger allows you to Trigger a Custom Event from within a sub-action. Previously you had to use the C# method, TriggerEvent(string eventName, bool useArgs = true)
. This will allow you to trigger any Custom Event
triggers that are created.
mtion Studio
Time for a new feature, with 0.2.5
we're introducing a basic integration for mtion studio
.
There are 2 new sub-actions that can be used
- Get Active Clubhouse
- Send Trigger This integration is a bit different, as there is no service to connect to, if you wish to use it, just add either of these sub-actions
OBS
There was a bug that popped up in the beta series for 0.2.5
after making a serialization change to how Streamer.bot handles it's events internally. I was finally able to track this down to the OBS series of events, and because of this, I have changed the data structure for these events.
This data structure is mainly used for Streamer.bot's Websocket, so if you subscribe to any OBS events, they will be a bit different.
This is what the base JS data will be for any OBS Event, some will have additional information.
{
"timeStamp": "2024-09-09T19:43:35.1226962-04:00",
"event": {
"source": "Obs",
"type": "<event here>"
},
"data": {
"connection": {
"id": "edaf6e6e-5040-487e-8ac2-0d5720610e14",
"host": "<host>",
"name": "<name>",
"version": "<version>",
"websocketVersion": "<version>"
}
}
}
If you were relying on any OBS events
from Streamer.bot's Websocket, take note, the data has changed, and this is a breaking change.
WebSocket
With the release of 0.2.5
the payload for a Twitch Chat Message
, and Cheer
are changing. The Message
property will stay for backwards compatibility, but is now deprecated, and will be removed in a future version, please update and code to use the new payload data.
The new payload format is still being tweaked, and should be finalized by the time 0.2.5
hits stable, so if you are using these 2 events, feedback is welcome.
Added a handful of new WebSocket
requests, these will allow you to get Global Variables
, as well as User Variables
.
- GetGlobals
- GetGlobal
- TwitchGetUserGlobals
- TwitchGetUserGlobal
- YouTubeGetUserGlobals
- YouTubeGetUserGlobal
- TrovoGetUserGlobals
- TrovoGetUserGlobal
Authentication
With 0.2.5
, the WebSocket Server
has a new Authentication option, this uses the same authentication method that OBS WebSocket
uses.
When connecting to Streamer.bot's WebSocket, you will receive a hello msg, regardless if authentication is enabled or not, this new packet, will contain an info object, that contains the same information from a GetInfo request.
If authentication is enabled, there will be an authentication object that contains a salt and a challenge string. You will use these 2 values, as well as the password to create an Authenticate request.
{
"id": "<some_id_string>",
"request": "Authenticate",
"authentication": "<authentication_string>"
}
You will need to send the above request back to Streamer.bot in order to authenticate. To build the authentication string, you will need to do the following:
- Concatenate the WebSocket password with the salt provided by the server (password + salt)
- Generate an SHA256 binary hash of the result and base64 encode it.
- Concatenate the base64 secret with the challenge sent by the server (base64_secret + challenge)
- Generate a binary SHA256 hash of that result and base64 encode it.
- The resulting string is what you will use for authentication. The docs will be updated to describe these steps in more/better detail.
Also note, there is a new option, Enforce for All Requests
, when this is enabled, the WebSocket
is expecting an Authenticate
request as your first message, if any other request is performed, the socket will be closed. There is also a 30s timeout, where it expects this request be sent, before automatically closing the socket.
The Streamer.bot Client
is updated to support this new authentication method.
MIDI
The validation checks performed in the Midi Event Settings dialog have been fixed, which means you can only specify a channel from 1
to 16
if Ignore Channel
is not checked, and data value of 1
to 255
if Ignore Data
is not checked
Code Signing
It's coming up on a year since obtaining a Code Signing certificate, and I have renewed the certificate today. So moving forward, any new releases, will be using the new certificate.
What this means for older releases once the certificate expires, nothing, as they are properly timestamped, they will continue to function as normal.