Skip to content

ItemsMatcherPlugin

Łukasz Domeradzki edited this page Jan 4, 2024 · 72 revisions

ItemsMatcherPlugin

ItemsMatcherPlugin is official ASF plugin that extends ASF with ASF STM listing features. In particular, this includes PublicListing in RemoteCommunication and MatchActively in TradingPreferences. ASF comes with ItemsMatcherPlugin bundled together with the release, therefore it's ready for usage right away.


PublicListing

Public listing, as the name implies, is listing of currently available ASF STM bots. It's located on our website, managed automatically and used as a public service for both ASF users that make use of MatchActively, as well as ASF and non-ASF users for manual matching.

In order to be listed, you have a set of requirements to meet. At the minimum, you must have allowed PublicListing in RemoteCommunication (default setting), SteamTradeMatcher enabled in TradingPreferences, public inventory privacy settings, an unrestricted account and ASF 2FA active. Additional requirements include 2FA active since at least 15 days, last password change more than 5 days ago, lack of any account limitations like lockdowns, economical bans and trade bans. Naturally, you must also have at least one item from your specified MatchableTypes, such as trading cards. In addition to that, bots with more than 500000 items are not accepted due to excessive overhead, we recommend to split your inventory across several accounts in this case.

While PublicListing is enabled by default, please note that you will not be displayed on the website if you do not meet all of the requirements, especially SteamTradeMatcher, which isn't enabled by default. For people that do not meet the criteria, even if they kept PublicListing enabled, ASF doesn't communicate with the server in any way. Public listing is also compatible only with latest stable version of ASF and may refuse to display outdated bots, especially if they're missing core functionality that can be found only in newer versions.

How it exactly works

ASF sends initial data once after logging in, that contains all properties public listing makes use of. Then, every 10 minutes ASF sends one, very tiny "heartbeat" request that notifies our server that the bot is still up and running. If for some reason the heartbeat didn't arrive, for example due to networking issues, then ASF will retry sending it each minute, until server registers it. This way our server knows precisely which bots are still running and ready to accept trade offers. ASF will also send initial announcement on as-needed basis, for example if it detects that our inventory has changed since the previous one.

We display all ASF 2FA+STM accounts that were active in the last 15 minutes. Users are sorted according to their relative usefulness - MatchEverything bots which are shown with Any banner that accept all 1:1 trades, then unique games count, and finally items count.

API

ASF STM listing only accepts ASF bots for time being. There is no way to list third-party bots on our listing for now, as we can't review their code easily and ensure they meet our entire trading logic. Participation in the listing therefore requires latest stable ASF version, although it can run with custom plugins.

For consumers of the listing, we have a very simple /Api/Listing/Bots endpoint that you can use. It includes all the data we have, apart from inventories of users which are part of MatchActively feature exclusively.

Privacy policy

If you agree to being listed in our listing, by enabling SteamTradeMatcher and not refusing PublicListing, as specified above, we'll temporarily store some of your Steam account details on our server in order to provide the expected functionality.

Public info (exposed by Steam to every interested party) includes:

  • Your Steam identificator (in 64-bit form, for generating links)
  • Your nickname (for display purposes)
  • Your avatar (hash, for display purposes)

Conditionally public info (exposed by Steam to every interested party if you meet listing requirements) includes:

  • Your inventory (so people can use MatchActively against your items).

Private info (selected data required for providing the functionality) includes:

  • Your trading token (so people outside of your friendlist can send you trades)
  • Your MatchableTypes setting (for display purposes and matching)
  • Your MatchEverything setting (for display purposes and matching)
  • Your MaxTradeHoldDuration setting (so other people know whether you're willing to accept their trades)

Your data is stored for a maximum of two weeks since you stop using (announcing on) our listing, and automatically deleted after that period.


MatchActively

MatchActively setting is active version of SteamTradeMatcher including interactive matching in which the bot will send trades to other people. It can work standalone, or together with SteamTradeMatcher setting. This feature requires LicenseID to be set, as it uses third-party server and paid resources to operate.

In order to make use of that option, you have a set of requirements to meet. At the minimum, you must have an unrestricted account, ASF 2FA active and at least one valid type in MatchableTypes, such as trading cards. Additional requirements include 2FA active since at least 15 days, last password change more than 5 days ago, lack of any account limitations like lockdowns, economical bans and trade bans.

If you meet all of the requirements above, ASF will periodically communicate with our public ASF STM listing in order to actively match bots that are currently available.

During matching, ASF bot will fetch its own inventory, then communicate with our server with it to find all possible MatchableTypes matches from other, currently available bots. Thanks to communicating directly with our server, this process requires a single request and we have immediate information whether any available bot offers something interesting for us - if match is found, ASF will send and confirm trade offer automatically.

This module is supposed to be transparent. Matching will start in approximately 1 hour since ASF start, and will repeat itself each 6 hours (if needed). MatchActively feature is aimed to be used as a long-run, periodical measure to ensure that we're actively heading towards sets completion, however, people that are not running ASF 24/7 may also consider using a match command. The target users of this module are primary accounts and "stash" alt accounts, although it can be used by any bot that is not set to MatchEverything. In addition to that, bots with more than 500000 items are not accepted for matching due to excessive overhead, we recommend to split your inventory across several accounts in this case.

ASF does its best to minimize the amount of requests and pressure generated by using this option, while at the same time maximizing efficiency of matching to the upper limit. The exact algorithm of choosing the bots to match and otherwise organize the whole process, is ASF's implementation detail and can change in regards to feedback, situation and possible future ideas.

The current version of the algorithm makes ASF prioritize Any bots first, especially those with better diversity of games that their items are from. When running out of Any bots, ASF will move on to the Fair ones upon same diversity rule. ASF will try to match every available bot at least once, to ensure that we're not missing on a possible set progress.

MatchActively takes into account bots that you blacklisted from trading through tbadd command and will not attempt to actively match them. This can be used for telling ASF which bots it should never match, even if they'd have potential dupes for us to use.

ASF will also do its best to ensure that the trade offers are going through. On the next run, which normally happens in 6 hours, ASF will cancel any pending trade offers that still weren't accepted, and deprioritize steamIDs taking part in them to hopefully prefer more active bots first. Still, if deprioritized bots are the last ones that have the match we need, we'll still attempt to match them (again).


Why do I need a LicenseID to use MatchActively? Wasn't it free before?

ASF is, and remains, free and open-source, as it was established at the start of the project back in October 2015. Source code of ItemsMatcher plugin and therefore MatchActively feature is available in our repository, while ASF program is entirely non-commercial, we do not earn anything from contributions to it, building or publishing. Over those past 7+ years ASF has received tremendous amount of development, and it's still being improved and enhanced with every monthly stable release mostly by a single person, JustArchi - with no strings attached. The only funding we receive is from non-obligatory donations that come from our users.

For a very long time, until October 2022, MatchActively feature was part of ASF core and available for everyone to use. In October 2022, Valve, the company behind Steam, has put very severe rate limits on fetching inventories of other bots - which rendered previous functionality entirely broken, with no possibility of a solution to resolve this problem. Therefore, due to the fact that the feature has became entirely defunct with no chance of being fixed, it had to be removed from ASF core as obsolete.

MatchActively was resurrected as part of official ItemsMatcher plugin that further enhances ASF with active cards matching functionality. Resurrecting MatchActively feature required from us extraordinary amount of work to create ASF backend, entirely new service hosted on a server, with more than a hundred of paid proxies attached for resolving inventories, all exclusively to allow ASF clients to make use of MatchActively like before. Due to the amount of work involved, as well as resources that are not free and require to be paid on monthly basis by us (domain, server, proxies), we've decided to offer this functionality to our sponsors, that is, people that already support ASF project on monthly basis, thanks to whom we can make those paid resources available.

Our goal isn't to profit from it, but rather, cover the monthly costs that are exclusively linked with offering this option - that's why we offer it basically for nothing, but we do have to charge a little for it as we can't pay hundreds of dollars from our own pockets each month, just to make it available for you. We're not really in a position to discuss the price either, it's Valve that forced those costs upon us, and the alternative is to not have such feature available at all, which of course applies if you decide, for whatever reason, that you can't justify using our plugin on those terms.

In any case, we understand that MatchActively is not for everybody, and we hope that you also understand why we can't offer it for free.


How can I get an access?

ItemsMatcher is offered as part of monthly $5+ sponsor tier on JustArchi's GitHub. It's also possible to become one-time sponsor, although in this case the license will be valid only for a month (with possibility of extension in the same way). Once you become a sponsor of $5 tier (or higher), read configuration section to obtain and fill LicenseID. Afterwards, you only need to enable MatchActively in TradingPreferences of your chosen bot.

The license allows you to send limited amount of requests to the server. $5 tier allows you to use MatchActively for one bot account (4 requests daily), and every additional $5 adds two more bot accounts (8 requests daily). For example, if you want to run it on three accounts, that'll be covered by $10 tier and higher.

Clone this wiki locally