简要翻译 Chattie,原文来自github,有删改。
Chattie是受Hubot启发的Python机器人框架。
安装chattie
安装命令:
pip3 install chattie
创建一个新的bot,运行:
chattie new my_bot_name
使用bot名称my_bot_name创建一个新目录,并生成一些文件来帮助入门。Chattie目前带有3个连接器:
- Matrix: https://matrix.org/
pip3 install chattie[matrix]
- Telegram: https://telegram.org/
pip3 install chattie[telegram]
- Terminal: A REPL you can use for testing your bot!
支持添加技巧和处理程序 来构建自己的机器人。
核心概念
- Handlers:处理程序,接收房间中的所有非命令消息
- Tricks:技巧,Chattie机器人可以做的事情
- Commands:命令,Tricks的触发词
- Connectors:连接器,让Chattie机器人与其他服务进行对话
Trick、handler和Command
Trick、handler是带有两个参数和一个**kwargs的函数。kwargs是一个数组,包含当前实例chattie.Bot和传入消息的文本,使用空格作为分割符,允许Connectors发送附加的元数据。
Tricks和handlers的功能并不是严格必需的,主要用于定制可选的机器人后端(backend)。可用的附加元数据的更多信息,请参见相应连接器的文档。下面是Trick的一个例子:
# If we recieve the message: "chattie my_new_trick some stuff"
def my_new_trick(bot, msg, **kwargs):print(msg) # prints ['my_new_trick', 'some', 'stuff']print(bot) # prints info about the currently running bot instancereturn "" # responds to the chat room with whatever string is# returned here
Trick使用完全相同的签名,但是他们可以选择返回None,不送任何内容给聊天室。这对于诸如审核日志记录或捕捉笑话之类的事情很有用
。
所有Trick都会自动添加到Chattie的help命令中。如果Trick具有docstring,它将包含在为用户优化过的帮助输出中。
因此,Chattie可以配置为必须将新trick分配给命令,方法是command在模块中命名一个全局变量,该变量 是Trick触发词的词典。对于上面的示例,它看起来像这样:
commands = {'my_new_trick': my_new_trick
}
更方便的是,可以将多个命令分配给同一个trick:
commands = {'my_new_trick': my_new_trick,'new_trick': my_new_trick
}
Chattie初始化后会自动将其引入,并将其添加到已知命令中。
handler操作方式大致相同,但是由于handler没有触发词,因此您只需导出要在全局变量中注册的处理程序数组即可:
handlers = [a_new_handler,some_other_handler
]
Chattie将负责其余的工作。