Commands zh TW - Rudokhvist/ArchiSteamFarm GitHub Wiki
ASF支援各種指令,以此來控制程序及Bot實例的行為。
您可以透過這些方式來傳送指令:
- 透過互動式ASF控制台
- 透過Steam私人/群組聊天
- 透過IPC介面
請注意,與ASF互動需要您擁有執行相關指令的權限。 查看SteamUserPermissions與SteamOwnerID設定屬性以了解更多。
透過Steam聊天執行的指令都受全域設定屬性的CommandPrefix影響,而該屬性的預設值為!。 這代表當您要執行status指令時,實際應該要傳送!status(或使用您自訂的CommandPrefix)。 而當您使用控制台或IPC時,不強制使用CommandPrefix,可以省略它。
從V4.0.0.9版本開始,ASF支援互動式控制台。只要您沒有讓它在Headless模式下執行, 按下C鍵,就可以啟用指令模式。輸入您的指令,並按下確認鍵確認。
您也可以透過Steam聊天使指定的ASF Bot執行指令。 但很明顯,您無法直接跟自己聊天。因此,如果您想在自己的主帳號中執行指令,您至少還需要另一個Bot帳號。
同樣您也可以使用指定的Steam群組聊天。 請注意,使用這個方法需要您正確設定SteamMasterClanID屬性,使Bot也會同時監聽(並加入)指定群組聊天中的指令。 這與私人聊天不同,因為這個方式不需要專用的Bot帳號,所以可以「和自己交談」。 您只需將SteamMasterClanID屬性設成您新建立的群組,然後透過設定Bot的SteamOwnerID或SteamUserPermissions來給您自己存取權限。 這樣,ASF Bot(即您自己的帳號)就會加入這個群組及它的群組聊天室,並開始監聽您傳送的指令。 您可以進入同一個群組聊天室,以便向自己傳送指令(因為即使界面上顯示只有您自己在聊天室,在您向聊天室傳送指令時,同樣在聊天室內的ASF實例也會收到指令)。
請注意,傳送指令到群組聊天就像是一個中繼。 如果您向一個含有3個Bot的群組聊天傳送redeem X指令,這個效果與分別向每個Bot私人聊天發送redeem X指令是相同的。 在大多數情形下,這並非是您想要的效果。您應該像之前與單個Bot交談時一樣,使用特定Bot名稱的指令形式。 ASF支援群組聊天,是因為在多數情形下,它是一種與您唯一的Bot通訊的有效方式。但若您的群組中有多個ASF Bot,就最好不要在這裡執行指令,除非您完全理解ASF的相關行為,並且確實想讓所有Bot都執行相同的指令。
但即使是這種情形,您也應該使用帶有[Bots]語法的私人聊天,來向Bot傳送指令。
這是最先進且最靈活執行指令的方式,非常適合使用者交互(ASF-ui)及第三方工具或腳本(ASF API)。這種方式需要ASF執行於IPC模式,且用戶端需要透過IPC介面來執行指令。

