Announcement and thoughts about the future of InstructBot.
I've been creating InstructBot for nearly four years now. It started out as a window which I could type JSON into, a project I created because I though it would be funny to watch the streamer I made it for struggle, and it was.
Version 2 of InstructBot was the first version I made available for people to purchase. It allowed people to define their own commands but otherwise had limited functionality and only a small number of users.
It was something I did in my spare time where the purchase price covered the cost of the servers I needed to run for everything to function correctly.
Version 3 was the first version which did more than just run commands. It's added polls, predictions, discounts and rewards. As well as support for more third-party integrations, TipeeeStream for example, and quality of life enhancements like sharing commands and backups.
As the number of users have grown, it has taken up more of my time in supporting both the users which us it and maintaining compatibility with each integration. With more functionality the development of the bot has slowed, as the complexity has increased and integration into Twitch and other third parties has deepened.
With the planned release of version 4 soon™ the amount of time I'll need to spend maintaining the bot will further increase. To keep the level of support and pace of development I'll need to use time I’m currently devoting to other projects I develop, and I can’t do that with the level of income the bot is currently generating.
So unlike the upgrade from version 2 to 3, there will be no free upgrade from version 3 to 4.
What will happen with Version 3?
You will be able to continue using version 3 but it has switched from being developed to being maintained.
This means that version 3 will no longer have new features added to it and instead the only updates released will be bug fixes or those necessary to remain compatible with the InstructBot API. I plan to continue releasing bug fixes until 31st December 2028. Past that I will run the server's so that the bot can continue to work until 31st December 2033 or when there are no longer any users regularly connecting, which ever comes first.
Up until 31st December 2028 I will also make any simplistic change required to support any changes Twitch, StreamElements etc... makes to there API's, past that I will not and instead just ensure the bot continues to function, without the feature if necessary.
An example of a simplistic change is the recent update I made to keep rewards working. It required a change to maintain compatibility with the Twitch API related to how users in chat are selected.
Version 4 and Beyond
In the coming week I will be updating the website so that you can no longer purchase InstructBot, instead you'll need to subscribe. The subscription will cost £30 for a year, allowing me generate a reoccurring income. This should enable me to slowly reduce the other projects I work on until I can focus my whole attention on just developing InstructBot.
What will happen for existing purchasers?
For anyone that has purchased and wishes to upgrade to version 4 when it's released there will be two options. The first is to have a free 1 year period and then start paying the yearly subscription cost. The second will be to start the yearly subscription immediately, skipping the free 1 year period. Either options will require you to first sign up for a PayPal subscription.
The options will not change post release of version 4, so there will be no pressure to switch quickly. It is my hope that people whom have been using the bot for more than a year will use the second option to help support me and the development of the bot.
Why should I upgrade to Version 4?
Below is a high level list of some of the new features and improvements coming in version 4.0.
- Ability to use a different Twitch account as the bot account.
- Additional triggers types including Ad, Emote Combination, Emote Pyramid, Hotkey, Message Count, Regex, Timeout, Total Cheer, Total Donation, Twitch Channel Point, Stream Offline, Stream Online, Untimeout.
- Improvements to all existing triggers and specific improvements made to the Donation and Word triggers.
- Integration with DonorDrive, GoFundMe, JustGiving and Tiltify.
- Update to allow multiple timeout commands, bring them inline with all other commands.
There is then a number of minor release planned for version 4 which will include, the ability to have more fine control over how commands execute, additional reward types, a dynamic text builder to help with text commands and building arguments for external command and more. There will also be a continuing background task of integrating YouTube which is planned to complete within version 4.
I hope the above helps explain what's planed for the future and why. If you have any questions about the above, feel free to join our discord and ask.
The updates today were in preparation for version 4.0 of InstructBot.
There were two main areas update:
Changes to automate some manual tasks that were carried out in our discord .
Previously updating a user roles in the discord was a manual process which was done by looking at what Twitch account was linked on your Discord profile. This has now been changed so that you can did it yourself. To do so you must go here and then click the Connect button.
This will link your Twitch and Discord accounts, and few minutes later (up to 15 minutes) your roles in the InstructBot discord will be updated.
We've done this for a number of reasons. The first is so that it no longer needs to be done manually. The second is so that roles can be persisted across joining and leaving the discord, as again previously, when leaving and joining the roles would have to be updated manually again.
The third and more important reason is that there'll be a beta program for version 4.0 of the bot in the future. To automate sign-up and showing / hiding of channels within the discord we need the link between accounts.
And finally with the update to the backend it paves the way to allow for sign in from accounts different that Twitch, e.g. to allow for sign in from YouTube in the future.
The second area of updates, touched on above, was to allow for connections to more third parties. Currently version 3 allows connections to Twitch, StreamElements, StreamLabs and TipeeeStream. Version 4 will also allow connections to DonorDrive, Extra Life, JustGiving, GoFundMe, StreamLabs Charity*, St. Jude's**, Tiltify, Twitch Charity*.
* Still in planning. ** Looks to be powered by Tiltify and has yet to be verified (as that is what this update is enabling).
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 .