package main import ( "log" "os" "os/signal" "syscall" "matrix-gpt-bot/bot" "matrix-gpt-bot/config" mautrix "maunium.net/go/mautrix" "maunium.net/go/mautrix/id" ) func main() { // Load configuration cfg := config.Load() // Initialize Matrix client client, err := mautrix.NewClient(cfg.Homeserver, id.UserID(cfg.BotUserID), cfg.AccessToken) if err != nil { log.Fatalf("Failed to create Matrix client: %v", err) } // Register the GPT message handler bot.RegisterHandler(client) log.Println("Matrix GPT bot started. Press CTRL+C to exit.") // Start syncing in a background goroutine go func() { if err := client.Sync(); err != nil { log.Fatalf("Sync failed: %v", err) } }() // Wait for termination signal stop := make(chan os.Signal, 1) signal.Notify(stop, syscall.SIGINT, syscall.SIGTERM) <-stop log.Println("Shutting down bot.") }