telegrammer 0.0.3 → 0.1.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/CHANGELOG.md +8 -0
- data/README.md +5 -83
- data/lib/telegrammer.rb +10 -0
- data/lib/telegrammer/api_response.rb +10 -6
- data/lib/telegrammer/bot.rb +242 -8
- data/lib/telegrammer/data_types/audio.rb +9 -0
- data/lib/telegrammer/data_types/channel.rb +3 -3
- data/lib/telegrammer/data_types/contact.rb +8 -0
- data/lib/telegrammer/data_types/document.rb +9 -0
- data/lib/telegrammer/data_types/force_reply.rb +6 -0
- data/lib/telegrammer/data_types/group_chat.rb +6 -0
- data/lib/telegrammer/data_types/location.rb +7 -1
- data/lib/telegrammer/data_types/message.rb +27 -2
- data/lib/telegrammer/data_types/photo_size.rb +8 -0
- data/lib/telegrammer/data_types/reply_keyboard_hide.rb +6 -0
- data/lib/telegrammer/data_types/reply_keyboard_markup.rb +10 -0
- data/lib/telegrammer/data_types/sticker.rb +9 -0
- data/lib/telegrammer/data_types/update.rb +6 -0
- data/lib/telegrammer/data_types/user.rb +8 -0
- data/lib/telegrammer/data_types/user_profile_photos.rb +7 -3
- data/lib/telegrammer/data_types/video.rb +12 -0
- data/lib/telegrammer/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 01192345cd31357f67504923fbd3cb1933e99b4e
|
4
|
+
data.tar.gz: a06447a0d0bde6d7d0f9cf03a09e0b51faba93a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8d582a1eb2c96034917e98133a7b8eae71ef67dc6e63582fdaefbd5500cf9b1637fd097760f5b2907b0b0a566f11484decad6f9e801d7710dd5929ac607445a
|
7
|
+
data.tar.gz: d3e478e64f1bca7af8eae29785abcb9fe04df2dd8f482e6f1e03e11a20b0b3c74663d63e87f378939a033cc0c3bc50a0155219e1fc1ff3b21d618c67ae53b475
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
[](http://badge.fury.io/rb/telegrammer)
|
2
2
|
[](https://codeclimate.com/github/mayoral/telegrammer)
|
3
|
+
[](http://inch-ci.org/github/mayoral/telegrammer)
|
3
4
|
|
4
5
|
# Telegrammer
|
5
6
|
|
@@ -22,15 +23,13 @@ And then execute:
|
|
22
23
|
First you'll need to register your bot and get an API token. To do that you have to talk with the [@BotFather](https://telegram.me/botfather).
|
23
24
|
Learn more about this [here](https://core.telegram.org/bots).
|
24
25
|
|
25
|
-
|
26
|
+
After getting your token, you can do things like this:
|
26
27
|
|
27
28
|
```ruby
|
28
29
|
require 'telegrammer'
|
29
30
|
|
30
31
|
bot = Telegrammer::Bot.new('[YOUR TELEGRAM TOKEN]')
|
31
32
|
|
32
|
-
# GET UPDATES
|
33
|
-
# https://core.telegram.org/bots/api/#getupdates
|
34
33
|
bot.get_updates do |message|
|
35
34
|
puts "In chat #{message.chat.id}, @#{message.from.username} said: #{message.text}"
|
36
35
|
bot.send_message(chat_id: message.chat.id, text: "You said: #{message.text}")
|
@@ -38,90 +37,13 @@ bot.get_updates do |message|
|
|
38
37
|
# Here you can also process message text to detect user commands
|
39
38
|
# To learn more about commands, see https://core.telegram.org/bots#commands
|
40
39
|
end
|
41
|
-
|
42
|
-
# SEND MESSAGES
|
43
|
-
# https://core.telegram.org/bots/api/#sendmessage
|
44
|
-
bot.send_message(chat_id: 123456789, text: "This is a text")
|
45
|
-
|
46
|
-
# https://core.telegram.org/bots/api/#replykeyboardmarkup
|
47
|
-
reply_markup = Telegrammer::DataTypes::ReplyKeyboardMarkup.new(
|
48
|
-
keyboard: [
|
49
|
-
["Option 1.1", "Option 1.2"],
|
50
|
-
["Option 2"],
|
51
|
-
["Option 3.1", "Option 3.2", "Option 3.3"]
|
52
|
-
],
|
53
|
-
resize_keyboard: false
|
54
|
-
)
|
55
|
-
|
56
|
-
# This message will activate a custom keyboard...
|
57
|
-
bot.send_message(
|
58
|
-
chat_id: 1460713,
|
59
|
-
text: "Select an option",
|
60
|
-
reply_markup: reply_markup
|
61
|
-
)
|
62
|
-
|
63
|
-
# https://core.telegram.org/bots/api/#replykeyboardhide
|
64
|
-
reply_markup = Telegrammer::DataTypes::ReplyKeyboardHide.new(
|
65
|
-
hide_keyboard: true
|
66
|
-
)
|
67
|
-
|
68
|
-
# And this message will disable it
|
69
|
-
bot.send_message(
|
70
|
-
chat_id: 1460713,
|
71
|
-
text: "Thanks",
|
72
|
-
reply_markup: reply_markup
|
73
|
-
)
|
74
|
-
|
75
|
-
# FORWARDING A MESSAGE
|
76
|
-
# https://core.telegram.org/bots/api/#forwardmessage
|
77
|
-
bot.forward_message(chat_id: 123456789, from_chat_id: 987654321, message_id: 111222333)
|
78
|
-
|
79
|
-
# SENDING PHOTOS
|
80
|
-
# https://core.telegram.org/bots/api/#sendphoto
|
81
|
-
image_file = File.open("foo.jpg")
|
82
|
-
bot.send_document(chat_id: 123456789, document: image_file)
|
83
|
-
|
84
|
-
# SENDING AUDIO FILES
|
85
|
-
# https://core.telegram.org/bots/api/#sendaudio
|
86
|
-
audio_file = File.open("foo.ogg")
|
87
|
-
bot.send_audio(chat_id: 123456789, audio: audio_file)
|
88
|
-
|
89
|
-
# SENDING DOCUMENTS
|
90
|
-
# https://core.telegram.org/bots/api/#senddocument
|
91
|
-
my_secret_file = File.open("secret.txt")
|
92
|
-
bot.send_document(chat_id: 123456789, document: my_secret_file)
|
93
|
-
|
94
|
-
# SENDING STICKERS
|
95
|
-
# https://core.telegram.org/bots/api/#sendsticker
|
96
|
-
sticker_image_file = File.open("sticker.jpg")
|
97
|
-
bot.send_sticker(chat_id: 123456789, sticker: sticker_image_file)
|
98
|
-
|
99
|
-
# SENDING VIDEOS
|
100
|
-
# https://core.telegram.org/bots/api/#sendvideo
|
101
|
-
video_file = File.open("foo.mp4")
|
102
|
-
bot.send_audio(chat_id: 123456789, video: video_file)
|
103
|
-
|
104
|
-
# SENDING DOCUMENTS
|
105
|
-
# https://core.telegram.org/bots/api/#senddocument
|
106
|
-
file = File.open("foo.ogg")
|
107
|
-
bot.send_audio(chat_id: 123456789, audio: file)
|
108
|
-
|
109
|
-
# SENDING LOCATIONS
|
110
|
-
# https://core.telegram.org/bots/api/#sendlocation
|
111
|
-
bot.send_location(chat_id: 123456789, latitude: 38.775539, longitude: -4.829988)
|
112
|
-
|
113
|
-
# SENDING CHAT ACTIONS
|
114
|
-
# https://core.telegram.org/bots/api/#sendchataction
|
115
|
-
bot.send_chat_action(chat_id: 123456789, action: "typing")
|
116
|
-
|
117
|
-
# GETTING USER PROFILE PHOTOS
|
118
|
-
# https://core.telegram.org/bots/api/#getuserprofilephotos
|
119
|
-
bot.get_user_profile_photos(user_id: 123456789)
|
120
40
|
```
|
121
41
|
|
42
|
+
This gem currently supports all operations exposed by the Telegram's Bot API. All the classes and methods are documented with examples, so please [check the documentation](http://www.rubydoc.info/gems/telegrammer/Telegrammer/Bot). Also you can [check the the wiki](https://github.com/mayoral/telegrammer/wiki), where you'll find more info about topics like [setting webhooks for your bot](https://github.com/mayoral/telegrammer/wiki/Using-webhooks).
|
43
|
+
|
122
44
|
## Contributing
|
123
45
|
|
124
|
-
1. Fork it
|
46
|
+
1. Fork it: https://github.com/mayoral/telegrammer/fork
|
125
47
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
126
48
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
127
49
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/lib/telegrammer.rb
CHANGED
@@ -28,22 +28,32 @@ require "telegrammer/api_response"
|
|
28
28
|
|
29
29
|
module Telegrammer
|
30
30
|
module Errors
|
31
|
+
# Error returned when a required param is missing
|
31
32
|
class MissingParamsError < StandardError
|
32
33
|
def initialize(parameter, action)
|
33
34
|
super("Missing parameter #{parameter} for action #{action}")
|
34
35
|
end
|
35
36
|
end
|
36
37
|
|
38
|
+
# Error returned when a param type is invalid
|
37
39
|
class InvalidParamTypeError < StandardError
|
38
40
|
def initialize(parameter, current_type, allowed_types)
|
39
41
|
super("Invalid parameter type: #{parameter}: #{current_type}. Allowed types: #{allowed_types.each {|type| type.class.to_s }.join(",")}.")
|
40
42
|
end
|
41
43
|
end
|
42
44
|
|
45
|
+
# Error returned when something goes bad with your request to the Telegram API
|
43
46
|
class BadRequestError < StandardError
|
44
47
|
def initialize(error_code, message)
|
45
48
|
super("Bad request. Error code: #{error_code} - Message: #{message}")
|
46
49
|
end
|
47
50
|
end
|
51
|
+
|
52
|
+
# Error returned when Telegram API Service is unavailable
|
53
|
+
class ServiceUnavailableError < StandardError
|
54
|
+
def initialize(status_code)
|
55
|
+
super("Telegram API Service unavailable (HTTP error code #{status_code})")
|
56
|
+
end
|
57
|
+
end
|
48
58
|
end
|
49
59
|
end
|
@@ -5,15 +5,19 @@ module Telegrammer
|
|
5
5
|
attr_reader :success
|
6
6
|
|
7
7
|
def initialize(response)
|
8
|
-
|
9
|
-
|
8
|
+
if response.code < 500
|
9
|
+
@body = response.response_body
|
10
10
|
|
11
|
-
|
11
|
+
data = MultiJson.load(@body)
|
12
|
+
@success = data["ok"]
|
12
13
|
|
13
|
-
|
14
|
-
|
14
|
+
if @success
|
15
|
+
@result = data["result"]
|
16
|
+
else
|
17
|
+
raise Telegrammer::Errors::BadRequestError.new(data["error_code"], data["description"])
|
18
|
+
end
|
15
19
|
else
|
16
|
-
raise Telegrammer::Errors::
|
20
|
+
raise Telegrammer::Errors::ServiceUnavailableError.new(response.code)
|
17
21
|
end
|
18
22
|
end
|
19
23
|
|
data/lib/telegrammer/bot.rb
CHANGED
@@ -1,9 +1,19 @@
|
|
1
1
|
module Telegrammer
|
2
|
+
# Wrapper for the Telegram's Bots API
|
2
3
|
class Bot
|
3
4
|
API_ENDPOINT = 'https://api.telegram.org'
|
4
5
|
|
5
6
|
attr_reader :me
|
6
7
|
|
8
|
+
# Returns a new instance of Telegrammer::Bot
|
9
|
+
#
|
10
|
+
# @param [String] api_token API Token
|
11
|
+
#
|
12
|
+
# @example
|
13
|
+
# bot = Telegrammer::Bot.new('[YOUR TELEGRAM TOKEN]')
|
14
|
+
#
|
15
|
+
# @raise [Telegrammer::Errors::BadRequestError] if something goes wrong obtaining data about your bot
|
16
|
+
# @raise [Telegrammer::Errors::ServiceUnavailableError] if Telegram servers are down
|
7
17
|
def initialize(api_token)
|
8
18
|
@api_token = api_token
|
9
19
|
@offset = 0
|
@@ -12,6 +22,21 @@ module Telegrammer
|
|
12
22
|
@me = get_me
|
13
23
|
end
|
14
24
|
|
25
|
+
# Get incoming updates using long polling
|
26
|
+
#
|
27
|
+
# @example
|
28
|
+
# bot = Telegrammer::Bot.new('[YOUR TELEGRAM TOKEN]')
|
29
|
+
#
|
30
|
+
# bot.get_updates do |message|
|
31
|
+
# puts "In chat #{message.chat.id}, @#{message.from.username} said: #{message.text}"
|
32
|
+
# bot.send_message(chat_id: message.chat.id, text: "You said: #{message.text}")
|
33
|
+
#
|
34
|
+
# # Here you can also process message text to detect user commands
|
35
|
+
# # To learn more about commands, see https://core.telegram.org/bots#commands
|
36
|
+
# end
|
37
|
+
#
|
38
|
+
# @raise [Telegrammer::Errors::BadRequestError] if something goes wrong in the Telegram API servers with the params received by the operation
|
39
|
+
# @raise [Telegrammer::Errors::ServiceUnavailableError] if Telegram servers are down
|
15
40
|
def get_updates(&block)
|
16
41
|
loop do
|
17
42
|
response = api_request("getUpdates", {offset: @offset, timeout: @timeout}, nil)
|
@@ -24,19 +49,65 @@ module Telegrammer
|
|
24
49
|
end
|
25
50
|
end
|
26
51
|
|
52
|
+
# Set a webhook where Telegram will send the messages received by your bot.
|
53
|
+
#
|
54
|
+
# @param [String] url
|
55
|
+
#
|
56
|
+
# @example
|
57
|
+
# bot = Telegrammer::Bot.new('[YOUR TELEGRAM TOKEN]')
|
58
|
+
#
|
59
|
+
# # Set up a webhook
|
60
|
+
# bot.set_webhook("http://www.example.com/my/action")
|
61
|
+
#
|
62
|
+
# # Delete a webhook
|
63
|
+
# bot.set_webhook("")
|
64
|
+
#
|
65
|
+
# @raise [Telegrammer::Errors::BadRequestError] if something goes wrong in the Telegram API servers with the params received by the operation
|
66
|
+
# @raise [Telegrammer::Errors::ServiceUnavailableError] if Telegram servers are down
|
67
|
+
#
|
68
|
+
# @see https://github.com/mayoral/telegrammer/wiki/Using-webhooks
|
69
|
+
# @return [Telegrammer::ApiResponse] Response from the API.
|
27
70
|
def set_webhook(url)
|
28
|
-
|
29
|
-
|
30
|
-
Telegrammer::DataTypes::Update.new(response.result)
|
71
|
+
api_request("setWebhook", {url: url}, nil)
|
31
72
|
end
|
32
73
|
|
33
|
-
|
74
|
+
# Returns basic information about the bot in form of a User object. Used for testing your bot's auth token.
|
75
|
+
#
|
76
|
+
# @example
|
77
|
+
# bot = Telegrammer::Bot.new('[YOUR TELEGRAM TOKEN]')
|
78
|
+
# bot_user = bot.get_me
|
79
|
+
#
|
80
|
+
# @raise [Telegrammer::Errors::BadRequestError] if something goes wrong in the Telegram API servers with the params received by the operation
|
81
|
+
# @raise [Telegrammer::Errors::ServiceUnavailableError] if Telegram servers are down
|
82
|
+
#
|
83
|
+
# @return [Telegrammer::DataTypes::User] User object with info about the bot
|
34
84
|
def get_me
|
35
85
|
response = api_request("getMe", nil, nil)
|
36
86
|
|
37
87
|
Telegrammer::DataTypes::User.new(response.result)
|
38
88
|
end
|
39
89
|
|
90
|
+
# Send text messages to a user or group chat.
|
91
|
+
#
|
92
|
+
# @param [Hash] params hash of paramers to send to the sendMessage API operation.
|
93
|
+
# @option params [Integer] :chat_id Required. Unique identifier for the message recipient — User or GroupChat id.
|
94
|
+
# @option params [String] :text Required. Text of the message to be sent
|
95
|
+
# @option params [Boolean] :disable_web_page_preview Optional. Disables link previews for links in this message
|
96
|
+
# @option params [Integer] :reply_to_message_id Optional. If the message is a reply, ID of the original message
|
97
|
+
# @option params [Telegrammer::DataTypes::ReplyKeyboardMarkup,Telegrammer::DataTypes::ReplyKeyboardHide,Telegrammer::DataTypes::ForceReply] :reply_markup Optional. Additional interface options. A JSON-serialized object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user.
|
98
|
+
#
|
99
|
+
# @example
|
100
|
+
# bot = Telegrammer::Bot.new('[YOUR TELEGRAM TOKEN]')
|
101
|
+
#
|
102
|
+
# bot.send_message(
|
103
|
+
# chat_id: 123456789,
|
104
|
+
# text: "Hello World!"
|
105
|
+
# )
|
106
|
+
#
|
107
|
+
# @raise [Telegrammer::Errors::BadRequestError] if something goes wrong in the Telegram API servers with the params received by the operation
|
108
|
+
# @raise [Telegrammer::Errors::ServiceUnavailableError] if Telegram servers are down
|
109
|
+
#
|
110
|
+
# @return [Telegrammer::DataTypes::Message] Message object sent to the user or group chat
|
40
111
|
def send_message(params)
|
41
112
|
params_validation = {
|
42
113
|
chat_id: { required: true, class: [Fixnum] },
|
@@ -55,6 +126,26 @@ module Telegrammer
|
|
55
126
|
Telegrammer::DataTypes::Message.new(response.result)
|
56
127
|
end
|
57
128
|
|
129
|
+
# Forward message to a user or group chat.
|
130
|
+
#
|
131
|
+
# @param [Hash] params hash of paramers to send to the forwardMessage API operation.
|
132
|
+
# @option params [Integer] :chat_id Required. Unique identifier for the message recipient — User or GroupChat id.
|
133
|
+
# @option params [Integer] :from_chat_id Required. Unique identifier for the chat where the original message was sent.
|
134
|
+
# @option params [Integer] :message_id Required. Message id to be forwarded.
|
135
|
+
#
|
136
|
+
# @example
|
137
|
+
# bot = Telegrammer::Bot.new('[YOUR TELEGRAM TOKEN]')
|
138
|
+
#
|
139
|
+
# bot.forward_message(
|
140
|
+
# chat_id: 123456789,
|
141
|
+
# from_chat_id: 987654321
|
142
|
+
# message_id: 111222333
|
143
|
+
# )
|
144
|
+
#
|
145
|
+
# @raise [Telegrammer::Errors::BadRequestError] if something goes wrong in the Telegram API servers with the params received by the operation
|
146
|
+
# @raise [Telegrammer::Errors::ServiceUnavailableError] if Telegram servers are down
|
147
|
+
#
|
148
|
+
# @return [Telegrammer::DataTypes::Message] Message object sent to the user or group chat
|
58
149
|
def forward_message(params)
|
59
150
|
params_validation = {
|
60
151
|
chat_id: { required: true, class: [Fixnum] },
|
@@ -67,6 +158,25 @@ module Telegrammer
|
|
67
158
|
Telegrammer::DataTypes::Message.new(response.result)
|
68
159
|
end
|
69
160
|
|
161
|
+
# Sends a photo to a user or group chat.
|
162
|
+
#
|
163
|
+
# @param [Hash] params hash of paramers to send to the sendPhoto API operation.
|
164
|
+
# @option params [Integer] :chat_id Required. Unique identifier for the message recipient — User or GroupChat id.
|
165
|
+
# @option params [File,String] :photo Required.
|
166
|
+
# @option params [String] :caption Optional.
|
167
|
+
# @option params [Integer] :reply_to_message_id Optional. If the message is a reply, ID of the original message
|
168
|
+
# @option params [Telegrammer::DataTypes::ReplyKeyboardMarkup,Telegrammer::DataTypes::ReplyKeyboardHide,Telegrammer::DataTypes::ForceReply] :reply_markup Optional. Additional interface options. A JSON-serialized object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user.
|
169
|
+
#
|
170
|
+
# @example
|
171
|
+
# bot = Telegrammer::Bot.new('[YOUR TELEGRAM TOKEN]')
|
172
|
+
# image_file = File.open("foo.jpg")
|
173
|
+
# bot.send_photo(chat_id: 123456789, photo: image_file)
|
174
|
+
#
|
175
|
+
# @raise [Telegrammer::Errors::BadRequestError] if something goes wrong in the Telegram API servers with the params received by the operation
|
176
|
+
# @raise [Telegrammer::Errors::ServiceUnavailableError] if Telegram servers are down
|
177
|
+
#
|
178
|
+
# @see #send_document
|
179
|
+
# @return [Telegrammer::DataTypes::Message] Message object sent to the user or group chat
|
70
180
|
def send_photo(params)
|
71
181
|
params_validation = {
|
72
182
|
chat_id: { required: true, class: [Fixnum] },
|
@@ -85,6 +195,26 @@ module Telegrammer
|
|
85
195
|
Telegrammer::DataTypes::Message.new(response.result)
|
86
196
|
end
|
87
197
|
|
198
|
+
# Sends audio file to a user or group chat.
|
199
|
+
#
|
200
|
+
# At this moment, Telegram only allows Ogg files encoded with the OPUS codec. If you need to send another file format, you must use #send_document.
|
201
|
+
#
|
202
|
+
# @param [Hash] params hash of paramers to send to the sendAudio API operation.
|
203
|
+
# @option params [Integer] :chat_id Required. Unique identifier for the message recipient — User or GroupChat id.
|
204
|
+
# @option params [File,String] audio Required. Audio file to send. You can either pass a file_id as String to resend an audio that is already on the Telegram servers, or upload a new audio file using multipart/form-data
|
205
|
+
# @option params [Integer] :reply_to_message_id Optional. If the message is a reply, ID of the original message
|
206
|
+
# @option params [Telegrammer::DataTypes::ReplyKeyboardMarkup,Telegrammer::DataTypes::ReplyKeyboardHide,Telegrammer::DataTypes::ForceReply] :reply_markup Optional. Additional interface options. A JSON-serialized object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user.
|
207
|
+
#
|
208
|
+
# @example
|
209
|
+
# bot = Telegrammer::Bot.new('[YOUR TELEGRAM TOKEN]')
|
210
|
+
# audio_file = File.open("foo.ogg")
|
211
|
+
# bot.send_audio(chat_id: 123456789, audio: audio_file)
|
212
|
+
#
|
213
|
+
# @raise [Telegrammer::Errors::BadRequestError] if something goes wrong in the Telegram API servers with the params received by the operation
|
214
|
+
# @raise [Telegrammer::Errors::ServiceUnavailableError] if Telegram servers are down
|
215
|
+
#
|
216
|
+
# @see #send_document
|
217
|
+
# @return [Telegrammer::DataTypes::Message] Message object sent to the user or group chat
|
88
218
|
def send_audio(params)
|
89
219
|
params_validation = {
|
90
220
|
chat_id: { required: true, class: [Fixnum] },
|
@@ -102,10 +232,28 @@ module Telegrammer
|
|
102
232
|
Telegrammer::DataTypes::Message.new(response.result)
|
103
233
|
end
|
104
234
|
|
235
|
+
# Sends a document to a user or group chat.
|
236
|
+
#
|
237
|
+
# @param [Hash] params hash of paramers to send to the sendDocument API operation.
|
238
|
+
# @option params [Integer] :chat_id Required. Unique identifier for the message recipient — User or GroupChat id.
|
239
|
+
# @option params [File,String] :document Required. File to send. You can either pass a file_id as String to resend a file that is already on the Telegram servers, or upload a new file using multipart/form-data.
|
240
|
+
# @option params [Integer] :reply_to_message_id Optional. If the message is a reply, ID of the original message
|
241
|
+
# @option params [Telegrammer::DataTypes::ReplyKeyboardMarkup,Telegrammer::DataTypes::ReplyKeyboardHide,Telegrammer::DataTypes::ForceReply] :reply_markup Optional. Additional interface options. A JSON-serialized object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user.
|
242
|
+
#
|
243
|
+
# @example
|
244
|
+
# bot = Telegrammer::Bot.new('[YOUR TELEGRAM TOKEN]')
|
245
|
+
# my_secret_file = File.open("secrets.doc")
|
246
|
+
# bot.send_document(chat_id: 123456789, document: my_secret_file)
|
247
|
+
#
|
248
|
+
# @raise [Telegrammer::Errors::BadRequestError] if something goes wrong in the Telegram API servers with the params received by the operation
|
249
|
+
# @raise [Telegrammer::Errors::ServiceUnavailableError] if Telegram servers are down
|
250
|
+
#
|
251
|
+
# @return [Telegrammer::DataTypes::Message] Message object sent to the user or group chat
|
105
252
|
def send_document(params)
|
106
253
|
params_validation = {
|
107
254
|
chat_id: { required: true, class: [Fixnum] },
|
108
255
|
document: { required: false, class: [File, String] },
|
256
|
+
reply_to_message_id: { required: false, class: [String] },
|
109
257
|
reply_markup: { required: false, class: [
|
110
258
|
Telegrammer::DataTypes::ReplyKeyboardMarkup,
|
111
259
|
Telegrammer::DataTypes::ReplyKeyboardHide,
|
@@ -118,10 +266,29 @@ module Telegrammer
|
|
118
266
|
Telegrammer::DataTypes::Message.new(response.result)
|
119
267
|
end
|
120
268
|
|
269
|
+
# Send WebP images as stickers.
|
270
|
+
#
|
271
|
+
# @param [Hash] params hash of paramers to send to the sendSticker API operation.
|
272
|
+
# @option params [Integer] :chat_id Required. Unique identifier for the message recipient — User or GroupChat id.
|
273
|
+
# @option params [File,String] :sticker Required. Sticker to send. You can either pass a file_id as String to resend a file that is already on the Telegram servers, or upload a new file using multipart/form-data.
|
274
|
+
# @option params [Integer] :reply_to_message_id Optional. If the message is a reply, ID of the original message
|
275
|
+
# @option params [Telegrammer::DataTypes::ReplyKeyboardMarkup,Telegrammer::DataTypes::ReplyKeyboardHide,Telegrammer::DataTypes::ForceReply] :reply_markup Optional. Additional interface options. A JSON-serialized object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user.
|
276
|
+
#
|
277
|
+
# @example
|
278
|
+
# bot = Telegrammer::Bot.new('[YOUR TELEGRAM TOKEN]')
|
279
|
+
# sticker_file = File.open("my-sticker.webp")
|
280
|
+
# bot.send_sticker(chat_id: 123456789, sticker: sticker_file)
|
281
|
+
#
|
282
|
+
# @raise [Telegrammer::Errors::BadRequestError] if something goes wrong in the Telegram API servers with the params received by the operation
|
283
|
+
# @raise [Telegrammer::Errors::ServiceUnavailableError] if Telegram servers are down
|
284
|
+
#
|
285
|
+
# @see #send_document
|
286
|
+
# @return [Telegrammer::DataTypes::Message] Message object sent to the user or group chat
|
121
287
|
def send_sticker(params)
|
122
288
|
params_validation = {
|
123
289
|
chat_id: { required: true, class: [Fixnum] },
|
124
290
|
sticker: { required: true, class: [File, String] },
|
291
|
+
reply_to_message_id: { required: false, class: [String] },
|
125
292
|
reply_markup: { required: false, class: [
|
126
293
|
Telegrammer::DataTypes::ReplyKeyboardMarkup,
|
127
294
|
Telegrammer::DataTypes::ReplyKeyboardHide,
|
@@ -134,10 +301,31 @@ module Telegrammer
|
|
134
301
|
Telegrammer::DataTypes::Message.new(response.result)
|
135
302
|
end
|
136
303
|
|
304
|
+
# Sends a video file to a user or group chat.
|
305
|
+
#
|
306
|
+
# At this moment, Telegram only support mp4 videos. If you need to send other formats you must use #send_document.
|
307
|
+
#
|
308
|
+
# @param [Hash] params hash of paramers to send to the sendVideo API operation.
|
309
|
+
# @option params [Integer] :chat_id Required. Unique identifier for the message recipient — User or GroupChat id.
|
310
|
+
# @option params [File,String] :video Video to send. You can either pass a file_id as String to resend a video that is already on the Telegram servers, or upload a new video file.
|
311
|
+
# @option params [Integer] :reply_to_message_id Optional. If the message is a reply, ID of the original message
|
312
|
+
# @option params [Telegrammer::DataTypes::ReplyKeyboardMarkup,Telegrammer::DataTypes::ReplyKeyboardHide,Telegrammer::DataTypes::ForceReply] :reply_markup Optional. Additional interface options. A JSON-serialized object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user.
|
313
|
+
#
|
314
|
+
# @example
|
315
|
+
# bot = Telegrammer::Bot.new('[YOUR TELEGRAM TOKEN]')
|
316
|
+
# my_video = File.open("foo.mp4")
|
317
|
+
# bot.send_video(chat_id: 123456789, video: my_video)
|
318
|
+
#
|
319
|
+
# @raise [Telegrammer::Errors::BadRequestError] if something goes wrong in the Telegram API servers with the params received by the operation
|
320
|
+
# @raise [Telegrammer::Errors::ServiceUnavailableError] if Telegram servers are down
|
321
|
+
#
|
322
|
+
# @see #send_document
|
323
|
+
# @return [Telegrammer::DataTypes::Message] Message object sent to the user or group chat
|
137
324
|
def send_video(params)
|
138
325
|
params_validation = {
|
139
326
|
chat_id: { required: true, class: [Fixnum] },
|
140
327
|
video: { required: true, class: [File, String] },
|
328
|
+
reply_to_message_id: { required: false, class: [String] },
|
141
329
|
reply_markup: { required: false, class: [
|
142
330
|
Telegrammer::DataTypes::ReplyKeyboardMarkup,
|
143
331
|
Telegrammer::DataTypes::ReplyKeyboardHide,
|
@@ -150,11 +338,29 @@ module Telegrammer
|
|
150
338
|
Telegrammer::DataTypes::Message.new(response.result)
|
151
339
|
end
|
152
340
|
|
341
|
+
# Sends point on the map to a user or group chat.
|
342
|
+
#
|
343
|
+
# @param [Hash] params hash of paramers to send to the sendAudio API operation.
|
344
|
+
# @option params [Integer] :chat_id Required. Unique identifier for the message recipient — User or GroupChat id.
|
345
|
+
# @option params [Float] :latitude Required. Latitude of location.
|
346
|
+
# @option params [Float] :longitude Required. Longitude of location.
|
347
|
+
# @option params [Integer] :reply_to_message_id Optional. If the message is a reply, ID of the original message.
|
348
|
+
# @option params [Telegrammer::DataTypes::ReplyKeyboardMarkup,Telegrammer::DataTypes::ReplyKeyboardHide,Telegrammer::DataTypes::ForceReply] :reply_markup Optional. Additional interface options. A JSON-serialized object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user.
|
349
|
+
#
|
350
|
+
# @example
|
351
|
+
# bot = Telegrammer::Bot.new('[YOUR TELEGRAM TOKEN]')
|
352
|
+
# bot.send_location(chat_id: 123456789, latitude: 38.775539, longitude: -4.829988)
|
353
|
+
#
|
354
|
+
# @raise [Telegrammer::Errors::BadRequestError] if something goes wrong in the Telegram API servers with the params received by the operation
|
355
|
+
# @raise [Telegrammer::Errors::ServiceUnavailableError] if Telegram servers are down
|
356
|
+
#
|
357
|
+
# @return [Telegrammer::DataTypes::Message] Message object sent to the user or group chat
|
153
358
|
def send_location(params)
|
154
359
|
params_validation = {
|
155
360
|
chat_id: { required: true, class: [Fixnum] },
|
156
361
|
latitude: { required: true, class: [Float] },
|
157
362
|
longitude: { required: true, class: [Float] },
|
363
|
+
reply_to_message_id: { required: false, class: [String] },
|
158
364
|
reply_markup: { required: false, class: [
|
159
365
|
Telegrammer::DataTypes::ReplyKeyboardMarkup,
|
160
366
|
Telegrammer::DataTypes::ReplyKeyboardHide,
|
@@ -167,18 +373,46 @@ module Telegrammer
|
|
167
373
|
Telegrammer::DataTypes::Message.new(response.result)
|
168
374
|
end
|
169
375
|
|
170
|
-
#
|
376
|
+
# Sends a status action to a user or group chat.
|
377
|
+
#
|
378
|
+
# Used when you need to tell the user that something is happening on the bot's side. The status is set for 5 seconds or less (when a message arrives from your bot, Telegram clients clear its typing status).
|
379
|
+
#
|
380
|
+
# @param [Hash] params hash of paramers to send to the sendChatAction API operation.
|
381
|
+
# @option params [Integer] :chat_id Required. Unique identifier for the message recipient — User or GroupChat id.
|
382
|
+
# @option params [String] :action Required. Type of action to broadcast. Choose one, depending on what the user is about to receive: "typing" for text messages, "upload_photo" for photos, "record_video" or "upload_video" for videos, "record_audio" or "upload_audio" for audio files, "upload_document" for general files, "find_location" for location data.
|
383
|
+
#
|
384
|
+
# @example
|
385
|
+
# bot = Telegrammer::Bot.new('[YOUR TELEGRAM TOKEN]')
|
386
|
+
# bot.send_chat_action(chat_id: 123456789, action: "typing")
|
387
|
+
#
|
388
|
+
# @raise [Telegrammer::Errors::BadRequestError]
|
389
|
+
# @raise [Telegrammer::Errors::ServiceUnavailableError] if Telegram servers are down
|
390
|
+
#
|
391
|
+
# @return [Telegrammer::ApiResponse] Response from the API.
|
171
392
|
def send_chat_action(params)
|
172
393
|
params_validation = {
|
173
394
|
chat_id: { required: true, class: [Fixnum] },
|
174
395
|
action: { required: true, class: [String] }
|
175
396
|
}
|
176
397
|
|
177
|
-
|
178
|
-
|
179
|
-
response.result
|
398
|
+
api_request("sendChatAction", params, params_validation)
|
180
399
|
end
|
181
400
|
|
401
|
+
# Get a list of profile pictures for a user.
|
402
|
+
#
|
403
|
+
# @param [Hash] params hash of paramers to send to the sendChatAction API operation.
|
404
|
+
# @option params [Integer] :chat_id Required. Unique identifier of the target user.
|
405
|
+
# @option params [Integer] :offset Optional. Sequential number of the first photo to be returned. By default, all photos are returned.
|
406
|
+
# @option params [Integer] :limit Optional. Limits the number of photos to be retrieved. Values between 1—100 are accepted. Defaults to 100.
|
407
|
+
#
|
408
|
+
# @example
|
409
|
+
# bot = Telegrammer::Bot.new('[YOUR TELEGRAM TOKEN]')
|
410
|
+
# bot.get_user_profile_photos(user_id: 123456789)
|
411
|
+
#
|
412
|
+
# @raise [Telegrammer::Errors::BadRequestError]
|
413
|
+
# @raise [Telegrammer::Errors::ServiceUnavailableError] if Telegram servers are down
|
414
|
+
#
|
415
|
+
# @return [Telegrammer::DataTypes::UserProfilePhotos] Message object sent to the user or group chat
|
182
416
|
def get_user_profile_photos(params)
|
183
417
|
params_validation = {
|
184
418
|
user_id: { required: true, class: [Fixnum] },
|
@@ -1,6 +1,15 @@
|
|
1
1
|
module Telegrammer
|
2
2
|
module DataTypes
|
3
|
+
# Telegram Audio data type
|
4
|
+
#
|
5
|
+
# @attr [String] file_id Unique identifier for this file
|
6
|
+
# @attr [Integer] duration Duration of the audio in seconds as defined by sender
|
7
|
+
# @attr [String] mime_type MIME type of the file as defined by sender
|
8
|
+
# @attr [Integer] file_size File size
|
9
|
+
#
|
10
|
+
# See more at https://core.telegram.org/bots/api#audio
|
3
11
|
class Audio < Telegrammer::DataTypes::Base
|
12
|
+
# Unique identifier
|
4
13
|
attribute :file_id, String
|
5
14
|
attribute :duration, Integer
|
6
15
|
attribute :mime_type, String
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module Telegrammer
|
2
2
|
module DataTypes
|
3
|
-
class
|
4
|
-
|
5
|
-
|
3
|
+
# Custom attribute class to handle chat attribute in Telegrammer::DataTypes::Message
|
4
|
+
class Channel < Virtus::Attribute
|
5
|
+
# Transforms a channel into a User object or GroupChat object
|
6
6
|
def coerce(value)
|
7
7
|
value.respond_to?(:first_name) ? User.new(value) : GroupChat.new(value)
|
8
8
|
end
|
@@ -1,5 +1,13 @@
|
|
1
1
|
module Telegrammer
|
2
2
|
module DataTypes
|
3
|
+
# Telegram Contact data type
|
4
|
+
#
|
5
|
+
# @attr [String] phone_number Contact's phone number
|
6
|
+
# @attr [String] first_name Contact's first name
|
7
|
+
# @attr [String] last_name Optional. Contact's last name
|
8
|
+
# @attr [String] user_id Optional. Contact's user identifier in Telegram
|
9
|
+
#
|
10
|
+
# See more at https://core.telegram.org/bots/api#contact
|
3
11
|
class Contact < Telegrammer::DataTypes::Base
|
4
12
|
attribute :phone_number, String
|
5
13
|
attribute :first_name, String
|
@@ -1,5 +1,14 @@
|
|
1
1
|
module Telegrammer
|
2
2
|
module DataTypes
|
3
|
+
# Telegram Document data type
|
4
|
+
#
|
5
|
+
# @attr [String] file_id Unique file identifier
|
6
|
+
# @attr [Telegrammer::DataTypes::PhotoSize] thumb Document thumbnail as defined by sender
|
7
|
+
# @attr [String] file_name Optional. Original filename as defined by sender
|
8
|
+
# @attr [String] mime_type Optional. MIME type of the file as defined by sender
|
9
|
+
# @attr [String] file_size Optional. File size
|
10
|
+
#
|
11
|
+
# See more at https://core.telegram.org/bots/api#document
|
3
12
|
class Document < Telegrammer::DataTypes::Base
|
4
13
|
attribute :file_id, String
|
5
14
|
attribute :thumb, PhotoSize
|
@@ -1,5 +1,11 @@
|
|
1
1
|
module Telegrammer
|
2
2
|
module DataTypes
|
3
|
+
# Telegram ForceReply data type
|
4
|
+
#
|
5
|
+
# @attr [Boolean] force_reply Shows reply interface to the user, as if they manually selected the bot‘s message and tapped ’Reply'
|
6
|
+
# @attr [Boolean] selective Optional. Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.
|
7
|
+
#
|
8
|
+
# See more at https://core.telegram.org/bots/api#forcereply
|
3
9
|
class ForceReply < Telegrammer::DataTypes::Base
|
4
10
|
attribute :force_reply, Boolean, default: true
|
5
11
|
attribute :selective, Boolean, default: false
|
@@ -1,5 +1,11 @@
|
|
1
1
|
module Telegrammer
|
2
2
|
module DataTypes
|
3
|
+
# Telegram GroupChat data type
|
4
|
+
#
|
5
|
+
# @attr [Integer] id Unique identifier for this group chat
|
6
|
+
# @attr [String] title Group name
|
7
|
+
#
|
8
|
+
# See more at https://core.telegram.org/bots/api#groupchat
|
3
9
|
class GroupChat < Telegrammer::DataTypes::Base
|
4
10
|
attribute :id, Integer
|
5
11
|
attribute :title, String
|
@@ -1,8 +1,14 @@
|
|
1
1
|
module Telegrammer
|
2
2
|
module DataTypes
|
3
|
+
# Telegram Location data type
|
4
|
+
#
|
5
|
+
# @attr [Float] latitude Latitude as defined by sender
|
6
|
+
# @attr [Float] longitude Longitude as defined by sender
|
7
|
+
#
|
8
|
+
# See more at https://core.telegram.org/bots/api#location
|
3
9
|
class Location < Telegrammer::DataTypes::Base
|
4
|
-
attribute :longitude, Float
|
5
10
|
attribute :latitude, Float
|
11
|
+
attribute :longitude, Float
|
6
12
|
end
|
7
13
|
end
|
8
14
|
end
|
@@ -1,12 +1,37 @@
|
|
1
1
|
module Telegrammer
|
2
2
|
module DataTypes
|
3
|
+
# Telegram Message data type
|
4
|
+
#
|
5
|
+
# @attr [Integer] message_id Unique message identifier
|
6
|
+
# @attr [Telegrammer::DataTypes::User] from Sender
|
7
|
+
# @attr [DateTime] date Date the message was sent
|
8
|
+
# @attr [Telegrammer::DataTypes::Channel] chat Conversation the message belongs to — user in case of a private message, GroupChat in case of a group
|
9
|
+
# @attr [Telegrammer::DataTypes::User] forward_from Optional. For forwarded messages, sender of the original message
|
10
|
+
# @attr [DateTime] forward_date Optional. For forwarded messages, date the original message was sent
|
11
|
+
# @attr [Telegrammer::DataTypes::Message] reply_to_message Optional. For replies, the original message. Note that the Message object in this field will not contain further reply_to_message fields even if it itself is a reply.
|
12
|
+
# @attr [String] text Optional. For text messages, the actual UTF-8 text of the message
|
13
|
+
# @attr [Telegrammer::DataTypes::Audio] audio Optional. Message is an audio file, information about the file
|
14
|
+
# @attr [Telegrammer::DataTypes::Document] document Optional. Message is a general file, information about the file
|
15
|
+
# @attr [Telegrammer::DataTypes::PhotoSize] photo Optional. Message is a photo, available sizes of the photo
|
16
|
+
# @attr [Telegrammer::DataTypes::Sticker] sticker Optional. Message is a sticker, information about the sticker
|
17
|
+
# @attr [Telegrammer::DataTypes::Video] video Optional. Message is a video, information about the video
|
18
|
+
# @attr [Telegrammer::DataTypes::Contact] contact Optional. Message is a shared contact, information about the contact
|
19
|
+
# @attr [Telegrammer::DataTypes::Location] location Optional. Message is a shared location, information about the location
|
20
|
+
# @attr [Telegrammer::DataTypes::User] new_chat_participant Optional. A new member was added to the group, information about them (this member may be bot itself)
|
21
|
+
# @attr [Telegrammer::DataTypes::User] left_chat_participant Optional. A member was removed from the group, information about them (this member may be bot itself)
|
22
|
+
# @attr [String] new_chat_title Optional. A group title was changed to this value
|
23
|
+
# @attr [Telegrammer::DataTypes::PhotoSize] new_chat_photo Optional. A group photo was change to this value
|
24
|
+
# @attr [Boolean] delete_chat_photo Optional. Informs that the group photo was deleted
|
25
|
+
# @attr [Boolean] group_chat_created Optional. Informs that the group has been created
|
26
|
+
#
|
27
|
+
# See more at https://core.telegram.org/bots/api#message
|
3
28
|
class Message < Telegrammer::DataTypes::Base
|
4
29
|
attribute :message_id, Integer
|
5
30
|
attribute :from, User
|
6
31
|
attribute :date, DateTime
|
7
32
|
attribute :chat, Channel
|
8
33
|
attribute :forward_from, User
|
9
|
-
attribute :forward_date,
|
34
|
+
attribute :forward_date, DateTime
|
10
35
|
attribute :reply_to_message, Message
|
11
36
|
attribute :text, String
|
12
37
|
attribute :audio, Audio
|
@@ -19,7 +44,7 @@ module Telegrammer
|
|
19
44
|
attribute :new_chat_participant, User
|
20
45
|
attribute :left_chat_participant, User
|
21
46
|
attribute :new_chat_title, String
|
22
|
-
attribute :new_chat_photo,
|
47
|
+
attribute :new_chat_photo, Array[PhotoSize]
|
23
48
|
attribute :delete_chat_photo, Boolean
|
24
49
|
attribute :group_chat_created, Boolean
|
25
50
|
end
|
@@ -1,5 +1,13 @@
|
|
1
1
|
module Telegrammer
|
2
2
|
module DataTypes
|
3
|
+
# Telegram PhotoSize data type
|
4
|
+
#
|
5
|
+
# @attr [String] file_id Unique identifier for this file
|
6
|
+
# @attr [Integer] width Photo width
|
7
|
+
# @attr [Integer] height Photo height
|
8
|
+
# @attr [Integer] file_size Optional. File size
|
9
|
+
#
|
10
|
+
# See more at https://core.telegram.org/bots/api#photosize
|
3
11
|
class PhotoSize < Telegrammer::DataTypes::Base
|
4
12
|
attribute :file_id, String
|
5
13
|
attribute :width, Integer
|
@@ -1,5 +1,11 @@
|
|
1
1
|
module Telegrammer
|
2
2
|
module DataTypes
|
3
|
+
# Telegram ReplyKeyboardHide data type
|
4
|
+
#
|
5
|
+
# @attr [Boolean] hide_keyboard Requests clients to hide the custom keyboard
|
6
|
+
# @attr [Boolean] selective Optional. Use this parameter if you want to hide keyboard for specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.
|
7
|
+
#
|
8
|
+
# See more at https://core.telegram.org/bots/api#replykeyboardhide
|
3
9
|
class ReplyKeyboardHide < Telegrammer::DataTypes::Base
|
4
10
|
attribute :hide_keyboard, Boolean, default: true
|
5
11
|
attribute :selective, Boolean, default: false
|
@@ -1,5 +1,15 @@
|
|
1
1
|
module Telegrammer
|
2
2
|
module DataTypes
|
3
|
+
# Telegram ReplyKeyboardMarkup data type.
|
4
|
+
#
|
5
|
+
# This object represents a custom keyboard with reply options (see Introduction to bots for details and examples).
|
6
|
+
#
|
7
|
+
# @attr [Array] keyboard Array of button rows, each represented by an Array of Strings
|
8
|
+
# @attr [Boolean] resize_keyboard Optional. Requests clients to resize the keyboard vertically for optimal fit. Defaults to false.
|
9
|
+
# @attr [Boolean] one_time_keyboard Optional. Requests clients to hide the keyboard as soon as it's been used. Defaults to false.
|
10
|
+
# @attr [Boolean] selective Optional. Use this parameter if you want to hide keyboard for specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.
|
11
|
+
#
|
12
|
+
# See more at https://core.telegram.org/bots/api#replykeyboardmarkup
|
3
13
|
class ReplyKeyboardMarkup < Telegrammer::DataTypes::Base
|
4
14
|
attribute :keyboard, Array[Array[String]]
|
5
15
|
attribute :resize_keyboard, Boolean, default: false
|
@@ -1,5 +1,14 @@
|
|
1
1
|
module Telegrammer
|
2
2
|
module DataTypes
|
3
|
+
# Telegram Sticker data type.
|
4
|
+
#
|
5
|
+
# @attr [String] file_id Unique identifier for this file
|
6
|
+
# @attr [Integer] width Sticker width
|
7
|
+
# @attr [Integer] height Sticker height
|
8
|
+
# @attr [Telegrammer::DataTypes::PhotoSize] thumb Sticker thumbnail in .webp or .jpg format
|
9
|
+
# @attr [Integer] file_id Optional. File size
|
10
|
+
#
|
11
|
+
# See more at https://core.telegram.org/bots/api#sticker
|
3
12
|
class Sticker < Telegrammer::DataTypes::Base
|
4
13
|
attribute :file_id, String
|
5
14
|
attribute :width, Integer
|
@@ -1,5 +1,11 @@
|
|
1
1
|
module Telegrammer
|
2
2
|
module DataTypes
|
3
|
+
# Telegram Update data type.
|
4
|
+
#
|
5
|
+
# @attr [Integer] update_id The update‘s unique identifier. Update identifiers start from a certain positive number and increase sequentially.
|
6
|
+
# @attr [Telegrammer::DataTypes::Message] message Optional. New incoming message of any kind - text, photo, sticker, etc.
|
7
|
+
#
|
8
|
+
# See more at https://core.telegram.org/bots/api#update
|
3
9
|
class Update < Telegrammer::DataTypes::Base
|
4
10
|
attribute :update_id, Integer
|
5
11
|
attribute :message, Message
|
@@ -1,5 +1,13 @@
|
|
1
1
|
module Telegrammer
|
2
2
|
module DataTypes
|
3
|
+
# Telegram User data type.
|
4
|
+
#
|
5
|
+
# @attr [Integer] id Unique identifier for this user or bot
|
6
|
+
# @attr [String] first_name User‘s or bot’s first name
|
7
|
+
# @attr [String] last_name Optional. User‘s or bot’s last name
|
8
|
+
# @attr [String] username Optional. User‘s or bot’s username
|
9
|
+
#
|
10
|
+
# See more at https://core.telegram.org/bots/api#user
|
3
11
|
class User < Telegrammer::DataTypes::Base
|
4
12
|
attribute :id, Integer
|
5
13
|
attribute :first_name, String
|
@@ -1,9 +1,13 @@
|
|
1
1
|
module Telegrammer
|
2
2
|
module DataTypes
|
3
|
+
# Telegram UserProfilePhotos data type.
|
4
|
+
#
|
5
|
+
# @attr [Integer] total_count Total number of profile pictures the target user has
|
6
|
+
# @attr [Telegrammer::DataTypes::PhotoSize] photos Requested profile pictures (in up to 4 sizes each)
|
7
|
+
#
|
8
|
+
# See more at https://core.telegram.org/bots/api#userprofilephotos
|
3
9
|
class UserProfilePhotos < Telegrammer::DataTypes::Base
|
4
|
-
attribute :
|
5
|
-
attribute :first_name, String
|
6
|
-
attribute :last_name, String
|
10
|
+
attribute :total_count, Integer
|
7
11
|
attribute :photos, Array[PhotoSize]
|
8
12
|
end
|
9
13
|
end
|
@@ -1,5 +1,17 @@
|
|
1
1
|
module Telegrammer
|
2
2
|
module DataTypes
|
3
|
+
# Telegram Video data type
|
4
|
+
#
|
5
|
+
# @attr [String] file_id Unique file identifier
|
6
|
+
# @attr [Integer] width Video width as defined by sender
|
7
|
+
# @attr [Integer] height Video height as defined by sender
|
8
|
+
# @attr [Integer] duration Duration of the video in seconds as defined by sender
|
9
|
+
# @attr [Telegrammer::DataTypes::PhotoSize] thumb Video thumbnail
|
10
|
+
# @attr [String] mime_type Optional. Mime type of a file as defined by sender
|
11
|
+
# @attr [String] file_size Optional. File size
|
12
|
+
# @attr [String] caption Optional. Text description of the video (usually empty)
|
13
|
+
#
|
14
|
+
# See more at https://core.telegram.org/bots/api#video
|
3
15
|
class Video < Telegrammer::DataTypes::Base
|
4
16
|
attribute :file_id, String
|
5
17
|
attribute :width, Integer
|
data/lib/telegrammer/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: telegrammer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luis Mayoral
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: typhoeus
|