Slack-Ruby-Bot
A generic Slack bot framework written in Ruby. This library does all the heavy lifting so you can focus on implementing slack bot commands, without introducing unnecessary requirements or limitations. It's a Slack bot boilerplate.
Usage
A Minimal Bot
Gemfile
source 'http://rubygems.org'
gem 'slack-ruby-bot'
pongbot.rb
require 'slack-ruby-bot'
module PongBot
class App < SlackRubyBot::App
end
class Ping < SlackRubyBot::Commands::Base
def self.call(data, command, arguments)
data.channel, 'pong'
end
end
end
PongBot::App.instance.run
After registering the bot, run with SLACK_API_KEY=... bundle exec ruby pongbot.rb. Have the bot join a channel and send it a ping.

A Production Bot
A typical production Slack bot is a combination of a vanilla web server and a websocket application that talks to the Slack Real Time Messaging API. See our Writing a Production Bot tutorial for more information.
More Involved Examples
The following examples of production-grade bots based on slack-ruby-bot are listed in growing order of complexity.
- slack-mathbot: Slack integration with math.
- slack-gamebot: A generic game bot for ping-pong, chess, etc.
Commands and Operators
Bots are addressed by name and respond to commands and operators. By default a command class responds, case-insensitively, to its name. A class called Phone that inherits from SlackRubyBot::Commands::Base responds to phone and Phone. To respond to custom commands and to disable automatic class name matching, use the command keyword. The following command responds to call and 呼び出し (call in Japanese).
class Phone < SlackRubyBot::Commands::Base
command 'call'
command '呼び出し'
end
Operators are 1-letter long and are similar to commands. They don't require addressing a bot nor separating an operator from its arguments. The following class responds to =2+2.
class Calculator < SlackRubyBot::Commands::Base
operator '='
end
Built-In Commands
Slack-ruby-bot comes with several built-in commands. You can re-define built-in commands, normally, as described above.
[bot name]
This is also known as the default command. Shows bot version and links.
[bot name] hi
Politely says 'hi' back.
[bot name] help
Get help.
Contributing
See CONTRIBUTING.
Copyright and License
Copyright (c) 2015, Daniel Doubrovkine, Artsy and Contributors.
This project is licensed under the MIT License.
