diff options
author | Patrick Connolly <patrick.c.connolly@gmail.com> | 2018-11-09 03:45:40 +0800 |
---|---|---|
committer | Wim <wim@42.be> | 2018-11-08 20:45:40 +0100 |
commit | 3d281b3316a68a265efb0f024755e8d1c3863bd5 (patch) | |
tree | 55c6f428b23a3857a7f45263769a84acf633c130 /bridge/slack/handlers.go | |
parent | ea86849a5855e58fd4633117416a21fde753751f (diff) | |
download | matterbridge-msglm-3d281b3316a68a265efb0f024755e8d1c3863bd5.tar.gz matterbridge-msglm-3d281b3316a68a265efb0f024755e8d1c3863bd5.tar.bz2 matterbridge-msglm-3d281b3316a68a265efb0f024755e8d1c3863bd5.zip |
Add ability to show when user is typing across Slack bridges (#559)
Diffstat (limited to 'bridge/slack/handlers.go')
-rw-r--r-- | bridge/slack/handlers.go | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/bridge/slack/handlers.go b/bridge/slack/handlers.go index 4307e7b9..0f5e1402 100644 --- a/bridge/slack/handlers.go +++ b/bridge/slack/handlers.go @@ -23,7 +23,9 @@ func (b *Bslack) handleSlack() { time.Sleep(time.Second) b.Log.Debug("Start listening for Slack messages") for message := range messages { - b.Log.Debugf("<= Sending message from %s on %s to gateway", message.Username, b.Account) + if message.Event != config.EVENT_USER_TYPING { + b.Log.Debugf("<= Sending message from %s on %s to gateway", message.Username, b.Account) + } // cleanup the message message.Text = b.replaceMention(message.Text) @@ -46,6 +48,14 @@ func (b *Bslack) handleSlackClient(messages chan *config.Message) { b.Log.Debugf("== Receiving event %#v", msg.Data) } switch ev := msg.Data.(type) { + case *slack.UserTypingEvent: + rmsg, err := b.handleTypingEvent(ev) + if err != nil { + b.Log.Errorf("%#v", err) + continue + } + + messages <- rmsg case *slack.MessageEvent: if b.skipMessageEvent(ev) { b.Log.Debugf("Skipped message: %#v", ev) @@ -225,6 +235,24 @@ func (b *Bslack) handleAttachments(ev *slack.MessageEvent, rmsg *config.Message) var commentRE = regexp.MustCompile(`.*?commented: (.*)`) +func (b *Bslack) handleTypingEvent(ev *slack.UserTypingEvent) (*config.Message, error) { + var err error + // use our own func because rtm.GetChannelInfo doesn't work for private channels + channelInfo, err := b.getChannelByID(ev.Channel) + if err != nil { + return nil, err + } + + rmsg := config.Message{ + Channel: channelInfo.Name, + Account: b.Account, + Event: config.EVENT_USER_TYPING, + } + + return &rmsg, nil + +} + // handleDownloadFile handles file download func (b *Bslack) handleDownloadFile(rmsg *config.Message, file *slack.File) error { if b.fileIsAvailable(file) { |