Skip to content
立志成为一个可被调戏的Bot
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
screenshots
slack_bot
.gitignore
LICENSE
Procfile
README.md
manage.py
requirements.txt
runtime.txt
wsgi.py

README.md

slack_bot

立志成为一个可被调戏且有用的Bot

介绍

很多人听过甚至曾经用过小黄鸡. 你可以把本bot理解为增加了很多功能, 只保留小黄鸡交流的基本逻辑, 用于slackchannel里面的小黄鸡. 它主要借用slack的Outgoing Webhooks, 也使用了私聊upload.

项目使用flask, 目前本项目是一个heroku应用. 地址是 https://slack-bot2.herokuapp.com/slack_callback 但是你也可以直接裸跑

gunicorn wsgi:app localhost:5000 --timeout 240 --log-file -

我们使用slack的特性

  1. 可以把消息私聊发给自己
  2. 可以使用带图的方式接收结果(支持canvas, 以下会看到例图)

模块用途

继承自小黄鸡的模块们, 但是都做了对应的修改:

  1. 空气插件
  2. wikipedia
  3. 地震了
  4. 糗百
  5. orz

新加的模块们:

地图插件 - 你可以输入我想从哪去哪, 会给你个路线(步行/开车/公交)

天气插件 - 使用了百度api, 获得城市的天气情况

北京公交插件 - 可以查询北京公交线路, 获取实时的到某站的信息(有些线路站点不准)

美食插件 - 使用大众点评网api, 获取附近餐饮信息, 评分, 电话地址,距离等等

技术活动插件 - 从segmentfault/csdn/车库咖啡/活动行获得最近的活动列表

Github_issue插件 - 获得你个人或者组织下未处理的Pull requests列表

电影信息插件 - 列出最近上映和即将上映的电影信息

pycoders插件 - 获得订阅数据

pythonweekly插件 - 获得订阅数据

头条插件 - 获得今日头条新闻

travel插件 - 旅游推荐/景点介绍

v2ex feed插件 - 获得一些节点的最新feed

help插件 - 列出所有插件的帮助信息

最主要的是小黄鸡(simsim)

也可以直接发到个人的slackbot channel里:

提交pull request

我们欢迎你把你想要的idea实现出来, 或者在看过本项目代码后用于个人以及私有公司的插件遇到bug, 发现瓶颈等时候 给我们PR

插件编写

插件放在plugins目录下,每个插件是一个python文件,提供两个接口,testhandle,格式如下:

def test(data):
   // your code

test方法返回TrueFalse,说明是否要用该插件处理这一条请求

def handle(data, **kwargs):
    // your code

handle方法则实际处理请求,它需要返回一个utf-8编码的字符串或者一个tuple,用来作为小黄鸡对这条请求的答复:

  1. 返回只包含一个字符串表示不支持带图模式
  2. 返回一个(字符串, 一个attachment的列表), 每个attachment可以使用plugins/utils.py的 gen_attachment 生成

data 是一个dict, 它是slack在回调的时候的请求, 一般情况下你只需要关注data['message']这个消息全文字段.

注意事项:

  1. 请把新的插件的名字也加在plugins/__init__.py的 __all__ 里面

  2. 如果其他插件都不符合, 会默认使用小黄鸡接口

  3. 本地调试可以使用这样的http请求:

    http -f POST http://localhost:5000/slack_callback token=jLGMzrZn3P1lS2sD848KpPuN text='颐和园景点介绍' team_id=T0001 team_domain=example channel_id=C2147483705 channel_name=test timestamp=1355517523.000005 user_id=U2147483697 user_name=Steve trigger_word=''
    
  4. 你也可以这样调试:

    $python manage.py send 今天天气很不错
    !是啊是啊  好想出去玩
    

TODO

  • 输入xx有什么可玩的

  • 今天中午吃什么

  • 输入我想从哪去哪, 调用地图api.给个路线

  • 附近有什么可吃的(大众点评)

  • 最近都有神马技术聚会

  • Pycoders Weekly & Python Weekly 汇总

  • 今日头条

  • 公交车离我还有多久/远

  • v2ex feed

  • github上的issue列表

  • 最近(将)上映的电影(豆瓣电影)

  • 旅游路线推荐/景点介绍

Pending

  1. 打车
  2. 叫快递
  3. 叫外卖
You can’t perform that action at this time.