
aiode
Discord bot that plays Spotify tracks and YouTube videos or any URL including Soundcloud links and Twitch streams
Stars: 288

aiode is a Discord bot that plays Spotify tracks and YouTube videos or any URL including Soundcloud links and Twitch streams. It allows users to create cross-platform playlists, customize player commands, create custom command presets, adjust properties for deeper customization, sign in to Spotify to play personal playlists, manage access permissions for commands, customize bot summoning methods, and execute advanced admin commands. The bot also features a scripting sandbox for running and storing custom groovy scripts and modifying command behavior through interceptors.
README:
Discord bot that plays Spotify tracks and YouTube videos or any URL including Soundcloud links and Twitch streams.
Help keep aiode free and open source for everyone
- Play and search Spotify tracks and YouTube videos or playlists or play any URL including Soundcloud links and Twitch streams
- Create cross-platform playlists with tracks from any source
- Simple and customisable player commands
- Create custom command presets as shortcuts for your most used commands
- Adjustable properties for even deeper customisation
- Sign in to Spotify to play your own playlists or upload aiode playlists
- Manage what roles can access which commands
- Customise how you want to summon your bot by using a custom prefix or giving your bot a name
- Advanced admin commands such as updating and rebooting the bot or cleaning up the database available to bot administrators
- Capable scripting sandbox that enables running and storing custom groovy scripts and modifying command behavior through interceptors
Invite the bot to join your guild
1.1 Go to https://discordapp.com/developers/applications and create an application
2.1 Go to https://developer.spotify.com/dashboard/applications to create a Spotify application and copy the client id
Don't have a domain? You could either go without logins all together and still use most of aiode's features or use your router's public ip and setup port forwarding for your router.
3.1 Go to https://console.developers.google.com/ and create a project for the YouTube Data API and create and copy the credentials
4.1.1 Navigate to your cloned project and go to src/main/resources
and create the settings-private.properties
from the example below and fill in the blanks. This file is included in gitignore to make sure you don't accidentally publish it.
4.1.2 Adjust datasource properties and enter the database user and password, database setup will be discussed further in 4.2.1.
4.1.3 To take advantage of the admin commands that can perform administrative actions, such as updating and restarting the bot, be sure to add your Discord user id to the aiode.security.admin_users
property. To find your Discord user id, enable Developer Mode in the App Settings > Appearance. Then go to any guild, right click your user and click "Copy ID".
4.1.4 To supplement filebroker.io integration, you may set up a bot account and paste the username and password below. This ensures that the bot has access to all posts shared with that bot account.
4.1.5 Set up YouTube bot detection countermeasures if you are getting the "sign in to confirm you are not a bot" error (optional)
4.1.5.1 Enable YouTube OAUTH support for lavaplayer to avoid YouTube bot detection (causing the "sing in to confirm you are not a bot" error). Set value of aiode.tokens.yt-oauth-refresh-token
to "init" and follow the oauth flow, then replace the value with your token.
4.1.5.2 Set up a poToken by following the guide and setting the aiode.tokens.yt-po-token
and aiode.tokens.yt-po-visitor-data
properties.
##########
# tokens #
##########
aiode.tokens.discord_token=
aiode.tokens.spotify_client_id=
aiode.tokens.spotify_client_secret=
aiode.tokens.youtube_credentials=
############
# security #
############
#define user ids (comma separated) that may access admin commands. These users can always use each command irregardless of access configurations
aiode.security.admin_users=
##############
# datasource #
##############
spring.datasource.username=postgres
spring.datasource.password=postgres
########
# IPv6 #
########
# list IPv6 blocks to use for the lavaplayer route planner (comma separated)
aiode.preferences.ipv6_blocks=
##############################
# top.gg settings (optional) #
##############################
#copy your discord client id here
aiode.tokens.discord_bot_id=
#copy your top.gg token here
aiode.tokens.topgg_token=
#######################
# youtube credentials #
#######################
# set these properties to support age restricted videos on YouTube, see https://github.com/Walkyst/lavaplayer-fork/issues/18
aiode.tokens.yt-email=
aiode.tokens.yt-password=
aiode.tokens.yt-oauth-refresh-token=
aiode.tokens.yt-po-token=
aiode.tokens.yt-po-visitor-data=
##############
# filebroker #
##############
aiode.filebroker.bot_user_name=
aiode.filebroker.bot_user_password=
4.2.1 Review the datasource properties and make necessary adjustments. If you are using a local postgres server and name your database "aiode" you can leave it as it is. If you need help setting up your postgres server, please refer to their official documentation: http://www.postgresqltutorial.com/.
4.2.2 For Aiode to manage the YouTube API quota usage automatically, be sure to fill in the aiode.preferences.youtube_api_daily_quota
property; open the Google developer console and go to Library > YouTube Data API v3 > Manage > Quotas
4.2.3 Change the aiode.server.base_uri
property to your domain or public IP (without slash at the end) and adjust aiode.server.spotify_login_callback
to the corresponding endpoint for Spotify logins (normally BASE_URI + "/login")
Don't have a domain? You could either go without a web server all together and still use most of aiode's features or use your
router's public ip and setup port forwarding for your router to the machine where you're running aiode via the port specified by the SERVER_PORT
property.
###################
# server settings #
###################
aiode.server.port=8000
aiode.server.base_uri=http://localhost:8000
aiode.server.spotify_login_callback=http://localhost:8000/login
spring.liquibase.change-log=classpath:liquibase/dbchangelog.xml
spring.liquibase.contexts=definition,initialvalue,constraint
liquibase.change-log-path=src/main/resources/liquibase/dbchangelog.xml
liquibase.referenceUrl=hibernate:spring:net.robinfriedli.aiode.entities?dialect=org.hibernate.dialect.PostgreSQLDialect
###############
# preferences #
###############
# replace this value with your YouTube API Quota: open the Google developer console and go to Library > YouTube Data API v3 > Manage > Quotas
aiode.preferences.youtube_api_daily_quota=1000001
# partitioned = true means that data, such as playlists, presets and scripts will be separated between guilds
# if you host this bot privately and want to share data between few guilds you can set this property to 'false'
# however you should decide decide which mode to use before using the bot; if you have been using the bot with partitioned = true
# and several guilds have playlists or presets or scripts with the same name and you switch to partitioned = false then
# many queries will break because names are no longer unique
aiode.preferences.mode_partitioned=true
aiode.preferences.queue_size_max=10000
# maximum entity count per guild (if mode_partitioned = true, else entity count total)
aiode.preferences.playlist_count_max=50
aiode.preferences.playlist_size_max=5000
aiode.preferences.preset_count_max=100
aiode.preferences.script_count_max=100
aiode.preferences.interceptor_count_max=10
# defines max heap size for the bootRun task
aiode.preferences.max_heap_size=2048m
# disable / enable commands in the scripting category and custom scripted command interceptors
aiode.preferences.enable_scripting=true
##############
# datasource #
##############
spring.datasource.url=jdbc:postgresql://localhost:5432/aiode
spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.current_session_context_class=thread
# pool
spring.datasource.hikari.minimumIdle=5
spring.datasource.hikari.maximumPoolSize=50
# cache
spring.jpa.properties.hibernate.cache.use_query_cache=true
spring.jpa.properties.hibernate.cache.use_second_level_cache=true
spring.jpa.properties.hibernate.cache.region.factory_class=org.hibernate.cache.jcache.JCacheRegionFactory
spring.jpa.properties.hibernate.javax.cache.provider=org.ehcache.jsr107.EhcacheCachingProvider
spring.jpa.properties.hibernate.javax.cache.missing_cache_strategy=create
##############
# filebroker #
##############
aiode.filebroker.api_base_url=https://filebroker.io/api/
Requires:
- java jdk 21 or above (preferably 21, as it is the version used in development and thus main supported version)
- (only for the experimental webapp) rust and cargo-make with the
wasm32-unknown-unknown
target for the webapp
Install rust, preferably via rustup, then add the wasm32-unknown-unknown
target by running rustup target add wasm32-unknown-unknown
and install cargo-make with cargo install --force cargo-make
. Finally, navigate to src/main/webapp
and compile the webapp with cargo make build
.
Navigate to the project root directory and install aiode by running ./gradlew build
(or if you have gradle installed you can just run gradle build
).
Then you can launch aiode using the jar file or the bootRun gradle task. You can either run the
jar file in build/libs
by running java -jar build/libs/aiode-1.0-SNAPSHOT.jar
or run the bash script bash/launch.sh
or use the gradle bootRun task by running ./gradlew bootRun
. To keep the program running when closing the terminal window use a
terminal multiplexer tool like tmux (Unix-like operating systems (e.g. Linux or MacOS) only) to manage a terminal session.
For Tasks:
Click tags to check more tools for each tasksFor Jobs:
Alternative AI tools for aiode
Similar Open Source Tools

