【问题标题】:Using slack-ruby-bot使用 slack-ruby-bot
【发布时间】:2016-11-01 21:52:37
【问题描述】:

我正在努力掌握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

要获得机器人的响应,我只需写 Is this bike stolen 123456? 并返回 text here

我想要实现的是只有当我做@bot Is this bike stolen 123456? 时才能得到回应,所以我必须专门询问机器人。

在汇总响应时显示一些输入文本也很棒

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

谢谢

【问题讨论】:

  • 如果您投了反对票,请至少说明原因

标签: ruby slack-api


【解决方案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}\?"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-09
    • 2017-10-12
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多