Sha256: d44f2fc20aa0e2a58993d84484f61a25d77be985ac48aa28baff12f936f9a43e

Contents?: true

Size: 946 Bytes

Versions: 2

Compression:

Stored size: 946 Bytes

Contents

class TelegramBot
  class PollListener
    def initialize(client, interval)
      @client    = client
      @interval  = interval
      @offset_id = nil
      @terminate_signal = false
    end

    def message_received(msg)
      @client.append_history(msg)
      @client.handle(msg)
    end

    def stop!
      @terminate_signal = true
    end

    def start!
      @terminate_signal = false

      loop do
        get_updates.each do |update|
          message_received(update.message)
          @offset_id = update.id + 1

          if @terminate_signal
            save_offset
            break
          end
        end

        break if @terminate_signal

        sleep @interval
      end
    end

    def get_updates
      updates = @client.get_updates(offset: @offset_id,
                                    limit: 50)
      updates
    end

    def save_offset
      @client.get_updates(limit: 0, offset: @offset_id)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
telegram_bot_ruby-0.1.7 lib/telegram_bot/poll_listener.rb
telegram_bot_ruby-0.1.6 lib/telegram_bot/poll_listener.rb