diff --git a/bridge/discord/discord.go b/bridge/discord/discord.go index d2871360..a59735ad 100644 --- a/bridge/discord/discord.go +++ b/bridge/discord/discord.go @@ -21,6 +21,7 @@ type Bdiscord struct { c *discordgo.Session nick string + userID string guildID string webhookID string webhookToken string @@ -92,6 +93,7 @@ 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 2bae3664..79697266 100644 --- a/bridge/discord/handlers.go +++ b/bridge/discord/handlers.go @@ -36,6 +36,11 @@ 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 015a2e1c..88136cba 100644 --- a/bridge/slack/handlers.go +++ b/bridge/slack/handlers.go @@ -1,6 +1,7 @@ package bslack import ( + "errors" "fmt" "html" "time" @@ -10,6 +11,9 @@ 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) != "" { @@ -53,7 +57,9 @@ 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 } @@ -276,6 +282,9 @@ 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