| 指令 | 存取權限 | 描述 |
|---|---|---|
2fa [Bots] |
Master |
使指定的Bot實例生成臨時的雙重驗證權杖。 |
2fafinalize [Bots] <ActivationCode> |
Master |
使指定Bot實例完成綁定新雙重驗證憑證的流程。 |
2fafinalized [Bots] <ActivationCode> |
Master |
Imports already-finalized 2FA credentials for given bot instances, using code for verification. |
2fafinalizedforce [Bots] |
Master |
Imports already-finalized 2FA credentials for given bot instances, skipping code verification. |
2fainit [Bots] |
Master |
使指定Bot實例開始綁定新雙重驗證憑證的流程。 |
2fano [Bots] |
Master |
使指定的Bot實例拒絕所有待處理的雙重驗證交易確認。 |
2faok [Bots] |
Master |
使指定的Bot實例接受所有待處理的雙重驗證交易確認。 |
addlicense [Bots] <Licenses> |
Operator |
在指定的Bot實例上啟用給定的licenses,請參閱下文的說明(僅適用於免費遊戲)。 |
balance [Bots] |
Master |
顯示指定Bot實例的Steam錢包餘額。 |
bgr [Bots] |
Master |
顯示關於指定Bot實例的背景序號啟動器佇列的資訊。 |
encrypt <encryptionMethod> <stringToEncrypt> |
Owner |
以指定的加密方式加密字串⸺請參閱下文的說明。 |
exit |
Owner |
完全終止ASF程序。 |
farm [Bots] |
Master |
重新啟動指定Bot實例的掛卡模組。 |
fb [Bots] |
Master |
fbadd [Bots] <AppIDs> |
fbadd [Bots] <AppIDs> |
Master |
將給定的AppIDs新增至指定Bot實例的應用程式自動掛卡黑名單中。 |
fbrm [Bots] <AppIDs> |
Master |
將給定的AppIDs從指定Bot實例的應用程式自動掛卡黑名單中移除。 |
fq [Bots] |
Master |
列出指定Bot實例的優先掛卡佇列。 |
fqadd [Bots] <AppIDs> |
Master |
將給定的AppIDs新增至指定Bot實例的優先掛卡佇列中。 |
fqrm [Bots] <AppIDs> |
Master |
將給定的AppIDs從指定Bot實例的優先掛卡佇列中移除。 |
hash <hashingMethod> <stringToHash> |
Owner |
以指定的加密方式產生給定字串的雜湊值⸺請參閱下文的說明。 |
help |
FamilySharing |
顯示幫助(指向本頁面的連結)。 |
input [Bots] <Type> <Value> |
Master |
為指定Bot實例輸入指定類型的輸入值,只在Headless模式下運作⸺請參閱下文的說明。 |
level [Bots] |
Master |
顯示指定Bot實例的Steam帳號等級。 |
loot [Bots] |
Master |
將指定Bot實例中所有符合LootableTypes類型的Steam社群物品,交易給其SteamUserPermissions屬性中設定的Master使用者(如有多個,則取 steamID最小者)。 |
loot@ [Bots] <AppIDs> |
Master |
將指定Bot實例中,所有符合AppIDs及LootableTypes類型的Steam社群物品,交易給其SteamUserPermissions屬性中設定的Master使用者(如有多個,則取steamID最小者)。 這是與loot%相反的指令。 |
loot% [Bots] <AppIDs> |
Master |
將指定Bot實例中,除符合AppIDs以外的所有LootableTypes類型的Steam社群物品,交易給其SteamUserPermissions屬性中設定的Master使用者(如有多個,則取steamID最小者)。 這是與loot@相反的指令。 |
loot^ [Bots] <AppID> <ContextID> |
Master |
將指定Bot實例的ContextID物品庫分類中,所有符合給定AppID及LootableTypes類型的Steam社群物品,交易給其SteamUserPermissions屬性中設定的Master使用者(如有多個,則取steamID最小者)。 |
mab [Bots] |
Master |
列出MatchActively中的應用程式自動交易黑名單。 |
mabadd [Bots] <AppIDs> |
Master |
將給定的AppIDs加入至MatchActively的應用程式自動交易黑名單中。 |
mabrm [Bots] <AppIDs> |
Master |
將給定的AppIDs從MatchActively的應用程式自動交易黑名單中移除。 |
match [Bots] |
Master |
控制ItemsMatcherPlugin的特殊指令,用於立即觸發MatchActively常式。 |
nickname [Bots] <Nickname> |
Master |
將指定Bot實例的Steam暱稱,更改為給定的Nickname。 |
owns [Bots] <Games> |
Operator |
檢查指定的Bot實例是否已擁有給定的Games,請參閱下文的說明。 |
pause [Bots] |
Operator |
停止指定Bot實例的自動掛卡模組。 ASF在本次執行階段中,將不會再次嘗試對此帳號進行掛卡,除非您手動resume,或者重新啟動ASF程序。 |
pause~ [Bots] |
FamilySharing |
暫停指定Bot實例的自動掛卡模組。 掛卡程序將會在下次遊戲事件被觸發時,或在Bot斷線時自動恢復。 您可以使用resume以恢復掛卡。 |
pause& [Bots] <Seconds> |
Operator |
暫停指定Bot實例的自動掛卡模組Seconds秒。 在此之後,掛卡模組將會自動恢復。 |
play [Bots] <AppIDs,GameName> |
Master |
切換至手動掛卡模式⸺使指定的Bot實例為給定的AppIDs執行掛卡,自訂的GameName為選擇性的遊戲名稱。 若要使此功能正常運作,您的Steam帳號必須擁有您指定的所有AppIDs的有效許可,包含免費遊戲。 使用reset或resume指令來恢復自動掛卡。 |
points [Bots] |
Master |
顯示指定Bot實例的Steam商店點數餘額。 |
privacy [Bots] <Settings> |
Master |
更改指定Bot實例的Steam隱私設定,可用的選項請參閱下文的說明。 |
redeem [Bots] <Keys> |
Operator |
使指定的Bot實例啟用給定的產品序號或錢包儲值碼。 |
redeem^ [Bots] <Modes> <Keys> |
Operator |
使指定的Bot實例啟用給定的產品序號或錢包儲值碼,並以下文說明的Modes模式使用。 |
reset [Bots] |
Master |
將遊戲狀態重設為初始(先前的)狀態。本指令用於配合play指令的手動掛卡模式。 |
restart |
Owner |
重新啟動ASF程序。 |
resume [Bots] |
FamilySharing |
恢復指定Bot實例的自動掛卡程序。 |
start [Bots] |
Master |
啟動指定的Bot實例。 |
stats |
Owner |
顯示程序的統計資料,例如託管記憶體的使用量。 |
FamilySharing |
FamilySharing |
顯示指定Bot實例的狀態。 |
std |
Owner |
控制SteamTokenDumperPlugin的特殊指令,用於立即提交資料。 |
stop [Bots] |
Master |
停止指定的Bot實例。 |
tb [Bots] |
Master |
列出指定Bot實例交易模組黑名單中的使用者。 |
tbadd [Bots] <SteamIDs64> |
Master |
將給定的SteamIDs64加入至指定Bot的實例交易模組黑名單中。 |
tbrm [Bots] <SteamIDs64> |
Master |
將給定的SteamIDs64從指定Bot的實例交易模組黑名單中移除。 |
transfer [Bots] <TargetBot> |
Master |
將指定Bot實例所有符合TransferableTypes類型的Steam社群物品交易給目標Bot實例。 |
transfer@ [Bots] <AppIDs> <TargetBot> |
Master |
將指定Bot實例中,所有符合AppIDs及TransferableTypes類型的Steam社群物品,交易給目標Bot實例。 這是與transfer%相反的指令。 |
transfer% [Bots] <AppIDs> <TargetBot> |
Master |
將指定Bot實例中,除符合AppIDs以外的所有TransferableTypes類型的Steam社群物品,交易給目標Bot實例。 這是與transfer@相反的指令。 |
transfer^ [Bots] <AppID> <ContextID> <TargetBot> |
Master |
將指定Bot實例的ContextID中,符合AppID的Steam物品交易給目標Bot實例。 |
unpack [Bots] |
Master |
拆開指定Bot實例物品庫中的所有擴充包。 |
update [Channel] |
Owner |
檢查GitHub上是否有新的ASF版本,如果有則更新。 這通常每隔UpdatePeriod便會自動執行一次。 選擇性的Channel引數指定UpdateChannel,如未提供,預設使用全域設定中的值。 |
version |
FamilySharing |
顯示ASF的版本號碼。 |
所有的指令都不區分大小寫,但它們的引數(例如Bot的名稱)通常需要區分大小寫。
引數遵循著Unix哲學,方括號[Optional]代表給定的引數是選擇性的;而角括號<Mandatory>代表給定的引數是強制性的。 您應將要宣告的引數取代成您執行指令所需的實際值,例如[Bots]或<Nickname>,並一併省略括號。
[Bots]引數,如括號所代表的,在所有指令中皆為選擇性的引數。 當指定該引數時,指令會在指定的Bot上執行。 但省略時,指令會在當前接收到指令的所有Bot上執行。 也就是說,向Bot B傳送status A,等於直接向Bot A傳送status指令。在這種情形下,Bot B只被作為一個代理Bot。 這也可用於向無法使用的Bot傳送指令,例如啟動已終止的Bot,或者在(您用於執行指令的)主要帳號上執行動作。
指令的存取權限定義了執行此指令所需的最低權限,即SteamUserPermissions中定義的EPermission。但有個例外,Owner是指全域設定檔中定義的SteamOwnerID使用者(擁有最高權限)。
複數引數,例如[Bots]、<Keys>或<AppIDs>,代表該引數支援多個由逗號分隔的相同類型數值。 舉例來說,status [Bots]可以輸入成status MyBot,MyOtherBot,Primary。 這樣,該指令會在所有的目標Bot上執行,效果等同於向所有的Bot分別傳送status指令。 需要注意的是,「,」後面不能有空格。
ASF使用所有的空白字元作為指令的定界符,例如空格和換行字元。 這代表您不僅可以使用空格來分隔引數,還可以使用任何其他空白字元(例如Tab及換行)。
ASF會將超出指令範圍的多餘引數「連接」至符合語法的最後一個複數引數上。 這代表對於redeem [Bots] <Keys>指令而言,redeem bot key1 key2 key3與redeem bot key1,key2,key3的作用完全相同。 再加上您可以使用換行作為指令定界符,這樣您就可以先輸入redeem bot,然後再貼上產品序號清單,其中的每一項可以由任意空白字元(例如換行字元)或者ASF的標準,作為定界。 請注意,若要使用這一技巧,您必須採用該指令引數數量最多的形式(因此在這種情形下,您就必須指定[Bots]引數)。
如上所述,空白字元被用於分隔指令參數,所以參數內部無法再使用空白字元。 但同樣如上所述,ASF可以連接超出範圍的引數。這代表您可以在指令的最後一個引數中,使用空白字元。 舉例來說,nickname bob Great Bob指令能夠將Bot bob的暱稱正確設定成「Great Bob」。 同理,您也可以使用owns指令來檢查帶有空格的名稱。
部分指令亦有別名可供使用,主要用於節省您輸入的時間,同時也與不同的指令語言相容。
| 指令 | 指令別名 |
|---|---|
addlicense |
addlicence |
owns ASF |
oa |
status ASF |
sa |
redeem |
r |
redeem^ |
r^ |
[Bots]是複數引數的一個特殊變體,除了能夠接收多個值以外,它還具有額外的功能。
首先,您可以使用特殊關鍵字ASF來表示「程序中的所有Bot」。因此status ASF指令等同於status 您,在此,列出的,所有,Bot。 這也可以方便地辨識您有權操作哪些Bot,因為儘管關鍵字ASF的目標是所有Bot,但只有您實際能夠傳送指令到的Bot才會作出回應。
[Bots]引數支援特殊的「範圍」語法,這可以讓您更容易選擇特定範圍的Bot。 在這種情形下,[Bots]的一般語法是<FirstBot>..<LastBot>。 舉例來說,假設您有名為A, B, C, D, E, F的Bot,若您執行status B..E,等同於執行status B,C,D,E。 在使用此語法時,ASF將會以字母排序來決定哪些Bot在指定範圍內。 FirstBot及LastBot必須皆是ASF能夠辨識的有效Bot名稱,否則範圍語法將不會生效。
除了上述的範圍語法,[Bots]引數還支援正規表示式的檢索符合規則。 您可以使用r!<Pattern>作為Bot的名稱,來使用正規表示式。其中r!是ASF用於進入正規表示式檢索行為的啟動指令,而<Pattern>是您的正規表示式。 一個正規表示式的Bot指令範例:status r!^\d{3},它會向所有名稱為3位數字的Bot(例如123及981)傳送status指令。 您可以閱讀這份檔案說明,來進一步了解更多說明及範例。
<Settings>引數接受最多7個不同的選項,它使用了ASF的標準逗號定界格式。 這些選項分別是:
| 引數 | 名稱 | 為…的子選項 |
|---|---|---|
| 1 | Profile(我的個人檔案) | |
| 2 | OwnedGames(遊戲資料) | Profile |
| 3 | Playtime(遊玩時數) | OwnedGames |
| 4 | FriendsList(好友名單) | Profile |
| 5 | Inventory(物品庫) | Profile |
| 6 | InventoryGifts(Steam禮物) | Inventory |
| 7 | Comments(能在我的個人檔案發表留言) | Profile |
關於上述選項的說明,請造訪Steam隱私設定。
每個選項的有效值可以是:
| 值 | 名稱 |
|---|---|
| 1 | Private(私人) |
| 2 | FriendsOnly(僅限好友) |
| 3 | Public(公開) |
您可以使用它們的名稱(不區分大小寫)或數值。 未賦值的引數將會被設為預設值Private。 特別注意,上述引數的從屬關係非常重要,因為子選項無法擁有比父選項還高的權限。 舉例來說,若您將個人檔案設為Private,就無法再將遊戲資料設定成Public。
如果希望將名為Main的Bot的所有隱私設定都設為Private,您可以使用以下任一指令:
privacy Main 1
privacy Main Private
這是因為ASF會將所有未賦值的選項設為Private,所以您無需將它們全部列出來。 反之,若您希望將所有選項設為Public,則可以使用以下任一指令:
privacy Main 3,3,3,3,3,3,3
privacy Main Public,Public,Public,Public,Public,Public,Public
使用這種方式,您也可以為每個選項設定不同的值:
privacy Main Public,FriendsOnly,Private,Public,Public,Private,Public
上述指令會將個人檔案設為公開、遊戲資料設為僅限好友、總遊玩時數為私人、好友名單為公開、物品庫為公開、物品庫禮物為私密、個人檔案留言為私人。 若有需要,您也可以使用數值來實現相同效果。
記住,子選項的權限無法高於父選項。 您可以參閱上述引數選項的子選項關係。
addlicense指令支援兩種不同的授權類型:
| 類型 | 別名 | 範例 | 描述 |
|---|---|---|---|
app |
a |
app/292030 |
透過遊戲的唯一appID授權。 |
sub |
s |
sub/47807 |
透過遊戲組合包的唯一subID授權,包含一款或以上的遊戲。 |
需要注意這兩者的區別,因為以ASF來說,對於應用程式將會使用Steam網路來啟動,而對遊戲組合包則使用Steam商店來啟動。 這兩者互不相容。一般而言,您會對免費週末及永久免費遊玩的遊戲使用app類型,而對遊戲組合包使用sub。
我們建議您明確定義每一個項目的類型,以避免歧義。但為了反向相容性,在您提供了無效或省略的類型的情形下,ASF將會預設您想要使用sub類型。 您也可以使用ASF的標準定界符「,」來同時啟用多個授權。
完整的指令範例:
addlicense ASF app/292030,sub/47807
owns指令支援數種不同的<games>引數類型:
| 類型 | 別名 | 範例 | 描述 |
|---|---|---|---|
app |
a |
app/292030 |
遊戲的唯一appID。 |
sub |
s |
sub/47807 |
遊戲組合包的唯一subID,包含一款或以上的遊戲。 |
regex |
r |
regex/^\d{4}: |
使用正規表示式來表示遊戲名稱,區分大小寫。 請參閱檔案說明,來進一步了解完整語法及範例。 |
name |
n |
name/Witcher |
遊戲的部分名稱,不區分大小寫。 |
我們建議您明確定義每一個項目的類型,以避免歧義。但為了反向相容性,在您提供了無效或省略的類型的情形下,若您填入了數字,ASF將會預設您想要使用app類型,若為其他值則為name類型。 您也可以使用ASF的標準定界符「,」來同時查詢多個遊戲。
完整的指令範例:
owns ASF app/292030,name/Witcher
redeem^指令使您能夠微調使用於兌換單個產品序號情境的模式。 此指令會臨時覆蓋RedeemingPreferences Bot設定屬性。
<Modes> 參數接受多個模式值,通常用逗號分隔。 可用的模式值如下:
| 值 | 名稱 | 描述 |
|---|---|---|
| FAWK | ForceAssumeWalletKey | 強制啟用AssumeWalletKeyOnBadActivationCode兌換偏好設定。 |
| FD | ForceDistributing | 強制啟用Distributing兌換偏好設定。 |
| FF | ForceForwarding | 強制啟用Forwarding兌換偏好設定。 |
| FKMG | ForceKeepMissingGames | 強制啟用KeepMissingGames兌換偏好設定。 |
| SAWK | SkipAssumeWalletKey | 強制停用AssumeWalletKeyOnBadActivationCode兌換偏好設定。 |
| SD | SkipDistributing | 強制停用Distributing兌換偏好設定。 |
| SF | SkipForwarding | 強制停用Forwarding兌換偏好設定。 |
| SI | SkipInitial | 產品序號兌換過程跳過第一個Bot。 |
| SKMG | SkipKeepMissingGames | 強制停用KeepMissingGames兌換偏好設定。 |
| V | Validate | 檢查序號格式,自動跳過無效的產品序號。 |
舉例來說,我們打算為任何尚未擁有遊戲的Bot兌換3個產品序號,但不包含primary Bot。 為此,我們需要執行指令:
redeem^ primary FF,SI key1,key2,key3
特別注意,進階兌換模式只會替換您在指令中指定的RedeemingPreferences選項。 舉例來說,若您在RedeemingPreferences中啟用了Distributing,那麼無論是否使用FD模式,都不會有任何區別,因為您已經在RedeemingPreferences中啟用了它。 這就是為什麼每個可強制啟用的模式也有一個可強制停用的選項,您可以決定自己是希望在啟用的情況下強制覆蓋,反之亦然。
encrypt指令使您能夠使用ASF的加密方式加密任意字串。 加密方式<encryptionMethod>必須是安全性章節所述方式之一。 我們建議透過安全的通道(ASF控制台、ASF-ui或IPC提供的專用API端點)使用此指令,否則敏感資訊可能會被第三方記錄(例如聊天訊息會被Steam伺服器記錄)。
hash指令使您能夠使用ASF的雜湊方式,產生任意字串的雜湊值。 雜湊方式<hashingMethod>必須是安全性章節所述方式之一。 我們建議透過安全的通道(ASF控制台、ASF-ui或IPC提供的專用API端點)使用本指令,否則敏感性資訊可能會被第三方記錄(例如聊天訊息會被Steam伺服器記錄)。
input指令僅可在Headless模式下使用。在ASF無法接受使用者輸入的情形下,透過IPC或Steam聊天來輸入資料。
基本語法為input [Bots] <Type> <Value>。
<Type>不區分大小寫,定義ASF可識別的輸入類型。 目前ASF可識別以下類型:
| 類型 | 描述 |
|---|---|
| Login |
SteamLogin Bot設定屬性,設定檔遺失時使用此值。 |
| Password |
SteamPassword Bot設定屬性,設定檔遺失時使用此值。 |
| SteamGuard | 如果您未啟用雙重驗證,驗證碼將以電子郵件的方式發送。 |
| SteamParentalCode |
SteamParentalCode Bot設定屬性,設定檔遺失時使用此值。 |
| TwoFactorAuthentication | 如果您啟用雙重驗證但並非ASF雙重驗證,雙重驗證權杖將由您的手機生成。 |
| DeviceConfirmation | Determines whether confirmation popup for login was accepted |
<Value>是要為指定類型設定的值。 目前所有的值都屬於字串。
假設我們有一個未啟用雙重驗證,僅由Steam Guard保護的Bot。 我們希望在Headless為true的情形下啟動這個Bot。
為此,我們需要執行以下指令:
start MySteamGuardBot -> Bot將嘗試登入,但會因為缺少驗證碼而登入失敗,然後因為ASF處於Headless模式,Bot會停止執行。 我們做這一步的目的,是讓Steam網路透過電子郵件向我們傳送驗證碼⸺若不需要,我們可以直接跳過此步驟。
input MySteamGuardBot SteamGuard ABCDE -> 我們將MySteamGuardBot Bot的SteamGuard輸入設定成ABCDE。 當然在這種情形下,ABCDE就是我們從電子郵件中獲得的驗證碼。
start MySteamGuardBot -> 我們重新啟動已停止的Bot。這一次,會自動使用我們在上個步驟中設定的驗證碼,登入將會成功,且之前輸入的驗證碼會被清除。
以同樣的方式,我們可以存取受雙重驗證保護的Bot(如果它們不使用ASF雙重驗證),只需在執行時設定其他必需屬性即可。

