Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bhopp MM2 Sniper Bot

A Discord bot that polls the Bhopp MM2 marketplace (api.sublimelistings.com:5006) and DMs you a "Snipe Hit" alert whenever an item is listed meaningfully below its learned normal price. Read-only: it never buys, trades, or touches balances — it only alerts.

⚠️ Read this before deploying (Terms of Service)

Bhopp's API returns HTTP 403 to unrecognized clients and Bhopp's Terms of Service prohibit "use of any automated software," with account and balance forfeiture listed as a penalty. This bot reaches the listing endpoint by sending the client-fingerprint header the site itself sends (x-client-fp), which means it is operating past a protection Bhopp put up on purpose, against their stated terms.

That is a real risk to whatever account is associated with the traffic. If you're handing this to a client, make sure they accept that risk knowingly. A protection-respecting alternative (RoSkins, whose listing API is public and whose terms don't forbid it) was the prior approach; this build exists because Bhopp was explicitly requested. Use responsibly and at your own risk.

How the baseline works

Bhopp listings carry a value field, but for sniping the bot learns each item's normal price itself: every poll it records observed prices and keeps a rolling median per item name (the baseline). A new listing fires an alert when:

discount = (baseline - listed_price) / baseline
alert if discount >= MIN_DISCOUNT_PCT   (default 5%)

Because it learns from observed data, the bot needs a warm-up period (a few polls, and at least MIN_SAMPLES observations of a given item) before it will alert on that item. Baselines and already-alerted listing IDs persist in data/baseline.json, so warm-up happens only once.

A /watch <item> <max_price> command sets a hard price ceiling that overrides the baseline for that item.

Setup

  1. Create a Discord application + bot at https://discord.com/developers/applications → New Application → Bot. Copy the token. No privileged intents needed — the bot only DMs you, so it just needs a mutual server with you (invite it anywhere you're in) or DMs enabled.

  2. Get your Discord user ID — enable Developer Mode (Settings → Advanced), then right-click your name → Copy User ID.

  3. Configure

    cp .env.example .env
    # edit .env: set DISCORD_TOKEN and OWNER_USER_ID
  4. Install & run

    pip install -U discord.py aiohttp python-dotenv
    python3 bot.py

Slash commands

Command What it does
/search <query> [limit] Look up current listings by name
/deals [min_discount] Scan the market for listings below their value
/watch <item> <max_price> Add a hard price ceiling to the sniper watchlist
/watchlist Show the current watchlist
/unwatch <item> Remove an item from the watchlist

Background: every POLL_INTERVAL_MS the bot scans the newest FETCH_LIMIT listings and DMs you on each snipe hit.

Configuration (.env)

Var Default Meaning
DISCORD_TOKEN Bot token (required)
OWNER_USER_ID Discord user ID that receives the DMs (required)
MIN_DISCOUNT_PCT 5 Minimum % below baseline to trigger an alert
POLL_INTERVAL_MS 30000 How often to poll Bhopp (ms)
FETCH_LIMIT 50 Listings scanned per poll
MIN_SAMPLES 4 Observations needed for an item before it can alert

Files

  • bot.py — the full bot: slash commands + background sniper, DMs the owner, persists state.
  • sniper.py — standalone webhook-only version (no slash commands), if you just want alerts.
  • data/baseline.json — persisted price history + alerted IDs (auto-created).

Notes & limits

  • If Bhopp validates x-client-fp for real (not just presence), alerts will start failing with 403 — grab a live fingerprint from the browser's Network tab and set it in the headers.
  • The baseline is only as good as the data it has seen; rare items take longer to become reliable.
  • If Bhopp changes its API shape, normalize() and fetch_listings() in bot.py are the only parts that need updating.
  • The bot never buys anything — acting on an alert is a manual, human decision.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages