Browse Source

Use the guild bridge setting to bridge messages.

Previously we just dropped all guild messages, now we check if the guildID is
set to bridge and if so we that it pass through, if not we just drop it.
Gary Kramlich 3 years ago
parent
commit
21fe76d5e4
1 changed files with 25 additions and 15 deletions
  1. 25 15
      bridge/user.go

+ 25 - 15
bridge/user.go

@@ -374,6 +374,26 @@ func (u *User) Disconnect() error {
 	return nil
 	return nil
 }
 }
 
 
+func (u *User) bridgeMessage(guildID string) bool {
+	// Non guild message always get bridged.
+	if guildID == "" {
+		return true
+	}
+
+	u.guildsLock.Lock()
+	defer u.guildsLock.Unlock()
+
+	if guild, found := u.guilds[guildID]; found {
+		if guild.Bridge {
+			return true
+		}
+	}
+
+	u.log.Debugfln("ignoring message for unbridged guild %s", guildID)
+
+	return false
+}
+
 func (u *User) readyHandler(s *discordgo.Session, r *discordgo.Ready) {
 func (u *User) readyHandler(s *discordgo.Session, r *discordgo.Ready) {
 	u.log.Debugln("discord connection ready")
 	u.log.Debugln("discord connection ready")
 
 
@@ -529,9 +549,7 @@ func (u *User) channelUpdateHandler(s *discordgo.Session, c *discordgo.ChannelUp
 }
 }
 
 
 func (u *User) messageCreateHandler(s *discordgo.Session, m *discordgo.MessageCreate) {
 func (u *User) messageCreateHandler(s *discordgo.Session, m *discordgo.MessageCreate) {
-	if m.GuildID != "" {
-		u.log.Debugln("ignoring message for guild")
-
+	if !u.bridgeMessage(m.GuildID) {
 		return
 		return
 	}
 	}
 
 
@@ -547,9 +565,7 @@ func (u *User) messageCreateHandler(s *discordgo.Session, m *discordgo.MessageCr
 }
 }
 
 
 func (u *User) messageDeleteHandler(s *discordgo.Session, m *discordgo.MessageDelete) {
 func (u *User) messageDeleteHandler(s *discordgo.Session, m *discordgo.MessageDelete) {
-	if m.GuildID != "" {
-		u.log.Debugln("ignoring message delete for guild message")
-
+	if !u.bridgeMessage(m.GuildID) {
 		return
 		return
 	}
 	}
 
 
@@ -565,9 +581,7 @@ func (u *User) messageDeleteHandler(s *discordgo.Session, m *discordgo.MessageDe
 }
 }
 
 
 func (u *User) messageUpdateHandler(s *discordgo.Session, m *discordgo.MessageUpdate) {
 func (u *User) messageUpdateHandler(s *discordgo.Session, m *discordgo.MessageUpdate) {
-	if m.GuildID != "" {
-		u.log.Debugln("ignoring message update for guild message")
-
+	if !u.bridgeMessage(m.GuildID) {
 		return
 		return
 	}
 	}
 
 
@@ -583,9 +597,7 @@ func (u *User) messageUpdateHandler(s *discordgo.Session, m *discordgo.MessageUp
 }
 }
 
 
 func (u *User) reactionAddHandler(s *discordgo.Session, m *discordgo.MessageReactionAdd) {
 func (u *User) reactionAddHandler(s *discordgo.Session, m *discordgo.MessageReactionAdd) {
-	if m.GuildID != "" {
-		u.log.Debugln("ignoring reaction for guild message")
-
+	if !u.bridgeMessage(m.MessageReaction.GuildID) {
 		return
 		return
 	}
 	}
 
 
@@ -601,9 +613,7 @@ func (u *User) reactionAddHandler(s *discordgo.Session, m *discordgo.MessageReac
 }
 }
 
 
 func (u *User) reactionRemoveHandler(s *discordgo.Session, m *discordgo.MessageReactionRemove) {
 func (u *User) reactionRemoveHandler(s *discordgo.Session, m *discordgo.MessageReactionRemove) {
-	if m.GuildID != "" {
-		u.log.Debugln("ignoring reaction for guild message")
-
+	if !u.bridgeMessage(m.MessageReaction.GuildID) {
 		return
 		return
 	}
 	}