class Messenger::Bot::Client
Constants
- TIMEOUT_EXCEPTIONS
Attributes
api[R]
logger[RW]
offset[R]
timeout[R]
Public Class Methods
new(token, h = {})
click to toggle source
# File lib/messenger/bot/client.rb, line 14 def initialize(token, h = {}) options = default_options.merge(h) @api = Api.new(token) @offset = options[:offset] @timeout = options[:timeout] @logger = options[:logger] end
run(*args, &block)
click to toggle source
# File lib/messenger/bot/client.rb, line 10 def self.run(*args, &block) new(*args).run(&block) end
Public Instance Methods
fetch_updates() { |message| ... }
click to toggle source
# File lib/messenger/bot/client.rb, line 34 def fetch_updates response = api.getUpdates(offset: offset, timeout: timeout) return unless response['ok'] response['result'].each do |data| update = Types::Update.new(data) @offset = update.update_id.next message = extract_message(update) log_incoming_message(message) yield message end rescue *TIMEOUT_EXCEPTIONS retry end
listen(&block)
click to toggle source
# File lib/messenger/bot/client.rb, line 26 def listen(&block) logger.info('Starting bot') running = true Signal.trap('INT') { running = false } fetch_updates(&block) while running exit end
run() { |self| ... }
click to toggle source
# File lib/messenger/bot/client.rb, line 22 def run yield self end
Private Instance Methods
default_options()
click to toggle source
# File lib/messenger/bot/client.rb, line 51 def default_options { offset: 0, timeout: 20, logger: NullLogger.new } end
extract_message(update)
click to toggle source
# File lib/messenger/bot/client.rb, line 55 def extract_message(update) update.inline_query || update.chosen_inline_result || update.message end
log_incoming_message(message)
click to toggle source
# File lib/messenger/bot/client.rb, line 59 def log_incoming_message(message) logger.info( format('Incoming message: text="%s" uid=%i', message, message.from.id) ) end