feat: refactor client into reusable ts3client library
This commit is contained in:
114
pkg/ts3client/events.go
Normal file
114
pkg/ts3client/events.go
Normal file
@@ -0,0 +1,114 @@
|
||||
package ts3client
|
||||
|
||||
// EventType represents the type of event
|
||||
type EventType string
|
||||
|
||||
const (
|
||||
// Connection events
|
||||
EventConnected EventType = "connected"
|
||||
EventDisconnected EventType = "disconnected"
|
||||
|
||||
// Message events
|
||||
EventMessage EventType = "message"
|
||||
|
||||
// Client events
|
||||
EventClientEnter EventType = "client_enter"
|
||||
EventClientLeft EventType = "client_left"
|
||||
EventClientMoved EventType = "client_moved"
|
||||
|
||||
// Channel events
|
||||
EventChannelList EventType = "channel_list"
|
||||
|
||||
// Audio events
|
||||
EventAudio EventType = "audio"
|
||||
|
||||
// Error events
|
||||
EventError EventType = "error"
|
||||
)
|
||||
|
||||
// ConnectedEvent is emitted when the client successfully connects
|
||||
type ConnectedEvent struct {
|
||||
ClientID uint16
|
||||
ServerName string
|
||||
}
|
||||
|
||||
// DisconnectedEvent is emitted when the client disconnects
|
||||
type DisconnectedEvent struct {
|
||||
Reason string
|
||||
}
|
||||
|
||||
// MessageEvent is emitted when a text message is received
|
||||
type MessageEvent struct {
|
||||
SenderID uint16
|
||||
SenderName string
|
||||
Message string
|
||||
TargetMode MessageTarget // Private, Channel, or Server
|
||||
}
|
||||
|
||||
// MessageTarget represents the target type of a message
|
||||
type MessageTarget int
|
||||
|
||||
const (
|
||||
MessageTargetPrivate MessageTarget = 1
|
||||
MessageTargetChannel MessageTarget = 2
|
||||
MessageTargetServer MessageTarget = 3
|
||||
)
|
||||
|
||||
func (m MessageTarget) String() string {
|
||||
switch m {
|
||||
case MessageTargetPrivate:
|
||||
return "Private"
|
||||
case MessageTargetChannel:
|
||||
return "Channel"
|
||||
case MessageTargetServer:
|
||||
return "Server"
|
||||
default:
|
||||
return "Unknown"
|
||||
}
|
||||
}
|
||||
|
||||
// ClientEnterEvent is emitted when a client enters the server
|
||||
type ClientEnterEvent struct {
|
||||
ClientID uint16
|
||||
Nickname string
|
||||
ChannelID uint64
|
||||
}
|
||||
|
||||
// ClientLeftEvent is emitted when a client leaves the server
|
||||
type ClientLeftEvent struct {
|
||||
ClientID uint16
|
||||
Reason string
|
||||
}
|
||||
|
||||
// ClientMovedEvent is emitted when a client moves to a different channel
|
||||
type ClientMovedEvent struct {
|
||||
ClientID uint16
|
||||
ChannelID uint64
|
||||
}
|
||||
|
||||
// ChannelListEvent is emitted when the channel list is received
|
||||
type ChannelListEvent struct {
|
||||
Channels []*Channel
|
||||
}
|
||||
|
||||
// AudioEvent is emitted when voice data is received
|
||||
type AudioEvent struct {
|
||||
SenderID uint16
|
||||
Codec AudioCodec
|
||||
PCM []int16 // Decoded PCM data (48kHz, mono or stereo)
|
||||
Channels int // 1 for mono, 2 for stereo
|
||||
}
|
||||
|
||||
// AudioCodec represents the audio codec type
|
||||
type AudioCodec int
|
||||
|
||||
const (
|
||||
CodecOpusVoice AudioCodec = 4
|
||||
CodecOpusMusic AudioCodec = 5
|
||||
)
|
||||
|
||||
// ErrorEvent is emitted when the server reports an error
|
||||
type ErrorEvent struct {
|
||||
ID string
|
||||
Message string
|
||||
}
|
||||
Reference in New Issue
Block a user