heavenshell / py-robo

Dead simple bot framework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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)

About

Dead simple bot framework

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Python 100.0%