lib/telegram/bot/routes_helper.rb in telegram-bot-0.12.4 vs lib/telegram/bot/routes_helper.rb in telegram-bot-0.13.0
- old
+ new
@@ -26,42 +26,51 @@
# # Create routes for all Telegram.bots to use same controller:
# telegram_webhooks TelegramController
#
# # Or pass custom bots usin any of supported config options:
- # telegram_webhooks TelegramController,
- # bot,
- # {token: token, username: username},
- # other_bot_token
- #
- # # Use different controllers for each bot:
- # telegram_webhooks bot => TelegramChatController,
- # other_bot => TelegramAuctionController
- #
- # # telegram_webhooks creates named routes. See
- # # RoutesHelper.route_name_for_bot for more info.
- # # You can override this options or specify others:
- # telegram_webhooks TelegramController, as: :my_webhook
- # telegram_webhooks bot => [TelegramChatController, as: :chat_webhook],
- # other_bot => TelegramAuctionController,
- # admin_chat: TelegramAdminChatController
- #
+ # telegram_webhooks TelegramController, [
+ # bot,
+ # {token: token, username: username},
+ # other_bot_token,
+ # ]
def telegram_webhooks(controllers, bots = nil, **options)
+ Bot.deprecation_0_14.deprecation_warning(:telegram_webhooks, <<-TXT.strip_heredoc)
+ It brings unnecessary complexity and encourages writeng less readable code.
+ Please use telegram_webhook method instead.
+ It's signature `telegram_webhook(controller, bot = :default, **options)`.
+ Multiple-bot environments now requires calling this method in a loop
+ or using statement for each bot.
+ TXT
unless controllers.is_a?(Hash)
bots = bots ? Array.wrap(bots) : Telegram.bots.values
controllers = Hash[bots.map { |x| [x, controllers] }]
end
controllers.each do |bot, controller|
- bot = Client.wrap(bot)
controller, bot_options = controller if controller.is_a?(Array)
- params = {
- to: Middleware.new(bot, controller),
- as: RoutesHelper.route_name_for_bot(bot),
- format: false,
- }.merge!(options).merge!(bot_options || {})
- post("telegram/#{RoutesHelper.escape_token bot.token}", params)
- UpdatesPoller.add(bot, controller) if Telegram.bot_poller_mode?
+ telegram_webhook(controller, bot, options.merge(bot_options || {}))
end
+ end
+
+ # 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
+ def telegram_webhook(controller, bot = :default, **options)
+ bot = Client.wrap(bot)
+ params = {
+ to: Middleware.new(bot, controller),
+ as: RoutesHelper.route_name_for_bot(bot),
+ format: false,
+ }.merge!(options)
+ post("telegram/#{RoutesHelper.escape_token bot.token}", params)
+ UpdatesPoller.add(bot, controller) if Telegram.bot_poller_mode?
end
end
end
end