|
@@ -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
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
type Member struct {
|
|
|
GuildID string `json:"guild_id"`
|