telegram-bot 0.16.1 → 0.16.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/.codeclimate.yml +0 -4
- data/.github/workflows/ci.yml +9 -9
- data/.rubocop.yml +31 -12
- data/Appraisals +2 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +5 -3
- data/Rakefile +2 -0
- data/bin/console +6 -2
- data/bin/fetch-telegram-methods +5 -3
- data/bin/install_git_hooks +2 -1
- data/gemfiles/rails_51.gemfile +3 -3
- data/gemfiles/rails_52.gemfile +3 -3
- data/gemfiles/rails_60.gemfile +3 -3
- data/gemfiles/rails_61.gemfile +3 -3
- data/gemfiles/rails_70.gemfile +3 -3
- data/gemfiles/rails_71.gemfile +3 -3
- data/lib/tasks/telegram-bot.rake +6 -4
- data/lib/telegram/bot/async.rb +4 -2
- data/lib/telegram/bot/client/api_helper.rb +3 -1
- data/lib/telegram/bot/client/api_methods.txt +8 -1
- data/lib/telegram/bot/client/request_body_formatter.rb +2 -0
- data/lib/telegram/bot/client/typed_response.rb +2 -0
- data/lib/telegram/bot/client.rb +5 -3
- data/lib/telegram/bot/client_stub.rb +4 -2
- data/lib/telegram/bot/config_methods.rb +3 -1
- data/lib/telegram/bot/debug_client.rb +3 -1
- data/lib/telegram/bot/middleware.rb +3 -1
- data/lib/telegram/bot/railtie.rb +3 -1
- data/lib/telegram/bot/routes_helper.rb +2 -0
- data/lib/telegram/bot/rspec/callback_query_helpers.rb +3 -1
- data/lib/telegram/bot/rspec/client_matchers.rb +12 -10
- data/lib/telegram/bot/rspec/integration/poller.rb +2 -0
- data/lib/telegram/bot/rspec/integration/rack.rb +2 -0
- data/lib/telegram/bot/rspec/integration/rails.rb +2 -0
- data/lib/telegram/bot/rspec/integration/shared.rb +3 -1
- data/lib/telegram/bot/rspec/message_helpers.rb +2 -0
- data/lib/telegram/bot/rspec.rb +2 -0
- data/lib/telegram/bot/tasks.rb +4 -4
- data/lib/telegram/bot/updates_controller/callback_query_context.rb +2 -0
- data/lib/telegram/bot/updates_controller/commands.rb +4 -2
- data/lib/telegram/bot/updates_controller/instrumentation.rb +7 -5
- data/lib/telegram/bot/updates_controller/log_subscriber.rb +4 -2
- data/lib/telegram/bot/updates_controller/message_context.rb +7 -5
- data/lib/telegram/bot/updates_controller/reply_helpers.rb +4 -2
- data/lib/telegram/bot/updates_controller/rescue.rb +3 -1
- data/lib/telegram/bot/updates_controller/rspec_helpers.rb +2 -0
- data/lib/telegram/bot/updates_controller/session.rb +7 -4
- data/lib/telegram/bot/updates_controller/testing.rb +5 -2
- data/lib/telegram/bot/updates_controller/translation.rb +2 -0
- data/lib/telegram/bot/updates_controller/typed_update.rb +2 -0
- data/lib/telegram/bot/updates_controller.rb +49 -19
- data/lib/telegram/bot/updates_poller.rb +9 -9
- data/lib/telegram/bot/version.rb +3 -1
- data/lib/telegram/bot.rb +3 -9
- data/telegram-bot.gemspec +7 -1
- metadata +4 -3
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'active_support/json'
|
2
4
|
require 'telegram/bot'
|
3
5
|
require 'telegram/bot/rspec/message_helpers'
|
@@ -10,5 +12,5 @@ RSpec.shared_context 'telegram/bot/integration/shared' do
|
|
10
12
|
|
11
13
|
let(:bot) { Telegram.bot }
|
12
14
|
let(:clear_session?) { described_class.respond_to?(:session_store) }
|
13
|
-
before { described_class.session_store
|
15
|
+
before { described_class.session_store&.clear if clear_session? }
|
14
16
|
end
|
data/lib/telegram/bot/rspec.rb
CHANGED
data/lib/telegram/bot/tasks.rb
CHANGED
@@ -7,7 +7,7 @@ module Telegram
|
|
7
7
|
|
8
8
|
def set_webhook
|
9
9
|
routes = Rails.application.routes.url_helpers
|
10
|
-
cert_file = ENV
|
10
|
+
cert_file = ENV.fetch('CERT', nil)
|
11
11
|
cert = File.open(cert_file) if cert_file
|
12
12
|
each_bot do |key, bot|
|
13
13
|
route_name = RoutesHelper.route_name_for_bot(bot)
|
@@ -16,7 +16,7 @@ module Telegram
|
|
16
16
|
bot.set_webhook(
|
17
17
|
url: url,
|
18
18
|
certificate: cert,
|
19
|
-
ip_address: ENV
|
19
|
+
ip_address: ENV.fetch('IP_ADDRESS', nil),
|
20
20
|
drop_pending_updates: drop_pending_updates,
|
21
21
|
)
|
22
22
|
end
|
@@ -50,13 +50,13 @@ module Telegram
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def each_bot(&block)
|
53
|
-
id = ENV['BOT']
|
53
|
+
id = ENV['BOT']&.to_sym
|
54
54
|
bots = id ? {id => Client.by_id(id)} : Telegram.bots
|
55
55
|
bots.each { |key, bot| bot.async(false) { block[key, bot] } }
|
56
56
|
end
|
57
57
|
|
58
58
|
def drop_pending_updates
|
59
|
-
ENV['DROP_PENDING_UPDATES']
|
59
|
+
ENV['DROP_PENDING_UPDATES']&.downcase == 'true'
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Telegram
|
2
4
|
module Bot
|
3
5
|
class UpdatesController
|
4
6
|
# Support for parsing commands
|
5
7
|
module Commands
|
6
|
-
CMD_REGEX = %r{\A/([a-z\d_]{,31})(@(\S+))?(\s|$)}i
|
8
|
+
CMD_REGEX = %r{\A/([a-z\d_]{,31})(@(\S+))?(\s|$)}i.freeze
|
7
9
|
|
8
10
|
class << self
|
9
11
|
# Fetches command from text message. All subsequent words are returned
|
@@ -34,7 +36,7 @@ module Telegram
|
|
34
36
|
def action_for_message
|
35
37
|
cmd, args = Commands.command_from_text(payload['text'], bot_username)
|
36
38
|
return unless cmd
|
37
|
-
[[action_for_command(cmd), type: :command, command: cmd], args]
|
39
|
+
[[action_for_command(cmd), {type: :command, command: cmd}], args]
|
38
40
|
end
|
39
41
|
|
40
42
|
alias_method :action_for_channel_post, :action_for_message
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Telegram
|
2
4
|
module Bot
|
3
5
|
class UpdatesController
|
@@ -23,8 +25,8 @@ module Telegram
|
|
23
25
|
def process_action(*args)
|
24
26
|
raw_payload = {
|
25
27
|
controller: self.class.name,
|
26
|
-
action:
|
27
|
-
update:
|
28
|
+
action: action_name,
|
29
|
+
update: update,
|
28
30
|
}
|
29
31
|
Instrumentation.instrument(:start_processing, raw_payload.dup)
|
30
32
|
Instrumentation.instrument(:process_action, raw_payload) do |payload|
|
@@ -61,14 +63,14 @@ module Telegram
|
|
61
63
|
# end
|
62
64
|
#
|
63
65
|
# :api: plugin
|
64
|
-
def cleanup_view_runtime
|
66
|
+
def cleanup_view_runtime # :nodoc:
|
65
67
|
yield
|
66
68
|
end
|
67
69
|
|
68
70
|
# Every time after an action is processed, this method is invoked
|
69
71
|
# with the payload, so you can add more information.
|
70
72
|
# :api: plugin
|
71
|
-
def append_info_to_payload(_payload)
|
73
|
+
def append_info_to_payload(_payload) # :nodoc:
|
72
74
|
end
|
73
75
|
|
74
76
|
module ClassMethods
|
@@ -76,7 +78,7 @@ module Telegram
|
|
76
78
|
# controller process action. This method should return an array
|
77
79
|
# with the messages to be added.
|
78
80
|
# :api: plugin
|
79
|
-
def log_process_action(_payload)
|
81
|
+
def log_process_action(_payload) # :nodoc:
|
80
82
|
[]
|
81
83
|
end
|
82
84
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'active_support/log_subscriber'
|
2
4
|
|
3
5
|
module Telegram
|
@@ -8,7 +10,7 @@ module Telegram
|
|
8
10
|
info do
|
9
11
|
payload = event.payload
|
10
12
|
"Processing by #{payload[:controller]}##{payload[:action]}\n" \
|
11
|
-
|
13
|
+
" Update: #{payload[:update].to_json}"
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
@@ -17,7 +19,7 @@ module Telegram
|
|
17
19
|
payload = event.payload
|
18
20
|
additions = UpdatesController.log_process_action(payload)
|
19
21
|
message = "Completed in #{event.duration.round}ms"
|
20
|
-
message
|
22
|
+
message += " (#{additions.join(' | ')})" if additions.present?
|
21
23
|
message
|
22
24
|
end
|
23
25
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Telegram
|
2
4
|
module Bot
|
3
5
|
class UpdatesController
|
@@ -48,12 +50,12 @@ module Telegram
|
|
48
50
|
# it has higher priority than contextual action.
|
49
51
|
def action_for_message
|
50
52
|
val = message_context_session.delete(:context)
|
51
|
-
context = val
|
52
|
-
super || context && begin
|
53
|
-
args = payload['text']
|
53
|
+
context = val&.to_s
|
54
|
+
super || (context && begin
|
55
|
+
args = payload['text']&.split || []
|
54
56
|
action = action_for_message_context(context)
|
55
|
-
[[action, type: :message_context, context: context], args]
|
56
|
-
end
|
57
|
+
[[action, {type: :message_context, context: context}], args]
|
58
|
+
end)
|
57
59
|
end
|
58
60
|
|
59
61
|
# Save context for the next request.
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Telegram
|
2
4
|
module Bot
|
3
5
|
class UpdatesController
|
@@ -59,9 +61,9 @@ module Telegram
|
|
59
61
|
# Edit message from callback query.
|
60
62
|
def edit_message(type, params = {})
|
61
63
|
params =
|
62
|
-
if message_id = payload['inline_message_id'] # rubocop:disable AssignmentInCondition
|
64
|
+
if message_id = payload['inline_message_id'] # rubocop:disable Lint/AssignmentInCondition
|
63
65
|
params.merge(inline_message_id: message_id)
|
64
|
-
elsif message = payload['message'] # rubocop:disable AssignmentInCondition
|
66
|
+
elsif message = payload['message'] # rubocop:disable Lint/AssignmentInCondition
|
65
67
|
params.merge(chat_id: message['chat']['id'], message_id: message['message_id'])
|
66
68
|
else
|
67
69
|
raise 'Can not edit message without `inline_message_id` or `message`'
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'active_support/rescuable'
|
2
4
|
|
3
5
|
module Telegram
|
@@ -11,7 +13,7 @@ module Telegram
|
|
11
13
|
|
12
14
|
def process_action(*)
|
13
15
|
super
|
14
|
-
rescue Exception => exception # rubocop:disable RescueException
|
16
|
+
rescue Exception => exception # rubocop:disable Lint/RescueException
|
15
17
|
rescue_with_handler(exception) || raise
|
16
18
|
end
|
17
19
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rack/session/abstract/id'
|
2
4
|
require 'active_support/cache'
|
3
5
|
|
@@ -27,7 +29,8 @@ module Telegram
|
|
27
29
|
protected
|
28
30
|
|
29
31
|
def session
|
30
|
-
@_session ||=
|
32
|
+
@_session ||= # rubocop:disable Naming/MemoizedInstanceVariableName
|
33
|
+
self.class.build_session(session_key)
|
31
34
|
end
|
32
35
|
|
33
36
|
def session_key
|
@@ -41,7 +44,7 @@ module Telegram
|
|
41
44
|
class SessionHash < Rack::Session::Abstract::SessionHash
|
42
45
|
attr_reader :id
|
43
46
|
|
44
|
-
def initialize(store, id)
|
47
|
+
def initialize(store, id) # rubocop:disable Lint/MissingSuper
|
45
48
|
@store = store
|
46
49
|
@id = id
|
47
50
|
end
|
@@ -65,13 +68,13 @@ module Telegram
|
|
65
68
|
|
66
69
|
def commit
|
67
70
|
return unless loaded?
|
68
|
-
data = to_hash.
|
71
|
+
data = to_hash.compact
|
69
72
|
@store.write(id, data)
|
70
73
|
end
|
71
74
|
end
|
72
75
|
|
73
76
|
class NullSessionHash < Session::SessionHash
|
74
|
-
def initialize
|
77
|
+
def initialize # rubocop:disable Lint/MissingSuper
|
75
78
|
@data = {}
|
76
79
|
@loaded = true
|
77
80
|
@exists = true
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Telegram
|
2
4
|
module Bot
|
3
5
|
class UpdatesController
|
@@ -16,7 +18,7 @@ module Telegram
|
|
16
18
|
# everything will be rewriten with #initialize.
|
17
19
|
#
|
18
20
|
# With `full` set to `true` it'll clear all cached instance variables.
|
19
|
-
def recycle!(full = false)
|
21
|
+
def recycle!(full = false) # rubocop:disable Style/OptionalBooleanParameter
|
20
22
|
return unless full
|
21
23
|
(instance_variables - IVARS_TO_KEEP).each do |ivar|
|
22
24
|
remove_instance_variable(ivar)
|
@@ -27,7 +29,8 @@ module Telegram
|
|
27
29
|
|
28
30
|
# Stubs session.
|
29
31
|
def session
|
30
|
-
@_session ||=
|
32
|
+
@_session ||= # rubocop:disable Naming/MemoizedInstanceVariableName
|
33
|
+
Session::NullSessionHash.new
|
31
34
|
end
|
32
35
|
end
|
33
36
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'abstract_controller'
|
2
4
|
require 'active_support/core_ext/string/inflections'
|
3
5
|
require 'active_support/callbacks'
|
@@ -47,7 +49,7 @@ module Telegram
|
|
47
49
|
# ControllerClass.new(bot, from: telegram_user, chat: telegram_chat).
|
48
50
|
# process(:help, *args)
|
49
51
|
#
|
50
|
-
class UpdatesController < AbstractController::Base # rubocop:disable ClassLength
|
52
|
+
class UpdatesController < AbstractController::Base # rubocop:disable Metrics/ClassLength
|
51
53
|
abstract!
|
52
54
|
|
53
55
|
%w[
|
@@ -69,12 +71,12 @@ module Telegram
|
|
69
71
|
include AbstractController::Callbacks
|
70
72
|
# Redefine callbacks with default terminator.
|
71
73
|
if ActiveSupport::VERSION::MAJOR >= 5
|
72
|
-
define_callbacks
|
73
|
-
|
74
|
+
define_callbacks :process_action,
|
75
|
+
skip_after_callbacks_if_terminated: true
|
74
76
|
else
|
75
|
-
define_callbacks
|
76
|
-
|
77
|
-
|
77
|
+
define_callbacks :process_action,
|
78
|
+
terminator: ->(_, result) { result == false },
|
79
|
+
skip_after_callbacks_if_terminated: true
|
78
80
|
end
|
79
81
|
|
80
82
|
include Commands
|
@@ -87,11 +89,17 @@ module Telegram
|
|
87
89
|
|
88
90
|
extend Session::ConfigMethods
|
89
91
|
|
90
|
-
PAYLOAD_TYPES = %w[
|
92
|
+
PAYLOAD_TYPES = Set.new(%w[
|
91
93
|
message
|
92
94
|
edited_message
|
93
95
|
channel_post
|
94
96
|
edited_channel_post
|
97
|
+
business_connection
|
98
|
+
business_message
|
99
|
+
edited_business_message
|
100
|
+
deleted_business_messages
|
101
|
+
message_reaction
|
102
|
+
message_reaction_count
|
95
103
|
inline_query
|
96
104
|
chosen_inline_result
|
97
105
|
callback_query
|
@@ -102,7 +110,9 @@ module Telegram
|
|
102
110
|
my_chat_member
|
103
111
|
chat_member
|
104
112
|
chat_join_request
|
105
|
-
|
113
|
+
chat_boost
|
114
|
+
removed_chat_boost
|
115
|
+
].freeze)
|
106
116
|
|
107
117
|
class << self
|
108
118
|
# Initialize controller and process update.
|
@@ -111,9 +121,28 @@ module Telegram
|
|
111
121
|
end
|
112
122
|
|
113
123
|
def payload_from_update(update)
|
114
|
-
update
|
115
|
-
|
116
|
-
|
124
|
+
case update
|
125
|
+
when nil then nil
|
126
|
+
when Hash
|
127
|
+
# faster lookup for the case when telegram-bot-types is not used
|
128
|
+
update.find do |type, item|
|
129
|
+
return [item, type] if PAYLOAD_TYPES.include?(type)
|
130
|
+
end
|
131
|
+
else
|
132
|
+
payload_from_typed_update(update)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
private
|
137
|
+
|
138
|
+
def payload_from_typed_update(update)
|
139
|
+
PAYLOAD_TYPES.find do |type|
|
140
|
+
begin
|
141
|
+
item = update[type]
|
142
|
+
return [item, type] if item
|
143
|
+
rescue Exception # rubocop:disable Lint/RescueException
|
144
|
+
# dry-rb raises exception if field is not defined in schema
|
145
|
+
end
|
117
146
|
end
|
118
147
|
end
|
119
148
|
end
|
@@ -126,14 +155,14 @@ module Telegram
|
|
126
155
|
# that update is nil.
|
127
156
|
# ActionDispatch::Request object is passed in `webhook_request` when bot running
|
128
157
|
# in webhook mode.
|
129
|
-
def initialize(bot = nil, update = nil, webhook_request = nil)
|
158
|
+
def initialize(bot = nil, update = nil, webhook_request = nil) # rubocop:disable Lint/MissingSuper
|
130
159
|
if update.is_a?(Hash) && (update.key?(:from) || update.key?(:chat))
|
131
160
|
options = update
|
132
161
|
update = nil
|
133
162
|
end
|
134
163
|
@_bot = bot
|
135
164
|
@_update = update
|
136
|
-
@_chat, @_from = options
|
165
|
+
@_chat, @_from = options&.values_at(:chat, :from)
|
137
166
|
@_payload, @_payload_type = self.class.payload_from_update(update)
|
138
167
|
@_webhook_request = webhook_request
|
139
168
|
end
|
@@ -142,13 +171,13 @@ module Telegram
|
|
142
171
|
# when there is no such field in payload.
|
143
172
|
#
|
144
173
|
# Can be overriden with `chat` option for #initialize.
|
145
|
-
def chat
|
146
|
-
@_chat ||=
|
174
|
+
def chat # rubocop:disable Metrics/PerceivedComplexity
|
175
|
+
@_chat ||= # rubocop:disable Naming/MemoizedInstanceVariableName
|
147
176
|
if payload
|
148
177
|
if payload.is_a?(Hash)
|
149
|
-
payload['chat'] || payload['message'] && payload['message']['chat']
|
178
|
+
payload['chat'] || (payload['message'] && payload['message']['chat'])
|
150
179
|
else
|
151
|
-
payload.try(:chat) || payload.try(:message)
|
180
|
+
payload.try(:chat) || payload.try(:message)&.chat
|
152
181
|
end
|
153
182
|
end
|
154
183
|
end
|
@@ -156,7 +185,8 @@ module Telegram
|
|
156
185
|
# Accessor to `'from'` field of payload. Can be overriden with `from` option
|
157
186
|
# for #initialize.
|
158
187
|
def from
|
159
|
-
@_from ||=
|
188
|
+
@_from ||= # rubocop:disable Naming/MemoizedInstanceVariableName
|
189
|
+
payload.is_a?(Hash) ? payload['from'] : payload.try(:from)
|
160
190
|
end
|
161
191
|
|
162
192
|
# Processes current update.
|
@@ -221,7 +251,7 @@ module Telegram
|
|
221
251
|
# Silently ignore unsupported messages to not fail when user crafts
|
222
252
|
# an update with usupported command, callback query context, etc.
|
223
253
|
def action_missing(action, *_args)
|
224
|
-
logger
|
254
|
+
logger&.debug { "The action '#{action}' is not defined in #{self.class.name}" }
|
225
255
|
nil
|
226
256
|
end
|
227
257
|
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Telegram
|
2
4
|
module Bot
|
3
5
|
# Supposed to be used in development environments only.
|
4
6
|
class UpdatesPoller
|
5
7
|
class << self
|
6
|
-
@@instances = {} # rubocop:disable ClassVars
|
8
|
+
@@instances = {} # rubocop:disable Style/ClassVars
|
7
9
|
|
8
10
|
def instances
|
9
11
|
@@instances
|
@@ -36,7 +38,7 @@ module Telegram
|
|
36
38
|
end
|
37
39
|
|
38
40
|
def log(&block)
|
39
|
-
logger
|
41
|
+
logger&.info(&block)
|
40
42
|
end
|
41
43
|
|
42
44
|
def start
|
@@ -56,7 +58,7 @@ module Telegram
|
|
56
58
|
def run
|
57
59
|
while running
|
58
60
|
updates = fetch_updates
|
59
|
-
process_updates(updates) if updates
|
61
|
+
process_updates(updates) if updates&.any?
|
60
62
|
end
|
61
63
|
end
|
62
64
|
|
@@ -82,8 +84,8 @@ module Telegram
|
|
82
84
|
process_update(update)
|
83
85
|
end
|
84
86
|
end
|
85
|
-
rescue StandardError =>
|
86
|
-
logger
|
87
|
+
rescue StandardError => exception
|
88
|
+
logger&.error { ([exception.message] + exception.backtrace).join("\n") }
|
87
89
|
end
|
88
90
|
|
89
91
|
# Override this method to setup custom error collector.
|
@@ -102,10 +104,8 @@ module Telegram
|
|
102
104
|
end
|
103
105
|
|
104
106
|
if defined?(Rails.application) && Rails.application.respond_to?(:reloader)
|
105
|
-
def reloading_code
|
106
|
-
Rails.application.reloader.wrap
|
107
|
-
yield
|
108
|
-
end
|
107
|
+
def reloading_code(&block)
|
108
|
+
Rails.application.reloader.wrap(&block)
|
109
109
|
end
|
110
110
|
else
|
111
111
|
def reloading_code
|
data/lib/telegram/bot/version.rb
CHANGED
data/lib/telegram/bot.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'telegram/bot/config_methods'
|
2
4
|
|
3
5
|
module Telegram
|
@@ -12,15 +14,6 @@ module Telegram
|
|
12
14
|
# Raised for valid telegram response with 404 status code.
|
13
15
|
class NotFound < Error; end
|
14
16
|
|
15
|
-
module_function
|
16
|
-
|
17
|
-
def deprecation_0_16
|
18
|
-
@deprecation ||= begin
|
19
|
-
require 'active_support/deprecation'
|
20
|
-
ActiveSupport::Deprecation.new('0.16', 'Telegram::Bot')
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
17
|
autoload :Async, 'telegram/bot/async'
|
25
18
|
autoload :Client, 'telegram/bot/client'
|
26
19
|
autoload :ClientStub, 'telegram/bot/client_stub'
|
@@ -30,6 +23,7 @@ module Telegram
|
|
30
23
|
autoload :Tasks, 'telegram/bot/tasks'
|
31
24
|
autoload :UpdatesController, 'telegram/bot/updates_controller'
|
32
25
|
autoload :UpdatesPoller, 'telegram/bot/updates_poller'
|
26
|
+
autoload :VERSION, 'telegram/bot/version'
|
33
27
|
end
|
34
28
|
end
|
35
29
|
|
data/telegram-bot.gemspec
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
2
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
5
|
require 'telegram/bot/version'
|
4
6
|
|
@@ -12,6 +14,10 @@ Gem::Specification.new do |spec|
|
|
12
14
|
spec.homepage = 'https://github.com/telegram-bot-rb/telegram-bot'
|
13
15
|
spec.license = 'MIT'
|
14
16
|
|
17
|
+
spec.metadata = {
|
18
|
+
'rubygems_mfa_required' => 'true',
|
19
|
+
}
|
20
|
+
|
15
21
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^spec/}) }
|
16
22
|
spec.bindir = 'exe'
|
17
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: telegram-bot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.16.
|
4
|
+
version: 0.16.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Max Melentiev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|
@@ -163,7 +163,8 @@ files:
|
|
163
163
|
homepage: https://github.com/telegram-bot-rb/telegram-bot
|
164
164
|
licenses:
|
165
165
|
- MIT
|
166
|
-
metadata:
|
166
|
+
metadata:
|
167
|
+
rubygems_mfa_required: 'true'
|
167
168
|
post_install_message:
|
168
169
|
rdoc_options: []
|
169
170
|
require_paths:
|