使用slack-ruby-bot

时间:2016-11-01 21:52:37

标签: ruby slack-api

我正试图掌握slack-ruby-bot宝石。查看我可以在文本上匹配的示例,然后发回回复

match /^Is this bike stolen (?<frame_number>\w*)\?$/ do |client, data, match|
  client.say(channel: data.channel, text: "text here")
end

要从机器人那里得到回复,我会写Is this bike stolen 123456?,然后我会回复text here

我想要实现的只是当我做@bot Is this bike stolen 123456?时才回复,所以我必须特别询问机器人。

在将响应放在一起时显示一些打字文本也很棒

有没有人有过这方面的经验或有一些例子可以寻找灵感

由于

1 个答案:

答案 0 :(得分:1)

我认为你的代码已经是最重要的了。

match /^Is this bike stolen (?<frame_number>\w*)\?$/ do |client, data, match|
  client.say(channel: data.channel, text: "text here")
end

我认为您需要做的就是将@bot字符串添加到正则表达式 -

/^@bot Is this bike stolen (?<frame_number>\w*)\?$/

如果你想使用这个将所有命令,你可以为正则表达式创建一个包装方法:

def bot_regex(rest_of_regex)
  /^@bot #{rest_of_regex}$/
end

regex = bot_regex "Is this bike stolen (?<frame_number>\w*)\?"
match regex do |client, data, match| # etc

将正则表达式匹配捕手包装在方法中可能也会有所帮助:

def regex_matcher(name)
  "(?<#{name}>\w*)"
end

matcher = regex_matcher("frame_number")
regex = bot_regex "Is this bike stolen #{matcher}\?"