Skip to content

Commit 5e11f8c

Browse files
committed
refactor(discord): move bot init and commands to commands package
1 parent 4efc5a7 commit 5e11f8c

6 files changed

Lines changed: 52 additions & 66 deletions

File tree

discord/commands/handler.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package commands
2+
3+
import (
4+
"strings"
5+
6+
"github.com/bwmarrin/discordgo"
7+
"github.com/gaucho-racing/sentinel/discord/config"
8+
"github.com/gaucho-racing/sentinel/discord/pkg/logger"
9+
"github.com/gaucho-racing/sentinel/discord/service"
10+
)
11+
12+
func InitializeBot() {
13+
if service.Discord == nil {
14+
logger.SugarLogger.Errorln("Discord session is not connected")
15+
return
16+
}
17+
service.Discord.AddHandler(OnDiscordMessage)
18+
service.Discord.Identify.Intents = discordgo.MakeIntent(discordgo.IntentsAll)
19+
err := service.Discord.Open()
20+
if err != nil {
21+
logger.SugarLogger.Errorln("Error opening Discord connection:", err)
22+
return
23+
}
24+
logger.SugarLogger.Infof("Discord Bot is now running! [Prefix = %s]", config.DiscordPrefix)
25+
}
26+
27+
func OnDiscordMessage(s *discordgo.Session, m *discordgo.MessageCreate) {
28+
if m.Author.ID == s.State.User.ID {
29+
return
30+
}
31+
if !strings.HasPrefix(m.Content, config.DiscordPrefix) {
32+
return
33+
}
34+
parts := strings.Fields(m.Content[len(config.DiscordPrefix):])
35+
if len(parts) == 0 {
36+
return
37+
}
38+
command := parts[0]
39+
args := parts[1:]
40+
switch command {
41+
case "ping":
42+
Ping(args, s, m)
43+
default:
44+
logger.SugarLogger.Infof("Unknown command: %s", command)
45+
}
46+
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package service
1+
package commands
22

33
import (
44
"strconv"
@@ -7,7 +7,7 @@ import (
77
"github.com/gaucho-racing/sentinel/discord/config"
88
)
99

10-
func Ping(s *discordgo.Session, m *discordgo.MessageCreate) {
10+
func Ping(args []string, s *discordgo.Session, m *discordgo.MessageCreate) {
1111
message, err := s.ChannelMessageSend(m.ChannelID, "Pong from "+config.Service.FormattedNameWithVersion()+"!")
1212
if err == nil {
1313
delay := message.Timestamp.Sub(m.Timestamp).Milliseconds()

discord/config/verify.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func Verify() {
3838
logger.SugarLogger.Warnln("DISCORD_GUILD is not set")
3939
}
4040
if DiscordPrefix == "" {
41-
DiscordPrefix = "s!"
41+
DiscordPrefix = "d!"
4242
logger.SugarLogger.Infof("DISCORD_PREFIX is not set, defaulting to %s", DiscordPrefix)
4343
}
4444
}

discord/main.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"github.com/gaucho-racing/sentinel/discord/api"
5+
"github.com/gaucho-racing/sentinel/discord/commands"
56
"github.com/gaucho-racing/sentinel/discord/config"
67
"github.com/gaucho-racing/sentinel/discord/database"
78
"github.com/gaucho-racing/sentinel/discord/pkg/logger"
@@ -18,7 +19,7 @@ func main() {
1819
rincon.Init(&config.Service, &config.Routes)
1920
database.Init()
2021
service.ConnectDiscord()
21-
service.InitializeBot()
22+
commands.InitializeBot()
2223

2324
api.Run()
2425
}

discord/service/discord.go

Lines changed: 0 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -17,64 +17,3 @@ func ConnectDiscord() {
1717
Discord = dg
1818
logger.SugarLogger.Infoln("Created Discord session")
1919
}
20-
21-
func InitializeBot() {
22-
Discord.AddHandler(OnDiscordMessage)
23-
Discord.Identify.Intents = discordgo.MakeIntent(discordgo.IntentsAll)
24-
err := Discord.Open()
25-
if err != nil {
26-
logger.SugarLogger.Errorln("Error opening Discord connection:", err)
27-
return
28-
}
29-
logger.SugarLogger.Infof("Discord Bot is now running! [Prefix = %s]", config.DiscordPrefix)
30-
}
31-
32-
func OnDiscordMessage(s *discordgo.Session, m *discordgo.MessageCreate) {
33-
if m.Author.ID == s.State.User.ID {
34-
return
35-
}
36-
if len(m.Content) < len(config.DiscordPrefix) || m.Content[:len(config.DiscordPrefix)] != config.DiscordPrefix {
37-
return
38-
}
39-
args := splitCommand(m.Content[len(config.DiscordPrefix):])
40-
if len(args) == 0 {
41-
return
42-
}
43-
command := args[0]
44-
args = args[1:]
45-
switch command {
46-
case "ping":
47-
Ping(s, m)
48-
default:
49-
logger.SugarLogger.Infof("Unknown command: %s", command)
50-
}
51-
}
52-
53-
func splitCommand(s string) []string {
54-
var result []string
55-
for _, part := range splitBySpace(s) {
56-
if part != "" {
57-
result = append(result, part)
58-
}
59-
}
60-
return result
61-
}
62-
63-
func splitBySpace(s string) []string {
64-
var parts []string
65-
current := ""
66-
for _, c := range s {
67-
if c == ' ' {
68-
if current != "" {
69-
parts = append(parts, current)
70-
current = ""
71-
}
72-
} else {
73-
current += string(c)
74-
}
75-
}
76-
if current != "" {
77-
parts = append(parts, current)
78-
}
79-
return parts
80-
}

docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ services:
4444
DATABASE_NAME: sentinel
4545
DISCORD_TOKEN: ${DISCORD_TOKEN}
4646
DISCORD_GUILD: ${DISCORD_GUILD}
47-
DISCORD_PREFIX: ${DISCORD_PREFIX:-s!}
47+
DISCORD_PREFIX: d!
4848

4949
db:
5050
container_name: sentinel-db

0 commit comments

Comments
 (0)