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 Spring freemarker多模板加载程序路径   在java插件中从控制台获取输入   java在包中创建继承类   网页抓取Java Jsoup网页抓取   java在线程内创建一个对象,而true条件具有相同的引用   java如何根据空格数拆分字符串   java新的安卓 studio更新中的配置文件“app”是什么?   java在将ArrayList写入/读取到文件时出现奇怪的问题   java Reg替换文本块第一次出现+最后一次出现   java当我单击任何RecyclerView列表项时,如何在MainActivity的EditText中显示特定的单击项?   JAVA XML删除节点仅删除第一个外观   java如何在数组中查找特定值   java SVG/矢量图形对象布尔运算(并集、交集、减法)   java在Android中创建线程需要多长时间   尝试从JBOSS联系Oracle LDAP服务器时发生java连接重置异常   java基于参数获取特定的实现实例   使用java就地修改文件内容   java MonetaryException:未加载MonetaryAmountsSingletonSpi   java接受用户的不同输入并使其触发完全相同的代码段的最短方法是什么   Spring 3.2.8应用程序中未找到java HTTP 404错误