Changelogs

Streamer.bot v0.1.21

Released 2023-05-31

New Features

Updates

  • Update shared libraries
  • Temporarily add T or YT after user's name in Command Dialog permissions
  • Update Stream Deck sub-actions to allow variables in the Button ID
  • Tweaks to Twitch's Broadcaster/Bot status indicators
  • Add error handling to Execute C# Copy compiler log to clipboard
  • Add error handling surrounding Execute C# Code's Init() method
  • Test button for Twitch Raid broadcasts across the websocket again

Fixes

  • General tweaks/fixes
  • Fixes for some Stream deck sub-actions
  • Fix some dialog text
  • Update Twitch Goal Progress event to check if the goal has reached the target, and also send an End event
  • Fix for Twitch out of order gift bomb/sub events
  • Fix handling of clearing a queue
  • Fix crash with VoiceMod and non-expected results

Details

Labs

With this release, to give users a chance to try new features before they're ready, with the knowledge, that they are 100% experimental, I've added a new Labs page.

New Action Queue

The first experimental feature is an updated Action Queue, to enable this, just click the check box and restart Streamer.bot. The underlying code for this new action queue uses a different container type, and is a bit easier to maintain and manage. There is the possibility of lower CPU usage with many queues.

Be sure to give this a try, so it can be promoted to the next version sooner.

Twitch out-of-order Gift Bomb/Sub events

I have updated the handling of gift subs and community gifting events.

Internally these are now cached, and can be associated with the respective IDs if they happen to come out of order from Twitch's IRC server.

If a single gift sub comes in, it should be handled appropriately and still fire an event for it, however, there will be a small 500ms delay, as a byproduct of this caching.

New C# Methods

New Methods for Stream Deck

void StreamDeckSetBackgroundColor(string buttonId, string color);
void StreamDeckSetBackgroundColor(string buttonId, string color, int state);
void StreamDeckSetBackgroundUrl(string buttonId, string imageUrl);
void StreamDeckSetBackgroundUrl(string buttonId, string imageUrl, string color);
void StreamDeckSetBackgroundUrl(string buttonId, string imageUrl, int state);
void StreamDeckSetBackgroundUrl(string buttonId, string imageUrl, string color, int state);
void StreamDeckSetBackgroundLocal(string buttonId, string imageFile);
void StreamDeckSetBackgroundLocal(string buttonId, string imageFile, string color);
void StreamDeckSetBackgroundLocal(string buttonId, string imageFile, int state);
void StreamDeckSetBackgroundLocal(string buttonId, string imageFile, string color, int state);
void StreamDeckSetTitle(string buttonId, string title);
void StreamDeckSetTitle(string buttonId, string title, int state);
void StreamDeckSetState(string buttonId, int state);
void StreamDeckSetValue(string buttonId, string value);
void StreamDeckShowAlert(string buttonId);
void StreamDeckShowOk(string buttonId);
void StreamDeckToggleState(string buttonId);

New Methods for Twitch Guest Star

GuestStarSettings TwitchGetChannelGuestStarSettings();
bool TwitchUpdateChannelGuestStarSettings(bool? isModeratorSendLiveEnabled = null, int? slotCount = null, bool? isBrowserSourceAudioEnabled = null, string groupLayout = null, bool? regeneratgeBrowserSource = null);
GuestSession TwitchGetGuestStarSession();
GuestSession TwitchCreateGuestStarSession();
GuestSession TwitchEndGuestStarSession();
List<GuestStarInvite> TwitchGetGuestStarInvites();
bool TwitchSendGuestStarInvite(string userLogin);
bool TwitchDeleteGuestStarInvite(string userLogin);
bool TwitchAssignGuestStarSlot(string userLogin, int slot);
bool TwitchUpdateGuestStarSlot(int sourceSlot, int destinationSlot);
bool TwitchDeleteGuestStarSlot(string userLogin, int slot);
bool TwitchUpdateGuestStarSlotSettings(int slotId, bool? isAudioEnabled = null, bool? isVideoEnabled = null, bool? isLive = null, int? volume = null);

Supporting return classes

public class GuestStarSettings
{
    public bool IsModeratorSendLiveEnabled { get; set; }
    public int SlotCount { get; set; }
    public bool IsBrowserSourceAudioEnabled { get; set; }
    public string GroupLayout { get; set; }
    public string BrowserSourceToken { get; set; }
}

public class GuestSession
{
    public string Id { get; set; }
    public List<GuestStar> Guests { get; set; }
}

public class GuestStar
{
    public string SlotId { get; set; }
    public bool IsLive { get; set; }
    public string UserId { get; set; }
    public string UserName { get; set; }
    public string UserLogin { get; set; }
    public int Volume { get; set; }
    public DateTime AssignedAt { get; set; }
    public MediaSettings AudioSettings { get; set; }
    public MediaSettings VideoSettings { get; set; }
}

public class MediaSettings
{
    public bool IsHostEnabled { get; set; }
    public bool IsGuestEnabled { get; set; }
    public bool IsAvailable { get; set; }
}

public class GuestStarInvite
{
    public string UserId { get; set; }
    public DateTime InvitedAt { get; set; }
    public string Status { get; set; }
    public bool IsVideoEnabled { get; set; }
    public bool IsAudioEnabled { get; set; }
    public bool IsVideoAvailable { get; set; }
    public bool IsAudioAvailable { get; set; }
}

Stream Deck Plugin

Official plugin and documentation available at https://streamdeck.streamer.bot

Twitch Guest Star

Added subscriptions to listen to the new Twitch Guest Start EventSub subscriptions.

Added 12 new sub-actions to let the streamer interact with the new API methods for managing the Guest Star feature.

Twitch Scopes

Requesting the following new scopes for the broadcaster account

  • channel:manage:guest_star