Eleazar is a multifunctional Discord bot featuring AI capabilities (text transcription, image generation, chatting), games, economy system, music playback, counting games, and image filters.
The main reason why this project is unique because of the vision how the things has to be looking. Its easy to use, has a lot of features and unique styling.
It supports localization to English, Ukraine and Russian.
Most of this code has been AI-generated without specific plans or progression checking, so many things may look "messy" or overcomplicated and could be simplified significantly.
I'm making this project public in case someone on the internet finds it helpful. Maybe together we could potentially finish this amazing project. I just need someones help to make this project to its end...
My contacts are in the bottom of this README
This project uses a Hub/Bot architecture where:
- Hub manages database operations and provides API endpoints
- Bot handles Discord interactions and commands
Features:
- Clean separation of concerns
- Scalable architecture
- Easy to maintain and extend
- Supports both Bun and Node.js runtimes
I'm also planning to add more simplier Docker or Railway template setup quide in future for this project.
- Bun runtime (v1.0.0 or higher) OR Node.js runtime (v16.0.0 or higher)
- PostgreSQL database server
- Redis server
- Lavalink server (for music functionality)
- WSL (recommended for Windows users)
- Discord Bot Token (from Discord Developer Portal)
- OpenRouter AND Groq (for ai text models and voice transcription with groq)
- HuggingFace OR DeepInfra or Replicate (for image generating)
- CoinMarketCap for the bot's Crypto game support to show coin prices.
-
Install Runtime (choose one)
Option A: Install Bun (recommended for performance)
curl -fsSL https://bun.sh/install | bashOption B: Install Node.js (if you prefer Node.js)
# Using Node Version Manager (recommended) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash nvm install node # Or download directly from https://nodejs.org/
-
Clone the Repository
git clone <repository-url> cd eleazar
-
Set up PostgreSQL Database
- Install PostgreSQL on your system
- Create a new database for the bot
-
Set up Redis Server
- Install Redis on your system
- Start Redis server:
# Ubuntu/Debian sudo systemctl start redis-server # Or run directly redis-server
- Verify Redis is running:
redis-cli ping
-
Create Discord Bot
- Go to Discord Developer Portal (https://discord.com/developers/applications)
- Create a new application and bot
- Copy the bot token
- Important: Enable "Message Content Intent" in the Bot settings
-
Configure Lavalink Choose one of the following options:
Option 1: Run Your Own Lavalink Server
- Download Lavalink.jar from the official repository
- Use the provided
application.ymlconfiguration file - Configure external Lavalink servers in
/src/utils/music.js(lines 48-78) - Start Lavalink server:
java -jar Lavalink.jar
Recommended Lavalink Plugins: For enhanced functionality, consider adding these plugins to your
plugins/folder:- lavalink-2.6.1.jar - Core Lavalink server
- lavalyrics-plugin-1.0.0.jar - Lyrics support
- lavasearch-plugin-1.0.0.jar - Enhanced search capabilities
- lavasrc-plugin-4.3.0.jar - Additional audio sources
- skybot-lavalink-plugin-1.7.0.jar - Extended platform support
- sponsorblock-plugin-3.0.1.jar - SponsorBlock integration
- youtube-plugin-1.11.3.jar - YouTube source support
Option 2: Use External Lavalink Servers (Recommended for beginners)
- Use free external Lavalink servers instead of running your own
- Visit https://lavalink-list.darrennathanael.com/ for a list of available servers
- Configure the servers in
/src/utils/music.js(lines 48-78) - No need to run your own Lavalink instance
API Services Requirements:
You'll need to obtain and configure these API keys in your .env file:
- Discord Bot Token (from Discord Developer Portal)
- OpenRouter AND Groq (for ai text models and voice transcription with groq)
- HuggingFace OR DeepInfra or Replicate (for image generating)
- CoinMarketCap for the bot's Crypto game support to show coin prices.
After completing the common installation steps above:
-
Install All Dependencies
cd hub bun run install:all cd ..
This command installs dependencies for both the main bot and hub projects.
-
Set up Database with Prisma (Hub Project)
- Note: The Prisma database is now located in the hub project
- Navigate to the hub directory and run:
cd hub bunx prisma generate bunx prisma db push # For development # OR for production: bunx prisma migrate deploy cd ..
-
Environment Configuration
The project uses a distributed environment configuration system. You'll need to set up environment files in multiple locations:
Main Configuration Files:
- Copy
bot/.env.exampletobot/.env - Copy
hub/.env.exampletohub/.env
Service-Level Configuration Files:
- Copy
hub/ai/.env.exampletohub/ai/.env - Copy
hub/database/.env.exampletohub/database/.env(or use the existing one) - Copy
hub/rendering/.env.exampletohub/rendering/.env(or use the existing one)
Required Environment Variables:
- Discord bot token (in
bot/.env) - Database connection string (PostgreSQL) (in
hub/.envandhub/database/.env) - Redis connection details (in
bot/.env,hub/.env, andhub/ai/.env) - API keys for AI services (in
bot/.envandhub/.env) - Lavalink server configuration (in
bot/.env) - Service ports and hosts (in individual service
.envfiles)
- Copy
-
Run the Hub and Bot
# Start PostgreSQL and Redis services sudo service postgresql start sudo service redis-server start # Start the hub server cd hub && bun run start # Or with Node.js: cd hub && npm run start # In a separate terminal, start the main bot cd bot && bun run start # Or with Node.js: cd bot && npm run start
If you're interested in collaborating or have questions about the project, feel free to reach out:
- Discord: @vejoy_
- Telegram: VeJoy's Thoughts (ask about this project in comments somewhere and i'll reach to you and DM you)
Feel free to contribute or reach out if you're interested in collaborating!