Skip to content


Subversion checkout URL

You can clone with
Download ZIP
CSS Ruby JavaScript HTML
Failed to load latest commit information.
extras Remove annoying deploy sound command
lib Small fixes
spec Remove broken !iou
web Remove stats from web
.gitignore Ignore rbenv-versions
.rspec Removed mocha
.ruby-version.example Don't force a ruby on us
.rvmrc 1.9.3
Gemfile Basic support for Slack
Gemfile.lock Basic support for Slack
Rakefile Fix soundboard
config.yml.example clear up the config example file


Flower is a Flowdock Bot

Flowdock is a team collaboration and group chat service, similar to Campfire.

Flowdock is also the group chat service of choice at the Mynewsdesk R&D dept. To make it more fun and/or usable, we made this bot.

Flower was made to be easy to extend with your own commands.

How do I use it?

  1. Create a new Flowdock account for your Flower bot. Give it a nick, for example "Bot", or "Steve".
  2. Download/clone the repository
  3. Copy and rename config.yml.example to config.yml, and fill it with your settings
  4. Run the bot in the background: rake run &
  5. Write "!job" and smile!

All commands are prefixed with ! Run:

$ git grep 'respond_to'

to see which commands you can use

Writing my own commands

You should write your own commands to make Flower fun and/or useful for your team.

This is easy. Simply create a class like this in lib/commands that inherits Flower::Command:

class MyCommand < Flower::Command
  respond_to "testing"
  def self.respond(command, message, sender, flower)
    # Do something with "flower"
    flower.say("Only testing")
  def self.description
    "Text that describes your command. It's used in the built-in Help command."

MyCommand.respond will be invoked when a message prefix matches what you respond_to. Arguments passed are:

  • command - The matched command
  • message - The entire message
  • sender - A hash with sender user id/nick info: {:id => 123, :nick => "Jonas"}
  • flower - The Flower instance, that can say or paste something
Something went wrong with that request. Please try again.