2026-01-15 22:06:35 +01:00
|
|
|
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
|
2026-01-16 19:50:44 +01:00
|
|
|
EventAudio EventType = "audio"
|
|
|
|
|
EventTalkingStatus EventType = "talking_status"
|
2026-01-15 22:06:35 +01:00
|
|
|
|
|
|
|
|
// 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
|
|
|
|
|
}
|
2026-01-16 19:50:44 +01:00
|
|
|
|
|
|
|
|
// TalkingStatusEvent is emitted when a client starts or stops talking
|
|
|
|
|
type TalkingStatusEvent struct {
|
|
|
|
|
ClientID uint16
|
|
|
|
|
Talking bool
|
|
|
|
|
}
|