我正试图掌握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?
时才回复,所以我必须特别询问机器人。
在将响应放在一起时显示一些打字文本也很棒
有没有人有过这方面的经验或有一些例子可以寻找灵感
由于
答案 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}\?"