[專案開發日常—3]

Tags
linebot
飲水機
Last edited
Jan 22, 2022 02:51 AM
by:陳澤榮 (timothychenpc@gmail.com)
日期:0123
 

主要改動:

debug:

  • 修改之前的json-formal-3(就是可以將json字串格式化輸出成有縮排有換行的版本的東東)的接口,就是優先以字串的輸入為主,沒有的話再去找檔案的json(主要是因為linebot的event本身本身回傳的事物件,這樣的話就可以把event寫入檔案→讓函式去讀檔案→重複寫入和讀取的過程省略)
    • json-formal-3的一部分
      json-formal-3的一部分
      然後有一說一,這個函式是上次學長出的題目,但是真的好用(應該之後會考慮把它放到系統的import路徑之類的吧)

  • 開了一個debug函式:
    • 這個東西主要可以幫我很好的監測每一個event進來的資料,然後做好分類,顯示到終端機(方便debug)
      notion image

設定檔的變數:

  • 原本的數據庫模型如下(簡單版)
    • notion image
      然後像是settings的部分就是需要一直用到的,那我這邊是想再flask伺服器啟動的時候先載入一份(有點類似緩存?但就可以讓之後需要settings的資料的時候可以不用每一次都像數據庫進行請求),之後只要有更動就重新加載一次,以確保不會有因為沒有同步導致的問題,但是因為怕變數太多(原本是使用settingsusers兩個變數),所以本地就是只用一個settingsdict來儲存所有的設定資料,也比較不容易會亂掉。但是這種情況就會需要兩個關鍵的函式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我有錄,但是不知道會不會有時間處理,哈哈😄