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
|