diff --git a/cmd/m3r1-chat/chat.html b/cmd/m3r1-chat/chat.html
deleted file mode 100644
index a8c0e37..0000000
--- a/cmd/m3r1-chat/chat.html
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
-
- Minecraft Twitch Chat Overlay
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/cmd/m3r1-chat/main.go b/cmd/m3r1-chat/main.go
deleted file mode 100644
index 3725a4e..0000000
--- a/cmd/m3r1-chat/main.go
+++ /dev/null
@@ -1,63 +0,0 @@
-package main
-
-import (
- "fmt"
- "log"
- "sync"
-
- _ "embed"
-
- "github.com/gempir/go-twitch-irc/v4"
- "github.com/gin-gonic/gin"
-)
-
-var (
- messages []string
- mu sync.Mutex
-)
-
-// go:embed chat.html
-var defaultHTML []byte
-
-func main() {
- // Set up Twitch client
- client := twitch.NewClient("your_bot_username", "oauth:your_oauth_token")
-
- // Set up Gin web server
- r := gin.Default()
-
- // Serve static files (HTML, CSS, JS)
- r.Static("/static", "./static")
-
- // Endpoint to get chat messages
- r.GET("/chat", func(c *gin.Context) {
- mu.Lock()
- defer mu.Unlock()
- c.JSON(200, gin.H{
- "messages": messages,
- })
- })
-
- // Handle Twitch chat messages
- client.OnPrivateMessage(func(message twitch.PrivateMessage) {
- mu.Lock()
- defer mu.Unlock()
- messages = append(messages, fmt.Sprintf("%s: %s", message.User.Name, message.Message))
- if len(messages) > 100 { // Keep only the last 100 messages
- messages = messages[1:]
- }
- })
-
- // Connect to Twitch chat
- client.Join("merithtk")
-
- go func() {
- err := client.Connect()
- if err != nil {
- log.Fatalf("Error connecting to Twitch: %v", err)
- }
- }()
-
- // Start the web server
- r.Run(":8080")
-}
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..997e2ca
--- /dev/null
+++ b/main.go
@@ -0,0 +1,76 @@
+package main
+
+import (
+ "fmt"
+ "log"
+ "sync"
+
+ _ "embed"
+
+ "github.com/gempir/go-twitch-irc/v4"
+ "github.com/gin-gonic/gin"
+)
+
+var (
+ // Store chat messages for each channel
+ channelMessages = make(map[string][]string)
+ mu sync.Mutex
+)
+
+func main() {
+ // Set up Twitch client
+ client := twitch.NewAnonymousClient() // No need to log in as a bot
+
+ // Set up Gin web server
+ r := gin.Default()
+
+ // Serve static files (HTML, CSS, JS)
+ r.Static("/static", "./static")
+
+ // Endpoint to get chat messages for a specific channel
+ r.GET("/chat/:channel", func(c *gin.Context) {
+ channel := c.Param("channel")
+ mu.Lock()
+ defer mu.Unlock()
+ messages, exists := channelMessages[channel]
+ if !exists {
+ c.JSON(200, gin.H{
+ "messages": []string{},
+ })
+ return
+ }
+ c.JSON(200, gin.H{
+ "messages": messages,
+ })
+ })
+
+ // Handle Twitch chat messages
+ client.OnPrivateMessage(func(message twitch.PrivateMessage) {
+ mu.Lock()
+ defer mu.Unlock()
+ channel := message.Channel
+ messages := channelMessages[channel]
+ messages = append(messages, fmt.Sprintf("%s: %s", message.User.Name, message.Message))
+ if len(messages) > 100 { // Keep only the last 100 messages
+ messages = messages[1:]
+ }
+ channelMessages[channel] = messages
+ })
+
+ // Automatically join channels when requested
+ r.GET("/chat/:channel/overlay", func(c *gin.Context) {
+ channel := c.Param("channel")
+ client.Join(channel) // Join the channel if not already joined
+ c.File("./static/overlay.html") // Serve the overlay HTML
+ })
+
+ // Start the web server
+ go func() {
+ err := client.Connect()
+ if err != nil {
+ log.Fatalf("Error connecting to Twitch: %v", err)
+ }
+ }()
+
+ r.Run(":8080")
+}
diff --git a/static/overlay.html b/static/overlay.html
new file mode 100644
index 0000000..e6a662b
--- /dev/null
+++ b/static/overlay.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+ Minecraft Twitch Chat Overlay
+
+
+
+
+
+
+
\ No newline at end of file