aiode
aiode is a Discord bot that plays Spotify tracks and YouTube videos or any URL including Soundcloud links and Twitch streams. It allows users to create cross-platform playlists, customize player commands, create custom command presets, adjust properties for deeper customization, sign in to Spotify to play personal playlists, manage access permissions for commands, customize bot summoning methods, and execute advanced admin commands. The bot also features a scripting sandbox for running and storing custom groovy scripts and modifying command behavior through interceptors.

AudioNotes
AudioNotes is a system built on FunASR and Qwen2 that can quickly extract content from audio and video, and organize it using large models into structured markdown notes for easy reading. Users can interact with the audio and video content, install Ollama, pull models, and deploy services using Docker or locally with a PostgreSQL database. The system provides a seamless way to convert audio and video into structured notes for efficient consumption.

SecureAI-Tools
SecureAI Tools is a private and secure AI tool that allows users to chat with AI models, chat with documents (PDFs), and run AI models locally. It comes with built-in authentication and user management, making it suitable for family members or coworkers. The tool is self-hosting optimized and provides necessary scripts and docker-compose files for easy setup in under 5 minutes. Users can customize the tool by editing the .env file and enabling GPU support for faster inference. SecureAI Tools also supports remote OpenAI-compatible APIs, with lower hardware requirements for using remote APIs only. The tool's features wishlist includes chat sharing, mobile-friendly UI, and support for more file types and markdown rendering.

