Skip to content

Commands zh CN

JustArchi edited this page Aug 10, 2019 · 41 revisions

命令

ASF 支持各种命令,用来控制程序和机器人实例的行为。

您可以通过不同的方式发送命令:

  • 通过 ASF 交互式控制台
  • 通过 Steam 私人/群组聊天
  • 通过 IPC 接口

请注意,与 ASF 交互需要您拥有执行相关命令的权限。 查看 SteamUserPermissionsSteamOwnerID 配置文件属性了解更多。

通过 Steam 聊天发送的命令都受 CommandPrefix 全局配置属性​影响,该属性的默认值为 !。 这意味着,当您要执行 status 命令时,实际应该发送 !status(或者使用您自定义的 CommandPrefix)。 而通过控制台或 IPC 发送的命令则无需加上 CommandPrefix,可以省略。


交互式控制台

自 V4.0.0.9 版本开始,只要您正确设置了 SteamOwnerID 属性,就可以在 ASF 中启用交互式控制台。 随后,只需要按下 c 键就可以启用命令模式,此时您可以输入命令,并按回车键确认。

Screenshot

交互式控制台在 Headless 模式下不可用。


Steam 聊天

您也可以通过 Steam 聊天对给定的 ASF 机器人执行命令。 显然,您无法直接与自己聊天,因此如果您希望为您的主帐户执行命令,就至少还需要另一个机器人帐户。

Screenshot

类似地,您也可以使用指定 Steam 群组的群组聊天。 请注意,此选项需要您正确设置 SteamMasterClanID 属性,使机器人同样监听(并加入)指定的群组聊天。 与私人聊天不同,因为这种方法不需要额外的帐户,所以可以用来“与自己交谈”。 您可以直接将 SteamMasterClanID 属性设置为您新创建的群组,然后通过 SteamOwnerID 属性或者机器人的 SteamUserPermissions 属性为您自己的帐户授予足够的权限。 这样,ASF 机器人(即您自己的帐户)将会加入这个群组和群组聊天室,并且开始监听您发送的命令。 您可以加入同一个群组聊天室,以便向自己发送命令(因为在您向聊天室发送命令时,同样在聊天室内的 ASF 实例将会收到命令,即使界面上显示只有您自己在聊天室内)。

请注意,向群组聊天发送命令类似于接力赛跑。 如果您向一个含有 3 个机器人的群组聊天室发送 redeem X 命令,其效果等价于分别在私聊中向每个机器人发送 redeem X。 在大多数情况下,这不是您想要的效果,您应该像之前与单个机器人私聊时一样,使用指定机器人名称的命令形式。 ASF 支持群组聊天,是因为在很多情况下它是一种有用的、与您自己的机器人通信的方式,但如果您的群组中有多个 ASF 机器人,就最好不要在这里执行命令,除非您完全理解 ASF 的相关行为,并且您确实想要让所有的机器人转发执行相同的命令。

但即使是在这种情况下,您也应该用私人聊天代替,并在命令中指定机器人 <Bots>


IPC

这是执行命令最先进、灵活的方式,非常适合用户集成(ASF-ui)或者第三方工具脚本(ASF API)。这种方式需要 ASF 运行在 IPC 模式下,并且客户端需要通过 IPC 接口来执行命令。

Screenshot


命令

