Support for userListen op
This commit is contained in:
78
model.go
78
model.go
@ -1,5 +1,11 @@
|
||||
package gavalink
|
||||
|
||||
import (
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
)
|
||||
|
||||
const (
|
||||
// TrackLoaded is a Tracks Type for a succesful single track load
|
||||
TrackLoaded = "TRACK_LOADED"
|
||||
@ -54,6 +60,10 @@ type TrackInfo struct {
|
||||
|
||||
const (
|
||||
opVoiceUpdate = "voiceUpdate"
|
||||
opVoiceProcessed = "voiceProcessed"
|
||||
opUserJoin = "userJoin"
|
||||
opUserLeave = "userLeave"
|
||||
opUserListen = "userListen"
|
||||
opPlay = "play"
|
||||
opStop = "stop"
|
||||
opPause = "pause"
|
||||
@ -63,6 +73,7 @@ const (
|
||||
opPlayerUpdate = "playerUpdate"
|
||||
opEvent = "event"
|
||||
opStats = "stats"
|
||||
eventTrackStart = "TrackStartEvent"
|
||||
eventTrackEnd = "TrackEndEvent"
|
||||
eventTrackException = "TrackExceptionEvent"
|
||||
eventTrackStuck = "TrackStuckEvent"
|
||||
@ -74,3 +85,70 @@ type VoiceServerUpdate struct {
|
||||
Endpoint string `json:"endpoint"`
|
||||
Token string `json:"token"`
|
||||
}
|
||||
|
||||
// VoiceProcessingData is an event containing methods to easily download captured voice data
|
||||
type VoiceProcessingData struct {
|
||||
io.ReadCloser
|
||||
|
||||
Client *http.Client
|
||||
URL string
|
||||
File string
|
||||
|
||||
res *http.Response
|
||||
}
|
||||
|
||||
func (v *VoiceProcessingData) open() error {
|
||||
res, err := v.Client.Get(v.URL)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
v.res = res
|
||||
}
|
||||
|
||||
func (v *VoiceProcessingData) Close() error {
|
||||
if v.res != nil {
|
||||
return v.res.Body.Close()
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (v *VoiceProcessingData) Read(buf []byte) (n int, err error) {
|
||||
if v.res == nil {
|
||||
err = v.open()
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
n, err = v.res.Body.Read(buf)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (v *VoiceProcessingData) SaveTo(file string) error {
|
||||
f, err := os.Create(file)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer f.Close()
|
||||
|
||||
if v.res == nil {
|
||||
err = v.open()
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
defer v.res.Body.Close()
|
||||
|
||||
_, err = io.Copy(f, v.res.Body)
|
||||
|
||||
return err
|
||||
}
|
||||
|
Reference in New Issue
Block a user