Skip to content

heavenshell/py-robo

Repository files navigation

robo

image

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages