将参数传递给电报机器人并使用正则表达式解析?
问题描述:
我有这应该创建一个新的数据库,当用户输入/newdb nameofdatabase
将参数传递给电报机器人并使用正则表达式解析?
Telegram::Bot::Client.run(token) do |bot|
bot.listen do |message|
case message.text
when '/newdb.*/'
bot.api.send_message(chat_id: message.chat.id, text: "created!, #{message.from.first_name}")
end
end
end
我使用正则表达式的字符串,试图捕捉用户的消息,事后分析它的电报机器人。 不幸的是,机器人不会给定的命令做出响应(在这种情况下,不打印"created!"
行。”
我该如何去使用Ruby包装器,捕捉用户输入到电报机器人?
答
这是因为/
是在正则表达式元字符,这里是一个正确的正则表达式:
Telegram::Bot::Client.run(token) do |bot|
bot.listen do |message|
case message.text
when /^\/newdb\s(.*)/
database = $~[1] # get the database name. $~[N] regexp matches.
bot.api.send_message(chat_id: message.chat.id, text: "created!, #{message.from.first_name}")
end
end
end
%r|\A/newdb\b.*|
:使用\A
除非你明确地追在消息的中间回车后以及使用时%r
符号FO当它包含斜杠时,r会返回正则表达式。 THX @mudasobwa
检查正则表达式表达here
'%R | \ A/NEWDB \ B * |':使用'\ A'除非你回车后明确地追在消息和使用中间'当它包含斜线时,正则表达式使用%r'表示法。另外,括号是多余的,AFAICT。 – mudasobwa