使用松弛Ruby机器人

wd2eg0qa  于 2022-12-12  发布在  Ruby
关注(0)|答案(1)|浏览(159)

我正在尝试掌握slack-ruby-bot gem。查看示例,我可以在文本上进行匹配,然后发送回响应

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

要从bot获得响应,我只需写入Is this bike stolen 123456?,然后返回text here
我想实现的是,只有当我执行@bot Is this bike stolen 123456?时才能得到响应,所以我必须特别要求机器人。
这也将是伟大的显示一些打字文本,而回应正在放在一起。
有没有什么例子可以从中获得灵感?

blmhpbnm

blmhpbnm1#

我想你的代码已经快到了。

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*)\?$/

如果你想用这个将所有的命令,你可以为regex做一个 Package 方法:

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

将正则表达式匹配捕获器 Package 在一个方法中可能也很有帮助:

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

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

相关问题