diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2f5a561 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.vscode +*.log +*.exe \ No newline at end of file diff --git a/cmd/main.go b/cmd/main.go new file mode 100644 index 0000000..52a4ce4 --- /dev/null +++ b/cmd/main.go @@ -0,0 +1,35 @@ +package main + +import ( + m "dcskellerdiscordgo" + "log" + "os" + "strings" +) + +func main() { + arg := os.Args + token := "" + botChannel := "" + serverStatusMessageID := "" + + for _, ele := range arg { + if strings.Index(ele, "-t ") == 0 { + token = ele[3:] + } else if strings.Index(ele, "-c ") == 0 { + botChannel = ele[3:] + } else if strings.Index(ele, "--serverStatusMessageId ") == 0 { + serverStatusMessageID = ele[24:] + } + } + if token == "" { + log.Fatal("Missing \"-t \" parameter") + } else if botChannel == "" { + log.Fatal("Missing \"-c \" parameter") + } + + err := m.RunBot(token, botChannel, serverStatusMessageID) + if err != nil { + log.Fatal(err) + } +} diff --git a/dcskellerdiscord.go b/dcskellerdiscord.go new file mode 100644 index 0000000..0a8e026 --- /dev/null +++ b/dcskellerdiscord.go @@ -0,0 +1,44 @@ +package dcskellerdiscordgo + +import ( + "strconv" + "time" + + "github.com/bwmarrin/discordgo" +) + +// RunBot starts the dcs kellergeschwader discord bot +func RunBot(token string, botChannel string, serverStatusMessageID string) error { + session, err := discordgo.New("Bot " + token) + if err != nil { + return err + } + + colorOnline := 3388721 //33b531 + colorOffline := 11878449 //b54031 + serverOnline := true + playerOnline := 0 + + embedMessage := discordgo.MessageEmbed{} + embedMessage.Title = "Server Status" + embedMessage.Thumbnail = &discordgo.MessageEmbedThumbnail{ + URL: "https://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/F16_drawing.svg/320px-F16_drawing.svg.png", + } + embedMessage.Timestamp = time.Now().Format("2006-01-02T15:04:05-0700") + embedMessage.Footer = &discordgo.MessageEmbedFooter{ + Text: "Last update", + } + + if serverOnline == true { + embedMessage.Description += "Online\n" + embedMessage.Color = colorOnline + } else { + embedMessage.Description += "Offline\n" + embedMessage.Color = colorOffline + } + + embedMessage.Description += strconv.Itoa(playerOnline) + " players online" + + session.ChannelMessageEditEmbed(botChannel, serverStatusMessageID, &embedMessage) + return nil +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..81d123b --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module dcskellerdiscordgo + +go 1.16 + +require github.com/bwmarrin/discordgo v0.23.2 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..28dbed2 --- /dev/null +++ b/go.sum @@ -0,0 +1,6 @@ +github.com/bwmarrin/discordgo v0.23.2 h1:BzrtTktixGHIu9Tt7dEE6diysEF9HWnXeHuoJEt2fH4= +github.com/bwmarrin/discordgo v0.23.2/go.mod h1:c1WtWUGN6nREDmzIpyTp/iD3VYt4Fpx+bVyfBG7JE+M= +github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16 h1:y6ce7gCWtnH+m3dCjzQ1PCuwl28DDIc3VNnvY29DlIA= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=