by:陳澤榮 (timothychenpc@gmail.com)
日期:0123
主要改動:
debug:
- 修改之前的json-formal-3(就是可以將json字串格式化輸出成有縮排有換行的版本的東東)的接口,就是優先以字串的輸入為主,沒有的話再去找檔案的json(主要是因為linebot的event本身本身回傳的事物件,這樣的話就可以把
event寫入檔案→讓函式去讀檔案→
重複寫入和讀取的過程省略)
然後有一說一,這個函式是上次學長出的題目,但是真的好用(應該之後會考慮把它放到系統的import路徑之類的吧)
- 開了一個debug函式:
這個東西主要可以幫我很好的監測每一個event進來的資料,然後做好分類,顯示到終端機(方便debug)
設定檔的變數:
- 原本的數據庫模型如下(簡單版)
然後像是
settings
的部分就是需要一直用到的,那我這邊是想再flask
伺服器啟動的時候先載入一份(有點類似緩存?但就可以讓之後需要settings的資料的時候可以不用每一次都像數據庫進行請求),之後只要有更動就重新加載一次,以確保不會有因為沒有同步導致的問題,但是因為怕變數太多(原本是使用settings
和users
兩個變數),所以本地就是只用一個settings
的dict
來儲存所有的設定資料,也比較不容易會亂掉。但是這種情況就會需要兩個關鍵的函式load_settings()
和update_settings()
將本地設定更新到雲端(update_settings()
):
pymongo
中在使用.update
方法的時候需要注意的是,必須有兩個參數(一個是搜索依據
,一個是新的資料
),但是新的資料的部分必須是{”$set”:data}
這樣的結構Linebot的指令化:
自從上次使用ngrok開始,整個就爽很多了(速度方面),然後今天著重在玩的還是reply_message的功能,只不過這次是以指令的形式去做的,針對不同的指令回應或者做不同的事情
目前可以使用的指令如下:
!bot help
獲取幫助(指令列表)
!bot bind
綁定當前id(如果是群組就是group_id
, 如果是個人就是user_id
)
!bot unbind
取消綁定
!bot now bounded
回傳目前綁定的用戶
!bot reload settings
同步設定(雲端→本地
)
然後指令的辨識,目前只是簡單的採用
re.match
去做字串的匹配(相信應該還有更好的方法)然後這次在設計的時候也有考慮到:
- 重複綁定
- 重複取消綁定
- 未綁定就直接取消綁定
等狀況的處理
一點小小的心得:
這次的專案算是我們的第一個商業的案子,而我也像一點點靠近外面的公司和團隊在開發的流程和想法,在一次次的開發的過程中,摸索出屬於我們的一個守則,也盡量維持好的代碼品質(自認為)。我很喜歡做專案還有一個原因——當你有一個壓力,有一個明確的目標,就可以學習的更快,而且也可以學得更廣(可以學到平常不會去學到的東西),更有效率(像是linebot在這個專案之前我也是完全不熟,但是最近已經漸漸的開始有feel了,應該過段時間會整理我個人學習linebot的一個小筆記吧)。而在整個過程中一定會遇到很多的困難(像是de不完的bug,寫得跟天書一樣的Documentation),但是也因為有這些莫名其妙的問題,才需要不斷地轉換思考的方式,不斷地想找到更好的解決方法,然後最終達成目標。還有就是我其實還蠻害怕有一天忘掉曾經做過的事情,然後加上上次去蹭了一個教師研習,受到老師的啟發“東西要紀錄下來才會是你的!”,所以之後我應該都是持續產出類似這樣的開發日誌
ps:這次的的寫code我有錄,但是不知道會不會有時間處理,哈哈😄