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:

  1. A Debug System mirrors the entire production setup for testing.
  2. 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

Communication: MQTT, REST

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

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

Fig 3. Amazon Shop Monitor

Supported Shops:

Shop Name
AmazonKrakens Collection
Back to the ToysMighty Hobby
BalyotPlastic Empire
Barnes and NoblesPop Citi
BoxlunchPopcultcha
EMPPop In A Box CA
Entertainment EarthPop In A Box UK
Epic CollectiblesPop In A Box US
First Form CollectiblesShop Disney
Funko EuropeSideshow
Funko ShopTarget
FYEVRare
GamestopWalgreens
Hot TopicWalmart

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

Fig 4. Quiz Game