goodjoblife / check-in-bot Goto Github PK
View Code? Open in Web Editor NEW功德無量打卡機 - 一款工時紀錄、檢舉蒐證聊天機器人
功德無量打卡機 - 一款工時紀錄、檢舉蒐證聊天機器人
整個 bot 儲存時間的方式要統一,並寫成文件。
目前 db 裡面,只要不是存成 ISODate object 的年、月、日、時、分、秒都會轉換成 UTC+8 時區。
也許可以考慮使用:
https://momentjs.com/
�發現訊息視窗看不到使用者的對話,很難知道有沒有出錯。要做 logging。
目前 messenger bot 點開的網頁,都是用一把 30字元的 key 去讓使用者 access 自己的資料。
雖然只要使用者不要連結亂給別人,要有資安危險的情況應該是滿低的,(大小寫英文+數字 62^30要暴力破應該是沒那麼容易)。
但比較好的做法還是實作 messenger login 的功能。
現在都是人工,感覺可以用 CI 多加指令做自動的
不過就是要先裝好 bottender 這個套件
code: https://github.com/goodjoblife/check-in-bot/blob/master/utils.js#L23
當透過 messenger 送圖片時,可以一次送多張圖進來,
而 code 裏只會處理第一張圖,不確定這行為是不是故意的,或是 bug
例如:
負責設定打卡時間的部分,就是一支檔案 ./handlers/set-reminder.js
負責打上下班的部分,又是另一支檔案 ./handlers/check-in.js
詳細怎麼做還沒想好,但如果可以做成這樣,會較為方便管理。
目前會遇到某些 collection 欄位要修改或新增欄位的狀況,或者是某些欄位要建 index。
會需要有 migration 的基礎建設。基礎建設指的是:
目前想法是參照:
https://github.com/goodjoblife/WorkTimeSurvey-backend/tree/master/database
建立 db migration 的基礎建設。
這裡發現 context._session._id
是專指 mongodb 上面的 primary key (_id
)
換句話說,
2. 當使用者第一次與 bot 說話時,context._session._id
會是 undefined
,也就是說,在 session 被存進 DB 前,_id 是沒有任何意義的
主要是針對 點1,影響到 userId 怎麼來的問題
BTW 這邊有點不知道為什麼要使用 context.session._id 而不使用 context.session._id
https://github.com/goodjoblife/check-in-bot/blob/master/db.js#L53
ref: https://docs.mongodb.com/manual/reference/operator/update/inc/#up._S_inc
這樣不用再 normalize
當用 messenger 連續送出兩張圖時(發兩次對話),會導致 context.state
中,只有一張圖,且打卡完畢,仍然只有一張圖
不做了
,確保 state 被清空 (可以檢查 1 的 api 回傳或用 console.log 看)"_state": {
"isWorking":false,
"startTime":null,
"endTime":null,
"location":null,
"locationTimestamp":null,
"imgUrls":[]
}
做功德
,檢查 state 應該是正常的"_state": {
"isWorking":true,
"startTime":"2018-01-06T05:21:58.709Z",
"endTime":null,
"location":null,
"locationTimestamp":null,
"imgUrls":[]
}
"_state": {
"isWorking":true,
"startTime":"2018-01-06T05:21:58.709Z",
"endTime":null,
"location":null,
"locationTimestamp":null,
"imgUrls":[
"https://scontent-ort2-1.xx.fbcdn.net/v/t39.1997-6/p100x100/11057103_789355331153381_925532673_n.png?_nc_ad=z-m&_nc_cid=0&oh=c96dd949be1f29576e28f0420be6b66a&oe=5AF1D9C5"
]
}
發現 state 沒有忠實儲存兩張圖片,經過多次測試,不一定會存到最後一張
這不是一個嚴重的問題,畢竟在 2~3 秒送多張圖片實在少見
在 https://github.com/goodjoblife/check-in-bot/blob/master/index.js#L241 這裏
應該把拿到的圖片存進資料庫,而不是 state 中
目前是拿使用者數當分母,顯然不對。
要改成:
上班人數: count (state.isWorking = true )
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.