alog
ALog is an open-source project designed to facilitate the deployment of server-side code to Cloudflare. It provides a step-by-step guide on creating a Cloudflare worker, configuring environment variables, and updating API base URL. The project aims to simplify the process of deploying server-side code and interacting with OpenAI API. ALog is distributed under the GNU General Public License v2.0, allowing users to modify and distribute the app while adhering to App Store Review Guidelines.

LLMinator
LLMinator is a Gradio-based tool with an integrated chatbot designed to locally run and test Language Model Models (LLMs) directly from HuggingFace. It provides an easy-to-use interface made with Gradio, LangChain, and Torch, offering features such as context-aware streaming chatbot, inbuilt code syntax highlighting, loading any LLM repo from HuggingFace, support for both CPU and CUDA modes, enabling LLM inference with llama.cpp, and model conversion capabilities.

midjourney-bot
Discord Midjourney Bot is an open-source bot designed for AI enthusiasts, providing various AI art functionalities without any paywalls. Users can enjoy features like text to image conversion, image transformation, logo generation, face swap, image upscaling, and more. The bot aims to offer advanced customizable image generation capabilities, including access to language models and canvas size customization. Additionally, the project is open to partnerships and investments, with opportunities for bloggers to review the product. The bot requires Node v18+ to run and integrates with Replicate API for certain functionalities.

Fyin
Fyin is an open-source tool that serves as an alternative to Perplexity AI, allowing users to run it locally for faster answers. It features the ability to run locally using ollama or OpenAI API, a local VectorDB for fast search, quick searching, scraping & answering due to parallelism, configurable number of search results to parse, and local scraping of websites. The tool aims to provide a more efficient and customizable solution for obtaining answers through search and scraping functionalities.

