diff --git a/command/himbucks.go b/command/himbucks.go index 53f34ed..66bd7e3 100644 --- a/command/himbucks.go +++ b/command/himbucks.go @@ -22,6 +22,15 @@ func BalanceCommand(s *discordgo.Session, i *discordgo.InteractionCreate) (strin return fmt.Sprintf("💸 You have %d himbucks! 💸", balance), nil } +func BalanceSyncCommand(s *discordgo.Session, i *discordgo.InteractionCreate) (string, error) { + syncError := lib.SyncBalance() + if syncError != nil { + return "", syncError + } + + return fmt.Sprintf("💸 Force-Synchronized Himbucks! 💸"), nil +} + func LeaderboardCommand(s *discordgo.Session, i *discordgo.InteractionCreate) (string, error) { entries, err := lib.GetLeaderboard(i.GuildID, 10) if err != nil { diff --git a/lib/himbucks.go b/lib/himbucks.go index e5afca4..3d1038a 100644 --- a/lib/himbucks.go +++ b/lib/himbucks.go @@ -114,12 +114,6 @@ func ProcessMessage(s *discordgo.Session, m *discordgo.MessageCreate) error { func GetBalance(discordID, guildID string) (int, error) { var balance int - _, syncError := DBConnector.Sync() - - if syncError != nil { - fmt.Println("Error syncing database:", syncError) - } - queryError := DBClient.QueryRow(` SELECT h.balance FROM himbucks h @@ -135,6 +129,17 @@ func GetBalance(discordID, guildID string) (int, error) { return balance, nil } +func SyncBalance() error { + _, syncError := DBConnector.Sync() + + if syncError != nil { + fmt.Println("Error syncing database:", syncError) + return syncError + } + + return nil +} + func GetLeaderboard(guildID string, limit int) ([]HimbucksEntry, error) { rows, err := DBClient.Query(` SELECT u.username, h.balance, h.message_count diff --git a/main.go b/main.go index 5e92840..15ab8f3 100644 --- a/main.go +++ b/main.go @@ -44,13 +44,17 @@ var ( }, }, { - Name: "balance", + Name: "himbucks", Description: "Check your himbucks balance", }, { - Name: "leaderboard", + Name: "himboard", Description: "View the himbucks leaderboard", }, + { + Name: "syncbucks", + Description: "Sync your himbucks balance with the database", + }, } commandHandlers = map[string]func(s *discordgo.Session, i *discordgo.InteractionCreate){ @@ -59,6 +63,7 @@ var ( "markov": lib.HandleCommand("markov", 30*time.Second, command.MarkovCommand), "balance": lib.HandleCommand("balance", 5*time.Second, command.BalanceCommand), "leaderboard": lib.HandleCommand("leaderboard", 5*time.Second, command.LeaderboardCommand), + "syncbucks": lib.HandleCommand("syncbucks", 1800*time.Second, command.BalanceSyncCommand), } )