Tangerine是一个轻量级的Slackbot框架,它抽象了编写bot所需的所有样板代码,允许您集中精力解决手头的问题。

slack-tangerine的Python项目详细描述


Tangerine logo

pypi

python slack的一个灵感来源于烧瓶的、基于decorator的api包装器。

关于

Tangerine是一个轻量级的Slackbot框架,它抽象了编写bot所需的所有样板代码,允许您集中精力解决手头的问题。

安装

  1. 要安装橘子,只需使用pipenv(当然也可以是pip):
$ pipenv install slack-tangerine
  1. 创建包含以下内容的新文件:
# mybot.pyfromtangerineimportTangerinetangerine=Tangerine("xoxb-1234567890-replace-this-with-token-from-slack")@tangerine.listen_for('morning')defmorning(user,message):return"mornin' @{user.username}"if__name__=='__main__':tangerine.run()
  1. 现在试着运行它,运行下面的命令,然后在slack中说“早上好”。
python mybot.py

用法

要启动项目,首先需要通过将from tangerine import tangerine添加到文件顶部来导入橘子。

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

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

现在是编写响应函数的时候了,这些函数被listen_for decorator包装起来,它注册了一个模式来监视slack对话,一旦它说出来,python方法应该处理它。

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

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

crontab

有时,您会遇到这样的情况:您希望定期发送松弛消息,而不是直接响应关键字,因为这个cangerine附带了cron的单线程python实现。

假设我们想每隔五分钟向频道中的每个人发送一条消息,只需将以下内容添加到mybot.py文件中即可:

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

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

推荐PyPI第三方库


热门话题
java如何在Spring工具套件中找到Spring版本?   是否有API将vSphere JSON结果映射到适当的Java对象?   java在spring WebSocket中有请求作用域吗?(websocket scop==会话范围)   java我想从list1中删除list2元素并返回list1   java使用JPA/Hibernate为单个集合使用多个@Where   JSF2.0中混合Ajax和完整请求的java   java变量miles可能尚未初始化   java使用文件路径StringArray构建父子数组   java数据源在struts中不起作用   java从另一个类访问txtField值   具有相同主键和外键双向关系的java Hibernate实体OneToOne   java Android广播接收器:上下文问题   java我可以将实体指定为数据存储属性以实现类似joinlike的功能吗?   java如何排除hadoop核心依赖项   java是否可以确定用户是否实时单击了任何通知(不仅仅是来自我的应用程序)?   java在单独的类中访问私有变量?   java如何使用Spring@Value注入映射