BlakeWilliams/Elixir-Slack

Slack RTM breaking changes

binaryseed opened this issue ยท 7 comments

Regarding the note in the Readme about the Slack API changes upon connect (rtm.start).. https://github.com/BlakeWilliams/Elixir-Slack#upgrading-from-0x-to-020

  1. I'm getting rate limited errors on even the first attempt to connect. Perhaps the Slack API s now rejecting rtm.start altogether?
  • I had to use the url /api/rtm.connect to get connected with the Slack API now
  • I had to tweak the Slack callback handle_connect to let you modify the slack portion of the internal state, which is necessary for any following state management to function
  1. Trying to initialize the Slack State requires more than the example code...
  • Slack state expects maps with the id as the key, not just a list
  • Slack state expects atom keys

These could be addressed fairly easily, but I'm not sure if there other implications...

Hi @binaryseed ! How are you doing the initializations of the state?

@binaryseed if you Slack app is new (within the last 1.5 yrs or so) it won't work. See this page for details: https://api.slack.com/methods/rtm.start

Here's the changes I made in a branch to make this work..

binaryseed@e9a9395

And to initialize channels for example, I do this:

  def handle_connect(slack, state) do
    channels =
      Slack.Web.Channels.list(%{token: slack.token})
      |> Map.get(:channels)
      |> Map.new(&{&1.id, &1})

    slack =
      slack
      |> Map.put(:channels, channels)

    {:ok, {slack, state}}
   end

@binaryseed want to create a pull request? Also please make sure you run the tests to ensure there are no regressions from this change

Here we go: #235

Likely need to do some docs tweaks alongside it...

Any news on this change? Just received a "final notice" email from Slack regarding the upcoming changes to rtm.start and rtm.connect:

2022-09-02-11-05-14-QgJIMRUa@2x