Fix presence unmarshalling as the values are inconsistent from Discord. (#287)

This commit is contained in:
Chris Rhodes 2016-11-12 11:59:51 -08:00 committed by GitHub
parent c352d7016c
commit b7c7e60fd5

View file

@ -14,6 +14,7 @@ package discordgo
import (
"encoding/json"
"reflect"
"strconv"
"sync"
"time"
@ -290,6 +291,37 @@ type Game struct {
URL string `json:"url"`
}
func (g *Game) UnmarshalJSON(bytes []byte) error {
temp := &struct {
Name string `json:"name"`
Type json.RawMessage `json:"type"`
URL string `json:"url"`
}{}
err := json.Unmarshal(bytes, temp)
if err != nil {
return err
}
g.Name = temp.Name
g.URL = temp.URL
if temp.Type != nil {
err = json.Unmarshal(temp.Type, &g.Type)
if err == nil {
return nil
}
s := ""
err = json.Unmarshal(temp.Type, &s)
if err == nil {
g.Type, err = strconv.Atoi(s)
}
return err
}
return nil
}
// A Member stores user information for Guild members.
type Member struct {
GuildID string `json:"guild_id"`