module Telegram::Bot::RoutesHelper
Public Class Methods
route_name_for_bot(bot)
click to toggle source
Returns route name for given bot. Result depends on `Telegram.bots`. When there is single bot it returns 'telegram_webhook'. When there are it will use bot's key in the `Telegram.bots` as prefix (eg. `chat_telegram_webhook`).
# File lib/telegram/bot/routes_helper.rb, line 15 def route_name_for_bot(bot) bots = Telegram.bots if bots.size != 1 name = bots.invert[bot] name && "#{name}_telegram_webhook" end || 'telegram_webhook' end
token_hash(token)
click to toggle source
# File lib/telegram/bot/routes_helper.rb, line 23 def token_hash(token) Base64.urlsafe_encode64(OpenSSL::Digest::SHA1.digest(token), padding: false) end
Public Instance Methods
telegram_webhook(controller, bot = :default, path: nil, **options)
click to toggle source
Define route which processes requests using given controller and bot.
telegram_webhook TelegramController, bot telegram_webhook TelegramController # same as: telegram_webhook TelegramController, :default # pass additional options telegram_webhook TelegramController, :default, as: :custom_route_name # Default path is generated using hashed bot token. Override it using: telegram_webhook TelegramController, :default, path: 'top/secret'
# File lib/telegram/bot/routes_helper.rb, line 41 def telegram_webhook(controller, bot = :default, path: nil, **options) bot = Client.wrap(bot) params = { to: Middleware.new(bot, controller), as: RoutesHelper.route_name_for_bot(bot), format: false, }.merge!(options) post(path || "telegram/#{bot.token && RoutesHelper.token_hash(bot.token)}", params) UpdatesPoller.add(bot, controller) if Telegram.bot_poller_mode? end