Skip to content

Configure your options.json file

IdiNium edited this page Jun 2, 2022 · 91 revisions

Setting up options.json for the first time

Using the config generator

You can use the config generator located here (credit to @Bonfire) if it's your first time using the bot.
It will guide you through the configuration and give explanations. You can also read about the individual settings later on this page.

Once you selected everything on the config generator to your liking, you can download the options.json file and replace the default options.json which was created when running your bot for the first time. The file can be found in ~/tf2autobot/files/<STEAM_ACCOUNT_NAME>/ folder.

Only for advanced users:
If you haven't started the bot yet, you will have to create the directory yourself which is only advisable for advanced users because it can lead to mistakes.
Inside the root directory created a folder called files and inside that folder create another one called your_bot_steam_username (so the login name that you use to sign into steam). There you can copy the options.json file obtained from the config generator or use the template from here.

Using the manual method

If you don't want to use the config generator for the initial setup of your options.json file you can do it manually.

To do so you can either start up the bot for the first time, which will create your options.json file located in ~/tf2autobot/files/<STEAM_ACCOUNT_NAME>/ folder and then edit this file yourself by using the explanations for the variables on this page.

Or if you are an advanced user you can obtain the template from here and continue to create the appropriate folders using the method described above.

Configure options.json file after the initial setup (Optional)

After the initial setup and creation of your options.json file you might want to edit some things. You can do so by opening the file and editing the variables.

Remember: This file was generated after you ran your bot for the first time. The file can be found in ~/tf2autobot/files/<STEAM_ACCOUNT_NAME>/ folder.

Click here to view the content.

How to read?

{
	"object1": "valueObj1",
	"object2": "valueObj2",
	"object3": {
    	    "property1_Obj3": "valueProperty1_Obj3",
            "property2_Obj3": {
        	"property1_Prop2_Obj3": "valueProperty1_Prop2_Obj3"
            }
	}
}

To access value of

  • object1, it's simply just object1
  • property1_Obj3, it will be object3.property1_Obj3
  • property1_Prop2_Obj3, it will be object3.property1_Obj3.property1_Prop2_Obj3

Example:

{
	"autokeys": {
            "enable": false, 		// autokeys.enable = false
            "minKeys": 3,		// autokeys.minKeys = 3
            "maxKeys": 15,		// autokeys.maxKeys = 15
            "minRefined": 30, 		// autokeys.minRefined = 30
            "maxRefined": 150,		// autokeys.maxRefined = 150
            "banking": {
                "enable": false		// autokeys.banking.enable = false
            },
            "scrapAdjustment": {
                "enable": false, 	// autokeys.scrapAdjustment.enable = false
                "value": 1		// autokeys.scrapAdjustment.value = 1
            },
            "accept": {
                "understock": false	// autokeys.accept.understock = false
            }
        }
}

Later in the following documentation, the Option column will be the last property of an object (or an object itself).


Description of each object property

Options.json structure

🔰 Miscellaneous Settings ^

Parent property key: miscSettings

- Show only metal ⚙️ ^

Property: .showOnlyMetal

Option Type Default Description
.enable boolean true If this is set to false, the bot will show all prices in the format of [x keys, y ref]. Example: (5 keys, 10 ref). If this is set to true the bot will instead show all prices in the format of [x ref]. Example: (260 ref).

- Sort inventory 🎒 ^

Property: .sortInventory

Option Type Default Description
.enable boolean true If set to false your bot will not automatically sort its own inventory.
.type number 3 By default, your bot will sort inventory by rarity. Other options are 1 - by name, 2 - by defindex, 3 - by rarity, 4 - by type, 5 - by date, 101 - by class, 102 - by slot.

- Creating listings on backpack.tf 🏷️ ^

Property: .createListings

Option Type Default Description
.enable boolean true If set to false, your bot will not list items for trade while it is running (if changed while your bot is running, this wont work unless restarted).

- Add as friend 🙋‍♂️ ^

Property: .addFriends

Option Type Default Description
.enable boolean true If set to false, your bot will not allow others to add it as a Steam friend (except admins). FALSE IS NOT RECOMMENDED!

- Send group invite 👯‍♂️ ^

Property: .sendGroupInvite

Option Type Default Description
.enable boolean true If set to false, your bot will not invite people to join Steam groups.

- Autobump (auto-relist) 🔄 ^

Property: .autobump

Option Type Default Description
.enable boolean true If set to true, your bot will re-list all listings every 30 minutes. NOTE: DEPRECATED - The bot will fail to re-list items if Backpack.tf website is down for maintenance or experiencing major outage. Please consider donating to Backpack.tf or purchase Backpack.tf Premium to enable automatic listing bumping.

- Counter invalid value offer 🔂 ^

Property: .counterOffer

Option Type Default Description
.enable boolean true By default, your bot will automatically attempt to counter an offer with only 🟥_INVALID_VALUE error/reason
.skipIncludeMessage boolean false If set to true, if someone sent an offer with incorrect value but they include offer message, the offer will not be automatically countered but will skip for your review instead.

- Skip items in trade ⭕ ^

Property: .skipItemsInTrade

Option Type Default Description
.enable boolean true By default, when your bot is constructing an offer (trade partner buy/sell through command), your bot will skip any items that are currently in another active trades. Set this to false if you want to disable this feature.

- Weapons as currency 🏹 ^

Property: .weaponsAsCurrency

Option Type Default Description
.enable boolean true If set to false, your bot will not value craft/uncraft weapons as currency (0.05 refined).
.withUncraft boolean true If set to false, your bot will exclude uncraft weapons as currency (0.05 refined).

- Full uses check ⚔️🔍 ^

Property: .checkUses

Option Type Default Description
.duel boolean true If set to false, your bot will buy Dueling Mini-Games regardless of how many uses are left. Otherwise, it will only accept full Dueling Mini-Games (5 uses left).
.noiseMaker boolean true If set to false, your bot will buy Noise Makers regardless of how many uses are left. Otherwise, it will only accept full Noise Makers (25 uses left).

- Bot playing game 🎮 ^

Property: .game

Option Type Default Description
.playOnlyTF2 boolean false Set to true if you want your bot to only play Team Fortress 2. Setting this to true will ignore the below Option.
.customName string "" Name of the custom game you'd like your bot to play. Limited to only 60 characters. Example: Click here

- Always remove item attributes 🔥 ^

Property: .alwaysRemoveItemAttributes

- Remove custom texture on decalable items

Sub-property: .customTexture

Option Type Default Description
.enable boolean true Set to false if you don't want your bot to remove any custom texture (or image) applied to the decalable items (Conscientious Objector, Clan Pride, Photo Badge, Flair!).

- Delete seasonal junk 🗑 ^

Property: .deleteUntradableJunk

