telbe 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: e42bc9b3ba26ce5475bd53652e612411b8503a935dd7d93069ee21aa89259cb7
4
+ data.tar.gz: 6ef864e72b29856c78e63bb08f796504e81d3b0688422edb2314c72ea9f93508
5
+ SHA512:
6
+ metadata.gz: caeac2384355c9564da6237140dea46d4a29f30ed2d3530761e3c680f0e77a4ea178585ceba2c0e855a5a2bc8089210cecb3e030c23e50c6ec84b76c87e4ae13
7
+ data.tar.gz: 11257f6e714730882ce6843cc4acb49b4a2280a11764a8a565df83f2716351138de405b57b8cfbea1c8a3f95e4db765e1d8225126473b999f9636d37c242b478
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ /.bundle/
2
+ /Gemfile.lock
3
+ /spec/reports/
4
+ /tmp/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in bot_engine.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,40 @@
1
+ # Telbe
2
+
3
+ A complete ruby client that implements [Telegram's Bot API](https://core.telegram.org/bots).
4
+
5
+ Ruby is such a beautiful and productive language.
6
+
7
+ [Virtus](https://github.com/solnic/virtus) is heavilly used, mainly because it's easy to instantiate objects from hashes, even complex objects. Virtus is deprecated, at a future release we'll evaulate differente approaches to address the problem.
8
+
9
+ Currently under heavy development.
10
+
11
+ Please [collaborate](https://github.com/rodgco/telbe/issues/new) with your questions, ideas or problems!
12
+
13
+ ## Installation
14
+
15
+ Add this line to your application's Gemfile (currently under development):
16
+
17
+ ```ruby
18
+ gem 'telbe'
19
+ ```
20
+
21
+ And then execute:
22
+
23
+ $ bundle
24
+
25
+ ## Usage
26
+
27
+ ## How do I get a Bot Token
28
+
29
+ Talk to the [@BotFather](https://telegram.me/botfather).
30
+ You can find more info [here](https://core.telegram.org/bots).
31
+
32
+ ![How to get Token](http://i.imgur.com/90ya4Oe.png)
33
+
34
+ ## Contributing
35
+
36
+ Bug reports and pull requests are welcome on GitHub at https://github.com/rodgco/telbe. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](https://www.contributor-covenant.org/) code of conduct.
37
+
38
+ ## License
39
+
40
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/lib/telbe/bot.rb ADDED
@@ -0,0 +1,187 @@
1
+ module Telbe
2
+ class Bot
3
+ ENDPOINT = 'https://api.telegram.org/'
4
+
5
+ def initialize(token:, proxy: nil)
6
+ @token = token
7
+ @proxy = proxy
8
+ @connection = Excon.new(ENDPOINT, persistent: true, proxy: @proxy)
9
+ end
10
+
11
+ def request(action, query = {})
12
+ path = "/bot#{@token}/#{action}"
13
+ response = @connection.post(path: path, query: query.to_h)
14
+ if response.status == 200
15
+ body = response.body
16
+ data = JSON.parse(body)
17
+ data["result"]
18
+ else
19
+ raise ResponseError, response.body
20
+ end
21
+ end
22
+
23
+ def send_message(message_descriptor)
24
+ Message.new(request(:sendMessage, message_descriptor))
25
+ end
26
+
27
+ def get_updates(update_descriptor)
28
+ request(:getUpdates, update_descriptor).collect do |update_hash|
29
+ Update.new(update_hash)
30
+ end
31
+ end
32
+
33
+ def get_me
34
+ User.new(request(:getMe))
35
+ end
36
+
37
+ def get_chat(chatid_descriptor)
38
+ Chat.new(request(:getChat, chatid_descriptor))
39
+ end
40
+
41
+ def download_file(file)
42
+ # https://api.telegram.org/file/bot<token>/<file_path>
43
+ end
44
+ end
45
+
46
+ class MessageEntity
47
+ include Virtus.model
48
+ end
49
+
50
+ class ForceReply
51
+ include Virtus.model
52
+ attribute :force_reply, Boolean
53
+ attribute :selective, Boolean
54
+ end
55
+
56
+ class MessageDescriptor
57
+ include Virtus.model
58
+ attribute :chat_id, Object # Integer or String - Unique identifier for the target chat or username of the target channel (in the format @channelusername)
59
+ attribute :text, String # Text of the message to be sent
60
+ attribute :parse_mode, String # Optional Send Markdown or HTML, if you want Telegram apps to show bold, italic, fixed-width text or inline URLs in your bot's message.
61
+ attribute :disable_web_page_preview, Boolean # Optional Disables link previews for links in this message
62
+ attribute :disable_notification, Boolean # Optional Sends the message silently. Users will receive a notification with no sound.
63
+ attribute :reply_to_message_id, Integer # Optional If the message is a reply, ID of the original message
64
+ attribute :reply_markup, Object # InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardRemove or ForceReply - Optional Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user.
65
+ end
66
+
67
+ class ChatPhoto
68
+ include Virtus.model
69
+ attribute :small_file_id, String
70
+ attribute :big_file_id, String
71
+ end
72
+
73
+ class Chat
74
+ include Virtus.model
75
+ attribute :id, Integer
76
+ attribute :type, String
77
+ attribute :title, String
78
+ attribute :username, String
79
+ attribute :first_name, String
80
+ attribute :last_name, String
81
+ attribute :all_members_are_administrators, Boolean
82
+ attribute :photo, ChatPhoto
83
+ attribute :description, String
84
+ attribute :invite_link, String
85
+ attribute :sticker_set_name, String
86
+ attribute :can_set_sticker_set, Boolean
87
+ end
88
+
89
+ class Message
90
+ include Virtus.model
91
+ attribute :message_id, Integer
92
+ alias_method :id, :message_id
93
+ alias_method :to_i, :id
94
+ attribute :from, User
95
+ alias_method :user, :from
96
+ attribute :text, String
97
+ attribute :date, DateTime
98
+ attribute :chat, Chat
99
+ attribute :forward_from, User
100
+ attribute :forward_from_chat, Chat
101
+ attribute :forward_from_message_id, Integer
102
+ attribute :forward_signature, String
103
+ attribute :forward_sender_name, String
104
+ attribute :forward_date, Integer
105
+ attribute :reply_to_message, Message
106
+ attribute :edit_date, Integer
107
+ attribute :media_group_id, String
108
+ attribute :author_signature, String
109
+ attribute :text, String
110
+ attribute :entities, Array # of MessageEntity
111
+ attribute :caption_entities, Array # of MessageEntity
112
+ attribute :audio, Audio
113
+ attribute :document, Document
114
+ attribute :animation, Animation
115
+ # attribute :game, Game
116
+ attribute :photo, Array # of PhotoSize
117
+ attribute :sticker, Sticker
118
+ attribute :video, Video
119
+ attribute :voice, Voice
120
+ attribute :video_note, VideoNote
121
+ attribute :caption, String
122
+ attribute :contact, Contact
123
+ attribute :location, Location
124
+ attribute :venue, Venue
125
+ attribute :poll, Poll
126
+ attribute :new_chat_members, Array # of User
127
+ attribute :left_chat_member , User
128
+ attribute :new_chat_title, String
129
+ attribute :new_chat_photo, Array # of PhotoSize
130
+ attribute :delete_chat_photo, Boolean
131
+ attribute :group_chat_created, Boolean
132
+ attribute :supergroup_chat_created, Boolean
133
+ attribute :channel_chat_created, Boolean
134
+ attribute :migrate_to_chat_id, Integer
135
+ attribute :migrate_from_chat_id, Integer
136
+ attribute :pinned_message, Message
137
+ # attribute :invoice, Invoice
138
+ # attribute :successful_payment, SuccessfulPayment
139
+ attribute :connected_website, String
140
+ # attribute :passport_data, PassportData
141
+
142
+ def reply(&block)
143
+ reply = MessageDescriptor.new(chat_id: chat.id)
144
+ yield reply if block_given?
145
+ reply
146
+ end
147
+
148
+ def get_command_for(bot)
149
+ text && text.sub(Regexp.new("@#{bot.identity.username}($|\s|\.|,)", Regexp::IGNORECASE), '').strip
150
+ end
151
+ end
152
+
153
+ class Chat
154
+ attribute :pinned_message, Message
155
+ end
156
+
157
+ class Update
158
+ include Virtus.model
159
+ attribute :update_id, Integer
160
+ alias_method :id, :update_id
161
+ alias_method :to_i, :id
162
+ attribute :message, Message
163
+ alias_method :edited_message, :message
164
+ alias_method :channel_post, :message
165
+ alias_method :edited_channel_post, :message
166
+ # attribute :inline_query, InlineQuery
167
+ # attribute :chosen_inline_result, ChosenInlineResult
168
+ # attribute :callback_query, CallbackQuery
169
+ # attribute :shipping_query, ShippingQuery
170
+ # attribute :pre_checkout_query, PreCheckoutQuery
171
+ attribute :poll, Poll
172
+ end
173
+
174
+ class UpdateDescriptor
175
+ include Virtus.model
176
+ attribute :offset, Integer
177
+ attribute :limit, Integer
178
+ attribute :timeout, Integer
179
+ attribute :allowed_updates, Array # of String
180
+ end
181
+
182
+ class ResponseError < StandardError
183
+ def initialize(msg = "Bot Response Error")
184
+ super
185
+ end
186
+ end
187
+ end
@@ -0,0 +1,28 @@
1
+ module Telbe
2
+ class Bot
3
+ def send_contact(contact_descriptor)
4
+ Message.new(request(:sendContact, contact_descriptor))
5
+ end
6
+ end
7
+
8
+ class Contact
9
+ include Virtus.model
10
+ attribute :phone_number, String
11
+ attribute :first_name, String
12
+ attribute :last_name, String
13
+ attribute :user_id, Integer
14
+ attribute :vcard, String
15
+ end
16
+
17
+ class ContactDescriptor
18
+ include Virtus.model
19
+ attribute :chat_id, Integer or String
20
+ attribute :phone_number, String
21
+ attribute :first_name, String
22
+ attribute :last_name, String
23
+ attribute :vcard, String
24
+ attribute :disable_notification, Boolean
25
+ attribute :reply_to_message_id, Integer
26
+ attribute :reply_markup, Object #InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardRemove or ForceReply
27
+ end
28
+ end
@@ -0,0 +1,38 @@
1
+ module Telbe
2
+ class KeyboardButton
3
+ include Virtus.model
4
+ attribute :text, String
5
+ attribute :request_contact, Boolean
6
+ attribute :request_location, Boolean
7
+ end
8
+
9
+ class ReplyKeyboardRemove
10
+ include Virtus.model
11
+ attribute :remove_keyboard, Boolean
12
+ attribute :selective, Boolean
13
+ end
14
+
15
+ class ReplyKeyboardMarkup
16
+ include Virtus.model
17
+ attribute :keyboard, Array # of Array of KeyboardButton
18
+ attribute :resize_keyboard, Boolean
19
+ attribute :one_time_keyboard, Boolean
20
+ attribute :selective, Boolean
21
+ end
22
+
23
+ class InlineKeyboardMarkup
24
+ include Virtus.model
25
+ attribute :inline_keyboard, Array # of Array of InlineKeyboardButton
26
+ end
27
+
28
+ class InlineKeyboardButton
29
+ include Virtus.model
30
+ attribute :text, String
31
+ attribute :url, String
32
+ attribute :callback_data, String
33
+ attribute :switch_inline_query, String
34
+ attribute :switch_inline_query_current_chat, String
35
+ # attribute :callback_game, CallbackGame
36
+ # attribute :pay, Boolean
37
+ end
38
+ end
@@ -0,0 +1,16 @@
1
+ module Telbe
2
+ class Location
3
+ include Virtus.model
4
+ attribute :longitude, Float
5
+ attribute :latitude, Float
6
+ end
7
+
8
+ class Venue
9
+ include Virtus.model
10
+ attribute :location, Location
11
+ attribute :address, String
12
+ attribute :title, String
13
+ attribute :foursquare_id, String
14
+ attribute :foursquare_type, String
15
+ end
16
+ end
@@ -0,0 +1,108 @@
1
+ module Telbe
2
+ class PhotoSize
3
+ include Virtus.model
4
+ attribute :file_id, String
5
+ attribute :width, Integer
6
+ attribute :height, Integer
7
+ attribute :file_size, Integer
8
+ end
9
+
10
+ class Animation
11
+ include Virtus.model
12
+ attribute :file_id, String
13
+ attribute :width, Integer
14
+ attribute :height, Integer
15
+ attribute :duration, Integer
16
+ attribute :thumb, PhotoSize
17
+ attribute :file_name, String
18
+ attribute :mime_type, String
19
+ attribute :file_size, Integer
20
+ end
21
+
22
+ class Document
23
+ include Virtus.model
24
+ attribute :file_id, String
25
+ attribute :thumb, PhotoSize
26
+ attribute :file_name, String
27
+ attribute :mime_type, String
28
+ attribute :file_size, Integer
29
+ end
30
+
31
+ class Audio
32
+ include Virtus.model
33
+ attribute :file_id, String
34
+ attribute :duration, Integer
35
+ attribute :performer, String
36
+ attribute :title, String
37
+ attribute :mime_type, String
38
+ attribute :file_size, Integer
39
+ attribute :thumb, PhotoSize
40
+ end
41
+
42
+ class Video
43
+ include Virtus.model
44
+ attribute :file_id, String
45
+ attribute :width, Integer
46
+ attribute :height, Integer
47
+ attribute :duration, Integer
48
+ attribute :thumb, PhotoSize
49
+ attribute :mime_type, String
50
+ attribute :file_size, Integer
51
+ end
52
+
53
+ class Voice
54
+ include Virtus.model
55
+ attribute :file_id, String
56
+ attribute :duration, Integer
57
+ attribute :mime_type, String
58
+ attribute :file_size, Integer
59
+ end
60
+
61
+ class VideoNote
62
+ include Virtus.model
63
+ attribute :file_id, String
64
+ attribute :length, Integer
65
+ attribute :duration, Integer
66
+ attribute :thumb, PhotoSize
67
+ attribute :file_size, Integer
68
+ end
69
+
70
+ class InputMedia
71
+ include Virtus.model
72
+ attribute :type, String
73
+ attribute :media, String
74
+ attribute :caption, String
75
+ attribute :parse_mode, String
76
+ end
77
+
78
+ class InputMediaAnimation < InputMedia
79
+ attribute :thumb, Object
80
+ attribute :width, Integer
81
+ attribute :height, Integer
82
+ attribute :duration, Integer
83
+ end
84
+
85
+ class InputMediaDocument < InputMedia
86
+ include Virtus.model
87
+ attribute :thumb, Object
88
+ end
89
+
90
+ class InputMediaAudio < InputMedia
91
+ include Virtus.model
92
+ attribute :thumb, Object
93
+ attribute :duration, Integer
94
+ attribute :performer, String
95
+ attribute :title, String
96
+ end
97
+
98
+ class InputMediaPhoto < InputMedia
99
+ end
100
+
101
+ class InputMediaVideo < InputMedia
102
+ attribute :thumb, Object
103
+ attribute :width, Integer
104
+ attribute :height, Integer
105
+ attribute :duration, Integer
106
+ attribute :supports_streaming, Boolean
107
+ end
108
+ end
data/lib/telbe/poll.rb ADDED
@@ -0,0 +1,18 @@
1
+ module Telbe
2
+ class Bot
3
+ end
4
+
5
+ class PollOption
6
+ include Virtus.model
7
+ attribute :text, String
8
+ attribute :voter_count, Integer
9
+ end
10
+
11
+ class Poll
12
+ include Virtus.model
13
+ attribute :id, String
14
+ attribute :question, String
15
+ attribute :options, Array # of PollOption
16
+ attribute :is_closed, Boolean
17
+ end
18
+ end
@@ -0,0 +1,32 @@
1
+ module Telbe
2
+ class Bot
3
+ end
4
+
5
+ class MaskPosition
6
+ include Virtus.model
7
+ attribute :point, String
8
+ attribute :x_shift, Float
9
+ attribute :y_shift, Float
10
+ attribute :scale, Float
11
+ end
12
+
13
+ class Sticker
14
+ include Virtus.model
15
+ attribute :file_id, String
16
+ attribute :width, Integer
17
+ attribute :height, Integer
18
+ attribute :thumb, PhotoSize
19
+ attribute :emoji, String
20
+ attribute :set_name, String
21
+ attribute :mask_position, MaskPosition
22
+ attribute :file_size, Integer
23
+ end
24
+
25
+ class StickerSet
26
+ include Virtus.model
27
+ attribute :name, String
28
+ attribute :title, String
29
+ attribute :contains_masks, Boolean
30
+ attribute :stickers, Array # of Sticker
31
+ end
32
+ end
data/lib/telbe/user.rb ADDED
@@ -0,0 +1,45 @@
1
+ module Telbe
2
+ class Bot
3
+ def get_chat_administrators(chatid_descriptor)
4
+ request(:getChatAdministrators, chatid_descriptor).collect do |member_hash|
5
+ ChatMember.new(member_hash)
6
+ end
7
+ end
8
+
9
+ def get_chat_members_count(chatid_descriptor)
10
+ request(:getChatMembersCount, chatid_descriptor)
11
+ end
12
+ end
13
+
14
+ class User
15
+ include Virtus.model
16
+ attribute :id, Integer #Unique identifier for this user or bot
17
+ alias_method :to_i, :id
18
+ attribute :is_bot, Boolean
19
+ attribute :first_name, String #User‘s or bot’s first name
20
+ attribute :last_name, String
21
+ attribute :username, String
22
+ attribute :language_code, String
23
+ end
24
+
25
+ class ChatMember
26
+ include Virtus.model
27
+ attribute :user, User
28
+ attribute :status, String
29
+ attribute :until_date, Integer
30
+ attribute :can_be_edited, Boolean
31
+ attribute :can_change_info, Boolean
32
+ attribute :can_post_messages, Boolean
33
+ attribute :can_edit_messages, Boolean
34
+ attribute :can_delete_messages, Boolean
35
+ attribute :can_invite_users, Boolean
36
+ attribute :can_restrict_members, Boolean
37
+ attribute :can_pin_messages, Boolean
38
+ attribute :can_promote_members, Boolean
39
+ attribute :is_member, Boolean
40
+ attribute :can_send_messages, Boolean
41
+ attribute :can_send_media_messages, Boolean
42
+ attribute :can_send_other_messages, Boolean
43
+ attribute :can_add_web_page_previews, Boolean
44
+ end
45
+ end
@@ -0,0 +1,3 @@
1
+ module Telbe
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,37 @@
1
+ module Telbe
2
+ class Bot
3
+ def set_webhook(webhook_descriptor)
4
+ request(:setWebhook, webhook_descriptor)
5
+ end
6
+
7
+ def delete_webhook
8
+ request(:deleteWebhook)
9
+ end
10
+
11
+ def get_webhookinfo
12
+ WebHookInfo.new(request(:getWebhookInfo))
13
+ end
14
+ end
15
+
16
+ class WebHookInfo
17
+ include Virtus.model
18
+ attribute :url, String
19
+ attribute :has_custom_certificate, Boolean
20
+ attribute :pending_update_count, Integer
21
+ attribute :last_error_date, Integer
22
+ attribute :last_error_message, String
23
+ attribute :max_connections, Integer
24
+ attribute :allowed_updates, Array # of String
25
+ end
26
+
27
+ class InputFile
28
+ end
29
+
30
+ class WebHookDescriptor
31
+ include Virtus.model
32
+ attribute :url, String
33
+ attribute :certificate, InputFile
34
+ attribute :max_connections, Integer
35
+ attribute :allowed_updates, Array # of String
36
+ end
37
+ end
data/lib/telbe.rb ADDED
@@ -0,0 +1,19 @@
1
+ require 'excon'
2
+ require 'virtus'
3
+ require 'json'
4
+
5
+ require 'telbe/webhook'
6
+ require 'telbe/user'
7
+ require 'telbe/contact'
8
+ require 'telbe/keyboard'
9
+ require 'telbe/poll'
10
+ require 'telbe/media'
11
+ require 'telbe/sticker'
12
+ require 'telbe/location'
13
+ require 'telbe/bot'
14
+
15
+ module BotEngine
16
+ def self.new(opts)
17
+ Bot.new(opts)
18
+ end
19
+ end
data/telbe.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'telbe/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "telbe"
8
+ spec.version = Telbe::VERSION
9
+ spec.date = "2019-05-07"
10
+ spec.authors = ["Rodrigo Garcia Couto"]
11
+ spec.email = ["r@rodg.co"]
12
+ spec.summary = %q{A Telegram Bot Engine}
13
+ spec.description = %q{Still in development. A Telegram Bot Engine that eventually will support all of Telegrams features.}
14
+ spec.homepage = "https://github.com/rodgco/telbe"
15
+ spec.license = "MIT"
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.require_paths = ["lib"]
18
+
19
+ spec.add_dependency "excon", ">= 0.64.0"
20
+ spec.add_dependency "virtus", ">= 0.64.0"
21
+ spec.add_development_dependency "bundler", "~> 2.0"
22
+ spec.add_development_dependency "rspec"
23
+ end
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: telbe
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Rodrigo Garcia Couto
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-05-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: excon
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 0.64.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 0.64.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: virtus
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.64.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 0.64.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Still in development. A Telegram Bot Engine that eventually will support
70
+ all of Telegrams features.
71
+ email:
72
+ - r@rodg.co
73
+ executables: []
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - ".gitignore"
78
+ - Gemfile
79
+ - README.md
80
+ - lib/telbe.rb
81
+ - lib/telbe/bot.rb
82
+ - lib/telbe/contact.rb
83
+ - lib/telbe/keyboard.rb
84
+ - lib/telbe/location.rb
85
+ - lib/telbe/media.rb
86
+ - lib/telbe/poll.rb
87
+ - lib/telbe/sticker.rb
88
+ - lib/telbe/user.rb
89
+ - lib/telbe/version.rb
90
+ - lib/telbe/webhook.rb
91
+ - telbe.gemspec
92
+ homepage: https://github.com/rodgco/telbe
93
+ licenses:
94
+ - MIT
95
+ metadata: {}
96
+ post_install_message:
97
+ rdoc_options: []
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirements: []
111
+ rubyforge_project:
112
+ rubygems_version: 2.7.3
113
+ signing_key:
114
+ specification_version: 4
115
+ summary: A Telegram Bot Engine
116
+ test_files: []