Commands are actions which are performed upon your computer which either affect the game you're playing or interact with you or you're viewers in some way.
InstructBot supports a number of different command types:
External: Launches another application upon your computer.
Help: Automatically lists other commands which are currently active.
Input: Sends keyboard or mouse input to the active application.
Mute Sound: Mutes the active application.
Play Sound: Plays a sound.
Random: Randomly pick another command from a list you define.
Swap Mouse Button: Swaps you left and right mouse buttons.
Text: Sends text into chat.
Timeout: Times out a user in chat.
All commands, apart from the swap mouse button and timeout types, can have multiple multiple instances of the command defined. For example you can have an instance of an Input Command which clicks you left mouse button and another which presses the space bar key.
InstructBot also supports some built-in command types, see here.
To create a new command, find the type of command you wish to create in the sidebar and click upon it. For example in the below Input Commands are selected
You can then click the add button to create a new command of that type.
Once you have configured the new command you should press the Apply button to save the changes.
Note: The button will only be enabled when changes have been made.
As well as creating commands yourself, you can download commands other users of InstructBot have created. To do so click upon the "Commands" ribbon item.
If you are disconnected the Download button will be disabled, please first connect to download commands.
If you are connected you can then click the Download button.
This will open the download commands window.
You can search for a specific command by using the search bar.
You can filter by command type, author and name.
After finding the command (or commands) you want, select them by pressing on the checkbox:
You can then click the download button to queue them for download.
When InstructBot is running an active command set is maintained, e.g. those commands which are marked as "Always Active" or and linked to the active application through an enabled profile.
To see which commands are in the currently enabled you can look at the commands overview.
You can then check the active column, where every command with a tick is currently active.
Note: If there is no target application only commands marked as "Always Active" will be enabled. You can either start the application you want to check or manually select it, see here.
All commands can have cooldowns set globally and / or per user.
A commands global cooldown applies to all users. For example if a command has a global cooldown of 60 seconds it can only be executed once every minute by anyone.
A commands user cooldown applies to the specified user only. If a command has a user cooldown of 15 seconds, that user can execute once ever 15 seconds, two different users could execute it in quick succession, e.g. the first could execute it and then the second 2 seconds later.
A commands global and user cooldown aren't mutually exclusive, for example a users cooldown could expire but the command could still be on global cooldown and unable to execute.
Broadcaster and Allowed Users
The broadcaster and allowed users ignore both global and user cooldowns when executing commands. Any command executed by either will however influence when the command can next be executed by other users if there is a global cooldown.
Non-refundable Command Triggers and Cooldown
If a command is on cooldown and a user has paid for it e.g. through bits or a donation, they will instead be given a use of the command to be used at a later time.
You can disable the notification for this in the options, see here.
When a command is triggered it is placed within a queue to be executed.
InstructBot has two types of queues. The first type is sequential and the commands placed within it will be processed in the order they are queued:
E.g. the commands would be processed in the order of Grenade Sound, Mute Game, Shoot and Shoot. With Mute Game2 only starting after Grenade Sound1 has finished, Shoot3 after Mute Game2 has finished and Shoot4 after Shoot3 has finished.
This makes the sequential queues good for when order matters.
The second type is parallel and the commands placed within it will be processed simultaneously:
E.g. the commands Grenade Sound, Mute Game, Shoot and Shoot would all attempt to be executed at the same time with no guarantees of order.
This makes the parallel queues good for when order doesn’t matter.
Depending upon the type of command you create they will run on a particular queue by default.
|Mute Sound||Sequential: Mute Sound|
|Play Sound||Sequential: Play Sound|
|Swap Mouse Button||Sequential: Swap Mouse Button|
In the above you can see that the Input, Mute Sound, Play Sounds and Swap Mouse Button commands are all run on different sequential queues.
This is done because some commands can run over a longer period of time and would prevent other commands from being run whilst they execute.
For example, if everything ran on a single sequential queue:
You can see that both Shoot1 and 2, Mute Game3 and Grenade Sound4 commands are waiting for the Throw Grenade command to complete before they can be run.
This is desirable for the Shoot commands but the Mute Game and Grenade Sound could be executing as well if they were using a different sequential queue:
In general you can leave the different types of commands on their default queues but what happens if you want to be able to have you character turn left and shoot at the same time through different commands?
Both turning your character through a relative mouse move action of an input command and shooting through a left mouse button press action of an input command are performed on the Input command queue by default, so these commands would be queued together and you would see your character move and then shoot:
In this situation you should override the queue one of the commands execute upon and instead assign your own queue to the command. For example see here for how to assign a queue to an Input Command. In the below the turn left command has been assigned to a Mouse Move queue instead.
You can see that both commands could then be executed simultaneously for the desired result.