...
1 package search
2
3 import (
4 "fmt"
5 "time"
6
7 "github.com/bwmarrin/discordgo"
8 "go.formulabun.club/replays/store"
9 "go.formulabun.club/srb2kart/conversion"
10 )
11
12 func format(searchData store.Replay, replays []store.Replay) []*discordgo.MessageEmbed {
13 result := make([]*discordgo.MessageEmbed, 1+len(replays))
14 if len(replays) == 0 {
15 result[0] = &discordgo.MessageEmbed{
16 Type: discordgo.EmbedTypeRich,
17 Title: "there are no records yet.",
18 Description: "Go take this easy first place!",
19 }
20 return result
21 }
22 searchGenerator := formatSearchData(searchData)
23 recordGenerator := formatRecordData(replays)
24
25 i := 1
26 header := <-searchGenerator
27 result[0] = &header
28 for embed := range recordGenerator {
29 em := embed
30 result[i] = &em
31 i++
32 }
33
34 return result
35 }
36
37 func formatSearchData(searchData store.Replay) chan discordgo.MessageEmbed {
38 generate := make(chan discordgo.MessageEmbed)
39 mapID, _ := conversion.NumberToMapId(uint(searchData.GameMap))
40 go func() {
41 generate <- discordgo.MessageEmbed{
42 Type: discordgo.EmbedTypeRich,
43 Title: "Records for you",
44 Description: fmt.Sprintf("On map %s", mapID),
45 }
46 close(generate)
47 }()
48
49 return generate
50 }
51
52 func formatRecordData(replays []store.Replay) chan discordgo.MessageEmbed {
53 generate := make(chan discordgo.MessageEmbed)
54 go func() {
55 fmt.Println(replays)
56 for _, r := range replays {
57 recordTime := conversion.FramesToTime(uint(r.Time))
58 embed := discordgo.MessageEmbed{
59 Type: discordgo.EmbedTypeRich,
60 Title: fmt.Sprintf("%s - %s (%d, %d)", r.PlayerName[:], r.PlayerSkin, r.Speed, r.Weight),
61 Description: fmt.Sprintf("%s", recordTime.Round(time.Millisecond)),
62 }
63 generate <- embed
64 }
65 close(generate)
66 }()
67 return generate
68 }
69
View as plain text