initial
This commit is contained in:
commit
1a4986f294
18 changed files with 3181 additions and 0 deletions
85
cmd/bot/main.go
Normal file
85
cmd/bot/main.go
Normal file
|
@ -0,0 +1,85 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"os"
|
||||
"os/exec"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"discord-jukebox-bot/pkg/commands"
|
||||
"discord-jukebox-bot/pkg/config"
|
||||
"discord-jukebox-bot/pkg/logger"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Parse command-line flags
|
||||
debugMode := flag.Bool("debug", false, "Enable debug mode with verbose logging")
|
||||
flag.Parse()
|
||||
|
||||
// Initialize logger
|
||||
logger.Init(*debugMode)
|
||||
logger.Info("Discord Jukebox Bot - Starting up...")
|
||||
if *debugMode {
|
||||
logger.Debug("Debug mode enabled - verbose logging will be shown")
|
||||
}
|
||||
|
||||
// Load configuration from environment variables and .env file
|
||||
logger.Info("Loading configuration...")
|
||||
cfg, err := config.Load()
|
||||
if err != nil {
|
||||
logger.Error("Error loading configuration", "error", err)
|
||||
config.PrintDebugInfo()
|
||||
os.Exit(1)
|
||||
}
|
||||
logger.Info("Configuration loaded successfully")
|
||||
|
||||
// Print config summary in debug mode
|
||||
if logger.IsDebug() {
|
||||
logger.Debug("Configuration Summary",
|
||||
"discord_guild_id", cfg.DiscordGuildID,
|
||||
"subsonic_server", cfg.SubsonicServer,
|
||||
"subsonic_username", cfg.SubsonicUsername,
|
||||
"subsonic_api_version", cfg.SubsonicVersion)
|
||||
}
|
||||
|
||||
// Check if ffmpeg is available - important for audio transcoding
|
||||
ffmpegPath, err := exec.LookPath("ffmpeg")
|
||||
if err != nil {
|
||||
logger.Warn("ffmpeg not found in system PATH. Audio streaming may be less reliable.",
|
||||
"error", err.Error())
|
||||
} else {
|
||||
logger.Info("ffmpeg found and available for audio transcoding",
|
||||
"path", ffmpegPath)
|
||||
}
|
||||
|
||||
// Set up commands and the Discord bot
|
||||
logger.Info("Setting up bot and commands...")
|
||||
bot, err := commands.Setup(cfg)
|
||||
if err != nil {
|
||||
logger.Error("Error setting up bot", "error", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Start the bot
|
||||
logger.Info("Starting Discord bot...")
|
||||
if err := bot.Start(); err != nil {
|
||||
logger.Error("Error starting bot", "error", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
logger.Info("Discord Jukebox Bot is now running.")
|
||||
logger.Info("Use /jukebox play, /jukebox stop, or /jukebox skip in your Discord server.")
|
||||
logger.Info("Press Ctrl+C to exit.")
|
||||
|
||||
// Wait for a termination signal
|
||||
sc := make(chan os.Signal, 1)
|
||||
signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt)
|
||||
<-sc
|
||||
|
||||
// Clean up and exit
|
||||
logger.Info("Shutting down Discord Jukebox Bot...")
|
||||
if err := bot.Stop(); err != nil {
|
||||
logger.Error("Error stopping bot", "error", err)
|
||||
}
|
||||
logger.Info("Bot stopped. Goodbye!")
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue