xB(1) ===== :doctype: manpage :manmanual: xK Manual :mansource: xK {release-version} Name ---- xB - modular IRC bot Synopsis -------- *xB* [_OPTION_]... Description ----------- *xB* is a modular IRC bot with a programming language-agnostic plugin architecture based on co-processes. Options ------- *-d*, *--debug*:: Print more information to help debug various issues. *-h*, *--help*:: Display a help message and exit. *-V*, *--version*:: Output version information and exit. *--write-default-cfg*[**=**__PATH__]:: Write a configuration file with defaults, show its path and exit. + The file will be appropriately commented. Commands -------- The bot accepts the following commands when they either appear quoted by the *prefix* string on a channel or unquoted as a private message sent directly to the bot, on the condition that the sending user matches the *admin* regular expression or that it is left unset: *quote* [_message_]:: Forwards the message to the IRC server as-is. *quit* [_reason_]:: Quits the IRC server, with an optional reason string. *status*:: Sends back a report about its state and all loaded plugins. *load* _plugin_[, _plugin_]...:: Tries to load the given plugins. *unload* _plugin_[, _plugin_]...:: Tries to unload the given plugins. *reload* _plugin_[, _plugin_]...:: The same as *unload* immediately followed by *load*. Plugins ------- Plugins communicate with the bot over their standard input and output streams using the IRC protocol. (Caveat: the standard C library doesn't automatically flush FILE streams for pipes on newlines.) A special *XB* command is introduced for RPC, with the following subcommands: *XB get_config* __key__:: Request the value of the given configuration option. If no such option exists, the value will be empty. The response will be delivered in the following format: + .... XB :value .... + This is particularly useful for retrieving the *prefix* string. *XB print* _message_:: Make the bot print the _message_ on its standard output. *XB register*:: Once a plugin issues this command, it will start receiving all of the bot's incoming IRC traffic, which includes data from the initialization period. All other commands will be forwarded directly to the IRC server. Files ----- *xB* follows the XDG Base Directory Specification. _~/.config/xB/xB.conf_:: The bot's configuration file. Use the *--write-default-cfg* option to create a new one for editing. _~/.local/share/xB/_:: The initial working directory for plugins, in which they may create private databases or other files as needed. _~/.local/share/xB/plugins/_:: _/usr/local/share/xB/plugins/_:: _/usr/share/xB/plugins/_:: Plugins are searched for in these directories, in order, unless the *plugin_dir* configuration option overrides this. Reporting bugs -------------- Use https://git.janouch.name/p/xK to report bugs, request features, or submit pull requests.