telegrammer 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Gem Version](https://badge.fury.io/rb/telegrammer.svg)](http://badge.fury.io/rb/telegrammer)
|
2
2
|
[![Code Climate](https://codeclimate.com/github/mayoral/telegrammer/badges/gpa.svg)](https://codeclimate.com/github/mayoral/telegrammer)
|
3
|
+
[![Inline docs](http://inch-ci.org/github/mayoral/telegrammer.svg?branch=master)](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
|