跳到內容

語言與時間

roundtable.config.ts 裡有兩個設定,決定 bot 用什麼語言說話,以及它說的時間指的是哪個時區:

export default {
// ...
locale: "zh-TW",
timeZone: "Europe/Berlin",
} satisfies RoundtableConfig;
鍵 值 預設值
locale "en" 或 "zh-TW" "en"
timeZone IANA 時區名稱,例如 Europe/Berlin 或 Asia/Taipei "UTC"

主機只在啟動時套用這兩個設定一次,之後整個行程都用它們。 改了之後,要重啟 bot。

locale 選擇 bot 在 Discord 裡顯示文字用的訊息目錄(message catalog)。 兩份目錄的鍵完全相同。 它涵蓋的內容包括:

  • 核准與提問的卡片,連同按鈕和頁尾。
  • 停止按鈕,以及長時間那一輪的提示。
  • /roundtable 指令的說明、對非 owner 的拒絕訊息,以及排程面板。
  • 會自己更新的狀態訊息,以及對話貼出的通知,例如回覆失敗或這一輪被停止。
  • 工具說明裡時區的稱呼方式:英文目錄用 IANA 名稱(Europe/Berlin),zh-TW 目錄用地名(Berlin)。

en 和 zh-TW 以外的值會報錯:

config locale: expected a locale, en or zh-TW, got "<value>". Fix the value in roundtable.config.ts.

locale 不會改動的有:

  • Discord 管理工具的 audit log 原因和拒絕訊息,兩種 locale 下都是英文。
  • 核心加進 agent 提示詞的文字是英文。
  • 你的提示詞、你的 agent,以及你的外掛的文字,用什麼語言寫都隨你。

timeZone 是 bot 處理任何帶有時鐘時間的東西時使用的時區。

  • 排程的單次時間("YYYY-MM-DD HH:MM")和每天重複的時間("HH:MM")都以這個時區為準,排程工具的說明裡也會這樣註明。
  • 排程訊息和清單裡的時間戳記,以及 channel_read 的輸出,都用這個時區。
  • 放進每位 speaker 記憶區塊的「即將到來的事件」,其中的「今天」是這個時區的日期。

名稱是在 bot 啟動時檢查,不是在設定檢查時。 roundtable doctor 接受任何非空字串。 執行環境不認得的時區,會在檢查都通過之後讓 roundtable start 停下來:

Invalid time zone: <value>

排程實際怎麼用,見排程與背景工作。