Skip to content

Latest commit

 

History

History
270 lines (178 loc) · 7.9 KB

UPGRADING.md

File metadata and controls

270 lines (178 loc) · 7.9 KB

Upgrading SlackRubyBot

Upgrading to >= 0.16.0

Removed GIF support

GIF, Giphy and other animated GIF support has been removed. Remove gif options from all client.say(gif: 'keyword') method calls, the GIPHY_API_KEY ENV var, gem 'giphy' or gem 'GiphyClient', and any references to send_gifs. The previously deprecated SlackRubyBot::Commands::Base#send_message, send_message_with_gif and send_gif methods have also been removed.

See #261 for details.

Removed deprecated server.hooks

The previously deprecated SlackRubyBot::Server#hooks has been removed.

See #266 for details.

Upgrading to >= 0.15.0

Set up VCR explicitly

Requiring slack-ruby-bot/rspec will no longer set up VCR anymore. If your spec suite implicitly relies on this you would need to set up VCR explicitly in your spec suite. Just follow standard VCR documentation.

See #258 for more information.

Upgrading to >= 0.14.0

Bot Messages Disabled

By default bots will no longer respond to other bots. This caused confusing "I don't understand this command." errors when DMing the bot and rendering URLs that were being sent back as DMs. If you wish to restore the old behavior, set allow_bot_messages to true.

SlackRubyBot.configure do |config|
  config.allow_bot_messages = true
end

See #250 for more information.

Upgrading to >= 0.13.0

Minimum Ruby Version

Ruby 2.3 or later is now required.

See #246 for more information.

Upgrading to >= 0.12.0

Remove any references to SlackRubyBot::Server#restart!

We have removed SlackRubyBot::Server#restart! since the slack-ruby-client now restarts any connection that was not intentionally stopped via SlackRubyBot::Server#stop!.

Upgrading to >= 0.10.4

Replace server.hooks.add with server.on

We have deprecated SlackRubyBot::Server#hooks in favor of SlackRubyBot::Server#on instance method. All users using SlackRubyBot::Server#hooks method should change their codebase and use the new method instead. Method signature is not affected.

Example:

  # Given server is an instance of SlackRubyBot::Server
  #
  # Before
  server.hooks.add :hello, Greet.new

  # After
  server.on :hello, Greet.new

Upgrading to >= 0.9.0

Add giphy to your Gemfile for GIF support

The dependency on the giphy gem was dropped and GIFs don't appear by default. If you want GIF support, add gem 'giphy' to your Gemfile.

You should not need to make any changes if you had already disabled GIFs for your bot.

See #89 for more information.

Upgrading to >= 0.8.0

Require a concurrency library

The faye-websocket library is no longer required by default. Add either faye-websocket or celluiloid-io to your Gemfile depending on which concurrency implementation you'd like to use. We recommend celluloid-io moving forward.

Hook::Base was removed, explicitly register any custom hook classes

Hook classes are now handled differently, namely they are explicitly registered into SlackRubyBot::Server via a configuration option (hook_handlers) or by passing a similar hash later on through the add_hook_handlers method. Including Hook classes directly into the server class is no longer needed.

A hook is actioned via a call message onto the handler object (this can be anything that responds to that), so you'll need to rename your method.

Finally, you can now register multiple hooks for the same event, so if you had any code to remove default hooks, you'll need to change it so you pass a configuration hash into Server

Upgrading to >= 0.7.0

Simplify Match Expression Checking

The regular expression parser for commands will now include a nil value for expression when an expression is not present. You can therefore no longer rely on checking match.names.include?('expression'), instead check match['expression'].

Remove any bot.auth! calls

SlackRubyBot 0.6.x versions invoked a method called auth!, which caused a pre-flight authentication via Slack Web API auth_test method and collected a number of properties, such as client and team ID or name. This method has been removed in favor of using data available in the Slack::RealTime::Client local store introduced in slack-ruby-client#54. Remove any explicit calls to this method.

Upgrading to >= 0.6.0

While entirely compatible with the 0.5.x series, a number of methods have been deprecated and will be removed in the next release.

Replace SlackRubyBot::Commands::Base#call with command, operator or match

Prefer command, operator or match with a block instead of implementing a self.call method.

Before:

require 'slack-ruby-bot'

class Bot < SlackRubyBot::Bot
  command 'ping'

  def self.call(client, data, match)
    ...
  end
end

After:

require 'slack-ruby-bot'

class Bot < SlackRubyBot::Bot
  command 'ping' do |client, data, match|
    ...
  end
end

Replace send_message, send_message_with_gif and send_gif with client.say

Use client.say instead of send_message, send_message_with_gif and send_gif in commands.

Before:

class Bot < SlackRubyBot::Bot
 command 'one' do |client, data, match|
  send_message client, data.channel, 'Text.'
 end

 command 'two' do |client, data, match|
  send_message_with_gif client, data.channel, "Text.", 'keyword'
 end

 command 'three' do |client, data, match|
  send_gif client, data.channel, 'keyword'
 end
end

After:

class Bot < SlackRubyBot::Bot
 command 'one' do |client, data, match|
  client.say(channel: data.channel, text: 'Text.')
 end

 command 'two' do |client, data, match|
  client.say(channel: data.channel, text: 'Text.', gif: 'keyword')
 end

 command 'three' do |client, data, match|
  client.say(channel: data.channel, gif: 'keyword')
 end
end

For basic bots replace SlackRubyBot::App with SlackRubyBot::Bot and implement commands inline

Before:

module PongBot
  class App < SlackRubyBot::App
  end

  class Ping < SlackRubyBot::Commands::Base
    command 'ping' do |client, data, _match|
      client.message(text: 'pong', channel: data.channel)
    end
  end
end

PongBot::App.instance.run

After:

class Bot < SlackRubyBot::Bot
  command 'ping' do |client, data, _match|
    client.say(text: 'pong', channel: data.channel)
  end
end

Bot.run

Upgrading to >= 0.4.0

This version uses slack-ruby-client instead of slack-ruby-gem.

The command interface now takes a client parameter, which is the RealTime Messaging API instance. Add the new parameter to all call calls in classes that inherit from SlackRubyBot::Commands::Base.

Before:

def self.call(data, match)
  ...
end

After:

def self.call(client, data, match)
  ...
end

This also applies to command, operator and match blocks.

Before:

command 'ping' do |data, match|
  ...
end

After:

command 'ping' do |client, data, match|
  ...
end

You can now send messages directly via the RealTime Messaging API.

client.message text: 'text', channel: 'channel'

Otherwise you must now pass the client parameter to send_message and send_message_with_gif.

def self.call(client, data, match)
  send_message client, data.channel, 'hello'
end
def self.call(client, data, match)
  send_message_with_gif client, data.channel, 'hello', 'hi'
end