diff --git a/structs.go b/structs.go index 296d28a..796f5a4 100644 --- a/structs.go +++ b/structs.go @@ -253,6 +253,8 @@ type Presence struct { // A Game struct holds the name of the "playing .." game for a user type Game struct { Name string `json:"name"` + Type int `json:"type"` + URL string `json:"url"` } // A Member stores user information for Guild members. diff --git a/wsapi.go b/wsapi.go index c51a445..d0717a6 100644 --- a/wsapi.go +++ b/wsapi.go @@ -306,13 +306,9 @@ func (s *Session) heartbeat(wsConn *websocket.Conn, listening <-chan interface{} } } -type updateStatusGame struct { - Name string `json:"name"` -} - type updateStatusData struct { - IdleSince *int `json:"idle_since"` - Game *updateStatusGame `json:"game"` + IdleSince *int `json:"idle_since"` + Game *Game `json:"game"` } type updateStatusOp struct { @@ -320,10 +316,12 @@ type updateStatusOp struct { Data updateStatusData `json:"d"` } -// UpdateStatus is used to update the authenticated user's status. -// If idle>0 then set status to idle. If game>0 then set game. +// UpdateStatus is used to update the user's status. +// If idle>0 then set status to idle. +// If game!="" then set game. +// If game!="" and url!="" then set the status type to streaming with the URL set. // if otherwise, set status to active, and no game. -func (s *Session) UpdateStatus(idle int, game string) (err error) { +func (s *Session) UpdateStatus(idle int, game string, url string) (err error) { s.log(LogInformational, "called") @@ -339,7 +337,15 @@ func (s *Session) UpdateStatus(idle int, game string) (err error) { } if game != "" { - usd.Game = &updateStatusGame{game} + gameType := 0 + if url != "" { + gameType = 1 + } + usd.Game = &Game{ + Name: game, + Type: gameType, + URL: url, + } } s.wsMutex.Lock()