SlackBot:Slack 上的小黃雞(Python)
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的特性
- 可以把消息私聊發給自己
- 可以使用帶圖的方式接收結果(支持canvas, 以下會看到例圖)
模塊用途
繼承自小黃雞的模塊們, 但是都做了對應的修改:
- 空氣插件
- wikipedia
- 地震了
- 糗百
- 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文件,提供兩個接口,test和handle,格式如下:
def test(data): // your code
test方法返回True或False,說明是否要用該插件處理這一條請求
def handle(data, **kwargs): // your code
handle方法則實際處理請求,它需要返回一個utf-8編碼的字符串或者一個tuple,用來作為小黃雞對這條請求的答復:
- 返回只包含一個字符串表示不支持帶圖模式
- 返回一個(字符串, 一個attachment的列表), 每個attachment可以使用plugins/utils.py的gen_attachment生成
data是一個dict, 它是slack在回調的時候的請求, 一般情況下你只需要關注data['message']這個消息全文字段.
注意事項:
- 請把新的插件的名字也加在plugins/__init__.py的__all__里面
- 如果其他插件都不符合, 會默認使用小黃雞接口
-
本地調試可以使用這樣的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=''
-
你也可以這樣調試:
$python manage.py send 今天天氣很不錯 !是啊是啊 好想出去玩
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!