Merge branch 'develop' into 1

This commit is contained in:
LEGOlord208 2017-08-29 07:53:58 +02:00
commit 2f51bf4d58
No known key found for this signature in database
GPG key ID: 3A818BC1F5617A24
6 changed files with 19 additions and 17 deletions

View file

@ -224,7 +224,7 @@ func (s *Session) onInterface(i interface{}) {
case *VoiceStateUpdate:
go s.onVoiceStateUpdate(t)
}
err := s.State.onInterface(s, i)
err := s.State.OnInterface(s, i)
if err != nil {
s.log(LogDebug, "error dispatching internal event, %s", err)
}

View file

@ -1867,14 +1867,9 @@ func (s *Session) WebhookEditWithToken(webhookID, token, name, avatar string) (s
// WebhookDelete deletes a webhook for a given ID
// webhookID: The ID of a webhook.
func (s *Session) WebhookDelete(webhookID string) (st *Webhook, err error) {
func (s *Session) WebhookDelete(webhookID string) (err error) {
body, err := s.RequestWithBucketID("DELETE", EndpointWebhook(webhookID), nil, EndpointWebhooks)
if err != nil {
return
}
err = unmarshal(body, &st)
_, err = s.RequestWithBucketID("DELETE", EndpointWebhook(webhookID), nil, EndpointWebhooks)
return
}

View file

@ -783,7 +783,7 @@ func (s *State) onReady(se *Session, r *Ready) (err error) {
}
// onInterface handles all events related to states.
func (s *State) onInterface(se *Session, i interface{}) (err error) {
func (s *State) OnInterface(se *Session, i interface{}) (err error) {
if s == nil {
return ErrNilState
}

View file

@ -316,7 +316,7 @@ type Presence struct {
type Game struct {
Name string `json:"name"`
Type int `json:"type"`
URL string `json:"url"`
URL string `json:"url,omitempty"`
}
// UnmarshalJSON unmarshals json to Game struct

View file

@ -15,7 +15,6 @@ import (
"fmt"
"log"
"net"
"runtime"
"strconv"
"strings"
"sync"
@ -660,8 +659,6 @@ func (v *VoiceConnection) opusSender(udpConn *net.UDPConn, close <-chan struct{}
return
}
runtime.LockOSThread()
// VoiceConnection is now ready to receive audio packets
// TODO: this needs reviewed as I think there must be a better way.
v.Lock()
@ -800,7 +797,7 @@ func (v *VoiceConnection) opusReceiver(udpConn *net.UDPConn, close <-chan struct
}
// For now, skip anything except audio.
if rlen < 12 || recvbuf[0] != 0x80 {
if rlen < 12 || (recvbuf[0] != 0x80 && recvbuf[0] != 0x90) {
continue
}
@ -814,6 +811,11 @@ func (v *VoiceConnection) opusReceiver(udpConn *net.UDPConn, close <-chan struct
copy(nonce[:], recvbuf[0:12])
p.Opus, _ = secretbox.Open(nil, recvbuf[12:rlen], &nonce, &v.op4.SecretKey)
if len(p.Opus) > 8 && recvbuf[0] == 0x90 {
// Extension bit is set, first 8 bytes is the extended header
p.Opus = p.Opus[8:]
}
if c != nil {
select {
case c <- &p:

View file

@ -250,8 +250,10 @@ func (s *Session) heartbeat(wsConn *websocket.Conn, listening <-chan interface{}
}
type updateStatusData struct {
IdleSince *int `json:"idle_since"`
Game *Game `json:"game"`
IdleSince *int `json:"since"`
Game *Game `json:"game"`
AFK bool `json:"afk"`
Status string `json:"status"`
}
type updateStatusOp struct {
@ -274,7 +276,10 @@ func (s *Session) UpdateStreamingStatus(idle int, game string, url string) (err
return ErrWSNotFound
}
var usd updateStatusData
usd := updateStatusData{
Status: "online",
}
if idle > 0 {
usd.IdleSince = &idle
}