added channel events.

This commit is contained in:
5elenay 2021-08-22 18:52:09 +03:00
parent dc40b8285c
commit c157bb6028
3 changed files with 73 additions and 8 deletions

View File

@ -23,6 +23,9 @@ type Client struct {
OnMessageFunctions []func(message *Message)
OnMessageUpdateFunctions []func(channel_id, message_id string, payload map[string]interface{})
OnMessageDeleteFunctions []func(channel_id, message_id string)
OnChannelCreateFunctions []func(channel *Channel)
OnChannelUpdateFunctions []func(channel_id, clear string, payload map[string]interface{})
OnChannelDeleteFunctions []func(channel_id string)
}
// On ready event will run when websocket connection is started and bot is ready to work.
@ -45,6 +48,21 @@ func (c *Client) OnMessageDelete(fn func(channel_id, message_id string)) {
c.OnMessageDeleteFunctions = append(c.OnMessageDeleteFunctions, fn)
}
// On channel create event will run when someone creates a channel.
func (c *Client) OnChannelCreate(fn func(channel *Channel)) {
c.OnChannelCreateFunctions = append(c.OnChannelCreateFunctions, fn)
}
// On channel update event will run when someone updates a channel.
func (c *Client) OnChannelUpdate(fn func(channel_id, clear string, payload map[string]interface{})) {
c.OnChannelUpdateFunctions = append(c.OnChannelUpdateFunctions, fn)
}
// On channel delete event will run when someone deletes a channel.
func (c *Client) OnChannelDelete(fn func(channel_id string)) {
c.OnChannelDeleteFunctions = append(c.OnChannelDeleteFunctions, fn)
}
// Fetch a channel by Id.
func (c *Client) FetchChannel(id string) (*Channel, error) {
channel := &Channel{}

View File

@ -2,13 +2,13 @@ package revoltgo
// Similar to message, but created for send message function.
type SendMessage struct {
Content string `json:"content"`
Attachments []string `json:"attachments"`
Nonce string `json:"nonce"`
Content string `json:"content,omitempty"`
Attachments []string `json:"attachments,omitempty"`
Nonce string `json:"nonce,omitempty"`
Replies []struct {
Id string `json:"id"`
Mention bool `json:"mention"`
}
Id string `json:"id,omitempty"`
Mention bool `json:"mention,omitempty"`
} `json:"replies,omitempty"`
}
// Set content.
@ -26,8 +26,8 @@ func (sms *SendMessage) AddAttachment(attachment string) *SendMessage {
// Add a new reply.
func (sms *SendMessage) AddReply(id string, mention bool) *SendMessage {
sms.Replies = append(sms.Replies, struct {
Id string "json:\"id\""
Mention bool "json:\"mention\""
Id string "json:\"id,omitempty\""
Mention bool "json:\"mention,omitempty\""
}{
Id: id,
Mention: mention,

View File

@ -88,6 +88,53 @@ func (c *Client) Start() {
for _, i := range c.OnMessageDeleteFunctions {
i(data.ChannelId, data.MessageId)
}
} else if rawData.Type == "ChannelCreate" && c.OnChannelCreateFunctions != nil {
// Channel create event.
channelData := &Channel{}
err := json.Unmarshal([]byte(message), channelData)
if err != nil {
fmt.Printf("Unexcepted Error: %s", err)
}
channelData.Client = c
for _, i := range c.OnChannelCreateFunctions {
i(channelData)
}
} else if rawData.Type == "ChannelUpdate" && c.OnChannelUpdateFunctions != nil {
// Channel update event.
data := &struct {
ChannelId 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.OnChannelUpdateFunctions {
i(data.ChannelId, data.Clear, data.Payload)
}
} else if rawData.Type == "ChannelDelete" && c.OnChannelDeleteFunctions != nil {
// Channel delete event.
data := &struct {
ChannelId string `json:"id"`
}{}
err := json.Unmarshal([]byte(message), data)
if err != nil {
fmt.Printf("Unexcepted Error: %s", err)
}
for _, i := range c.OnChannelDeleteFunctions {
i(data.ChannelId)
}
}
fmt.Println(message)