# eeDice - DC 擲骰機器人 專案開發:Elantris 近期更新:2025-05-25 客服群組:https://discord.gg/Ctwz4BB 說明文件:https://hackmd.io/@eelayntris/eedice 捐款贊助:[歐付寶贊助連結](https://p.opay.tw/HJBjG)、[歐付寶贊助留言](https://payment.opay.tw/Broadcaster/Donate/1BEFCDA40776A351240A352244F8A10D) 邀請連結:[`eeDice#8838`](https://discord.com/api/oauth2/authorize?client_id=898765970267570186&permissions=274877926464&scope=bot) > 幸運女神賜我神力! [name=eeDice][color=#5c7cfa] ![eeDice profile](https://i.imgur.com/v5Yuy36.png) ###### tags: `discord` `trpg` `dice` [TOC] --- ## 功能特色 遊玩 TRPG 時很常透過骰子掌控遊戲中的隨機性以增添樂趣,這隻機器人可以幫忙丟骰子並且計算這些算式。支援各種骰子語法,不管你是 GM、DM、KP 都能輕鬆使用,減少計算負擔讓玩家都能更沉浸在劇情當中。 ## 指令說明 - 斜線指令 - 以下指令語法中後面有冒號的單字是「參數」 - 記得開啟 Discord 使用者設定中的「文字&圖片」>「在打字時預覽表情符號、提及以及 markdown 語法」 - 可以複製指令語法後貼到 DC 訊息輸入框,再選擇對應的機器人指令 - 文字訊息 :warning: - 目前機器人沒有讀取訊息內容的權限,無法使用文字訊息觸發機器人指令 ### 擲骰運算 /roll 計算一個四則運算的算式,並將其中的骰子語法替換成擲骰結果。 ![command roll](https://i.imgur.com/501ileY.png) **指令語法:** - `/roll expression: times:` - `expression`:算式 - `times`:計算次數 **使用範例:** ``` 丟一顆六面骰並且 +2: /roll expression:d6 + 2 經典 DnD 創角擲骰決定六個屬性值,「重複六次」的「丟四顆六面骰後移除一顆最低點數並加總」: /roll expression:4d6d1 times:6 假設某個角色的攻擊技能是個複雜的算式: /roll expression: (2d6 + 2) * 2 + d4 假設某個角色有傷害抗性,傷害減半但還是要向上取整: /roll expression:Math.ceil(3d6 / 2) ``` **備註說明:** - 骰子語法 - 完整語法請參考 [Dice Expressions](https://wiki.rptools.info/index.php/Dice_Expressions),目前已實作完 General Dice Expressions 的部分 - 基礎骰子語法 `XdY`:`X` 顆 `Y` 面骰,其中 `X` 省略時預設為 `1` - 支援 js 內建 [Math 函數](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math) - 常用的無條件捨去 `Math.floor()`、無條件進位 `Math.ceil()` - 各種限制 - 計算次數最多 10 次 - 算式長度最多 50 個字元 - 一個算式內最多 10 個骰子語法 - 骰子最大面數為 d100、同一顆骰子最多擲 20 次(`20d100`) - 這個指令還滿常出問題的,請多多回報給開發者 <(\_ \_)> ### 擲骰紀錄 /trace 查看一則指令結果的詳細資訊。當有人要求驗骰的時候可以給他看每個指令產生的擲骰紀錄、指令發生錯誤時可以查看錯誤訊息。 ![command trace](https://i.imgur.com/iZkQjpv.png) **指令語法:** - `/trace target:` - `target`:指定訊息的連結或 ID **使用範例:** ``` 複製機器人回應的訊息連結: /trace target:https://discord.com/channels/225584441026805760/225660570857111552/908572876058271784 電腦版按住 shift 後選擇複製 ID: /trace target:225660570857111552-908572876058271784 開啟開發者模式後複製訊息 ID: /trace target:908572876058271784 ``` **備註說明:** - 指定訊息一直想不到更好的做法,總之先放了這幾種方式 - 請選擇「機器人回應的訊息」,而非使用者輸入的指令訊息 ### 隨機抽選 /pick 隨機抽選訊息內容中的其中一個選項。 **指令語法:** - `/pick choices` - `choices` 各個選項,以空白分隔 **使用範例:** ``` /pick choices:紅色 橘色 黃色 綠色 藍色 紫色 /pick choices:可以色色 不可以色色 ``` **備註說明:** - 選項至少要有 2 個 - 可以使用 Trace 指令查看總共有幾個選項、選了第幾個選項 ### 隨機順序 /shuffle 將一連串項目以隨機順序列出。 **指令語法:** - `/shuffle items:` - `items`:各個項目,以空白分隔 **使用範例:** ``` /shuffle items:漢堡 薯條 可樂 ``` **備註說明:** - 項目至少要有 2 個 - 可以使用 Trace 指令查看各個項目洗牌前後的順序 ### 今日運勢 /luck 一天一次,試試手氣。 **指令語法** - `/luck pick pool:` 抽選今日運勢 - `pool`:運勢池 - 7 段運勢:「大吉、吉、中吉、小吉、末吉、凶、大凶」機率相同 - 12 段運勢:「大吉、吉、中吉、小吉、半吉、末吉、末小吉、凶、小凶、半凶、末凶、大凶」機率相同 - 淺草籤運勢:「大吉(30%)、吉(2%)、半吉(6%)、小吉(5%)、末吉(5%)、末小吉(35%)、凶(17%)」 - `/luck guild` 查看伺服器今日總體運勢 - `/luck guild date:` 查看伺服器指定日期的總體運勢 - `date`:日期格式為 `YYYY-MM-DD` - `/luck reset` 重置伺服器今日所有抽選運勢 - `/luck reset date:` 重置伺服器指定日期所有抽選運勢 - `date`:日期格式為 `YYYY-MM-DD` **使用範例:** ``` 抽選 7 段運勢 /luck pick pool:default 抽選 12 段運勢 /luck pick pool:twelve 抽選淺草籤運勢 /luck pick pool:asakusa 查看伺服器今日總體運勢 /luck guild 重置伺服器今日所有抽選運勢 /luck reset ``` **備註說明:** - 每人每天只能抽選一次 - 只有伺服器管理員可以重置抽選紀錄,清除資料後成員可再次使用指令抽選 ### (BETA) 點數遊戲 /game 讓伺服器成員可以透過社群參與度換取遊戲點數,並在管理員建立的遊戲中下注遊玩。 :::warning BETA 測試中 ::: **指令語法** - `/game config key: min: max:` 設定遊戲參數 - `key`:參數名稱 - 文字訊息獎勵:成員發送文字訊息時可獲得的隨機點數 - 接聽語音獎勵:成員接聽語音頻道時每一分鐘可以獲得的隨機點數 - `min`:最小值,1~100,超過範圍代表刪除 - `max`:最大值,1~100,超過範圍代表刪除 - `/game coins member: amount:` 調整成員的點數數量 - `member`:指定成員 - `amount`:調整數量,-100000 ~ 100000 - `/game rank` 查看伺服器成員點數排行榜 - `/game create name: bet:` 建立遊戲,必須在一般文字頻道裡 - `name`:遊戲名稱 - 硬幣猜正反 - 骰子猜單雙 - 拉霸機 - 幸運輪盤 - 猜拳 - `bet`:下注點數數量 **使用範例** ``` 設定文字訊息獎勵為 15 到 25 /game config key:MessageRewards min:15 max:25 設定接聽語音獎勵為 5 到 10 /game config key:VoiceRewards min:5 max:10 發放 1000 點給成員A /game coins member:@成員A amount:1000 查看伺服器成員點數排行榜 /game rank 建立「硬幣猜正反」遊戲,單次遊玩下注點數為 10 點 /game create name:coinFlipping bet:10 ``` **備註說明** - 所有 `/game` 指令必須擁有伺服器管理員的權限才能使用 - 使用 `/game config` 設定參數後才能讓成員透過參與社群來獲得遊戲點數 - 發放的獎勵點數會是介於設定的最小值到最大值之間的隨機點數 - 設定數值 1~100,超過範圍代表移除這項設定 - 文字訊息獎勵:在任何文字頻道內發送文字訊息即可獲得獎勵點數,需間隔十秒以上才能再次獲得點數 - 接聽語音獎勵:接聽語音頻道時每分鐘可獲得一次獎勵點數,會在離開語音頻道或遊玩時根據時間結算次數 - 使用 `/game create` eeDice 會建立一個討論串,玩家點選按鈕後 eeDice 會將結果記錄在討論串內,而按鈕下方出現「此交互失敗」為正常現象,可以重複點選按鈕繼續遊玩