Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
ab3d4f9
refactor: update dependencies, migrate music engine to Lavalink v4, a…
PhantomNimbi Aug 29, 2026
222c868
feat: migrate gif/game search APIs, add documentation, and update iss…
PhantomNimbi Aug 29, 2026
1dfd3ca
feat: add cross-platform launch scripts, LAVA_EXTERNAL check, and own…
PhantomNimbi Aug 29, 2026
0dfb44b
feat: add YOUTUBE_API_KEY to env schemas and documentation
PhantomNimbi Aug 29, 2026
ffd29db
fix: update Lavalink plugins config and format runner console banner
PhantomNimbi Aug 29, 2026
943b93a
feat: add cross-platform port clearing before launch and audit fixes
PhantomNimbi Aug 29, 2026
521e382
fix: resolve QueueStore script paths and reddit command build errors
PhantomNimbi Aug 29, 2026
c9b851f
fix: resolve Lavalink host mapping, searchSong node search, and echo …
PhantomNimbi Aug 29, 2026
1727977
fix: remove console clear and format YouTube OAuth device flow prompt…
PhantomNimbi Aug 29, 2026
be4c75a
refactor: modularize dev and start launch scripts with direct console…
PhantomNimbi Aug 29, 2026
b6bac68
fix: remove shell option from spawn for DEP0190 and refine auth line …
PhantomNimbi Aug 29, 2026
effc4c1
feat: auto db push, voice gateway raw packet routing, full dependency…
PhantomNimbi Aug 29, 2026
e13c2dd
fix(launcher): strictly in-memory YouTube refresh token management wi…
PhantomNimbi Aug 29, 2026
47a4e66
fix(launcher): deduplicate in-memory YouTube refresh token capture an…
PhantomNimbi Aug 29, 2026
7ddefd4
fix(music): trigger queue.next() on play command when idle and clear …
PhantomNimbi Aug 29, 2026
fcb8bef
feat: modernize monorepo to Next.js 15, update dependencies, and enha…
PhantomNimbi Aug 29, 2026
e2a4f6d
feat(dashboard): categorize commands panel and filter out globally di…
PhantomNimbi Aug 30, 2026
bda92b1
feat(music): configure remote cipher endpoint and wire environment ke…
PhantomNimbi Aug 30, 2026
0026591
feat(music): improve skip/skipto jump logic, recreate youtube-auth sl…
PhantomNimbi Aug 30, 2026
06d5bba
docs: update README, wiki, and agent reference to reflect Next.js 15,…
PhantomNimbi Aug 30, 2026
a5f9bdb
feat(music): implement interactive music-trivia and stop-trivia comma…
PhantomNimbi Aug 30, 2026
9c6259e
feat(settings): consolidate /set slash command, enhance welcome forma…
PhantomNimbi Aug 30, 2026
8af561f
feat: add moderation suite and thread-based ticket system with dashbo…
PhantomNimbi Aug 30, 2026
53f7c7d
docs: update README, Dashboard guide, and Wiki reference for moderati…
PhantomNimbi Aug 30, 2026
b4da0e0
feat(tickets): render formatted custom ticket greeting inside ticket …
PhantomNimbi Aug 30, 2026
00f6193
docs(readme): restore contributors section to repository README
PhantomNimbi Aug 30, 2026
950f8bb
feat(heroku): add 1-click Heroku deployment engine, app.json manifest…
PhantomNimbi Aug 30, 2026
255deac
feat(heroku): add YOUTUBE_API_KEY and preserve manifest template plac…
PhantomNimbi Aug 30, 2026
d415cd8
chore(deployment): remove unsupported heroku deployment
PhantomNimbi Aug 30, 2026
ca8623a
docs: reference upstream repository in install guides
PhantomNimbi Aug 30, 2026
263fabe
ci: require issue template selection
PhantomNimbi Aug 30, 2026
524b21a
ci: add targeted issue templates for music, commands, dashboard, and …
PhantomNimbi Aug 30, 2026
a8c60e4
docs: correct root readme and wiki command/api references
PhantomNimbi Aug 30, 2026
2e61254
docs: minimize command tables and defer to wiki reference
PhantomNimbi Aug 30, 2026
a1b75dc
docs: add lavalink config template and reference it in guides
PhantomNimbi Aug 30, 2026
344b198
docs: prune gitignored files from readme architecture tree
PhantomNimbi Aug 30, 2026
6bbb462
docs: align comments in readme architecture tree
PhantomNimbi Aug 30, 2026
85da8e2
feat(bot): upgrade about command and add dashboard command
PhantomNimbi Aug 30, 2026
5dd984f
docs: add dashboard command and update command count to 67
PhantomNimbi Aug 30, 2026
d1533c8
fix(bot): format dashboard link with alt text in /dashboard command
PhantomNimbi Aug 30, 2026
e23bf76
Update .env.example
PhantomNimbi Aug 31, 2026
addbe26
Update .env.example
PhantomNimbi Aug 31, 2026
40108f4
feat(bot): add reminders, news, games, status rotation, and modernize…
PhantomNimbi Aug 31, 2026
33dbf0e
feat(tickets): add ticket manager role support and audit commands ref…
PhantomNimbi Aug 31, 2026
fb686a0
feat(bot): restore legacy commands and modernize slash command suite
PhantomNimbi Aug 31, 2026
dde449e
fix(bot): resolve deferred interaction lifecycle and streamline music…
PhantomNimbi Aug 31, 2026
fe91b8d
feat(music): add live ascii progress bar and auto-updating player embed
PhantomNimbi Aug 31, 2026
89d8205
docs: fix tick formatting in contributors section and update badges
PhantomNimbi Aug 31, 2026
fe6caef
docs: add CONTRIBUTING.md guidelines and link in README
PhantomNimbi Aug 31, 2026
6cd8b92
docs(wiki): add macOS, Windows, and Linux setup and prerequisite guides
PhantomNimbi Aug 31, 2026
6a87c72
docs: streamline discord bot and dashboard descriptions across docume…
PhantomNimbi Aug 31, 2026
7e4a0b8
docs(wiki): add detailed Heroku deployment and cloud hosting guide
PhantomNimbi Aug 31, 2026
243ac33
docs: audit markdown documentation and add apps/bot README
PhantomNimbi Aug 31, 2026
c1c09c1
docs: rename LICENSE to LICENSE.md and format with markdown
PhantomNimbi Aug 31, 2026
a6d5f56
feat(monorepo): full repository audit, vitest test suite, nextjs 15 d…
PhantomNimbi Sep 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ docker-compose.yaml
.git
.github
.gitignore
LICENSE
LICENSE*
README.md

