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

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三角测距   java Spring异步任务返回未来   java如何显示数据库中的下一条记录   java这些读取用户输入的方法有什么不同?   java Spring+Spring安全请求只接受contenttype xwwwformurlencoded   checkName()和将用户输入存储到ArrayList和boolean[]的java问题   java如何使用JPA和Facade?   java Neo4j类型不匹配   java如何依赖Maven的系统包?   通过FileChooser保存pdf格式会提示在java中出现第二个对话框   java如何将通量链接到另一个通量/单声道并应用另一个背压?   java如何修复安卓 studio中的权限错误?   尝试清除JavaFX ObservableMap时出现java ConcurrentException   java编辑文本。GetText,返回关于null引用的异常,但已声明该异常   mysql组织。乔达。时间LocalDate在Redhat(Linux)java上显示少一天   在java中通过序列化获取多个对象   有人有java注释“java.lang.Synthetic”的背景吗?