first commit

This commit is contained in:
Blake Ridgway
2026-04-11 14:06:59 -05:00
commit ba1770b493
21 changed files with 2027 additions and 0 deletions

73
bot/handlers_social.go Normal file
View File

@@ -0,0 +1,73 @@
package bot
import (
"context"
"fmt"
"strings"
"github.com/bwmarrin/discordgo"
)
func (b *Bot) handleKudos(ctx context.Context, s *discordgo.Session, i *discordgo.InteractionCreate) {
target := i.ApplicationCommandData().Options[0].UserValue(s)
if target.ID == i.Member.User.ID {
respondEphemeral(s, i, "You can't kudos yourself! 😄")
return
}
fromName := displayName(i.Member, i.Member.User)
targetMember, _ := s.GuildMember(i.GuildID, target.ID)
toName := displayName(targetMember, target)
if err := b.db.GiveKudos(ctx, i.GuildID, i.Member.User.ID, fromName, target.ID, toName); err != nil {
respondEphemeral(s, i, "Error giving kudos.")
return
}
total, _ := b.db.GetKudosReceived(ctx, i.GuildID, target.ID)
respond(s, i, fmt.Sprintf("👏 **%s** gave kudos to **%s**! They've received %d kudos total. Keep riding! 🚴",
fromName, toName, total))
}
func (b *Bot) handleCompare(ctx context.Context, s *discordgo.Session, i *discordgo.InteractionCreate) {
target := i.ApplicationCommandData().Options[0].UserValue(s)
meID := i.Member.User.ID
meName := displayName(i.Member, i.Member.User)
targetMember, _ := s.GuildMember(i.GuildID, target.ID)
themName := displayName(targetMember, target)
since := b.challengeStart(ctx, i.GuildID)
meStats, _ := b.db.GetUserStats(ctx, i.GuildID, meID, since)
themStats, _ := b.db.GetUserStats(ctx, i.GuildID, target.ID, since)
mePB, _ := b.db.GetUserPB(ctx, i.GuildID, meID)
themPB, _ := b.db.GetUserPB(ctx, i.GuildID, target.ID)
meStreak, _ := b.db.GetUserStreak(ctx, meID)
themStreak, _ := b.db.GetUserStreak(ctx, target.ID)
cmp := func(a, b float64) string {
switch {
case a > b:
return "⬆️"
case b > a:
return "⬇️"
default:
return "="
}
}
cmpI := func(a, b int) string { return cmp(float64(a), float64(b)) }
var sb strings.Builder
sb.WriteString(fmt.Sprintf("## ⚔️ %s vs %s\n\n", meName, themName))
sb.WriteString(fmt.Sprintf("| | **%s** | **%s** |\n", meName, themName))
sb.WriteString("|---|---|---|\n")
sb.WriteString(fmt.Sprintf("| Total KM %s | %.1f | %.1f |\n",
cmp(meStats.TotalKM, themStats.TotalKM), meStats.TotalKM, themStats.TotalKM))
sb.WriteString(fmt.Sprintf("| Rides %s | %d | %d |\n",
cmpI(meStats.LogCount, themStats.LogCount), meStats.LogCount, themStats.LogCount))
sb.WriteString(fmt.Sprintf("| Best ride %s | %.1f km | %.1f km |\n",
cmp(mePB, themPB), mePB, themPB))
sb.WriteString(fmt.Sprintf("| Streak %s | %d days | %d days |\n",
cmpI(meStreak, themStreak), meStreak, themStreak))
respondEphemeral(s, i, sb.String())
}