From 8b77d27e39af58a61215a02f52f5e1830c85e128 Mon Sep 17 00:00:00 2001 From: Shashwat Rawat <76027274+shashwat-appdirect@users.noreply.github.com> Date: Tue, 23 Feb 2021 12:24:15 +0530 Subject: [PATCH] fix(sensor): Slack trigger should not join conversation for private channel (#1078) * fix: 1077 - JoinConversation for private channel throws method_not_supported_for_channel_type Signed-off-by: Shashwat Rawat * simplified comparison to bool Signed-off-by: Shashwat Rawat --- sensors/triggers/slack/slack.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/sensors/triggers/slack/slack.go b/sensors/triggers/slack/slack.go index 86daac1e09..f8b9f92a1c 100644 --- a/sensors/triggers/slack/slack.go +++ b/sensors/triggers/slack/slack.go @@ -112,6 +112,7 @@ func (t *SlackTrigger) Execute(ctx context.Context, events map[string]*v1alpha1. Types: []string{"public_channel", "private_channel"}, } channelID := "" + isPrivateChannel := false for { channels, nextCursor, err := api.GetConversations(params) if err != nil { @@ -121,6 +122,7 @@ func (t *SlackTrigger) Execute(ctx context.Context, events map[string]*v1alpha1. for _, c := range channels { if c.Name == channel { channelID = c.ID + isPrivateChannel = c.IsPrivate break } } @@ -133,11 +135,14 @@ func (t *SlackTrigger) Execute(ctx context.Context, events map[string]*v1alpha1. return nil, errors.Errorf("failed to get channelID of %s", channel) } // Only join if not joined? Maybe a join API call is easier. - c, _, _, err := api.JoinConversation(channelID) - t.Logger.Debug("successfully joined channel", zap.Any("channel", c)) - if err != nil { - t.Logger.Error("unable to join channel...", zap.Any("channelName", channel), zap.Any("channelID", channelID), zap.Error(err)) - return nil, errors.Wrapf(err, "failed to join channel %s", channel) + // Not applicable for private channels since bot cannot join private channels + if !isPrivateChannel { + c, _, _, err := api.JoinConversation(channelID) + t.Logger.Debug("successfully joined channel", zap.Any("channel", c)) + if err != nil { + t.Logger.Error("unable to join channel...", zap.Any("channelName", channel), zap.Any("channelID", channelID), zap.Error(err)) + return nil, errors.Wrapf(err, "failed to join channel %s", channel) + } } t.Logger.Info("posting to channel...", zap.Any("channelName", channel))