From 8e8dd205b28268c0223122a78566fab02ad2d110 Mon Sep 17 00:00:00 2001 From: darius Date: Fri, 3 May 2024 21:25:42 +0200 Subject: [PATCH] refactor step 1 --- commands.go => commands/commands.go | 4 +- handlers.go | 74 ------------------------- delete.go => handlers/deleteCommand.go | 10 +++- handlers/handlers.go | 1 + handlers/messageHandler.go | 42 ++++++++++++++ main.go | 11 ++-- routers/commandRouter.go | 41 ++++++++++++++ routers/messageRouter.go | 19 +++++++ services/Error.go | 5 ++ initServer.go => services/initServer.go | 4 +- readJson.go => services/readJson.go | 2 +- 11 files changed, 127 insertions(+), 86 deletions(-) rename commands.go => commands/commands.go (93%) delete mode 100644 handlers.go rename delete.go => handlers/deleteCommand.go (79%) create mode 100644 handlers/handlers.go create mode 100644 handlers/messageHandler.go create mode 100644 routers/commandRouter.go create mode 100644 routers/messageRouter.go create mode 100644 services/Error.go rename initServer.go => services/initServer.go (95%) rename readJson.go => services/readJson.go (96%) diff --git a/commands.go b/commands/commands.go similarity index 93% rename from commands.go rename to commands/commands.go index c7f603d..fdc8629 100644 --- a/commands.go +++ b/commands/commands.go @@ -1,8 +1,8 @@ -package main +package commands import "github.com/bwmarrin/discordgo" -var commands = []*discordgo.ApplicationCommand{ +var Commands = []*discordgo.ApplicationCommand{ { Name: "test1", Description: "Showcase of a basic slash command", diff --git a/handlers.go b/handlers.go deleted file mode 100644 index e9a3770..0000000 --- a/handlers.go +++ /dev/null @@ -1,74 +0,0 @@ -package main - -import ( - "fmt" - "github.com/bwmarrin/discordgo" -) - -func MessageHandler(s *discordgo.Session, m *discordgo.MessageCreate) { - - if m.Author.ID == s.State.User.ID { - return - } - switch m.Content { - case "test": - var serverListString string - for i, server := range ServerList { - serverListString = serverListString + fmt.Sprintf("\n %d) ", i+1) + server.Name - } - s.ChannelMessageSendEmbed(m.ChannelID, &discordgo.MessageEmbed{ - Title: "Servers", - Fields: []*discordgo.MessageEmbedField{ - { - Value: serverListString, - }, - }, - Type: discordgo.EmbedTypeArticle, - }) - - case "!test": - s.ChannelMessageSendEmbed(m.ChannelID, &discordgo.MessageEmbed{ - Title: "Servers", - Fields: []*discordgo.MessageEmbedField{ - { - Value: "test", - }, - }, - Type: discordgo.EmbedTypeArticle, - }) - } -} - -func CommandHandler(s *discordgo.Session, i *discordgo.InteractionCreate) { - data := i.ApplicationCommandData() - switch data.Name { - case "init": - AddServer(i.GuildID, s) - case "test1": - err := s.InteractionRespond( - i.Interaction, - &discordgo.InteractionResponse{ - Type: discordgo.InteractionResponseChannelMessageWithSource, - Data: &discordgo.InteractionResponseData{}, - }, - ) - if err != nil { - // Handle the error - } - case "read_back": - err := s.InteractionRespond( - i.Interaction, - &discordgo.InteractionResponse{ - Type: discordgo.InteractionResponseChannelMessageWithSource, - Data: &discordgo.InteractionResponseData{ - Content: data.Options[0].Value.(string), - }, - }, - ) - if err != nil { - // Handle the error - } - case "delete": - deleteMessages(data, s, i) - } -} diff --git a/delete.go b/handlers/deleteCommand.go similarity index 79% rename from delete.go rename to handlers/deleteCommand.go index 2b9e32d..fbd9ba1 100644 --- a/delete.go +++ b/handlers/deleteCommand.go @@ -1,11 +1,12 @@ -package main +package handlers import ( "github.com/bwmarrin/discordgo" + "kleincordBot/services" "strconv" ) -func deleteMessages(data discordgo.ApplicationCommandInteractionData, s *discordgo.Session, i *discordgo.InteractionCreate) { +func DeleteCommand(data discordgo.ApplicationCommandInteractionData, s *discordgo.Session, i *discordgo.InteractionCreate) { amount, _ := strconv.Atoi(data.Options[0].Value.(string)) if amount > 100 { amount = 100 @@ -42,7 +43,10 @@ func deleteMessages(data discordgo.ApplicationCommandInteractionData, s *discord println(message.Content + " deleted") } } - s.FollowupMessageCreate(i.Interaction, true, &discordgo.WebhookParams{ + _, err = s.FollowupMessageCreate(i.Interaction, true, &discordgo.WebhookParams{ Content: strconv.Itoa(len(messages)) + " Message deleted", }) + if err != nil { + services.HandleError(err) + } } diff --git a/handlers/handlers.go b/handlers/handlers.go new file mode 100644 index 0000000..5ac8282 --- /dev/null +++ b/handlers/handlers.go @@ -0,0 +1 @@ +package handlers diff --git a/handlers/messageHandler.go b/handlers/messageHandler.go new file mode 100644 index 0000000..a84cfbf --- /dev/null +++ b/handlers/messageHandler.go @@ -0,0 +1,42 @@ +package handlers + +import ( + "fmt" + "github.com/bwmarrin/discordgo" + "kleincordBot/services" +) + +func MessageTest(s *discordgo.Session, m *discordgo.MessageCreate) { + var serverListString string + for i, server := range services.ServerList { + serverListString = serverListString + fmt.Sprintf("\n %d) ", i+1) + server.Name + } + _, err := s.ChannelMessageSendEmbed(m.ChannelID, &discordgo.MessageEmbed{ + Title: "Servers", + Fields: []*discordgo.MessageEmbedField{ + { + Value: serverListString, + }, + }, + Type: discordgo.EmbedTypeArticle, + }) + if err != nil { + services.HandleError(err) + } +} + +func MessageTest2(s *discordgo.Session, m *discordgo.MessageCreate) { + + _, err := s.ChannelMessageSendEmbed(m.ChannelID, &discordgo.MessageEmbed{ + Title: "Servers", + Fields: []*discordgo.MessageEmbedField{ + { + Value: "test", + }, + }, + Type: discordgo.EmbedTypeArticle, + }) + if err != nil { + services.HandleError(err) + } +} diff --git a/main.go b/main.go index a88eb55..74612c8 100644 --- a/main.go +++ b/main.go @@ -4,6 +4,9 @@ import ( "flag" "github.com/bwmarrin/discordgo" "github.com/joho/godotenv" + "kleincordBot/commands" + "kleincordBot/routers" + "kleincordBot/services" "log" "os" "os/signal" @@ -22,22 +25,22 @@ func main() { return } - initServers() + services.InitServers() discord, err := discordgo.New("Bot " + os.Getenv("BOT_TOKEN")) if err != nil { log.Fatalf(err.Error()) } - discord.AddHandler(MessageHandler) - discord.AddHandler(CommandHandler) + discord.AddHandler(routers.MessageRouter) + discord.AddHandler(routers.CommandRouter) err = discord.Open() if err != nil { log.Fatalf("Cannot open the session: %v", err) } - _, err = discord.ApplicationCommandBulkOverwrite(discord.State.User.ID, *GuildID, commands) + _, err = discord.ApplicationCommandBulkOverwrite(discord.State.User.ID, *GuildID, commands.Commands) if err != nil { print(err.Error()) } diff --git a/routers/commandRouter.go b/routers/commandRouter.go new file mode 100644 index 0000000..bdec759 --- /dev/null +++ b/routers/commandRouter.go @@ -0,0 +1,41 @@ +package routers + +import ( + "github.com/bwmarrin/discordgo" + "kleincordBot/handlers" + "kleincordBot/services" +) + +func CommandRouter(s *discordgo.Session, i *discordgo.InteractionCreate) { + data := i.ApplicationCommandData() + switch data.Name { + case "init": + services.AddServer(i.GuildID, s) + case "test1": + err := s.InteractionRespond( + i.Interaction, + &discordgo.InteractionResponse{ + Type: discordgo.InteractionResponseChannelMessageWithSource, + Data: &discordgo.InteractionResponseData{}, + }, + ) + if err != nil { + services.HandleError(err) + } + case "read_back": + err := s.InteractionRespond( + i.Interaction, + &discordgo.InteractionResponse{ + Type: discordgo.InteractionResponseChannelMessageWithSource, + Data: &discordgo.InteractionResponseData{ + Content: data.Options[0].Value.(string), + }, + }, + ) + if err != nil { + services.HandleError(err) + } + case "delete": + handlers.DeleteCommand(data, s, i) + } +} diff --git a/routers/messageRouter.go b/routers/messageRouter.go new file mode 100644 index 0000000..28d7726 --- /dev/null +++ b/routers/messageRouter.go @@ -0,0 +1,19 @@ +package routers + +import ( + "github.com/bwmarrin/discordgo" + "kleincordBot/handlers" +) + +func MessageRouter(s *discordgo.Session, m *discordgo.MessageCreate) { + + if m.Author.ID == s.State.User.ID { + return + } + switch m.Content { + case "test": + handlers.MessageTest(s, m) + case "!test": + handlers.MessageTest2(s, m) + } +} diff --git a/services/Error.go b/services/Error.go new file mode 100644 index 0000000..e91155d --- /dev/null +++ b/services/Error.go @@ -0,0 +1,5 @@ +package services + +func HandleError(err error) { + +} diff --git a/initServer.go b/services/initServer.go similarity index 95% rename from initServer.go rename to services/initServer.go index 6cc5d92..45325df 100644 --- a/initServer.go +++ b/services/initServer.go @@ -1,4 +1,4 @@ -package main +package services import ( "encoding/json" @@ -14,7 +14,7 @@ type Server struct { var ServerList []Server -func initServers() { +func InitServers() { ServerList = readJson() } diff --git a/readJson.go b/services/readJson.go similarity index 96% rename from readJson.go rename to services/readJson.go index ba9e1d1..7f3b366 100644 --- a/readJson.go +++ b/services/readJson.go @@ -1,4 +1,4 @@ -package main +package services import ( "encoding/json"