slack-ruby-bot icon indicating copy to clipboard operation
slack-ruby-bot copied to clipboard

Are slash commands supported?

Open johnhenriksson opened this issue 9 years ago • 8 comments

Just started using this gem, fantastic!

I use @bot [command] but would like to use /[command] just like /giphy [gifname]

Is this supported? Thanks!

johnhenriksson avatar Apr 25 '16 12:04 johnhenriksson

Slash commands are not supported out of the box, partly because this is usually implemented with a web front-end. I'll label this as a feature request though.

dblock avatar Apr 25 '16 14:04 dblock

Thanks! Is it supported in https://github.com/dblock/slack-bot-server ? Maybe it belongs there because of the web front-end.

2016-04-25 16:41 GMT+02:00 Daniel Doubrovkine (dB.) @dblockdotorg < [email protected]>:

Slash commands are not supported out of the box, partly because this is usually implemented with a web front-end. I'll label this as a feature request though.

— You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub https://github.com/dblock/slack-ruby-bot/issues/68#issuecomment-214365139

johnhenriksson avatar Apr 25 '16 14:04 johnhenriksson

Not really. You have all the parts to build it there though.

What I'd like is a DSL and documentation on how to support slash commands in slack-ruby-bot. Implementing something in slack-bot-server is how I'd start with it and then see what it looks like and how to make this a feature of slack-ruby-bot.

dblock avatar Apr 25 '16 15:04 dblock

Is it supported now?

mabdelfattah avatar May 30 '17 18:05 mabdelfattah

No, please feel free to contribute @mabdelfattah.

dblock avatar May 30 '17 20:05 dblock

out of the box, is there a way to ignore slash commands? in my case, i've an app that handles slash commands from the slack API, but i also have a bot using this library that seems to catch all these slash commands and responds with I don't understand that command! - just looking for catch all

mcconkiee avatar Feb 11 '18 14:02 mcconkiee

ahh nevermind...

match /^\/(.*)/ do |client, data, match|
    cmd = data['text']
    client.say(channel: data.channel, text: "ignoring slash commands: #{cmd}")
  end

that'll work !

mcconkiee avatar Feb 11 '18 15:02 mcconkiee

I actually manage to call slash commands from my bot like this:

Create a helper method that reverts the token to a "legacy" one (they start with xoxp instead of xoxb):

def self.with_legacy_token(client)
        old_token = client.token
        begin
          client.token = ENV['SLACK_LEGACY_TOKEN']
          client.web_client.token = client.token

          yield(client)

        ensure
          client.token = old_token
          client.web_client.token = client.token
        end
      end

Then you can call slash commands like this:

Lib::GeneralHelper.with_legacy_token(client) do |legacy_client|
                    legacy_client.web_client.chat_command(channel: data.channel,
                                                          command: slash_cmd,
                                                          text: slash_cmd_arg)
                  end

LouisKottmann avatar Oct 15 '19 07:10 LouisKottmann