Sha256: b261306aa80ccb69716aacea72c00b8ef2cc86d37814ff423bb09205f274e481

Contents?: true

Size: 1.55 KB

Versions: 3

Compression:

Stored size: 1.55 KB

Contents

require 'active_support/core_ext/hash/keys'
require 'active_support/core_ext/hash/transform_values'

module Telegram
  module Bot
    module ConfigMethods
      # Overwrite config.
      attr_writer :bots_config

      # Keep this setting here, so we can avoid loading Bot::UpdatesPoller
      # when polling is disabled.
      attr_writer :bot_poller_mode

      # It just tells routes helpers whether to add routed bots to
      # Bot::UpdatesPoller, so their config will be available by bot key in
      # Bot::UpdatesPoller.start.
      def bot_poller_mode?
        return @bot_poller_mode if defined?(@bot_poller_mode)
        Rails.env.development? if defined?(Rails)
      end

      # Hash of bots made with bots_config.
      def bots
        @bots ||= bots_config.transform_values(&Client.method(:wrap))
      end

      # Default bot.
      def bot
        @bot ||= bots[:default]
      end

      # Returns config for .bots method. By default uses `telegram['bots']` section
      # from `secrets.yml` merging `telegram['bot']` at `:default` key.
      #
      # Can be overwritten with .bots_config=
      def bots_config
        return @bots_config if @bots_config
        telegram_config = Rails.application.secrets[:telegram]
        (telegram_config['bots'] || {}).symbolize_keys.tap do |config|
          default = telegram_config['bot']
          config[:default] = default if default
        end
      end

      # Resets all cached bots and their configs.
      def reset_bots
        @bots = nil
        @bot = nil
        @bots_config = nil
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
telegram-bot-0.7.2 lib/telegram/bot/config_methods.rb
telegram-bot-0.6.0 lib/telegram/bot/config_methods.rb
telegram-bot-0.5.0 lib/telegram/bot/config_methods.rb