The (name, bot, printer) signature is clunky. Get rid of name and make bot inherit from printer.
The initialise closure is essentially mandatory for plugins. We can make it optional by inspecting the argspec on load and passing in the bot object. More messily (but more implicitly), we can directly modify the namespace of defined callbacks when hooked.