telegramAPI 1.1 → 1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +36 -6
- data/lib/telegramAPI.rb +48 -44
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0fc39dcbfb6e5779994efe355d537f07dc9bc13a
|
|
4
|
+
data.tar.gz: 86afed760ceda0247d43085e157f10260efde302
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8a2829f16b4634493f653c3aa6e04d555fbd439a9e2bb2ac43ddcd23f53cded4160e09c5eea91601c3e0fa3b3a2512295e365fcd9dbe2c4ae3924b7fcb965abc
|
|
7
|
+
data.tar.gz: 536686e959139a08c2b5f075eb8cb8f92aa1c0865fa1f347af93f975e7c6d6c5c92a5eb6194ea2a471006f47e9d40c8758c2d8de581bff04e22494bb6d12be8f
|
data/README.md
CHANGED
|
@@ -41,6 +41,35 @@ puts "But you can call me @#{bot['username']}"
|
|
|
41
41
|
|
|
42
42
|
Here you can use the Telegram official [documentation](https://core.telegram.org/bots/api#available-methods)
|
|
43
43
|
|
|
44
|
+
## List of methods available
|
|
45
|
+
|
|
46
|
+
Every method has a optional parameter. See the Send Custom Keyboard example for more.
|
|
47
|
+
|
|
48
|
+
* ```getUpdates()```
|
|
49
|
+
* ```getMe()```
|
|
50
|
+
* ```sendMessage(chat_id, text)```
|
|
51
|
+
* ```forwardMessage(chat_id, from_chat_id, message_id)```
|
|
52
|
+
* ```sendPhoto(chat_id, path)```
|
|
53
|
+
* ```sendAudio(chat_id, path)```
|
|
54
|
+
* ```sendDocument(chat_id, path)```
|
|
55
|
+
* ```sendStickerFromFile(chat_id, path)```
|
|
56
|
+
* ```sendSticker(chat_id, sticker_id)```
|
|
57
|
+
* ```sendVideo(chat_id, path)```
|
|
58
|
+
* ```sendVoice(chat_id, path)```
|
|
59
|
+
* ```sendLocation(chat_id, latitude, longitude)```
|
|
60
|
+
* ```sendVenue(chat_id, latitude, longitude, title, address)```
|
|
61
|
+
* ```sendContact(chat_id, phone_number, first_name)```
|
|
62
|
+
* ```sendChatAction(chat_id, action)```
|
|
63
|
+
* ```getUserProfilePhotos(user_id)```
|
|
64
|
+
* ```getFile(file_id)```
|
|
65
|
+
* ```kickChatMember(chat_id, user_id)```
|
|
66
|
+
* ```leaveChat(chat_id)```
|
|
67
|
+
* ```unbanChatMember(chat_id, user_id)```
|
|
68
|
+
* ```getChat(chat_id)```
|
|
69
|
+
* ```getChatAdministrators(chat_id)```
|
|
70
|
+
* ```getChatMembersCount(chat_id)```
|
|
71
|
+
* ```getChatMember(chat_id, user_id)```
|
|
72
|
+
|
|
44
73
|
## Examples
|
|
45
74
|
|
|
46
75
|
### Echo Server
|
|
@@ -60,17 +89,17 @@ end
|
|
|
60
89
|
### Send Media
|
|
61
90
|
|
|
62
91
|
```ruby
|
|
63
|
-
api.sendSticker m
|
|
92
|
+
api.sendSticker m['message']['chat']['id'], sticker_id
|
|
64
93
|
|
|
65
|
-
api.sendPhoto m
|
|
94
|
+
api.sendPhoto m['message']['chat']['id'], "/home/path-of-image/image.jpg"
|
|
66
95
|
|
|
67
|
-
api.sendDocument m
|
|
96
|
+
api.sendDocument m['message']['chat']['id'], "/home/path-of-document/doc.gif"
|
|
68
97
|
|
|
69
|
-
api.sendAudio m
|
|
98
|
+
api.sendAudio m['message']['chat']['id'], "/home/path-of-audio/audio.opus"
|
|
70
99
|
|
|
71
|
-
api.sendVideo m
|
|
100
|
+
api.sendVideo m['message']['chat']['id'], "/home/path-of-video/video.mp4"
|
|
72
101
|
|
|
73
|
-
api.sendLocation m
|
|
102
|
+
api.sendLocation m['message']['chat']['id'], 45.462781, 9.177732
|
|
74
103
|
```
|
|
75
104
|
**Note:** According to Telegram, each audio must be encoded in **Ogg OPUS**, and each video must be encoded in **mp4**.
|
|
76
105
|
|
|
@@ -91,3 +120,4 @@ markup = {
|
|
|
91
120
|
|
|
92
121
|
api.sendMessage m['message']['chat']['id'], "Am I sexy?", {"reply_markup"=>markup}
|
|
93
122
|
```
|
|
123
|
+
|
data/lib/telegramAPI.rb
CHANGED
|
@@ -3,7 +3,6 @@ require 'net/http'
|
|
|
3
3
|
require 'net/https'
|
|
4
4
|
require 'uri'
|
|
5
5
|
require 'rest-client'
|
|
6
|
-
require 'ostruct'
|
|
7
6
|
|
|
8
7
|
# This library provides an easy way to access to the Telegram Bot API
|
|
9
8
|
# Author:: Benedetto Nespoli
|
|
@@ -32,11 +31,11 @@ class TelegramAPI
|
|
|
32
31
|
params.each do |param| p << param.join("=") end
|
|
33
32
|
params_s = "?#{p.join("&")}" if p.length!=0
|
|
34
33
|
|
|
35
|
-
JSON.parse(RestClient.get(@@core+@token+"/"+api+params_s).body)
|
|
34
|
+
JSON.parse(RestClient.get(@@core+@token+"/"+api+params_s).body)["result"]
|
|
36
35
|
end
|
|
37
36
|
|
|
38
37
|
def post api, name, path, to, options={}
|
|
39
|
-
JSON.parse(RestClient.post(@@core+@token+api, {name=>File.new(path,'rb'), :chat_id=>to.to_s}.merge(parse_hash(options))).body
|
|
38
|
+
JSON.parse(RestClient.post(@@core+@token+api, {name=>File.new(path,'rb'), :chat_id=>to.to_s}.merge(parse_hash(options))).body)["result"]
|
|
40
39
|
end
|
|
41
40
|
|
|
42
41
|
def getUpdates options={"timeout"=>0, "limit"=>100}
|
|
@@ -54,11 +53,11 @@ class TelegramAPI
|
|
|
54
53
|
if options.has_key?"reply_markup" then
|
|
55
54
|
options["reply_markup"]=options["reply_markup"].to_json
|
|
56
55
|
end
|
|
57
|
-
self.query("sendMessage", {
|
|
56
|
+
self.query("sendMessage", {:chat_id=>to.to_s, :text=>URI::encode(text)}.merge(parse_hash(options)))
|
|
58
57
|
end
|
|
59
58
|
|
|
60
59
|
def forwardMessage to, from, msg
|
|
61
|
-
self.query("forwardMessage", {
|
|
60
|
+
self.query("forwardMessage", {:chat_id=>to, :from_chat_id=>from, :message_id=>msg})
|
|
62
61
|
end
|
|
63
62
|
|
|
64
63
|
def sendPhoto to, path, options={}
|
|
@@ -69,72 +68,77 @@ class TelegramAPI
|
|
|
69
68
|
self.post "/sendAudio", :audio, path, to, options
|
|
70
69
|
end
|
|
71
70
|
|
|
72
|
-
# Send a general document (file, image, audio)
|
|
73
|
-
# @param (see #sendPhoto)
|
|
74
|
-
# @return (see #sendPhoto)
|
|
75
71
|
def sendDocument to, path, options={}
|
|
76
72
|
self.post "/sendDocument", :document, path, to, options
|
|
77
73
|
end
|
|
78
74
|
|
|
79
|
-
# Send a Sticker from File
|
|
80
|
-
# @param (see #sendPhoto)
|
|
81
|
-
# @return (see #sendSticker)
|
|
82
75
|
def sendStickerFromFile to, path, options={}
|
|
83
76
|
self.post "/sendSticker", :sticker, path, to, options
|
|
84
77
|
end
|
|
85
78
|
|
|
86
|
-
# Send a Sticker through its ID
|
|
87
|
-
# @param to (see #sendPhoto)
|
|
88
|
-
# @param id [Integer] the ID of the sticker to send
|
|
89
|
-
# @param options (see #sendPhoto)
|
|
90
|
-
# @return (see #sendPhoto)
|
|
91
79
|
def sendSticker to, id, options={}
|
|
92
|
-
|
|
80
|
+
RestClient.post(@@core+@token+"/sendSticker", {:sticker=>id, :chat_id=>to.to_s}.merge(parse_hash(options))).body
|
|
93
81
|
end
|
|
94
82
|
|
|
95
|
-
# Send a video file in mp4 format of max 50MB
|
|
96
|
-
# @param (see #sendPhoto)
|
|
97
|
-
# @return (see #sendPhoto)
|
|
98
83
|
def sendVideo to, path, options={}
|
|
99
84
|
self.post "/sendVideo", :video, path, to, options
|
|
100
85
|
end
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
# @param options (see #sendPhoto)
|
|
107
|
-
# @return (see #sendPhoto)
|
|
86
|
+
|
|
87
|
+
def sendVoice to, path, options={}
|
|
88
|
+
self.post "/sendVoice", :voice, path, to, options
|
|
89
|
+
end
|
|
90
|
+
|
|
108
91
|
def sendLocation to, lat, long, options={}
|
|
109
|
-
self.query("sendLocation", {
|
|
92
|
+
self.query("sendLocation", {:chat_id=>to, :latitude=>lat, :longitude=>long}.merge(parse_hash(options)))
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def sendVenue to, lat, long, title, address, options={}
|
|
96
|
+
self.query("sendVenue", {:chat_id=>to, :latitude=>lat, :longitude=>long, :title=>title, :address=>address}.merge(parse_hash(options)))
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def sendContact to, phone_number, first_name, options={}
|
|
100
|
+
self.query("sendContact", {:chat_id=>to, :phone_number=>phone_number, :first_name=>first_name}.merge(parse_hash(options)))
|
|
110
101
|
end
|
|
111
102
|
|
|
112
|
-
#
|
|
113
|
-
# @param to (see #sendPhoto)
|
|
114
|
-
# @param act [String] One of: typing, upload_photo, record_video, record_audio, upload_audio, upload_document, find_location
|
|
103
|
+
# act is one between: typing, upload_photo, record_video, record_audio, upload_audio, upload_document, find_location
|
|
115
104
|
def sendChatAction to, act
|
|
116
|
-
self.query "sendChatAction", {
|
|
105
|
+
self.query "sendChatAction", {:chat_id=>to, :action=>act}
|
|
117
106
|
end
|
|
118
107
|
|
|
119
|
-
# Get a list of user profile photos, in up to 4 sizes each
|
|
120
|
-
# @param id [Integer] ID user whom getting the photos
|
|
121
|
-
# @param options (see #sendPhoto)
|
|
122
|
-
# @return [UserProfilePhotos]
|
|
123
108
|
def getUserProfilePhotos id, options={}
|
|
124
|
-
self.query("getUserProfilePhotos", {
|
|
109
|
+
self.query("getUserProfilePhotos", {:user_id=>id}.merge(parse_hash(options)))
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def getFile file_id
|
|
113
|
+
self.query("getFile", {:file_id=>file_id})
|
|
125
114
|
end
|
|
126
115
|
|
|
127
|
-
# Kick the user user_id from the chat chat_id
|
|
128
|
-
# @param chat_id [Integer or String] ID of the chat, or @publicname
|
|
129
|
-
# @param user_id [Integer] ID of the user to kick
|
|
130
116
|
def kickChatMember chat_id, user_id
|
|
131
|
-
self.query
|
|
117
|
+
self.query("kickChatMember", {:chat_id=>chat_id, :user_id=>user_id})
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def leaveChat chat_id
|
|
121
|
+
self.query("leaveChat", {:chat_id=>chat_id})
|
|
132
122
|
end
|
|
133
123
|
|
|
134
|
-
# Unban user_id from chat_id
|
|
135
|
-
# see kickChatMember
|
|
136
124
|
def unbanChatMember chat_id, user_id
|
|
137
|
-
self.query
|
|
125
|
+
self.query("unbanChatMember", {:chat_id=>chat_id, :user_id=>user_id})
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def getChat chat_id
|
|
129
|
+
self.query("getChat", {:chat_id=>chat_id})
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def getChatAdministrators chat_id
|
|
133
|
+
self.query("getChatAdministrators", {:chat_id=>chat_id})
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def getChatMembersCount chat_id
|
|
137
|
+
self.query("getChatMembersCount", {:chat_id=>chat_id})
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def getChatMember chat_id, user_id
|
|
141
|
+
self.query("getChatMember", {:chat_id=>chat_id, :user_id=>user_id})
|
|
138
142
|
end
|
|
139
143
|
|
|
140
144
|
protected :query, :parse_hash, :post
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: telegramAPI
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '1.
|
|
4
|
+
version: '1.2'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Benedetto Nespoli
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2016-09-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rest-client
|
|
@@ -16,7 +16,7 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '2.0'
|
|
20
20
|
- - ">="
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
22
|
version: 1.7.3
|
|
@@ -26,7 +26,7 @@ dependencies:
|
|
|
26
26
|
requirements:
|
|
27
27
|
- - "~>"
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: '
|
|
29
|
+
version: '2.0'
|
|
30
30
|
- - ">="
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
32
|
version: 1.7.3
|