This is a submission for Weekend Challenge: Passion Edition
What I Built
I built the World Cup Rivalry Bot — a Telegram bot for fans who want their World Cup rivalry to feel alive in their own group chat. You set your team and your rival, and whenever a real goal happens in the tournament, the bot fires back an AI-generated hype line in your team's voice — followed by an imagined clapback from the rival's fans, spoken in a completely different voice.
It works in DMs and in group chats, and each person in a group can root for their own team independently. Since World Cup passion isn't just about scoring — it's about the back-and-forth banter between rival fans — I wanted the bot to capture both sides of that rivalry, not just one team's celebration.
Demo
Try it on Telegram: @worldcup_rivalry_bot
Quick flow:
-
/start→ set your team (e.g./team Brazil) /rival Argentina-
/autohype→ the bot starts watching real World Cup 2026 results for both your team and your rival -
/simulateor/simulaterival→ instantly demo the celebration pipeline without waiting for a real goal
Code
GitHub: https://github.com/Gbolaww/worldcup-rivalry-bot
How I Built It
The bot is written in Go and runs as a single long-polling process against the Telegram Bot API, deployed on Railway.
A few decisions worth calling out:
- Two voices, two AI models working together. Every goal celebration is a two-part exchange: Google's Gemini generates a short hype/trash-talk line for whichever team scored, and a second, different clapback line from the other side's perspective. Each line is converted to speech with ElevenLabs, using two distinct voice IDs — one for the "home" team's fans, one for the rival's — so it genuinely sounds like two different people talking past each other, not one narrator switching sides.
-
Real tournament data, not mocked results. The bot polls a public, free World Cup 2026 dataset to detect when a tracked team's goal total increases, and auto-fires the celebration — no manual trigger needed once
/autohypeis on. Since that data isn't second-by-second live, I added/simulateand/simulaterivalso the exact same detection-and-celebrate code path can be demoed instantly, without waiting on an actual goal. - Per-user state, not per-chat. Team and rival are tracked by Telegram user ID rather than chat ID, so a group of friends can all use the bot in the same group chat, each rooting for their own team, without stepping on each other's setup.
-
Getting the AI stack working was its own adventure. Both
gemini-1.5-flashandgemini-2.0-flashwere already fully deprecated by the time I built this, and ElevenLabs had recently locked free-tier API access to preset "library" voices — so most of Saturday went into just finding which models and voices were actually still available before I could write a single hype line.
Prize Categories
- Best Use of Google AI — Gemini generates both the hype line and the rival's comeback line for every goal.
- Best Use of ElevenLabs — Two distinct ElevenLabs voices bring each side of the rivalry to life as actual voice notes in the chat.

Top comments (0)