当前位置: 首页 > 工具软件 > Hubot Sans > 使用案例 >

笔记:python3编写的仿hubot的聊天机器人Chattie

鲁彬炳
2023-12-01

简要翻译 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 instance
	return "" # 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将负责其余的工作。

 类似资料: