From c7d33f5dcc3692e6034fd5403174400c7f7ae8e9 Mon Sep 17 00:00:00 2001 From: "diamondburned (Forefront)" Date: Mon, 20 Jan 2020 17:06:51 -0800 Subject: [PATCH] Added some helper functions --- discord/time.go | 14 ++++++++++--- state/state.go | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 3 deletions(-) diff --git a/discord/time.go b/discord/time.go index cdd2a0a..788b021 100644 --- a/discord/time.go +++ b/discord/time.go @@ -31,15 +31,23 @@ func (t *Timestamp) UnmarshalJSON(v []byte) error { } func (t Timestamp) MarshalJSON() ([]byte, error) { - if time.Time(t).IsZero() { + if !t.Valid() { return []byte("null"), nil } - return []byte(`"` + time.Time(t).Format(TimestampFormat) + `"`), nil + return []byte(`"` + t.Format(TimestampFormat) + `"`), nil } func (t Timestamp) Valid() bool { - return !time.Time(t).IsZero() + return !t.Time().IsZero() +} + +func (t Timestamp) Format(fmt string) string { + return t.Time().Format(fmt) +} + +func (t Timestamp) Time() time.Time { + return time.Time(t) } // diff --git a/state/state.go b/state/state.go index c130a3b..d4b1b45 100644 --- a/state/state.go +++ b/state/state.go @@ -76,6 +76,58 @@ func (s *State) Unhook() { s.unhooker() } +//// Helper methods + +func (s *State) AuthorDisplayName(message discord.Message) string { + if !message.GuildID.Valid() { + return message.Author.Username + } + + n, err := s.MemberDisplayName(message.GuildID, message.Author.ID) + if err != nil { + return message.Author.Username + } + + return n +} + +func (s *State) MemberDisplayName( + guildID, userID discord.Snowflake) (string, error) { + + member, err := s.Member(guildID, userID) + if err != nil { + return "", err + } + + if member.Nick == "" { + return member.User.Username, nil + } + + return member.Nick, nil +} + +func (s *State) AuthorColor(message discord.Message) discord.Color { + if !message.GuildID.Valid() { + return discord.DefaultMemberColor + } + + return s.MemberColor(message.GuildID, message.Author.ID) +} + +func (s *State) MemberColor(guildID, userID discord.Snowflake) discord.Color { + member, err := s.Member(guildID, userID) + if err != nil { + return discord.DefaultMemberColor + } + + guild, err := s.Guild(guildID) + if err != nil { + return discord.DefaultMemberColor + } + + return discord.MemberColor(*guild, *member) +} + //// func (s *State) Permissions(