added member events.
This commit is contained in:
		
							
								
								
									
										18
									
								
								client.go
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								client.go
									
									
									
									
									
								
							| @@ -34,6 +34,9 @@ type Client struct { | ||||
| 	OnChannelStopTypingFunctions  []func(channel_id, user_id string) | ||||
| 	OnServerUpdateFunctions       []func(server_id, clear string, payload map[string]interface{}) | ||||
| 	OnServerDeleteFunctions       []func(server_id string) | ||||
| 	OnServerMemberUpdateFunctions []func(server_id, clear string, payload map[string]interface{}) | ||||
| 	OnServerMemberJoinFunctions   []func(server_id, user_id string) | ||||
| 	OnServerMemberLeaveFunctions  []func(server_id, user_id string) | ||||
| } | ||||
|  | ||||
| // Self bot struct. | ||||
| @@ -105,6 +108,21 @@ func (c *Client) OnServerDelete(fn func(server_id string)) { | ||||
| 	c.OnServerDeleteFunctions = append(c.OnServerDeleteFunctions, fn) | ||||
| } | ||||
|  | ||||
| // On server member update will run when a server member updates. | ||||
| func (c *Client) OnServerMemberUpdate(fn func(server_id, clear string, payload map[string]interface{})) { | ||||
| 	c.OnServerMemberUpdateFunctions = append(c.OnServerMemberUpdateFunctions, fn) | ||||
| } | ||||
|  | ||||
| // On server member join will run when someone joins to the server. | ||||
| func (c *Client) OnServerMemberJoin(fn func(server_id string, user_id string)) { | ||||
| 	c.OnServerMemberJoinFunctions = append(c.OnServerMemberJoinFunctions, fn) | ||||
| } | ||||
|  | ||||
| // On server member leave will run when someone left from server. | ||||
| func (c *Client) OnServerMemberLeave(fn func(server_id string, user_id string)) { | ||||
| 	c.OnServerMemberLeaveFunctions = append(c.OnServerMemberLeaveFunctions, fn) | ||||
| } | ||||
|  | ||||
| // Fetch a channel by Id. | ||||
| func (c *Client) FetchChannel(id string) (*Channel, error) { | ||||
| 	channel := &Channel{} | ||||
|   | ||||
							
								
								
									
										83
									
								
								websocket.go
									
									
									
									
									
								
							
							
						
						
									
										83
									
								
								websocket.go
									
									
									
									
									
								
							| @@ -88,14 +88,14 @@ func (c *Client) handleEvents(rawData *struct { | ||||
| 	} else if rawData.Type == "Message" && c.OnMessageFunctions != nil { | ||||
| 		// Message Event | ||||
| 		msgData := &Message{} | ||||
| 		msgData.Client = c | ||||
|  | ||||
| 		err := json.Unmarshal([]byte(message), msgData) | ||||
|  | ||||
| 		if err != nil { | ||||
| 			fmt.Printf("Unexcepted Error: %s", err) | ||||
| 		} | ||||
|  | ||||
| 		msgData.Client = c | ||||
|  | ||||
| 		for _, i := range c.OnMessageFunctions { | ||||
| 			i(msgData) | ||||
| 		} | ||||
| @@ -118,10 +118,7 @@ func (c *Client) handleEvents(rawData *struct { | ||||
| 		} | ||||
| 	} else if rawData.Type == "MessageDelete" && c.OnMessageDeleteFunctions != nil { | ||||
| 		// Message Delete Event | ||||
| 		data := &struct { | ||||
| 			ChannelId string `json:"channel"` | ||||
| 			MessageId string `json:"id"` | ||||
| 		}{} | ||||
| 		data := &map[string]string{} | ||||
|  | ||||
| 		err := json.Unmarshal([]byte(message), data) | ||||
|  | ||||
| @@ -130,11 +127,12 @@ func (c *Client) handleEvents(rawData *struct { | ||||
| 		} | ||||
|  | ||||
| 		for _, i := range c.OnMessageDeleteFunctions { | ||||
| 			i(data.ChannelId, data.MessageId) | ||||
| 			i((*data)["channel"], (*data)["id"]) | ||||
| 		} | ||||
| 	} else if rawData.Type == "ChannelCreate" && c.OnChannelCreateFunctions != nil { | ||||
| 		// Channel create event. | ||||
| 		channelData := &Channel{} | ||||
| 		channelData.Client = c | ||||
|  | ||||
| 		err := json.Unmarshal([]byte(message), channelData) | ||||
|  | ||||
| @@ -142,8 +140,6 @@ func (c *Client) handleEvents(rawData *struct { | ||||
| 			fmt.Printf("Unexcepted Error: %s", err) | ||||
| 		} | ||||
|  | ||||
| 		channelData.Client = c | ||||
|  | ||||
| 		for _, i := range c.OnChannelCreateFunctions { | ||||
| 			i(channelData) | ||||
| 		} | ||||
| @@ -166,9 +162,7 @@ func (c *Client) handleEvents(rawData *struct { | ||||
| 		} | ||||
| 	} else if rawData.Type == "ChannelDelete" && c.OnChannelDeleteFunctions != nil { | ||||
| 		// Channel delete event. | ||||
| 		data := &struct { | ||||
| 			ChannelId string `json:"id"` | ||||
| 		}{} | ||||
| 		data := &map[string]string{} | ||||
|  | ||||
| 		err := json.Unmarshal([]byte(message), data) | ||||
|  | ||||
| @@ -177,14 +171,11 @@ func (c *Client) handleEvents(rawData *struct { | ||||
| 		} | ||||
|  | ||||
| 		for _, i := range c.OnChannelDeleteFunctions { | ||||
| 			i(data.ChannelId) | ||||
| 			i((*data)["id"]) | ||||
| 		} | ||||
| 	} else if rawData.Type == "ChannelStartTyping" && c.OnChannelStartTypingFunctions != nil { | ||||
| 		// Channel start typing event. | ||||
| 		data := &struct { | ||||
| 			ChannelId string `json:"id"` | ||||
| 			UserId    string `json:"user"` | ||||
| 		}{} | ||||
| 		data := &map[string]string{} | ||||
|  | ||||
| 		err := json.Unmarshal([]byte(message), data) | ||||
|  | ||||
| @@ -193,14 +184,11 @@ func (c *Client) handleEvents(rawData *struct { | ||||
| 		} | ||||
|  | ||||
| 		for _, i := range c.OnChannelStartTypingFunctions { | ||||
| 			i(data.ChannelId, data.UserId) | ||||
| 			i((*data)["id"], (*data)["user"]) | ||||
| 		} | ||||
| 	} else if rawData.Type == "ChannelStopTyping" && c.OnChannelStopTypingFunctions != nil { | ||||
| 		// Channel stop typing event. | ||||
| 		data := &struct { | ||||
| 			ChannelId string `json:"id"` | ||||
| 			UserId    string `json:"user"` | ||||
| 		}{} | ||||
| 		data := &map[string]string{} | ||||
|  | ||||
| 		err := json.Unmarshal([]byte(message), data) | ||||
|  | ||||
| @@ -209,7 +197,7 @@ func (c *Client) handleEvents(rawData *struct { | ||||
| 		} | ||||
|  | ||||
| 		for _, i := range c.OnChannelStopTypingFunctions { | ||||
| 			i(data.ChannelId, data.UserId) | ||||
| 			i((*data)["id"], (*data)["user"]) | ||||
| 		} | ||||
| 	} else if rawData.Type == "ServerUpdate" && c.OnServerUpdateFunctions != nil { | ||||
| 		// Server update event. | ||||
| @@ -230,9 +218,7 @@ func (c *Client) handleEvents(rawData *struct { | ||||
| 		} | ||||
| 	} else if rawData.Type == "ServerDelete" && c.OnServerDeleteFunctions != nil { | ||||
| 		// Server delete event. | ||||
| 		data := &struct { | ||||
| 			ServerId string `json:"id"` | ||||
| 		}{} | ||||
| 		data := &map[string]string{} | ||||
|  | ||||
| 		err := json.Unmarshal([]byte(message), data) | ||||
|  | ||||
| @@ -241,7 +227,50 @@ func (c *Client) handleEvents(rawData *struct { | ||||
| 		} | ||||
|  | ||||
| 		for _, i := range c.OnServerDeleteFunctions { | ||||
| 			i(data.ServerId) | ||||
| 			i((*data)["id"]) | ||||
| 		} | ||||
| 	} else if rawData.Type == "ServerMemberUpdate" && c.OnServerMemberUpdateFunctions != nil { | ||||
| 		// Member update event. | ||||
| 		data := &struct { | ||||
| 			ServerId string                 `json:"id"` | ||||
| 			Clear    string                 `json:"clear"` | ||||
| 			Payload  map[string]interface{} `json:"data"` | ||||
| 		}{} | ||||
|  | ||||
| 		err := json.Unmarshal([]byte(message), data) | ||||
|  | ||||
| 		if err != nil { | ||||
| 			fmt.Printf("Unexcepted Error: %s", err) | ||||
| 		} | ||||
|  | ||||
| 		for _, i := range c.OnServerMemberUpdateFunctions { | ||||
| 			i(data.ServerId, data.Clear, data.Payload) | ||||
| 		} | ||||
| 	} else if rawData.Type == "ServerMemberJoin" && c.OnServerMemberJoinFunctions != nil { | ||||
| 		// Member join event. | ||||
| 		data := &map[string]string{} | ||||
|  | ||||
| 		err := json.Unmarshal([]byte(message), data) | ||||
|  | ||||
| 		if err != nil { | ||||
| 			fmt.Printf("Unexcepted Error: %s", err) | ||||
| 		} | ||||
|  | ||||
| 		for _, i := range c.OnServerMemberJoinFunctions { | ||||
| 			i((*data)["id"], (*data)["user"]) | ||||
| 		} | ||||
| 	} else if rawData.Type == "ServerMemberLeave" && c.OnServerMemberLeaveFunctions != nil { | ||||
| 		// Member left event. | ||||
| 		data := &map[string]string{} | ||||
|  | ||||
| 		err := json.Unmarshal([]byte(message), data) | ||||
|  | ||||
| 		if err != nil { | ||||
| 			fmt.Printf("Unexcepted Error: %s", err) | ||||
| 		} | ||||
|  | ||||
| 		for _, i := range c.OnServerMemberLeaveFunctions { | ||||
| 			i((*data)["id"], (*data)["user"]) | ||||
| 		} | ||||
| 	} else { | ||||
| 		// Unknown event. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user