Option Type Default Description
.enable boolean false If set to true, your bot will automatically check if seasonal items exists in your bot inventory and delete them on start (Read: #1049.

- Check trade partner's reputation status 🔍 ^

property: .reputationCheck

Option Type Default Description
.checkMptfBanned boolean false This is especially for Marketplace.tf whitelisted sellers, which stated in the Seller Terms & Conditions that "You will not trade with MarketplaceTF banned users, including any bots they may own".
.reptfAsPrimarySource boolean false Set this to true if you want your bot to get reputation data from rep.tf. Do note that rep.tf has been quite slow nowadays, so it's recommended to always set this to false. If you set the .checkMptfBanned to true and this to false, please make sure to fill in the MPTF_API_KEY in your enviromental file.

🔊 Send Alert to owner ^

Parent property key: sendAlert

Option Type Default Description
.enable boolean true Set to false to never send any alerts.

- Autokeys alert 🔑 ^

Property: .autokeys

Option Type Default Description
.lowPure boolean true (Discord Webhook not mentioned) Send an alert when the bot is low in keys and ref (less than minimum for both).
.failedToAdd boolean true (Discord Webhook mentioned) Send an alert when the bot failed to add key (when Autokeys is enabled).
.failedToUpdate boolean true (Discord Webhook mentioned) Send an alert when the bot failed to update key (when Autokeys is enabled).
.failedToDisable boolean true (Discord Webhook mentioned) Send an alert when the bot failed to disable key (when Autokeys is enabled).

- Backpack full/almost full alert 🎒💯 ^

Option Type Default Description
.backpackFull boolean true (Discord Webhook not mentioned) Send an alert when the bot failed to send an offer due to full backpack problem.

- High-value items alert 🥇 ^

Property: .highValue

Option Type Default Description
.gotDisabled boolean true (Discord Webhook mentioned) Send an alert when the bot successfully bought an item with high-value attachment(s) and it got disabled (only if highValue.enableHold is true).
.receivedNotIn Pricelist boolean true (Discord Webhook mentioned) Send an alert when the bot successfully bought an item (INVALID_ITEMS) with high-value attachment(s) - this will not automatically added to the pricelist.
.tryingToTake boolean true (Discord Webhook mentioned) Send an alert when the trade partner is trying to take an item with high-value attachment(s) that is still not in the bot pricelist.

- Automatic remove intent=sell (failed) 🚮❌ ^

Option Type Default Description
.autoRemoveIntent SellFailed boolean true (Discord Webhook mentioned) Send an alert when an item is sold with intent sell, and pricelist.autoRemoveIntentSell.enable is true but the bot failed to remove it.

- Automatic add painted items 🎀 ^

Option Type Default Description
.autoAddPaintedItems boolean true (Discord Webhook mentioned if failed) Send an alert when painted items has been successfully added to sell

- Failed to accept offer ❌ ^

Option Type Default Description
.failedAccept boolean true (Discord Webhook mentioned) Send an alert when the bot failed to accept an offer. See Example

- Unable to process offer ❌ ^

Option Type Default Description
.unableToProcessOffer boolean true (Discord Webhook mentioned) Send an alert when the bot failed to process an offer due to the broken offer data. The bot will retry but itself, but this is just to inform you if that happened. See Example

- Partial price update alert 💱 ^

Sub-property: .partialPrice - related to pricelist.partialPriceUpdate

Option Type Default Description
.onUpdate boolean true (Discord Webhook not mentioned) Send an alert when the bot partially update item prices.
.onSuccessUpdatePartialPriced boolean true (Discord Webhook not mentioned) Send an alert when the bot successfully update the prices for previously partially updated prices.
.onFailedUpdatePartialPriced boolean true (Discord Webhook not mentioned) Send an alert when the bot failed to update the prices for previously partially updated prices.
.onResetAfterThreshold boolean true (Discord Webhook not mentioned) Send an alert when the threshold for partialPriceUpdate exipres and the pricing goes back to normal.
.onBulkUpdatePartialPriced boolean true (Discord Webhook not mentioned) Send an alert when the bot updates many partial priced items at once.

- Received unusual not in pricelist ✨ ^

Option Type Default Description
.receivedUnusualNotInPricelist boolean true (Discord Webhook mentioned) Send an alert when the bot received Unusual (probably because your bot bought one from Generic Unusual buy order - read more about it here) that is not in the pricelist - Only if you set pricelist.autoAddInvalidUnusual.enable to false.

- Failed to update old prices ❌ ^

Option Type Default Description
.failedToUpdateOldPrices boolean true Send an alert when the bot fails to update an old price. This can happen when using a custom autopricer. Read more about it here.

📑 Pricelist manager ^

Parent property key: pricelist

- Partial price update 🔁 ^

property: .partialPriceUpdate

Option Type Default Description
.enable boolean false By default, this feature is disabled. Read more about this here.
.thresholdInSeconds integer 604800 Default value is 7 days. Minimum you can set here is only 1 day (86400 seconds).
.excludeSKU string[] [] By default, this value is an empty string, but Mann Co. Supply Crate Key will always excluded.

- Filter can't afford to buy 🔁 ^

property: .filterCantAfford

Option Type Default Description
.enable boolean false By default, your bot will list all items in the pricelist. Please read #332 to know more about this feature.

- Automatic remove intent=sell 🚮 ^

property: .autoRemoveIntentSell

Option Type Default Description
.enable boolean true By default, any item with intent sell in the pricelist will be automatically removed when the bot no longer have that item. Set to false to disable this feature.

- Automatic add 🟨_INVALID_ITEMS ➕ ^

property: .autoAddInvalidItems

Option Type Default Description
.enable boolean true If set to false, any accepted 🟨_INVALID_ITEMS will NOT be automatically added to the pricelist.

- Automatic add Invalid Unusual ✨ ^

property: .autoAddInvalidUnusual

Option Type Default Description
.enable boolean false If set to true, any accepted Unusual bought from Generic Unusual Buy Order will automatically be added to the pricelist (if the prices from prices.tf are available). Read: #412

- Automatic add painted items 🎀➕ ^

property: .autoAddPaintedItems

Option Type Default Description
.enable boolean true If set to false, any accepted items with painted will not be automatically added to the pricelist (to sell only). This feature only available if your normalize.painted.our is true and normalize.painted.their is false. The bot will set the price to sell by adding the item's base autoprice selling price and additional price for paint, in which you should also set your preferred additional price for each paint in detailExtra.painted[paintName].price.

- Price age 🕰️ ^

property: .priceAge

Option Type Default Description
.maxInSeconds integer 28800 (8 hrs) If an item in the pricelist's last price update exceeds this value, the bot will automatically request a price check for the item from prices.tf (only apply on boot).

✅ Trade Bypass Settings ^

Parent property: bypass

- Allow trade with Escrow (Trade hold) 🛅 ^

property: .escrow

Option Type Default Description
.allow boolean false If set to true, your bot will allow trades to be held for up to 15 days as a result of the trade partner not having Mobile Authentication enabled.

- Allow Overpay 💰 ^

property: .overpay

Option Type Default Description
.allow boolean true By default, your bot will allow trade partners to overpay with items or keys/metal (our value more than their value). Set this to false if you want your bot to decline any trades in which it would receive overpay.

- Allow receiving free items without message 🎁💌❌ ^

property: .giftWithoutMessage

Option Type Default Description
.allow boolean false If set to true (Not recommended), your bot will accept any gift without the need for the trade partner to include a gift message in the offer message. For a list of all allowed gift messages, please click here.

📜 Trade Summary settings ^

Parent property: tradeSummary

Declined Trade Summary ^

Property: .declinedTrade

Option Type Default Description
.enabled boolean false By default declined trades will not be sent to your steam chat / discord webhook.

General ^

Option Type Default Description
.showStockChanges boolean false By default the summary will NOT include to show stock changes, example: B.M.O.C (0 → 1/1). Set to true to enable it.
.showTimeTakenInMS boolean false Set to true if you want to include time taken to complete the trade in milliseconds.
.showDetailedTimeTaken boolean true Set to `false if you don't want to see the detailed time taken.
.showItemPrices boolean true Set to false if you don't want to include item prices (buying/selling prices).
.showPureInEmoji boolean false [Discord Webhook only] Set to true if you want to enable this. Example: image1, image2. You will also need to set this permission on your trade summary channel
.showProperName boolean false Set to true if you want the item name to be shown with "The" (if the item proper_name property in schema is set to true) and full name (will not shorten "Non-Craftable" to "NC" for example).
.showOfferMessage boolean false Set to true if you want to include offer message in the trade summary.
listings

===

Custom text ^

Property: customText

  • Set your own preferred customizable text in the trade summary (both accepted and review summary).
  • Discord Webhook available markdown (formatting): Click here

Steam chat settings ^

Parent property key: steamChat

Custom initializer

Property: .customInitializer

  • Set your own preferred initializer.
  • Available initializer:

===

Toggle send notification to the trade partner 🔔 ^

Property: .notifyTradePartner

Option Type Default Description
.onSuccessAccepted boolean true Send notification to the trade partner when the trade was completed.
.onSuccessAcceptedEscrow boolean true Send notification to the trade partner when the trade was accepted but on hold due to trade hold.
.onDeclined boolean true Send notification to the trade partner when the trade was declined.
.onCancelled boolean true Send notification to the trade partner when the trade was canceled due to a problem with Steam, or canceled by user.
.onTradedAway boolean true Send notification to the trade partner when the trade was invalid because some of the items were traded away.
.onOfferForReview boolean true Send notification to the trade partner when the trade is under review

🥇 High-value Items settings ^

Parent property key: highValue

Option Type Default Description
.enableHold boolean true By default, whenever your bot accepts items with high valued attachments, it will temporarily be disabled so you can decide whether to manually price it. Set this to false if you want to disable this feature.

- Spells 👻 ^

property: .spells

Option Type Default Description
.names string[] [] An array of spells. Must be the spells full name in each element. (Refer: Spells). Example: ["Team Spirit Footprints"].

- Sheens ✨ ^

property: .sheens

Option Type Default Description
.names string[] [] An array of sheens. Must be the sheens full name in each element. (Refer: Sheen). Example: ["Team Shine"].

- Killstreakers 🔥 ^

property: .killstreakers

Option Type Default Description
.names string[] [] An array of killstreakers. Must be the killstreakers full name in each element. Refer: Killstreaker. Example: ["Fire Horns", "Tornado"].

- Strange Parts 🎰 ^

property: .strangeParts

Option Type Default Description
.names string[] [] An array of strange parts. Must be the strange parts full name in each element. Refer: Strange Parts. Example: ["Headshot Kills", "Kills"].

- Painted 🎨 ^

property: .painted

Option Type Default Description
.names string[] [] An array of paints. Must be the paints full name in each element. Refer: Paints. Example: ["After Eight"].

Exception skus ^

Option Type Default Description
.exceptionSkus string[] [] An array of full or partial sku that you want to make an exception for it to not considered as high-value. Example: [";5;u"] - this is a partial sku for all Unusual - useful if you want to ignore painted Unusual cosmetic.

Note: All must be the exact match. Please refer to the valid names (not the partial sku listed in the references). If left empty ([]), then everything in the reference will be considered high-value


🔲 Items Normalization settings ^

Parent property key: normalize

- Festivized Items 🎄 ^

property: .festivized

ℹ️ If set to true, your bot will recognize Festivized items as Non-Festivized variant.

For example, your bot is buying a Strange Australium Black Box and someone sends an offer to your bot containing a Festivized Strange Australium Black Box (their side), the bot will recognize the Festivized Strange Australium Black Box as Strange Australium Black Box if your set normalize.festivized.their as true. Now that item is in your bot inventory, if you set normalize.festivized.our to false, then the bot will recognize it as Festivized Strange Australium Black Box.

Option Type Default Description
.our boolean false Our side (Bot)
.their boolean false Trade partner's side
.amountIncludeNonFestivized boolean false Enabling this option will take the non-festivzed version of an item into account when creating buy/sell orders. See the detailed explanation.

- Strange as Second Quality (elevated quality) 🎰 ^

property: .strangeAsSecondQuality

ℹ️ If set to true, your bot will recognize any Strange Unique, Strange Haunted or Strange Unusual as Unique, Haunted and Unusual only (ignore ;strange part on item's sku).

The example is pretty much the same as in Festivized item normalization.

Option Type Default Description
.our boolean false Our side (Bot)
.their boolean false Trade partner's side
.amountIncludeNonStrange boolean false Enabling this option will take the non-strange version of an item into account when creating buy/sell orders. See the detailed explanation.

- Painted items 🎨 ^

property: .painted

ℹ️ If set to false, your bot will assign painted partial sku on any painted items.

Meaning that you'll be able to create a separate listing (sell order only) for the painted items. Note that only paint(s) listed in highValue.painted will have painted partial sku assigned on that particular item (if you leave it as an empty array ([]), then all painted items will have painted partial sku assigned).

Important

  • Creating listings for painted items on backpack.tf is currently NOT SUPPORTED for BUY ORDERS (unless you manually create it).
  • Also note that, if your .our is false and .their is true, if you created a buy order for an item (without partial painted sku of course, max set to 1), then someone sent an offer containing painted item and that paint is listed in highValue.painted, the trade summary will show stock changes like this: -1 → 0. Meaning your buy order will not get removed because your bot has an item with partial painted sku on it (treated as a different item). It will be removed once your bot received a non-painted version (or painted that not in highValue.painted) of that particular item.
Option Type Default Description
.our boolean true Our side (Bot)
.their boolean true Trade partner's side (false is not recommended)
.amountIncludeNonPainted boolean false Enabling this option will take the non-painted version of an item into account when creating buy/sell orders. See the detailed explanation.
listings
listings

🔖 Listing Note Settings ^

Parent property key: details

- Templates 📝 ^

Option Type Default Description
.buy string "I am buying your %name% for %price%, I have %current_stock% / %max_stock%." This is the note that will be included with each buy order placed on backpack.tf. Maximum allowed characters: 180
.sell string "I am selling my %name% for %price%, I am selling %amount_trade%." This is the note that will be included with each sell order placed on backpack.tf. Maximum allowed characters: 180

Parameters:

  • %name% - An item's name.
  • %price% - An item's buying/selling price.
  • %current_stock% - An item's current stock.
  • %max_stock% - An item's maximum stock.
  • %amount_trade% - How much of an item can be traded.
  • %keyPrice% - The current key rate (selling price). If the item's selling price is above one key, this parameter will be displayed as Key rate: x ref/key. Otherwise, this parameter will not be shown on listings
  • %uses% - Display (𝗢𝗡𝗟𝗬 𝗪𝗜𝗧𝗛 𝟱x 𝗨𝗦𝗘𝗦) on Dueling Mini-Game listings if miscSettings.checkUses.duel is set to true, and (𝗢𝗡𝗟𝗬 𝗪𝗜𝗧𝗛 𝟐𝟱x 𝗨𝗦𝗘𝗦) on Noise Maker listings if miscSettings.checkUses.noiseMaker is set to true. It is recommended to only place this on buy listings (details.buy). On other items, this parameter output will be an empty string (show nothing).

Usage example:

listings

- Show bold text ^

Sub-parent property key: .showBoldText

show bold text

- High-value in listings note (decoration) ✨ ^

Property: .highValue

Option Type Default Description
.showSpells boolean true Show spell(s) in the listings note. See Example.
.showStrangeParts boolean false Show Strange parts (only the one you specified in highValue.strangeParts)
.showKillstreaker boolean true Show killstreaker in the listings note. See Example
.showSheen boolean true Show Sheen in the listings note.
.showPainted boolean true Show painted color in the listings note. See Example
*Note: Only for sell orders.

Custom text ^

Sub-Property: .highValue.customText

  • Set your own preferred customizable high-value text

===

- Custom %uses% parameter output 💯 ^

Property: .uses

Option Type Default Description
.duel string (𝗢𝗡𝗟𝗬 𝗪𝗜𝗧𝗛 𝟱x 𝗨𝗦𝗘𝗦) Custom %uses% parameter.
.noiseMaker string (𝗢𝗡𝗟𝗬 𝗪𝗜𝗧𝗛 𝟐𝟱x 𝗨𝗦𝗘𝗦) Custom %uses% parameter.

📊 Trade Statistic settings ^

Parent property key: statistics

Option Type Default Description
.lastTotalTrades integer 0 If you clear out (delete) your polldata.json file, it will reset your total trades count back to zero. This option can be used as an offset to ensure you never lose track of how many trades your bot has completed in total. An example would be if you bot has completed 1000 trades and you want to clear out your polldata.json file. If you set this to 1000, your bot will remember that it has completed 1000 trades in the past.
.startingTimeInUnix integer (Unix) 0 Similar to .lastTotalTrades, this option sets the latest instance a trade was made (in Unix Timestamp). To read more about this option, please read IdiNium's Discord Message Regarding This.
.lastTotalProfit MadeInRef integer 0 Similar to .lastTotalTrades, but this is for last profit made (value must in refined metal, i.e. 35.44).
.lastTotalProfit OverpayInRef integer 0 Similar to .lastTotalProfitMadeInRef, but this is for last profit from overpay (value must in refined metal, i.e. 1000.44).
.profitDataSince InUnix integer (Unix) 0 Similar to .startingTimeInUnix, this option sets the latest instance a profit was made (in Unix Timestamp).

- Automatic sending stats 📊⌚ ^

Property: .sendStats

Option Type Default Description
.enable boolean false Send the content of !stats command every specified hours below
.time string[] [] Time (local/timezone - 24 hours) in hour:minute format. Example: ["T23:59"] will send at only 23:59 PM, everyday. Please include that "T" in front of each time, otherwise this wont work. If this is leave empty array ([]) but .enable is true, then it will use default ["T23:59", "T05:59", "T11:59", "T17:59"].

🔑 Autokeys Settings ^

Parent property key: autokeys

- General settings 🎛️

Keywords:

  • Keys - Mann Co. Supply Crate Key
  • Pure Metals - includes Refined Metal, Reclaimed Metal and Scrap Metal
Option Type Default Description
.enable boolean false If set to true, your bot will automatically buy/sell Keys based on the availability of the Pure Metals and Keys in your bot inventory. This is done in an effort to ensure that your bot has enough Pure Metals to perform trades.
.minKeys integer 3 When the bot's current stock of Keys is greater than this value, and the bot's current stock of Pure Metals is less than .minRefined, the bot will start selling Keys in order to convert Keys into Pure Metals. Otherwise, the bot will not sell Keys.
.maxKeys integer 15 When the bot's current stock of Keys is less than this value, and the bot's current stock of Pure Metals is greater than .maxRefined, the bot will start buying Keys in order to convert Pure Metals into Keys. Otherwise, the bot will not buy Keys.
.minRefined number 30 The minimum number of Pure Metals the bot can have before it begins selling Keys (to turn Keys into Pure Metals). See .minKeys for more information.
.maxRefined number 150 The maximum number of Pure Metals the bot can have before it begins buying Keys (to turn Pure Metals into Keys). See .maxKeys for more information.

- Banking 🏧 ^

Property: .banking

Option Type Default Description
.enable boolean false If set to true, your bot will bank (buy and sell) Keys. If your bot's current Pure Metals supply is between .minRefined and .maxRefined and Keys > .minKeys, it will bank Keys. autokeys.enable must be set to true to enable this option.
.____________________________________________________________.  ._______________________________.
|       **Buying Keys**       |       **Selling Keys**       |  |       **Banking Keys**        |
|       ***************       |       ****************       |  |       ****************        |
|        <———————————○        |            ○————————————>    |  |            ○————————————>     |
| Keys -----|--------|----->  |  Keys -----|--------|----->  |  |  Keys -----|--------|----->   |_______________________________.
|                    ○———>    |         <——○                 |  |            ○————————○         |          **Disabled**         |
| Refs -----|--------|----->  |  Refs -----|--------|----->  |  |  Refs -----|--------|----->   |          ************         |
|          min      max       |           min      max       |  |           min      max        |         <——●                  |
|_____________________________|______________________________|  |______________________________.|  Keys -----|--------|----->   |
                |         **Disabled**        |                 |    **Buying when more ref**   |         <———————————●         |
                |         ************        |                 |          ************         |  Refs -----|--------|----->   |
                |        <——●————————●···>    |                 |         <——●                  |           min      max        |
                | Keys -----|--------|----->  |                 |  Keys -----|--------|----->   |_______________________________|
                |           ●————————●···>    |                 |            ○————————————>     |
                | Refs -----|--------|----->  |                 |  Refs -----|--------|----->   |
                |          min      max       |                 |           min      max        |
                |_____________________________|                 |_______________________________|

- Scrap adjustment 🧮 ^

Property: .scrapAdjustment

Option Type Default Description
.enable boolean false If set to true, the bot will make adjustments to the price of Keys when selling or buying. For example, if the current Keys price is "10 refined", the bot will take "10 refined" and add .value when buying, and subtract .value when selling. This is done in an effort to quickly buy and sell Keys using Autokeys when in a pinch by paying more for Keys and selling Keys for less. This is not possible to do when key banking (autokeys.banking.enable set to true).
.value integer 1 This is the amount of scrap (0.11 refined) the bot will increase the buy listing or decrease the sell listing when buying/selling Keys using Autokeys (if .enable is set to true).

- Accepting 🟩_UNDERSTOCKED ^

Property: .accept

Option Type Default Description
.understock boolean false If set to true, your bot will accept trades that will lead to keys become under-stocked.

Note: The Autokeys feature is meant to have your bot maintain enough pure in its inventory. Enabling "Autokeys - Banking" may cause the Autokeys feature to not perform as intended.


🔩 Crafting/Smelting Settings ^

Parent property key: crafting

- Manual crafting 🔨 ^

Option Type Default Description
.manual boolean false Set this to true if you want to use !craftToken command (more will come in the future).

- Weapons 🏹 ^

Property: .weapons

Option Type Default Description
.enable boolean true Setting this to to false will prevent your bot from automatically crafting any duplicated/class-matched craftable weapons into scrap. The pricelist takes priority over this config item. That is to say, if a craft weapon is in the pricelist, it will not be crafted into scrap.

- Pure metals ⚙️ ^

Property: .metals

Option Type Default Description
.enable boolean true Setting this to false (NOT recommended) will disable metal crafting entirely. This may cause your bot and the trade partner to not be able to trade because of missing pure.
.minScrap integer 9 If your bot has less Scrap Metal than this amount, it will smelt down Reclaimed Metal to maintain ample Scrap Metal supply.
.minRec integer 9 If your bot has less Reclaimed Metal than this amount, it will smelt down Refined Metal to maintain ample Reclaimed Metal supply.
.threshold integer 9 If the bot's Scrap/Reclaimed Metal count has reached the minimum amount, and Scrap/Reclaimed Metal count has reached this threshold [in other words, Scrap/Reclaimed Metal count is greater than (min + threshold)], it will combine the metal into the next highest denomination.

📥 Offer received filter settings ^

Parent property key: offerReceived

- Send pre-accept message 💬 ^

Property: .sendPreAcceptMessage

Option Type Default Description
.enable boolean true Set this to false if you do not want your bot to send pre-accepted message to the trade partner.

- Auto-decline offer that contains Non-TF2 items ❌ ^

Option Type Default Description
.alwaysDeclineNonTF2Items boolean true Set this to false if you want you do not want your bot to always decline trades that contains non-TF2 items (all Non-TF2 items will be held for review, read #580.

- On offer with 🟥_INVALID_VALUE ^

Property: .invalidValue

• Automatic decline settings ❌

Sub-Property: .autoDecline

Option Type Default Description
.enable boolean true Set this to false if you do not want your bot to automatically decline any trades with 🟥_INVALID_VALUE as the ONLY manual review reason where our side value is more than their side value, or do not match exceptionValue.skus and value difference is more than exceptionValue.valueInRef
.declineReply string "" See default declined reply.

• Invalid-value exception ✅

Sub-Property: .exceptionValue

Option Type Default Description
.skus string[] [] An array of SKUs that will bypass the 🟥_INVALID_VALUE offer if the difference between the bot's value and their value is not more than .valueInRef. Let's say your bot is selling an Unusual and someone sent an offer with 0.11 ref less, and you want your bot to accept it anyway.
.valueInRef integer 0 Exception value for the SKUs that you set above. The default is 0 (no exception).
  • Example when the bot accepts a trade that contains .skus and the difference in value not exceed .valueInRef (was set to 10 ref):
trade-summary-full2

- On offer with 🟨_INVALID_ITEMS ^

Property: .invalidItems

Option Type Default Description
.givePrice boolean false If set to true, your bot will assign price for 🟨_INVALID_ITEMS (items that are not in your price list) using prices from prices.tf.
.autoAcceptOverpay boolean true If set to false, your bot will not accept trades with 🟨_INVALID_ITEMS where the value of their side is greater than or equal to the value of your bot's side.
  • Example if .givePrice and .autoAcceptOverpay are both set to true:
trade-summary-full2

• Automatic decline settings ❌

Sub-Property: .autoDecline

Option Type Default Description
.enable boolean true Set this to false if you do not want your bot to automatically decline trades with 🟨_INVALID_ITEMS.
.declineReply string "" See default declined reply.

===

- On offer with 🟧_DISABLED_ITEMS ^

Property: .disabledItems

Option Type Default Description
.autoAccept Overpay boolean false If set to true, your bot will accept trades with 🟧_DISABLED_ITEMS where some items that exist in your price list is currently disabled but the value of their side is greater than to the value of your bot's side.

• Automatic decline settings ❌

Sub-Property: .autoDecline

Option Type Default Description
.enable boolean false Set this to true if you do want your bot to automatically decline trades with 🟧_DISABLED_ITEMS.
.declineReply string "" See default declined reply.

===

- On offer with 🟦_OVERSTOCKED ^

Property: .overstocked

Option Type Default Description
.autoAccept Overpay boolean false If set to true, your bot will accept trades with 🟦_OVERSTOCKED where some items already reach maximum the bot can have but the value of their side is greater than to the value of your bot's side.
  • Example if .autoAcceptOverpay is set to true:
trade-summary-full2

• Automatic decline settings ❌

Sub-Property: .autoDecline

Option Type Default Description
.enable boolean false Set this to true if you do want your bot to automatically decline trades with 🟦_OVERSTOCKED
.declineReply string "" See default declined reply.

===

- On offer with 🟩_UNDERSTOCKED ^

Property: .understocked

Option Type Default Description
.autoAccept Overpay boolean false If set to true, your bot will accept trades with 🟩_UNDERSTOCKED where some items will reach minimum the bot can have the trade is complete but the value of their side is greater than to the value of your bot's side.
  • Example if .autoAcceptOverpay is set to true:
trade-summary-full2

• Automatic decline settings ❌

Sub-Property: .autoDecline

Option Type Default Description
.enable boolean false Set this to true if you do want your bot to automatically decline trades with 🟩_UNDERSTOCKED
.declineReply string "" See default declined reply.

===

- On offer with 🟫_DUPED_ITEMS ^

Property: .duped

Option Type Default Description
.enableCheck boolean false If set to true, the bot will perform checks on items to determine whether or not they are duplicated.
.minKeys number 10 The minimum number of keys an item must be worth before the bot performs a check for whether or not it is duplicated.

• Automatic decline settings ❌

Sub-Property: .autoDecline

Option Type Default Description
.enable boolean false If set to true, the bot will decline any unusual or values more than minKeys items that it determines as having been duplicated.
.declineReply string "" See default declined reply.

===

- On offer with 🟪_DUPE_CHECK_FAILED ^

Property: .failedToCheckDuped

• Automatic decline settings ❌

Sub-Property: .autoDecline

Option Type Default Description
.enable boolean false If set to true, the bot will decline offer that was failed to check for duped.
.declineReply string "" See default declined reply.

===

- ⬜_ESCROW_CHECK_FAILED ^

Property: .escrowCheckFailed

Option Type Default Description
.ignoreFailed boolean false By default, your bot will skip the trade and put to review if escrow check failed (probably because Steam is down, or some problem with your bot - restart will help). Set this to true if you want your bot to ignore trade with failed escrow check (not recommended).

===

- ⬜_BANNED_CHECK_FAILED ^

Property: .bannedCheckFailed

Option Type Default Description
.ignoreFailed boolean false By default, your bot will skip the trade and put to review if banned check failed (probably because Steamrep.com or backpack.tf is down). Set this to true if you want your bot to ignore trade with banned check failed (not recommended).

- ⬜_HALTED ^

Property: .halted

Option Type Default Description
.ignoreHalted boolean false When the halt mode is enabled, by default, your bot will skip the trade and put to review if someone sent an offer (might happen when the classified listings are being removed).

🔍 Manual Review Configuration ^

Parent-Property: manualReview

- General 🎚️ ^

Option Type Default Description
.enable boolean true Offers with reasons such as 🟥_INVALID_VALUE and so on will require manual review by you.
.showOfferSummary boolean true If set to true, your bot will show the trade offer summary to the trade partner. Otherwise, it will only notify the trade partner that their offer is being held for review.
.showReviewOfferNote boolean true By default, your bot will show notes on for each manual review reason
.showOwnerCurrentTime boolean true By default, your bot will show the owner's time when sending your trade partner any manual offer review notifications.
.showItemPrices boolean true set to true if you want to include item prices (buying/selling prices) - only for owner.

- Custom manual review reply 💬 ^

• 🟥_INVALID_VALUE

Sub-Property: .invalidValue

Option Type Default Default reply
.note string "" You're taking too much in value. then followed by [You're missing: ${value}] (unchangeable)

===

• 🟨_INVALID_ITEMS

Sub-Property: .invalidItems

Option Type Default Default reply
.note string "" %itemsName% %isOrAre% not in my pricelist.
  • Parameters:

    • %itemsName% - join(', ') of ${name} array
    • %isOrAre% - will use are if 🟨_INVALID_ITEMS more than one.
  • Example: "Dueling Mini-Game, Secret Saxton are not in my pricelist."

===

• 🟧_DISABLED_ITEMS

Sub-Property: .disabledItems

Option Type Default Default reply
.note string "" %itemsName% %isOrAre% currently disabled.
  • Parameters:

    • %itemsName% - join(', ') of ${name} array
    • %isOrAre% - will use are if 🟧_DISABLED_ITEMS more than one.
  • Example: "Dueling Mini-Game, Secret Saxton are currently disabled."

===

• 🟦_OVERSTOCKED

Sub-Property: .overstocked

Option Type Default Default reply
.note string "" I can only buy %itemsName% right now.
  • Parameters:

    • %itemsName% - join(', ') of ${amountCanBuy} - ${name} array.
  • Example: "I can only buy 1 - Secret Saxton, 0 - Jag right now."

===

• 🟩_UNDERSTOCKED

Sub-Property: .understocked

Option Type Default Default reply
.note string "" I can only sell %itemsName% right now.
  • Parameters:

    • %itemsName% - join(', ') of ${amountCanSell} - ${name} array.
  • Example: "I can only sell 1 - Secret Saxton, 0 - Jag right now."

===

• 🟫_DUPED_ITEMS

Sub-Property: .duped

Option Type Default Default reply
.note string "" %itemsName% %isOrAre% appeared to be duped.
  • Parameters:

    • %itemsName% - a join of ${name}, history page: https://backpack.tf/item/${el.assetid} array
  • Example: "Strange Australium Black Box, history page: https://backpack.tf/item/562353463 is appeared to be duped"

===

• 🟪_DUPE_CHECK_FAILED

Sub-Property: .dupedCheckFailed

Option Type Default Default reply
.note string "" I failed to check for duped on %itemsName%.
  • Parameters:

    • %itemsName% - a string OR a join of ${name}, history page: https://backpack.tf/item/${el.assetid} array
  • Example: "I failed to check for duped on Strange Australium Black Box, history page: https://backpack.tf/item/562353463"

===

• ⬜_ESCROW_CHECK_FAILED

Sub-Property: .escrowCheckFailed

Option Type Default Default reply
.note string "" Steam is down and I failed to check your Escrow (Trade holds) status, please wait for my owner to manually accept/decline your offer.

===

• ⬜_BANNED_CHECK_FAILED

Sub-Property: .bannedCheckFailed

Option Type Default Default reply
.note string "" I have failed to obtain data about your reputation status, please wait for my owner to manually accept/decline your offer.

• ⬜_HALTED

Sub-Property: .halted

Option Type Default Default reply
.note string "" ❌ The bot is not operational right now, but your offer has been put to review, please wait for my owner to manually accept/decline your offer.

===

- Custom addtional reply 💬 ^

Option Type Default Description
.note string "" Custom additional notes for offer that need to be reviewed.

🕸️ Discord Webhook ^

Parent property: discordWebhook

- General Configuration ⚙️ ^

Option Type Default Description
.ownerID string[] (number) [] Your Discord ID(s). To obtain this, right-click on yourself on Discord and click Copy ID. Be sure to enable Developer Mode on Discord by navigating to Settings > Appearance > Advanced. It must be a number in string like "527868979600031765" not "IdiNium#8965".
.displayName string "" The name you'd like to give your bot when it sends a message on Discord.
.avatarURL string "" A URL to the image you'd like your bot to have when it sends a discord message. This must be in URL form. An example of how to obtain your bot's avatar from Steam: Click here.
.embedColor string (number) "" The color you'd like associated with your bot's discord messages. You can view the different colors at spycolor.com. Copy the Decimal value. An example of this would be 16769280 for the color #ffe100

Note on how to obtain your Discord Webhook URL

Please view this image for instructions on how to obtain your Discord Webhook URL. These settings would be set in your own personal Discord channel.


- Trade Summary Configuration ^

Property: .tradeSummary

Option Type Default Description
.enable boolean true Display each successful trade summary on your trade summary/live-trades channel via Discord Webhook. If set to false, it will send to your Steam Chat.
.url string[] [] An array of Discord Webhook URLs for trade summary. You will need to format it like so: ["yourDiscordWebhookLink"], or if you want to add more than one, you format them like so: ["link1", "link2"] (separate each link with a comma, make sure link1 is your own Discord Webhook URL - Mention owner and show stock changes will only be shown in link1).

Note: Want to feature your bots trades on the tf2autobot Discord server? Contact IdiNium for a Webhook URL!

• Misc

Sub-Property: .misc

Option Type Default Description
.showQuickLinks boolean true Show the trade partner's quick links to their Steam profile, backpack.tf, and SteamREP pages.
.showKeyRate boolean true Show your bot's key rate
.showPureStock boolean true Show your bot's pure stock
.showInventory boolean true Show the total amount of items in your bot's inventory.
.note string "" Any additional notes you'd like included with trade summaries. Linked note format: [YourText](Link)
trade-summary-full

• Mention on specific items (using sku)

Sub-Property: .mentionOwner

Option Type Default Description
.enable boolean true If set to false, your bot will never mention you on each successful trade (except for accepted 🟨_INVALID_ITEMS or 🔶_HIGH_VALUE_ITEMS)
.itemSkus string[] [] Your bot will mention you whenever a trade contains an SKU in this list. Supports multiple item SKUs. For example, let say you just want to be mentioned on every unusual and australium trade. You would input [";5;u", ";11;australium"]. If you want to be mentioned on specific items, just fill in the full item SKU, like so: ["725;6;uncraftable"]. To add more, just separate new items with a comma between each SKU string.
.tradeValueInRef number 0 Zero means disable. If this is set to other than 0, then any trade that's greater or equal to set value will be mentioned.
trade-summary-full2

- Declined Trade Configuration ^

Property: .declinedTrade

Option Type Default Description
.enable boolean true If set to false, messages regarding declined trade offers will be sent to your Steam Chat. Otherwise, these messages will be sent on Discord (only if .url is not empty).
.url string[] [] Discord Webhook URL for DECLINED_TRADE.

• Misc

Object: .misc

Option Type Default Description
.showQuickLinks boolean true Show the trade partner's quick links to their Steam profile, backpack.tf, and SteamREP pages.
.showKeyRate boolean true Show your bot's key rate.
.showPureStock boolean true Show your bot's pure stock.
.showInventory boolean true Show the total amount of items in your bot's inventory.
.note string "" Any additional notes you'd like included with declined trade webhook.

- Trade Offer Review Configuration ^

Property: .offerReview

Option Type Default Description
.enable boolean true If set to false, messages regarding trade offers that require manual review will be sent to your Steam Chat. Otherwise, these messages will be sent on Discord.
.url string "" Discord Webhook URL for REVIEW_OFFER.
.mentionInvalidValue boolean true If set to false, your bot NOT mention you for ONLY 🟥_INVALID_VALUE offers.
.isMention boolean true If set to false, you will never be mentioned on any offer to be reviewed.
  • An example if .mentionInvalidValue is set to false:
only non-invalid-value2

• Misc

Object: .misc

Option Type Default Description
.showQuickLinks boolean true Show the trade partner's quick links to their Steam profile, backpack.tf, and SteamREP pages.
.showKeyRate boolean true Show your bot's key rate.
.showPureStock boolean true Show your bot's pure stock.
.showInventory boolean true Show the total amount of items in your bot's inventory.
only non-invalid-value2

- Trade Partner Message Configuration ^

Property: .messages

Option Type Default Description
.enable boolean true Used to alert you on any messages sent from the trade partner via Discord Webhook. If set to false, it will send to your Steam Chat.
.isMention boolean true If set to false, you will never be mentioned on any new messages from trade partner.
.url string "" Discord Webhook URL.
.showQuickLinks boolean true Show the trade partner's quick links to their Steam profile, backpack.tf, and SteamREP pages.

only non-invalid-value2

- Pricelist Update Configuration ^

Property: .priceUpdate

Option Type Default Description
.enable boolean true Set to false to disable this feature.
.showOnlyInStock boolean false Set to true if you want your bot to show price changes that is only in stock.
.showFailedToUpdate boolean true Set to false if you don't want your bot to show any error while updating prices.
.url string "" The Discord Webhook URL you'd like price update webhook to be sent to.
.note string "" Any additional notes you'd like included with price update webhook.

only non-invalid-value2

- Send Alert Configuration ^

Property: .sendAlert

Option Type Default Description
.enable boolean true If set to false, the bot will notify you through Steam chat if there is something wrong. Otherwise, the bot will notify you through Discord (sendAlert must be true).
.isMention boolean true If set to false, you will never be mentioned on any alert.

• URL

Object: .url

Option Type Default Description
.main string "" The main Discord Webhook URL you'd for the alert to be sent to.
.partialPriceUpdate string "" Optional - Separate partial price update alerts from the main alerts.

url-main
url-ppu

- Send Statistic Configuration ^

Property: .sendStats

Option Type Default Description
.enable boolean true If set to false, the bot will send stats through Steam chat. Otherwise, the bot will send stats to Discord (statistics.autoSendStats.enable must be true and statistics.autoSendStats.time is empty or filled).
.url string "" The Discord Webhook URL you'd for the stats to be sent to.

only non-invalid-value2

💬 Custom message/reply ^

Parent property: customMessage

- Sending offer message ^

Option Type Default Description
.sendOffer string "" "Thank you for the trade!"

===

- Counter offer message ^

Option Type Default Description
.counterOffer string "" "Your offer contains wrong value. You've probably made a few mistakes, here's the correct offer."

===

- Welcome message ^

Option Type Default Description
.welcome string "" Your custom greeting note.
  • Parameters:

    • %name% - display trade partner's name
    • %admin% - if admin, it will use "!help", else "!how2trade"
  • Default message: Hi %name%! If you don't know how things work, please type "!%admin%"

===

- Invalid command reply ^

Option Type Default Description
.iDontKnowWhatYouMean string "" Your custom note when people send the wrong command.
  • Default message: ❌ I don't know what you mean, please type "!help" for all of my commands!

===

- Message on trade completed ^

Option Type Default Description
.success string "" Bot message when a trade has been successfully made.
  • Default message: /pre ✅ Success! The offer went through successfully.
  • Read: FAQ

===

- Message on accepted escrow trade ^

Option Type Default Description
.success string "" Bot message when a trade has been successfully made.
  • Default message:
✅ Success! The offer has gone through successfully, but you will receive your items after several days. To prevent this from happening in the future, please enable Steam Guard Mobile Authenticator.

Read:
• Steam Guard Mobile Authenticator - https://support.steampowered.com/kb_article.php?ref=8625-WRAH-9030
• How to set up the Steam Guard Mobile Authenticator - https://support.steampowered.com/kb_article.php?ref=4440-RTUI-9218"

===

- Message on declined trades ^

Sub-property: .decline

Option Type Default Description
.decline[DECLINE_REASON] string "" Refer: Default declined reply.

===

- Message on accepted trades ^

Sub-property: .accepted

Option Type Default Description
.accepted[AutoOrManual][type] string "" Refer: Default accepted message.

===

- Traded away message ^

Option Type Default Description
.tradedAway string "" Your custom note when the bot fails to trade because the item is traded away.
  • Default message: /pre ❌ Ohh nooooes! Your offer is no longer available. Reason: Items not available (traded away in a different trade).

===

- Fail to perform mobile confirmation message ^

Option Type Default Description
.failedMobileConfirmation string "" Your custom note when the bot fails to perform mobile confirmation.
  • Default message: /pre ❌ Ohh nooooes! The offer is no longer available. Reason: Failed to accept mobile confirmation

===

- Message on trade canceled ^

Option Type Default Description
.cancelledActiveForAwhile string "" Your custom note when the trade got canceled.
  • Default message: /pre ❌ Ohh nooooes! The offer is no longer available. Reason: The offer has been active for a while. If the offer was just created, this is likely an issue on Steam's end. Please try again

===

- Message on clearing friend ^

Option Type Default Description
.clearFriends string "" Your custom message to trade partner when the bot removing them to replace with others.
  • Default message: /quote I am cleaning up my friend list and you have randomly been selected to be removed. Please feel free to add me again if you want to trade at a later time!
  • Parameter:
    • %name% - partner's name

❗ Command settings ^

Parent property: commands

Option Type Default Description
.enable boolean true Set to false if you want to disable commands (immune to ADMINS).
.customDisableReply string "" Default reply: ❌ Command function is disabled by the owner.

- !how2trade ^

Property: .how2trade.customReply

Option Type Default
.reply string ""
  • Default reply:
/quote You can either send me an offer yourself or use one of my commands to request a trade. Say you want to buy a Team Captain, just type "!buy Team Captain", if want to buy more, just add the [amount] - "!buy 2 Team Captain". Type "!help" for all the commands.
You can also buy or sell multiple items by using the "!buycart [amount] <item name>" or "!sellcart [amount] <item name>" commands.

===

- !price ^

Property: .price

Option Type Default Description
.enable boolean true Set to false if want to disable !price command.
.customReply.disabled string "" Default reply: ❌ This command is disabled by the owner.

===

- !buy / !sell / !buycart / !sellcart ^

Property: .buy | .sell | .buycart | .sellcart

Option Type Default Description
.enable boolean true Set to false if want to disable any of the stated commands.
.disableForSKU string[] "" Set specific sku(s) to disable any of the stated commands.

• Custom reply

Sub-property: .customReply

Option Type Default Description
.disabled string "" Default reply: ❌ This command is disabled by the owner.
.disabledForSKU string "" Default reply: ❌ [command] command is disabled for %itemName%.
  • Parameter (for .disabledForSKU): %itemName%
    • output: The name of an item of specified SKU

===

- !cart ^

Property: .cart

Option Type Default Description
.enable boolean true Set to false if want to disable !cart command.

• Custom reply

Sub-property: .customReply

Option Type Default Description
.title string "" Default reply: 🛒== YOUR CART ==🛒
.disabled string "" Default reply: ❌ This command is disabled by the owner.

===

- !clearcart ^

Property: .clearcart

Option Type Default Description
.customReply.reply string "" Default reply: 🛒 Your cart has been cleared.

===

- !checkout ^

Property: .checkout

Option Type Default Description
.customReply.empty string "" Default reply: 🛒 Your cart is empty.

===

- (not a command) When adding to the queue ^

Property: .addToQueue

• Already have an active offer

Option Type Default
.alreadyHaveActiveOffer string ""
  • Default reply: ❌ You already have an active offer! Please finish it before requesting a new one: %tradeurl%
  • Parameter:
    • %tradeurl% - output: https://steamcommunity.com/tradeoffer/${activeOfferID}

///

• Already in the queue, processing offer

Option Type Default Default reply
.alreadyInQueueProcessingOffer string "" ⚠️ You are already in the queue! Please wait while I process your offer.

///

• Already in the queue, waiting a turn

Option Type Default
.alreadyInQueueWaitingTurn string ""
  • Default reply: ✅ You have been added to the queue! Please wait your turn, there %isOrAre% %position% in front of you.
  • Parameter:
    • %isOrAre% - more than 1 use "are", else "is"
    • %position% - total queue position

///

• Added to queue, waiting a turn

Option Type Default
.addedToQueueWaitingTurn string ""
  • Default reply: ✅ You have been added to the queue! Please wait your turn, there %isOrAre% %position% in front of you.
  • Parameter:
    • %isOrAre% - more than 1 use "are", else "is"
    • %position% - total queue position

///

• Altered offer

Option Type Default
.alteredOffer string ""
  • Default reply: ⚠️ Your offer has been altered. Reason: %altered%.
  • Parameter:
    • %altered% - altered message - unchangeable

///

• Processing offer message

Sub-Property: .processingOffer

Option Type Default Default reply
.donation string "" ⌛ Please wait while I process your donation! %summarize%
.isBuyingPremium string "" ⌛ Please wait while I process your premium purchase! %summarize%
.offer string "" ⌛ Please wait while I process your offer! %summarize%
  • Parameter:
    • %summarize% - summarize message - unchangeable

///

• Accepting Mobile confirmation message

Sub-Property: .hasBeenMadeAcceptingMobileConfirmation

Option Type Default Default reply
.donation string "" ⌛ Your donation has been made! Please wait while I accept the mobile confirmation.
.isBuyingPremium string "" ⌛ Your premium purchase has been made! Please wait while I accept the mobile confirmation.
.offer string "" ⌛ Your offer has been made! Please wait while I accept the mobile confirmation.

===

- !cancel ^

Property: .cancel.customReply

Option Type Default Default reply
.isBeingSent string "" ⚠️ Your offer is already being sent! Please try again when the offer is active.
.isCancelling string "" ⚠️ Your offer is already being canceled. Please wait a few seconds for it to be canceled.
.isRemovedFromQueue string "" ✅ You have been removed from the queue.
.noActiveOffer string "" ❌ You don't have an active offer.
.successCancel string "" /pre ❌ Ohh nooooes! The offer is no longer available. Reason: Offer was canceled by user.

===

- !queue ^

Property: .queue.customReply

Option Type Default Default reply
.notInQueue string "" ❌ You are not in the queue.
.offerBeingMade string "" ⌛ Your offer is being made.
.hasPosition string "" There are %position% users ahead of you.
  • Parameter:
    • %position% - total position in queue

===

- !owner ^

Property: .owner

Option Type Default Description
.enable boolean true Set to false if want to disable !owner command (ADMINS are immune).

• Custom reply

Sub-Property: .customReply

Option Type Default Default reply
.disabled string "" ❌ This command is disabled by the owner.
.reply string "" • Steam: %steamurl%\n• Backpack.tf: %bptfurl%
  • Parameters:
    • %steamurl% - https://steamcommunity.com/profiles/${firstAdmin.toString()}
    • %bptfurl% - https://backpack.tf/profiles/${firstAdmin.toString()}
    • %steamid% - SteamID64 of the first ADMINS element

===

- !discord ^

Property: .discord

Option Type Default Description
.enable boolean true Set to false if want to disable !discord command (ADMINS are immune).
.inviteURL string "" Default: https://discord.gg/4k5tmMkXjB.

• Custom reply

Sub-Property: .customReply

Option Type Default Default reply
.disabled string "" ❌ This command is disabled by the owner.
.reply string "" Refer below

===

- !more / !autokeys ^

Property: .more | .autokeys

Option Type Default Description
.enable boolean true Set to false if want to disable !more command (ADMINS are immune).
.customReply .disabled string "" Default reply: ❌ This command is disabled by the owner..

===

- !message ^

Property: .message

Option Type Default Description
.enable boolean true Set to false if want to disable !message command (ADMINS are immune).
.showOwnerName boolean true Set to false if you don't want the bot to show your name (will be replaced with "the owner").

• Custom reply

Sub-Property: .customReply

Option Type Default Default reply
.disabled string "" ❌ This command is disabled by the owner.
.wrongSyntax string "" ❌ Please include a message. Here's an example: "!message Hi"
.fromOwner string "" /quote 💬 Message from the owner: %reply%\n\n❔ Hint: You can use the !message command to respond to the owner of this bot.\nExample: !message Hi Thanks!
.success string "" ✅ Your message has been sent.
  • Parameter: %reply% - Your reply

===

- !time / !uptime / !pure / !rate ^

Property: .time | .uptime | .pure | .rate

Option Type Default Description
.enable boolean true Set to false if want to disable any of these commands (ADMINS are immune).

• Custom reply

Sub-Property: .customReply

Option Type Default Default reply
.disabled string "" ❌ This command is disabled by the owner.
.reply string "" Refer below
  • !time

    • Default reply: It is currently the following time in my owner's timezone: %emoji% %time%\n\n%note%
    • Parameter:
      • %emoji% - clock emoji
      • %time% - full time format
      • %note% - additional notes
  • !uptime

    • Default reply: Bot has been up for %uptime%
    • Parameter:
      • %uptime% - total uptime
  • !pure

    • Default reply: 💰 I have %pure% in my inventory.
    • Parameter:
      • %pure% - a join('and') of pureStock array
    • Example: I have 31 keys and 17.44 refs (12 ref, 11 rec, 16 scrap) in my inventory.
  • !rate

    • Parameters:
      • %keyPrice% - current sell price
      • %keyRate% - current buy/sell price
      • %source% - show pricestf url if autopriced, "manual" if manually priced
    • Default reply:
I value 🔑 Mann Co. Supply Crate Keys at %keyprice%. This means that one key is the same as %keyprice% and %keyprice% is the same as one key.

Key rate source: %source%"

===

- !stock ^

Property: .stock

Option Type Default Description
.enable boolean true Set to false if want to disable !stock command (ADMINS are immune).
.maximumItems integer 20 Maximum number of items to be shown. Default is 20.

• Custom reply

Sub-Property: .customReply

Option Type Default Default reply
.disabled string "" ❌ This command is disabled by the owner.
.reply string "" /pre 📜 Here's a list of all the items that I have in my inventory:\n%stocklist%
  • Parameter:
    • %stocklist% - a join(', \n') array of the items your bot have (up to stock.maximumItems).

===

- !craftweapon / !uncraftweapon ^

Property: .craftweapon | .uncraftweapon

Option Type Default Description
.enable boolean true Set to false if want to disable !craftweapon or !uncraftweapon command (ADMINS are immune).
.showOnlyExist boolean true Set to false if want show all weapons, including no stock.

• Custom reply

Sub-Property: .customReply

Option Type Default Default reply
.disabled string "" ❌ This command is disabled by the owner.
.dontHave string "" ❌ I don't have any craftable (or uncraftable) weapons in my inventory.
.have string "" 📃 Here's a list of all craft (or uncraft) weapons stock in my inventory:\n\n%list%
  • Parameter:
    • %list% - a join(', \n') array of craftable (or uncraftable) weapons that your bot have.

Extra ^

Parent property: detailsExtra

- Custom spell text on listing note

Property: .spells[spellName]

///

- Custom sheen text on listing note

Property: .sheens[sheenName]

///

- Custom killstreakers text on listing note

Property: .killstreakers[killstreakerName]

///

- Paints

• Custom painted text on listing note

Property: .painted[paintName].stringNote

===

• Custom additional price for automatic add painted items

Property: .painted[paintName].price

///

- Custom Strange Part text on listing note

Property: .strangeParts[strangePartName]

Clone this wiki locally