first commit
This commit is contained in:
73
bot/handlers_social.go
Normal file
73
bot/handlers_social.go
Normal 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())
|
||||
}
|
||||
Reference in New Issue
Block a user