47 lines
973 B
Go
47 lines
973 B
Go
package main
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
)
|
|
|
|
type Command struct {
|
|
Name string
|
|
Trigger string
|
|
Handler func(c *fiber.Ctx) string
|
|
}
|
|
|
|
var Commands []Command
|
|
|
|
func init() {
|
|
Commands = []Command{
|
|
{
|
|
Name: "Clear",
|
|
Trigger: "clear",
|
|
Handler: ClearCommandHandler,
|
|
},
|
|
}
|
|
}
|
|
|
|
func ClearCommandHandler(c *fiber.Ctx) string {
|
|
collection := mongoClient.Database("chat").Collection("messages")
|
|
_, err := collection.DeleteMany(c.Context(), bson.D{})
|
|
if err != nil {
|
|
c.Status(http.StatusInternalServerError).JSON(fiber.Map{
|
|
"error": "Failed to clear messages",
|
|
})
|
|
}
|
|
return "<hx hx-get='/loadChat' hx-trigger='load' hx-swap='outerHTML' hx-target='#chat-container'></hx>"
|
|
}
|
|
|
|
func DetectCommand(message string, c *fiber.Ctx) (string, bool) {
|
|
for _, command := range Commands {
|
|
if command.Trigger == message {
|
|
return command.Handler(c), true
|
|
}
|
|
}
|
|
return "", false // No command detected
|
|
}
|