summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bridge/discord/discord.go2
-rw-r--r--bridge/discord/handlers.go38
-rw-r--r--matterbridge.toml.sample6
3 files changed, 42 insertions, 4 deletions
diff --git a/bridge/discord/discord.go b/bridge/discord/discord.go
index ad08cd30..5ae6c572 100644
--- a/bridge/discord/discord.go
+++ b/bridge/discord/discord.go
@@ -83,12 +83,12 @@ func (b *Bdiscord) Connect() error {
b.Log.Info("Connection succeeded")
b.c.AddHandler(b.messageCreate)
b.c.AddHandler(b.messageTyping)
- b.c.AddHandler(b.memberUpdate)
b.c.AddHandler(b.messageUpdate)
b.c.AddHandler(b.messageDelete)
b.c.AddHandler(b.messageDeleteBulk)
b.c.AddHandler(b.memberAdd)
b.c.AddHandler(b.memberRemove)
+ b.c.AddHandler(b.memberUpdate)
if b.GetInt("debuglevel") == 1 {
b.c.AddHandler(b.messageEvent)
}
diff --git a/bridge/discord/handlers.go b/bridge/discord/handlers.go
index d2613e1a..34cef554 100644
--- a/bridge/discord/handlers.go
+++ b/bridge/discord/handlers.go
@@ -7,6 +7,10 @@ import (
)
func (b *Bdiscord) messageDelete(s *discordgo.Session, m *discordgo.MessageDelete) { //nolint:unparam
+ if m.GuildID != b.guildID {
+ b.Log.Debugf("Ignoring messageDelete because it originates from a different guild")
+ return
+ }
rmsg := config.Message{Account: b.Account, ID: m.ID, Event: config.EventMsgDelete, Text: config.EventMsgDelete}
rmsg.Channel = b.getChannelName(m.ChannelID)
@@ -17,6 +21,10 @@ func (b *Bdiscord) messageDelete(s *discordgo.Session, m *discordgo.MessageDelet
// TODO(qaisjp): if other bridges support bulk deletions, it could be fanned out centrally
func (b *Bdiscord) messageDeleteBulk(s *discordgo.Session, m *discordgo.MessageDeleteBulk) { //nolint:unparam
+ if m.GuildID != b.guildID {
+ b.Log.Debugf("Ignoring messageDeleteBulk because it originates from a different guild")
+ return
+ }
for _, msgID := range m.Messages {
rmsg := config.Message{
Account: b.Account,
@@ -37,6 +45,10 @@ func (b *Bdiscord) messageEvent(s *discordgo.Session, m *discordgo.Event) {
}
func (b *Bdiscord) messageTyping(s *discordgo.Session, m *discordgo.TypingStart) {
+ if m.GuildID != b.guildID {
+ b.Log.Debugf("Ignoring messageTyping because it originates from a different guild")
+ return
+ }
if !b.GetBool("ShowUserTyping") {
return
}
@@ -52,6 +64,10 @@ func (b *Bdiscord) messageTyping(s *discordgo.Session, m *discordgo.TypingStart)
}
func (b *Bdiscord) messageUpdate(s *discordgo.Session, m *discordgo.MessageUpdate) { //nolint:unparam
+ if m.GuildID != b.guildID {
+ b.Log.Debugf("Ignoring messageUpdate because it originates from a different guild")
+ return
+ }
if b.GetBool("EditDisable") {
return
}
@@ -67,6 +83,10 @@ func (b *Bdiscord) messageUpdate(s *discordgo.Session, m *discordgo.MessageUpdat
}
func (b *Bdiscord) messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) { //nolint:unparam
+ if m.GuildID != b.guildID {
+ b.Log.Debugf("Ignoring messageCreate because it originates from a different guild")
+ return
+ }
var err error
// not relay our own messages
@@ -144,6 +164,10 @@ func (b *Bdiscord) messageCreate(s *discordgo.Session, m *discordgo.MessageCreat
}
func (b *Bdiscord) memberUpdate(s *discordgo.Session, m *discordgo.GuildMemberUpdate) {
+ if m.GuildID != b.guildID {
+ b.Log.Debugf("Ignoring memberUpdate because it originates from a different guild")
+ return
+ }
if m.Member == nil {
b.Log.Warnf("Received member update with no member information: %#v", m)
}
@@ -171,6 +195,13 @@ func (b *Bdiscord) memberUpdate(s *discordgo.Session, m *discordgo.GuildMemberUp
}
func (b *Bdiscord) memberAdd(s *discordgo.Session, m *discordgo.GuildMemberAdd) {
+ if m.GuildID != b.guildID {
+ b.Log.Debugf("Ignoring memberAdd because it originates from a different guild")
+ return
+ }
+ if b.GetBool("nosendjoinpart") {
+ return
+ }
if m.Member == nil {
b.Log.Warnf("Received member update with no member information: %#v", m)
return
@@ -192,6 +223,13 @@ func (b *Bdiscord) memberAdd(s *discordgo.Session, m *discordgo.GuildMemberAdd)
}
func (b *Bdiscord) memberRemove(s *discordgo.Session, m *discordgo.GuildMemberRemove) {
+ if m.GuildID != b.guildID {
+ b.Log.Debugf("Ignoring memberRemove because it originates from a different guild")
+ return
+ }
+ if b.GetBool("nosendjoinpart") {
+ return
+ }
if m.Member == nil {
b.Log.Warnf("Received member update with no member information: %#v", m)
return
diff --git a/matterbridge.toml.sample b/matterbridge.toml.sample
index f004f4b6..41ab44bf 100644
--- a/matterbridge.toml.sample
+++ b/matterbridge.toml.sample
@@ -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
+#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#OPTIONAL (default false)
NoSendJoinPart=false
@@ -496,7 +496,7 @@ RemoteNickFormat="[{PROTOCOL}] <{NICK}> "
ShowJoinPart=false
#Do not send joins/parts to other bridges
-#Currently works for messages from the following bridges: irc, mattermost, slack
+#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#OPTIONAL (default false)
NoSendJoinPart=false
@@ -830,7 +830,7 @@ RemoteNickFormat="[{PROTOCOL}] <{NICK}> "
ShowJoinPart=false
#Do not send joins/parts to other bridges
-#Currently works for messages from the following bridges: irc, mattermost, slack
+#Currently works for messages from the following bridges: irc, mattermost, slack, discord
#OPTIONAL (default false)
NoSendJoinPart=false