# Node Modules and lint settings
Expand Down
57 changes: 36 additions & 21 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,34 +1,49 @@
# DB URL
DATABASE_URL="postgresql://john:doe@localhost:5432/master-bot?schema=public"
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/master-bot?schema=public" # Primary PostgreSQL database connection URL
SHADOW_DB_URL="postgresql://postgres:postgres@localhost:5432/master-bot-shadow?schema=public" # Dedicated shadow database for Prisma migrations

# Bot Token
DISCORD_TOKEN=""
DISCORD_TOKEN="" # Discord bot token from the Developer Portal

NEXTAUTH_SECRET="somesupersecrettwelvelengthword"
NEXTAUTH_URL=
NEXTAUTH_URL_INTERNAL=http://localhost:3000
NEXT_PUBLIC_INVITE_URL="https://discord.com/api/oauth2/authorize?client_id=yourclientid&permissions=8&scope=bot"
# NextAuth Configuration
NEXTAUTH_SECRET="youshallnotpass" # Random 32+ char secret for signing auth session tokens
NEXTAUTH_URL="" # Canonical public dashboard URL (e.g. https://domain.com)
NEXTAUTH_URL_INTERNAL="http://localhost:3000" # Internal SSR URL for local dashboard requests
NEXT_PUBLIC_INVITE_URL="https://discord.com/api/oauth2/authorize?client_id=your_client_id&permissions=8&scope=bot" # Public OAuth2 bot invite link

# Next Auth Discord Provider
DISCORD_CLIENT_ID=""
DISCORD_CLIENT_SECRET=""
DISCORD_CLIENT_ID="" # Discord application client ID
DISCORD_CLIENT_SECRET="" # Discord application client secret

# Lavalink
LAVA_HOST="0.0.0.0"
LAVA_PASS="youshallnotpass"
LAVA_PORT=2333
LAVA_SECURE=false
LAVA_HOST="localhost" # Lavalink host (default: localhost or 0.0.0.0)
LAVA_PASS="youshallnotpass" # Lavalink password (must match application.yml)
LAVA_PORT=2333 # Lavalink WebSocket / HTTP port
LAVA_SECURE=false # Enable SSL/WSS encryption (true / false)
LAVA_EXTERNAL=false # Set to true to connect to an external Lavalink instance

# YouTube & Remote Cipher
YOUTUBE_REFRESH_TOKEN="" # YouTube OAuth 2.0 refresh token (auto-saved to .youtube-oauth.json)
YOUTUBE_API_KEY="" # Optional YouTube Data API v3 key
YOUTUBE_CIPHER_URL="https://cipher.kikkia.dev/" # Remote cipher endpoint for YouTube signature deciphering
YOUTUBE_CIPHER_PASSWORD="" # Optional password for self-hosted yt-cipher (leave empty for default public endpoint)

# Spotify
SPOTIFY_CLIENT_ID=""
SPOTIFY_CLIENT_SECRET=""
SPOTIFY_CLIENT_ID="" # Spotify Developer App Client ID
SPOTIFY_CLIENT_SECRET="" # Spotify Developer App Client Secret

