python的轻量级slackbot框架

gendobot的Python项目详细描述


https://img.shields.io/pypi/v/gendobot.svghttps://img.shields.io/pypi/pyversions/gendobot.svghttps://travis-ci.org/nficano/gendo.svg?branch=masterhttps://coveralls.io/repos/nficano/gendo/badge.svg?branch=master&service=github&cb=321

说明

gendo是一个轻量级的slackbot框架,它将 编写机器人程序所需的样板代码,允许您集中精力解决问题 就在手边。

安装

  1. 在机器人的新项目文件夹中:
$ mkdir myslackbot
$ cd myslackbot
  1. pypi安装gendobot
$ pip install gendobot
  1. 接下来,为您的机器人的逻辑创建另一个文件:
$ touch mybot.py
  1. 同样在您喜欢的文本编辑器中,使用以下命令编辑mybot.py
#!/usr/bin/env python# -*- coding: utf-8 -*-fromgendoimportGendogendo=Gendo("xoxb-1234567890-replace-this-with-token-from-slack")@gendo.listen_for('morning')defmorning(user,message):return"mornin' @{user.username}"if__name__=='__main__':gendo.run()
  1. 现在尝试运行它,运行下面的命令,然后在slack中说“morning”。
$ python mybot.py

基本用法

要启动项目,首先需要通过添加 from gendo import Gendo到文件顶部。

接下来需要创建gendo实例并配置slack令牌。 这可以使用yaml配置文件完成,也可以显式地将其传递给 初始化。

# Option 1: YAML config:importosfromgendoimportGendopath=os.path.dirname(os.path.abspath(__file__))path_to_yaml=os.path.join(path,'config.yaml')gendo=Gendo.config_from_yaml(path_to_yaml)
# Option 2: Hardcoded slack tokenfromgendoimportGendogendo=Gendo("xoxb-1234567890-replace-this-with-token-from-slack")

现在是编写response函数的时候了,这些函数将被包装 使用listen_fordecorator,它注册一个模式来监视松弛 会话,以及哪个python方法应该处理它。

在下面的示例中,该方法设置为侦听单词“cookies”。 注意,decorator向函数传递了两个参数,首先是 user对象,其中包含有关触发 事件(在本例中是说单词cookies的slack用户)和message, 这是完整消息的字符串。

@gendo.listen_for('cookies')defcookies(user,message):# do something when someone say's "cookies" here.

你也可以用可调用函数设置更复杂的规则,并且你可以将它们堆叠起来! 这里有一个例子。

defnicks_joke_rule(name,message):is_nick=name=='nficano'is_telling_a_joke=message.lower().count('knock')==2returnis_nickandis_telling_a_jokedefbens_joke_rule(name,message):is_ben=name=='johnbenjaminlewis'is_telling_a_joke=message.lower().count('knock')==2@gendo.listen_for(nicks_joke_rule)@gendo.listen_for(bens_joke_rule)defanother_joke(name,message):ifname=='johnbenjaminlewis':return'@johnbenjaminlewis, nice try. But no.'elifname=='nficano':return"@here Nick's telling a joke! Who's there?!?"

最后,你的脚本需要放在一个循环中,在松弛中监视所说的话 相应地传递和响应消息。为此,我们添加 以下是脚本的结尾:

if__name__=='__main__':gendo.run()

crontab

有时会遇到希望发送松弛消息的情况 定期而不是直接响应关键字,对于这个gendo船舶 使用cron的单线程python实现。

假设我们想每五个频道给每个人发一条信息 几分钟后,只需在mybot.py文件中添加以下内容:

@gendo.cron('*/5 * * * *')defsome_task():gendo.speak("Hay Ride!","#general")

有关详细信息,请参见https://en.wikipedia.org/wiki/Cron#Configuration_file crontab语法。

开发

“gendo”的开发完全在github上进行。我们非常欢迎并大力鼓励以补丁、测试和特性创建和/或请求的形式做出贡献。如果此工具无法按预期运行,请打开问题。

如何发布更新

如果这是您第一次释放到pypi,则需要运行:pip install -r tests/dev_requirements.txt

完成后,执行以下命令:

git checkout master

# Increment the version number and tag the release.
bumpversion [major|minor|patch]# Upload the distribution to PyPi
python setup.py sdist bdist_wheel upload

# Since master often contains work-in-progress changes, increment the version
# to a patch release to prevent inaccurate attribution.
bumpversion --no-tag patch

git push origin master --tags

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

推荐PyPI第三方库


热门话题
如何下载多个。java中的PDF文件   linux Java打开文件,形成实际用户主页~/   java如何在时间线内维护TableView选择?   java Hibernate注释@Where vs@WhereJoinTable   Java读/写访问异常FileNotFoundException(访问被拒绝)   继承在Java中是否可以扩展最后一个类?   Android HttpClient使用java使应用程序崩溃。lang.OutOfMemoryError:pthread_create   java为什么即使我在proguardproject中添加了jar文件,也会出现这种错误。txt?   如果添加JButton,swing Java FocusListener和KeyListener将无法工作   java使用solrj检索json格式的SolrDocument   使用Microsoft Visual Studio代码进行Java编程   java NoClassDefFoundError:org/apache/log4j/Logger   哈希集中包含相等对象的java   java中的参数化构造函数是否需要有一个主体?   java类似于NetBeans不必要的代码检测器   Java实践问题   java Blackberry“[projectname].调试文件丢失”和“I/O错误:找不到程序”jar