//請注意,這是一篇自言自語的筆記,不是科普文。
目前在做一個項目,通過微信的方式接收日程信息以及發送提醒的信息。
這就需要能夠在服務端登陸微信,並且能夠接收信息,以及能定時發送提醒信息的功能了。
分一下,就是
1 服務端登陸微信
2 能夠接收別人發送來的信息,也即信息可以被服務端取到。
3 能通過微信發送提醒。

在github上轉了一圈,盯上了一個叫wechaty的開源項目,github.com/wechaty/wechaty,經過一番研究,發現滿足了登陸,接收要求,發送的要求,也即箭頭所示。
接下來怎么放到我的項目中,可以很優雅的使用呢(egg.js)?
----------待研究
在github上 發現了一個相關項目:
https://github.com/Guing/Wechat-Admin-API
可以研究下在egg下怎么用。
運行不起來,需要端口6379,難道是因為用到了redis的緣故?
經過研究這個項目的router.js,發現好像是通過http接口的形式觸發的,那現在我想要啟動egg.js的項目時就要啟動這個進程~
解決辦法,在app.js這里寫。
現在繼續了解下,wechaty這個插件怎么用,要了解插件怎么用,肯定是要上npm官網去了解。https://www.npmjs.com/
發現:

不是哦 是可以直接用哦,可能是第一次使用,要用node.js下載什么配置文件?所以現在登錄了。
現在要不要拆分成兩個啟動項目?也即同一個項目,但是不同啟動,這樣子可以互不干擾?
又在github上逛了一圈,發現了一個寶藏https://github.com/gengchen528/wechat-assistant
看到里面的功能,恰好就有

很需要這個定時提醒功能,定時功能底層應該是schdule這個庫實現的。
他的另一個庫我發現就是合在一起寫的,分開寫的目的是什么呢?合起來的目的又是什么呢?
https://github.com/gengchen528/wechatBot
現在有個疑惑就是,假設拆分成兩個項目,能不能公用哪些service層的代碼?
終於明白了分開兩個項目的目的,因為wechat是前端部分,koa是后端部分~~~

這個微信項目不要影響到本來的網站項目,要想辦法共享資源,(高內聚低耦合?)反正就是不會造成一方完蛋了,另一方就運行不了的局面,而要想共用資源,它們的技術(?)應該是要一致的,編程風格應該要一致這就是我為什么執着要用egg.js來寫的原因。
工具函數應該放在middleWare中。看了一下egg.js文檔,middleWare是用來攔截http請求,處理消息的。那是否應該放在extend文件夾下?又瀏覽了一下,發現extend文件夾下只能放固定的幾個文件,而且是自動合並到相關的變量(字段?)上去,不用顯性require的。
感覺對egg不是很熟悉,算了,看看有沒有前人栽樹,github上轉了一圈,發現還沒有前人,尷尬。
發現egg.js里面有定時任務的配置,不需要另外配置schdule庫,猜想應該是內置了。
疑問,怎么把這個項目融進去?
現在遇到個困難,class好像每一次調用都會造成this.data數值改變(js基礎都忘了,尷尬)
那就只有弄一個 全局變量存起來先。
發現在extend文件夾下好像可以export一個變量,全局都可以調用。
現在已經把所有代碼修改成class的形式了,現在有一個問題,就是bot.on('message',func)的時候,func里面this的綁定的問題,只要用上了()=>func()的時候,func里面執行的this就不再指向wechaty了,這個很糟糕,換成function(msg){return func(msg,ctx)}也是不行,也就是說現在要解決this 的指向問題?如何在事件監聽定義這里不改變this的指向?
解決辦法就是把wechaty實例傳過去。(hhhh)
現在怎么把兩個庫合在一起?一個是用戶庫 一個是日程庫 一個是wechat
現在就是要把wechat用戶的唯一id作為憑證?使用pad的方式登錄,詳情看
https://github.com/wechaty/wechaty/issues/1644
https://github.com/wechaty/wechaty/issues/1307
https://github.com/wechaty/wechaty/issues/1804
拆分成兩個egg項目,這樣子就不會兩個都崩了。
有一個疑問,wechaty是怎么做到准確無誤地把信息發給正在聊天的人的?
就是通過什么記錄狀態?socket?
現在呢,通過alias查找聯系人,並且
現在發現了一個問題,就是下面的問題:
疑問,怎么知道后台啟動微信服務成功了?就是等待異步動作完成之后再響應?
只有異步才能解決異步,是時候看一下es6 promise的知識了。
-----------------還是先了解下wechaty這個模塊有哪些api?是怎么做到登陸的?