命令 权限 描述
2fa <Bots> Master 为指定机器人生成临时的​两步验证​令牌。
2fano <Bots> Master 为指定机器人拒绝所有等待操作的​两步验证​交易确认。
2faok <Bots> Master 为指定机器人接受所有等待操作的​两步验证​交易确认。
addlicense <Bots> <Licenses> Operator 为指定机器人激活给定的 Licenses (许可),该参数解释详见​下文
balance <Bots> Master 显示指定机器人的 Steam 钱包余额。
bgr <Bots> Master 显示指定机器人的 BGR(后台游戏激活器)队列信息。
bl <Bots> Master 列出指定机器人的交易黑名单用户。
bladd <Bots> <SteamIDs64> Master 将给定的 SteamIDs 加入指定机器人的交易黑名单。
blrm <Bots> <SteamIDs64> Master 将给定的 SteamIDs 从指定机器人的交易黑名单中移除。
exit Owner 完全停止 ASF 进程。
farm <Bots> Master 重新启动指定机器人的挂卡模块。
help FamilySharing 显示帮助(指向此页面的链接)。
input <Bots> <Type> <Value> Master 为指定机器人填写给定的输入值,仅在 Headless 模式中可用——详见​下文的解释
ib <Bots> Master 列出指定机器人的自动挂卡黑名单。
ibadd <Bots> <AppIDs> Master 将给定的 AppIDs 加入指定机器人的自动挂卡黑名单。
ibrm <Bots> <AppIDs> Master 将给定的 AppIDs 从指定机器人的自动挂卡黑名单中移除。
iq <Bots> Master 列出指定机器人的优先挂卡队列。
iqadd <Bots> <AppIDs> Master 将给定的 AppIDs 加入指定机器人的优先挂卡队列。
iqrm <Bots> <AppIDs> Master 将给定的 AppIDs 从指定机器人的优先挂卡队列中移除。
level <Bots> Master 显示指定机器人的 Steam 帐户等级。
loot <Bots> Master 将指定机器人的所有 LootableTypes 社区物品拾取到其 SteamUserPermissions 属性中设置的 Master 用户(如果有多个则取 steamID 最小的)。
loot@ <Bots> <RealAppIDs> Master 将指定机器人的所有符合给定 RealAppIDsLootableTypes 社区物品拾取到其 SteamUserPermissions 属性中设置的 Master 用户(如果有多个则取 steamID 最小的)。
loot^ <Bots> <AppID> <ContextID> Master 将指定机器人的 ContextID 库存分类中符合给定 AppID 的物品拾取到其 SteamUserPermissions 属性中设置的 Master 用户(如果有多个则取 steamID 最小的)。
nickname <Bots> <Nickname> Master 将指定机器人的昵称更改为 Nickname
owns <Bots> <Games> Operator 检查指定机器人是否已拥有 Games,该参数解释详见​下文
password <Bots> Master 显示指定机器人加密后的密码(配合 PasswordFormat 使用)。
pause <Bots> Operator 永久暂停指定机器人的自动挂卡模块。 ASF 在本次会话中将不会再尝试对此帐户进行挂卡,除非您手动 resume 或者重启 ASF。
pause~ <Bots> FamilySharing 临时暂停指定机器人的自动挂卡模块。 挂卡进程将会在下次游戏事件或者机器人断开连接时自动恢复。 您可以 resume 以恢复挂卡。
pause& <Bots> <Seconds> Operator 临时暂停指定机器人的自动挂卡模块 Seconds 秒。 之后,挂卡模块会自动恢复。
play <Bots> <AppIDs,GameName> Master 切换到手动挂卡——使指定机器人运行给定的 AppIDs,并且可选自定义 GameName 为游戏名称。 使用 resetresume 命令恢复。
privacy <Bots> <Settings> Master 更改指定机器人实例的 Steam 隐私设置,可用选项见​下文
redeem <Bots> <Keys> Operator 为指定机器人激活给定的游戏序列号或钱包充值码。
redeem^ <Bots> <Modes> <Keys> Operator Modes 模式为指定机器人激活给定的游戏序列号或钱包充值码,模式详见下文的​解释
reset <Bots> Master 重置游戏状态为正常状态,用来配合 play 命令的手动挂卡模式使用。
restart Owner 重新启动 ASF 进程。
resume <Bots> FamilySharing 恢复指定机器人的自动挂卡进程。 参见 pauseplay
start <Bots> Master 启动指定机器人。
stats Owner 显示进程统计信息,例如托管内存用量。
status <Bots> FamilySharing 显示指定机器人的状态。
stop <Bots> Master 停止指定机器人。
transfer <Bots> <TargetBot> Master 将指定机器人的所有 TransferableTypes 社区物品转移到一个目标机器人。
transfer@ <Bots> <RealAppIDs> <TargetBot> Master 将指定机器人的所有符合给定 RealAppIDsTransferableTypes 社区物品转移到一个目标机器人。
transfer^ <Bots> <AppID> <ContextID> <TargetBot> Master 将指定机器人的 ContextID 库存分类中符合给定 AppID 的物品转移到一个目标机器人。
unpack <Bots> Master 拆开指定机器人库存中的所有补充包。
update Owner 检查 GitHub 上的 ASF 更新(每隔 UpdatePeriod 就会自动执行一次)。
version FamilySharing 显示 ASF 的版本号。

备注

所有的命令都不区分大小写,但它们的参数(例如机器人名称)通常是区分大小写的。

<Bots> 参数对所有命令都是可选的。 当指定该参数时,命令会在指定的机器人上执行。 但省略时,命令会在接收命令的机器人上执行。 换句话说,向机器人 B 发送 status A 命令等价于向机器人 A 发送 status 命令,此时机器人 B 仅仅充当一个代理人的角色。 这也可以用于向无法使用的机器人发送命令,例如启动已停止的机器人,或者在主帐户(您发送命令的帐户)上执行操作。

