{"id":26779551,"url":"https://github.com/skinnydevi/birbia-station-bot","last_synced_at":"2026-02-27T00:32:24.312Z","repository":{"id":106717844,"uuid":"471835733","full_name":"SkinnyDevi/birbia-station-bot","owner":"SkinnyDevi","description":"A fun discord bot with various features.","archived":false,"fork":false,"pushed_at":"2025-05-11T18:23:50.000Z","size":327,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-21T19:55:09.752Z","etag":null,"topics":["discord","discord-bot","discord-music-bot","discord-py","discordbot","discordpy","discordpy-bot"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SkinnyDevi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-03-19T23:34:29.000Z","updated_at":"2025-05-11T18:23:53.000Z","dependencies_parsed_at":"2023-12-18T18:47:25.484Z","dependency_job_id":"37ca54c4-8c71-4967-8c2c-b281f95a1e41","html_url":"https://github.com/SkinnyDevi/birbia-station-bot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SkinnyDevi/birbia-station-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkinnyDevi%2Fbirbia-station-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkinnyDevi%2Fbirbia-station-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkinnyDevi%2Fbirbia-station-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkinnyDevi%2Fbirbia-station-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SkinnyDevi","download_url":"https://codeload.github.com/SkinnyDevi/birbia-station-bot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkinnyDevi%2Fbirbia-station-bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29879018,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T23:51:21.483Z","status":"ssl_error","status_checked_at":"2026-02-26T23:50:46.793Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["discord","discord-bot","discord-music-bot","discord-py","discordbot","discordpy","discordpy-bot"],"created_at":"2025-03-29T06:17:47.584Z","updated_at":"2026-02-27T00:32:24.292Z","avatar_url":"https://github.com/SkinnyDevi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Birbia's Radio Station [3.3.1]\n\n![Birbia worker](https://media.tenor.com/tsjQt9PdSwoAAAAC/you-want.gif)\n\nFrom the all well known radio of Birbia's nation, we are now introducing Birbia's Radio Station in Discord!\n\nThis project grew from having the most popular discord music bots being taken down by YouTube.\n\nSo in short, ***I decided to make my own***.\n\n\n## Name origin\nFor those who don't know or don't follow bird content, the term **'Birbia'** is a name that was given to the land where all birds come from and live. Try searching up some funny memes and you'll see how fun it is. \n\nThe term itself derives from the funny way of saying 'bird' as 'birb', therefore 'Birbia'.\n\n## Features\n\n### Music\n- Search for videos from YouTube as it were YouTube's search bar, or link a YouTube video to play it in a voice chat!\n- Have control of what you listen to: ***play, pause, resume and skip*** audios and videos.\n- Custom queue manager to list all future videos to play.\n\n- Supported audio request platforms:\n\t- YouTube (URL and plain text search)\n\t- TikTok videos (URL search only)\n\t- Instagram videos (URL search only (Videos, Reels), videos in carousel not yet supported)\n\nAll of the above support caching! \nThis means that if you frequently use URLs for audio requests, using the same URLs after the first use will provide you with your request exponentially quicker!\n\n### Manga [+18]\n- Search for the sauces you've always been curious about.\n- Use it to get a random manga or find a specific sauce.\n\n### Languages\nCurrently supported languages:\n- English (en)\n- Spanish (es)\n\nTo contribute to language translations, please reference the existing language files\nand submit a pull request with your new language file. Pull requests run through a language key test\nto test if the language file has all the needed translations and are up-to-date.\n\n\n## Future Updates and Objectives\n\n### General features\n- ~~Language expansion~~ (2.2.0)\n\n### Music\n- Expand queue commands\n\t* ~~Jump to number in queue~~ (3.2.0)\n\t* Queue pagination\n\t* ~~Remove certain audio in X position of the queue~~ (3.2.0)\n\n- ~~Looping the current song~~ (3.1.0)\n- Ability to load and play playlists\n- ~~Caching system~~ (2.1.0)\n\n- Multiple query platforms (now easier to implement with v2.0.0)\n  * ~~Implement Instagram downloaders~~ (3.0.0)\n  * ~~Implement TikTok downloaders~~ (2.1.0)\n  * Implement Soundcloud downloaders\n  * Implement Spotify downloaders\n\n\n## For Developers\nIf you want to set up the bot yourself, this project as of v2.1.1 now uses venv (previously used poetry).\nTo setup the environment:\n```zsh\npy -m venv .venv # create an env\npip install --upgrade pip # update pip\npip install -r requirements.txt # install dependencies\n```\nTo start the bot. By default, the bot can run with two tokens:\n- A production token\n- A beta/testing token\n\nA custom `.env.example` file has been provided for you to play around with the settings:\n```py\nENV_IS_DEV=True\nBOT_TOKEN=\"Production_token_here\"\nBOT_DEV_TOKEN=\"Developer_token_here\"\n# Change the bot's prefix (don't include spaces)\nPREFIX=\"birbia\"\nDEV_PREFIX=\"birbia-beta\"\n# Default delay = 300s = 5 min\nDISCONNECT_DELAY=600\n# Timeout in seconds\nCMD_TIMEOUT=2\n# default max entriers are 20\nMAX_CACHE_ENTRIES=20\n# If none, defaults to english\nLANGUAGE=en\n# Log level\nLOG_LEVEL=\"INFO\"\n```\n\nAs of v2.1.0, a `docker-compose` has been provided to make the setup process of a docker container much more simpler.\n\nAs mentioned previously, rename your `.env.example` file to `.env` before executing the docker compose command.\n```yml\nversion: '3.1'\n\nservices:\n  bot:\n    restart: unless-stopped\n    env_file:\n      - .env\n    image: felixmv/birbia-station:latest\n\n```\n\nThe Dockerfile of the discord bot provided.\n```Dockerfile\nFROM python:3.10.6\n\nWORKDIR /birbia-station\n\n# Default ENV values.\n# Won't work if no env file is specified in docker-compose\nENV ENV_IS_DEV=False\nENV BOT_TOKEN=\"Production_token_here\"\nENV BOT_DEV_TOKEN=\"Developer_token_here\"\nENV PREFIX=\"birbia\"\nENV DEV_PREFIX=\"birbia-beta\"\nENV DISCONNECT_DELAY=600\nENV CMD_TIMEOUT=2\nENV MAX_CACHE_ENTRIES=20\nENV LANGUAGE=en\nENV LOG_LEVEL=\"INFO\"\n\nCOPY . .\n\nRUN pip install poetry\nRUN poetry install\n\nRUN apt-get -y update\nRUN apt-get -y upgrade\nRUN apt-get install -y ffmpeg\n\n```\n\nSince bots work using Cogs, every module from this bot has been divided into it's separate cogs. This means that if you wish to disable any section (mangas, music player, etc...), you can simply comment out the respective cog.\n\nCogs can be found inside *main.py*:\n```js\nMusicCog(bot) // Music player Cog\nUtilityCog(bot) // Utility Cog (purge messages, etc...)\nXCog(bot) // Manga Cog\nHelpCog(bot) // Hints help commands\n```\n\n## Changelog\n\n### [3.3.1]\n* Added an additional fix for the Tiktok audio searcher.\n* Fixed titles on XCog when only one title is present.\n\n### [3.3.0]\n* Fixed all audio searchers\n* Fixed the manga searcher\n* Updated all dependencies\n* General bot maintenance\n\n### [3.2.2]\n* Fixed Instagram queries with a new search method\n* Fixed TikTok queries no caching the correct video ID\n\n### [3.2.1]\n* Implemented log level for the logger.\n\n### [3.2.0]\n- Added jump to position in queue\n- Added remove position in queue\n* Implemented fail-safe for tiktok audios which have invalid links\n\n\n### [3.1.0]\n- Added looping the current songs with commands `loop` and `unloop`\n- Implemented new language keys for new command\n* Fixed TikTok service request errors\n\n### [3.0.5]\n- Implemented a keyword parsing system to use when declaring language files:\n\t- `$botname`: Uses an uppercase version of the bot prefix when referenced in text\n\t- `$prefix`: Uses the literal bot prefix when referenced in text\n\t* Example: \"$botname has successfully launched! Uses $prefix play to play a song.\"\n- Added `prefix` configuration to `.env`\n- Added `dev_prefix` configuration to `.env`\n\n### [3.0.4]\n* 'Fixed' `TikTokSeacher` failing due to incorrect certificates inside Docker image\n\t* The bug still occurs when requesting the first time, then disappears\n* Changed method for caching URLs using the URL itself instead of the request object with `urllib.request.urlopen`\n* Added generic `Exception` fo any error that occurs during the query search process\n* Added title limiter fo TikToks\n\n### [3.0.3]\n* Fixed parsing new URLs from Instagram downloader service\n* Fixed FFmpeg not converting from MP4 to MP3 when ran on Windows for `InstagramSearcher`\n\n### [3.0.2]\n* Added a cookie regeneration system for when cookies expire for the `InstagramSearcher`\n* Fixed a bug that threw and error when passing URLs containing '/reel/'\n\n### [3.0.1]\n* Changed Instagram downloader provider to a more reliable one\n* New provider successfully passes all tests in all cases\n\n### [3.0.0]\n- Added **Instagram audio/url searcher** implementation:\n\t- Supports Videos and Reels URLs\n\t- Warns when a photo post is passed\n\t- Currently doesn't support video carrousels\n\n### [2.2.0]\n- Added language support!\n- Added `LANGUAGE` configuration to `.env`\n- Supported languages:\n\t- English (en)\n\t- Spanish (es)\n\nTo contribute to language translations, please reference the existing language files\nand submit a pull request with your new language file. Pull requests run through a language key test\nto test if the language file has all the needed translations and are up-to-date.\n\n### [2.1.2]\n* Added a new method of caching YouTube urls:\n\t- Before, caching was made with the given URL, and downloading using `urllib.request.urlopen`. Now, caching is made by directly downloading using the `YouTubeDL` class\n\n### [2.1.1]\n* Reworked testing for consistency\n* General code refactorization\n* Fixed a bug for `YoutubeSearcher` which errored when searching in plain text or URLs\n\n### [2.1.0]\n- Added a caching system for reusing local audios instead of requesting every time.\n- Added **TikTok audio/url searcher** implementation\n- Added `MAX_CACHE_ENTRIES` configuration to `.env`\n- Implemented caching for TikTok and YouTube URLs\n- Reworked the docker building process:\n\t- Added custom environment variables to the image (previously hardcoded)\n\t- Added a docker compose file for ease of use\n\n### [2.0.0]\n- Reworked the entire music cog for better maintanance and readability\n- Added a general `AudioSearcher` class for a common class of platform audio searchers\n- Added a logger\n- Added custom exceptions\n- Added new configurations to `.env`\n* Fixes the error from 1.2.11 where the FFmpeg instance didn't work\n\n## Support and Contribution\nIf you like what I do and find it easy to set up this bot youself, I would love if you'd give the repo a star. Very much appreciated! \n\nFor any inquiries, you cant contact me through [my social links](https://github.com/SkinnyDevi/SkinnyDevi#im-available-in-the-following-social-media).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskinnydevi%2Fbirbia-station-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskinnydevi%2Fbirbia-station-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskinnydevi%2Fbirbia-station-bot/lists"}