An all purpose discord bot.
  • Go 99.2%
  • Dockerfile 0.8%
Find a file
phil 2f20a7e321
All checks were successful
ci/woodpecker/push/0-check Pipeline was successful
ci/woodpecker/push/99-release Pipeline was successful
Merge pull request 'Update golang Docker tag to v1.26' (#11) from renovate/golang-1.x into main
Reviewed-on: #11
2026-02-25 05:23:00 +01:00
.woodpecker Added Dockerfile and CI Docker Build (#10) 2026-02-24 21:50:07 +01:00
bot Added TempChannel feature and logic (#8) 2026-02-24 21:30:49 +01:00
config Add SQLite database support and clean up config setup (#6) 2026-02-24 17:52:28 +01:00
database Added TempChannel feature and logic (#8) 2026-02-24 21:30:49 +01:00
utils Added TempChannel feature and logic (#8) 2026-02-24 21:30:49 +01:00
.gitignore Add SQLite database support and clean up config setup (#6) 2026-02-24 17:52:28 +01:00
CHANGELOG.md 🎉 Release 0.1.0 (#2) 2026-02-24 21:55:43 +01:00
Dockerfile Update golang Docker tag to v1.26 2026-02-24 22:13:47 +00:00
go.mod Added TempChannel feature and logic (#8) 2026-02-24 21:30:49 +01:00
go.sum Added TempChannel feature and logic (#8) 2026-02-24 21:30:49 +01:00
LICENSE Initial commit 2026-02-23 16:15:31 +01:00
main.go Added TempChannel feature and logic (#8) 2026-02-24 21:30:49 +01:00
README.md Update README with commands, features & project structuredocs/readme (#9) 2026-02-24 21:35:51 +01:00
renovate.json [renovate] Added label and prhourly limit (#4) 2026-02-23 17:14:21 +01:00

NexaCore

An all-purpose Discord bot written in Go, featuring temporary voice channel management and more.

📋 Commands

Command Description
/spawn create Create a new spawn channel in a specified category
/spawn register Register an existing voice channel as a spawn channel
/spawns List all spawn channels in the current guild
/unspawn Remove a spawn channel registration
/checkperms Check if the bot has required permissions

Features

Feature Description
Temporary Voice Channels Users can create their own temporary voice channels by joining a spawn channel
Admin Text Channels Each temp channel gets a private admin text channel for the owner
User Preferences Users can customize their channel name and allowed roles
Auto Cleanup Temporary channels are automatically deleted when empty
Permission Management Bot validates required permissions before operations

⚙️ Configuration

Environment Variable Required Default Description
TOKEN Yes - Discord bot token
DATABASE_PATH No nexacore.db Path to SQLite database file
DEBUG No false Enable debug logging

🚀 Getting Started

  1. Clone the repository
  2. Create a .env file with your Discord bot token:
    TOKEN=your_discord_bot_token_here
    
  3. Run the bot:
    go run main.go
    

📁 Project Structure

NexaCore/
├── main.go                 # Application entry point
├── bot/
│   ├── bot.go              # Bot initialization and lifecycle
│   ├── session.go          # Discord session management
│   ├── commands/           # Slash command definitions
│   │   ├── commands.go     # Command registration router
│   │   ├── checkperms.go   # Permission check command
│   │   ├── spawn.go        # Spawn channel creation
│   │   ├── spawns.go       # List spawn channels
│   │   └── unspawn.go      # Remove spawn channel
│   ├── events/             # Discord event handlers
│   │   ├── interaction.go  # Button/modal interactions
│   │   ├── ready.go        # Bot ready event
│   │   └── voice.go        # Voice state events
│   └── features/           # Feature modules
│       └── tempchannel/    # Temporary channel system
│           ├── manager.go  # Channel creation/deletion
│           ├── panel.go    # Control panel UI
│           ├── buttons.go  # Button handlers
│           ├── modals.go   # Modal dialogs
│           ├── messages.go # Message utilities
│           └── verify.go   # Verification logic
├── config/
│   └── env.go              # Environment configuration
├── database/
│   ├── database.go         # Database connection
│   ├── queries.go          # Common queries
│   ├── spawnchannel.go     # Spawn channel CRUD
│   ├── tempchannel.go      # Temp channel CRUD
│   └── userprefs.go        # User preferences CRUD
└── utils/
    └── permissions.go      # Permission utilities

📄 License

This project is licensed under the terms specified in the LICENSE file.