如何通过QQ机器人技术实现禅道bug的自动提交功能
零、寫在前頭
最近部門老大提到可以使用qq機(jī)器人實(shí)現(xiàn)bug自動(dòng)提交禪道,好奇心趨勢(shì)于是自告奮勇進(jìn)行了一系列探索。qq機(jī)器人當(dāng)然有很多種,這里選擇基于smartQQ協(xié)議的qqbot作為模擬客戶端。qqbot是用python寫的,目前社區(qū)比較活躍,如果想要實(shí)現(xiàn)一些簡(jiǎn)單的功能的話,推薦使用qqbot。不過最近由于支付寶掃碼紅包事件,騰訊封掉了一些smartQQ的關(guān)鍵字段,所以qqbot以及所有基于smartQQ的框架的能力變得更有限。
流程圖
一、qqbot 介紹
Github地址:https://github.com/pandolia/qqbot
qqbot特點(diǎn)
- 基于smartQQ協(xié)議
- 目前各種qq機(jī)器人庫(kù)中最活躍的庫(kù)之一
- 豐富的可配置項(xiàng)
- 可自定義插件進(jìn)行消息的接收和處理
- 功能豐富
安裝和使用(具體可參考qqbot的github)
安裝:pip install qqbot 啟動(dòng):qqbot 啟動(dòng)后自動(dòng)彈出二維碼,可以掃碼登錄二、qqbot的插件機(jī)制
qqbot 支持自定義插件,它的插件機(jī)制是實(shí)現(xiàn)這個(gè)項(xiàng)目所依賴的基礎(chǔ)。通過可以插件獲取qq消息的內(nèi)容,即可進(jìn)行下一步操作。
具體可參考以下
實(shí)現(xiàn)你自己的-qq-機(jī)器人
三、禪道API簡(jiǎn)介
禪道也是一個(gè)開源的項(xiàng)目管理/bug管理工具,現(xiàn)在很火,具體就不多說了。禪道開放了一系列的接口支持通過http請(qǐng)求進(jìn)行api的調(diào)用。這里是禪道API機(jī)制介紹的官網(wǎng)連接:http://devel.cnezsoft.com/book/extension/api-intro-43.html
如何實(shí)現(xiàn)bug的提交
禪道在每次請(qǐng)求的時(shí)候需要在cookie中設(shè)置一個(gè)zentaosid的參數(shù),而這個(gè)參數(shù)是登錄的時(shí)候獲取到的,所以現(xiàn)在流程就很清清楚了
四、qqbot插件的實(shí)現(xiàn)
qqbot插件是用python寫的,而我擅長(zhǎng)的卻是JavaScript,所以想了一個(gè)辦法,把調(diào)用禪道API那塊的程序?qū)懗擅钚谐绦?#xff0c;然后用python直接執(zhí)行命令行即可。甚至是,把qqbot的插件完全寫成轉(zhuǎn)發(fā)的功能,一旦有可用的消息就交給node命令行來處理,插件只負(fù)責(zé)消息的接收、轉(zhuǎn)發(fā)和推送。
這里有幾個(gè)細(xì)節(jié)需要注意
python執(zhí)行完命令行如何獲取返回值?
使用os.popen這個(gè)函數(shù)
t_f = os.popen(cmd) print t_f.read()如何實(shí)現(xiàn)node命令行程序
我是借助了commander.js,當(dāng)然如果不復(fù)雜的話也可以自己寫。
本地命令行程序如何全局安裝
在package.json所在目錄下使用npm install . -g可先在本地安裝當(dāng)前命令行程序,可用于發(fā)布前的本地測(cè)試。
代碼
這塊的代碼已經(jīng)提交到github上了,這是地址 https://github.com/brahmachen/zentao
如果能對(duì)你起到幫助的話順便點(diǎn)個(gè)star也是極好的。
這塊node命令行使用superagent發(fā)起http請(qǐng)求,使用Promise以及async/await進(jìn)行異步的處理,使用commander.js實(shí)現(xiàn)命令的解析和處理。
五、成果
六、有什么收獲?
- 熟悉python基本語法
- 了解node命令行程序制作方法
- 了解了禪道的API機(jī)制
- 了解了圖靈機(jī)器人申請(qǐng)和調(diào)用流程
- Commander.js
- Superagent.js
七、使用qqbot的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
qqbot的一系列豐富的功能,包括自動(dòng)重啟、自動(dòng)發(fā)送二維碼到郵箱等,保證了程序的穩(wěn)定性和可靠性
缺點(diǎn)
每隔1~2天cookie過期,需要QQ號(hào)掃碼登錄,需要專人維護(hù)。同樣由于smartQQ協(xié)議的特點(diǎn),提交bug時(shí)不支持圖片的處理。如果對(duì)圖片有需求的話,建議使用基于PCQQ/AndroidQQ/TimQQ等高級(jí)協(xié)議的框架,如myPCQQ、酷Q和Amanda等
總結(jié)
以上是生活随笔為你收集整理的如何通过QQ机器人技术实现禅道bug的自动提交功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图片播放器小项目(详解)
- 下一篇: C语言实现读取elf文件某section