83 lines
3.0 KiB
Go
83 lines
3.0 KiB
Go
package bmumble
|
|
|
|
import (
|
|
"github.com/42wim/matterbridge/bridge/config"
|
|
"layeh.com/gumble/gumble"
|
|
"layeh.com/gumble/gumbleutil"
|
|
)
|
|
|
|
|
|
func (b *Bmumble) handleServerConfig(event *gumble.ServerConfigEvent) {
|
|
|
|
}
|
|
|
|
|
|
func (b *Bmumble) handleTextMessage(event *gumble.TextMessageEvent) {
|
|
rmsg := config.Message{
|
|
Text: event.TextMessage.Message,
|
|
Channel: event.Client.Self.Channel.Name,
|
|
Username: event.TextMessage.Sender.Name,
|
|
UserID: event.TextMessage.Sender.Name + "@" + b.Host,
|
|
Account: b.Account,
|
|
}
|
|
b.Log.Debug("<= Remote message is %+v", rmsg)
|
|
b.Remote <- rmsg
|
|
}
|
|
|
|
|
|
func (b *Bmumble) handleConnect(event *gumble.ConnectEvent) {
|
|
// Set the user's "bio"/comment
|
|
if comment := b.GetString("UserComment"); comment != "" {
|
|
event.Client.Self.SetComment(comment)
|
|
}
|
|
// No need to talk or listen
|
|
event.Client.Self.SetSelfDeafened(true)
|
|
event.Client.Self.SetSelfMuted(true)
|
|
// if the Channel variable is set, this is a reconnect -> rejoin channel
|
|
if b.Channel != "" {
|
|
b.doJoin(event.Client, b.Channel)
|
|
b.Remote <- config.Message{
|
|
Username: "system",
|
|
Text: "rejoin",
|
|
Channel: "",
|
|
Account: b.Account,
|
|
Event: config.EventRejoinChannels,
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
func (b *Bmumble) handleUserChange(event *gumble.UserChangeEvent) {
|
|
// Only care about changes to self
|
|
if event.User != event.Client.Self {
|
|
return
|
|
}
|
|
// Someone attempted to move the user out of the configured channel; attempt to join back
|
|
if b.Channel != "" && b.Channel != event.Client.Self.Channel.Name {
|
|
b.doJoin(event.Client, b.Channel)
|
|
}
|
|
}
|
|
|
|
|
|
func (b *Bmumble) handleDisconnect(event *gumble.DisconnectEvent) {
|
|
b.connected <- disconnect{event.Type, event.String}
|
|
}
|
|
|
|
|
|
func (b *Bmumble) makeDebugHandler() (*gumbleutil.Listener) {
|
|
handler := gumbleutil.Listener{
|
|
Connect: func(e *gumble.ConnectEvent) { b.Log.Debugf("Received connect event: %+v", e) },
|
|
Disconnect: func(e *gumble.DisconnectEvent) { b.Log.Debugf("Received disconnect event: %+v", e) },
|
|
TextMessage: func(e *gumble.TextMessageEvent) { b.Log.Debugf("Received textmessage event: %+v", e) },
|
|
UserChange: func(e *gumble.UserChangeEvent) { b.Log.Debugf("Received userchange event: %+v", e) },
|
|
ChannelChange: func(e *gumble.ChannelChangeEvent) { b.Log.Debugf("Received channelchange event: %+v", e) },
|
|
PermissionDenied: func(e *gumble.PermissionDeniedEvent) { b.Log.Debugf("Received permissiondenied event: %+v", e) },
|
|
UserList: func(e *gumble.UserListEvent) { b.Log.Debugf("Received userlist event: %+v", e) },
|
|
ACL: func(e *gumble.ACLEvent) { b.Log.Debugf("Received acl event: %+v", e) },
|
|
BanList: func(e *gumble.BanListEvent) { b.Log.Debugf("Received banlist event: %+v", e) },
|
|
ContextActionChange: func(e *gumble.ContextActionChangeEvent) { b.Log.Debugf("Received contextactionchange event: %+v", e) },
|
|
ServerConfig: func(e *gumble.ServerConfigEvent) { b.Log.Debugf("Received serverconfig event: %+v", e) },
|
|
}
|
|
return &handler
|
|
}
|