python的轻量级slackbot框架
gendobot的Python项目详细描述
说明
gendo是一个轻量级的slackbot框架,它将 编写机器人程序所需的样板代码,允许您集中精力解决问题 就在手边。
安装
- 在机器人的新项目文件夹中:
$ mkdir myslackbot
$ cd myslackbot
- 从pypi安装gendobot。
$ pip install gendobot
- 接下来,为您的机器人的逻辑创建另一个文件:
$ touch mybot.py
- 同样在您喜欢的文本编辑器中,使用以下命令编辑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()
- 现在尝试运行它,运行下面的命令,然后在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