Skip to content

Commit

Permalink
mumble: Implement sending of EventJoinLeave both to and from Mumble (C…
Browse files Browse the repository at this point in the history
…loses #1435)
  • Loading branch information
s3lph committed Nov 6, 2022
1 parent 0c83946 commit 64f2b9b
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 19 deletions.
44 changes: 40 additions & 4 deletions bridge/mumble/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,15 +79,51 @@ func (b *Bmumble) handleConnect(event *gumble.ConnectEvent) {
}

func (b *Bmumble) handleUserChange(event *gumble.UserChangeEvent) {
// Only care about changes to self
if event.User != event.Client.Self {
// Ignore events happening before setup is done
if b.Channel == nil {
return
}
// Someone attempted to move the user out of the configured channel; attempt to join back
if b.Channel != nil {
// UserChangeEvent is used for both the gumble client itself as well as other clients
if event.User == event.Client.Self {
// Someone attempted to move the user out of the configured channel; attempt to join back
if err := b.doJoin(event.Client, *b.Channel); err != nil {
b.Log.Error(err)
}
} else {
if b.GetBool("nosendjoinpart") {
return
}
b.Log.Debugf("Received gumble user change event: %+v", event)
text := ""
if event.Type & gumble.UserChangeKicked > 0 {
text = " was kicked"
} else if event.Type & gumble.UserChangeBanned > 0 {
text = " was banned"
} else if event.Type & gumble.UserChangeDisconnected > 0 {
if event.User.Channel != nil && event.User.Channel.ID == *b.Channel {
text = " left"
}
} else if event.Type & gumble.UserChangeConnected > 0 {
if event.User.Channel != nil && event.User.Channel.ID == *b.Channel {
text = " joined"
}
} else if event.Type & gumble.UserChangeChannel > 0 {
// Treat Mumble channel changes the same as connects/disconnects; as far as matterbridge is concerned, they are identical
if event.User.Channel != nil && event.User.Channel.ID == *b.Channel {
text = " joined"
} else {
text = " left"
}
}
if text != "" {
b.Remote <- config.Message{
Username: "system",
Text: event.User.Name + text,
Channel: strconv.FormatUint(uint64(*b.Channel), 10),
Account: b.Account,
Event: config.EventJoinLeave,
}
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion bridge/mumble/mumble.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ func (b *Bmumble) JoinChannel(channel config.ChannelInfo) error {
func (b *Bmumble) Send(msg config.Message) (string, error) {
// Only process text messages
b.Log.Debugf("=> Received local message %#v", msg)
if msg.Event != "" && msg.Event != config.EventUserAction {
if msg.Event != "" && msg.Event != config.EventUserAction && msg.Event != config.EventJoinLeave {
return "", nil
}

Expand Down
37 changes: 23 additions & 14 deletions matterbridge.toml.sample
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ Label=""
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

#Enable to show users joins/parts from other bridges
#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#Currently works for messages from the following bridges: irc, mattermost, mumble, slack, discord
#OPTIONAL (default false)
ShowJoinPart=false

Expand All @@ -197,7 +197,7 @@ ShowJoinPart=false
VerboseJoinPart=false

#Do not send joins/parts to other bridges
#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#Currently works for messages from the following bridges: irc, mattermost, mumble, slack, discord
#OPTIONAL (default false)
NoSendJoinPart=false

Expand Down Expand Up @@ -324,7 +324,7 @@ Label=""
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

#Enable to show users joins/parts from other bridges
#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#Currently works for messages from the following bridges: irc, mattermost, mumble, slack, discord
#OPTIONAL (default false)
ShowJoinPart=false

Expand Down Expand Up @@ -491,12 +491,12 @@ Label=""
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

#Enable to show users joins/parts from other bridges
#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#Currently works for messages from the following bridges: irc, mattermost, mumble, slack, discord
#OPTIONAL (default false)
ShowJoinPart=false

#Do not send joins/parts to other bridges
#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#Currently works for messages from the following bridges: irc, mattermost, mumble, slack, discord
#OPTIONAL (default false)
NoSendJoinPart=false

Expand Down Expand Up @@ -578,7 +578,7 @@ Label=""
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

#Enable to show users joins/parts from other bridges
#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#Currently works for messages from the following bridges: irc, mattermost, mumble, slack, discord
#OPTIONAL (default false)
ShowJoinPart=false

Expand Down Expand Up @@ -686,7 +686,7 @@ Label=""
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

#Enable to show users joins/parts from other bridges
#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#Currently works for messages from the following bridges: irc, mattermost, mumble, slack, discord
#OPTIONAL (default false)
ShowJoinPart=false

Expand Down Expand Up @@ -825,12 +825,12 @@ Label=""
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

#Enable to show users joins/parts from other bridges
#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#Currently works for messages from the following bridges: irc, mattermost, mumble, slack, discord
#OPTIONAL (default false)
ShowJoinPart=false

#Do not send joins/parts to other bridges
#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#Currently works for messages from the following bridges: irc, mattermost, mumble, slack, discord
#OPTIONAL (default false)
NoSendJoinPart=false

Expand Down Expand Up @@ -1137,7 +1137,7 @@ Label=""
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

#Enable to show users joins/parts from other bridges
#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#Currently works for messages from the following bridges: irc, mattermost, mumble, slack, discord
#OPTIONAL (default false)
ShowJoinPart=false

Expand Down Expand Up @@ -1274,7 +1274,7 @@ Label=""
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

#Enable to show users joins/parts from other bridges
#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#Currently works for messages from the following bridges: irc, mattermost, mumble, slack, discord
#OPTIONAL (default false)
ShowJoinPart=false

Expand Down Expand Up @@ -1386,7 +1386,7 @@ Label=""
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

#Enable to show users joins/parts from other bridges
#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#Currently works for messages from the following bridges: irc, mattermost, mumble, slack, discord
#OPTIONAL (default false)
ShowJoinPart=false

Expand Down Expand Up @@ -1483,7 +1483,7 @@ Label=""
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

#Enable to show users joins/parts from other bridges
#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#Currently works for messages from the following bridges: irc, mattermost, mumble, slack, discord
#OPTIONAL (default false)
ShowJoinPart=false

Expand Down Expand Up @@ -1571,6 +1571,15 @@ SkipTLSVerify=false
#Default "<clipped message>"
MessageClipped="<clipped message>"

#Enable to show users joins/parts from other bridges
#Currently works for messages from the following bridges: irc, mattermost, mumble, slack, discord
#OPTIONAL (default false)
ShowJoinPart=false

#Do not send joins/parts to other bridges
#OPTIONAL (default false)
NoSendJoinPart=false

###################################################################
#VK
###################################################################
Expand Down Expand Up @@ -1683,7 +1692,7 @@ Label=""
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

#Enable to show users joins/parts from other bridges
#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#Currently works for messages from the following bridges: irc, mattermost, mumble, slack, discord
#OPTIONAL (default false)
ShowJoinPart=false

Expand Down

0 comments on commit 64f2b9b

Please # to comment.