完全简单的机器人框架。

robo的Python项目详细描述


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

完全简单的bot框架,其灵感来自ruby的ruboty

为什么要重新发明轮子

我喜欢python,不擅长node.js(hubot)、ruby(ruboty)。

Err是可插入的,但对我来说太复杂了。

brutal也是可插入的,但我不习惯编写配置文件。

所以我重新发明了轮子。

架构

消息流。

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

适配器

适配器是聊天服务接收消息和向聊天服务发送消息的接口。

机器人包括两个适配器。

处理程序

处理程序为您的机器人提供各种行为。

fromrobo.decoratorsimportcmdclassPing(object):@cmd(regex=r'^ping',description='')defpong(self,message,**kwargs):return'pong'

此处理程序匹配消息ping并返回pong到聊天服务。

引导

example/main.py是bootstrapingrobo的一个例子。

defmain(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 robotrobot.run(args.adapter)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Java中使用BufferedReader类读取文本文件的子字符串   java如何在JSP页面上包含来自另一台服务器的动态JSP   使用单表策略的java持久化Hibernate继承映射   java报告状态失败达600秒。谋杀!报告hadoop的进展   java将字符串解析为形状   使用JTable的java ClassCastException?   java在Spring引导中关闭数据库   java Android Studio调试错误(Ubuntu)   java如何区分apache beam中KV实例中的两个键?   java将RealmObjectChangeListener添加到异步下载的RealmObject   java匹配模式之前的所有内容,包括新行和/或回车   java使用JAXB在XML中动态更改元素序列   java如何在MACOS中找到动态库(.dylib文件)的版本   Android中的java Nanohttpd服务器   java libGDX:3d动画不工作