Streamer.bot v0.2.4
New Features
- Add support for
Multiple YouTube Broadcasts
- Update UI to show list of
YouTube Broadcasts
that are available - Add new YouTube setting to
auto-monitor
broadcasts that are live - Add context menu item to
monitor
/unmonitor
a broadcast - Add context menu item to
delete
acompleted
broadcast - Add handling of
Twitch VIP Removed
- Add new Trigger,
Twitch VIP Removed
- Add new Short Cut Key Handling
- Add new event from HypeRate.io,
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 Pally.gg 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
andRemote Signal
features to Streamer.bot - Add 2 new triggers for when a Streamer.bot 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
andWait 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
andTwitch Automod Message Updated
- Add 2 new C# Methods to
Approve/Deny
a Twitch Automod Held message - Add new
Coin Exchange
event forCrowdControl
- 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
anAction
by its ID - Add
Trovo
broadcaster data when event source isTrovo
- Add
!quote
support toTrovo
- Add 2 new
Triggers
forTwitch 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
Streamer.bot.Common.Events
to default usings for Execute C# Code - Add an
IsEmpty
check when exporting, and show dialog if there is nothing - Add 2 new C# Methods for Timers
- Add
Twitch EventSub
handling for Suspicious User events - Add 2 new Sub-actions for
Throwing System
- Request new Twitch scope for Twitch Broadcaster account
- Add 2 new C# Methods for getting YouTubeBroadcast and Bot user
- Add new Trigger for
Twitch Suspicious User Update
event - Add a
Copy Timer Id
menu item to the Timer context menu - Add new C# Method, GetActions
- Request new scope on Twitch Broadcaster account
- Add support for new
Twitch Warned
API and Event - Add new Trigger for
Twitch Warned User
- Add new sub-action
Twitch Warn User
- Add new C# Method for
Twitch to Warn User
- Add new triggers for
Twitch Permitted Term Added/Deleted
- Add new sub-action, Speaker.bot Activate VoiceGate Profile
- Add 2 new Twitch Sub-actions for Rewards
- Add 2 new C# Methods for Twitch Rewards
VoiceMod
integration requires a minimum version of 2.51- Add 4 new
VoiceMod
Triggers - Add new
Twitch EventSub
event,ChannelWarningAcknowledge
- Add new trigger
Twitch Warning Acknowledged
- Add 4 new C# Methods for resetting command counters
- Add included column for Queues in the Import dialog
- Add a new Include All in Import context menu item in the Import Dialog
- Added ability to stop sounds from playing
- Add 2 new sub-actions,
Stop Sound Playback
,Stop All Sound Playback
- Add 2 new C# Methods to stop sound playback
- Kofi Donation Trigger now supports a range
- Add new C# Method
TwitchGetRewardUserCounters
- Add new Fourthwall webhook events
- Add new Fourthwall triggers
- Add new Twitch Watch Streak event
- Add Twitch Watch Streak data to Twitch data file
- Add the ability to copy/paste sub-action groups
- Add 2 new C# Methods for
Enabling
/Disabling
aTimer
by it'sID
- Add 2 new C# Methods for Twitch
Add
/Remove
Blocked Terms
- Add
OBS Vendor Event
as a separateOBS Event
- Add new
OBS Vendor
EventTrigger
- Add a new C# Method to get Streamer.bot's version
- Add new
Twitch Poll Archived
event and trigger - Add a new
Events Feed
button, this is still a WIP, and may not be fully working yet - Add 2 new
Elgato CameraHub
sub-actions - Add support for
BetterTTV
,7TV
andTwemoji
toYouTube Messages
- Add ability to mask variables in the Variable Viewer, this is user configurable
- Add a
Delete Filter Variables
context menu in theVariable Viewer
for when you are filtering variables
Updates
- 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 toEventSub
counterparts - Add option to
Read Random Line from File
sub-action to overwrite variables - Improve the underlying socket code for the
Streamer.bot Website
integration - Change some library file names to match others
- Improve the underlying socket code for the
Streamlabs integration
- Use Socket.io 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
Speaker.bot Set Paused State
, states are renamed toPause
,Resume
andToggle
- Add criteria selection to
VTubeStudio Model Clicked Trigger
trigger - Update AddQuote C# Methods, they will no longer allow a quote be added if quotes are disabled
- HtmlDecode StreamElements Tip messages
- Add Timer Id, and Name to TimedAction trigger
- Update Twitch Create Poll sub-action to add pollId argument if successful
- Update
Twemoji
to15.1.0
- Update
CDN
used forTwemoji
emotes - Update
LiteDB
library - Increase minimum required version for
Speaker.bot
to0.1.4
- Update
Read Random Line From File
,Count
now supports variables - Update all
Read Line From File
sub-actions to be able to specify the variable to use - Update
Basic Discord Webhook
to add themessageId
to the arguments when successful - Update C# method,
DiscordPostTextToWebhook
to return a string instead of bool, which is the message id - Update
sub-counter
,rolloverThreshold
is nowrollover
, to match the default text - Update and fix
VoiceMod
library - Update some
Twitch EventSub
events to GA - Better handling internally of
Twitch HypeTrain Update/LevelUp
- Update sub-counter file when setting a subcounter value directly
- Update
Twitch Sub
andTwitch Resub
events to includemultimonth
duration andtenure
values - Add
rawInput
toTwitch Reward Redemption Update
trigger - Update
Import
dialog's title - Rename Name to Host for Websocket Servers in the
Import Dialog
- Only show the command warning on importing if there are any commands being imported
- Update
Play Sound
related C# method with optionalname
anduseFileName
parameters - Update C# Method,
UpdateRewardCooldown
, let 0 disable the global cooldown - Update handling of
OBS Connections
, and introduce a Default connection - Minimum version to upgrade from is now 0.2.0
- Remove reliance on Google libraries for YouTube, and use a custom library
- Remove unecessary scopes from
YouTube Broadcaster
account, only 1 scope is needed now - Update how command sources are handled when creating/editing a command
- Update import handling of commands, wasn't properly applying upgrades
- Allow
Read From File
sub-actions to have emptyvariable
names - No longer pre-fill
Read From File
sub-action variable name with the default value - Add text on
Read From File
sub-action dialogs, what the default variable name will be if its left empty - Update
IncrementOrCreate
C# Methods to support all C# numeric primatives (short
,int
,long
,float
,double
,decimal
) - Update
Twitch Cheer Event
to include rawInput and other variables - Update how
Importing
/Exporting
is handled - Stop logging
Raw
event sources when broadcasting across theWebsocket Service
- Tweaks to
HypeRate's
connection methods - Update connection handling for
VTubeStudio
- Update connection handling for
Streamer.bot's Website Client
- Update connection handling for
TreatStream
- Update UI for
TreatStream
account/client connections - Remove old, unused argument,
raidType
fromTwitch Raid Start
,Twitch Raid Send
andTwitch Raid Cancelled
Triggers - Update connection handling for
OBS
- Tweaks to
Twitch Chat
client connection, may or may not fix SSL issues - Add additional logging to
Twitch Chat
client connection - Update
Twitch Add Random Users
, allowCount
to be avariable
that will be parsed - Updates to
Elgato CameraHub
client - Updates to how the inline chat window is handled
- Updates to inline chat's host object
YouTube Super Sticker
events now includestickerImageUrl
for the sticker image- Update Action Queue handling, this is now offloaded to it's own thread
- Misc updates to some dialogs)
Fixes
- 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 Streamer.bot
- 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 anExport
when clearing - Fix crash in
Get Random Number
sub-action when using a value larger then an int - Set default state to
Enabled
forSet Action State
when creating - Set default state to
Enabled
forSet 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 forTwitch 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
andActivateTriggerByName
andThrowItemByName
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'sCase 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 forTwitch
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 forTwitch Sub-counter
- Fix C#
AddQuoteFor
methods not causing aQuoteAdded
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 - Fix
ThrowingSystem Throw Item By Name
, was creating wrong sub-action - Fix
VTubeStudio Model Clicked
trigger not firing - Fix
VTubeStudio Item Event
trigger not firing - Fix
Trovo Subscription
trigger not firing - Fix
Trovo Resubscription
trigger not firing - Fix
Trovo Mass Gift Subscription
trigger not firing - Fix
OBS Event Trigger
, was not handling any connection properly - Fix some triggers that were missing the
__source
argument - Fix randomness in Pick Color sub-action
- Fix Twitch Create Poll sub-action, setting channel points to 0 would break
- Fix possible crash when a default browser is not configured, and one tries to authenticate
- Fix
Start Server
button being disabled whenWebSocket Server
is unable to auto-start - Fix
Elgato Webcam EpocCam Set BitRate
sub-action dialog showing cameras, should show bitrate options now - Fix
Elgato WebCam EpocCam Set BitRate
sub-action, should actually set the bitrate, not the camera now - Fix Twitch Ad Timer triggering when stream is offline
- Fix potential crash when creating a
Twitch Poll
, and using less than 15 channel point, will default to 15 - Fix
VTubeStudio Item Event
type being empty - Fix
VTubeStudio Model Clicked Event
, was not triggering - Fix typo in
VTubeStudio Get Current Model
,timeSinceLoaded
- Fix
Command Trigger
Tests not settingTrovo
source when it's aTrovo
command - Fix
Command Trigger
Tests picking a random user for the wrong platform - Fix potential crash in
Global Variable Viewer
when usingUnsetAllUserVars
for non persisted users - Fix
Elgato Stream Deck
start button ending up in a disabled state - Fix
Twitch Prediction End
, winningIndex was not being set correctly - Fix inline method parsing not correctly handling cases when it's not a method, and stripping the text out
- Fix
Elgato Camera Hub Set Zoom
adjustment not working correctly, this still is done in 10 increments - Fix
OBS Raw
sub-action not using data returned fromOBS 5.x
batch requests properly - Add missing
__source
forTwitch Upcoming Ad trigger
- Fix issue in
ThrowingSystem
disconnect code - Fix
VoiceMod
auto connect retry - Fix more typos in
VTubeStudio Get Current Model
, underlying data struct was parsing 2 fields wrong - Fix display of regex based Commands in the UI, location will now say Regex
- Fix visual bug when importing
WebSocket Client
s, list would appear white and no longer update - Fix quick deleting of sub-actions, will not do anything if the deletion is still happening and you delete another sub-action
- Fix
Streamer.bot Remote Wait For Signal
, was not cleaning up signal data correctly, switching instances would sometimes cause it to to trigger - Fix context menu in
Import Dialog
;Exclude All from Import
will show up correctly for all lists now - Fix Import, when adding new items to various UI elements, they shouldn't double up if over-writing
- Fix MIDI Sub-action dialogs causing a crash, Learn From being set to none was causing an issue
- Fix internal crash when getting
Trovo
user info for a user that does not exist - Fix
Twitch Hype Train Update
andLevelUp
simulate - Fix
Twitch Timeout Duration
being off by 1 second - Fix typo in
Twitch Create Clip
sub-action,isFeatured
- Fix handling of Actions/Queue inclusions when excluding a command in the Import Dialog
- Fix not being able to save
VoiceMod Select Voice By Id
sub-action - Some tweaks to validating Twitch tokens, still needs more work
- Fix Actions being removed, instead of overwritten on import
- Fix Commands being removed, instead of overwritten on import
- Fix StreamLabs Charity Donation Trigger test
- Fix crash in VTubeStudio Send Raw sub-action and C# method when a malformed request is sent
- Fix some more potential crashes within VTubeStudio methods and response errors
- Handle potential crash during
Twitch
authentication - Fix potential crash during configuration upgrade related to commands
- Fix
Pally.gg Campaign Tip Trigger
test, tipNetAmountFormatted was incorrect - Fix
Increment Variable C#
methods not working correctly - Fix C#
SetTimerInterval
allowing an interval less than 0 - Fix C#
GetActions
not having the enabled state of the action set - Fix potential crash when editing a command
- Fix C#
DeleteGroup
not updating the UI - Fix potential crash when starting the
HTTP Service
- Fix potential crash when connecting to
YouTube
- Fix potential crash during
OBS Connecting
- Fix crash when editing a
Timed Action
that has intervals less than 0 - Fix potential crash when parsing some
Patreon
events - Fix potential crash within
Trovo Chat
client - Fix potential crash in
YouTube API
handling, when getting channel description - Fix potential null value when trying to get
Elgato Prompter
channel information - Fix potential crash when updating a
Twitch Channel Reward
- Fix potential crash in the
Action Queue
when handling errors in the default queue, this may have caused the default queue to just stop processing - Fix potential crash when trying to connect to
Twitch Bot
account - Fix potential bad data when loading
Twitch Rewards
cache - Fix potential crash in the internal
Twitch Present Viewers
timer - Fix a potential crash in
File Watcher Changed
event when the file is deleted while it's trying to read it - Fix potential crash when trying to load
Elgato WaveLink
outputs - Fix potential crash when loading remote
Streamer.bot
instances - Fix potential crash when accessing the context menu of a variable in the
Variable Viewer
, and the variable is deleted - Handle potential crash related to threading when calling C# custom code's
Init()
method - Fix
Elgato WaveLink
integration - Fix some logging entries that were saying the wrong service name
- Fix a potential
FileNotFound
crash at startup - Fix a potential crash when editing an
Execute C# Code
, and there is no Code - Fix a potential silent crash in the
HTTP Service
, this usually would not cause any issues - Fix
Twitch Raid Start
Trigger test having the wrong data inraidUserId
- Fix 1Twitch Raid Cancelled1 Trigger test having the wrong data in 1
- Fix arguments created for the
Twitch Raid Send
event - Fix C# method
WaveLinkInputUnmute
not muting mic - Fix C# method
WaveLinkInputToggleMute
not toggling mute on mic - Fix Twitch Ad Timer not starting correctly from a stream offline to stream online.
- Fix potential crash in
Twitch Raid Send
andTwitch Raid Cancelled
trigger test when randomTwitch
user no longer exists - Fix percentage values in
Twitch Hype Train Update
andTwitch Hype Train Level Up
simulate events - Fixes to
Elgato CameraHub
client - Fix
Elgato CameraHub Zoom
forFacecam Mk.2
andFacecam Pro
- Fix
Elgato CameraHub Pan/Tilt
forFacecam Mk.2
andFacecam Pro
- Fix
Elgato CameraHub Set Anti-flicker
sub-action dialog, text was wrong - Fix
Elgato CameraHub Set Noise Reduction
sub-action - Fix a potential crash in
VoiceMod client
- Fix a potential crash in
Websocket Service
- Fix a potential crash in
StreamLabs Website
client - Fix crash when editing/creating a
Command
and setting the cooldown larger thenint32
max value - Fix a potential crash when loading
OBS Scene Data
- Fix some test data in
Twitch Poll
triggers - Fix potential crash in OBS Raw sub-action when testing
- Fix potential crash in DonorDrive monitor
- Fix potential crash when connecting to Speaker.bot
- Fix potential crash when retrieving list of Trovo Moderators
- Fix potential crash in Trovo when validating tokens during API calls
- Fix Elgato CameraHub Set Zoom adjustment for Facecam Pro and Mk.2
- Fix potential crash when starting an Auto Update download
- Fix potential crash in
DonorDrive
monitoring thread - Fix potential crash in multiple libraries when trying to send data on a closed socket
- Fix potential crash when editing a
Play Sound
action and theAudio Device
no longer exists - Fix potential crashses related to
Clipboard
access, and checking/pasting Triggers/Sub-actions - Fix potential crash in
Global (Set)
sub-action, when usingUser (redeemer)
, and there is no user
Streamer.bot Chat Updates
New Features
- Tabbed Chat View
- Tabbed view for each connected platform
- Event Feed tab
- Multiple YouTube Broadcast Support
- YouTube tab allows filtering to specific YouTube broadcast
- Global Quick Actions
- Multi-Select Chat Toggles
- You can now toggle exactly which connected platforms you wish to send chat to
- Shift+Enter hotkey added to quickly override and send a message to all chats at any time
Updates
- Improved Highlights
- Added highlights for Mods & VIP's
- Color customization
- YouTube Events
- Added a number of missing YouTube trigger events
- Paused chat will now show number of new messages since you scrolled up
- Added tooltips to various elements (Twitch badges, etc)
Details
YouTube
The YouTube integration no longer relies on the Google libraries, that's 5 fewer DLLs being supplied with Streamer.bot moving forward. However, these DLLs will be left alone if they are already present in your Streamer.bot folder.
Also moving forward, YouTube will only need 1 main scope to function. Because of the scope mis-match, it will ask to re-authenticate when you start Streamer.bot.
Emotes
With Streamer.bot 0.2.4
, YouTube emotes are finally being parsed and sent along with message events. This includes emotes from YouTube
(public ones), BetterTTV
, SevenTV
as well as Twemoji
. There are 2 new arguments added to the YouTube Message event, parts and emotes. The parts contains the message as created in parts, and emotes contains a list of emotes in the message (like Twitch)
Ban/Timeout
Being able to Ban and/or Timeout a user in your YouTube chat is available as of 0.2.4
.
Multi Broadcast Support
Here is an update I've had cooking for a while. Streamer.bot now supports handling multiple YouTube broadcasts.
The YouTube sub-actions have been updated to include a Broadcast dropdown, where you can select from All, Latest and Variable.
- Using All will update all broadcasts
- Using Latest will update the latest broadcast monitored
- Using Variable uses the fixed broadcast.id variable to select the broadcast The send message methods have been updated, and will send a message to any broadcast that is currently being monitored. Also, the sub-action has been updated with a drop down to pick a broadcast, this will let you choose all, latest, or from variable. The variable option will use a variable that is set by YouTube events that indicate which broadcast they came from, and will send the message only to that broadcast.
Once you're logged into YouTube
, the Broadcasts
tab will be populated with your 20 most recent broadcasts. You can right click on a broadcast, and pick Monitor
to start monitoring it. There is also a setting under Settings, to Auto Monitor Live Broadcasts
. Broadcasts
will not be auto monitored unless you either explicitly set it to, or enable auto for live broadcasts. Completed broadcasts can not be monitored.
Tags
You can now modify the Tags of a broadcast.
Within the YouTube platform tab, under Settings you can add default Tags. This acts as a basic list for quickly adding/removing tags on Broadcasts that are not completed.
When you right click on a Broadcast, there is a new menu item, Tags, there will be an item Add, where you can type in a tag to add, as well as a combined list of Tags the broadcast has, and the Tags you've added to the Default Tags under settings. If a broadcast has the tag, there will be a checkmark next to it.
tags
, as a string, comma separated are limited to 500 characters. Also, Tags
are case sensitive.New Sub-actions
Added the following new sub-actions for YouTube:
- Ban User
- Timeout User
New Triggers
Added the following new triggers for YouTube:
Broadcast Added
Broadcast Removed
Broadcast Monitoring Started
Broadcast Monitoring Ended
Events
It has come to my attention that certain events were not triggering, after some searching and testing, it appears that some events just flat out do not work.
The following YouTube triggers will never work until YouTube
adds the data to the API
.
- Message Deleted
- Message Retracted
- YouTube Polls The last 2 do not exist as triggers yet, but wanted to make note of them.
Updated C# Methods
void SendYouTubeMessage(string message, bool bot = true, string broadcastId = null);
New C# Methods
void SendYouTubeMessageToAllMonitored(string message, bool bot = true);
void SendYouTubeMessageToLatestMonitored(string message, bool bot = true);
YouTubeBroadcastInfo YouTubeGetLatestMonitoredBroadcast();
List<YouTubeBroadcastInfo> YouTubeGetMonitoredBroadcasts();
bool YouTubeSetTitle(string title, string broadcastId = null);
bool YouTubeSetDescription(string description, string broadcastId = null);
bool YouTubeSetPrivacy(string privacy, string broadcastId = null);
bool YouTubeSetCategory(string categoryName, string broadcastId = null);
bool YouTubeSetMetaData(string title, string description, string privacy, string categoryName, string broadcastId = null);
YouTubeBroadcastInfo
class
public class YouTubeBroadcastInfo
{
public DateTime MonitoredAt { get; set; }
public string Id { get; set; }
public string ChannelId { get; set; }
public string LiveChatId { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string CategoryId { get; set; }
public string CategoryName { get; set; }
public List<string> Tags { get; set; }
public string DefaultLanguage { get; set; }
public string DefaultAudioLanguage { get; set; }
public string Privacy { get; set; }
public DateTime PublishedAt { get; set; }
public string Status { get; set; }
}
bool YouTubeClearTags(string broadcastId = null);
bool YouTubeAddTags(List<string> tags, string broadcastId = null);
bool YouTubeRemoveTags(List<string> tags, string broadcastId = null);
bool YouTubeTimeoutUserById(string userId, int duration, string broadcastId = null);
bool YouTubeTimeoutUserByName(string userName, int duration, string broadcastId = null);
bool YouTubeBanUserById(string userId, string broadcastId = null);
bool YouTubeBanUserByName(string userName, string broadcastId = null);
Updating
The upgrade code was starting to get a bit unruly, and unnecessary to keep bringing forward, so, starting with 0.2.4
, the minimum version supported for upgrading is 0.2.0
. The auto-updater has already been updated, so anyone below 0.2.0
will be presented with 0.2.0
as an available update, and anyone on 0.2.0
or higher, will be presented with the latest.
Action Queue
I've applied some performance tweaks to how the Action Queue is handled within the UI.
This is now threaded and separate from the main queue threads, so what this hopefully means is, during high volume events, Streamer.bot's
UI will not freeze like it did before. There still maybe some slowdowns, but this is due to the volume of adding/updating UI elements.
Masked Variables
There is a new tab under Settings
called Variables
, here you will be able to toggle the option Mask Variables Containing
, and add/delete keytwords to the list of keywords that will cause a variable to be masked in the Variable Viewer
These settings are not real time, and any changes will require the Variable Viewer
be re-opened after making changes.
Twitch
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
- moderator:read:suspicious_users
- moderator:manage:warnings
PubSub
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.
IMPORTANT
Take note, there are breaking changes with the update to EventSub for some events, specifically for those that rely on Streamer.bot'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.
Sub and ReSub Triggers
Twith Sub and Resub events now have 3 new variable, isMultiMonth
, multiMonthDuration
and multiMonthTenure
Watch Streak
When a user publicly shares there Watch Streak
in your channel, you can now use the Twitch Watch Streak
trigger to react to it, and this trigger has a Min
/Max
criteria. In addition, when a Watch Streak
is shared, it is saved in the data repo
for Twitch, for future use.
New Sub-actions
- Reward Set Max Per Stream
- Reward Set Max Per User Per Stream
New C# Methods
bool TwitchApproveAutoHeldMessage(string messageId);
bool TwitchDenyAutoHeldMessage(string messageId);
TwitchWarnUser(string userName, string reason);
void UpdateRewardMaxPerStream(string rewardId, long redeems, bool additive = false);
void UpdateRewardMaxPerUserPerStream(string rewardId, long redeems, bool additive = false);
List<TwitchRewardCounter> TwitchGetRewardUserCounters(string rewardId, bool persisted = true);
bool TwitchAddBlockedTerm(string term);
bool TwitchRemoveBlockedTerm(string term);
OBS
OBS handling in 0.2.4
received a little bit of TLC.
With the issues surrounding users deleting and recreating OBS connections, thus severing the link sub-actions had to the connection, I've expanded the usage of the Default
connection for OBS.
Prior to 0.2.4
, you could mark an OBS Connection
as Default
, and this would be used when you Import
actions that contain OBS sub-actions
, it would set them to use whatever is configured as default, and I'm pretty sure most weren't aware of this, or used it.
So, starting with 0.2.4
, the Default
connection has more meaning now.
First up, all sub-actions have a new entry you can pick in the connection drop down, Default
, this will mean the sub-action uses whatever is configured as Default
, this has also been applied to Triggers
Since this is an underlying change, a configuration upgrade will be performed, and the following will happen:
- OBS Connections will be moved to there own json file
- If there is only 1 connection, and it's not marked as
Default
, it will be marked asDefault
- If there are multiple connections, and none are marked as
Default
, then the first connection in the list will be marked asDefault
- All OBS Sub-actions will be updated, if there connection does not exist, or if the connection matches the
Default
, it will be changed toDefault
from the specific one - All OBS Triggers will be updated, using the same criteria as sub-actions, and those with Any will be left alone
When you add and delete OBS Connections, if you remove them all, and add a new one, it will automatically be marked as Default
. If you remove the Default
connection, then the first connection will automatically be marked.
Import/Export
Much like the config upgrades for Streamer.bot, starting with 0.2.4
, you will no longer be able to import and exports from pre-0.2.0
. While this isn't ideal, the entire import/export system was a bit fragile as not all configuration updates were being done, sometimes leading to bad data.
Also with 0.2.4
, exports will now have default Minimum
versions, this is set by me internally. Some of this code was already in place, it was just never enforced.
One last change, is stable
releases will be able to import exports from pre-release versions however, a warning dialog will show when importing them.
Finally, I've gone through and fixed the upgrade paths from various versions, so data across the board should be correct now.
The entire import/export system was a bit neglected in this regard, so this allowed me to finally get it fixed up.
Elgato WaveLink
With the new version of Elgato WaveLink
, v1.11.1
, some of the data structures changed, which completely broke the integration. I have gone through and updated what is needed, and increased the minimum required version of WaveLink
.
Moving forward, version 1.11.1
of WaveLink
will be required.
Elgato CameraHub
I went through and did some testing with a Facecam Mk.2, and after much hair pulling, cursing, and just general wtfs, I've updated the CameraHub integration with fixes and tweaks.
New sub-action
- Set Sharpness
- Set Dynamic Range
Copy/Paste
With 0.2.4, you can now copy and paste sub-action groups. No longer do you need to copy 1 sub-action at a time, if they're grouped, you can copy the entire group.
HypeRate.io
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.
Pally.gg
Pally.gg
is now supported!
In order to setup Pally.gg
, you will need an API Key from there website. You can get this from your dashboard.
Triggers Added
- Connected
- Disconnected
- Campaign Tip
Fourthwall
The Fourthwall integration now supports the following new triggers:
Thank You Sent
Newsletter Subscribed
Gift Draw Started
Gift Draw Ended
A Note aboutNewsletter Subscribed
, the only data sent in this event is the users email, so please be careful how this is used.
Audio Service
With 0.2.4
, you can now stop all playing sounds, or a playing sound. Yes, you heard that right, you can now stop sounds that have been started in Streamer.bot
2 new sub-actions have been added:
- Stop All Sound Playback
- Stop Sound Playback
The first sub-action,
Stop All Sound Playback
does just that, it will stop any sound that has been started with thePlay Sound
,Play Sound From Folder
or equivalent C# methods. Be sure to add this sub-action in a different queue then your sounds, or in in a non-blocking queue.
The Play Sound
and Play Sound From Folder
have received new properties, Name
, and Use FileName as Name
. By default, Name
is empty, and Use FileName as Name
is true.
The Name field can contain one of 4 values:
- Leaving it empty will use a "default" name
- Entering your own value into is, such as "specialSound"
- Using a
variable
, this field will parse thevariable
, but if it's unable to, it will be thevariable
itself - If
Use FileName as Name
is enabled, then it will be the file name without the extension.
The second sub-action, Stop Sound Playback
will let you stop a specific sound, by name
. As outlined above, the name
you want to use here, is what you set in the Name
field in the Play Sound
or Play Sound from Folder
sub-action. This will stop all sounds that have this name.
Both of these sub-actions, if stopping a sound that you're waiting to complete, will return the duration of how long it played for.
Play Sound
and Play Sound From Folder
sub-actions will default to Use FileName as Name
, this means, if the file you are playing is some-random-sound.mp3
, then it's name will be some-random-sound
New C# Methods
void StopAllSoundPlayback();
void StopSoundPlayback(string soundName);
Updated C# Play Sound methods
double PlaySound(string fileName, float volume = 1.0f, bool finishBeforeContinuing = false, string name = null, bool useFileName = true);
double PlaySoundFromFolder(string path, float volume = 1.0f, bool recursive = false, bool finishBeforeContinuing = false, string name = null, bool useFileName = true);
VoiceMod
With the release of Streamer.bot 0.2.4, the VoiceMod
integration will now require a minimum version of 2.51
This requirement was put in place to simplify some of the VoiceMod code, and overall to improve it.
New Triggers
- Connected
- Disconnected
- Voice Loaded
- Soundboard Changed
Commands
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, Platform platform, string commandId);
CommandCounter CommandGetUserCounterById(string userId, Platform 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; }
}
void CommandResetCounter(string commandId);
void CommandResetAllUserCounters(string commandId);
void CommandResetUsersCounters(string userId, Platform platform, bool persisted);
void CommandResetUserCounter(string commandId, string userId, Platform platform);
Streamer.bot 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 Streamer.bot to have the Website Integration
connected.
Remote Triggers
You can now send a trigger to another instance of Streamer.bot that is logged into your account.
Much like the C# activate trigger, you are able to add a Streamer.bot 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 Streamer.bot, you can use the Streamer.bot 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 Streamer.bot.
Send Signal
This will allow you to send a named signal, with or without arguments to either all, or a specific Streamer.bot Instance
Wait For Signal
This sub-action will, as the name implies, wait for a named signal from any or a specific Streamer.bot 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 Streamer.bot, 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 https://docs.streamer.bot/Ctrl + S
- SaveCtrl + Alt + I
- Open Import DialogCtrl + Alt + E
- Open Export DialogCtrl + Alt + C
- Open ChatCtrl + Alt + V
- Open Variable ViewerCtrl + 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.
Throwing System
This release received 2 new sub-actions
- Throw Items
- Throw Items By Name These sub-actions will let you throw multiple items in one sub-action
New C# Methods
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# Methods for Timers
void DisableTimerById(string timerId);
void EnableTimerById(string timerId);
Added the following C# Method for Trovo Quotes
int AddQuoteForTrovo(string userId, string quote, bool captureGame = false);
Added the following C# Methods for Timers
void SetTimerInterval(string timerId, int interval);
bool GetTimerState(string timerId);
Added the following C# Method to Get Streamer.bot's version
string GetVersion();
Added the following C# Methods for YouTube
YouTubeUserInfo YouTubeGetBroadcaster();
YouTubeUserInfo YouTubeGetBot();
YouTubeUserInfo
class
public class YouTubeUserInfo
{
public string UserName { get; set; }
public string UserLogin { get; set; }
public string UserId { get; set; }
public DateTime LastActive { get; set; }
public DateTime PreviousActive { get; set; }
}
Added the following C# Methods for Actions
List<ActionData> GetActions();
ActionData
class
public class ActionData
{
public Guid Id { get; set; }
public string Name { get; set; }
public bool Enabled { get; set; }
public string Group { get; set; }
public string Queue { get; set; }
public Guid QueueId { get; set; }
}