summaryrefslogtreecommitdiffstats
path: root/bridge
diff options
context:
space:
mode:
Diffstat (limited to 'bridge')
-rw-r--r--bridge/slack/slack.go89
1 files changed, 42 insertions, 47 deletions
diff --git a/bridge/slack/slack.go b/bridge/slack/slack.go
index e681c784..68ff8f8b 100644
--- a/bridge/slack/slack.go
+++ b/bridge/slack/slack.go
@@ -257,65 +257,60 @@ func (b *Bslack) handleSlack() {
}
func (b *Bslack) handleSlackClient(mchan chan *MMMessage) {
- count := 0
for msg := range b.rtm.IncomingEvents {
switch ev := msg.Data.(type) {
case *slack.MessageEvent:
- // ignore first message
- if count > 0 {
- flog.Debugf("Receiving from slackclient %#v", ev)
- if len(ev.Attachments) > 0 {
- // skip messages we made ourselves
- if ev.Attachments[0].CallbackID == "matterbridge" {
- continue
- }
- }
- if !b.Config.EditDisable && ev.SubMessage != nil && ev.SubMessage.ThreadTimestamp != ev.SubMessage.Timestamp {
- flog.Debugf("SubMessage %#v", ev.SubMessage)
- ev.User = ev.SubMessage.User
- ev.Text = ev.SubMessage.Text + b.Config.EditSuffix
+ flog.Debugf("Receiving from slackclient %#v", ev)
+ if len(ev.Attachments) > 0 {
+ // skip messages we made ourselves
+ if ev.Attachments[0].CallbackID == "matterbridge" {
+ continue
}
- // use our own func because rtm.GetChannelInfo doesn't work for private channels
- channel, err := b.getChannelByID(ev.Channel)
+ }
+ if !b.Config.EditDisable && ev.SubMessage != nil && ev.SubMessage.ThreadTimestamp != ev.SubMessage.Timestamp {
+ flog.Debugf("SubMessage %#v", ev.SubMessage)
+ ev.User = ev.SubMessage.User
+ ev.Text = ev.SubMessage.Text + b.Config.EditSuffix
+ }
+ // use our own func because rtm.GetChannelInfo doesn't work for private channels
+ channel, err := b.getChannelByID(ev.Channel)
+ if err != nil {
+ continue
+ }
+ m := &MMMessage{}
+ if ev.BotID == "" {
+ user, err := b.rtm.GetUserInfo(ev.User)
if err != nil {
continue
}
- m := &MMMessage{}
- if ev.BotID == "" {
- user, err := b.rtm.GetUserInfo(ev.User)
- if err != nil {
- continue
+ m.UserID = user.ID
+ m.Username = user.Name
+ }
+ m.Channel = channel.Name
+ m.Text = ev.Text
+ if m.Text == "" {
+ for _, attach := range ev.Attachments {
+ if attach.Text != "" {
+ m.Text = attach.Text
+ } else {
+ m.Text = attach.Fallback
}
- m.UserID = user.ID
- m.Username = user.Name
}
- m.Channel = channel.Name
- m.Text = ev.Text
- if m.Text == "" {
- for _, attach := range ev.Attachments {
- if attach.Text != "" {
- m.Text = attach.Text
- } else {
- m.Text = attach.Fallback
- }
- }
+ }
+ m.Raw = ev
+ m.Text = b.replaceMention(m.Text)
+ // when using webhookURL we can't check if it's our webhook or not for now
+ if ev.BotID != "" && b.Config.WebhookURL == "" {
+ bot, err := b.rtm.GetBotInfo(ev.BotID)
+ if err != nil {
+ continue
}
- m.Raw = ev
- m.Text = b.replaceMention(m.Text)
- // when using webhookURL we can't check if it's our webhook or not for now
- if ev.BotID != "" && b.Config.WebhookURL == "" {
- bot, err := b.rtm.GetBotInfo(ev.BotID)
- if err != nil {
- continue
- }
- if bot.Name != "" {
- m.Username = bot.Name
- m.UserID = bot.ID
- }
+ if bot.Name != "" {
+ m.Username = bot.Name
+ m.UserID = bot.ID
}
- mchan <- m
}
- count++
+ mchan <- m
case *slack.OutgoingErrorEvent:
flog.Debugf("%#v", ev.Error())
case *slack.ChannelJoinedEvent: