summaryrefslogtreecommitdiff
path: root/app/cmd/main.go
diff options
context:
space:
mode:
authorsoler_j <soler_j@etna-alternance.net>2025-04-29 03:07:48 +0200
committersoler_j <soler_j@etna-alternance.net>2025-04-29 03:07:48 +0200
commit2a58d43c3b820eb8ffec01bb51905146a7278533 (patch)
treed05b0b815aee8520ae1375b69a503511f7b260fa /app/cmd/main.go
parent0c53f3e452830b300c598c9370946ae54f443a78 (diff)
Ajout de la prise en charge de ZeroMQ dans le bot, mise à jour des dépendances et réorganisation du Dockerfile. Suppression de l'implémentation de serveur Unix obsolète et amélioration de la gestion des messages.
Diffstat (limited to 'app/cmd/main.go')
-rw-r--r--app/cmd/main.go55
1 files changed, 38 insertions, 17 deletions
diff --git a/app/cmd/main.go b/app/cmd/main.go
index 14980b7..87212ef 100644
--- a/app/cmd/main.go
+++ b/app/cmd/main.go
@@ -2,7 +2,6 @@ package main
import (
"encoding/json"
- "fmt"
"log"
"net/http"
"os"
@@ -10,6 +9,7 @@ import (
"syscall"
"github.com/ketsuna-org/bot-creator-api/internal"
+ zmq "github.com/pebbe/zmq4"
)
func init() {
@@ -23,18 +23,33 @@ func main() {
mux.HandleFunc("GET /", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, World!"))
})
- botId := "xxxxx"
- botToken := "xxxxx"
+ botToken := "XXXXXXXXXXXX" // Replace with your bot token
+
+ ctx, err := zmq.NewContext()
+ if err != nil {
+ log.Fatalf("[SERVER] Failed to create context: %v", err)
+ }
+ defer ctx.Term()
+
+ dealer, err := ctx.NewSocket(zmq.REP)
+ if err != nil {
+ log.Fatalf("[SERVER] Failed to create dealer: %v", err)
+ }
+ defer dealer.Close()
+
+ err = dealer.Bind("tcp://*:5555")
+ if err != nil {
+ log.Fatalf("[SERVER] Failed to bind dealer: %v", err)
+ }
bot := &internal.Bot{
- BotID: botId,
BotToken: botToken,
}
- conn, err := internal.Start(bot)
+
+ bot, err = internal.Start(bot, dealer)
if err != nil {
- log.Fatalf("Error starting bot: %v", err)
+ log.Fatalf("[SERVER] Error starting bot: %v", err)
}
- defer conn.Close()
// Handle the bot connection
data, err := json.Marshal(map[string]interface{}{
"command": "update",
@@ -45,10 +60,22 @@ func main() {
},
})
if err != nil {
- log.Fatalf("Error marshaling JSON: %v", err)
+ log.Fatalf("[SERVER] Error marshaling JSON: %v", err)
}
- conn.Write(data)
+ go bot.SendMessage(string(data))
+ dataX, err := json.Marshal(map[string]interface{}{
+ "command": "update",
+ "data": map[string]interface{}{
+ "ping": map[string]string{
+ "response": "pong ((userName)) avec une modif !",
+ },
+ },
+ })
+ if err != nil {
+ log.Fatalf("[SERVER] Error marshaling JSON: %v", err)
+ }
+ go bot.SendMessage(string(dataX))
// Handle if signal is received
signals := make(chan os.Signal, 1)
@@ -60,18 +87,12 @@ func main() {
// let's kill the bot
if bot.Cmd != nil {
if err := bot.Cmd.Process.Kill(); err != nil {
- log.Printf("Error killing bot process: %v", err)
+ log.Printf("[SERVER] Error killing bot process: %v", err)
} else {
- log.Printf("Bot process killed successfully")
+ log.Printf("[SERVER] Bot process killed successfully")
}
}
// let's remove the socket
- socketPath := fmt.Sprintf("/tmp/%s.sock", bot.BotID)
- if err := os.RemoveAll(socketPath); err != nil {
- log.Printf("Error removing socket: %v", err)
- } else {
- log.Printf("Socket removed successfully")
- }
os.Exit(0)
}()
panic(http.ListenAndServe(":2030", mux))