深色模式
自訂指令
前往後台的「指令管理 → 自訂指令」,新增指令名稱與回覆內容,再設定使用權限、冷卻時間及直播狀態限制。
例如回覆內容可以寫成:
text
哈囉 {user},你輸入的內容是:{args}自訂指令目前支援 {command}、{args}、{user}、{user_id} 與 {login}。完整定義請查看系統變數參考。
需要依條件切換文字、計算數字或隨機選擇內容時,可以使用安全版 $(eval ...)。完整語法與限制請查看進階運算式。
在聊天室管理指令
實況主、mod 與主要 mod 可以直接在聊天室管理自訂指令。新增、修改、刪除各有獨立的權限設定,預設 mod,也可限制為主要 mod 或實況主。一般觀眾、VIP 與訂閱者無法新增、修改或刪除,這項管理權限不受 !commands 的查詢權限設定影響。
| 操作 | 完整用法 | 預設內建縮寫 | 範例 |
|---|---|---|---|
| 新增 | !commands add !指令 回覆內容 | !addcom !指令 回覆內容 | !addcom !晚安 晚安,祝你好夢! |
| 修改 | !commands edit !指令 新回覆內容 | !editcom !指令 新回覆內容 | !editcom !晚安 晚安,我們下次見! |
| 刪除 | !commands delete !指令 | !delcom !指令 | !delcom !晚安 |
預設內建縮寫可直接使用,不需要新增自訂指令;權限與參數處理和對應完整語法相同。設定位置與詳細說明見內建操作縮寫。
直接輸入 !commands 仍會取得公開指令清單。管理操作完成後立即生效,也會反映在後台「自訂指令」頁;已開啟的頁面請重新載入查看。
管理操作遵守 !commands 的總開關,以及該操作自己的啟用狀態、訊息發送模式與冷卻時間;不同操作的設定互不影響。同一操作的完整指令與縮寫共用冷卻,停用、發送時機不符或冷卻中時不會執行。
新增沿用後台預設設定。修改只更新回覆內容,保留啟用狀態、使用權限、縮寫、發送模式與冷卻時間。修改與刪除請使用自訂指令本名;無法操作內建指令。指令名稱最多 20 字、回覆模板最多 4,096 字,每個頻道最多 50 個自訂指令。名稱不可與既有指令或縮寫重複。
回覆可使用本系統的變數與安全運算式。這裡採用 Nightbot 的基本管理語法;不支援 Nightbot 的 -ul、-cd、-a 參數,進階設定請到後台調整。
取得外部 API 文字(URL Fetch)
自訂指令與定時發話共用相同的文字模板處理;兩者都可填入固定的公開 HTTPS 網址:
text
$(urlfetch https://api.example.com/status)以上網址僅供示意,請替換成你要使用的公開文字 API 網址。
呼叫指令或定時發話到期時,機器人會取得 API 的純文字回應並送到聊天室;前後可加固定文字或一般回覆變數。 每個回覆最多一個 URL Fetch,可與 $(eval ...) 或 $(let ...) 混用。不支援 JSON、動態網址或 $(querystring ...)。
需要處理取得的文字時,在運算式內使用 urlfetch("固定 HTTPS 網址"),網址須加引號。例如 API 回傳 Rank: 9,250 RP,以下會回覆 9,250 RP:
text
$(let text = urlfetch("https://api.example.com/status"))$(eval after(text, "Rank: "))也可直接寫 $(eval upper(urlfetch("https://api.example.com/status"))),將取得的文字轉為大寫。使用 let 保存後可以重複讀取,不會再次連線。原有 $(urlfetch https://...) 寫法仍可使用。
每則回覆中的兩種寫法合計只能出現一次取用;網址只能是固定字串,不能用 {args}、區域變數或字串串接產生。系統先取得文字,再計算運算式,因此即使 urlfetch() 位於未選中的條件分支仍會連線;取得失敗或運算失敗時整則回覆不發送。
網址只允許 HTTPS 443,不能包含帳密或 fragment。任何公開網域都可使用,但本機、內網與特殊 IP 會被阻擋,重新導向不會跟隨。請使用不需要機密金鑰的公開查詢 API;指令內容不是秘密儲存空間。
只接受 HTTP 200 的 text/plain 或 text/html 回應(部分文字 API 會標成 HTML),兩者一律當純文字,不解析 HTML。不傳送平台 Cookie、權杖或使用者標頭。請求總逾時為 3 秒,回應上限 16 KiB,回覆最多取前 400 字。自訂指令與定時發話共用每頻道限流,至少間隔 5 秒,另受每個服務程序最多 8 個同時請求、每分鐘 60 次的限制;原本的指令權限與冷卻仍生效。
失敗、逾時或限流時不發送部分回覆。API 回傳的 HTML、變數與指令都只視為文字,不會執行,也不會轉呼叫其他指令;以 / 或 . 開頭的最終回覆不發送。一般後台預覽不會抓取 API,只有實際呼叫自訂指令或定時發話到期執行才會連線。
用短指令呼叫另一個指令
將自訂指令的回覆設為另一個指令,例如建立 !s1,回覆填入 !scene 1。使用者輸入 !s1 後,機器人會以原始使用者的身分直接執行 !scene 1,不會先把 !scene 1 顯示在聊天室。
最多只會轉呼叫一次(總深度為 2)。例如 !a 回覆 !s1,而 !s1 回覆 !scene 1,這次只會執行到 !s1;第二層的 !scene 1 只顯示文字,不會再執行。
目標指令仍受原始使用者的權限、冷卻時間及各指令原有的執行條件限制。把管理用指令包成簡短的自訂指令,不會讓一般觀眾取得管理權限。
用短指令新增、修改或刪除
!addcom、!editcom、!delcom 現在是預設的管理操作縮寫,可直接使用,不必另外建立自訂指令。請到「內建指令 → !commands」對應操作的分頁調整縮寫或權限。
這三個名稱屬於內建操作縮寫,與自行填寫回覆的自訂短指令不同;完整用法、權限與設定位置見內建操作縮寫。
若想建立自己的其他短指令,也可以在後台設定以下回覆:
| 自訂指令 | 回覆內容 | 聊天室輸入範例 |
|---|---|---|
!新增指令 | !commands add | !新增指令 !你好2 嗨 |
!修改指令 | !commands edit | !修改指令 !你好2 新的回覆 |
!刪除指令 | !commands delete | !刪除指令 !你好2 |
回覆只有上述管理指令前綴時,會自動接上使用者輸入的參數。例如 !新增指令 !你好2 嗨 會執行 !commands add !你好2 嗨。也可明寫 !commands add {args},參數只會帶入一次。其他轉呼叫仍依回覆內容執行;需要帶入參數時使用 {args}。
只有回覆中明確寫出 !commands add、!commands edit 或 !commands delete 的自訂指令才能轉呼叫管理操作;以 {args} 或運算式動態產生管理操作不會執行。URL Fetch 回應也不會執行指令。
操作仍以原始發話者的身分執行,並檢查該操作設定的 mod、主要 mod 或實況主權限。自訂短指令本身的使用權限、啟用狀態、發送模式與冷卻限制,以及 !commands 總開關和對應操作的設定都會繼續生效;!commands 的查詢權限不影響管理權限。