Announcement and thoughts about the future of InstructBot.
Version 3.7 has been released to the InstructBot testers and will soon be ready for general release. Below is an outline of the major component of what's coming in the new version.
There are five new command types, which split into two main purposes.
The first is to enable you, or your viewers, to control profiles using triggers. You can now do this with a disable profile, enable profile or toggle profile command.
The second is to allow you to run multiple commands from a single trigger. You can do this using a sequential command which allows you to run the commands in a defined order one after the other. Or a parallel command which allows you to execute all the configured commands at once.
Linked Text Commands
Continuing the theme of allow you to run multiple commands at once, if all you wish to do is output text into chat, you can now link a text command to be sent at the start or end of the executing command.
Gifted Subscription Triggers and Rewards
Gifted subscription triggers and rewards have been split out of the existing subscription triggers and rewards allowing you to trigger commands, or give rewards based upon the number of gifted subscriptions given.
Twitch Polls and Predictions
There are new triggers for the result of polls and prediction, allowing you to execute different commands depending upon the winning result.
I have been wanting to release the version 3.7 of InstructBot to my testers for a couple of months now. Wanting is the important word as unfortunately I've been stopped by issues with the backend servers.
When I first started to investigate what was wrong the picture didn't look good. As whilst I wasn't getting hundreds of request per minute, the requests I was receiving where taking long and longer to process.
As you can see in the above the request count flattens as the average time per request rises (as the server is hitting 100% CPU usage and they are rejected). You can also see this in the below as I have requests taking more than a reasonable amount of time, e.g. anything over a second for simple requests and couple of seconds for more complicated ones.
This ultimately was what was impacting the ability to download commands which had been shared.
If you were lucky enough to have you request processed just after the server had restarted then everything went well. But make the same request an hour later and it likely would have not been processed for some time.
This made meaningfully testing the changes I made take time, as although I could load test to a degree in my development environment, the live environment didn't always behave the same way.
However over the last couple of months I have been slowly improving the situation by rolling out backend changes to fix bugs / improve performance and then waiting to see if the change actually made the improvement I thought it would.
Sometimes this meant changing the database to be more efficient at the cost of taking more space, which necessitated downtime. Other times it mean rolling back a the change I made because it had no effect (or made things worse).
Today however the servers now are in a pretty good position. For example the below shows the last 24 hours which is a much nicer to looking graph, as no request, on average, is taking more than a second.
You can see this more clearly in the below, as 95% of the request are being processed within 0.88 seconds, although there are a few which are taking slightly longer.
So why all the effort?
Well with version 3.7 of InstructBot there are several new command types and triggers which need more information than just the command.
For example there is a new poll trigger for commands which will execute the command when a specified poll result is received. This poses the problem of that if you share this command you must share the poll linked to the command as well otherwise the trigger would be pointless.
Another example is that there is a new disable profile command, sharing this command would be pointless if you also didn't also get the linked profiles (and all the commands linked to those profiles etc...).
This is the extent of the update needed for version 3.7, meaning that I can now finishing my own testing before handing version 3.7 off to my testers.
In the future I may also allow profiles to be shared explicitly, e.g. a download profile window. I could also allow sharing of poll and predictions although I think there would be less value in this.
Ultimately if any of this happens will depend upon user feedback which you can give by joining our discord .
Here's a look at one of the changes coming in version 3.7 of InstructBot. It's an update to the UI to allow everything to scale correctly when your monitor isn’t set to scale everything to 100%. You can see that everything has sharpened up and the layout issues have been fixed.
Here is a first look at the new toggle profile command coming in version 3.7 of InstructBot. It's using the new workflow engine being designed for custom mini-games to handle potentially long running actions, e.g. the command could toggle a profile on or off for many minutes.
So whilst it's taken longer to complete than expected today version 3.6 has been released to the InstructBot testers. Below is an outline of what is coming in the new version, which has a target release date of the end of December.
Please note everything below is still subject to change based upon testing and feedback of my testers.
An update to allow you to assign the current value explicitly from within the UI, and a new setting to toggle if triggering amounts also increment the value.
Currently an application become active when a window with matching name is focused. This stops working when the window text changes as the game is play.
There has been added the ability to set a pattern so that if the application name changes in a predictable manor, it will still be detected.
E.g. if an application has a target window name of Game XX% where XX increments from 0 to 100 as you progress though the game, this could be handled as you could create a pattern to pick up Game 0%, Game 1%, Game 2% through to Game 100%.
There have been a number of changes including:
Adding alias, e.g. you could assign the identifier help, and then have alias of bot, bitbot etc... so a user in you chat can type !help or !bot or !bitbot.
Allow all key actions of an input command to use the generalised Alt, Ctrl and Shift keys, rather than specific Left Alt / Right Alt, Left Ctrl etc... as some game don't respond to the specific key and instead respond to the generalised one.
Allowing you to select a specific output device for individual play sound commands.
Being able to cancel a command which is running.
Keeping track of which keys and mouse buttons have been pressed in an input command, and then reversing them automatically when the command completes if not done explicitly by the command. For example if you have an input command with a Key Down W action, currently if that command completes without a corresponding Key Up W action, the key will remain pressed until you press it on your keyboard. The new tracker will now send a Key Up W action automatically when the input command finishes.
Letting the repeat action of an input command function over a given time period, e.g. 5 seconds / 10 seconds, as well as the ability to specify a delay between repetitions.
The ability to set the text output in the help command for the free, points and subscription triggers. For example you could change the default subscription output from Tier X Subscription to TX Sub.
Third Party Integrations
A re-work of how InstructBot connects to third parties has been implemented so that they are all independent, and can be connected / disconnected without affecting the other connections.
This means you'll no longer need to reconnect if, for example you enabled StreamElements whilst already connected. The connection to StreamElement will instead just happen.
It should also lead to an increase in visibility of when InstructBot is reconnecting, e.g. a new UI has been created to show when individual connection to Twitch Chat, Twitch PubSub, StreamElements etc... have been dropped and are reconnecting.
There have then been an update to some of the individual third parties.
Ability to take donations from TipeeeStream, e.g. as StreamElements / StreamLabs, has been added.
Migration from the V5 API which will be removed in February 2022 of the new Helix (V6) API.
I've uploaded a new tutorial video explaining how adding a points trigger works in InstructBot. It's the last in the series which has worked through all trigger types.
I've uploaded a new tutorial video explaining how adding a word trigger works in InstructBot. It's the eleventh in the series which will work through all trigger types.
I've uploaded a new tutorial video explaining how adding a timed trigger works in InstructBot. It's the tenth in the series which will work through all trigger types.