Released 2023-03-10
Currently the Raid Event adds a %raiderNames%
variable with information on who it thinks is part of the raid. Because the tmi
end point is being retired, this variable will no longer be available, as there are no replacement methods that can be used publicly.
As of April 3rd, 2023, the tmi endpoint for obtaining a channel's list of chatters will be removed, Streamer.bot will be removing the aforementioned
%raiderNames%
variable sometime in March with an update.
Released 2023-02-22
%targetChannelTitle%
moderator:manage:banned_users
for the Twitch Bot account, this was missing for banning users to workgames.dat
data file for Twitch game categories, it is now realtime search capable
isTest
argument to some Twitch events, this will be set when the event comes from the Test button within Streamer.botCPH
object in the Execute C# Code sub-action editorisTest
variable to the Community Goal eventmoderator:read:followers
$length()$
, this will get the length of a string, and variables are supported, any variable used will be treated as a stringThere 2 pending changes for the Twitch API:
The first involves IRC slash commands and 3rd party applications.
As of Februray 24th, 2023, 3rd party apps will no longer be able to use IRC slash commands. Streamer.bot has already been updated with support for the new API methods to perform these commands
The second, involves the old, undocumented API to retrieve a channels list of chatters. Currently the Raid Event adds a %raiderNames%
variable with information on who it thinks is part of the raid. Because this end point is being retired, this variable will no longer be available, as there are no replacement methods that can be used publicly.
As of April 3rd, 2023, the tmi endpoint for obtaining a channel's list of chatters will be removed, Streamer.bot will be removing the afformentioned
%raiderNames%
variable sometime in March with an update.
long TwitchGetBitsDonatedByUserId(string userId);
bool TwitchIsUserSubscribed(string userId, out string tier);
List<TwitchReward> TwitchGetRewards()
Structure of TwitchReward
public class TwitchReward
{
public string Id { get; set; }
public string Title { get; set; }
public string Prompt { get; set; }
public int Cost { get; set; }
public bool InputRequired { get; set; }
public string BackgroundColor { get; set; }
public bool Paused { get; set; }
public bool Enabled { get; set; }
public bool IsOurs { get; set; }
}
Trying to manage the games.dat file was starting to get out of hand, so with v0.1.18, it is gone completely, and in its place, when selecting specific games, you're able to perform realtime searches against Twitch's own categories, so you'll always have the most current data moving forward.
Internally, because of this change, some methods were also updated to handle the data file no longer existing.
Starting with Streamer.bot v0.1.18, it will now keep a record of any bit donations that it sees, this means if something comes in when it is not open, it will never know it happened (since there is no way to get past data from Twitch on this).
The total amount that has been seen is also shown in the user's information in the UI
If you do a test event, this will be ignored and not added to whomever shows up for the test event.
The DonorDrive integration now pulls a list of known charities from the DonorDrive api, and uses this for the different provider types now. This is mostly a quality of life improvement so you do not have to try and figure out the endpoint to use for a custom provider.
If the charity you are setting up, doesn't happen to be in the new list, you'll still be able to configure a custom provider
This sub-action will get your current follower count
Variables available:
Name | Description |
---|---|
followerCount |
Your follower count |
This sub-action will get the last user that followed your channel
Variables available:
Name | Description |
---|---|
latestFollower.user |
The display name of the user that followed you |
latestFollower.userName |
The login of the user that followed you |
latestFollower.userId |
The ID of the user that followed you |
This sub-action will get your current subscriber count and point total
Variables available:
Name | Description |
---|---|
subscriberCount |
Your subscriber count |
subscriberPoints |
The total number of subscriber points you have |
This sub-action will let you ban a user, you will be able to either enter in a specific user nname, or use a variable. You can also specify a reason, and use variables in this field
Variables available:
Name | Description |
---|---|
banResult |
True / False if the ban was successful |
These variables are only available if the sub-action was successful.
Name | Description |
---|---|
bannedUserId |
The user id of the user that was banned |
bannedUserName |
The user login of the user that was banned |
bannedUser |
The display name of the user that was banned |
This sub-action will let you unban a user, you will be able to either enter in a specific user name, or use a variable.
Variables available:
Name | Description |
---|---|
unbanResult |
True / False if the ban was successful |
These variables are only available if the sub-action was successful.
Name | Description |
---|---|
unbannedUserId |
The user id of the user that was banned |
unbannedUserName |
The user login of the user that was banned |
unbannedUser |
The display name of the user that was banned |
This sub-action will let you ban a user, you will be able to either enter in a specific user nname, or use a variable.
Variables available:
Name | Description |
---|---|
banResult |
True / False if the ban was successful |
These variables are only available if the sub-action was successful.
Name | Description |
---|---|
unTimedOutUserId |
The user id of the user that was banned |
unTimedOutUserName |
The user login of the user that was banned |
unTimedOutUser |
THe display name of the user that was banned |
Requesting the following new scopes for the broadcaster account
moderator:read:followers
Requesting the following new scopes for the bot account, as they were missing or new
moderator:manage:banned_users
Released 2023-01-20
%contributors%
variable
%donationId%
Add Target Info
to include tags%broadcastId%
variable now%userPreviousActive%
variablemoderator:manage:shoutouts
scope?
buttons for YouTube
events
%provider%
variable to Tip and Merch events (can be twitch, youtube or streamelements)%tipId%
variable to the Tip event, this is StreamElements's internal tip id value%actionQueuedAt%
, this is when the action was queuedTwitch
-> Moderation
0.1.17
introduces a new Raw event, ActionCompleted. Subscribing to this event in the Websocket Server will get you information when an action is completed.
Yes, Twitch finally added the ability to manipulate the new tags!
The Clear Channel Tags sub-action has no input, and will just clear your tags.
The Add, Remove and Set Channel Tag sub-actions all support variables.
The Add Target Info adds the following new arguments:
Name | Description |
---|---|
tagCount |
The number of tags |
tag# |
The tag at index position # |
tags |
A List<string>() object for use in C# |
tagsDelimited |
A comma delimited string of the tags |
At the moment, there is a bug in the Twitch Helix endpoint, where its unable to clear the tags completely. So for the time being Clear Tags and Removing the last tag will fail. Once Twitch fixes this, they should start working.
If you keep at least 1 tag active, you'll be able to add/remove tags at will. And for setting all tags, at least 1 needs to be set.
This is a basic sub-action, either use a variable, or a fixed user login to send a shoutout to the user.
You may send a Shoutout once every 2 minutes, and to the same broadcaster once every 60 minutes.
This sub-action will allow you to select one of your groups, so you can clear the users belonging to it during an action
Since the C# methods for this have existed for a bit, adding in sub-actions to perform this now as well.
With the Shoutout events being added to EventSub, this event has been moved from PubSub to EventSub, this unfortunately changes some of the variables. This Event has also been moved to the Moderation
tab
Variables Removed
%targetUserPrimaryColorHex%
%targetUserProfileImageURL%
Variables Added
Name | Description |
---|---|
viewerCount |
The number of users that were watching the broadcaster’s stream at the time of the Shoutout. |
cooldownEndsAt |
The DateTime of when the broadcaster may send a Shoutout to a different broadcaster. |
targetCooldownEndsAt |
The DateTime of when the broadcaster may send another Shoutout to the same broadcaster. |
For the new Twitch StreamOnline event, this will not be triggered if you are online and Streamer.bot connects to your Twitch account.
StreamOnline Event arguments
Name | Description |
---|---|
startedAt |
The date, time the stream went online |
game |
The category name |
gameId |
The category id |
tagCount |
The number of tags |
tag# |
The tag at index position # |
tags |
A List<string>() object for use in C# |
tagsDelimited |
A comma delimited string of the tags |
StreamOffline Event arguments
Name | Description |
---|---|
endedAt |
The date time when the stream went offline |
With the new EventSub events for Shoutouts, Streamer.bot can now react to receiving a Shoutout
This event is sent only if Twitch posts the Shoutout to your activity feed.
Shoutout Received Event Arguments
Name | Description |
---|---|
%viewerCount% |
The number of users that were watching the from broadcaster's stream at the time of the Shoutout |
void CommandRemoveGlobalCooldown(string id);
void CommandRemoveUserCooldown(string id, int userId);
void CommandRemoveAllUserCooldowns(string id);
void CommandResetUserCooldown(string id, string userId);
void CommandRemoveUserCooldown(string id, string userId);
void CommandAddToUserCooldown(string id, string userId, int seconds);
bool UserIdInGroup(string userId, string groupName);
bool AddUserIdToGroup(string userId, string groupName);
bool RemoveUserIdFromGroup(string userId, string groupName);
bool TwitchClearChannelTags();
bool TwitchSetChannelTags(List<string> tags);
bool TwitchAddChannelTag(string tag);
bool TwitchRemoveChannelTag(string tag);
long TwitchGetChannelPointsUsedByUserId(string userId);
bool ClearUsersFromGroup(string groupName);
void TwitchResetRewardCounter(string rewardId);
void TwitchResetRewardUserCounters(string rewardId);
void TwitchResetUserRewardCounters(string userId, bool persisted);
void TwitchResetUserRewardCounter(string rewardId, string userId);
void TwitchRewardGroupEnable(string groupName);
void TwitchRewardGroupDisable(string groupName);
void TwitchRewardGroupToggleEnable(string groupName);
void TwitchRewardGroupPause(string groupName);
void TwitchRewardGroupUnPause(string groupName);
void TwitchRewardGroupTogglePause(string groupName);
bool TwitchSendShoutoutById(string userId);
bool TwitchSendShoutoutByLogin(string userLogin);
Released 2022-12-31
Nullable<T>
generics for generic global variable methodsTest User
for tests. These 4 services do not do any username parsingReleased 2022-12-22
CPH.TwitchRunCommercial(...)
to return a bool
, True
if it was successful, False
otherwiseExecute C# Code
editor, default is enabledfirstMessage
argument to Twitch First Words
eventTwitch First Words
event to be more like a chat message event since they are near identicalTwitch First Words
event, this could be a breaking change%variables%
for the Webhook URL, URL check is performed when sub-action is run nowcreations
/breakings
. This will drastically lower the file size of the users.dat file<null>
in the Inspect Variable dialog, when the value is null, instead of an empty spaceAnywhere
only
Note On
, Control Change
and Generic
Logic If
sub-action, Equals (Ignore Case)
, Not Equals (Ignore Case)
and Is Null or Empty
, data is assumed to be a stringConnected
and Disconnected
event to an OBS Websocket ConnectionExecute C# Code
to save the result (true/false
) to a variableExecute C# Method
to save the result (true/false
) to a variableYes, you read the correctly, as of Streamer.bot v0.1.15, there will be MIDI support!
So, it will now be possible to run actions by using your MIDI Piano, and MIDI synth, oh, even your MIDI wind instrument, or anything that supports MIDI!
When adding an Event
, you will be able to just press the key, turn the knob, or flick the wheel to have it auto populate all the settings for you.
This section is a WIP for information, but to get you started, here are some screenshots.
Add a new MIDI In device
Add a new MIDI event
Editing a MIDI event
To get started with MIDI follow these steps:
The other side of MIDI, being able to send MIDI events out to your devices or DAWs.
Much like MIDI In, you create a device mapping within Streamer.bot, and you can use 1 of 3 new sub-actions to send MIDI events.
channel:manage:raids
channel:read:hype_train
channel:read:goals
moderator:manage:shield_mode
Twitch updated there eventsub to support websocket connections, so after trialing it for a bit, I have added a new library to connect to this new service, and subscribe to various events.
Despite there already being support for Twitch Charity Donate, switching over to EventSub has introduced 3 new events (Started, Progress and Stop), as well as update the Donate event with more data.
These are the goals you can configure, new follower goal, subscription goal, etc. Now you can get udpates on these by way of 3 new events, Goal Begin, Goal Progress and Goal End
The hype train events have been altered slightly, and are no longer restricted to 5 levels, they can go on forever now. The calculations for % complete have also been tweaked and hopefully are more accurate now.
These events mostly remain unchanged, there is a slight re-organization of data, but is ver minimal.
There are 2 new events for Twitch's Shield Mode, Begin and End. You can assign actions to these and have your stream react when your Shield Mode is enabled/disabled.
Largely remain unchanged from the previous events.
With Streamer.bot v0.1.15 you can see, at a glance, if all your services are connected.
In the bottom right hand corner of Streamer.bot, there is now an indicator that shows if you're connected to your services. If you click on this, you'll be presented with a detailed list of what is all connected, and, you can click on any of the services to be taken to the settings page for it.
Turn follow mode on, or off with the new sub-action, or by the new C# method
There is no way, by API to send a raid yet, can only create, and cancel a raid
bool TwitchStartRaidById(string userId);
bool TwitchStartRaidByName(string userName);
bool TwitchCancelRaid();
void TwitchFollowMode(bool enabled = true, int duration = 0);
You can now perform batch requests to a v5.x obs-websocket with OBS Raw
{
"haltOnFailure": false,
"executionType": -1
"requests": [
{
"requestType": "<string>",
"requestData": { ... }
}
]
}
Name | Description |
---|---|
haltOnFailure |
True /False , setting to true will stop processing requests if one fails, default is False and can be omitted |
executionType |
A number value, -1 , 0 , 1 , 2 to indicate how to perform the requests, default is -1 and can be omitted |
requests |
This is the array of your requests, each request takes on the same format as a single request |
Released 2022-10-27
CPH.ObsTakeScreenshot
%msgId%
which is the id of the messagebool SendWhisper(string userName, string message, bool bot = true)
%randomLineNumber#%
*
for the ip address*
for the ip addressSet Reward Title
and Reward Update
sub-actions to prevent setting titles longer then 45 characters, and prompt longer then 200 characters
whispers:read
on bot account, you will need to re-authorize your bot accountLogVerbose(string logLine)
LumiaSetToDefault()
LumiaSendCommand()
OBS
->Get Status to add OBS status informationTwitch
->Add Viewer Count to add your current Twitch viewer count as a variablebool TwitchClearChatMessages(bool bot = true)
bool TwitchDeleteChatMessage(string messageId, bool bot = true)
DiscordPostTextToWebhook
to post text to a discord webhook/shoutout
command is used, if your channel has the abilityWith version 0.1.14, the ground work has been put in to include an auto updater, which means, this is the last version that will require you to manually update. Moving forward, starting with version 0.1.15, you will be able to update within Streamer.bot itself.
If you have been using the recent betas, or are part of alpha testing, you've already been giving this feature a try!
When you launch Streamer.bot it will perform a check to see if there is an update, and if there is, you will see a screen pop-up similar to the one below.
After you click Download
, and the update is downloaded, you will be able to install the update by clicking on Install
As you can see, there are update channels, stable
, beta
, alpha
. By default everyone will be on the stable channel, which are the public releases.
To be able to select any other update channel, you will need to have Streamer.bot connected to the website, under Integrations, and have the appropriate roles in the Discord.
channel:read:charity
moderator:manage:chat_messages
moderator:read:chatters
moderator:manage:chat_messages
I have gone through and changed how the present viewer tick operates, it is still possible to have the same behavior as 0.1.12, so continue reading.
The present viewer tick will always happen, but you now have the ability to have it "live update" from twitch, or artificially mark someone as present.
Under the Present Viewer action selector, there are 2 new setttings, a Live Update
check box, and a slider bar.
When Live Update is checked, the slider next to it is how often this update will occur, between 1 and 10 minutes, this will also still execute the action at this interval.
When Live Update is not checked, the slider next to it behaves as a threshold. The timer runs every minute, and checks the current time minus the user's last active time, if this is less then the threshold, they are marked as present, otherwise they are marked as not present. The action will still be executed, but, it will occur every minute.
The default setting is Live Update
not checked, and the slider set to 5
minutes. To have the same functionality as 0.1.12 and earlier, enable Live Update
and make sure the slider is set to 5
minutes.
The newly released Charity feature of Twitch is now supported within Streamer.bot
This introduces 2 new events, Donation and Completed
Switching these events to use the data that comes from PubSub, they may happen quicker, as well, more variables are available.
Both the ban and timeout events gain the following variables
Name | Description |
---|---|
createdAt |
The date and time the ban or timeout was created |
createdById |
The Twitch ID of the user who created the ban or timeout |
createdByUsername |
The user name of the user who created the ban or timeout |
createdByDisplayName |
The display name of the user who created the ban or timeout |
reason |
The reason for the ban or timeout |
The donation event occurs when someone has donated to your charity.
Variable that are included are as follows:
Name | Description |
---|---|
baseAmount |
The amount of the donation as a whole number |
donationAmount |
The amount of the donation in decimal form |
charity.name |
The name of the charity you are supporting |
currency.code |
The 3 letter ISO currency code |
currency.exponent |
Divide base amount by 10 to the power of this number to get the decimal value |
Twitch is providing amount values for Charity calls as whole numbers, so $42.00 will return as 4200.
When donations come through, a check is made if your current donation amount matches what your goal is, and will send a completed event if this is true.
Variable that are included are as follows:
Name | Description |
---|---|
charity.id |
Twitch's internal ID for your campaign |
charity.timestamp |
The timestamp of the event |
charity.currency |
The 3 letter ISO currency code |
charity.donationTotal |
How much you have raised so far, asa whole number |
charity.goalTarget |
Your campaign's target amount as a whole number |
Twitch is providing amount values for Charity calls as whole numbers, so $42.00 will return as 4200.
Twitch recently added, as a beta feature a new /shoutout
command, so for those users who have this on there channel, you can now react to when you, or a moderator uses this command, and treat it like a !so chat command!
The user who was given the shoutout will be contained in the target*
variables.
Available variables:
Name | Description |
---|---|
shoutoutId |
Twitch's internal ID for the shoutout |
targetUserId |
The user's id |
targetUserLogin |
The user's login name |
targetUserDisplayName |
The user's display name |
targetUserPrimaryColorHex |
The user's primary color in hex |
targetUserProfileImageURL |
The user's profile image |
By using the Streamer.bot website, you can now add webhooks to your Shopify store front!
Supported webhook events include
Order creation
andOrder payment
There are 2 new events within Streamer.bot that you can associate an action with, Order Created
and Order Paid
. Both of these events will provide you with almost all the information that is provided by the webhook.
The best way to check the variables, is to setup your webhooks, and assign an empty action, then check the available variables in the Action History
tab under Action Queues
Added a new sub-action that lets you set the color of a color source within OBS. All fields support %variable%
replacement, and there is an option to just set a random color.
This will add up to 3 new variables to your action for the selected OBS connection.
Name | Description |
---|---|
isConnected |
Boolean value indicating if the selected OBS connection is connected True /False |
isStreaming |
Boolean value indicating if the selected OBS connection is streaming True /False |
isRecording |
Boolean value indicating if the selected OBS connection is recording True /False |
This will let you add your current Twitch viewer count as a variable to your action.
This value is only updated every 30 seconds
Name | Description |
---|---|
viewerCount |
Your current Twitch viewer count |
This sub-action will fetch your latest Twitch Charity campaign and add the information as variables.
Name | Description |
---|---|
campaignId |
Twitch's internal ID for your campaign |
charity.name |
The name of the charity you are supporting |
charity.description |
The description of the charity you are supporting |
charity.logoUrl |
The logo of the charity you are supporting |
charity.websiteUrl |
The website to the charity you are supporting |
currentAmount |
How much you have raised so far, asa whole number |
targetAmount |
Your campaign's target amount as a whole number |
Twitch is providing amount values for Charity calls as whole numbers, so $42.00 will return as 4200.
This is the first of a few new Discord specific sub-actions that will be added. Up first is a friendlier way to post to a webhook you setup in your discord. This one only allows for basic text posting.
Username, content, and image can contain variables and will be parsed.
Username, and image are also optional
Add the following new C# methods
void LogVerbose(string logLine);
bool SendWhisper(string userName, string message, bool bot = true);
bool TwitchAddModerator(string userName);
bool TwitchRemoveModerator(string userName);
bool TwitchAddVip(string userName);
bool TwitchRemoveVip(string userName);
bool TwitchClearChatMessages(bool bot = true);
bool TwitchDeleteChatMessage(string messageId, bool bot = true);
bool TwitchBanUser(string userName, string reason = null, bool bot = false);
bool TwitchUnbanUser(string userName, bool bot = false);
bool TwitchTimeoutUser(string username, int duration, string reason = null, bool bot = false);
bool ObsTakeScreenshot(string source, string path, int quality = -1, int connection = 0);
void ObsSetColorSourceColor(string scene, string source, int a, int r, int g, int b, int connection = 0);
void ObsSetColorSourceColor(string scene, string source, string hexColor, int connection = 0);
void ObsSetColorSourceRandomColor(string scene, string source, int connection = 0);
void LumiaSendCommand(string command);
void LumiaSetToDefault();
bool ActionExists(string actionName);
bool DiscordPostTextToWebhook(string webhookUrl, string content, string username = null, bool textToSpeech = false);
Some important notes with how Twitch Whispers appear to be handled now, this is a copy from the Twitch development documentation.
The user sending the whisper must have a verified phone number (see the Phone Number setting in your Security and Privacy settings).
The API may silently drop whispers that it suspects of violating Twitch policies, it will still indicate success even if the message is dropped.
Rate Limits: You may whisper to a maximum of 40 unique recipients per day. Within the per day limit, you may whisper a maximum of 3 whispers per second and a maximum of 100 whispers per minute.
The maximum message lengths are:
Messages that exceed the maximum length are truncated.
Released 2022-08-31
This is a hotfix release
Released 2022-08-31
inputUrlEncoded#
variables to actually be the word, and not the entire message for each oneCPH.RunAction
properly checks if an action is enabled when trying to run it
Execute C# Code
sub-action will now warn if you try to close it by the X and you have unsaved changes
%wsIdx%
to WebsocketClient action arguments, which is the index of the client, 0 based, -1 if not found%wssIdx%
to CustomWebsocketServer action arguments, which is the index of the server, 0 based, -1 if not found%wssId%
to CustomWebsocketServer action arguments, which is the ID of the websocket server%match[#]%
, as well as named match groups, if you're using ?<groupName>
in your regexSupport for OBS Websocket v5.0 comes to Streamer.bot v0.1.11. For the most part this is a transparent change for users, just edit your OBS Websocket within Streamer.bot and change to v5.x.
Unfortunately, the OBS Raw sub-action will not work between v4.9.x and v5.x; the methods to obtain and set information are incompatible. Even having a translation layer on this leaves too much to chance and likely have the wrong output.
OBS Raw Sub-action will not be compatible between the 2 versions
More information on upgrading your OBS Raw sub-actions will be forthcoming.
The new OBS Raw format for OBS Websocket v5.x is the following:
{
"requestType": "request method",
"requestData": { ... }
}
A quick note about this sub-action, while I tried to keep data structures the same between the 2 versions, the data for this one unfortunately changed. There is now a common format for the data
{
"name": "name",
"itemId": 0,
"visible": true,
"locked": false,
"transform": {
"alignment": 0,
"boundsAlignment": 0,
"boundsHeight": 0.0,
"boundsType": "string",
"boundsWidth": 0.0,
"cropBottom": 0,
"cropLeft": 0,
"cropRight": 0,
"cropTop": 0,
"height": 0.0,
"positionX": 0.0,
"positionY": 0.0,
"rotation": 0.0,
"scaleX": 0.0,
"scaleY": 0.0,
"sourceHeight": 0.0,
"sourceWidth": 0.0,
"width": 0.0
}
}
Streamer.bot gains another integration, Lumia Stream! You can now connect to Lumia Stream and set light colors from within Streamer.bot
Some have been asking for it, well now it's here, you can connect Loot Devil to Streamer.bot now! To use this, requires the use of the Streamer.bot website to configure the web hook, and connecting the application to the website to receive gifting events.
When you connect with your broadcaster account, the following new scopes will be requested
moderator:manage:announcements
channel:manage:moderators
channel:manage:vips
user:manage:whispers
When you connect with your bot account, the following new scopes will be requested
moderator:manage:announcements
user:manage:whispers
Released 2022-06-24
CPH
class to get the Twitch Client ID, and the Broadcaster's access tokenAdded the ability to get Streamer.bot's Twitch Client ID by using CPH.TwitchClientId
, and the broadcaster's access token by using CPH.TwitchOAuthToken
I will not be adding the same capability to the YouTube information, since there are quotas involved.
There is a new event that will be triggered when an ad is run on your channel.
This event may get some tweaking over time as I can gather more data
Name | Description |
---|---|
%adLength% |
The length of the ad in seconds |
%adScheduled% |
If this ad was a scheduled ad |
Released 2022-06-16
channel:moderate
scope, you will need to re-auth this account.
void TwitchAnnounce(string message, bool bot = false, string color = null);
Even though the color parameter is present, currently, due to a Twitch limitation, only null is supported, this will use the default announce command. When Twitch fixes this, supported values will be
blue
,orange
,green
,purple
string TwitchPredictionCreate(string title, List<string> options, int duration);
The following methods have had there return value changed from void to bool, to indicate success or failure.
bool UpdateRewardTitle(string rewardId, string title);
bool UpdateRewardPrompt(string rewardId, string prompt);
bool UpdateReward(string rewardId, string title = null, string prompt = null, int? cost = null);
Any use of these methods should be uneffected, as calling without using the bool is the same as calling a void method, the result is just thrown away
The Logif If/Else sub-action got a bit smarter, you can now have an else condition.
With this sub-action you can send an /announce to your channel. While there is a drop down to pick the color, this is disabled on purpose, as the color specific commands currently do not work outside of the main Twitch chat. Once this is enabled on Twitch's side, I will enable this dropdown
Due to a Twitch limitation, only the default announce command is currently supported. When Twitch fixes this, the other colors (
blue
,orange
,green
,purple
) will be supported.
This sub-action will add information about the selected reward to the arguments
Released 2022-06-01
%commandId%
which contains the ID of the command that was triggered, this applies for a cooldown action as well.%userType%
, this will be present for any actions that adds user information to the arguments
%firstMessage%
, this is a boolean, true or falseRunActionById(string actionId, bool runImmediately = true)
%monthsSubscribed%
if it is greather then 0Ignore Bot
flag for commands now takes into account if the bot account is the same as the broadcaster account and does nothing instead of ignoring, applies to Twitch onlyProbably one of the most requested features has finally been added, more details will be added to this section over the next few days.
You'll be able to authorize with your YouTube account, and monitor chat, giving you the ability to react to chat messages, super chat, super stickers and more!
More information will follow!
See YouTube for information on how to get started!
Moving forward, Streamer.bot will be offered in a 64-bit build, as opposed to a 32-bit build. This opens up the ability to interface with more librariries and tools using the integrated C# capabilities.
When you connect with your broadcaster account, the following new scopes will be requested
moderator:manage:banned_users
moderator:read:blocked_terms
moderator:manage:blocked_terms
moderator:manage:automod
moderator:read:automod_settings
moderator:manage:automod_settings
moderator:read:chat_settings
moderator:manage:chat_settings
whispers:edit
user:read:follows
Since I needed to add the moderation scopes, I decided to finally add the whisper edit scope, this will allow the broadcaster account to send whispers. The restrictions by twitch are still in place!
Add the following new C# methods
T GetTwitchUserVar<T>(string userName, string varName, bool persisted = true);
T GetYouTubeUserVar<T>(string userName, string varName, bool persisted = true);
void SetTwitchUserVar(string userName, string varName, object value, bool persisted = true);
void SetYouTubeUserVar(string userName, string varName, object value, bool persisted = true);
void UnsetTwitchUserVar(string userName, string varName, bool persisted = true);
void UnsetYouTubeUserVar(string userName, string varName, bool persisted = true);
void UnsetTwitchUser(string userName, bool persisted = true);
void UnsetYouTubeUser(string userName, bool persisted = true);
void SendYouTubeMessage(string message);
bool RunActionById(string actionId, bool runImmediately = true);
int WebsocketCustomServerGetConnectionByName(string name);
OBS connections have 2 new properties in the context menu when you Right-click on them, Default and Forced.
Setting a connection to default means if the OBS Websocket an OBS sub-action is using is not found, it will use the default selected OBS connection.
Setting a connection to forced, will override all OBS sub-actions and OBS C# methods to use this connection until it is toggled off, or Streamer.bot is restarted.
Decks, it's all about Decks! With this integration, Decks can now be fully remote! They can be opened on any browser, any device, anywhere in the world and control your Streamer.bot through button presses.
Under the Integrations
tab, there is a new Streamer.bot Website
tab, Click the Settings
tab and connect to the Streamer.bot Website, this uses the same login mechanism that you used to sign into the website to create your Decks
Expect more things to come with this new feature!
A huge thanks to Whipstickgostop for getting the website side of things all working!
A long asked for integration is finally here, you'll be able to react to events that come from Kofi!
Since Kofi uses WebHooks, this functionality is done through the Streamer.bot website, and configured there.
This REQUIRES you to be connected to the Streamer.bot Website to use
You can now react to Patreon events as they happen!
Patreon also uses WebHooks, so this is done through the Streamer.bot website as well.
This REQUIRES you to be connected to the Streamer.bot Website to use
With 0.1.8, you'll be able to select voices, and change options of VoiceMod from within Streamer.bot
The following new Sub-Actions are available:
New C# Methods available for use.
void VoiceModSelectVoice(string voiceId);
string VoiceModGetCurrentVoice();
bool VoiceModGetHearMyselfStatus();
bool VoiceModHearMyVoiceOn();
bool VoiceModHearMyVoiceOff();
bool VoiceModGetVoiceChangerStatus();
bool VoiceModVoiceChangerOn();
bool VoiceModVoiceChangerOff();
void VoiceModCensorOn();
void VoiceModCensorOff();
Streamer.bot now has a direct integration with Pulsoid, attach an action to the Heart Rate Pulse event to receive your heart rate events.
The Heart Rate event happens every second while data is being transmitted from Pulsoid, be aware of this.
Name | Description |
---|---|
%measuredAt% |
Time the measurement was taken |
%heartRate% |
Heart Rate value |
Streamer.bot now has a direct integration with HypeRate.io, attach an action to the Heart Rate Pulse event to receive your heart rate events.
The Heart Rate event happens every second while data is being transmitted from HypeRate, be aware of this.
Name | Description |
---|---|
%heartRate% |
Heart Rate value |
The need to find and enter your JWT token are gone. You can now authenticate with StreamElements to give Streamer.bot access to your account to use features from this service.
If you were using StreamElements prior to this version, you will need to login in order to resume functionality.
Requires the plugin PolyPop WebSocket Plugin from Jabbey92 in order to work.
Once configured, you'll be able to trigger PolyPop alerts from within Streamer.bot using the PolyPop Trigger Alert sub-action
Assign an action to donations that are sent through TipeeeStream
Assign an action to whenever someone sends you a treat through TreatStream!
A brand new tab at the top level, Action Queues
has been added, you'll be able to find your Queues here now, instead of a drop down on the General
tab under Settings
. You'll be able to add, create, delete your queues, pause them, resume them from here as well.
In addition to this, there are 2 additional tabs under Action Queues
; Pending Actions
and Action History
Here you will be able to see Streamer.bot working, showing you actions as they get queued up, and when they start running.
Right clicking on an Action will let you inspect the variables that the action was run with.
Here you will be able to see actions that have complete, along with how long it took for them to run.
Right clicking on an action will bring up a context menu, letting you inspect the variables this action was run with, inspecting the variables after it was completed, as well as requeuing the action as if it was just ran.
Much like it's counter part, Obs Hide Group sources, this will hide all the sources within a scene.
Much like it's counter part, Obs Set Random Group Source Visible, this will set a random source within a scene to visible.
Set the state of a Voice Control Command, either enable it or disable it, or toggle its current state.
Set the command of a Voice Control Command to the value specified, supports parsing of values.
This only works for Voice Control Commands that are Anywhere
Released 2022-01-16
With the addition to being able to specify date ranges/counts for clips, they are no longer returned in newest to oldest, they are returned oldest to newest, as this is how the Twitch API returns the data. There is no mechanism in the API to change the sort order. Wiki entries will be updated to indicate this
Released 2021-12-27
View changelogs for older releases