diff --git a/gateway/op.go b/gateway/op.go index 84d7169..0746eed 100644 --- a/gateway/op.go +++ b/gateway/op.go @@ -96,6 +96,10 @@ func AssertEvent(driver json.Driver, } func HandleEvent(g *Gateway, data []byte) error { + if len(data) == 0 { + return ErrInvalidSession + } + // Parse the raw data into an OP struct var op *OP if err := g.Driver.Unmarshal(data, &op); err != nil { diff --git a/state/state.go b/state/state.go index 08c0a16..2c9ee01 100644 --- a/state/state.go +++ b/state/state.go @@ -81,6 +81,13 @@ func (s *State) AuthorDisplayName(message discord.Message) string { return message.Author.Username } + if message.Member != nil { + if message.Member.Nick != "" { + return message.Member.Nick + } + return message.Author.Username + } + n, err := s.MemberDisplayName(message.GuildID, message.Author.ID) if err != nil { return message.Author.Username @@ -109,6 +116,14 @@ func (s *State) AuthorColor(message discord.Message) discord.Color { return discord.DefaultMemberColor } + if message.Member != nil { + guild, err := s.Guild(message.GuildID) + if err != nil { + return discord.DefaultMemberColor + } + return discord.MemberColor(*guild, *message.Member) + } + return s.MemberColor(message.GuildID, message.Author.ID) }