From c06ba2af5c9d4fc3da58b8a432ff350079a3938e Mon Sep 17 00:00:00 2001 From: Max Melentiev Date: Mon, 29 Feb 2016 14:06:11 +0600 Subject: [PATCH] Fixed set_webhook rake task --- lib/tasks/telegram-bot.rake | 5 +++-- lib/telegram/bot/routes_helper.rb | 8 +++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/tasks/telegram-bot.rake b/lib/tasks/telegram-bot.rake index e8cf4d4..465825c 100644 --- a/lib/tasks/telegram-bot.rake +++ b/lib/tasks/telegram-bot.rake @@ -12,9 +12,10 @@ namespace :telegram do routes = Rails.application.routes.url_helpers cert_file = ENV['CERT'] cert = File.open(cert_file) if cert_file - Telegram.bots.each_value do |bot| - route_name = Telegram::RoutesHelper.route_name_for_bot(bot) + Telegram.bots.each do |key, bot| + route_name = Telegram::Bot::RoutesHelper.route_name_for_bot(bot) url = routes.send("#{route_name}_url") + puts "Setting webhook for #{key}..." bot.set_webhook(url: url, certificate: cert) end end diff --git a/lib/telegram/bot/routes_helper.rb b/lib/telegram/bot/routes_helper.rb index 8f8d493..497a96c 100644 --- a/lib/telegram/bot/routes_helper.rb +++ b/lib/telegram/bot/routes_helper.rb @@ -16,6 +16,12 @@ module Telegram name && "#{name}_telegram_webhook" end || 'telegram_webhook' end + + # Replaces colon with underscore so rails don't treat it as + # route parameter. + def escape_token(token) + token.tr(':', '_') + end end # # Create routes for all Telegram.bots to use same controller: @@ -50,7 +56,7 @@ module Telegram as: RoutesHelper.route_name_for_bot(bot), format: false, }.merge!(options).merge!(bot_options || {}) - post("telegram/#{bot.token}", params) + post("telegram/#{RoutesHelper.escape_token bot.token}", params) UpdatesPoller.add(bot, controller) if Telegram.bot_poller_mode? end end