Skip to content

經驗值系統

Allen95Wei edited this page Aug 28, 2024 · 9 revisions

本機器人目前提供經驗值系統,可用於計算使用者在伺服器中的活躍程度。
經驗值及等級皆分為2種:文字語音。而兩者的計算、升級公式也有所不同。

這份Wiki通常不會隨著程式而及時修改。如果你想要直接知道最新的經驗值系統是怎麼運作的,可以查看cogs/general.pyjson_assistant.py

經驗值

文字

文字的經驗值系統會在機器人得知有訊息被傳送時觸發。但是在經驗值被計算前,機器人還會進行一些條件檢查,來確認這條訊息是有效的

在程式中,「訊息被傳送」的事件叫做on_message

檢查

文字經驗檢查流程

檢查的步驟及通過條件(寫在括號中)如下:

  1. 排除指令頻道的訊息
  2. 確認經驗值計算功能是否開啟(是)
  3. 檢查與上則訊息的時間間隔(>=300秒)
  4. 確認訊息是否透過DM(私人訊息)傳送給機器人(否)
  5. 確認訊息傳送者是否為機器人(否)

上述檢查皆通過後,才會進到計算的環節。

計算

依據訊息類型的不同,計算方式也有所差異。

  • 純文字:依文字字元數計算。一則訊息最多15點經驗值。
  • 檔案:一份檔案算1點經驗值。

語音

語音的經驗值系統與文字不同,機器人會每10秒檢查每個語音頻道,並給予經驗值。一樣,機器人也會先檢查再計算。

在程式中,處理語音經驗值的函式為give_voice_exp

檢查

語音經驗檢查流程

檢查的步驟及通過條件(寫在括號中)如下:

  1. 排除音樂頻道
  2. 取得每個語音頻道的成員清單
  3. 檢查成員是否為機器人(否)
  4. 檢查成員是否靜音/拒聽(否)
  5. 確認經驗值計算功能是否開啟(是)
  6. 確認通過上述檢查的人數是否足夠(>1人)

上述檢查皆通過後,才會進到計算的環節。

計算

機器人會在每次檢查流程的最後,給予符合資格的成員1 + (通過檢查人數 ÷ 10) 點經驗值。
另外,檢查流程只會10秒執行一次

Clone this wiki locally