Browse Source

Fixes to GuildRole events

Bruce Marriner 9 years ago
parent
commit
a3903aaa50
2 changed files with 34 additions and 12 deletions
  1. 3 3
      session.go
  2. 31 9
      wsapi.go

+ 3 - 3
session.go

@@ -42,9 +42,9 @@ type Session struct {
 	OnGuildMemberRemove       func(*Session, Member)
 	OnGuildMemberDelete       func(*Session, Member) // which is it?
 	OnGuildMemberUpdate       func(*Session, Member)
-	OnGuildRoleCreate         func(*Session, Role)
-	OnGuildRoleUpdate         func(*Session, GuildRoleUpdate)
-	OnGuildRoleDelete         func(*Session, Role)
+	OnGuildRoleCreate         func(*Session, GuildRole)
+	OnGuildRoleUpdate         func(*Session, GuildRole)
+	OnGuildRoleDelete         func(*Session, GuildRoleDelete)
 	OnGuildIntegrationsUpdate func(*Session, GuildIntegrationsUpdate)
 
 	// OnMessageCreate func(Session, Event, Message)

+ 31 - 9
wsapi.go

@@ -76,9 +76,14 @@ type GuildIntegrationsUpdate struct {
 	GuildId string `json:"guild_id"`
 }
 
-type GuildRoleUpdate struct {
-	Role    Role `json:"role"`
-	GuildId int  `json:"guild_id,int"`
+type GuildRole struct {
+	Role    Role   `json:"role"`
+	GuildId string `json:"guild_id"`
+}
+
+type GuildRoleDelete struct {
+	RoleId  string `json:"role_id"`
+	GuildId string `json:"guild_id"`
 }
 
 // Open a websocket connection to Discord
@@ -359,8 +364,19 @@ func (s *Session) event(messageType int, message []byte) (err error) {
 			return
 		}
 	case "GUILD_ROLE_CREATE":
+		if s.OnGuildRoleCreate != nil {
+			var st GuildRole
+			if err := json.Unmarshal(e.RawData, &st); err != nil {
+				fmt.Println(e.Type, err)
+				printJSON(e.RawData) // TODO: Better error logginEventg
+				return err
+			}
+			s.OnGuildRoleCreate(s, st)
+			return
+		}
+	case "GUILD_ROLE_UPDATE":
 		if s.OnGuildRoleUpdate != nil {
-			var st GuildRoleUpdate
+			var st GuildRole
 			if err := json.Unmarshal(e.RawData, &st); err != nil {
 				fmt.Println(e.Type, err)
 				printJSON(e.RawData) // TODO: Better error logginEventg
@@ -369,11 +385,17 @@ func (s *Session) event(messageType int, message []byte) (err error) {
 			s.OnGuildRoleUpdate(s, st)
 			return
 		}
-		/*
-			case "GUILD_ROLE_DELETE":
-				if s.OnGuildRoleDelete != nil {
-				}
-		*/
+	case "GUILD_ROLE_DELETE":
+		if s.OnGuildRoleDelete != nil {
+			var st GuildRoleDelete
+			if err := json.Unmarshal(e.RawData, &st); err != nil {
+				fmt.Println(e.Type, err)
+				printJSON(e.RawData) // TODO: Better error logginEventg
+				return err
+			}
+			s.OnGuildRoleDelete(s, st)
+			return
+		}
 	case "GUILD_INTEGRATIONS_UPDATE":
 		if s.OnGuildIntegrationsUpdate != nil {
 			var st GuildIntegrationsUpdate