什么是不和諧角色?
角色是由服務器管理員創建的組。該角色具有權限、層次結構和名稱。在這種情況下,重要的是玩家可以通過像這樣參考他們的角色來一次參考多個玩家(“ping”他們)@RoleName.
語境
我正在開發一個向用戶發布臨時角色的機器人。用戶使用角色,以便其他人可以 ping 他們。一個角色被賦予持續用戶的愿望。機器人正在撰寫Go.整個應用程式主要由 Mongo 事件的處理程式和用戶鍵入機器人的命令組成。
每次用戶通過向機器人輸入命令來扮演角色時,該用戶的 Discord id 都會存盤在 Mongo 資料庫中并帶有過期時間。一旦達到存盤在檔案中的時間,Mongo 就會洗掉該檔案(為此使用 TTL 索引)。然后通過處理 Mongo 事件,機器人通過剝奪用戶角色來處理洗掉。(另外,用戶可能會搶先洗掉他的角色。這種情況下,角色正在被洗掉,并且相應的記錄從資料庫中被洗掉。)
題
當用戶決定洗掉他的角色時,Mongo 洗掉事件處理程式會被觸發,盡管用戶的記錄已經在用戶命令處理程式中被洗掉。所以,我認為可以在 Mongo 的事件處理程式中專門控制機器人。我可以在 Mongo 事件中這樣做,而不是在對應于用戶給出的命令的處理程式中給予和洗掉角色。例如,要從用戶那里洗掉一個角色,我需要從命令處理程式內的資料庫中洗掉他的記錄。然后角色將在相應的 Mongo 事件處理程式中自動被帶走。
我的經驗并沒有讓我預見到這將如何影響未來的機器人開發,所以我向你征求意見。這是個好主意嗎?如果不是,那么在上述情況下處理 Mongo 處理程式被解雇的好方法是什么?
我寫作很爛,所以不要害羞要求澄清。
uj5u.com熱心網友回復:
如果資料庫是用戶擁有哪些角色的權限,那么您的機器人應用程式將充當橋梁,以使 Discord 與該權限保持同步。
假設您只處理資料庫事件的角色更新。在這種情況下,這意味著您的橋接應用程式必須正在運行并正確連接到這兩個服務,并且在每次到期時都不會發生任何錯誤。否則,狀態將不同步。為了正確起見,最好在設計時假設這三個服務中的任何一個或所有服務都可以隨時離線。
為了使您的體驗保持回應和一致,您應該在盡可能多的地方快速更新角色,以確保最終的一致性。這可能會導致冗余更新,因此請檢查是否已應用更新并在必要時跳過它。
以下是更新案例的示例:
- 在機器人應用程式啟動時:更新所有用戶
- 關于資料庫事件:更新用戶
- 根據用戶命令:更新用戶(可選,但如果資料庫事件延遲,可能會提供更快的用戶反饋)
- 在用戶加入服務器時:更新用戶
- 在定期/后臺任務中:更新所有用戶(可選,以防其他更新失敗或角色被外部源修改)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/438847.html
