telegram-bot-ruby 0.2.6 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +40 -0
- data/lib/telegram/bot.rb +1 -0
- data/lib/telegram/bot/botan.rb +21 -0
- data/lib/telegram/bot/botan/api.rb +23 -0
- data/lib/telegram/bot/client.rb +23 -4
- data/lib/telegram/bot/null_logger.rb +11 -0
- data/lib/telegram/bot/version.rb +1 -1
- metadata +5 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: ef037a3e5735ef90b436b1ef4929273ae596cf14
         | 
| 4 | 
            +
              data.tar.gz: 5f1c00b66ae94a56bcf6b55de44030ea5abf34e9
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 4f6242809b6c31ab7ff030ebb2d76a10165416d996a523a409f737511d33c42de0c597d9a57725b20816dd31f973ba3a5f85c02971c668814ec4ce085fa064c7
         | 
| 7 | 
            +
              data.tar.gz: cb4aa63e3eb65406959405f914dc09912449273adc9fd6131d06340e705e3d01d548f88247a8346efe3c94812dc745f281793aac165c28d73932e0ddcba9b2c6
         | 
    
        data/README.md
    CHANGED
    
    | @@ -85,6 +85,46 @@ bot.listen do |message| | |
| 85 85 | 
             
            end
         | 
| 86 86 | 
             
            ```
         | 
| 87 87 |  | 
| 88 | 
            +
            ## Logging
         | 
| 89 | 
            +
             | 
| 90 | 
            +
            By default, bot doesn't log anything (uses `NullLoger`). You can change this behavior and provide your own logger class. See example below:
         | 
| 91 | 
            +
             | 
| 92 | 
            +
            ```ruby
         | 
| 93 | 
            +
            Telegram::Bot::Client.run(token, logger: Logger.new($stdout)) do |bot|
         | 
| 94 | 
            +
              bot.logger.info('Bot has been started')
         | 
| 95 | 
            +
              bot.listen do |message|
         | 
| 96 | 
            +
                # ...
         | 
| 97 | 
            +
              end
         | 
| 98 | 
            +
            end
         | 
| 99 | 
            +
            ```
         | 
| 100 | 
            +
             | 
| 101 | 
            +
            ## Botan.io support
         | 
| 102 | 
            +
             | 
| 103 | 
            +
            Gem provides support of [Botan.io](http://botan.io/) analytics out of box. All you need is to obtain a token (follow the instructions from http://botan.io/). To track events you're interested in just call `#track` method. See example below:
         | 
| 104 | 
            +
             | 
| 105 | 
            +
            ```ruby
         | 
| 106 | 
            +
            require 'telegram/bot'
         | 
| 107 | 
            +
            require 'telegram/bot/botan' # Botan.io extension isn't loaded by default, so make sure you required it.
         | 
| 108 | 
            +
             | 
| 109 | 
            +
            token = 'YOUR_TELEGRAM_BOT_API_TOKEN'
         | 
| 110 | 
            +
             | 
| 111 | 
            +
            Telegram::Bot::Client.run(token) do |bot|
         | 
| 112 | 
            +
              bot.enable_botan!('YOUR_BOTAN_TOKEN')
         | 
| 113 | 
            +
              bot.listen do |message|
         | 
| 114 | 
            +
                case message.text
         | 
| 115 | 
            +
                when '/start'
         | 
| 116 | 
            +
                  bot.track('Started', message.from.id, type_of_chat: message.chat.class.name)
         | 
| 117 | 
            +
                  # ...
         | 
| 118 | 
            +
                end
         | 
| 119 | 
            +
              end
         | 
| 120 | 
            +
            end
         | 
| 121 | 
            +
            ```
         | 
| 122 | 
            +
             | 
| 123 | 
            +
            `#track` method accepts 3 arguments:
         | 
| 124 | 
            +
            - name of event (required)
         | 
| 125 | 
            +
            - Telegram's user id (required)
         | 
| 126 | 
            +
            - hash of additional properties (optional)
         | 
| 127 | 
            +
             | 
| 88 128 | 
             
            ## Contributing
         | 
| 89 129 |  | 
| 90 130 | 
             
            1. Fork it
         | 
    
        data/lib/telegram/bot.rb
    CHANGED
    
    
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            require 'telegram/bot/botan/api'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Telegram
         | 
| 4 | 
            +
              module Bot
         | 
| 5 | 
            +
                module Botan
         | 
| 6 | 
            +
                  attr_reader :botan
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def enable_botan!(token)
         | 
| 9 | 
            +
                    @botan ||= Botan::Api.new(token)
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  def track(*args)
         | 
| 13 | 
            +
                    botan.track(*args) if defined?(botan)
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            if defined?(Telegram::Bot::Client)
         | 
| 20 | 
            +
              Telegram::Bot::Client.send(:include, Telegram::Bot::Botan)
         | 
| 21 | 
            +
            end
         | 
