robo

Dead simple bot framework.


License
BSD-3-Clause
Install
pip install robo==0.5.6

Documentation

robo

https://travis-ci.org/heavenshell/py-robo.png?branch=master

Dead simple bot framework which is inspired by Ruby's ruboty.

Why reinvent the wheel

I Love Python and I'm not good at Node.js(hubot), Ruby(Ruboty).

Err is pluggable but it's too complex for me.

brutal is also pluggable but I don't wont to write config file.

So I reinvent the wheel.

Architecture

Message flow.

                            +--[handler a]--+
                            |               |
[chat service]-->[adapter]--+--[handler b]--+--[adapter]-->[chat service]
                            |               |
                            +--[handler c]--+

Adapter

Adapter is interface of chat services receive message and send message to chat service.

Robo includes two adapters.

Handler

Handler provides various behaviors to your robot.

from robo.decorators import cmd

class Ping(object):
    @cmd(regex=r'^ping', description='')
    def pong(self, message, **kwargs):
        return 'pong'

This handler matches message ping and return pong to chat service.

Bootstrap

example/main.py is a example of bootstraping robo.

def main(args=None):
    #: `name` is bot's name.
    #: This arg is trigger of handler.
    robot = Robot(name=args.name, logger=logger)
    #: `register_default_handlers()` register default handlers.
    #: Default handlers are `help`, `ping`, `echo`.
    robot.register_default_handlers()
    #: Load given adapter name.
    robot.load_adapter(args.adapter)
    #: Run robot
    robot.run(args.adapter)