命令的权限定义了需要执行此命令所需的最低权限,即 SteamUserPermissions 中定义的 EPermission,例外情况是 Owner 指全局配置文件中定义的 SteamOwnerID 用户(拥有最高权限)。

复数参数,例如 <Bots><Keys><AppIDs>,意味着该参数支持接受多个由逗号分隔的值。 例如,status <Bots> 命令支持 status MyBot,MyOtherBot,Primary 形式的用法。 这样,该命令会在所有目标机器人上执行,效果与分别向所有机器人发送 status 命令是相同的。 需要注意的是逗号 , 后面不能有空格。

ASF 使用所有空白字符作为命令的分隔符,例如空格和换行符。 这意味着您不仅可以使用空格来分隔参数,还可以使用任何其他空白字符(如制表符和换行符)。

ASF 会将命令末尾超出规定范围的多余参数连接到符合语法规定的最后一个复数参数上。 这意味着,对于 redeem <Bots> <Keys> 命令,redeem bot key1 key2 key3redeem bot key1,key2,key3 的作用是相同的。 再加上您可以使用换行符作为命令分隔符,这样您就可以先写 redeem bot,然后在其后粘贴一个游戏序列号列表,其中每一项可以由任意空白字符(例如换行符)或者 ASF 标准的逗号 , 分隔。 请注意,要使用这一技巧,您必须采用该命令参数数量最多的形式(所以在这种情况下,您必须指定 <Bots> 参数)。

如上所述,空白字符被用于分隔命令参数,所以参数内部无法再使用空白字符。 但同样如上所述,ASF 可以连接超出范围的参数,这意味着您可以在命令的最后一个参数中使用空白字符。 例如,nickname bob Great Bob 命令能够正确地将机器人 bob 的昵称更改为“Great Bob”。 类似地,您也可以使用 owns 命令检查含有空格的名称。


一些命令有较短的别名可用,用来减少键入的次数:

命令 别名
owns ASF oa
status ASF sa
redeem r
redeem^ r^

<Bots> 参数

<Bots> 是复数参数的一个特殊变体,它除了接受多个值以外,还有额外的功能。

首先,您可以使用特殊的关键字 ASF 来表示“所有机器人”,所以 status ASF 命令与列出所有机器人的命令 status all,your,bots,listed,here 是相同的。 这也可以方便地识别您有权操作哪些机器人,因为尽管 ASF 关键字的目标是所有机器人,但只有您能够实际发送命令的机器人才会作出响应。

<Bots> 参数支持范围语法,您可以很容易地选择一定范围的机器人。 这种情况下,<Bots> 的一般语法为 firstBot..lastBot。 例如,假设您有机器人 A, B, C, D, E, F,如果您执行 status B..E,效果与执行 status B,C,D,E 是相同的。 在使用此语法时,ASF 将会以字母顺序为机器人排序,以决定哪些机器人在指定范围内。 firstBotlastBot 必须是 ASF 能够识别的有效机器人名称,否则范围语法将不会生效。

除了上述的范围语法,<Bots> 参数还支持​正则表达式​匹配。 您可以使用 r!<pattern> 作为机器人名称,其中 r! 告诉 ASF 使用正则表达式匹配,而 <pattern> 则是正则表达式。 一个使用正则表达式的例子为 status r!\d{3} 命令,它会向所有名称为 3 个数字的机器人(例如 123981)发送 status 命令。 您可以阅读这份​文档,进一步了解正则表达式的解释和示例。


privacy 设置

<Settings> 参数接受最多 7 个不同的选项,像平常一样使用 ASF 标准的逗号分隔。 这些选项分别是:

参数 名称 从属于
1 Profile(个人资料)
2 OwnedGames(游戏详情) Profile
3 Playtime(游戏时间) OwnedGames
4 FriendsList(好友列表) Profile
5 Inventory(库存) Profile
6 InventoryGifts(库存礼物) Inventory
7 Comments(留言) Profile

关于上述选项的说明,请访问 Steam 隐私设置

每个选项的有效值可以是:

名称
1 Private(私密)
2 FriendsOnly(仅限好友)
3 Public(公开)

您可以使用它们的名称(不区分大小写)或者数字值。 被省略的参数将会被设置为默认值 Private。 上述参数的从属关系是非常重要的,因为子选项无法拥有比父选项更高的权限。 例如,如果您将个人资料设置为 Private,就无法再将游戏详情设置为 Public

范例

如果您希望将机器人 Main所有隐私设置都设置为 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 命令的 Licenses 参数

addlicense 命令支持两种不同的许可类型,包括:

类型 别名 示例 描述
app a app/292030 游戏的唯一 appID
sub s sub/47807 包含一款或多款游戏的包,有唯一的 subID

二者的区别很重要,因为 ASF 需要向 Steam 网络激活 App,向 Steam 商店激活 Sub。 二者互不兼容,通常您会为周末免费或永久免费游戏使用 App,为其他情况使用 Sub。

我们建议您明确指定每一项的类型,以避免模糊不清的结果,但为了与之前的行为兼容,如果您提供的类型无效或者完全没有提供类型,ASF 会将您输入的数字视为 sub 类型。 您也可以同时激活多条许可,即使用标准的 ASF 逗号分隔符(,)。

一个完整命令的示例:

addlicense ASF app/292030,sub/47807

owns 命令的 Games 参数

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^ 模式

redeem^ 命令使您能够单独调整某个激活场景下采取的激活模式。 此命令会临时覆盖 RedeemingPreferences 机器人配置属性

<Modes> 接受由逗号分隔的多个模式代码。 可用的模式代码有:

名称 描述
FAWK ForceAssumeWalletKey 强制启用 AssumeWalletKeyOnBadActivationCode 激活偏好设置
FD ForceDistributing 强制启用 Distributing 激活偏好设置
FF ForceForwarding 强制启用 Forwarding 激活偏好设置
FKMG ForceKeepMissingGames 强制启用 KeepMissingGames 激活偏好设置
SAWK SkipAssumeWalletKey 强制禁用 AssumeWalletKeyOnBadActivationCode 激活偏好设置
SD SkipDistributing 强制禁用 Distributing 激活偏好设置
SF SkipForwarding 强制禁用 Forwarding 激活偏好设置
SI SkipInitial 跳过首个机器人的激活过程
SKMG SkipKeepMissingGames 强制禁用 KeepMissingGames 激活偏好设置
V Validate 检查序列号的格式,自动跳过其中无效的

例如,我么打算为尚未拥有游戏的机器人激活 3 个序列号,但不包括 primary 机器人。 为此我们需要执行命令:

redeem^ primary FF,SI key1,key2,key3

需要注意的是,只有您在命令中指定的模式才会替换 RedeemingPreferences 中的选项。 例如,如果您在 RedeemingPreferences 中启用了 Distributing,那么无论您是否指定 FD 模式,Distributing 都会生效,因为您已经在 RedeemingPreferences 中启用了它。 这也是为何我们针对同一种模式有启用和禁用两种选项,您可以用强制启用代码来覆盖已禁用的模式,反之亦然。


input 命令

Input 命令仅可用于 Headless 模式,用来在 ASF 无法接受用户输入的情况下,通过 IPC 或者 Steam 聊天输入一些数据。

基本的语法是 input <Bots> <Type> <Value>

<Type> 不区分大小写,定义 ASF 接受的输入类型。 目前 ASF 支持以下类型:

类型 描述
DeviceID 2FA 设备 ID,在 .maFile 缺少这个值时使用。
Login SteamLogin 机器人配置属性,在配置文件缺少这个值时使用。
Password SteamPassword 机器人配置属性,在配置文件缺少这个值时使用。
SteamGuard 通过电子邮件发送的验证码,在您未启用 2FA 时使用。
SteamParentalCode SteamParentalCode 机器人配置属性,在配置文件缺少这个值时使用。
TwoFactorAuthentication 手机生成的 2FA 令牌,在您启用 2FA 但未启用 ASF 2FA 时使用。

<Value> 是要为指定类型设置的值。 目前所有的值都是字符串。

示例

假设我们有一个机器人,未启用 2FA,仅由 Steam 电子邮件令牌保护。 我们希望在 Headless 模式下启动这个机器人。

为此,我们需要执行以下命令:

start MySteamGuardBot -> 机器人会尝试登录,但因为缺少验证码而登录失败,然后因为 ASF 处于 Headless 模式,机器人会停止运行。 我们做这一步的目的是让 Steam 网络向我们发送验证码电子邮件——否则我们就可以跳过这一步了。

input MySteamGuardBot SteamGuard ABCDE -> 我们将 MySteamGuardBot 机器人的 SteamGuard 输入设置为 ABCDE。 当然,这里的 ABCDE 需要换成我们在电子邮件中找到的验证码。

start MySteamGuardBot -> 我们重新启动已停止的机器人,这一次会自动使用我们在上一步中设置的验证码,登录将会成功,并且之前的验证码输入会被清除。

如果您的机器人启用了 2FA,但是没有导入 ASF 2FA,您可以用相同的方式操作这种机器人,只需要在运行时设置其他所需的属性即可。

Clone this wiki locally
You can’t perform that action at this time.