| @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            module Telegram
         | 
| 2 | 
            +
              module Bot
         | 
| 3 | 
            +
                module Botan
         | 
| 4 | 
            +
                  class Api
         | 
| 5 | 
            +
                    include HTTParty
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                    attr_reader :token
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                    base_uri 'https://api.botan.io'
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    def initialize(token)
         | 
| 12 | 
            +
                      @token = token
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    def track(event, uid, properties = {})
         | 
| 16 | 
            +
                      self.class.post('/track',
         | 
| 17 | 
            +
                                      query: { token: token, name: event, uid: uid },
         | 
| 18 | 
            +
                                      body: properties.to_json)
         | 
| 19 | 
            +
                    end
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
            end
         | 
    
        data/lib/telegram/bot/client.rb
    CHANGED
    
    | @@ -1,16 +1,18 @@ | |
| 1 1 | 
             
            module Telegram
         | 
| 2 2 | 
             
              module Bot
         | 
| 3 3 | 
             
                class Client
         | 
| 4 | 
            -
                  attr_reader :api, :offset, :timeout
         | 
| 4 | 
            +
                  attr_reader :api, :offset, :timeout, :logger
         | 
| 5 5 |  | 
| 6 6 | 
             
                  def self.run(*args, &block)
         | 
| 7 7 | 
             
                    new(*args).run(&block)
         | 
| 8 8 | 
             
                  end
         | 
| 9 9 |  | 
| 10 | 
            -
                  def initialize(token,  | 
| 10 | 
            +
                  def initialize(token, h = {})
         | 
| 11 | 
            +
                    options = default_options.merge(h)
         | 
| 11 12 | 
             
                    @api = Api.new(token)
         | 
| 12 | 
            -
                    @offset =  | 
| 13 | 
            -
                    @timeout = timeout
         | 
| 13 | 
            +
                    @offset = options[:offset]
         | 
| 14 | 
            +
                    @timeout = options[:timeout]
         | 
| 15 | 
            +
                    @logger = options[:logger]
         | 
| 14 16 | 
             
                  end
         | 
| 15 17 |  | 
| 16 18 | 
             
                  def run
         | 
| @@ -25,12 +27,29 @@ module Telegram | |
| 25 27 | 
             
                      response['result'].each do |data|
         | 
| 26 28 | 
             
                        update = Types::Update.new(data)
         | 
| 27 29 | 
             
                        @offset = update.update_id.next
         | 
| 30 | 
            +
                        log_incoming_message(update.message)
         | 
| 28 31 | 
             
                        yield update.message
         | 
| 29 32 | 
             
                      end
         | 
| 30 33 | 
             
                    end
         | 
| 31 34 | 
             
                  rescue Net::ReadTimeout
         | 
| 32 35 | 
             
                    retry
         | 
| 33 36 | 
             
                  end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  private
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  def default_options
         | 
| 41 | 
            +
                    { offset: 0, timeout: 20, logger: NullLogger.new }
         | 
| 42 | 
            +
                  end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                  def log_incoming_message(message)
         | 
| 45 | 
            +
                    logger.info(
         | 
| 46 | 
            +
                      format(
         | 
| 47 | 
            +
                        'Incoming message: text="%s" uid=%i',
         | 
| 48 | 
            +
                        message.text,
         | 
| 49 | 
            +
                        message.from.id
         | 
| 50 | 
            +
                      )
         | 
| 51 | 
            +
                    )
         | 
| 52 | 
            +
                  end
         | 
| 34 53 | 
             
                end
         | 
| 35 54 | 
             
              end
         | 
| 36 55 | 
             
            end
         | 
    
        data/lib/telegram/bot/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: telegram-bot-ruby
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.3.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Alexander Tipugin
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-08-21 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: httmultiparty
         | 
| @@ -126,10 +126,13 @@ files: | |
| 126 126 | 
             
            - examples/bot.rb
         | 
| 127 127 | 
             
            - lib/telegram/bot.rb
         | 
| 128 128 | 
             
            - lib/telegram/bot/api.rb
         | 
| 129 | 
            +
            - lib/telegram/bot/botan.rb
         | 
| 130 | 
            +
            - lib/telegram/bot/botan/api.rb
         | 
| 129 131 | 
             
            - lib/telegram/bot/client.rb
         | 
| 130 132 | 
             
            - lib/telegram/bot/exceptions.rb
         | 
| 131 133 | 
             
            - lib/telegram/bot/exceptions/base.rb
         | 
| 132 134 | 
             
            - lib/telegram/bot/exceptions/response_error.rb
         | 
| 135 | 
            +
            - lib/telegram/bot/null_logger.rb
         | 
| 133 136 | 
             
            - lib/telegram/bot/types.rb
         | 
| 134 137 | 
             
            - lib/telegram/bot/types/audio.rb
         | 
| 135 138 | 
             
            - lib/telegram/bot/types/base.rb
         |