如何用C#寫一個疫情QQ機器人

武漢疫情牽動著全國人民的心,各大網站紛紛製作了實時疫情播報網站,來讓大家能及時地瞭解到疫情的最新進展。

騰訊:https://news.qq.com/zt2020/page/feiyan.htm

丁香園:https://ncov.dxy.cn/ncovh5/view/pneumonia

然而對一些老年人或者其他群體來說,要讓他們上網查看疫情仍然比較困難或者不方便。本文描述了怎麼樣從零開始製作一個能實時播報疫情的QQ機器人,這是最後的效果圖:


如何用C#寫一個疫情QQ機器人

用以簡化疫情信息的獲取途徑,傳播正能量的同時學習.Net的開發技巧。

本文的源代碼可在碼雲上獲取:https://gitee.com/akitosilver/CoronavirusQQRobot



1.前置開發環境:

本文使用Visual Studio 2019社區版開發,.Net SDK為3.1

QQ機器人採用酷Q Air:https://cqp.cc/

QQ機器人接口採用Newbe.Mahua:https://www.newbe.pro/Newbe.Mahua/Begin-First-Plugin-With-Mahua-In-v1.9/



2.原理講解:

本文的框架如圖所示。

如何用C#寫一個疫情QQ機器人

要發送疫情,首先我們要先獲得數據:

源碼分別抓取了騰訊和丁香園的數據,這裡我們以騰訊為例:

首先用Chrome打開騰訊實時疫情播報的首頁,按下F12,到網絡標籤,隨便在Search裡搜索一個數據相關的數字,如下圖,即可獲得騰訊播報的數據接口:


如何用C#寫一個疫情QQ機器人


如何用C#寫一個疫情QQ機器人

數據為標準的Json,粘貼到Json格式化工具裡分析:


如何用C#寫一個疫情QQ機器人

獲得其Json的結構,大概是:


如何用C#寫一個疫情QQ機器人

獲得了JSON的結構後,我們把這個JSON接口轉化為我們C#的類


如何用C#寫一個疫情QQ機器人

HTTP下載JSON之後反序列化,即實現了數據的抓取:


如何用C#寫一個疫情QQ機器人

利用Timer類,我們可以讓我們的程序定時(幾分鐘)抓取一次這個數據,這裡不再贅述。



2.發送數據:

發送數據部分請詳細參考源代碼與Newbe.Mahua文檔:https://www.newbe.pro/Newbe.Mahua/Begin-First-Plugin-With-Mahua-In-v1.9/

簡單來說我們之後只需要遍歷這個JSON數據對應的類,找到地區數據發送即可。


分享到:


相關文章: