added member events.
This commit is contained in:
parent
4f276bab6a
commit
ecb0220080
18
client.go
18
client.go
@ -34,6 +34,9 @@ type Client struct {
|
|||||||
OnChannelStopTypingFunctions []func(channel_id, user_id string)
|
OnChannelStopTypingFunctions []func(channel_id, user_id string)
|
||||||
OnServerUpdateFunctions []func(server_id, clear string, payload map[string]interface{})
|
OnServerUpdateFunctions []func(server_id, clear string, payload map[string]interface{})
|
||||||
OnServerDeleteFunctions []func(server_id string)
|
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.
|
// Self bot struct.
|
||||||
@ -105,6 +108,21 @@ func (c *Client) OnServerDelete(fn func(server_id string)) {
|
|||||||
c.OnServerDeleteFunctions = append(c.OnServerDeleteFunctions, fn)
|
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.
|
// Fetch a channel by Id.
|
||||||
func (c *Client) FetchChannel(id string) (*Channel, error) {
|
func (c *Client) FetchChannel(id string) (*Channel, error) {
|
||||||
channel := &Channel{}
|
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 {
|
} else if rawData.Type == "Message" && c.OnMessageFunctions != nil {
|
||||||
// Message Event
|
// Message Event
|
||||||
msgData := &Message{}
|
msgData := &Message{}
|
||||||
|
msgData.Client = c
|
||||||
|
|
||||||
err := json.Unmarshal([]byte(message), msgData)
|
err := json.Unmarshal([]byte(message), msgData)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Unexcepted Error: %s", err)
|
fmt.Printf("Unexcepted Error: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
msgData.Client = c
|
|
||||||
|
|
||||||
for _, i := range c.OnMessageFunctions {
|
for _, i := range c.OnMessageFunctions {
|
||||||
i(msgData)
|
i(msgData)
|
||||||
}
|
}
|
||||||
@ -118,10 +118,7 @@ func (c *Client) handleEvents(rawData *struct {
|
|||||||
}
|
}
|
||||||
} else if rawData.Type == "MessageDelete" && c.OnMessageDeleteFunctions != nil {
|
} else if rawData.Type == "MessageDelete" && c.OnMessageDeleteFunctions != nil {
|
||||||
// Message Delete Event
|
// Message Delete Event
|
||||||
data := &struct {
|
data := &map[string]string{}
|
||||||
ChannelId string `json:"channel"`
|
|
||||||
MessageId string `json:"id"`
|
|
||||||
}{}
|
|
||||||
|
|
||||||
err := json.Unmarshal([]byte(message), data)
|
err := json.Unmarshal([]byte(message), data)
|
||||||
|
|
||||||
@ -130,11 +127,12 @@ func (c *Client) handleEvents(rawData *struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, i := range c.OnMessageDeleteFunctions {
|
for _, i := range c.OnMessageDeleteFunctions {
|
||||||
i(data.ChannelId, data.MessageId)
|
i((*data)["channel"], (*data)["id"])
|
||||||
}
|
}
|
||||||
} else if rawData.Type == "ChannelCreate" && c.OnChannelCreateFunctions != nil {
|
} else if rawData.Type == "ChannelCreate" && c.OnChannelCreateFunctions != nil {
|
||||||
// Channel create event.
|
// Channel create event.
|
||||||
channelData := &Channel{}
|
channelData := &Channel{}
|
||||||
|
channelData.Client = c
|
||||||
|
|
||||||
err := json.Unmarshal([]byte(message), channelData)
|
err := json.Unmarshal([]byte(message), channelData)
|
||||||
|
|
||||||
@ -142,8 +140,6 @@ func (c *Client) handleEvents(rawData *struct {
|
|||||||
fmt.Printf("Unexcepted Error: %s", err)
|
fmt.Printf("Unexcepted Error: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
channelData.Client = c
|
|
||||||
|
|
||||||
for _, i := range c.OnChannelCreateFunctions {
|
for _, i := range c.OnChannelCreateFunctions {
|
||||||
i(channelData)
|
i(channelData)
|
||||||
}
|
}
|
||||||
@ -166,9 +162,7 @@ func (c *Client) handleEvents(rawData *struct {
|
|||||||
}
|
}
|
||||||
} else if rawData.Type == "ChannelDelete" && c.OnChannelDeleteFunctions != nil {
|
} else if rawData.Type == "ChannelDelete" && c.OnChannelDeleteFunctions != nil {
|
||||||
// Channel delete event.
|
// Channel delete event.
|
||||||
data := &struct {
|
data := &map[string]string{}
|
||||||
ChannelId string `json:"id"`
|
|
||||||
}{}
|
|
||||||
|
|
||||||
err := json.Unmarshal([]byte(message), data)
|
err := json.Unmarshal([]byte(message), data)
|
||||||
|
|
||||||
@ -177,14 +171,11 @@ func (c *Client) handleEvents(rawData *struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, i := range c.OnChannelDeleteFunctions {
|
for _, i := range c.OnChannelDeleteFunctions {
|
||||||
i(data.ChannelId)
|
i((*data)["id"])
|
||||||
}
|
}
|
||||||
} else if rawData.Type == "ChannelStartTyping" && c.OnChannelStartTypingFunctions != nil {
|
} else if rawData.Type == "ChannelStartTyping" && c.OnChannelStartTypingFunctions != nil {
|
||||||
// Channel start typing event.
|
// Channel start typing event.
|
||||||
data := &struct {
|
data := &map[string]string{}
|
||||||
ChannelId string `json:"id"`
|
|
||||||
UserId string `json:"user"`
|
|
||||||
}{}
|
|
||||||
|
|
||||||
err := json.Unmarshal([]byte(message), data)
|
err := json.Unmarshal([]byte(message), data)
|
||||||
|
|
||||||
@ -193,14 +184,11 @@ func (c *Client) handleEvents(rawData *struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, i := range c.OnChannelStartTypingFunctions {
|
for _, i := range c.OnChannelStartTypingFunctions {
|
||||||
i(data.ChannelId, data.UserId)
|
i((*data)["id"], (*data)["user"])
|
||||||
}
|
}
|
||||||
} else if rawData.Type == "ChannelStopTyping" && c.OnChannelStopTypingFunctions != nil {
|
} else if rawData.Type == "ChannelStopTyping" && c.OnChannelStopTypingFunctions != nil {
|
||||||
// Channel stop typing event.
|
// Channel stop typing event.
|
||||||
data := &struct {
|
data := &map[string]string{}
|
||||||
ChannelId string `json:"id"`
|
|
||||||
UserId string `json:"user"`
|
|
||||||
}{}
|
|
||||||
|
|
||||||
err := json.Unmarshal([]byte(message), data)
|
err := json.Unmarshal([]byte(message), data)
|
||||||
|
|
||||||
@ -209,7 +197,7 @@ func (c *Client) handleEvents(rawData *struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, i := range c.OnChannelStopTypingFunctions {
|
for _, i := range c.OnChannelStopTypingFunctions {
|
||||||
i(data.ChannelId, data.UserId)
|
i((*data)["id"], (*data)["user"])
|
||||||
}
|
}
|
||||||
} else if rawData.Type == "ServerUpdate" && c.OnServerUpdateFunctions != nil {
|
} else if rawData.Type == "ServerUpdate" && c.OnServerUpdateFunctions != nil {
|
||||||
// Server update event.
|
// Server update event.
|
||||||
@ -230,9 +218,7 @@ func (c *Client) handleEvents(rawData *struct {
|
|||||||
}
|
}
|
||||||
} else if rawData.Type == "ServerDelete" && c.OnServerDeleteFunctions != nil {
|
} else if rawData.Type == "ServerDelete" && c.OnServerDeleteFunctions != nil {
|
||||||
// Server delete event.
|
// Server delete event.
|
||||||
data := &struct {
|
data := &map[string]string{}
|
||||||
ServerId string `json:"id"`
|
|
||||||
}{}
|
|
||||||
|
|
||||||
err := json.Unmarshal([]byte(message), data)
|
err := json.Unmarshal([]byte(message), data)
|
||||||
|
|
||||||
@ -241,7 +227,50 @@ func (c *Client) handleEvents(rawData *struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, i := range c.OnServerDeleteFunctions {
|
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 {
|
} else {
|
||||||
// Unknown event.
|
// Unknown event.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user