Sha256: d9d170993accd0b4a9343940103b410cf869bff8fd526cde621c3ae0e714a216
Contents?: true
Size: 1.32 KB
Versions: 2
Compression:
Stored size: 1.32 KB
Contents
module Telegram module Bot class Client TIMEOUT_EXCEPTIONS = [Timeout::Error] TIMEOUT_EXCEPTIONS << Net::ReadTimeout if Net.const_defined?(:ReadTimeout) attr_reader :api, :offset, :timeout, :logger def self.run(*args, &block) new(*args).run(&block) end def initialize(token, h = {}) options = default_options.merge(h) @api = Api.new(token) @offset = options[:offset] @timeout = options[:timeout] @logger = options[:logger] end def run yield self end def listen loop do response = api.getUpdates(offset: offset, timeout: timeout) next unless response['ok'] response['result'].each do |data| update = Types::Update.new(data) @offset = update.update_id.next log_incoming_message(update.message) yield update.message end end rescue *TIMEOUT_EXCEPTIONS retry end private def default_options { offset: 0, timeout: 20, logger: NullLogger.new } end def log_incoming_message(message) logger.info( format( 'Incoming message: text="%s" uid=%i', message.text, message.from.id ) ) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
telegram-bot-ruby-0.3.2 | lib/telegram/bot/client.rb |
telegram-bot-ruby-0.3.1 | lib/telegram/bot/client.rb |