FreedomGPT
Freedom GPT is a desktop application that allows users to run alpaca models on their local machine. It is built using Electron and React. The application is open source and available on GitHub. Users can contribute to the project by following the instructions in the repository. The application can be run using the following command: yarn start. The application can also be dockerized using the following command: docker run -d -p 8889:8889 freedomgpt/freedomgpt. The application utilizes several open-source packages and libraries, including llama.cpp, LLAMA, and Chatbot UI. The developers of these packages and their contributors deserve gratitude for making their work available to the public under open source licenses.

PokeLLMon
PokeLLMon is a tool that allows users to set up a local battle engine for Pokémon battles. It requires Python version 3.8 or higher and OpenAI version 1.7.2 or higher. Users can configure the OpenAI API to enhance their battles. The tool provides a platform for users to engage in local battles by running the main Python script with their username and password for PokeLLMon.

aiogram_bot_template
Aiogram bot template is a boilerplate for creating Telegram bots using Aiogram framework. It provides a solid foundation for building robust and scalable bots with a focus on code organization, database integration, and localization.

xGitGuard
xGitGuard is an AI-based system developed by Comcast Cybersecurity Research and Development team to detect secrets (e.g., API tokens, usernames, passwords) exposed on GitHub repositories. It uses advanced Natural Language Processing to detect secrets at scale and with appropriate velocity. The tool provides workflows for detecting credentials and keys/tokens in both enterprise and public GitHub accounts. Users can set up search patterns, configure API access, run detections with or without ML filters, and train ML models for improved detection accuracy. xGitGuard also supports custom keyword scans for targeted organizations or repositories. The tool is licensed under Apache 2.0.

exo
Run your own AI cluster at home with everyday devices. Exo is experimental software that unifies existing devices into a powerful GPU, supporting wide model compatibility, dynamic model partitioning, automatic device discovery, ChatGPT-compatible API, and device equality. It does not use a master-worker architecture, allowing devices to connect peer-to-peer. Exo supports different partitioning strategies like ring memory weighted partitioning. Installation is recommended from source. Documentation includes example usage on multiple MacOS devices and information on inference engines and networking modules. Known issues include the iOS implementation lagging behind Python.

trieve
Trieve is an advanced relevance API for hybrid search, recommendations, and RAG. It offers a range of features including self-hosting, semantic dense vector search, typo tolerant full-text/neural search, sub-sentence highlighting, recommendations, convenient RAG API routes, the ability to bring your own models, hybrid search with cross-encoder re-ranking, recency biasing, tunable popularity-based ranking, filtering, duplicate detection, and grouping. Trieve is designed to be flexible and customizable, allowing users to tailor it to their specific needs. It is also easy to use, with a simple API and well-documented features.

shinkai-apps
Shinkai apps unlock the full capabilities/automation of first-class LLM (AI) support in the web browser. It enables creating multiple agents, each connected to either local or 3rd-party LLMs (ex. OpenAI GPT), which have permissioned (meaning secure) access to act in every webpage you visit. There is a companion repo called Shinkai Node, that allows you to set up the node anywhere as the central unit of the Shinkai Network, handling tasks such as agent management, job processing, and secure communications.

webapp-starter
webapp-starter is a modern full-stack application template built with Turborepo, featuring a Hono + Bun API backend and Next.js frontend. It provides an easy way to build a SaaS product. The backend utilizes technologies like Bun, Drizzle ORM, and Supabase, while the frontend is built with Next.js, Tailwind CSS, Shadcn/ui, and Clerk. Deployment can be done using Vercel and Render. The project structure includes separate directories for API backend and Next.js frontend, along with shared packages for the main database. Setup involves installing dependencies, configuring environment variables, and setting up services like Bun, Supabase, and Clerk. Development can be done using 'turbo dev' command, and deployment instructions are provided for Vercel and Render. Contributions are welcome through pull requests.

