What would help with the programming of Automatons, is the ability to use Conditions in code. It would mean a bot dedicated to multiple tasks (that rely on the condition and status of other bots) could go ahead with other tasks while the other bots do not meet a condition. For example, if you have a bot that mines Metal Depos, and the chance to get Metal Ore or Stone is 50%, then you have another bot collecting the resource, but cannot due to its code telling it to wait for another robot to need a recharge. Conditionals would help - is the short way of putting it.
Sorry if it reads incorrectly.
Below is shown an example of how you can set up a Steam Bot (wearing a Traffic Cone Hat) to charge Worker Bots and to also collect Logs into its inventory to keep itself charged. After the Steam Bot has taken a Log from the Log Storage, if its inventory is full then the "Stow held item" command will fail and the Log will still be in its hands, and so it will add that Log back to the Log Storage. If its inventory was not full, the "Stow" command will run and the "Add to Log Storage" command will be skipped because its hands are empty. You can set the number of times that the "Repeat times …" command runs based on how much energy is used by the Steam Bot to find and move to recharge the Worker Bots.