module Telegram::Bot::ConfigMethods

Attributes

bot_poller_mode[W]

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

bots_config[W]

Overwrite config.

Public Instance Methods

bot() click to toggle source

Default bot.

# File lib/telegram/bot/config_methods.rb, line 35
def bot
  @bot ||= bots.fetch(:default) do
    raise 'Default bot is not configured.' \
      ' Add :default to bots_config' \
      ' or use telegram.bot/telegram.bots.default section in secrets.yml.'
  end
end
bot_poller_mode?() click to toggle source

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.

It's enabled by default in Rails dev environment and `rake telegram:bot:poller` task. Use `BOT_POLLER_MODE=true` envvar to set it manually.

# File lib/telegram/bot/config_methods.rb, line 20
def bot_poller_mode?
  return @bot_poller_mode if defined?(@bot_poller_mode)
  @bot_poller_mode = ENV.fetch('BOT_POLLER_MODE') do
    Rails.env.development? if defined?(Rails.env)
  end
end
bots() click to toggle source

Hash of bots made with bots_config.

# File lib/telegram/bot/config_methods.rb, line 28
def bots
  @bots ||= bots_config.each_with_object({}) do |(id, config), h|
    h[id] = Client.wrap(config, id: id)
  end
end
bots_config() click to toggle source

Returns config for .bots method. By default uses `telegram` section from `secrets.yml` merging `telegram` at `:default` key.

Can be overwritten with .bots_config=

# File lib/telegram/bot/config_methods.rb, line 47
def bots_config
  @bots_config ||=
    if defined?(Rails.application)
      app = Rails.application
      store = app.credentials[:telegram] if app.respond_to?(:credentials)
      store ||= app.secrets[:telegram] if app.respond_to?(:secrets)
      store ||= {}
      store = store.with_indifferent_access
      store.fetch(:bots, {}).symbolize_keys.tap do |config|
        default = store[:bot]
        config[:default] = default if default
      end
    else
      {}
    end
end
reset_bots() click to toggle source

Resets all cached bots and their configs.

# File lib/telegram/bot/config_methods.rb, line 65
def reset_bots
  @bots = nil
  @bot = nil
  @bots_config = nil
end