-
Notifications
You must be signed in to change notification settings - Fork 0
經驗值系統
Allen95Wei edited this page Aug 28, 2024
·
9 revisions
本機器人目前提供經驗值系統,可用於計算使用者在伺服器中的活躍程度。
經驗值及等級皆分為2種:文字及語音。而兩者的計算、升級公式也有所不同。
這份Wiki通常不會隨著程式而及時修改。如果你想要直接知道最新的經驗值系統是怎麼運作的,可以查看cogs/general.py及json_assistant.py!
文字的經驗值系統會在機器人得知有訊息被傳送時觸發。但是在經驗值被計算前,機器人還會進行一些條件檢查,來確認這條訊息是有效的。
在程式中,「訊息被傳送」的事件叫做
on_message
。
檢查的步驟及通過條件(寫在括號中)
如下:
- 排除指令頻道的訊息
- 確認經驗值計算功能是否開啟
(是)
- 檢查與上則訊息的時間間隔
(>=300秒)
- 確認訊息是否透過DM(私人訊息)傳送給機器人
(否)
- 確認訊息傳送者是否為機器人
(否)
上述檢查皆通過後,才會進到計算的環節。
依據訊息類型的不同,計算方式也有所差異。
- 純文字:依文字字元數計算。一則訊息最多15點經驗值。
- 檔案:一份檔案算1點經驗值。
語音的經驗值系統與文字不同,機器人會每10秒檢查每個語音頻道,並給予經驗值。一樣,機器人也會先檢查再計算。
在程式中,處理語音經驗值的函式為
give_voice_exp
。
檢查的步驟及通過條件(寫在括號中)
如下:
- 排除音樂頻道
- 取得每個語音頻道的成員清單
- 檢查成員是否為機器人
(否)
- 檢查成員是否靜音/拒聽
(否)
- 確認經驗值計算功能是否開啟
(是)
- 確認通過上述檢查的人數是否足夠
(>1人)
上述檢查皆通過後,才會進到計算的環節。
機器人會在每次檢查流程的最後,給予符合資格的成員1 + (通過檢查人數 ÷ 10) 點經驗值。
另外,檢查流程只會10秒執行一次。
Wiki製作者:Allen Wei
本Wiki中所述功能,實際皆依程式碼為準。