diff --git a/client.go b/client.go index 2bade28..cbedbf5 100644 --- a/client.go +++ b/client.go @@ -14,11 +14,17 @@ type Client struct { Token string Socket gowebsocket.Socket - // Functions - OnReadyFunction func() + // Event Functions + OnReadyFunction func() + OnMessageFunction func(message *Message) } -// On Ready event will run when websocket connection is started and bot is ready to work. +// On ready event will run when websocket connection is started and bot is ready to work. func (c *Client) OnReady(fn func()) { c.OnReadyFunction = fn } + +// On message event will run when someone sends a message. +func (c *Client) OnMessage(fn func(message *Message)) { + c.OnMessageFunction = fn +} diff --git a/websocket.go b/websocket.go index 51bec7f..5ad8493 100644 --- a/websocket.go +++ b/websocket.go @@ -37,8 +37,18 @@ func (c *Client) Start() { } // Check events - if rawData.Type == "Ready" { + if rawData.Type == "Ready" && c.OnReadyFunction != nil { c.OnReadyFunction() + } else if rawData.Type == "Message" && c.OnMessageFunction != nil { + msgData := &Message{} + err := json.Unmarshal([]byte(message), msgData) + + if err != nil { + fmt.Printf("Unexcepted Error: %s", err) + } + + msgData.Client = c + c.OnMessageFunction(msgData) } fmt.Println(message)