ya_telegram_bot 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c607a290b4ddc0b1aa0e6655266736dfc049db55
|
4
|
+
data.tar.gz: d5de93cfa149d2e35f0f46053117335fdc3d6efd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a72d2a026a4bbe3e6d12f4e77db06a7b249df924236c42aed30dbdd60700e86a7ff46a9cff8ae7d69c7c24aff60b8343d044cd25f907f0708b360c84bd2aeda7
|
7
|
+
data.tar.gz: dadfbb256be7c04a62dbb82f61710564b861a7da99ec8d2695bd3f94e29c5666ac7cf67e198e6476ae8677f4d4be5b341d52461b3abc4698cd5b8a6b5d26d40d
|
data/README.md
CHANGED
@@ -2,11 +2,10 @@
|
|
2
2
|
|
3
3
|
**IN DEV**
|
4
4
|
|
5
|
-
## What's new **0.
|
6
|
-
|
7
|
-
* Class `YATelegramBot::TelegramAPI::Message`.
|
8
|
-
* `Base#Update` generates array of `Message`. See Usage.
|
5
|
+
## What's new **0.3.0**
|
9
6
|
|
7
|
+
* Class `YATelegramBot::TelegramAPI::User`.
|
8
|
+
* Class `YATelegramBot::TelegramAPI::Chat`.
|
10
9
|
|
11
10
|
## Usage
|
12
11
|
|
@@ -19,6 +18,8 @@ class Bot
|
|
19
18
|
token YOUR_TOKEN
|
20
19
|
end
|
21
20
|
|
21
|
+
# getting LAST updates as array of YATelegramBot:TelegramAPI::Message
|
22
|
+
# "LAST" means that #updates method every time will return fresh updates (so you will never get same updates inside your process)
|
22
23
|
updates = Bot.updates
|
23
24
|
updates.each do |message|
|
24
25
|
chat_id = message['chat']['id']
|
@@ -30,8 +31,18 @@ updates.each do |message|
|
|
30
31
|
markdown: true
|
31
32
|
end
|
32
33
|
|
34
|
+
# reply to message
|
33
35
|
Bot.updates.each { |message| message.reply text: 'Leave me alone!' }
|
34
36
|
|
37
|
+
# YATelegramBot::TelegramAPI::User
|
38
|
+
user = Bot.updates[0].from
|
39
|
+
user.send_text text: '*hey hey!*',
|
40
|
+
markdown: true
|
41
|
+
|
42
|
+
#YATelegramBot::TelegramAPI::Chat
|
43
|
+
chat = Bot.updates[0].chat
|
44
|
+
chat.send_text text: "Hi, #{chat.type == :private ? 'dude' : 'all'}!"
|
45
|
+
|
35
46
|
```
|
36
47
|
|
37
48
|
## Contributing
|
data/lib/ya_telegram_bot/base.rb
CHANGED
@@ -0,0 +1,42 @@
|
|
1
|
+
module YATelegramBot
|
2
|
+
module TelegramAPI
|
3
|
+
#
|
4
|
+
# represents Telegram Chat
|
5
|
+
#
|
6
|
+
class Chat < Hash
|
7
|
+
FIELDS = [:id, :type, :title, :first_name, :last_name, :username].freeze
|
8
|
+
|
9
|
+
#
|
10
|
+
# @param hash [Hash] hash from json.
|
11
|
+
# @param bot [Base] for using api methods
|
12
|
+
#
|
13
|
+
def initialize(hash, bot = nil)
|
14
|
+
super()
|
15
|
+
@bot = bot
|
16
|
+
FIELDS.each { |f| self[f] = hash[f.to_s] if hash[f.to_s] }
|
17
|
+
|
18
|
+
self[:type] = self[:type].to_sym
|
19
|
+
end
|
20
|
+
|
21
|
+
#
|
22
|
+
# @example chat.type
|
23
|
+
#
|
24
|
+
def method_missing(m, *args)
|
25
|
+
return self[m] if self[m] && args.empty?
|
26
|
+
super
|
27
|
+
end
|
28
|
+
|
29
|
+
#
|
30
|
+
# uses bot to send text to this user.
|
31
|
+
#
|
32
|
+
# @param params [Hash] params for Base#send_text. This method will only set :chat to self[:id]
|
33
|
+
#
|
34
|
+
def send_text(params = {})
|
35
|
+
fail InitWithoutBot unless @bot
|
36
|
+
|
37
|
+
params[:chat] = id
|
38
|
+
@bot.send_text params
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'time'
|
2
|
+
require_relative 'user'
|
3
|
+
require_relative 'chat'
|
2
4
|
|
3
5
|
module YATelegramBot
|
4
6
|
module TelegramAPI
|
@@ -45,7 +47,7 @@ module YATelegramBot
|
|
45
47
|
#
|
46
48
|
# params values:
|
47
49
|
# * :text [String]
|
48
|
-
# * :as_plain_message [Boolean] default: true. If it's
|
50
|
+
# * :as_plain_message [Boolean] default: true. If it's true, method won't set :reply_to parameter
|
49
51
|
#
|
50
52
|
# @example message.reply(text: 'Hi, *friend*!', markdown: true)
|
51
53
|
#
|
@@ -68,11 +70,10 @@ module YATelegramBot
|
|
68
70
|
# @return [Hash]
|
69
71
|
#
|
70
72
|
def hash_for_merging(hash)
|
71
|
-
new_hash = {
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
new_hash[:chat] = hash['chat'] # TODO: class Chat
|
73
|
+
new_hash = { id: hash['message_id'].to_i,
|
74
|
+
date: Time.at(hash['date'].to_i),
|
75
|
+
from: User.new(hash['from'], @bot),
|
76
|
+
chat: Chat.new(hash['chat'], @bot) }
|
76
77
|
|
77
78
|
type = TYPES.find { |t| hash[t.to_s] }
|
78
79
|
new_hash[type] = hash[type.to_s] # TODO: fail if type not found
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module YATelegramBot
|
2
|
+
module TelegramAPI
|
3
|
+
#
|
4
|
+
# represents Telegram User
|
5
|
+
#
|
6
|
+
class User < Hash
|
7
|
+
FIELDS = [:id, :first_name, :last_name, :username].freeze
|
8
|
+
|
9
|
+
#
|
10
|
+
# @param hash [Hash] hash from json.
|
11
|
+
# @param bot [Base] for using api methods
|
12
|
+
#
|
13
|
+
def initialize(hash, bot = nil)
|
14
|
+
super()
|
15
|
+
@bot = bot
|
16
|
+
FIELDS.each { |f| self[f] = hash[f.to_s] if hash[f.to_s] }
|
17
|
+
end
|
18
|
+
|
19
|
+
#
|
20
|
+
# @example user.first_name
|
21
|
+
#
|
22
|
+
def method_missing(m, *args)
|
23
|
+
return self[m] if self[m] && args.empty?
|
24
|
+
super
|
25
|
+
end
|
26
|
+
|
27
|
+
#
|
28
|
+
# uses bot to send text to this user.
|
29
|
+
#
|
30
|
+
# @param params [Hash] params for Base#send_text. This method will only set :chat to self[:id]
|
31
|
+
#
|
32
|
+
def send_text(params = {})
|
33
|
+
fail InitWithoutBot unless @bot
|
34
|
+
|
35
|
+
params[:chat] = id
|
36
|
+
@bot.send_text params
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ya_telegram_bot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitriy Non
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -99,7 +99,9 @@ files:
|
|
99
99
|
- lib/ya_telegram_bot.rb
|
100
100
|
- lib/ya_telegram_bot/base.rb
|
101
101
|
- lib/ya_telegram_bot/exceptions.rb
|
102
|
+
- lib/ya_telegram_bot/telegram_api/chat.rb
|
102
103
|
- lib/ya_telegram_bot/telegram_api/message.rb
|
104
|
+
- lib/ya_telegram_bot/telegram_api/user.rb
|
103
105
|
- lib/ya_telegram_bot/version.rb
|
104
106
|
- ya_telegram_bot.gemspec
|
105
107
|
homepage: https://github.com/Nondv/telegram_bot
|