added simple cache system.

This commit is contained in:
5elenay 2021-08-24 14:36:54 +03:00
parent 4c4cc5c0a5
commit 686fd10ebb
3 changed files with 44 additions and 5 deletions

View File

@ -20,7 +20,7 @@ type Channel struct {
Nonce string `json:"nonce"`
Active bool `json:"active"`
Recipients []string `json:"recipients"`
LastMessage string `json:"last_message"`
LastMessage interface{} `json:"last_message"`
Name string `json:"name"`
OwnerId string `json:"owner"`
Description string `json:"description"`

View File

@ -19,6 +19,7 @@ type Client struct {
Token string
Socket gowebsocket.Socket
HTTP *http.Client
Cache *Cache
// Event Functions
OnReadyFunctions []func()
@ -30,6 +31,14 @@ type Client struct {
OnChannelDeleteFunctions []func(channel_id string)
}
// Client cache struct.
type Cache struct {
Users []*User `json:"users"`
Servers []*Server `json:"servers"`
Channels []*Channel `json:"channels"`
Members []*Member `json:"members"`
}
// Self bot struct.
type SelfBot struct {
Email string `json:"-"`

View File

@ -42,7 +42,7 @@ func (c *Client) Start() {
// Handle events
c.handleEvents(rawData, message)
fmt.Println(message)
// fmt.Println(message)
}
// Start connection
@ -75,11 +75,16 @@ func (c *Client) ping() {
func (c *Client) handleEvents(rawData *struct {
Type string `json:"type"`
}, message string) {
if rawData.Type == "Ready" && c.OnReadyFunctions != nil {
if rawData.Type == "Ready" {
// Add cache
c.handleCache(message)
// Ready Event
if c.OnReadyFunctions != nil {
for _, i := range c.OnReadyFunctions {
i()
}
}
} else if rawData.Type == "Message" && c.OnMessageFunctions != nil {
// Message Event
msgData := &Message{}
@ -176,3 +181,28 @@ func (c *Client) handleEvents(rawData *struct {
}
}
}
func (c *Client) handleCache(data string) {
cache := &Cache{}
err := json.Unmarshal([]byte(data), cache)
if err != nil {
fmt.Printf("Unexcepted Error: %s", err)
}
// Add client to users.
for _, i := range cache.Users {
i.Client = c
}
for _, i := range cache.Servers {
i.Client = c
}
for _, i := range cache.Channels {
i.Client = c
}
c.Cache = cache
}