A powerful and extensible Discord bot built with TypeScript, Node.js, discord.js, and discordx (ESM-ready).
- Robust logging system
- Global error handling
- Simple setup with environment variables and Docker
- Many music sources via plugins
- Realtime music dashboard
- Slash commands to manage users and channels
- Kick, ban, mute and more
- Memes, gifs and general fun commands
- Owner-only commands
- Debugging options and developer logs
You can run Sayuna using the official Docker image.
All runtime options and environment variables are documented there.
services:
sayuna:
container_name: sayuna
image: poprostuwitold/sayuna:latest
stdin_open: true
tty: true
env_file:
- .env
# environment:
# - BOT_TOKEN=
# - DEV_GUILD_ID=
# - OWNER_ID=
# - BOT_ID='Sayuna'
# - BOT_PREFIX='$$'
# - ACTIVITY_NAME=''
# - ACTIVITY_TYPE=''
# - SPOTIFY_CLIENT_ID=''
# - SPOTIFY_CLIENT_SECRET=''
restart: unless-stopped
- Node.js
v22.17.1
(LTS, codename: "Jod") ffmpeg
installed and available in$PATH
(download here)- Discord bot token & server
Or just use Docker for a simpler production setup.
Create a .env
file in the root directory:
BOT_TOKEN=''
# Development (optional)
# you can provide more than one using syntax: 'guild_id1, guild_id2' 1242471380587646986
DEBUG_LOGS=false
DEV_GUILD_ID=''
# Owner commands, cleaner logs & legacy message commands (optional)
OWNER_ID=''
BOT_ID='Sayuna'
BOT_PREFIX='$$'
# Activity settings (optional)
ACTIVITY_NAME='Music'
ACTIVITY_TYPE=''
# Spotify API (optional)
# Spotify links will not work very well without these credentials
SPOTIFY_CLIENT_ID=''
SPOTIFY_CLIENT_SECRET=''
Install dependencies:
pnpm install
Run in development or production mode using npm scripts:
pnpm dev # development mode
pnpm start # production mode
- Logging system
- Error handling
- Slash commands
- Owner
- Moderation
- General
- Fun
- Info
- Music
- Real-time music dashboard