Streamer.bot v1.0.0
Welcome to Streamer.bot 1.0 BETA! Yes, you read that right! Streamer.bot 1.0 is now available for those with the beta role.
Be sure to read my latest letter to the community before diving headfirst into this update. Come see what Streamer.bot 1.0 BETA has to offer!
What’s New?
Dark Mode
Let’s start with one of the most anticipated features: Dark Mode. Streamer.bot 1.0 received a complete redesign of its UI, along with Dark Mode. For those that still wish to have a Light Mode, there is an option to switch.
Kick Integration
Probably the second most requested feature is Kick Integration. I’m happy to announce that Streamer.bot 1.0 now supports Kick natively. At first, during the alpha when this was announced, it was planned that access to Kick integration would be a supporter perk because it needed a connection to the website to work. However, since my letter to the community in July, the support has been very positive, so I have decided to make the Kick integration free for use. Yes, you read that right! I’ve removed the supporter perk requirement for Kick, and anyone can use it for free.
Cloud Backups
Streamer.bot has always created its own backups every time it is started, but with 1.0 as a supporter perk, users will be able to create and upload backups to Streamer.bot’s servers which can be recovered at any time.
Custom Webhooks
Streamer.bot currently supports 4 services through webhooks: Patreon, Kofi, Fourthwall, and Shopify. Since Webhooks require an intermediary site with full SSL capabilities typically, Custom Webhooks
are being introduced as a supporter perk. These will allow users to create their own webhooks to (almost) any site that supports them.
Note: There will be a few sites that will be outright denied from creating webhooks for, largely for volume reasons, and this will be monitored for abuse.
Decks 2.0
Already released, and available for everyone to use, Streamer.bot’s decks have gotten a massive overhaul thanks to the ongoing efforts of Whistickgostop. Decks will remain mostly free; however, supporter perks will raise some of the free limits on them.
Other Notable Changes
- Nestable sub-action groups
- Updates to Logic If/Else sub-action – sub-action can be directly added to them
- New Logic sub-actions – Switch and While
- C# Code editor now uses Monaco
- HotKeys are now triggers and support any key combination
- Support for YouTube’s new PushAPI (near real-time chat and more efficient quota usage)
- The ability to host your own files from the integrated HTTP Server
- ... and so much more! This is just a taste of the major updates that are available in Streamer.bot 1.0, so be sure to also check the changelog available on the website to get a more detailed breakdown of the fixes, changes, and additions that come with 1.0.
To access your supporter perks, login to Patreon in your Streamer.bot Account Settings. Moving forward, all roles related to supporter perks and alpha access will be handled this way.
If you wish to support me, or this project, please head over to https://www.patreon.com/nate1280. Remember, supporter perks start at the Thank You tier, which for the duration of the beta is only $2 a month with the option to support for a year. Once Streamer.bot 1.0 is released as stable, this will increase to $3.
How to Update
I know you’re probably asking but how do I update?! Well, this is quite easy, and here is a simple step by step list to get you updated:
Have the beta role in Discord, and login to the website to link your account.
Close your copy of
Step 3
Re-launch
Go to the Integrations,
In
Pick the beta release channel.
Click Download & Install and patiently wait while
Enjoy
How to Connect to Kick
Due to the way Kick is setup, you will need to not only login to Kick within Streamer.bot, you will need to also login to the Streamer.bot Website and link your Kick account there.
After this, you will be able to connect to the client. It requires you to be logged into Streamer.bot (bottom-left corner of your Streamer.bot window). If you are already logged in, go to the Kick platform, and make sure the Chat Client is connected.
New Features
UI
Converted toWPF
- Dark Mode
Kick Platform
support- Cloud Backups
- Custom Webhooks
- Decks 2.0
- Nestable sub-action groups
- Sub-action groups can have their own color!
Logic If/Else
has been updated,true
/false
are now groups, and can addsub-actions
directly to them- New
Logic Switch Case
sub-action - New
Logic While
sub-action Execute C# Code
sub-action now uses theMonaco
editorHotKeys
are now at a trigger level, and support any combination- Add
YouTube
poll handling for starting and updating. Streamer.bot
has been updated to .NET 4.8.1- Add new sub-actions for
Meld Studio
,Set Browser Layer Url
andTake Vertival Screenshot
- Added a
User Profile
drop down in theTitle Bar
for yourStreamer.bot Account
- Add new Triggers for
Global Variable Created
andGlobal Variable Deleted
- Add new sub-actions to add
YouTube
andTrovo
broadcaster information - Add support for
7TV Zero Width
emotes - Add new inline function,
$parse()$
- Add new option
Minimize to Tray on Close
- Add ability to change the
Backup Folder
location - Add ability to manually create a
Backup
- Add
Auto-Save
, this will happen every 5 minutes - Add a new context menu item in
Global Variable Viewer
forPersisted
andNon-Persisted
user tabs to delete the selected variable for all users - Add a warning to
Import
, when theImport
contains anExecute C# Code
sub-action - Add new
Default
settings forActions
andCommands
- Add ability to add a path mapping to the
HTTP Server
allowing for hosting files - All
Sub-Actions
andTriggers
that are editable, now have a?
help button in their dialog that opens the docs site - Add a new Trigger,
Clipboard Changed
, for when data is put on theClipboard
- Add a new Sub-Action,
Streamlabs Spin Wheel
to trigger a wheel spin onStreamlabs
- Add
Group
criteria toGroup Users Added
andGroup Users Removed
triggers - Add
Group
criteria toGroup Cleared
trigger - Add a list of connected
Stream Deck
applications to theElgato Stream Deck
Integration page - Add new
C# Methods
forTrovo
- Add
Twitch Suspicious User Message
event and Trigger - Add 2 new
YouTube
sub-actions toCreate Poll
andEnd Poll
- Experimental support for Twitch Onboarded accounts
Updates
- Update common libraries and packages
- Update
Twitch EventSub AutoMod
subscriptions Twitch PubSub
is no longer used- Command Settings are now in the WebSocket payload
Logic If/Else
sub-action now addsRegex
matches/groups as argumentsTwitch Add Random User
has been updated to work with groups- Update
YouTube
andTrovo
Send Message
to use the updated fall back options - Update
Twitch
Add Target Info
,Add Follow Age
,Add VIP
,Remove VIP
,Add Team Info
andTrovo Add Target Info
to use the new style of specifying a variable WebSocket
DoAction
now returns theID
and initial arguments associated with the queuedAction
- Application Crash messages will only show once now, instead of doing a solitaire win move
- The built in
!quote
command has been removed and replaced with new sub-actions - How to favourite/unfavourite a Trigger or Sub-Action has changed, you now do this directly on a Sub-Action or Trigger that you've added
- Update
alejo.io
Pronoun integration to support using the alt pronoun option - Move
HTTP Get Methods
to/api/
- Start monitoring for
USB Removal
on demand if there areMidi
devices configured - Tweak how
Headless
mode is started internally Twemoji
was updated tov16.0.0
- Update
Voicemod Client
to supportVoicemod v3
- Require
Voicemod v3.12
as minimum version - Add a manual check for
System.Linq
using, and auto add theSystem.Core.dll
reference when usingFind Refs
- Add
addTargetResult
argument toAdd Target Info
sub-action when it is successful First Word
triggers, are now underChat
instead ofGeneral
forTwitch
andTrovo
- Update
YouTube
to use newPushAPI
- Add
Test
method toTrovo Stream Offline
andTrovo Stream Online
trigger - Update
Logic If/Else
sub-action,Does Not Exist
now supports parsing in theVariable Name
, the end result of parsing still needs to be the literal name of an argument
Fixes
- General fixes and tweaks, too many to track over the course of 10 months
- Fix adding
Trovo Broadcaster
info to args, they were flipped - Fixes related to
Elgato WaveLink 2.0.x
, the 4Input
sub-actions should work again for the microphone - Fix forgetting
Trovo Account
, tokens were not fully cleared - Remove a check in
Websocket Server
message handling that could cause the message queue to stop working - Fix a potential crash when trying to connect to
Speaker.bot
with an invalid address - Fix crash in
OBS Filter
based sub-actions when aSource
has no filters - Fix potential crash in
Streamlabs Client
, when an event has no data - Fix crash when responding to a
StreamDeck
command but socket is already closed - Fix potential crash in
OBS Flip Horizontal
andOBS Flip Vertical
sub-actions - Fix crash when retrieving
Twitch Channel Rewards
, and API indicates user is not anAffiliate
orPartner
even though they are - Fix crash in
Voice Control
sub-actions when there are noVoice Control Commands
- Fix crash when browsing for a file, and the existing folder is on a drive that is no longer available
- Fix crash in
Elgato WaveLink
when getting inputs times out - Fix crash in
Elgato WaveLink
when adding aFilter
to anInput
that had no filters - Fix crash in
Streamlabs
when validating token times out - Fix crash in
Elgato WaveLink
when events happen before fully initialized - Fix a potential crash when browsing for folder (in any dialog that supports this) and the path is invalid
- Fix a few potential crash scenarios in
Elgato CameraHub
client - Fix
Twemoji
parsing related to theVariation Selector-16
unicode value - Fix
Twitch SevenTV Emote Removed
sub-action, wording said added - Fix potential crash when getting monitored
YouTube Broadcasts
byWebsocket
- Fix a potential crash in
TwitchGetEmotes
andYouTubeGetEmotes
Websocket
/HTTP
requests - Fix potential crash in
Midi Out Note On
sub-action - Fix error message for
GetUserGlobals
HTTP
/Websocket
request - Fix potential crash when clearing a
Viewer Group
- Fix
ObsSetColorSourceColor
C# Method
, was creating hex color wrong - Fix
Fourthwall Donation trigger
criteria not working - Fix
Trovo Add Target Info
sub-action, was retrieving wrong user type - Fix potential crash when handling
Websocket Subscribe
message - Fix potential crash when handling
RunAction
requests - Fixes/tweaks to handling of available update data
- Fix a potential crash when using
Get Commands
sub-action - Fix
Streamer.bot
instances not properly updating their connected state - Handle potential errors in
Voice Control
and stop monitoring when they're encountered
Details
Surprise! This has been many months in the making, but there is finally a new UI in town, and it's been completely re-written in WPF. This means I'll have so much more flexibility. In addition to that, there is now a Dark Mode
, the most requested feature.
Now for the bad news, I have not tested this, so I'm not sure how this will effect extensions that use custom designed WinForms dialogs for settings and such. The conversion to WPF is quite simple, and I will likely post a small template at some point to get you started.
Now, this is an alpha, this means there will be bugs, that is the whole point of it entering this stage first. If you wish to use this as your daily driver, be aware, things may or may not function correctly.
Want access to alpha
, subscribe to nate1280's Patreon. alpha
access now starts at Bronze Tier
or higher.
Sub-Actions
Sub-actions got a bit of an overhaul as well, before, groups could only be top level items, now, they can be nested as much as you want, more flexibility when using the random option on a group now.
Logic If/Else
Logic If/Else has received a power-up, no longer do you need to specify an action to run for the true/false parts, you can now just add your sub-actions directly to the true/false groups, and because these are containers, that means you can nest groups as well.
Logic Switch
New with this release is a new Logic sub-action, the Switch Case. Same applies to this sub-action, add your logic switch, and you can add case groups, which can in turn have sub-actions nested in them
Logic While
New with this release is the Logic While
sub-action. Yes, that means you can finally perform loops within a single action without needing C#!
Global (Set) Sub-Action Changes
The Argument
source has been removed, and there is now only Value
, Increment
and Decrement
.
The Value
source now supports parsing and inline methods as well as an auto-type option. Increment
and Decrement
have been updated to support parsing and inline methods.
Configuration upgrades will happen and update any Global (Set)
sub-actions, this will change any that are set to Argument
and update the value to be surrounded by %, and change it to Value
source type. Upgrades will also happen for Imports
.
Inline Function,
A new function has been added, $parse()$
, that will allow for a 2nd level of variable parsing.
This would be of benefit for the newly added Logic While
sub-action.
As an example, ff you are using the global ~idx~
as your test variable, and incrementing this within the while loop. You would then be able to use the inline method like $parse(rawInput~idx~)$
which would internally parse to %rawInput#%
, and finally would return the value of the %rawInput#%
argument. In this example, rawInput
is the argument you're wanting to get an indexed position of, this is typically used in most Message
based triggers
Twitch
Twitch PubSub is being deprecated in April, so that means it's finally time to remove PubSub from the connection list for the Broadcaster Account.
What this means, the Ad Mid Roll sub-action no longer exists (to this day, still really don't know what it did), Channel Point Community Goals will cease to work until they're added to EventSub, and the Viewer count pulse has been updated to use other methods.
Twitch Shared Chat
Handling of Twitch Shared Chat
has been updated a bit, there are now 3 arguments added to most Twitch
events.
isInSharedChat
- This will indicate if the event happened while in a Shared Chat,isSharedChatHost
- This will indicate if the Broadcaster is the host of the Shared Chat,isFromSharedChatGuest
- This will indicate if the event is from a Shared Chat's Guest's Channel, These 3 arguments are in all Shared Chat events, as well as the non-shared chat event counter parts.
Quotes
Quotes got a small overhaul, the built in !quote
command is no more, it has been replaced with various sub-actions, so you now have full control over adding, deleting quotes by any means.
HTTP Server
You read that right, you can now serve local files with the HTTP Server
! Simply add a Path Mapping
to the HTTP Server
settings, and you can access any file/folder from that Mapping
.
The current methods are being moved to an /api/
prefix, and they will continue to work for now but consider them deprecated, and will eventually be removed. Be sure to update any usages to use the /api/
equivalent.
Voicemod
The Voicemod
integration has been udpated to support v3
, and version 3.12
is now the minimum required version for the integration.
With the update, the Voicemod Set Censor State
sub-action was removed, as well as 2 C# methods, VoiceModCensorOn()
and VoiceModCensorOff()
, as the methods for these no longer work.
Kick Platform
Yes, you read that right, as of alpha.37
, Streamer.bot now supports Kick
as an official platform. Be sure to read the previous information in alpha-releases or announcements.
Overall the Kick API
is still a bit of a mess, and everything that can be implemented has been. And as mentioned, to use this platform integration, you must link your Kick account on the website as well!
There are new sub-actions and triggers for Kick, support for Kick Message
as a Command source, Kick
will show up in the chat as well as obs overlay chat.
How To Link Kick
Due to the way Kick
is setup, you will need to not only login to Kick within Streamer.bot, you will also need to login to the Streamer.bot Website
, and link your Kick
account there to.
After this, you will be able to connect to the client. It requires you to be logged into Streamer.bot
, bottom-left corner of your Streamer.bot
window.
Cloud Backup
You will be able to manually create backups that are encrypted and uploaded to Streamer.bot's* website, as well as being able to restore from these backups.
Custom Webhooks
You will be able to create custom webhooks, and have the data forwarded to your Streamer.bot, much like the existing webhooks, except they can be used for any site that supports webhooks. This feature will be monitored for abuse and limits put in place if anything like this is detected
Decks 2.0
They've been teased for a while, but Decks 2.0
are also here! This includes a handful of sub-actions to interact with the decks themselves, much like Elgato Stream Deck
There are also 6 new sub-actions allowing you to set various properties/values of deck buttons.
New Website
Whipstickgostop has been hard at work, and there is a new website that launched alongside this update, both as a refresh and to support all the new features.
C# Changes
The following C# methods have been updated to account for the new useBot
and fallback
options.
void SendYouTubeMessage(string message, bool useBot = true, bool fallback = true, string broadcastId = null);
void SendYouTubeMessageToLatestMonitored(string message,bool useBot = true, bool fallback = true);
void SendTrovoMessage(string message, bool useBot = true, bool fallback = true);
The following C# Methods have been added for Trovo
TrovoUserInfo TrovoGetBroadcaster();
TrovoUserInfo TrovoGetBot();
bool TrovoTimeoutUser(string userName, int duration, bool bot = false);
bool TrovoBanUser(string userName, bool bot = false);
bool TrovoUnbanUser(string userName, bool bot = false);
bool TrovoSetTitle(string title);
The following C# Methods have been added for Kick
void SendKickMessage(string message, bool useBot = true, bool fallback = true);
void KickReplyToMessage(string message, string replyId, bool useBot = true, bool fallback = true);
KickUserInfo KickGetBroadcaster();
KickUserInfo KickGetBot();
bool KickSetTitle(string title);
KickCategory KickSetCategory(string categoryName);
bool KickTimeoutUser(string username, int duration, string reason = null, bool bot = false);
bool KickBanUser(string userName, string reason = null, bool bot = false);
bool KickUnbanUser(string userName, bool bot = false);
List<UserVariableValue<T>> GetKickUsersVar<T>(string varName, bool persisted = true);
T GetKickUserVarById<T>(string userId, string varName, bool persisted = true);
T GetKickUserVar<T>(string userName, string varName, bool persisted = true);
void SetKickUserVarById(string userId, string varName, object value, bool persisted = true);
void SetKickUsersVarById(List<string> userIds, string varName, object value, bool persisted = true);
void IncrementAllKickUsersVar(string varName, object value, bool persisted = true);
void IncrementKickUsersVarById(List<string> userIds, string varName, object value, bool persisted = true);
void IncrementOrCreateKickUsersVarById(List<string> userIds, string varName, object value, bool persisted = true);
void SetKickUserVar(string userName, string varName, object value, bool persisted = true);
void UnsetKickUserVarById(string userId, string varName, bool persisted = true);
void UnsetKickUserVar(string userName, string varName, bool persisted = true);
void UnsetKickUserById(string userId, bool persisted = true);
void UnsetKickUser(string userName, bool persisted = true);
KickCategory
class
public class KickCategory
{
public int Id { get; set; }
public string Name { get; set; }
public string Thumbnail { get; set; }
}