63 lines
1.4 KiB
Go
63 lines
1.4 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"code.lowsec.club/okawari/go-discord-bot/lib/bot"
|
||
|
"code.lowsec.club/okawari/go-discord-bot/lib/commands"
|
||
|
"code.lowsec.club/okawari/go-discord-bot/lib/helpers"
|
||
|
"code.lowsec.club/okawari/go-discord-bot/lib/logging"
|
||
|
"context"
|
||
|
"github.com/bwmarrin/discordgo"
|
||
|
"github.com/joho/godotenv"
|
||
|
"github.com/rs/zerolog/log"
|
||
|
"gorm.io/gorm"
|
||
|
"os"
|
||
|
"os/signal"
|
||
|
)
|
||
|
|
||
|
var discord *discordgo.Session
|
||
|
|
||
|
func main() {
|
||
|
_ = logging.InitLogging()
|
||
|
err := godotenv.Load()
|
||
|
if err != nil {
|
||
|
log.Err(err).Msg("Unable to load dot env files")
|
||
|
}
|
||
|
|
||
|
log.Info().Msg("Starting discord bot")
|
||
|
|
||
|
ctx := context.Background()
|
||
|
|
||
|
db, err := helpers.CreateConnection(&gorm.Config{
|
||
|
Logger: logging.DBLogger{Logger: log.With().Str("module", "sql").Logger()},
|
||
|
})
|
||
|
|
||
|
if err != nil {
|
||
|
log.Panic().Str("module", "sql").Err(err).Msg("unable to connect to database")
|
||
|
}
|
||
|
|
||
|
helpers.AutoMigrate(db)
|
||
|
helpers.ImportFromFio(db)
|
||
|
|
||
|
ctx = helpers.AddDb(ctx, db)
|
||
|
discord, err := bot.New(ctx, "trader", os.Getenv("DISCORD_TOKEN"))
|
||
|
if err != nil {
|
||
|
log.Err(err).Msg("Unable to create discord bot")
|
||
|
}
|
||
|
|
||
|
discord.AddCommand(commands.StockCommand{}, true)
|
||
|
discord.AddCommand(commands.PriceCommand{}, true)
|
||
|
|
||
|
err = discord.Open()
|
||
|
if err != nil {
|
||
|
log.Fatal().Err(err).Msg("Unable to start discord session")
|
||
|
}
|
||
|
defer discord.Close()
|
||
|
|
||
|
stop := make(chan os.Signal, 1)
|
||
|
signal.Notify(stop, os.Interrupt)
|
||
|
log.Info().Msg("Press Ctrl+C to exit")
|
||
|
<-stop
|
||
|
|
||
|
log.Info().Msg("Shutting down")
|
||
|
}
|