The PopHolmes community is a dedicated group of over 5,000 Funko Pop enthusiasts. Their thriving Discord server is the hub for everything Funko Pop-related, and I had the privilege of working with Adam (the server owner) to build several custom Discord bots. If you’re passionate about Funko Pops, this community is the place to be!
To learn more, feel free to join their community or explore their Instagram.
How it all started
It started modestly - a single bot designed to scrape a few online shops and notify users when new items were available. The concept was simple and so was the code, but it worked effectively.
For the first few weeks, everything ran smoothly. However, as some shops updated their website structures and introduced security measures to block bots, challenges began to arise. To overcome these, I introduced features like proxy rotation and improved anti-bot detection strategies.
Over time, the bot grew in complexity, incorporating features like role mentions for notifications and even adding an entirely new bot.
Development
As the system expanded, manual deployments became tedious. I turned to Azure DevOps to streamline the process. Using Azure pipelines, I could automate the build, test, and deployment processes. A simple push to the main Git branch now triggers everything automatically.
To ensure reliability, I adopted a two-environment strategy:
- A Debug System mirrors the entire production setup for testing.
- The Main System hosts the live bots and connects to the Discord server.
All changes are tested on the Debug System before merging into the main branch to maintain a stable environment for the community.
Technologies
Languages/Frameworks: Python, C#, JavaScript, .NET Core, React
Storage: PostgreSQL, Redis
API Gateway: NGINX
Monitoring: Grafana, Prometheus
Containerization: Kubernetes, Docker
Features
Twitter Integration
The bot tracks specific Twitter accounts (e.g., @OriginalFunko) and posts notifications when new tweets are published. Filters can be applied for specific content, such as announcements about new Funko Pop figures.
Notifications
Due to Discord limitations, servers with over 1,000 members sometimes miss notifications. To address this, the bot automatically pings designated roles for important updates, ensuring no one misses out.
Commands
PPG Command
The !ppg command generates links to Pop Price Guide and eBay based on the input text. It also displays the top search result from Pop Price Guide.
Fig 2. ppg Command
Shop Monitors
Shop monitors are web crawlers that track product availability and notify users when items are restocked.
Fig 3. Amazon Shop Monitor
Supported Shops:
How It Works:
Each monitor runs in its own thread, periodically crawling specific URLs to parse product data. Changes in product status trigger notifications with details like the title, price, and image.
Some websites provide APIs, eliminating the need for web crawling.
Quiz Game
This interactive game challenges users to guess the name and number of Funko Pop figures based on manipulated images. Possible manipulations include:
- Pixelate: Reduces image resolution.
- Blur: Applies a blur effect.
- Crop: Shows only part of the image.
- Mosaic: Random tiles are blacked out.
The game has five difficulty levels:
- Easy: One random manipulation. (1 point)
- Normal: Three manipulations in sequence. (2 points)
- Hard: Four manipulations. (3 points)
- Mastermind: Six manipulations. (4 points)
- Impossible: Eight manipulations. (5 points)
Player scores are stored in a central database, with leaderboards showcasing the top 10 players. Quizzes start automatically during peak activity, with hints revealing letters of the answer every minute.
Currently, there are 874 images available for the game.
Fig 4. Quiz Game
