# Counter anti-bot measures

**BUY/SELL TAX checker**

✅ **Available for all networks** ✅

Solyum Bot is now able to calculate buy and sell taxes on token

**`CONFIGURATION`** new options in tokens.json: - "BUY\_AND\_SELL\_TAXES\_CHECK": "true" - "MAX\_BUY\_TAX\_IN\_%": "20" - "MAX\_SELL\_TAX\_IN\_%": "20"

**`HOW TO UNDERSTAND IT`** Bot will not buy/sell if Tax is above those values --> with MAX\_BUY\_TAX\_IN\_% = 20, bot will not BUY if tax > 20%

**`DOES IT SLOWS DOWN THE BOT?`** Yes, since it needs to call a smart contract to calculate Tax...

**BUYAFTER\_XXX\_SECONDS SELLAFTER\_XXX\_SECONDS**

Sometimes the team will tell you "99% tax if you buy in the 2 first blocks", or "99% tax during 1 minute after launch"

\--> use this option to ask the bot to wait for XXX seconds before making BUY order.

FYI: 1 block = 3s on BSC, and 13s on ETH

**START\_BUY\_AFTER\_TIMESTAMP START\_SELL\_AFTER\_TIMESTAMP**

Sometimes the team will tell you "99% tax if you buy before XXXX timestamp"

\--> use this option to ask the bot to pause before time reach this timestamp.

Use <https://www.unixtimestamp.com/> to define value

**MULTIPLEBUYS / BUYCOUNT**

Sometimes the team will tell you "You can only buy a maximum of XXXX tokens" or "You can only buy a maximum of XXXX BNB / ETH / AVAX... of token"

\--> use this option to buy multiple times this small amount

**`CONFIGURATION`** in tokens.json, MULTIPLEBUYS has now 2 options :

**Option 1 :** buy with the **same wallet**

* "MULTIPLEBUYS" : "same\_wallet"
* "BUYCOUNT": (as many buys as you want)

**Option 2 :** buy with **different wallets** (the wallets you configured in settings.json)

* "MULTIPLEBUYS" : "several\_wallets"
* "BUYCOUNT": (maximum 5 buys, because there are 5 wallets in settings.json)

**CHECK IF TRADING IS ENABLED**

Sometimes liquidity is added but trading is not yet enabled. Team will enable trading later with a "EnableTrading" option. In this case, if you don't use options below, the bot will try to buy when trading is not enabled, resulting in a "TRANSFER\_FAILED" error. The difficulty is the fact that there are many ways to enable trading, so it is very difficult for the bot to detect it.

**Option 1 - CHECK\_IF\_TRADING\_IS\_ENABLED**

(available on BSC / AVAX / FTM only)

In tokens.json : CHECK\_IF\_TRADING\_IS\_ENABLED = true

\--> bot will check if trading is enabled after it detects liquidity.

![](https://sts-defi-bot.gitbook.io/~gitbook/image?url=https%3A%2F%2F1784350065-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FzaFWYawnXeaMS1zJDrEO%252Fuploads%252FIuDI2CV2s9kdOr7CHt9s%252F154.jpg%3Falt%3Dmedia%26token%3Daa0b4319-53ba-4293-b81e-98f6ca58529f\&width=768\&dpr=4\&quality=100\&sign=53c6e5a8\&sv=1)

**Option 2 - "WAIT\_FOR\_OPEN\_TRADE"**

{% hint style="info" %}
**This option can detect EnableTrading in 2 ways :** \
\
1/ The bot **scans pending transactions**, and detect the methodID of EnableTrading functions that we have implemented in the code --> It's faster, but we need to implement in the code as many ways to do EnableTrading as wa can, and it's impossible to guarantee that the team will not use an unknown way to Enable Trading \
\
2/ The bot **waits for the price to move** before making an order --> It's a "universal" way to detect that trading is enabled, but your sniping will be a little bit slower, since you need to wait for someone to buy before you.
{% endhint %}

**There are 4 options:**

| WAIT\_FOR\_OPEN\_TRADE value        | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **true\_after\_buy\_tx\_failed**    | <p><strong>1/</strong> Bot detects liquidity</p><p><strong>2/</strong> Bot try to make a BUY order</p><p><strong>3/</strong> If Tx fails, bot will launch wait\_for\_open\_trade With this option, bot will do 2 tests at the same time : <strong>1/ Scan pending transactions 2/ Wait for the price to move</strong></p><p>--> it will BUY if :</p><ul><li>it detects an openTrading Tx,</li><li>it sees the price moving ✅ <strong>This is the team's recommended option</strong></li></ul> |
| **true**                            | Same as "true\_after\_buy\_tx*failed",* but bot won't even try to make a Tx after it detected liquidity --> it will directly enter in WAIT FOR OPEN TRADE mode                                                                                                                                                                                                                                                                                                                                |
| **mempool\_after\_buy\_tx\_failed** | <p><strong>1/</strong> Bot detects liquidity</p><p><strong>2/</strong> Bot try to make a BUY order</p><p><strong>3/</strong> If Tx fails, bot will launch wait\_for\_open\_trade With this option, bot will do 1 test only : <strong>1/ Scan pending transactions </strong><del><strong>2/ Wait for the price to move</strong></del></p><p>--> it will BUY if it <strong>detects an openTrading Tx</strong></p>                                                                               |
| **mempool**                         | Same as "mempool\_after\_buy\_tx\_faile&#x64;*",* but bot won't even try to make a Tx after it detected liquidity --> it will directly enter in WAIT FOR OPEN TRADE mode                                                                                                                                                                                                                                                                                                                      |

{% hint style="info" %}
Examples of Tx that the bot will detect : [openTrading](https://bscscan.com/tx/0x468008dd3439b1802784f11a29dd82f195a2a239e381fa83c29dcc39b85024fb) / [enableTrading](https://etherscan.io/tx/0x303143b2015a398050a50e4dc2ef16668b974c06db2fd4c4e4abbe64f0c2d592) / [tradingStatus](https://bscscan.com/tx/0x19cac49bf8319689a7620935bf9466e469317992b994ec9692697a9ef71e3ace)
{% endhint %}

{% hint style="info" %}
WAIT\_FOR\_OPEN\_TRADE": "true\_after\_buy\_tx\_failed" is the **team recommandation** 👍 In our opinion, this is the best option because you never know if the team will use this antibot protection or not. This option guarantee you the best speed (if first BUY tx works) and security.
{% endhint %}

{% hint style="danger" %}
⚠️⚠️ **BE CAREFUL** ⚠️⚠️ To make "WAIT\_FOR\_OPEN\_TRADE": "true" or *"*&#x74;rue\_after\_buy\_tx\_failed" work, you need to **snipe on the same liquidity pair that liquidity** \
**added by the team**\
\
Why ? Because if you try to snipe in BUSD and liquidity is in BNB, price will move because of price movement between BUSD and BNB \
**Examples:** - Liquidity is in BNB or ETH : --> use LIQUIDITYINNATIVETOKEN = true / USECUSTOMBASEPAIR = false \
\
\- Liquidity is in BUSD --> use LIQUIDITYINNATIVETOKEN = false / USECUSTOMBASEPAIR = true / BASEADDRESS = 0xe9e7cea3dedca5984780bafc599bd69add087d56
{% endhint %}
