Streamer.bot v0.2.3
New Features
- Add new Simulated Events
- Add a new Dialog that can be used within Streamer.bot to search for Twitch user's both from the internal cache, and from within Twitch itself
- Add a way to disable unused sub-actions
- Add a way to disable unused triggers
- Allow re-organizing of triggers, this is only a visual thing
- Add new C# Method,
TwitchUserInfo TwitchGetBot();
- Add 7 new triggers for Streamlabs Desktop
- Add new historical data collection to Twitch Data.
Subscriptions
,Gift Bombs
, andHype Trains
are now recorded - Add option to disable Present Viewers timer for Twitch
- Add option to completely disable the Action History, as well as Pending items
- Add an option to disable the Viewers Tab, for performance reasons
- Add an option to disable Twitch Present Viewers tick completely
- Add ability to remove users from a group in the UI, by way of a right click context menu
- Add new C# Method
List<GlobalVariableValue> GetGlobalVarValues(bool persisted = true)
- Add new sub-action to Get the SubCounter Count
- Add new sub-action to Set the SubCounter Count
- Add the display of the current SubCounter Count to the SubCounter tab
- Add ability to edit the current value of the SubCounter in the UI
- Add new sub-action to Add a Twitch User to a Group
- Add new sub-action to Remove a Twitch User from a Group
- Add a new integration for
Fourthwall
- Add direct support for
alejo.io pronouns
- Add a new platform, Trovo, as well as a new database to store platform specific data
- Add 2 new C# Methods for accessing data in args
- Add 2 new C# Methods for clearing non-persisted variables
- Add a new context menu on a user to delete them
- Add option to hide Splash Screen
- Process Watcher is now a service that you can start and stop, with an auto start option, by default is is stopped.
- Add a new
Headless
Mode - Add
Timed Actions
,Custom Websocket Servers
andClients
to Import/Export - Add an option to flag an action as Auto Run on Import
- Add new sub-action,
Set Sub-action State
- Add new trigger for
Twitch Bot Chat Client Connected
andDisconnected
- Add a new
File Tail
service - Add a way to add a list of Twitch users to a group
- Add new context menu item to groups, to search for a Twitch user (uses the new User Search dialog)
- Add new integration for
Speaker.bot
- Add new
Speaker.bot
Speak sub-action - Add platform icons to Viewer list
- Add setting to auto-open chat on startup
- Request 2 new scopes on your Twitch Broadcaster account, related to the new Ad API calls that were added
- Add a new platform VStream, as well as a new datbase to store platform specific data
- Add sub-actions to add/remove users to/from groups, and check if they are in a group
- Add new Trigger, Twitch Upcoming Ad
- Add a new integration for Twitch Integrated Throwing System
- Request 1 new scope on your Twitch Broadcaster account, related to new EventSUb events
- Add logging when Twitch API rate limit is below
25%
remaining - Add 7 new Twitch Triggers
- Add 2 new VTubeStudio Triggers
Twitch Subscription Tier
is added to arguments for subscribed users,subscriptionTier
- Add 10 new C# methods for handling Trovo user globals
- Add 10 new C# methods for handling VStream user globals
- Add UserType to UserVariableValue class for C# usage
- A new integration, Elgato Camera Hub!
- Added 25 new
triggers
for theElgato Prompter
- Added 15 new
sub-actions
for theElgato Prompter
- Added 42 new
triggers
forElgato Camera Hub Webcam
- Added 16 new
sub-actions
forElgato Camera Hub Webcam
- Add
adLengthMs
forAd Run Trigger
, provides ad length in ms - Add some checks for
WebView2
support during startup - A warning dialog will show if trying to open inline chat without WebView2 support on your machine
- Add
dlls
folder to path forFind Refs
inExecute C# Code
sub-action - Add new C# Methods for obtaining the counters for Twitch Rewards
- Add new
Recent Sub-Actions
menu item, this will show the last 10 sub-actions used, and is not persisted - Add new
Recent Triggers
menu item, this will show the last 10 triggers used, and is not persisted - 6 new
C#
methods for usingMIDI
MIDI
sub-actions will now remember the last selected learn device, as well as auto connect if it was open- Add ability to delete multiple triggers
- Add Regex ExplicitCapture option for Regex based commands
- Add 3 new Twitch sub-actions for polls,
Create
,Terminate
, andArchive
- Add a new
Platform
enum for use withC#
methods - Editing permissions for
commands
has changed, and supports users across different platforms - Add new sub-actions for
YouTube
,Trovo
andVStream
to Add/Remove User to/from a group, and to check if a User is in a group - Show a user's subscribed status in the Viewer UI, this applies to
Twitch
,VStream
andTrovo
- Add
userProfileUrl
toYouTube
command events - Add
userIsSponsor
to variousYouTube
chat events - Add new C# methods for Twitch Block and Unblock user
- Add new
Add User
context menu item to Groups UI - Add reply data to commands for Twitch sources
- Add new C# method to get all users in a group
- Add a new option to
Global Variable Update
trigger,Persisted
- Add a new Trigger,
User Global Variable Update
- Add
Adjustment
property to 3Elgato Wave Link
sub-actions for adjusting volume - Add
Twitch Subscription Tier
to Viewer UI, if user is subscribed - Add new argument commandName when handling commands
- Add Trigger for Charity Donation event from Streamlabs
Updates
- Update external libraries
- Twitch Hype Train progress was re-added back to credits handling
- Move
Crowd Control
triggers underIntegrations
- Don't color a trigger as blue if there are no criteria for it
- Better handling of Twitch Chat for high volume channels
- Performance tweaks surrounding Twitch Chat handling
- More Twitch Reply information is added to the arguments, inspect an action that has a reply to see all the new fields, and note
replyTo
is no longer available. - Tweaks to some internal classes
- Update Twitch SubCounter to move its data to the twitch data db for better saving
- Update underlying control in Groups tab that shows the users in a group
- Tweaks and improvements to startup routines
- Remove Labs option to use the old queue
- Move Performance options to General Settings Tab
- Move Action Queue related sub-actions to an Action Queues sub-menu
- Do Action sub-action uses the new Action selector to pick an action, instead of the dropdown
- Get/Set Action state sub-actions use the new Action selector to pick an action, instead of the dropdown
- Websocket Service error dialogs use new timeout capable dialog
- Update Viewer details display to not show Twitch specific data (Bits, Channel Points) for non-Twitch users.
- Add option to Fetch Url sub-action to parse the response as json. This will walk the json and add all values as variables
- Remove support for
Twitch Hype Chats
- websocket-sharp library updated
First Words
handling has been completely re-written- Update
YouTube
first words handling - Update
Global Set
sub-action, forIncrement
/Decrement
, the data is now parsed, so variable and functions are supported - Speed up connecting to Twitch EventSub
- Update sending of Twitch Chat Messages via the API, they are no longer sent through the IRC client.
- Increase keep-alive timeout for Twitch EventSub to 30s from the default of 10s
- Update Twitch Hype Train Triggers, adding
total
,progress
,goal
arguments for them - Update Delay sub-action to support inline parsing
- Update source naming for triggers in UI to match context menu more
- Update new
OBS Connections
to default toOBS 5.x
- Updated connection routines and UI for StreamElements
Execute C# Code
now stores relative references- Better handling of YouTube Quota Exceeded, you will now get a popup explaining when quota has been exceeded
- Update
Pulsoid
to only send pulse rate when it changes - Update
HypeRate
to only send pulse rate when it changes - Update how UserIDs are handled across different platforms
- Groups can now handle members from different platforms
- Reserved groups (moderator, subscribed, vip) now properly check the respective user's platform
- Group import/export within the UI has been updated
- Displaying of groups, and users within have been updated
- 3 C# methods have been deprecated, and no longer do anything
- Update Group and Command related C# methods to include a user's Platform as an argument
- Update self checks done during command processing to include VStream and Trovo checks
- Deprecate C# Methods for GetClipsForUser where
userId
is anint
- Add 6 new C# Methods for GetClipsForUserById
- Update existing C# GetClips methods ot have an
isFeatured
parameter - Tweaks to 7TV Server Side Events handling
- Update various Twitch events to have an
isTest
parameter, this will betrue
when the event comes fromSimulate Events
- MIDI Send Note On has been updated, the duration is now in milliseconds, instead of seconds
- PlaySound sub-actions will now add
soundLength
andsoundLengthMs
to the arguments - PlaySound C# methods will now return the length of the sound in milliseconds
- Custom Colors are now saved when added to color dialogs throughout the app, and restored when needed
- Tweak some Twitch sub-actions to prefix Twitch to the description
- Update platform handling in the Global Variable viewer
- Update user handling in the Global Variable Viewer
- No longer trigger OBS Disconnected, if the OBS instance was not connected to begin with
- Update Command UI filter, to also filter on the Command Name
- Update
Twitch Add/Remove Moderator
sub-action to the same dialog style as ban/timeout and perform a config upgrade - Perform a cleanup when loading globals, removing any user global that has no platform
- Remove
\s
from Twitch Reply data
Fixes
- Fix typos
- Fix MIDI In/Out devices not being auto opened on startup if configured to do software
- Fix Twitch Shoutout events parsing a users login/name incorrectly
- Fix duplicate credit entries (originating from Twitch Shoutouts)
- Fix duplicate users showing in viewer list (originating from Twitch Shoutouts)
- Fix quotes being loaded too late in the chain for the UI to list them
- Fix Viewer UI not expiring Twitch users when using Live Presence option
- Fix handling of subscribed Twitch Viewers in chat messages, data could get out of sync when a re-sub or sub is not shared
- Fix
Set Sub Action state
not properly invalidating internal random actions/group caches - Fix wrong source type for
Elgato Wave Link
InputLevelMeterChanged
- Fix wrong mixer type being indicated for stream mixer in
OutputLevelMeterChanged
events - Fixes to
Global Get/Set
sub-actions to use proper id for reading/writing of user data - Fix text on
Crowd Control
integration tab - Fix
Twitch Announce API
call not using correct values - Fix Export dialog causing a crash after it was closed
- Fix
MIDI
sub-actions causing a crash when using out of range values - Fix
Twitch Clear Chat Messages
sub-action - Fix potential crash in
Streamlabs Desktop
when handling messages (I need reports for this, as it is still occuring even with this fix) - Fix possible crash caused by
DonorDrive
parsing, seems some error response data has changed - Fix possible crash in
HypeRate
handling - Fix C# method
OBSGetSGroupSources
always returning an empty list - Fix Actions and Commands not showing red when disabled from load
- Fix shutdown of
StreamElements
service when closing Streamer.bot - Fix
ClearNonPersistedGlobal
andClearNonPersistedUserGlobals
methods, they were causing a crash - Fix potential issue shutting down OBS services when closing Streamer.bot, and connections reconnecting themselves
- Fix Twitch User Timedout event not including the user being timed out
- Fix potential crash in
Streamlabs Desktop
when starting/stopping recording/streaming - Fix potential crash when connecting to
VTubeStudio
and not receiving authentication data - Fix error when Execute C# Code and Get Command Group State sub-actions exist in the same action
- Fix Set Global increment/decrement, was not being auto-typed properly when entering a number
- Fix Twitch bot account not having its status removed when forgetting its token
- Fix Twitch Ban/Timeout related sub-actions, wrong user information was being added to the arguments
- Fix potential crash in
MIDI Note On
sub-action when there are noMIDI
In devices configured - Fix potential crash in Twitch Present Viewer trigger when testing
- Fix another potential crash when connecting to VTubeStudio and not receiving authentication data
- Fix potential craash when starting a Custom Websocket Server when the port is already in use
- Fix version update being duplicated on main UI which switching release channels
- Fix some client connect buttons not being initially disabled
- Fix Twitch Delete Chat to use the correct account IDs
- Fix actions not being properly invalidated when deleting, adding, or moving sub-actions
- Fix Voice Control locale not being saved
- Fix Twitch Gift Subs and Twitch Gift Bombs
Details
YouTube Quota
A quick update here, unfortunately it seems like every day the quota is being exhausted. Usually 3-4 hours prior to reset, or less.
The application to get more quota was submitted already, and it's currently just a waiting game. I'm hoping this is resolved soon, and Google gives me more quota.
Simulated Events
Prior to 0.2.0, one could test certain Twitch events from within the respective events tabs, and with the release of 0.2.0, this was change to be able to test the Triggers
directly.
With the addition of Triggers
, this opened up the ability to have multiple actions triggered by the same event, so in order to test this, you would have to goto each action, and test the trigger manually.
With 0.2.3, a new way of testing has been added, Simulated Events
Simulated Events
are still initiated from a trigger's context menu, however, they will allow you to specify certain data (for instance, for a cheer, you pick the user, and specify the amount), and it will simulate this event application wide, so any triggers that match, will be run.
With this feature, also comes a way to not only search your local user cache, but, to also search against Twitch itself.
User Changes
This change has been a long time coming, especially after the introduction of 2 new platforms (Trovo and VStream).
Configuration updates will happen to users, groups, and commands, and anything that uses a user id in a global sense (i.e., it supports users from multiple platforms)
Overall, this enables a better internal tracking of users, while maintaining a platform's specific user id for the users themselves.
Trigger Update
So, way back when, 0.2.2-alpha.6
to be exact, a fix was put in dealing with Min/Max logic . This fix, while it worked for what was needed, cause another bug, which unfortunately went unnoticed, and wound up being included in 0.2.2
that went to stable.
The Issue
Lets say you have 2 actions, both of which have a Twitch ReSub
trigger on them. One of the triggers is configured for Any Tier
and Any Cumulative
, the other is configured for Tier 1
and Any Cumulative
.
What will happen with this scenario, is, when a Tier 1
resub happens, it will see that there are 2 triggers that could be used, but, since the Twitch ReSub
has a Min/Max
component, it goes on to further checks, and within these checks, it basically rules out the specific Tier 1
trigger, and leaves the Any
trigger to be run.
Now, ofc, what's suppose to happen, is the Tier 1
specific trigger is suppose to run, and if you had Always Run Trigger enabled on the Any trigger, that should run as well.
The Fix
This is more of an evolution of the Trigger
system, but, at the same time is a fix.
The secondary check mentioned above, no longer happens, instead, this happens:
Within the UI, when you right click on a trigger, there will be a new menu item, Don't Run If
, and within this menu item, will be listed the action and criteria of the trigger of any of the same trigger types.
If a trigger has been marked as Don't Run If
in another trigger, then it will not show up in the target trigger, this is a sanity check, otherwise a stalemate will happen and neither would run.
Example is as follows:
You have 3 actions, Cheer 1
, Cheer 2
, Cheer 3
. Each of these actions has a Twitch Cheer
trigger set to 1-100
, 1-100
and Exact 50
respectively.
The 1-100
trigger in Cheer 2
, has Cheer 3 - Exact: 50
in it's Don't Run If
menu item checked.
When you simulate a cheer for 50, the action history will show Cheer 1
, and Cheer 3
as having run. This is because, Cheer 2's 1-100 Cheer
trigger, is configured to not run if Cheer 3's Exact:50
trigger runs.
Before You Stream
After updating to this alpha, BEFORE YOU STREAM, be sure to check any triggers you have setup that have criteria, and may overlap in some way, and configure the Don't Run If
settings for them.
This is unfortunately not something that can be done with a configuration upgrade, as, it has no idea what triggers are suppose to activate over others.
Twitch
C# Methods for GetClips have been updated with the isFeatured
parameter. By default, this will behave as they were, and fetch clips whether they're featured or not. If this is set to true
, then only clips that are featured will be fetched, and if it is set to false
, then it will get clips that are not featured
Gift Subs and Gift Bombs
The Gift Bomb event was suppose to happen when there were 2 or more subscriptions gifted to the channel, this has now been fixed.
The following is what will happen with Gift Subs and Gift Bombs
- A targeted gift sub is given, a Gift Sub event is triggered
- 1 random gift sub is given, Gift Sub event is triggered
- 2 or more Gift Subs are given, Gift Bomb event is triggered, and, unless ignored, Gift Sub events are also triggered
Poll Sub-actions
I know it's been a long time coming, but there is now a new sub-action to create a Twitch Poll, and all fields in this sub-action support argument parsing.
New Sub-actions
- Poll Create
- Poll Terminate
- Poll Archive
New Triggers
- Emote on/off
- Subscriber on/off
- Unique Mode on/off
- Moderator Added/Removed
- VIP Added
New Twitch Scopes
The following new scopes are being requested on your Twitch Broadcaster account:
- channel:manage:ads
- channel:read:ads
- user:read:chat
- user:write:chat
- user:manage:blocked_users
Twitch Upcoming Ad
A new addition to this release is the handling of upcoming ads. With the addition of the ad schedule endpoint, Streamer.bot can now know when your next ad is coming up.
During various stages/events, a check is performed to see when the next ad is scheduled for. If it is, this will start an internal timer that is on a 30s tick, and will continusouly monitor this, and at the 5 minute prior mark, will send a TwitchUpcomingAd
trigger, and will continue to do so at the 4, 3, 2 and 1 minute mark. After which, it hopefully resets itself and
StreamElements
The UI for StreamElements has been updated to have the split style with logging into your account, and sub-service connections. All the underlying code has also been updated to support this new common display.
alejo.io Pronouns
With the release of alpha.19, VRFlad's extension for using alejo.io pronouns is no longer needed, as it is now a part of Streamer.bot itself.
This is the first iteration of this integration, so its not at parity with the extension yet.
Only 1 sub-action as been added so far, Add Pronouns for User, which will add a user's pronouns to the arguments.
Startup Performance Improvements
Yes, that's right, found a few more areas that were behaving a bit slow during startup, and handled them better.
This mainly affected users with a long list of actions and/or commands.
Trovo
After quite a while, Streamer.bot is being extended to support another platform, and this time it's Trovo
What's supported
- Logging in to your streamer account
- Sub-action to send a chat message
- Added Trovo Message as a source for Commands
New Sub-Actions
- Clear Chat
- Get Latest Follower
- Get Latest Subscriber
- Clear Chat
- Add User To Group
- Remove User From Group
- User In Group
- Add Target Info
- Add Moderator
- Remove Moderator
- Ban User
- Unban User
- Timeout User
- UnTimeout User
- Fast Clip
- Set Channel Title
New Triggers
- Broadcaster Authenticated
- Broadcaster Chat Connected
- Broadcaster Chat Disconnected
- First Words
- Present Viewers
- Chat Message
- Follow
- Spell Cast
- Custom Spell Cast
- Raid
- Subscription
- Resubscription
- Gift Subscription
- Mass Gift Subscription
- Stream Online
- Stream Offline
VStream
Streamer.bot 0.2.3 is not only getting Trovo platform support, but it's getting VStream platform support!
New Sub-actions
- Send Message
- Add User To Group
- Remove User From Group
- User In Group
- Add Target Info
- Add Moderator
- Ban User
- Timeout User
New Triggers
- Broadcaster Authenticated
- Broadcaster Chat Connected
- Broadcaster Chat Disconnected
- Chat Message
- Present Viewers
- Chat Message
- First Words
- New Follower
- Stream Online
- Stream Offline
- Chat Delete
- Meteor Shower Received
- Uplifting Chat
- Subscription
- Resubscription
- Subscription Gifted
- Subscriptions Gifted
- Present Viewers
Elgato Wave Link
Added a new Adjustment
property to Set Input Volume
, Set Microphone Output Volume
and Set Output Volume
. This setting will allow you to increment or decrement the current value, instead of setting it to a specific value.
Elgato Camera Hub
New General Triggers
- Connected
- Disconnected
New Camera Sub-actions
- Set Contrast
- Set Brightness
- Set Saturation
- Set Zoom
- Set Pan
- Set Tilt
- Set Focus
- Set Auto White Balance
- Set White Balance
- Set White Balance Tint
- Set Noise Reduction
- Set Anti Flicker
- Set ARLens
- Set Camera
- Set Bitrate
- Set Torch Mode
New Camera Triggers
- Webcam Connected
- Webcam Disconnected
- Webcam Activated
- Webcam Deactivated
- Selected Webcam Changed
- Mirrored
- Flipped
- Device Orientation Changed
- Exposure Auto Lock Enabled
- Exposure Auto Lock Disabled
- Snapshot Taken
- Zoom Changed
- Contrast Changed
- White Balance Changed
- Auto Exposure Enabled
- Auto Exposure Disabled
- Auto White Balance Enabled
- Auto White Balance Disabled
- Noise Reduction Enabled
- Noise Reduction Disabled
- ISO Changed
- Shutter Speed Changed
- Sharpness Changed
- Anti Flicker Changed
- Lens Changed
- AR Lens Changed
- Bitrate Changed
- Flash Enabled
- Flash Disabled
- Pan Changed
- Tilt Changed
- Overscan Changed
- Auto Focus Enabled
- Auto Focus Disabled
- Focus Changed
- White Balance Tint Changed
- Brightness Changed
- Saturation Changed
- Live ISO Changed
- Live Shutter Speed Changed
- Live White Balance Changed
- Live White Balance Tint Changed
New Prompter Sub-actions
- Fast Forward Chapter
- Rewind Chapter
- Set Chapter
- Set Font
- Set Font Size
- Set Opacity
- Set Line Spacing
- Set Horizontal Margin
- Set Vertical Margin
- Set Brightness
- Set Auto Scroll State
- Set Mode
- Set Contrast
- Set Crosshair State
- Set Crosshair Image
- Get Selected Script
- Set Script
New Prompter Triggers
- Prompter Connected
- Prompter Disconnected
- Mode Changed
- Brightness Changed
- Font Changed
- Font Size Changed
- Auto Scroll Enabled
- Auto Scroll Disabled
- Auto Scroll Chapter Enabled
- Auto Scroll Chapter Disabled
- Scroll Speed Changed
- Opacity Changed
- Horizontal Margin Changed
- Vertical Margin Changed
- Line Spacing Changed
- Font Color Changed
- Background Color Changed
- Selected Chapter Changed
- Channels Changed
- Selected Channel Changed
- Contrast Changed
- Crosshair Enabled
- Crosshair Disabled
- Crosshair Image Changed
- Crosshair Color Changed
- Selected Script Changed
First Words
First Words has been update to use a LiteDB now, instead of the previous caching method used. This capability is now platform independent.
The setting for first words auto reset is now platform independent, and this value only comes into effect during a startup of Streamer.bot
Each platforms Reset
button, will only reset first words for that platform.
The C# method, sub-action, and http method to reset first words have been updated, and when these are used, they will reset the first words for all platforms.
Execute C# Code
With this update, any references that are either in Streamer.bot's execution path, or any subfolder will be stored as a relative reference.
For example, if you're referencing Semver.dll
, it will be stored as a relative reference of .\Semver.dll
instead of the full path.
Any references outside of Streamer.bot's execution path, will still be stored as the full path.
Speaker.bot Integration
It's been asked for, for a while, but here is the start of a more direct integration with Speaker.bot.
The new sub-action that was added, has 3 ways it can work.
How you're use to with the UDP in a fire and forget fashion
Silent option, when selected, this will only process the speech, and, if the setting is enabled in Speaker.bot, write the audio to a file, and will add a
%speechFile%
argument so you can pass it to a Play Sound sub-action, or otherDelay option, the most requested feature, yes, this will delay the sub-action from continuing until the audio has been played by Speaker.bot
Using either the Silent or Delay option also introduces a timeout of 30 seconds, so it does not get stuck, in a future version, this may be configurable (within reason)
There are new sub-actions for interacting with Speaker.bot as well
- Set Enabled State
- Set Paused State
- Stop Speaking
- Clear Pending
NOTE This integration requires Speaker.bot v0.1.3
File Tail Service
With alpha.9, you can now tail a file. Once you have configured a file to tail, every time a new line is encountered, it will the File Tail Changed trigger to happen.
This trigger has the potential to be a high volume trigger, so be sure to exclude from the action history if it is going to be a lot of activity.
Fourthwall
New to this alpha is Fourthwall integration. This requires configuring via the website. So go to https://streamer.bot/, and log in to your account, then go to settings, and you should see Fourthwall on the left with the information required to configure the webhooks.
Be sure that the Streamer.bot Website integration is also logged in and connected.
All event types are supported.
VTubeStudio
The 2 new triggers, Item Event
, and Model Clicked
currently just relay information from the event. A future update will allow for filtering data from these events.
New Triggers
- ItemEvent
- ModelClicked
Twitch Integrated Throwing System
Guess I'm on a roll, or feeling generous. With this alpha, T.I.T.S. is fully integrated in Streamer.bot.
Since there are 2 services that require a connection, when you go to the integration tab, you will notice a Websocket, and an Events service. The later needs to be connected to be able to receive events from T.I.T.S.
There is at least one more Sub-action in the works, being able to throw multiple items.
New Sub-actions
- Activate Trigger
- Activate Trigger by Name
- Throw Item
- Throw Item by Name
New Triggers
- Connected
- Websocket Connected
- Websocket Disconnected
- Events Connected
- Events Disconnected
- Item Hit
- Trigger Activated
- Trigger Ended
Updates to Import/Export
The Importing/Exporting of Actions and Commands has grown! You can now also import/export timed actions, and custom websocket servers and clients.
The other change, for flagging an action to Auto Run on import. When a user performs an import, and an action has been configured to auto run, the user will be prompted if they want it to run, only if they agree will it be triggered.
Headless Mode
You read that right, you can now run Streamer.bot headless, as in no GUI, only a log file.
Consider this mode very very experimental, since there is no GUI initialization anymore, any actions/sub-actions that rely on UI elements will likely crash, I still need to go through and handle these.
To run Streamer.bot in headless mode, just add /headless
, and to stop it, add /shutdown
when running it.
Streamer.bot.exe /headless
Streamer.bot.exe /shutdown
websocket-sharp Update
This is rather important information. With this release, I've updated this library, and I'm now compiling it myself, since its missing a feature that won't be added (for whatever reason). This library can of course be used in your custom C# code, and if you already are, depending on what you're using, it may no longer work due to some changes to the library from upstream.
The first change is with AddWebSocketService
, if you were using the initializer, this has changed.
The second change is for IWebSocketSession
, there is no longer a Context property, you can now access the Websocket directly.
C# Method Deprecation
The following methods are deprecated, and no longer do anything
void CommandResetUserCooldown(string id, int userId);
void CommandRemoveUserCooldown(string id, int userId);
void CommandAddToUserCooldown(string id, int userId, int seconds);
List<ClipData> GetClipsForUser(int userId);
List<ClipData> GetClipsForUser(int userId, int count);
List<ClipData> GetClipsForUser(int userId, DateTime start, DateTime end);
List<ClipData> GetClipsForUser(int userId, DateTime start, DateTime end, int count);
List<ClipData> GetClipsForUser(int userId, TimeSpan duration);
List<ClipData> GetClipsForUser(int userId, TimeSpan duration, int count);
The following C# methods have been deprecated since 0.2.0
, and starting with 0.2.3
, they no longer function
T GetUserVar<T>(string userName, string varName, bool persisted = true);
void SetUserVar(string userName, string varName, object value, bool persisted = true);
These 11 methods will be removed in a future version.
New C# Methods
Added the following new C# methods
List<GlobalVariableValue> GetGlobalVarValues(bool persisted = true);
bool TryGetArg(string argName, out object value);
bool TryGetArg<T>(string argName, out T value);
void ClearNonPersistedGlobals();
void ClearNonPersistedUserGlobals();
bool ThrowingSystemThrowItemByName(string itemName, double delay = 0.05, int amount = 1);
bool ThrowingSystemActivateTriggerByName(string triggerName);
Dictionary<string, object> PronounLookup(string userLogin);
void PronounClearForUserlogin(string userLogin);
New C# Methods for Trovo
List<UserVariableValue<T>> GetTrovoUsersVar<T>(string varName, bool persisted = true);
T GetTrovoUserVarById<T>(string userId, string varName, bool persisted = true);
T GetTrovoUserVar<T>(string userName, string varName, bool persisted = true);
void SetTrovoUserVarById(string userId, string varName, object value, bool persisted = true);
void SetTrovoUsersVarById(List<string> userIds, string varName, object value, bool persisted = true);
void SetTrovoUserVar(string userName, string varName, object value, bool persisted = true);
void UnsetTrovoUserVarById(string userId, string varName, bool persisted = true);
void UnsetTrovoUserVar(string userName, string varName, bool persisted = true);
void UnsetTrovoUserById(string userId, bool persisted = true);
void UnsetTrovoUser(string userName, bool persisted = true);
New C# Methods for VStream
List<UserVariableValue<T>> GetVStreamUsersVar<T>(string varName, bool persisted = true);
T GetVStreamUserVarById<T>(string userId, string varName, bool persisted = true);
T GetVStreamUserVar<T>(string userName, string varName, bool persisted = true);
void SetVStreamUserVarById(string userId, string varName, object value, bool persisted = true);
void SetVStreamUsersVarById(List<string> userIds, string varName, object value, bool persisted = true);
void SetVStreamUserVar(string userName, string varName, object value, bool persisted = true);
void UnsetVStreamUserVarById(string userId, string varName, bool persisted = true);
void UnsetVStreamUserVar(string userName, string varName, bool persisted = true);
void UnsetVStreamUserById(string userId, bool persisted = true);
void UnsetVStreamUser(string userName, bool persisted = true);
New C# Methods for Twitch
TwitchRewardCounter TwitchGetRewardCounter(string rewardId, bool persisted = true);
TwitchRewardCounter TwitchGetRewardUserCounter(string userLogin, string rewardId, bool persisted = true);
TwitchRewardCounter TwitchGetRewardUserCounterById(string userId, string rewardId, bool persisted = true);
New C# Methods for Twitch Block/Unblock
bool TwitchBlockUser(string userLogin, TwitchBlockContext context = TwitchBlockContext.None, TwitchBlockReason reason = TwitchBlockReason.None);
bool TwitchBlockUserById(string userId, TwitchBlockContext context = TwitchBlockContext.None, TwitchBlockReason reason = TwitchBlockReason.None);
bool TwitchUnblockUser(string userLogin);
bool TwitchUnblockUserById(string userId);
New C# Methods for MIDI
void MidiSendRawByName(string name, int command, int channel, int data1, int data2);
void MidiSendRaw(Guid deviceId, int command, int channel, int data1, int data2);
void MidiSendNoteOnByName(string name, int channel, int note, int velocity, int duration = 0, bool sendNoteOff = false);
void MidiSendNoteOn(Guid deviceId, int channel, int note, int velocity, int duration = 0, bool sendNoteOff = false);
void MidiSendControlChangeByName(string name, int channel, int controller, int value);
void MidiSendControlChange(Guid deviceId, int channel, int controller, int value);
New C# Methods for Groups
bool UserIdInGroup(string userId, Platform platform, string groupName);
bool UserInGroup(string userName, Platform platform, string groupName);
bool AddUserIdToGroup(string userId, Platform platform, string groupName);
bool AddUserToGroup(string userName, Platform platform, string groupName);
bool RemoveUserIdFromGroup(string userId, Platform platform, string groupName);
bool RemoveUserFromGroup(string userName, Platform platform, string groupName);
List<GroupUser> UsersInGroup(string groupName)
Updated C# Methods for Commands
void CommandResetUserCooldown(string id, string userId, Platform platform);
void CommandRemoveUserCooldown(string id, string userId, Platform platform);
void CommandAddToUserCooldown(string id, string userId, Platform platform, int seconds);
New C# Methods for GetClips
List<ClipData> GetClipsForUserById(string userId, bool? isFeatured = null);
List<ClipData> GetClipsForUserById(string userId, int count, bool? isFeatured = null);
List<ClipData> GetClipsForUserById(string userId, DateTime start, DateTime end, bool? isFeatured = null);
List<ClipData> GetClipsForUserById(string userId, DateTime start, DateTime end, int count, bool? isFeatured = null);
List<ClipData> GetClipsForUserById(string userId, TimeSpan duration, bool? isFeatured = null);
List<ClipData> GetClipsForUserById(string userId, TimeSpan duration, int count, bool? isFeatured = null);
Updated C# Methods for GetClips
List<ClipData> GetAllClips(bool? isFeatured = null);
List<ClipData> GetClips(int count, bool? isFeatured = null);
List<ClipData> GetClipsForUser(string username, bool? isFeatured = null);
List<ClipData> GetClipsForUser(string userName, int count, bool? isFeatured = null);
List<ClipData> GetClipsForUser(string username, DateTime start, DateTime end, bool? isFeatured = null);
List<ClipData> GetClipsForUser(string username, DateTime start, DateTime end, int count, bool? isFeatured = null);
List<ClipData> GetClipsForUser(string username, TimeSpan duration, bool? isFeatured = null);
List<ClipData> GetClipsForUser(string username, TimeSpan duration, int count, bool? isFeatured = null);
List<ClipData> GetClipsForGame(int gameId, bool? isFeatured = null);
List<ClipData> GetClipsForGame(int gameId, int count, bool? isFeatured = null);
List<ClipData> GetClipsForGame(int gameId, DateTime start, DateTime end, bool? isFeatured = null);
List<ClipData> GetClipsForGame(int gameId, DateTime start, DateTime end, int count, bool? isFeatured = null);
List<ClipData> GetClipsForGame(int gameId, TimeSpan duration, bool? isFeatured = null);
List<ClipData> GetClipsForGame(int gameId, TimeSpan duration, int count, bool? isFeatured = null);
New C# Classes
TwitchRewardCounter
class
public class TwitchRewardCounter
{
public string UserId { get; set; }
public string UserLogin { get; set; }
public string UserName { get; set; }
public int Count { get; set; }
public DateTime LastRedeemed { get; set; }
}
GlobalVariableValue
class
public class GlobalVariableValue
{
public string VariableName { get; set; }
public object Value { get; set; }
public DateTime LastWrite { get; set; }
}
Platform
enum
public enum Platform
{
Twitch,
YouTube,
Trovo,
VStream
}
TwitchBlockContext
enum
public enum TwitchBlockContext
{
None,
Chat,
Whisper
}
TwitchBlockReason
enum
public enum TwitchBlockReason
{
None,
Harassment,
Spam,
Other
}
GroupUser
class
public class GroupUser
{
public string Id { get; set; }
public string Type { get; set; }
public string Login { get; set; }
public string Username { get; set; }
}