diff options
Diffstat (limited to 'bridge/slack')
-rw-r--r-- | bridge/slack/handlers.go | 30 | ||||
-rw-r--r-- | bridge/slack/slack.go | 11 |
2 files changed, 39 insertions, 2 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) { diff --git a/bridge/slack/slack.go b/bridge/slack/slack.go index 8c96837e..701f4769 100644 --- a/bridge/slack/slack.go +++ b/bridge/slack/slack.go @@ -187,7 +187,10 @@ func (b *Bslack) Reload(cfg *bridge.Config) (string, error) { } func (b *Bslack) Send(msg config.Message) (string, error) { - b.Log.Debugf("=> Receiving %#v", msg) + // Too noisy to log like other events + if msg.Event != config.EVENT_USER_TYPING { + b.Log.Debugf("=> Receiving %#v", msg) + } // Make a action /me of the message if msg.Event == config.EVENT_USER_ACTION { @@ -266,6 +269,12 @@ func (b *Bslack) sendRTM(msg config.Message) (string, error) { if err != nil { return "", fmt.Errorf("could not send message: %v", err) } + if msg.Event == config.EVENT_USER_TYPING { + if b.GetBool("ShowUserTyping") { + b.rtm.SendMessage(b.rtm.NewTypingMessage(channelInfo.ID)) + } + return "", nil + } // Delete message if msg.Event == config.EVENT_MSG_DELETE { |