Thumbnail

rani/matterbridge.git

Clone URL: https://git.buni.party/rani/matterbridge.git

commit c9bb2b8fb8f7046ab1976861b21dad75f40ae242 Author: Qais Patankar <qaisjp@gmail.com> Date: Sun Mar 22 17:39:11 2020 +0000 Don't transmit typing events from ourselves (slack/discord) (#1056) diff --git a/bridge/discord/discord.go b/bridge/discord/discord.go index d287136..a59735a 100644 --- a/bridge/discord/discord.go +++ b/bridge/discord/discord.go @@ -216 +217 @@ type Bdiscord struct {   c *discordgo.Session     nick string + userID string   guildID string   webhookID string   webhookToken string @@ -926 +937 @@ func (b *Bdiscord) Connect() error {   }   serverName := strings.Replace(b.GetString("Server"), "ID:", "", -1)   b.nick = userinfo.Username + b.userID = userinfo.ID   b.channelsMutex.Lock()   for _, guild := range guilds {   if guild.Name == serverName || guild.ID == serverName { diff --git a/bridge/discord/handlers.go b/bridge/discord/handlers.go index 2bae366..7969726 100644 --- a/bridge/discord/handlers.go +++ b/bridge/discord/handlers.go @@ -366 +3611 @@ func (b *Bdiscord) messageTyping(s *discordgo.Session, m *discordgo.TypingStart)   return   }   + // Ignore our own typing messages + if m.UserID == b.userID { + return + } +   rmsg := config.Message{Account: b.Account, Event: config.EventUserTyping}   rmsg.Channel = b.getChannelName(m.ChannelID)   b.Remote <- rmsg diff --git a/bridge/slack/handlers.go b/bridge/slack/handlers.go index 015a2e1..88136cb 100644 --- a/bridge/slack/handlers.go +++ b/bridge/slack/handlers.go @@ -16 +17 @@  package bslack    import ( + "errors"   "fmt"   "html"   "time" @@ -106 +119 @@ import (   "github.com/slack-go/slack"  )   +// ErrEventIgnored is for events that should be ignored +var ErrEventIgnored = errors.New("this event message should ignored") +  func (b *Bslack) handleSlack() {   messages := make(chan *config.Message)   if b.GetString(incomingWebhookConfig) != "" { @@ -537 +579 @@ func (b *Bslack) handleSlackClient(messages chan *config.Message) {   continue   }   rmsg, err := b.handleTypingEvent(ev) - if err != nil { + if err == ErrEventIgnored { + continue + } else if err != nil {   b.Log.Errorf("%#v", err)   continue   } @@ -2766 +2829 @@ func (b *Bslack) handleAttachments(ev *slack.MessageEvent, rmsg *config.Message)  }    func (b *Bslack) handleTypingEvent(ev *slack.UserTypingEvent) (*config.Message, error) { + if ev.User == b.si.User.ID { + return nil, ErrEventIgnored + }   channelInfo, err := b.channels.getChannelByID(ev.Channel)   if err != nil {   return nil, err