Explorar el Código

Merge pull request #131 from iopred/docs

Allow Ready events to fire even after a unmarshalling error.
Bruce hace 9 años
padre
commit
ec5dd888c1
Se han modificado 2 ficheros con 12 adiciones y 19 borrados
  1. 7 17
      structs.go
  2. 5 2
      wsapi.go

+ 7 - 17
structs.go

@@ -215,24 +215,14 @@ type Member struct {
 
 // A User stores all data for an individual Discord user.
 type User struct {
-	ID       string `json:"id"`
-	Email    string `json:"email"`
-	Username string `json:"username"`
-	Avatar   string `json:"Avatar"`
-	Verified bool   `json:"verified"`
-	//Discriminator int    `json:"discriminator,string"` // TODO: See below
+	ID            string `json:"id"`
+	Email         string `json:"email"`
+	Username      string `json:"username"`
+	Avatar        string `json:"Avatar"`
+	Verified      bool   `json:"verified"`
+	Discriminator string `json:"discriminator"`
 }
 
-// TODO: Research issue.
-// Discriminator sometimes comes as a string
-// and sometimes it comes as a int.  Weird.
-// to avoid errors I've just commented it out
-// but it doesn't seem to just kill the whole
-// program.  Heartbeat is taken on READY even
-// with error and the system continues to read
-// it just doesn't seem able to handle this one
-// field correctly.  Need to research this more.
-
 // A Settings stores data for a specific users Discord client settings.
 type Settings struct {
 	RenderEmbeds          bool     `json:"render_embeds"`
@@ -274,7 +264,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.")