pear-landing-page
PearAI Landing Page is an open-source AI-powered code editor managed by Nang and Pan. It is built with Next.js, Vercel, Tailwind CSS, and TypeScript. The project requires setting up environment variables for proper configuration. Users can run the project locally by starting the development server and visiting the specified URL in the browser. Recommended extensions include Prettier, ESLint, and JavaScript and TypeScript Nightly. Contributions to the project are welcomed and appreciated.
For similar tasks

aiode
aiode is a Discord bot that plays Spotify tracks and YouTube videos or any URL including Soundcloud links and Twitch streams. It allows users to create cross-platform playlists, customize player commands, create custom command presets, adjust properties for deeper customization, sign in to Spotify to play personal playlists, manage access permissions for commands, customize bot summoning methods, and execute advanced admin commands. The bot also features a scripting sandbox for running and storing custom groovy scripts and modifying command behavior through interceptors.

airsonic-refix
Airsonic (refix) UI is a modern responsive web frontend designed for airsonic-advanced, navidrome, gonic, and other subsonic compatible music servers. It offers features such as responsive UI for desktop and mobile, browsing library for albums, artists, genres, playback with persistent queue, repeat & shuffle, MediaSession integration, playlist management with drag and drop, search, favorites, internet radio, and podcasts.
For similar jobs

aiode
aiode is a Discord bot that plays Spotify tracks and YouTube videos or any URL including Soundcloud links and Twitch streams. It allows users to create cross-platform playlists, customize player commands, create custom command presets, adjust properties for deeper customization, sign in to Spotify to play personal playlists, manage access permissions for commands, customize bot summoning methods, and execute advanced admin commands. The bot also features a scripting sandbox for running and storing custom groovy scripts and modifying command behavior through interceptors.

aimp-discord-presence
AIMP - Discord Presence is a plugin for AIMP that changes the status of Discord based on the music you are listening to. It allows users to share their detected activity with others on Discord. The plugin settings are stored in the AIMP configuration file, and users can customize various options such as application ID, timestamp, album art display, and image settings for different playback states.

Discord-AI-Selfbot
Discord-AI-Selfbot is a Python-based Discord selfbot that uses the `discord.py-self` library to automatically respond to messages mentioning its trigger word using Groq API's Llama-3 model. It functions as a normal Discord bot on a real Discord account, enabling interactions in DMs, servers, and group chats without needing to invite a bot. The selfbot comes with features like custom AI instructions, free LLM model usage, mention and reply recognition, message handling, channel-specific responses, and a psychoanalysis command to analyze user messages for insights on personality.

RirikoBot
RirikoBot is a powerful AI-powered Discord bot with features like Twitch Live Notifier, Giveaways, OpenAI, Stable Diffusion, Moderations, Anime / Manga Finder, and more. It is based on Discord.js v14 and can be hosted on a PC or a Server. Users can interact with the bot through various commands to access different functionalities.

stable-diffusion-discord-bot
A discord bot built to interface with the InvokeAI fork of stable-diffusion. It is a work in progress for a major rewrite of the arty project, compatible with `invokeai 5.1.1`. The bot supports various functionalities like building node graphs from job requests, refreshing renders using png metadata, removing backgrounds, job progress tracking, and LLM integration. Users can install custom invokeai nodes for advanced functionality and launch the bot natively or with docker. Patches and pull requests are welcomed.

vrt-cogs
Vrt-Cogs is a collection of various useful and fun plugins (cogs) for Red-DiscordBot, allowing users to enhance their Discord server experience. The repository includes a wide range of cogs such as an intuitive ban appeal system, an AI assistant powered by OpenAI's ChatGPT, tools for documenting cogs, managing bank balances, tracking economy, hosting events, translating messages, sending emails, managing guild settings, playing games, and more. These cogs offer functionalities to automate tasks, engage users, and enhance server management. The repository also provides tools for profiling cogs, managing Space Engineers servers, setting up a ticket system, integrating with Upgrade.Chat API, accessing Xbox profiles, and more.