dblock / slack-strava

(Re)Post Strava activities to Slack
https://slava.playplay.io
MIT License
37 stars 6 forks source link

Slash command returns results, but fails to actually connect a club when bot not in channel #37

Closed dblock closed 6 years ago

dblock commented 6 years ago
I, [2018-05-12T01:02:23.601854 #237]  INFO -- : Connected strava_id=43749, name=Orchard Street Runners, url=https://www.strava.com/clubs/OrchardStreetRunners, channel_id=CAE55SVT7, channel_name=running, name=playplay, id=T0H0YREAD, user_id=U0H0TU3NG, user_name=dblock, name=playplay, id=T0H0YREAD.
E, [2018-05-12T01:02:23.692868 #237] ERROR -- : Slack::Web::Api::Errors::SlackError: not_in_channel
  /app/vendor/bundle/ruby/2.3.0/gems/slack-ruby-client-0.11.1/lib/slack/web/faraday/response/raise_error.rb:11:in `on_complete'
  /app/vendor/bundle/ruby/2.3.0/gems/faraday-0.14.0/lib/faraday/response.rb:9:in `block in call'
  /app/vendor/bundle/ruby/2.3.0/gems/faraday-0.14.0/lib/faraday/response.rb:61:in `on_complete'
  /app/vendor/bundle/ruby/2.3.0/gems/faraday-0.14.0/lib/faraday/response.rb:8:in `call'
  /app/vendor/bundle/ruby/2.3.0/gems/faraday-0.14.0/lib/faraday/response.rb:8:in `call'
  /app/vendor/bundle/ruby/2.3.0/gems/faraday-0.14.0/lib/faraday/request/url_encoded.rb:15:in `call'
dblock commented 6 years ago
            begin
              user.team.slack_client.chat_postMessage(
                club.to_slack.merge(
                  as_user: true, channel: channel_id, text: "A club has been connected by #{user.slack_mention}."
                )
              )
              club.sync_last_strava_activity!
              user.athlete_clubs_to_slack(channel_id).merge(user: user_id, channel: channel_id)
            rescue Slack::Web::Api::Errors::SlackError => e
              case e.message
              when 'not_in_channel' then
                Api::Middleware.logger.error "Bot not in channel, connecting #{club} failed."
                club.destroy
                user.athlete_clubs_to_slack(channel_id).merge(
                  user: user_id,
                  channel: channel_id,
                  text: "Please invite #{user.team.bot_mention} to this channel before connecting a club."
                )
              else
                raise e
              end
            end