Browse Source

Work around a Discord server issue.

Chris Rhodes 9 years ago
parent
commit
abc0e5b095
2 changed files with 14 additions and 10 deletions
  1. 9 8
      structs.go
  2. 5 2
      wsapi.go

+ 9 - 8
structs.go

@@ -170,13 +170,14 @@ type Guild struct {
 
 // A Role stores information about Discord guild member roles.
 type Role struct {
-	ID          string `json:"id"`
-	Name        string `json:"name"`
-	Managed     bool   `json:"managed"`
-	Hoist       bool   `json:"hoist"`
-	Color       int    `json:"color"`
-	Position    int    `json:"position"`
-	Permissions int    `json:"permissions"`
+	ID      string `json:"id"`
+	Name    string `json:"name"`
+	Managed bool   `json:"managed"`
+	Hoist   bool   `json:"hoist"`
+	// This is coming back as an int or string, for now do not parse.
+	Color       int `json:"-"`
+	Position    int `json:"position"`
+	Permissions int `json:"permissions"`
 }
 
 // A VoiceState stores the voice states of Guilds
@@ -274,7 +275,7 @@ type RateLimit struct {
 
 // A ReadState stores data on the read state of channels.
 type ReadState struct {
-	MentionCount  int
+	MentionCount  int    `json:"mention_count"`
 	LastMessageID string `json:"last_message_id"`
 	ID            string `json:"id"`
 }

+ 5 - 2
wsapi.go

@@ -284,8 +284,11 @@ func (s *Session) event(messageType int, message []byte) {
 		// Attempt to unmarshal our event.
 		// If there is an error we should handle the event itself.
 		if err = unmarshal(e.RawData, i); err != nil {
-			fmt.Println("Unable to unmarshal event data.")
-			i = e
+			fmt.Println("Unable to unmarshal event data.", err)
+			// Ready events must fire, even if they are empty.
+			if e.Type != "READY" {
+				i = e
+			}
 		}
 	} else {
 		fmt.Println("Unknown event.")