2017-12-27 47 views
1

私は、ユーザーが、私は、ユーザーのメッセージを試してみて、キャプチャするために正規表現文字列を使用して、その後、それを解析してい/newdb nameofdatabaseTelegramボットにパラメータを渡し、regexを使って解析しますか?

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のラッパーを使用して電報ボットにユーザーの入力をキャプチャするについて行くことができますか?

/はここで、正規表現でメタ文字であるためだ

答えて

2

は右正規表現です:

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.*|:あなたが明示的にメッセージの途中で改行追いかけ及びfoは%r表記を使用しない限り\Aを使用しますそれがスラッシュを含んでいるとき、r regexps。 THX @mudasobwa

確認することを正規表現表現here

+1

'%rの| \ A/NEWDBの\ bの* |':使用 '\ A'明示的メッセージと、使用の途中で改行追いかけない限り'スラッシュが含まれている場合のregexpsの%r記法。また、かっこは冗長AFAICTです。 – mudasobwa

関連する問題