昨天貼文發出去了,裡面只有題目和選項。接下來,大家會開始在底下留言。
有人會好好地打一個「A」,有人打小寫的「a」,有人用全形的「A」,有人打「選A」,也有人會打「A 跟 C 好難選」或者只丟一個貼圖。今天要回答的,就是這些留言裡,哪些算是「選了」,哪些不算。
跟 Day 20 聽懂發布時間一樣,我沒有讓 Macaron 去理解所有的人話。以 A 這一組來說,它只認得五種寫法:大寫的 A、小寫的 a、全形的 A、「A組」,還有「選A」,B、C、D 也是同樣的規則。
除此之外的留言都不算選擇。一次選了兩組的、在聊天裡順便提到 A 的、只有貼圖或空白的、很長一段話的,都會被跳過。還有一種,是選了這篇根本沒有的選項,例如這篇只有 A、B 兩組,有人留言「C」,也不算。
選項存不存在,不是看留言怎麼說,而是看這篇貼文當初凍結的那張照片,這篇到底有幾組。
這個規則很保守,我自己也知道。但它的好處是 Macaron 不用猜,之後如果大家真的很常用別種寫法,再明確地加進去、補上測試就好。
每一則留言,其實有兩個時間:留言被發出的時間,和 Macaron 處理到它的時間。這兩個時間都不能晚於留言截止,而且留言發出的時間,也不能看起來比處理的時間還晚。
之所以要看兩個,是因為有兩種情況都不應該算數:一種是留言真的太晚才出現,另一種是留言雖然準時,但 Macaron 很晚才處理到它。
接下來是今天最重要的規則:同一個人在同一篇占卜裡,第一個有效的選擇會被鎖定。之後他再留言選同一組,Macaron 會知道這是重複的;如果改選另一組,Macaron 會知道這跟之前的衝突,但不會改掉原本的選擇。不同的人、不同的占卜,各自獨立。
如果兩則留言幾乎同時抵達,也只會有一則成為第一個。
(需作者補充:「第一個有效選擇就鎖定、之後不能改選」這條規則,是你想要的使用者體驗嗎?你之前手動做大眾占卜時,有沒有人中途想換組?)
這一天也修了一個問題。選擇被鎖定之後要存起來,儲存的地方會回報結果:新存進去了、重複、或衝突。原本 Macaron 直接相信這個回報,但如果儲存的地方出了錯,明明是第一次存進去卻回報「重複」,Macaron 就會跟著說錯。
所以現在每一次鎖定,都會留下一筆綁定這則留言的紀錄,Macaron 再自己讀回來,確認留言、存下來的選擇、儲存的回報和這筆紀錄四樣都對得上,才相信結果,對不上就當成讀取有問題,不會把故障說成成功或重複。
另外,判斷一則留言是不是「選A」,Macaron 需要看留言的原文和發言的人,但這兩樣只在判斷的那一刻用,對外的結果裡,只會留下選了哪一組、是哪一篇,以及處理的時間。
今天 Macaron 還沒有連上 Discord 讀留言,測試裡的使用者、貼文和留言,全部都是假的。
選擇鎖定了,下一步就是這條路的最後一段:把那一組的完整答案,送進那個人的私訊裡。