@@ -25,26 +25,63 @@ var praisesFile embed.FS
2525var conspiraciesFile embed.FS
2626
2727var (
28+ // messages sourced from the embedded files
2829 praises []string
2930 conspiracies []string
3031
32+ // internally track which messages have been sent
3133 praiseIndex int
3234 conspiracyIndex int
3335)
3436
37+ // Settings for bot sourced from env variables
3538var (
3639 botToken string
3740 channelID string
38- )
3941
40- var (
4142 SendMessageIntervalMin int
4243 SendMessageIntervalMax int
4344 SendMessageUnit time.Duration
44- DeleteConspiracyDelay time.Duration
45- ConspiracyProbability float64
45+
46+ DeleteConspiracyDelay time.Duration
47+ ConspiracyProbability float64
4648)
4749
50+ func main () {
51+ if err := loadEnvConfig (); err != nil {
52+ log .Fatalf ("[x] Failed to load configuration: %v" , err )
53+ }
54+
55+ // Load messages at build time
56+ if err := loadMessages (); err != nil {
57+ log .Fatalf ("[x] Error loading messages: %v" , err )
58+ }
59+
60+ // Initialize bot session
61+ dg , err := discordgo .New ("Bot " + botToken )
62+ if err != nil {
63+ log .Fatalf ("[x] Error creating Discord session: %v" , err )
64+ }
65+
66+ // Open WebSocket connection
67+ dg .AddHandler (readyHandler )
68+ if err := dg .Open (); err != nil {
69+ log .Fatalf ("[x] Error opening connection: %v" , err )
70+ }
71+ defer dg .Close ()
72+
73+ // Start the message scheduler
74+ go startScheduler (dg , channelID )
75+
76+ // Graceful shutdown handling
77+ log .Println ("[✓] Swiftspiracy Bot is now running. Press CTRL+C to exit." )
78+ sc := make (chan os.Signal , 1 )
79+ signal .Notify (sc , syscall .SIGINT , syscall .SIGTERM , os .Interrupt )
80+ <- sc
81+
82+ log .Println ("[↓] Shutting down bot gracefully..." )
83+ }
84+
4885func loadEnvConfig () error {
4986 if err := godotenv .Load (); err != nil {
5087 log .Println ("[!] No .env file found, using system environment variables." )
@@ -94,41 +131,6 @@ func loadEnvConfig() error {
94131 return nil
95132}
96133
97- func main () {
98- if err := loadEnvConfig (); err != nil {
99- log .Fatalf ("[x] Failed to load configuration: %v" , err )
100- }
101-
102- // Load messages at build time
103- if err := loadMessages (); err != nil {
104- log .Fatalf ("[x] Error loading messages: %v" , err )
105- }
106-
107- // Initialize bot session
108- dg , err := discordgo .New ("Bot " + botToken )
109- if err != nil {
110- log .Fatalf ("[x] Error creating Discord session: %v" , err )
111- }
112-
113- // Open WebSocket connection
114- dg .AddHandler (readyHandler )
115- if err := dg .Open (); err != nil {
116- log .Fatalf ("[x] Error opening connection: %v" , err )
117- }
118- defer dg .Close ()
119-
120- // Start the message scheduler
121- go startScheduler (dg , channelID )
122-
123- // Graceful shutdown handling
124- log .Println ("[✓] Swiftspiracy Bot is now running. Press CTRL+C to exit." )
125- sc := make (chan os.Signal , 1 )
126- signal .Notify (sc , syscall .SIGINT , syscall .SIGTERM , os .Interrupt )
127- <- sc
128-
129- log .Println ("[↓] Shutting down bot gracefully..." )
130- }
131-
132134// loadMessages loads JSON files into memory at build time
133135func loadMessages () error {
134136 var err error
0 commit comments