# 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]

###### tags: `discord` `trpg` `dice`
[TOC]
---
## 功能特色
遊玩 TRPG 時很常透過骰子掌控遊戲中的隨機性以增添樂趣,這隻機器人可以幫忙丟骰子並且計算這些算式。支援各種骰子語法,不管你是 GM、DM、KP 都能輕鬆使用,減少計算負擔讓玩家都能更沉浸在劇情當中。
## 指令說明
- 斜線指令
- 以下指令語法中後面有冒號的單字是「參數」
- 記得開啟 Discord 使用者設定中的「文字&圖片」>「在打字時預覽表情符號、提及以及 markdown 語法」
- 可以複製指令語法後貼到 DC 訊息輸入框,再選擇對應的機器人指令
- 文字訊息 :warning:
- 目前機器人沒有讀取訊息內容的權限,無法使用文字訊息觸發機器人指令
### 擲骰運算 /roll
計算一個四則運算的算式,並將其中的骰子語法替換成擲骰結果。

**指令語法:**
- `/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
查看一則指令結果的詳細資訊。當有人要求驗骰的時候可以給他看每個指令產生的擲骰紀錄、指令發生錯誤時可以查看錯誤訊息。

**指令語法:**
- `/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 會將結果記錄在討論串內,而按鈕下方出現「此交互失敗」為正常現象,可以重複點選按鈕繼續遊玩