Sha256: 8ed96531583ce8b3e799f4c1af1bbe29fdfcec8736b6726a6ea317cf10f9212a

Contents?: true

Size: 1.25 KB

Versions: 14

Compression:

Stored size: 1.25 KB

Contents

module Telegram
  module Bot
    class UpdatesController
      # Use separate actions for different callback queries.
      # It doesn't require session support. Simply add `%{context}:` prefix to data.
      module CallbackQueryContext
        protected

        # Uses #context_from_callback_query as context name.
        # If context is present checks if `%context%_callback_query` is valid
        # action method and returns it if so. Context is stripped from data
        # in this case. Otherwise returns `super`.
        #
        # It wont raise ActionNotFound as MessageContext does,
        # because `data` param is controlled by client.
        def action_for_callback_query
          context, new_data = context_from_callback_query
          if context
            action_name = "#{context}_callback_query"
            if action_method?(action_name)
              action_options = {type: :callback_query_context, context: context}
              return [[action_name, action_options], [new_data]]
            end
          end
          super
        end

        def context_from_callback_query
          data = payload['data']
          return unless data
          parts = data.split(':', 2)
          parts if parts.size > 1
        end
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
telegram-bot-0.16.1 lib/telegram/bot/updates_controller/callback_query_context.rb
telegram-bot-0.16.0 lib/telegram/bot/updates_controller/callback_query_context.rb
telegram-bot-0.15.7 lib/telegram/bot/updates_controller/callback_query_context.rb
telegram-bot-0.15.6 lib/telegram/bot/updates_controller/callback_query_context.rb
telegram-bot-0.15.4 lib/telegram/bot/updates_controller/callback_query_context.rb
telegram-bot-0.15.3 lib/telegram/bot/updates_controller/callback_query_context.rb
telegram-bot-0.15.2 lib/telegram/bot/updates_controller/callback_query_context.rb
telegram-bot-0.15.1 lib/telegram/bot/updates_controller/callback_query_context.rb
telegram-bot-0.15.0 lib/telegram/bot/updates_controller/callback_query_context.rb
telegram-bot-0.14.4 lib/telegram/bot/updates_controller/callback_query_context.rb
telegram-bot-0.14.3 lib/telegram/bot/updates_controller/callback_query_context.rb
telegram-bot-0.14.2 lib/telegram/bot/updates_controller/callback_query_context.rb
telegram-bot-0.14.1 lib/telegram/bot/updates_controller/callback_query_context.rb
telegram-bot-0.14.0 lib/telegram/bot/updates_controller/callback_query_context.rb