...

Source file src/go.formulabun.club/discord/slashrecords/search/format.go

Documentation: go.formulabun.club/discord/slashrecords/search

     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