Key Features of Azeroth Auction Assassin: Complete Guide to WoW Market Sniping
Azeroth Auction Assassin is a high-performance, open-source auction house sniper for World of Warcraft that monitors live market data across all connected realms and instantly notifies users of profitable deals via Discord alerts.
Azeroth Auction Assassin (AAA) enables traders to automate market surveillance across retail and Classic versions of World of Warcraft. The application architecture separates data acquisition, business logic, and presentation layers to provide a fast, configurable scanning experience. Understanding the key features of Azeroth Auction Assassin allows users to leverage its dual-interface design and advanced filtering capabilities for maximum gold-making efficiency.
Cross-Realm and Cross-Region Scanning
AAA queries all connected realms for selected regions—EU, NA, EU Classic, NA Classic, and Season of Discovery (SoD) Classic—through a single request mechanism. The application utilizes region-specific JSON mappings stored in AzerothAuctionAssassinData/ (such as eu-wow-connected-realm-ids.json) to resolve realm connections without manual configuration.
The Qt interface implements dynamic realm loading through utils/realm_data.py. When users select a region from the dropdown (self.realm_region), the application automatically populates the available realm list by referencing the static dictionaries defined in the realm data utility. This implementation ensures comprehensive market coverage across disparate auction house clusters without requiring individual realm queries.
Real-Time Discord Alert System
The sniping functionality centers on immediate notification delivery. As soon as Blizzard updates auction data (approximately once per hour), the Saddlebag Exchange API pushes fresh pricing information. AAA fetches this data through utils/api_requests.py, applies user-defined discount thresholds (defaulting to 10%), and dispatches formatted Discord embeds via configurable webhook URLs (self.discord_webhook_input).
The core alert logic resides in mega_alerts.py, imported as from mega_alerts import Alerts within the main application. When users activate monitoring by pressing Start Alerts (self.start_button), the Item_And_Pet_Statistics QThread executes continuous polling cycles, comparing live market data against saved wishlists and triggering webhook dispatches immediately upon threshold matches.
Advanced Item and Pet Configuration
User preferences persist as JSON files within AzerothAuctionAssassinData/, specifically desired_items.json and desired_pets.json. These files map item IDs to maximum buyout prices in copper, enabling precise cost control.
The interface provides comprehensive list management through dedicated handlers:
- Add/Update: Modify individual entries with price validation
- Import: Bulk load external datasets
- Erase: Clear categories while preserving file structure
- Convert to PBS: Export data to Point-Blank Sniper compatible format
This PBS compatibility allows seamless migration of existing sniper configurations from other tools, ensuring continuity for veteran traders transitioning to AAA.
Item-Level (ilvl) and Bonus Targeting
Beyond basic price matching, AAA supports sophisticated gear filtering through the make_ilvl_page interface (lines L68-L78 in AzerothAuctionAssassin.py). Users can configure rules targeting specific item-level ranges while filtering for desirable bonus attributes including sockets, speed, leech, and avoidance.
The system accepts comma-separated bonus ID lists (e.g., 6652,10844) to identify gear with specific augmentations. For advanced users, Post-Midnight ilvl calculations adjust effective item levels based on seasonal scaling factors, ensuring accurate valuation of time-gated equipment upgrades.
Dual Interface Options: Qt5 Desktop and Electron
AAA provides two distinct frontend implementations catering to different runtime preferences.
Native Qt5 Application (AzerothAuctionAssassin.py):
- Full-featured desktop interface utilizing PyQt5
- Stacked page navigation with scrollable widget containers
- Native Windows app-ID registration for taskbar integration
- Direct filesystem access for immediate JSON configuration updates
Electron Frontend (node-ui/):
- Lightweight Node.js wrapper requiring runtime ≥18
- Cross-platform compatibility including macOS (
npm run build:mac) and Windows (npm run build:win) - Identical configuration panels rendering through Chromium
- Reduced memory footprint compared to Python Qt runtime
The Electron implementation interacts with the same JSON configuration files stored in AzerothAuctionAssassinData/, ensuring settings synchronization between interface modes.
Logging and Crash Recovery
Operational reliability is maintained through comprehensive logging infrastructure. The StreamToFile class (lines L63-L88) redirects all stdout and stderr streams to timestamped log files located at AzerothAuctionAssassinData/logs/aaa_log_YYYYMMDD_HHMMSS.txt.
Uncaught exceptions are captured by the handle_exception method and written to these logs with full stack traces, facilitating debugging without exposing sensitive data in the UI. This implementation ensures that scanning interruptions are documented for post-mortem analysis while maintaining application stability.
Authentication and Security Architecture
Market data access requires a Saddlebag Auction Assassin Token generated through the Saddlebag Discord bot. Optional Blizzard OAuth credentials (client ID and secret) are supported for future API expansions, with input fields available in the Settings page.
Security is maintained through local-only credential storage. Authentication tokens reside exclusively in user-managed JSON configuration files within AzerothAuctionAssassinData/, never hard-coded in source or transmitted to third parties beyond the official Saddlebag Exchange endpoints defined in utils/api_requests.py.
Configuration and Usage Examples
Running the Python Application
pip install -r requirements.txt
python AzerothAuctionAssassin.py
Place configuration files in AzerothAuctionAssassinData/ before launching:
desired_items.json— Item ID to price mappingsdesired_pets.json— Pet species ID configurations- Discord webhook URL set via UI or direct JSON editing
Click Start Alerts to begin monitoring across configured regions.
Item Configuration Format
AzerothAuctionAssassinData/desired_items.json:
{
"12345": 250000,
"67890": 1200000
}
Values represent maximum buyout prices in copper (100 copper = 1 silver, 10,000 copper = 1 gold).
Launching the Electron Interface
cd node-ui
npm install
npm start
The Electron window loads the same configuration panels as the Qt version, persisting changes to the shared JSON files.
Testing Discord Integration
import requests
webhook_url = "https://discord.com/api/webhooks/YOUR_WEBHOOK_URL"
payload = {
"embeds": [{
"title": "AAA Test Alert",
"description": "Item 12345 – 250k gold – EU-Realm 'Stormrage'",
"color": 0x00ff00
}]
}
requests.post(webhook_url, json=payload)
Replace webhook_url with the value configured in the Settings page to verify connectivity before live scanning.
Summary
- Multi-region support: Scan all connected realms across EU, NA, and Classic variants using static realm mappings from
utils/realm_data.py. - Instant notifications: Receive Discord alerts via webhooks when items match price thresholds, powered by the
mega_alerts.pyengine. - Flexible targeting: Configure items, pets, item-level ranges, and bonus IDs through JSON files with PBS import/export compatibility.
- Dual interfaces: Choose between the feature-rich Qt5 desktop application (
AzerothAuctionAssassin.py) or the lightweight Electron wrapper (node-ui/). - Robust logging: All operations are logged to timestamped files via
StreamToFilefor debugging and audit trails. - Secure authentication: Saddlebag tokens stored locally in
AzerothAuctionAssassinData/with optional Blizzard OAuth support.
Frequently Asked Questions
How does Azeroth Auction Assassin deliver alerts in real time?
The application polls the Saddlebag Exchange API—which aggregates Blizzard's hourly auction house updates—and processes results through the Item_And_Pet_Statistics QThread. When matches are found against desired_items.json or desired_pets.json, the mega_alerts.py module immediately dispatches formatted embeds to the Discord webhook URL configured in self.discord_webhook_input, typically delivering notifications within seconds of data availability.
What are the differences between the Qt5 and Electron interfaces?
The Qt5 interface (AzerothAuctionAssassin.py) provides native desktop integration with PyQt5 widgets and direct filesystem access, ideal for Windows users wanting a traditional application experience. The Electron interface (node-ui/main.js and node-ui/renderer.js) offers a web-based frontend using Node.js, supporting cross-platform builds for macOS and Windows with reduced resource overhead. Both interfaces read from and write to the same AzerothAuctionAssassinData/ JSON files, ensuring configuration portability.
How do I configure item-level (ilvl) targeting for specific gear attributes?
Navigate to the ilvl configuration page generated by make_ilvl_page (lines L68-L78), where you can define minimum item levels, maximum buyout prices, and comma-separated bonus IDs (such as 6652 for sockets). The system supports Post-Midnight ilvl calculations for seasonal gear scaling and can filter for tertiary stats including speed, leech, and avoidance through the bonus ID system.
Where are my authentication tokens stored?
Authentication credentials—including the required Saddlebag Auction Assassin Token and optional Blizzard OAuth details—are stored exclusively in local JSON files within the AzerothAuctionAssassinData/ directory. The application does not transmit these tokens to unauthorized endpoints; they are used solely to authenticate requests against the Saddlebag Exchange API endpoints defined in utils/api_requests.py.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →