이 플러그인은 보석을 부스터 팩으로 변환하기 위한 사용하기 쉬운 인터페이스를 제공하며, 인벤토리 및 시장에서 트레이딩 카드 및 기타 관련 항목을 관리하기 위한 도구를 포함합니다.
이 프로젝트는 원래 Outzzz와 Rudokhvist의 Booster Creator 플러그인을 기반으로 했습니다.
plugins
폴더에 압축을 풉니다.메모
이 플러그인은 ASF 일반에서만 작동하도록 테스트되었습니다. 다른 ASF 변종에서는 작동할 수도 있고 작동하지 않을 수도 있지만, 발생할 수 있는 문제가 있으면 언제든지 보고해 주세요.
대괄호 안의 매개변수는 때때로 [Optional]
이고, 꺾쇠괄호 안의 매개변수는 항상
입니다. [Bots]
와 같은 복수 매개변수는 A,B,C
와 같이 로 구분된 여러 값을 허용할 수 있습니다 ,
명령 | 입장 | 설명 |
---|---|---|
booster [Bots] | Master | 해당 봇의 부스터 큐에 AppIDs 추가합니다. |
booster^ [Bots] | Master | 총 부스터 Amount 을 만드는 데 걸리는 시간을 최소화하는 방식으로 선택된 특정 봇의 부스터 대기열 일부 또는 전체에 AppIDs 추가합니다. 지정된 Amounts 모든 AppIDs 에 대해 단일 금액일 수도 있고 각 AppID 에 대해 각각 여러 금액일 수도 있습니다. |
bstatus [Bots] | Master | 해당 봇의 부스터 큐 상태를 인쇄합니다. |
bstatus^ [Bots] | Master | 해당 봇의 부스터 대기열의 단축된 상태를 인쇄합니다. |
bstop [Bots] | Master | 해당 봇의 부스터 큐에서 AppIDs 제거합니다. |
bstoptime [Bots] | Master | 해당 봇의 부스터 대기열에서 제작하는 데 지정된 Hours 보다 오래 걸리는 모든 항목을 제거합니다. |
bstopall [Bots] | Master | 해당 봇의 부스터 큐에서 모든 것을 제거합니다. |
brate [Level] | Master | Level 에서 계정에 대한 최적의 부스터 드롭률을 인쇄합니다. |
bdrops [Bots] | Master | 주어진 봇에 대한 부스터 적격 게임 수를 인쇄합니다. |
메모
ASF가 닫힐 때 완료되지 않은 booster
명령은 다음에 ASF가 실행될 때 자동으로 재개됩니다.
명령 | 입장 | 설명 |
---|---|---|
gems [Bots] | Master | 해당 봇이 소유한 보석 수를 표시합니다. |
lootgems [Bots] | Master | 해당 봇의 모든 보석을 Master 사용자에게 보냅니다. |
lootsacks [Bots] | Master | 해당 봇의 모든 "보석 자루"를 Master 사용자에게 보냅니다. |
transfergems [Bot] | Master | 주어진 봇에서 제공된 Amounts 의 압축을 푼 보석을 주어진 대상 봇으로 보냅니다. 지정된 Amounts 모든 대상 봇에 전송되는 단일 금액이거나 각 대상 봇에 각각 전송되는 여러 금액일 수 있습니다. 대상 봇의 부스터 대기열을 완료하는 데 필요한 보석 수를 나타내는 양으로 queue 또는 q 사용할 수도 있습니다. |
transfergems^ [Bots] | Master | 지정된 봇의 모든 보석을 지정된 대상 봇으로 보냅니다. |
transfersacks [Bots] | Master | 지정된 봇의 모든 "보석 자루"를 지정된 대상 봇으로 보냅니다. |
unpackgems [Bots] | Master | 해당 봇이 소유한 모든 "보석 자루"의 압축을 풉니다. |
이 명령은 판매 가능한 부스터에만 작동합니다. 판매할 수 없는 부스터만 약탈하거나 양도하려면 명령 시작 부분에 u
추가하세요(예: ulootboosters
. 모든 부스터를 약탈하거나 이전하려면 명령 시작 부분에 a
추가하세요. 예: alootboosters
명령 | 입장 | 설명 |
---|---|---|
boosters [Bots] | Master | 해당 봇이 소유한 판매 가능한 부스터의 수를 표시합니다. |
lootboosters [Bots] | Master | 해당 봇의 모든 판매 가능한 부스터 팩을 Master 사용자에게 보냅니다. |
transferboosters [Bots] | Master | 해당 봇에서 판매 가능한 모든 부스터 팩을 지정된 대상 봇으로 보냅니다. |
이 명령은 판매 가능한 카드에서만 작동합니다. 판매할 수 없는 카드만 약탈하거나 양도하려면 명령 시작 부분에 u
추가하세요(예: ulootcards
. 모든 카드를 약탈하거나 이전하려면 명령 시작 부분에 a
추가하세요. 예: alootcards
명령 | 입장 | 설명 |
---|---|---|
cards [Bots] | Master | 해당 봇이 소유한 판매 가능한 비포일 트레이딩 카드의 수를 표시합니다. |
foils [Bots] | Master | 해당 봇이 소유한 판매 가능한 포일 트레이딩 카드의 수를 표시합니다. |
lootcards [Bots] | Master | 해당 봇에서 판매 가능한 모든 비포일 트레이딩 카드를 Master 사용자에게 보냅니다. |
lootfoils [Bots] | Master | 해당 봇의 모든 판매 가능한 포일 트레이딩 카드를 Master 사용자에게 보냅니다. |
transfercards [Bots] | Master | 특정 봇에서 특정 대상 봇으로 판매 가능한 모든 비포일 트레이딩 카드를 보냅니다. |
transferfoils [Bots] | Master | 해당 봇에서 판매 가능한 모든 포일 트레이딩 카드를 지정된 대상 봇으로 보냅니다. |
명령 | 입장 | 설명 |
---|---|---|
keys [Bots] | Master | 해당 봇이 소유한 "Mann Co. 보급 상자 열쇠"의 개수를 표시합니다. |
lootkeys [Bots] | Master | 해당 봇의 모든 "Mann Co. 보급 상자 키"를 Master 사용자에게 보냅니다. |
transferkeys [Bot] | Master | 주어진 봇에서 제공된 Amounts 의 "Mann Co. 보급 상자 키"를 지정된 대상 봇으로 보냅니다. 지정된 Amounts 모든 대상 봇에 전송되는 단일 금액이거나 각 대상 봇에 각각 전송되는 여러 금액일 수 있습니다. |
transferkeys^ [Bots] | Master | 주어진 봇의 모든 "Mann Co. 보급 상자 열쇠"를 주어진 대상 봇에게 보냅니다. |
이러한 명령은 시장성을 무시합니다. 판매 가능한 아이템만 약탈하거나 이전하려면 명령 시작 부분에 m
추가하세요(예: mlootitems
). 판매할 수 없는 아이템만 약탈하거나 전송하려면 명령 시작 부분에 u
추가하세요(예: ulootitems
.
명령 | 입장 | 설명 |
---|---|---|
countitems | Master | AppID , ContextID 및 ItemIdentifier 가 일치하는 지정된 봇이 소유한 항목 수를 표시합니다. |
lootitems | Master | 해당 봇의 일치하는 AppID , ContextID 및 ItemIdentifiers 가 있는 모든 항목을 Master 사용자에게 보냅니다. |
transferitems | Master | 지정된 봇의 일치하는 AppID , ContextID 및 ItemIdentifiers 가 있는 모든 항목을 지정된 대상 봇으로 보냅니다. |
transferitems^ | Master | 지정된 봇의 AppID , ContextID 및 ItemIdentifiers 가 일치하는 일정량의 항목을 지정된 대상 봇으로 보냅니다. 지정된 Amounts 모든 대상 봇에 전송된 각 항목의 단일 금액일 수도 있고, 모든 대상 봇에 전송된 각 항목의 서로 다른 금액일 수도 있습니다. |
transferitems% | Master | 지정된 봇의 AppID , ContextID 및 ItemIdentifier 가 일치하는 항목의 양을 지정된 대상 봇으로 보냅니다. 지정된 Amounts 모든 대상 봇에 전송되는 단일 금액이거나 각 대상 봇에 각각 전송되는 서로 다른 금액일 수 있습니다. |
명령 | 입장 | 설명 |
---|---|---|
trade2faok [Bot] [Minutes] | Master | 특정 봇 인스턴스에 대해 보류 중인 모든 2FA 거래 확인을 수락합니다. 선택적으로 Minutes 마다 한 번씩 이 작업을 반복합니다. 반복을 취소하려면 Minutes 0으로 설정하세요. |
tradecheck [Bot] | Master | ASF의 거래 로직을 사용하여 해당 봇에 대해 들어오는 거래를 처리하려고 시도합니다. |
tradesincoming [Bot] [From] | Master | 특정 봇에 대해 들어오는 거래 수를 표시합니다. 선택적으로 특정 봇 이름 또는 64비트 SteamID From 거래만 계산하도록 필터링됩니다. |
명령 | 입장 | 설명 |
---|---|---|
buylimit | Master | 해당 봇의 활성 구매 주문 값과 봇이 구매 주문 한도에 얼마나 근접했는지 표시합니다. |
findlistings | Master | 지정된 봇에 속하고 ItemIdentifiers 중 하나와 일치하는 모든 시장 목록의 ListingIDs 를 표시합니다. |
findandremovelistings | Master | 지정된 봇에 속하고 ItemIdentifiers 와 일치하는 모든 시장 목록을 제거합니다. |
listings [Bots] | Master | 해당 봇이 소유한 모든 활성 시장 목록의 총 가치를 표시합니다. |
removelistings [Bot] | Master | 해당 봇에 속한 시장 ListingIDs 제거합니다. |
removepending | Master | 해당 봇에 속한 모든 보류 중인 시장 목록을 제거합니다. |
market2faok [Bot] [Minutes] | Master | 특정 봇 인스턴스에 대해 보류 중인 모든 2FA 시장 확인을 수락합니다. 선택적으로 Minutes 마다 한 번씩 이 작업을 반복합니다. 반복을 취소하려면 Minutes 0으로 설정하세요. |
value [Bots] [BalanceLimit] | Master | 해당 봇이 소유한 모든 활성 시장 목록의 총 지갑 잔액과 총 가치를 표시합니다. 해당 지역에서 허용되는 최대 잔액은 정수인 BalanceLimit 로 제공될 수 있으며 대신 해당 봇이 해당 한도에 얼마나 근접했는지 표시합니다. |
명령 | 입장 | 설명 |
---|---|---|
logdata [Bots] | Master | logboosterdata , loginventoryhistory , logmarketlistings 및 logmarkethistory 명령의 조합입니다. |
logboosterdata [Bots] | Master | 지정된 봇에서 부스터 데이터를 수집하여 BoosterDataAPI 로 보냅니다. |
loginventoryhistory [Bots] [Count] [StartTime] [TimeFrac] [S] | Master | 지정된 봇에서 인벤토리 내역 데이터를 수집하여 InventoryHistoryAPI 로 보냅니다. 인벤토리 내역의 페이지 수는 Count 사용하여 지정할 수 있으며 StartTime 단독으로 또는 StartTime , TimeFrac 및 S 의 조합으로 지정된 페이지에서 시작할 수 있습니다. |
logmarketlistings [Bots] | Master | 특정 봇에서 시장 목록 데이터를 수집하여 MarketListingsAPI 로 보냅니다. |
logmarkethistory [Bots] [Count] [Start] | Master | 해당 봇에서 시장 내역 데이터를 수집하여 MarketHistoryAPI 로 보냅니다. 시장 내역의 페이지 수는 Count 사용하여 지정할 수 있으며 Start 에서 지정한 페이지에서 시작할 수 있습니다. |
logstop [Bots] | Master | 활발하게 실행 중인 loginventoryhistory 또는 logmarkethistory 명령을 중지합니다. |
명령 | 입장 | 설명 |
---|---|---|
boostermanager | FamilySharing | 플러그인 버전을 인쇄합니다. |
항목 식별자는 특정 항목이나 항목 그룹을 대상으로 지정할 수 있도록 특정 명령에 사용되는 입력입니다. 명령이 여러 항목 식별자를 허용하는 경우 각 식별자는 쉼표 대신 &&
로 구분되어야 합니다. 항목 식별자의 유효한 형식은 다음과 같습니다.
체재 | 예 |
---|---|
ItemName | Gems 식별자는 모든 "Gems" 항목과 일치합니다. |
ItemType | Steam Gems 식별자는 모든 "Sack of Gems" 및 "Gems" 항목과 일치합니다. |
HashName | 식별자 753-Sack of Gems 또는 753-Sack%20of%20Gems 모든 "보석 자루" 항목과 일치합니다. |
AppID::ContextID | 식별자 753::6 모든 Steam 커뮤니티 항목과 일치합니다. |
AppID::ContextID::ClassID | 식별자 753::6::667933237 은 모든 "보석 자루" 항목과 일치합니다. |
메모
항목의 AppID
, ContextID
, ClassID
, ItemName
, ItemType
및 HashName
확인하는 방법에 대한 정보는 여기에서 확인할 수 있습니다.
대부분의 복수형 명령에는 복수형이 아닌 별칭도 있습니다. 예: lootboosters
lootbooster
라는 별칭이 있습니다.
명령 | 별명 |
---|---|
buylimit | bl |
findlistings | fl |
findandremovelistings | frl |
removelistings | rlistings , removel |
removepending | rp |
logboosterdata | logbd |
loginventoryhistory | logih |
logmarketlistings | logml |
logmarkethistory | logmh |
market2faok | m2faok |
trade2faok | t2faok |
tradecheck | tc |
tradesincoming | ti |
명령 | 별명 |
---|---|
bstatus ASF | bsa |
bstatus^ ASF | bsa^ |
boosters asf | ba |
buylimit ASF | bla |
cards asf | ca |
foils asf | fa |
gems ASF | ga |
keys ASF | ka |
listings ASF | lia |
logdata ASF | lda , loga |
lootboosters ASF | lba |
lootcards ASF | lca |
lootfoils ASF | lfa |
lootgems ASF | lga |
lootkeys ASF | lka |
lootsacks ASF | lsa |
market2faok ASF [Minutes] | m2faoka [Minutes] |
trade2faok ASF [Minutes] | t2faoka [Minutes] |
tradecheck ASF | tca |
tradesincoming ASF [From] | tia [From] |
tradesincoming ASF ASF | tiaa |
transferboosters ASF | tba |
transfercards ASF | tca |
transferfoils ASF | tfa |
value ASF [BalanceLimit] | va [BalanceLimit] |
기본값이 true
인 bool
유형입니다. 이 구성 설정은 ASF.json
구성 파일에 추가될 수 있습니다. false
로 설정하면 거래 불가능한 보석은 부스터 제작에 사용되지 않으며 unpackgems
명령은 거래 불가능한 "보석 자루"를 풀지 않습니다.
"AllowCraftUntradableBoosters" : false ,
기본값이 true
인 bool
유형입니다. 이 구성 설정은 ASF.json
구성 파일에 추가될 수 있습니다. false
로 설정하면 플러그인은 시장에 판매할 수 없는 부스터를 만들지 않습니다.
"AllowCraftUnmarketableBoosters" : false ,
메모
플러그인은 게임의 부스터가 시장성에서 시장성 없음으로 전환되는 시점을 즉시 감지할 수 없습니다. 이 변화를 감지하는 데 일반적으로 최대 4시간이 소요됩니다.
HashSet
유형은 기본값이 []
입니다. 이 구성 설정은 개별 봇 구성 파일에 추가할 수 있습니다. 모든 AppIDs
해당 봇의 부스터 대기열에 자동으로 추가하고, AppID가 만들어진 후 자동으로 다시 대기열에 추가합니다.
예:
"GamesToBooster" : [ 730 , 570 ],
메모
명령을 사용하여 부스터 대기열에서 이러한 AppIDs
제거하는 것은 불가능합니다. 변경하려는 내용은 구성 파일에서 적용해야 합니다.
기본값이 없는 string
유형입니다. 이 구성 설정은 ASF.json
구성 파일에 추가될 수 있습니다. logboosterdata
명령을 사용하면 부스터 데이터가 수집되어 지정된 URL에 있는 API로 전송됩니다.
예:
"BoosterDataAPI" : " http://localhost/api/boosters " ,
다음 사양에 따라 요청을 수락하고 응답을 반환하도록 API를 설계해야 합니다.
방법 : POST
콘텐츠 유형 : application/json
이름 | 유형 | 설명 |
---|---|---|
steamid | ulong | data 속한 봇의 SteamID |
source | string | https://steamcommunity.com/tradingcards/boostercreator/ |
data | JArray | source 에서 구문 분석되어 객체 배열로 전송되는 데이터입니다. 아래에 자세히 설명되어 있습니다. |
data[][appid] | uint | 부스터 게임 AppID |
data[][name] | string | 부스터 게임 이름 |
data[][series] | uint | 부스터 시리즈 번호 |
data[][price] | uint | 보석 부스터 가격 |
data[][unavailable] | bool | 부스터가 24시간 쿨다운 상태일 때 true 로 설정됩니다. |
data[][available_at_time] | string? | ISO 8601 형식의 날짜 및 시간 문자열입니다. unavailable 경우 false 이며 null 이 됩니다. |
콘텐츠 유형 : application/json
이름 | 유형 | 필수의 | 설명 |
---|---|---|---|
success | bool | 예 | 귀하의 작업이 성공했는지 실패했는지 여부. |
message | string | 아니요 | 기본 성공/실패 메시지 대신 표시될 사용자 정의 메시지 |
show_message | bool | 아니요 | 메시지를 표시할지 여부 |
기본값이 없는 string
유형입니다. 이 구성 설정은 ASF.json
구성 파일에 추가될 수 있습니다. logmarketlistings
명령을 사용하면 시장 목록 데이터가 수집되어 지정된 URL에 있는 API로 전송됩니다.
예:
"MarketListingsAPI" : " http://localhost/api/listings " ,
다음 사양에 따라 요청을 수락하고 응답을 반환하도록 API를 설계해야 합니다.
방법 : POST
콘텐츠 유형 : application/json
이름 | 유형 | 설명 |
---|---|---|
steamid | ulong | data 속한 봇의 SteamID |
source | string | https://steamcommunity.com/market/mylistings?norender=1 |
data | JObject | 빈 문자열 값이 null 로 변환된 source 에서 직접 가져온 데이터 |
참고 여기서 페이지 매김은 지원되지 않습니다.
source
data[listings]
에 대한 페이지 매김을 지원하지만 Market History API를 사용하여 해당 정보를 다시 생성할 수 있습니다.
콘텐츠 유형 : application/json
이름 | 유형 | 필수의 | 설명 |
---|---|---|---|
success | bool | 예 | 귀하의 작업이 성공했는지 실패했는지 여부. |
message | string | 아니요 | 기본 성공/실패 메시지 대신 표시될 사용자 정의 메시지 |
show_message | bool | 아니요 | 메시지를 표시할지 여부 |
기본값이 없는 string
유형입니다. 이 구성 설정은 ASF.json
구성 파일에 추가될 수 있습니다. logmarkethistory
명령을 사용하면 시장 내역 데이터가 수집되어 지정된 URL에 있는 API로 전송됩니다.
예:
"MarketHistoryAPI" : " http://localhost/api/markethistory " ,
다음 사양에 따라 요청을 수락하고 응답을 반환하도록 API를 설계해야 합니다.
방법 : POST
콘텐츠 유형 : application/json
이름 | 유형 | 설명 |
---|---|---|
steamid | ulong | data 속한 봇의 SteamID |
source | string | https://steamcommunity.com/market/myhistory?norender=1&count=500 |
page | uint | floor(data[start] / 500) + 1 로 정의된 페이지 번호 |
data | JObject | 빈 문자열 값이 null 로 변환된 source 에서 직접 가져온 데이터 |
참고 여러 페이지의
data
병렬이 아닌 순차적으로 요청됩니다.
콘텐츠 유형 : application/json
이름 | 유형 | 필수의 | 설명 |
---|---|---|---|
success | bool | 예 | 귀하의 작업이 성공했는지 실패했는지 여부. 가져올 페이지가 더 많으면 success true 인 경우에만 플러그인이 계속됩니다. |
message | string | 아니요 | 기본 성공/실패 메시지 대신 표시될 사용자 정의 메시지 |
show_message | bool | 아니요 | 메시지를 표시할지 여부 |
get_next_page | bool | 아니요 | 다음 페이지를 가져올지 여부입니다. 어쨌든 플러그인이 이미 다음 페이지를 가져오려는 경우에는 아무 작업도 수행되지 않습니다. |
next_page | uint | 아니요 | get_next_page 가 true 로 설정되면 이 페이지 번호를 사용하여 다음 페이지를 가져옵니다. |
기본값이 없는 string
유형입니다. 이 구성 설정은 ASF.json
구성 파일에 추가될 수 있습니다. loginventoryhistory
명령을 사용하면 인벤토리 내역 데이터가 수집되어 지정된 URL에 있는 API로 전송됩니다.
예:
"InventoryHistoryAPI" : " http://localhost/api/inventoryhistory " ,
다음 사양에 따라 요청을 수락하고 응답을 반환하도록 API를 설계해야 합니다.
방법 : POST
콘텐츠 유형 : application/json
이름 | 유형 | 설명 |
---|---|---|
steamid | ulong | data 속한 봇의 SteamID |
source | string | https://steamcommunity.com/my/inventoryhistory/?ajax=1 |
page | uint | source 요청하는 데 사용되는 start_time 쿼리 매개변수의 값입니다. 대신 커서 객체를 사용하여 source 요청한 경우 이는 cursor[time] 과 같습니다. |
cursor | JObject | source 요청하는 데 사용되는 cursor 개체 쿼리 매개변수의 값 |
data | JObject | 빈 문자열 값이 null 로 변환된 source 에서 직접 가져온 데이터 |
참고 Steam의 Inventory History API 문서는 여기에서 찾을 수 있습니다.
참고 여러 페이지의
data
병렬이 아닌 순차적으로 요청됩니다.
콘텐츠 유형 : application/json
이름 | 유형 | 필수의 | 설명 |
---|---|---|---|
success | bool | 예 | 귀하의 작업이 성공했는지 실패했는지 여부. 가져올 페이지가 더 많으면 success true 인 경우에만 플러그인이 계속됩니다. |
message | string | 아니요 | 기본 성공/실패 메시지 대신 표시될 사용자 정의 메시지 |
show_message | bool | 아니요 | 메시지를 표시할지 여부 |
get_next_page | bool | 아니요 | 다음 페이지를 가져올지 여부입니다. 어쨌든 플러그인이 이미 다음 페이지를 가져오려는 경우에는 아무 작업도 수행되지 않습니다. |
next_page | uint | 아니요 | get_next_page 가 true 로 설정되면 이 페이지 번호를 사용하여 다음 페이지를 가져옵니다. |
next_cursor | JObject | 아니요 | get_next_page 가 true 로 설정되면 이 커서 개체를 사용하여 다음 페이지를 가져옵니다. |
기본 값이 []
인 HashSet
유형입니다. 이 구성 설정은 ASF.json
구성 파일에 추가될 수 있습니다. loginventoryhistory
명령 또는 InventoryHistory
IPC 인터페이스 API 엔드포인트를 사용하면 해당 AppIDs
의 인벤토리 기록 이벤트만 표시하도록 결과가 필터링됩니다.
예:
"InventoryHistoryAppFilter" : [ 730 , 570 ],
기본값이 15
인 uint
유형입니다. 이 구성 설정은 ASF.json
구성 파일에 추가될 수 있습니다. loginventoryhistory
또는 logmarkethistory
명령을 사용하여 여러 페이지를 가져오는 경우 각 페이지 가져오기 사이에 Seconds
지연이 추가됩니다.
예:
"LogDataPageDelay" : 15 ,
API | 방법 | 매개변수 | 설명 |
---|---|---|---|
/API/BoosterManager/{botName}/BoosterData | GET | 특정 봇에 대한 부스터 데이터를 검색합니다. | |
/API/BoosterManager/{botName}/MarketListings | GET | 특정 봇에 대한 시장 목록 데이터를 검색합니다. | |
/API/BoosterManager/{botName}/MarketHistory | GET | page | 특정 봇에 대한 시장 내역 데이터를 검색합니다. |
/API/BoosterManager/{botName}/InventoryHistory | GET | startTime , timeFrac , s | 특정 봇에 대한 재고 기록 데이터를 검색합니다. |
/API/BoosterManager/{botName}/GetBadgeInfo/{appID} | GET | border | 특정 봇에 대한 배지 정보를 검색합니다. |
/API/BoosterManager/{botNames}/GetPriceHistory/{appID}/{hashName} | GET | 시장 품목 1 의 가격 내역을 검색합니다. |
응답은 이러한 요청을 하는 데 사용된 계정에 따라 달라지지 않습니다. 여러 botNames
제공할 수 있으며, 사용 가능한 첫 번째 봇이 요청을 하는 데 사용됩니다. ↩