Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kyagara/joel
A simple Discord music bot written in Elixir.
https://github.com/kyagara/joel
bot discord elixir ffmpeg music nosedrum nostrum opus youtube-dl yt-dlp
Last synced: about 1 month ago
JSON representation
A simple Discord music bot written in Elixir.
- Host: GitHub
- URL: https://github.com/kyagara/joel
- Owner: Kyagara
- License: apache-2.0
- Created: 2022-07-14T22:48:36.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-06-11T00:26:07.000Z (7 months ago)
- Last Synced: 2024-06-12T04:17:55.966Z (7 months ago)
- Topics: bot, discord, elixir, ffmpeg, music, nosedrum, nostrum, opus, youtube-dl, yt-dlp
- Language: Elixir
- Homepage:
- Size: 7.3 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## joel
A very simple Discord music bot.
This bot was created with the intent of just playing around with ~~Rust~~ Elixir, it lacks a lot of features. The main purpose with this is to just play music for a small server with friends and post JOEL whenever He is needed. It also sends @mentions to a llama.cpp server to get a response.
Don't actually use this. It serves no purpose.
## Slash commands
`joel`, `ttj`, `play`, `stop`, `pause`, `resume`, `leave`
## Requirements
Install `yt-dlp`, `ffmpeg`, Elixir >= 1.15.
Invite the bot with application command permission, message content gateway intent enabled.
```bash
mix deps.get
DISCORD_TOKEN=TOKEN MIX_ENV=prod mix release
# The above will by default register the commands as global commands, to register to a guild you need to define a GUILD_ID:
GUILD_ID=ID DISCORD_TOKEN=TOKEN MIX_ENV=prod mix release
```I use [crescent](https://github.com/Kyagara/crescent) to run the bot in the background in a VM:
```bash
cres start _build/prod/rel/joel/bin/joel -a start
```## Todo
- More JOEL (very important)
- Maybe do things the Elixir way? The lack of return in Elixir is throwing me off