# Twitch
TWITCH_CLIENT_ID=""
TWITCH_CLIENT_SECRET=""
# Twitch & IGDB
TWITCH_CLIENT_ID="" # Twitch Developer App Client ID (used for Twitch alerts & IGDB search)
TWITCH_CLIENT_SECRET="" # Twitch Developer App Client Secret

# Other APIs
TENOR_API=""
NEWS_API=""
GENIUS_API=""
RAWG_API=""
KLIPY_API="" # API key for anime reactions and interactive GIFs
NEWS_API="" # NewsAPI key for /world-news global headline searches
GENIUS_API="" # Genius API client token for /lyrics song lyrics lookup

# Feature Flags (Enable or disable specific bot modules dynamically)
LAVA_ENABLED=true # Master toggle for Lavalink audio engine and music commands
GIFS_ENABLED=true # Toggle for animated GIF and reaction commands
TWITCH_ENABLED=true # Toggle for Twitch stream monitoring and notifications
NEWS_ENABLED=true # Toggle for news headline commands
IGDB_ENABLED=true # Toggle for IGDB game database lookups
36 changes: 0 additions & 36 deletions .github/ISSUE_TEMPLATE/bug_report.md

This file was deleted.

67 changes: 67 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: Bug Report
description: Create a report to help us improve Master-Bot
title: '[Bug]: '
labels: ['bug']
body:
- type: markdown
attributes:
value: |
### Instructions
Please provide detailed information to help reproduce and fix the bug.

- type: textarea
id: description
attributes:
label: Describe the Bug
description: A clear and concise description of what the bug is.
validations:
required: true

- type: textarea
id: reproduce
attributes:
label: Steps to Reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. Use command `/...`
2. Pass argument `...`
3. See error
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected Behavior
description: A clear and concise description of what you expected to happen.
validations:
required: true

- type: dropdown
id: os
attributes:
label: Operating System
options:
- Windows
- Linux (Ubuntu/Debian)
- macOS
- Docker
- Other
validations:
required: true

- type: input
id: node-version
attributes:
label: Node.js Version
placeholder: "e.g., v20.11.0"
validations:
required: false

- type: textarea
id: additional-context
attributes:
label: Additional Context / Logs
description: Add any error logs, stack traces, or screenshots here.
validations:
required: false
55 changes: 55 additions & 0 deletions .github/ISSUE_TEMPLATE/command_issue.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Command Issue
description: Report a problem with a specific slash command
title: '[Command]: '
labels: ['bug']
body:
- type: markdown
attributes:
value: |
### Instructions
Describe the command that is not working as expected and what should happen instead.

- type: input
id: command
attributes:
label: Command
description: The slash command that has an issue.
placeholder: "/play"
validations:
required: true

- type: textarea
id: description
attributes:
label: Describe the Issue
description: What went wrong?
validations:
required: true

- type: textarea
id: reproduce
attributes:
label: Steps to Reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. Run `/...`
2. Pass arguments `...`
3. See error
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected Behavior
description: What did you expect to happen instead?
validations:
required: true

- type: textarea
id: logs
attributes:
label: Error Output / Logs
description: Paste any Discord error message or bot log output.
validations:
required: false
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
blank_issues_enabled: false
62 changes: 62 additions & 0 deletions .github/ISSUE_TEMPLATE/dashboard_issue.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Dashboard / Web Issue
description: Report a problem with the web dashboard, authentication, or API
title: '[Dashboard]: '
labels: ['bug']
body:
- type: markdown
attributes:
value: |
### Instructions
Describe the web dashboard, authentication, or API issue you encountered.

- type: input
id: url
attributes:
label: Page / Route
description: The dashboard page or API route affected.
placeholder: "e.g., /dashboard/[server_id]/welcome-message"
validations:
required: false

- type: textarea
id: description
attributes:
label: Describe the Issue
description: What happened? Include any error messages.
validations:
required: true

- type: textarea
id: reproduce
attributes:
label: Steps to Reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. Navigate to ...
2. Click ...
3. See error
validations:
required: true

- type: dropdown
id: area
attributes:
label: Area
options:
- Authentication / Sign-In
- Server Settings
- Welcome Message Editor
- Ticket Panel
- Log Viewer
- Commands Panel
- Other
validations:
required: false

- type: textarea
id: logs
attributes:
label: Browser / Server Console
description: Paste any console errors or dashboard log output.
validations:
required: false
9 changes: 0 additions & 9 deletions .github/ISSUE_TEMPLATE/feature_request.md

This file was deleted.

21 changes: 21 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Feature Request
description: Suggest an idea or new feature for Master-Bot
title: '[Feature]: '
labels: ['enhancement']
body:
- type: textarea
id: feature-description
attributes:
label: Feature Description
description: Explain your suggestion or proposed feature in detail.
placeholder: Describe what feature you would like to see and why.
validations:
required: true

- type: textarea
id: use-case
attributes:
label: Use Case / Problem Statement
description: Is your feature request related to a problem or specific workflow?
validations:
required: false
Loading