**porygonz.litcoffee** is the main executable and configuration file of PorygonZ IRC bot. Well, it was initially an IRC bot. During development, it also got XMPP support. It's responsible for running actual code, and specifying configuration, such as servers for it. It isn't the most friendly kind of configuration file, but I hope it's flexible enough for most purposes. The first step would be to import the container. Because Container is name of class contained in `porygonz/container`, it's in braces. {Container} = require 'porygonz/container' We have to import servers we need. In most cases, you could want to have IRC in your IRC bot (I mean, it's an IRC bot). For development, you could want to have a console available. {IRC} = require 'porygonz/servers/irc' {Console} = require 'porygonz/servers/console' Also, some might want to have XMPP support. Uncomment this comment to get XMPP support. # {XMPP} = require 'porygonz/servers/xmpp' Next, we have to add plugins. The plugins are responsible for reacting to what user says, and responding to it. Some servers might have different plugins for various channels. For example in IRC, you can load separate plugins for channel `#a` and channel `#b`. Some plugins also need event parsers. The event parsers can react on anything, including people joining or writing. They can slow down the bot, but usually it isn't really noticeable (when event parser is well written, that is). By default, the porygon imports `version` plugin. It's almost useless plugin that shows current PorygonZ version after typing `version` command. Of course, you are encouraged to change it. {version} = require 'porygonz/plugins/version' plugins = version: version() Also, generic handler for command that weren't found. It even gives hints if it will find the command that is similar to yours. {commandNotFound} = require 'porygonz/plugins/command-not-found' Next, we can make server instances wrapped in `Container` objects, and store them in `containers` array for convienence. containers = [ new Container plugins: plugins eventParsers: [] commandNotFound: commandNotFound() prefix: /SampleBot?\b[:,]?\s*/i Some plugins require database connection. You can specify it here. Check [jugglingdb's documentation] for more details. database: driver: 'sqlite3' database: 'samplebot.db' server: new IRC server: 'irc.freenode.net' channels: ['#botters-test'] nick: 'SampleBot' userName: 'samplebot' realName: 'SampleBot, version' nickServPassword: 'swordfish' new Container plugins: plugins eventParsers: [] commandNotFound: commandNotFound() database: driver: 'sqlite3' database: 'console.db' server: new Console XMPP container needs some setup (like creating initial account), so it's commented out by default. # new Container # plugins: plugins # commandNotFound: commandNotFound() # server: new XMPP # jid: 'example@example.com' # password: 'password' ] After that, we can start every container using `for in` loop. for container in containers container.connect() [jugglingdb's documentation]: https://github.com/1602/jugglingdb/blob/master/README.md