一种多平台聊天机器人框架

Chatt的Python项目详细描述


健谈

一个多平台聊天机器人框架

说明

chatty是一个python 3包,旨在将任何聊天平台映射到同一平台 标准化接口。目标是允许聊天机器人重新映射 从一个平台到另一个平台,甚至同时到多个平台, 只不过是配置上的小改动。

Chatty围绕3个核心摘要进行组织:

  • signals:信号是通信的任何单个不可分割的元素, 如消息或通知,可能包含也可能不包含 某种内容或数据。信号总是有一定的附加 metadata表示信号的来源、是谁 发送到、发送时间等。
  • bots:bot是处理入站信号的端点,并且 生成出站信号。
  • sessions:会话是一个开放通道,信号可以通过它 由机器人发送和/或接收。

用法

fromchatty.bots.decoratorimportas_botfromchatty.configurationimportget_configfromchatty.sessions.slackimportSlackSessionfromchatty.signals.messageimportMessagefromchatty.signals.metadataimportSignalMetaData# FRIENDLY REMINDER: Never store bot tokens or login passwords in your source# code, and be careful that they aren't in a place where they could get picked # up by source control!# Load the bot's handle and login token from the config file.handle,token=get_config('Slack','~/.chatty_config',['handle'],['token'])@as_botdefconverse(session,signal):"""Say 'hi!' back on the same channel whenever someone says 'hello'"""ifisinstance(signal,Message)and'hello'instr(signal.content).lower():meta_data=SignalMetaData(origin=handle,addressees=[signal.meta_data.roomorsignal.meta_data.origin],response_to=signal.meta_data.identifier)returnMessage(meta_data,'hi!')session=SlackSession(token)# Create a new Slack sessionsession.add_bot(converse)# Connect our bot to itsession.join(timeout=5*60)# Hang out for 5 minutessession.close()# Drop offline

当前开发状况

聊天是全新的,目前只测试了基本的信息 通过电子邮件(imap&smtp)、xmpp和slack。请参阅TODO list以获取 其他最终应该得到支持的平台。

贡献

如果需要支持特定的平台或协议, 我很乐意接受请求。如果你想贡献 但需要一个地方开始,请看TODO list。有很多 平台和功能尚未添加。每个支持的平台都有 它自己在chatty/sessions文件夹中的模块及其依赖项 应该添加到setup.py中的extras_require参数。测验 进入test_chatty文件夹,并以前缀test_命名 正在测试的模块的名称。

提交的代码应该遵循pep8 guidelines,并且通常应该, 遵循chatty代码库中其他地方建立的约定。为了 为了清楚起见,请注意,通过提交拉取请求,您 同意,根据标准惯例(以及GitHub terms of service) 使您的代码在管理此项的license下可用 项目。

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

推荐PyPI第三方库


热门话题
Java Square类   java Android RecyclerView内部视图寻呼机   java类变量:公共访问只读,但私有访问r/w   java不兼容ClassChangeError java8   安卓java on on参数,如参数iNIT.C++C++   java如何在下面的代码中根据我的喜好设置JTextArea和JTextField的大小?   java使用CustomAdapter更改ListView的显示方式   jakarta ee什么是Java Servlet?   传递给Javasocket程序的参数   java为什么我的计划任务在这两者之间有很长的延迟   Java“迭代器”关键字   java获取数据库SQLite Android中插入行的行ID   网络如何在Java应用程序中设置H2嵌入式数据库,以便在小型网络中使用?   数组Java:写出所有包含K1的Nbit序列   java返回随机字符串键的整数值   在java中解析到日期的字符串时保留时区   java如何修复“运行配置错误:[在SDK中找不到Rails]”?   Java包装器OutofMemory