소스 검색

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 년 전
부모
커밋
21fe76d5e4
1개의 변경된 파일25개의 추가작업 그리고 15개의 파일을 삭제
  1. 25 15
      bridge/user.go

+ 25 - 15
bridge/user.go

@@ -374,6 +374,26 @@ func (u *User) Disconnect() error {
 	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) {
 	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) {
-	if m.GuildID != "" {
-		u.log.Debugln("ignoring message for guild")
-
+	if !u.bridgeMessage(m.GuildID) {
 		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) {
-	if m.GuildID != "" {
-		u.log.Debugln("ignoring message delete for guild message")
-
+	if !u.bridgeMessage(m.GuildID) {
 		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) {
-	if m.GuildID != "" {
-		u.log.Debugln("ignoring message update for guild message")
-
+	if !u.bridgeMessage(m.GuildID) {
 		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) {
-	if m.GuildID != "" {
-		u.log.Debugln("ignoring reaction for guild message")
-
+	if !u.bridgeMessage(m.MessageReaction.GuildID) {
 		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) {
-	if m.GuildID != "" {
-		u.log.Debugln("ignoring reaction for guild message")
-
+	if !u.bridgeMessage(m.MessageReaction.GuildID) {
 		return
 	}