01/Python · Discord.py/Personal Project/2021 — 2022

Olympy

A Discord bot built during COVID lockdowns — to make online gaming sessions a little more fun when meeting in person wasn't an option.

The Story

COVID turned our friend group's weekends into Discord calls. We needed music, games, and a reason to stay on voice — so I built one.

Olympy started as a music bot and grew into something bigger as the lockdowns stretched on. The music system streams audio through a Lavalink Java server, the Amazon scraper lets the group find deals without leaving Discord, and the entertainment commands kept things lively during long sessions. Entirely solo, built for enjoyment, no roadmap — just adding whatever seemed fun next.

Type

Personal Project
Solo Development

Timeline

2021 — 2022

Commands

20+ across 3 categories

Status

Archived
Music deprecated (2022)

Music System

A full-featured audio player inside Discord

The music system is built on Wavelink — a Python wrapper around Lavalink, a Java-based audio server that handles the heavy lifting of audio streaming and processing. The bot connects to a local Lavalink node and delegates all audio work to it, keeping the Python process lightweight.

The system supports YouTube URLs, direct audio links, and text-based searches. Queue management, seek, repeat modes, lyrics retrieval, and a 15-band equalizer with presets (flat, boost, metal, piano) are all implemented. Volume goes up to 1000% — a feature the friend group made full use of.

Music features are no longer functional

YouTube tightened its policies in 2022, breaking the Lavalink streaming pipeline that Olympy relied on. The commands remain in the codebase as a record of the architecture — they just can't stream anything anymore.

Audio

  • Wavelink
  • Lavalink (Java 13+)
  • 15-band EQ

Playback

  • Queue management
  • Repeat modes
  • Seek + volume 0–1000%

Sources

  • YouTube (deprecated)
  • Direct audio URLs
  • Text search

Amazon Scraper

Multi-region product search, right in chat

The Amazon scraper lets anyone in the server search for products across the US, UK, and German Amazon storefronts without leaving Discord. Powered by Selenium WebDriver and BeautifulSoup4, it automates a Chrome browser headlessly, scrapes up to 20 pages of results, and returns a CSV file directly in the chat.

Each CSV row includes the product title, price, star rating, review count, and a direct Amazon URL. Rate limiting is built in to keep scraping respectful. It started as a quick script and ended up being one of the most-used features.

Automation

Selenium WebDriver + ChromeDriver

Parsing

BeautifulSoup4

Output

CSV — title, price, rating, reviews, URL

Command Reference

Everything Olympy could do

Prefix: -  · grayed commands are archived

Music

ARCHIVED
-play, -p[url | search term]Play from a YouTube URL, direct link, or text search. Joins the voice channel automatically.
-pausePause the currently playing track.
-resumeResume a paused track.
-stopStop playback and clear the queue.
-skip, -sSkip the current track and play the next in queue.
-previous, -prJump back to the previous track.
-queue, -qDisplay the current queue with track numbers and durations.
-volume, -v[0–1000]Set playback volume. Goes far beyond 100% for effect.
-seek[m:ss]Jump to a specific timestamp in the current track.
-lyrics, -lyFetch and display lyrics for the currently playing song.
-repeat, -r[none | track | queue]Set the repeat mode — off, loop single, or loop entire queue.
-equalizer, -eq[flat | boost | metal | piano]Apply a 15-band equalizer preset or reset to flat.
-connectConnect to the voice channel you are currently in.
-disconnect, -dcDisconnect from the voice channel and clear state.

Amazon Scraper

-amazon, -find[product] [pages] [country]Search Amazon for a product. Scrapes up to 20 pages of results and exports titles, prices, ratings, review counts, and URLs to CSV.
-amazonhelpShow usage instructions and supported country codes (com, co.uk, de).

Entertainment

-hello, -hReceive a random greeting from the bot.
-joke, -hahaGet a random joke.
-serverinfo, -sinfoDisplay stats for the current server: member count, creation date, region, and more.
-rps[rock | paper | scissors]Play rock-paper-scissors against the bot. Responds with an image.
-dm[user]Fun percentage calculator — slides into DMs with a result.
-creditsDisplay the bot credits and acknowledgements.

Tech Stack

Core

  • Python 3.8+
  • discord.py
  • asyncio
  • aiohttp

Music (archived)

  • Wavelink
  • Lavalink
  • Java 13+

Scraping

  • Selenium
  • BeautifulSoup4
  • ChromeDriver

Platform

  • Windows 10+
  • Windows auto-start
  • Discord API

See the code