摘要:過(guò)程就是這么簡(jiǎn)單,騰訊云服務(wù)器作為基礎(chǔ),我們?nèi)滩挥檬謩?dòng)配置自己的服務(wù)器,多么輕松愜意。
推薦理由:
之前我對(duì)搭建微信機(jī)器人挺感興趣的,心血來(lái)潮就做了一個(gè)圖靈機(jī)器人,感覺(jué)自己長(zhǎng)見(jiàn)識(shí)了,今天無(wú)意間發(fā)現(xiàn)了這篇文章,才發(fā)現(xiàn)自己已經(jīng)out了,原來(lái)還有這么叼的微信機(jī)器人,可以在微信與我們聊天的機(jī)器人,它完全不同于圖靈機(jī)器人那種API完成一些看似很好玩的聊天功能,真正可以為我們所用;所以小編這次特意給大家推薦下,來(lái)幫助大家更好地認(rèn)識(shí)如何借助騰訊云快速實(shí)現(xiàn)微信機(jī)器人的思路。
前言
我是一名產(chǎn)品經(jīng)理,平時(shí)對(duì)技術(shù)比較感興趣,也正是因?yàn)閷?duì)技術(shù)有所了解也讓我的工作非常輕松,平時(shí)也看過(guò)很多技術(shù)文章,我認(rèn)為技術(shù)文章要么就是給純技術(shù)寫(xiě)的,要么就是給那些沒(méi)有很深的編程基礎(chǔ)但是熱愛(ài)編程或者抱有期待的人看的,這篇文章是寫(xiě)給后者的,但是不代表內(nèi)容非常基礎(chǔ),依然使用了目前比較熱門(mén)的技術(shù)。
這次我們要做一個(gè)微信機(jī)器人,就是可以在微信與我們聊天的機(jī)器人,當(dāng)然目的不是用圖靈機(jī)器人那種API完成一些看似很好玩的聊天功能,好歹要讓這個(gè)機(jī)器人有所作用。
那么來(lái)說(shuō)說(shuō)我的需求吧,我和朋友做了一個(gè)航模視頻的自媒體,作為一個(gè)產(chǎn)品經(jīng)理,我需要了解我發(fā)布的視頻的實(shí)時(shí)播放量,但是完成這個(gè)操作需要進(jìn)入優(yōu)酷主頁(yè)查看,包括還有每個(gè)視頻的播放量數(shù)據(jù)都要自己去打開(kāi)網(wǎng)頁(yè)看,這樣非常不方便,比如我們?cè)谌豪锪牡搅瞬シ帕康脑?huà),那么就會(huì)有一個(gè)機(jī)器人告訴我們播放了多少,這樣多么方便,而且看起來(lái)還很裝逼,并且,想實(shí)現(xiàn)出來(lái)真的不難。
前提是我們已經(jīng)站在巨人的肩膀上。
技術(shù)路徑和實(shí)現(xiàn)思路
首先編程語(yǔ)言使用了Python,Python語(yǔ)法簡(jiǎn)潔、第三方擴(kuò)展豐富,也因?yàn)檫@里采用的微信消息框架itchat是基于Python的。
服務(wù)器當(dāng)然使用騰訊云服務(wù)器,這里我使用的是單核1G內(nèi)存的最低配置,因?yàn)樽鳛閭€(gè)人用的這個(gè)配置綽綽有余了,并且以后有更多用途的時(shí)候可以直接升級(jí)服務(wù)器配置和存儲(chǔ),這就是云服務(wù)器的巨大優(yōu)勢(shì)。
因?yàn)閷?duì)于大部分人來(lái)說(shuō),拿到一臺(tái)嶄新的服務(wù)器要部署服務(wù)是非常麻煩的,所以我也不喜歡,于是乎想到了使用docker容器來(lái)運(yùn)行我的代碼,這樣不用手動(dòng)去配置服務(wù)器的運(yùn)行環(huán)境,我只需要?jiǎng)?chuàng)建一個(gè)docker鏡像就可以了,但是這樣感覺(jué)還是挺麻煩的,還要安裝docker,還要上傳鏡像。然后我發(fā)現(xiàn)了daocloud,它可以幫助我完成容器管理和鏡像生成的工作。
所以我們部署路徑是這樣的:
編寫(xiě)代碼->提交代碼到github上->daocloud自動(dòng)生成docker鏡像并部署到我們的云服務(wù)器上->自動(dòng)運(yùn)行
也就是提交代碼到分支,然后,然后自動(dòng)更新發(fā)布,服務(wù)就這么運(yùn)行成功了
具體過(guò)程
所以對(duì)云服務(wù)器的配置而言,我只需要為其安裝daocloud的被控端程序即可,然后就可以再也不用管這臺(tái)服務(wù)器了,太爽了吧~
恰好發(fā)現(xiàn)騰訊云也支持了daocloud的系統(tǒng),在為云服務(wù)器安裝系統(tǒng)的時(shí)候選擇服務(wù)市場(chǎng)-Docker容器-Daocloud混合式容器管理平臺(tái)即可。
哇,那這樣豈不是爽上加爽,不用登錄服務(wù)器做任何配置~拿來(lái)即用,真刺激。
安裝過(guò)程就不多說(shuō)了,他們也提供了文檔,非常簡(jiǎn)單,兩行命令而已,然后我們可以在daocloud后臺(tái)添加我們的主機(jī)了。
然后我們?nèi)?chuàng)建一個(gè)項(xiàng)目
需要我們?cè)O(shè)置代碼源,可以選擇github和coding,確實(shí)比較人性化,那么我們就需要自己去github創(chuàng)建好git項(xiàng)目了,這里省略過(guò),選擇好后就可以創(chuàng)建了。
項(xiàng)目創(chuàng)建成功后我們只需要選擇我們的代碼分支構(gòu)建一下就好了,這時(shí)容器鏡像就創(chuàng)建好了,下來(lái)就是部署。
創(chuàng)建一個(gè)應(yīng)用,會(huì)提示我們選擇鏡像來(lái)源,這里選擇之前構(gòu)建的鏡像
點(diǎn)擊部署最新版本就好了
然后我們分別在項(xiàng)目設(shè)置和應(yīng)用設(shè)置里配置自動(dòng)構(gòu)建和自動(dòng)部署,這樣以后我們只要提交了代碼,daocloud會(huì)幫我們自動(dòng)構(gòu)建鏡像然后部署,不需要我們自己手動(dòng)操作,只需要專(zhuān)注代碼邏輯,不用再操心部署了。
過(guò)程就是這么簡(jiǎn)單,騰訊云服務(wù)器作為基礎(chǔ),我們?nèi)滩挥檬謩?dòng)配置自己的服務(wù)器,多么輕松愜意。
程序?qū)崿F(xiàn)
前面重點(diǎn)講了服務(wù)器配置和程序部署,但是實(shí)際上部署的程序我們還沒(méi)講。
容器打包必須要有一個(gè)Dockerfile來(lái)告訴容器如何構(gòu)建鏡像,為了構(gòu)建方便我們采用的daocloud提供的python鏡像,以下是dockerfile的內(nèi)容:
FROM daocloud.io/python:3-onbuild
ENTRYPOINT ["python"]
CMD ["run.py"]
可以看到,我們啟動(dòng)服務(wù)的文件是run.py
run.py
!/usr/bin/env python3import bot.xiaoweiwei as wechat
def main():
wechat.run()
if name == "__main__":
main() xiaoweiwei.py
import itchat from target.youku import YoukuData from target.qqvideo import QQVideoData from plugins.tuling import get_response @itchat.msg_register("Text") def text_reply(msg): itchat.send("/摳鼻",msg["FromUserName"]) return u"你好,請(qǐng)?jiān)谌毫睦锩媪梦?微笑" @itchat.msg_register("Text", isGroupChat=True) def group_reply(msg): if msg["isAt"]: if u"播放量" in msg["Text"]: data = YoukuData() if not data.check: return "查詢(xún)失敗!" num = data.get_play_num() itchat.send(u"優(yōu)酷目前累計(jì)播放量為:%s" % num, msg["FromUserName"]) data = QQVideoData() if not data.check: return "查詢(xún)失敗!" num = data.get_play_num() return u"騰訊視頻目前累計(jì)播放量為:%s" % num elif u"訂閱" in msg["Text"]: data = YoukuData() if not data.check: return "查詢(xún)失敗!" num = data.get_sub_num() return "目前優(yōu)酷訂閱人數(shù)為:%s" % num elif "詳細(xì)播放" in msg["Text"]: itchat.send("查詢(xún)中...", msg["FromUserName"]) data = YoukuData() if not data.check: return "查詢(xún)失敗!" d = data.get_play_num_more() itchat.send(d, msg["FromUserName"]) data = QQVideoData() if not data.check: return "查詢(xún)失敗!" d = data.get_play_num_more() return d else: return get_response(msg["Text"][5:]) def run(): itchat.auto_login(True,enableCmdQR=2) itchat.run() >youku.py
import util
homepage = "http://i.youku.com/i/UMzg0ODQ..."
class YoukuData(object):
def __init__(self,url=homepage): self.ulr = url self.check = True self.soup = util.get_soup(url) if self.soup is None: self.check = False #獲得播放量 def get_play_num(self): vnum = self.soup.select(".vnum") if vnum is not None: x = vnum[0] n = x.get("title") num = n else: num = "**找不到播放量**" return num #獲得訂閱數(shù) def get_sub_num(self): snum = self.soup.select(".snum") if snum is not None: x = snum[0] n = x.get("title") num = n else: num = "**找不到訂閱數(shù)**" return num #詳細(xì)播放量 def get_play_num_more(self): titles = self.soup.select(".v-meta-title") nums = self.soup.select(".v-num") times = self.soup.select(".v-publishtime") s = " 優(yōu)酷視頻-最新%d個(gè)視頻: " % len(titles) for x in range(len(titles)): s += str(x+1) + "."+titles[x].string+" 播放量:"+nums[x].string+" " return s
這里程序?qū)崿F(xiàn)很簡(jiǎn)單,使用的是itchat提供的方法,具體可以參考itchat項(xiàng)目https://github.com/littlecode...
總結(jié)
以上就是快速實(shí)現(xiàn)微信機(jī)器人的思路,其實(shí)主要想表達(dá)的就是現(xiàn)在的云技術(shù)對(duì)于開(kāi)發(fā)者、對(duì)于編程初學(xué)者都是非常友好的,我們完全不必要投入過(guò)多精力在運(yùn)維和發(fā)布維護(hù)上,只需要專(zhuān)注代碼就可以。這也是云為我們生活帶來(lái)的另一個(gè)方面的改變吧。
文章出自騰訊云技術(shù)社區(qū)
(埋文字鏈 https://www.qcloud.com/commun...)
推薦大家關(guān)注騰訊云技術(shù)社區(qū)微信公眾號(hào):QcloudCommunity
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/38517.html
摘要:過(guò)程就是這么簡(jiǎn)單,騰訊云服務(wù)器作為基礎(chǔ),我們?nèi)滩挥檬謩?dòng)配置自己的服務(wù)器,多么輕松愜意。 推薦理由: 之前我對(duì)搭建微信機(jī)器人挺感興趣的,心血來(lái)潮就做了一個(gè)圖靈機(jī)器人,感覺(jué)自己長(zhǎng)見(jiàn)識(shí)了,今天無(wú)意間發(fā)現(xiàn)了這篇文章,才發(fā)現(xiàn)自己已經(jīng)out了,原來(lái)還有這么叼的微信機(jī)器人,可以在微信與我們聊天的機(jī)器人,它完全不同于圖靈機(jī)器人那種API完成一些看似很好玩的聊天功能,真正可以為我們所用;所以小編這次特...
閱讀 765·2019-08-29 16:32
閱讀 836·2019-08-29 12:31
閱讀 3208·2019-08-26 18:26
閱讀 3152·2019-08-26 12:20
閱讀 1727·2019-08-26 12:00
閱讀 3006·2019-08-26 10:58
閱讀 2811·2019-08-23 17:08
閱讀 2309·2019-08-23 16:32