Module: Telegram::Bot::RoutesHelper
- Defined in:
- lib/telegram/bot/routes_helper.rb
Class Method Summary collapse
-
.escape_token(token) ⇒ Object
Replaces colon with underscore so rails don’t treat it as route parameter.
-
.route_name_for_bot(bot) ⇒ Object
Returns route name for given bot.
Instance Method Summary collapse
-
#telegram_webhook(controller, bot = :default, **options) ⇒ Object
Define route which processes requests using given controller and bot.
Class Method Details
.escape_token(token) ⇒ Object
Replaces colon with underscore so rails don’t treat it as route parameter.
22 23 24 |
# File 'lib/telegram/bot/routes_helper.rb', line 22 def escape_token(token) token && token.tr(':', '_') end |
.route_name_for_bot(bot) ⇒ Object
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`).
12 13 14 15 16 17 18 |
# File 'lib/telegram/bot/routes_helper.rb', line 12 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 |
Instance Method Details
#telegram_webhook(controller, bot = :default, **options) ⇒ Object
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
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/telegram/bot/routes_helper.rb', line 37 def telegram_webhook(controller, bot = :default, **) bot = Client.wrap(bot) params = { to: Middleware.new(bot, controller), as: RoutesHelper.route_name_for_bot(bot), format: false, }.merge!() post("telegram/#{RoutesHelper.escape_token bot.token}", params) UpdatesPoller.add(bot, controller) if Telegram.bot_poller_mode? end |