diff --git a/huso.go b/huso.go index 7a2404f..c910bed 100644 --- a/huso.go +++ b/huso.go @@ -20,7 +20,7 @@ import ( ) const ( - husoVersion = "1.3" + husoVersion = "1.4" registerSecret = "綾波レイ" seasonStrJikan = "seasons/" userApiJikan = "users/" diff --git a/labersack.go b/labersack.go index 8deb43b..817bdf1 100644 --- a/labersack.go +++ b/labersack.go @@ -4,22 +4,57 @@ import ( "fmt" "strings" + "github.com/bwmarrin/discordgo" "github.com/gookit/color" ) func SendAppointBroadcast(creator string, app *Appointment) { if app != nil && discc != nil { + watchData, err := GetAnimeWatchFromDb(app.Anime) + if err != nil { + color.Errorln(err.Error()) + return + } + anime, err := SearchAnime(app.Anime) + if err != nil { + color.Errorln(err.Error()) + return + } + var msgStart strings.Builder - for _, u := range app.Users { - uData, err := ReadUser(u) + for _, u := range watchData.Users { + uData, err := ReadUser(u.Username) if err != nil || uData.DiscordID == 0 { continue } - msgStart.WriteString(fmt.Sprintf("<@%d> ", uData.DiscordID)) + msgStart.WriteString(fmt.Sprintf("<@%d>", uData.DiscordID)) } - msg := fmt.Sprintf("📺 %s%s created appointment for %d at ", msgStart.String(), creator, app.Anime, app.Time.Unix()) - _, err := discc.ChannelMessageSend("998277590609559632", msg) + msgs := fmt.Sprintf("🗓️ New appointment for [%s](https://anime.hanami.family/anime/%d) at ", anime.Title, app.Anime, app.Time.Unix(), app.Time.Unix()) + msgc := discordgo.MessageSend{ + Content: msgStart.String(), + Embeds: []*discordgo.MessageEmbed{{ + Description: msgs, + URL: fmt.Sprintf("https://anime.hanami.family/anime/%d", app.Anime), + Thumbnail: &discordgo.MessageEmbedThumbnail{URL: anime.ImageLargeURL}, + Color: 7187428, + Footer: &discordgo.MessageEmbedFooter{ + Text: "huso " + husoVersion, + }, + }}, + } + + user, _, err := GetUserData(creator) + if err == nil { + msgc.Embed.Author = &discordgo.MessageEmbedAuthor{ + Name: user.Username, + IconURL: user.ImageURL, + URL: fmt.Sprintf("https://anime.hanami.family/user/%s", creator), + } + } + + _, err = discc.ChannelMessageSendComplex("998277590609559632", &msgc) + if err != nil { color.Errorln(err.Error()) } diff --git a/schaffer.go b/schaffer.go index 87340f1..b6c154e 100644 --- a/schaffer.go +++ b/schaffer.go @@ -253,6 +253,19 @@ func AddToChat(old, new, user string) string { return buf.String() } +func GetAnimeWatchFromDb(animeId int64) (*AnimeUser, error) { + dbAnime, err := ReadAnimeUsers() + if err != nil { + return nil, err + } + for _, a := range dbAnime { + if a.Anime == animeId { + return &a, err + } + } + return nil, errors.New("anime not found") +} + func CheckAnimeExistInDb(animeId int64) (bool, error) { dbAnime, err := ReadAnimeUsers() if err != nil {