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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61a22f62815ac892095b9a544fa1ce2cf2273f9e3c1d6bbe371b7a548e1f8762
|
4
|
+
data.tar.gz: 5b80eb16b7bd5bef68a4dcbf5a30cda40d1aaba95774930f9d78000dec3db624
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6cbf0d110b678071dae96a0cabb0ac6142089c5482f25906a0684ba904c348300c48422c9254884025ccab214ce7487fad852b7d22ba696384937155b4030896
|
7
|
+
data.tar.gz: 54f32643648797d54ac815f989bc2902faee6ed17357e69d83fcbbfe17640ddcc3b669b83fd16e54ab72574cecccc40b03161f716340552851f017711d3bf68f
|
data/.codeclimate.yml
CHANGED
data/.github/workflows/ci.yml
CHANGED
@@ -3,15 +3,15 @@ name: Lint & Test
|
|
3
3
|
on: [push, pull_request]
|
4
4
|
|
5
5
|
jobs:
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
6
|
+
lint:
|
7
|
+
runs-on: ubuntu-latest
|
8
|
+
steps:
|
9
|
+
- uses: actions/checkout@v3
|
10
|
+
- uses: ruby/setup-ruby@v1
|
11
|
+
with:
|
12
|
+
ruby-version: '3.2'
|
13
|
+
bundler-cache: true
|
14
|
+
- run: bundle exec rubocop
|
15
15
|
|
16
16
|
test:
|
17
17
|
runs-on: ubuntu-latest
|
data/.rubocop.yml
CHANGED
@@ -1,15 +1,18 @@
|
|
1
|
-
|
2
|
-
Gemspec/RequiredRubyVersion: {Enabled: false}
|
1
|
+
require: rubocop-rails
|
3
2
|
|
4
|
-
|
3
|
+
AllCops:
|
4
|
+
TargetRubyVersion: 2.4
|
5
|
+
NewCops: enable
|
6
|
+
SuggestExtensions: false
|
7
|
+
Exclude:
|
8
|
+
- gemfiles/*
|
9
|
+
- tmp/*
|
10
|
+
- vendor/**/* # for github actions
|
5
11
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
# EnforcedStyle:
|
11
|
-
# - with_first_parameter
|
12
|
-
# - with_fixed_indentation
|
12
|
+
Gemspec/DevelopmentDependencies: {Enabled: false}
|
13
|
+
|
14
|
+
Layout/ArgumentAlignment: {EnforcedStyle: with_fixed_indentation}
|
15
|
+
Layout/ParameterAlignment: {EnforcedStyle: with_fixed_indentation}
|
13
16
|
|
14
17
|
# Breaks
|
15
18
|
#
|
@@ -19,7 +22,11 @@ Layout/AlignParameters:
|
|
19
22
|
# )
|
20
23
|
Layout/ClosingParenthesisIndentation: {Enabled: false}
|
21
24
|
Layout/DotPosition: {EnforcedStyle: trailing}
|
25
|
+
Layout/EmptyLineAfterGuardClause: {Enabled: false}
|
22
26
|
Layout/FirstParameterIndentation: {EnforcedStyle: consistent}
|
27
|
+
Layout/LineContinuationLeadingSpace: {Enabled: false}
|
28
|
+
Layout/LineEndStringConcatenationIndentation: {EnforcedStyle: indented}
|
29
|
+
Layout/LineLength: {Max: 100}
|
23
30
|
# Same as Layout/ClosingParenthesisIndentation
|
24
31
|
Layout/MultilineMethodCallBraceLayout: {Enabled: false}
|
25
32
|
Layout/MultilineMethodCallIndentation: {EnforcedStyle: indented}
|
@@ -28,8 +35,16 @@ Layout/SpaceInsideHashLiteralBraces: {EnforcedStyle: no_space}
|
|
28
35
|
|
29
36
|
# Offences named scopes and `expect {}.to change {}`.
|
30
37
|
Lint/AmbiguousBlockAssociation: {Enabled: false}
|
38
|
+
Lint/EmptyBlock:
|
39
|
+
Exclude:
|
40
|
+
- spec/**/*
|
31
41
|
|
42
|
+
Naming/FileName:
|
43
|
+
Exclude:
|
44
|
+
- lib/tasks/telegram-bot.rake
|
45
|
+
Naming/MethodParameterName: {MinNameLength: 2}
|
32
46
|
Naming/PredicateName: {Enabled: false}
|
47
|
+
Naming/RescuedExceptionsVariableName: {PreferredName: exception}
|
33
48
|
Naming/VariableNumber: {EnforcedStyle: snake_case}
|
34
49
|
|
35
50
|
Style/Alias: {Enabled: false}
|
@@ -45,12 +60,16 @@ Style/ModuleFunction: {Enabled: false}
|
|
45
60
|
Style/NestedParenthesizedCalls: {Enabled: false}
|
46
61
|
Style/SignalException: {EnforcedStyle: only_raise}
|
47
62
|
Style/TrailingCommaInArguments: {Enabled: false}
|
48
|
-
Style/
|
63
|
+
Style/TrailingCommaInArrayLiteral: {EnforcedStyleForMultiline: comma}
|
64
|
+
Style/TrailingCommaInHashLiteral: {EnforcedStyleForMultiline: comma}
|
49
65
|
|
50
66
|
Metrics/AbcSize: {Max: 21}
|
51
67
|
# Other metrics are just enough.
|
52
68
|
# This one offences all specs, routes and some initializers.
|
53
69
|
Metrics/BlockLength: {Enabled: false}
|
54
|
-
Metrics/LineLength: {Max: 100}
|
55
70
|
Metrics/MethodLength: {Max: 30}
|
56
71
|
Metrics/CyclomaticComplexity: {Max: 8}
|
72
|
+
|
73
|
+
Rails/IndexWith: {Enabled: false}
|
74
|
+
Rails/RakeEnvironment: {Enabled: false}
|
75
|
+
Rails/ShortI18n: {Enabled: false}
|
data/Appraisals
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -1,11 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
source 'https://rubygems.org'
|
2
4
|
gemspec
|
3
5
|
|
4
6
|
group :development do
|
5
7
|
gem 'appraisal', '~> 2.2'
|
6
8
|
|
7
|
-
gem '
|
8
|
-
gem 'pry-byebug', '~> 3.10.1'
|
9
|
+
gem 'debug', '~> 1.9.2'
|
9
10
|
gem 'sdoc', '~> 2.0.3'
|
10
11
|
|
11
12
|
gem 'telegram-bot-types', '~> 0.6.3'
|
@@ -14,7 +15,8 @@ group :development do
|
|
14
15
|
gem 'rspec-its', '~> 1.3.0'
|
15
16
|
gem 'rspec-rails', '~> 4.0.2'
|
16
17
|
|
17
|
-
gem 'rubocop', '~>
|
18
|
+
gem 'rubocop', '~> 1.59.0'
|
19
|
+
gem 'rubocop-rails', '~> 2.23.1'
|
18
20
|
|
19
21
|
gem 'coveralls', '~> 0.8.23', require: false
|
20
22
|
end
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
data/bin/fetch-telegram-methods
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
2
4
|
#
|
3
5
|
# Fetch list of methods from Telegram docs.
|
4
6
|
# Use it to update client.rb.
|
@@ -6,7 +8,7 @@
|
|
6
8
|
require 'net/http'
|
7
9
|
require 'nokogiri'
|
8
10
|
|
9
|
-
DOCS_URL = 'https://core.telegram.org/bots/api'
|
11
|
+
DOCS_URL = 'https://core.telegram.org/bots/api'
|
10
12
|
|
11
13
|
page_html = Net::HTTP.get(URI(DOCS_URL))
|
12
14
|
doc = Nokogiri::HTML(page_html)
|
@@ -18,11 +20,11 @@ headers = doc.css('h3, h4').
|
|
18
20
|
map { |g| g.map(&:text) }
|
19
21
|
|
20
22
|
# Method starts with lowercase and does not have spaces.
|
21
|
-
NOT_METHOD_REGEXP = /(\A[^a-z])|\s
|
23
|
+
NOT_METHOD_REGEXP = /(\A[^a-z])|\s/.freeze
|
22
24
|
|
23
25
|
# Filter method names.
|
24
26
|
method_list = headers.
|
25
|
-
map { |g| g.
|
27
|
+
map { |g| g.grep_v(NOT_METHOD_REGEXP) }.
|
26
28
|
reject(&:empty?)
|
27
29
|
|
28
30
|
api_version = doc.text.match(/^(?:Introducing )?(Bot API ([\d\.]+))\.?$/)
|
data/bin/install_git_hooks
CHANGED
data/gemfiles/rails_51.gemfile
CHANGED
@@ -7,14 +7,14 @@ gem "railties", "~> 5.1.0"
|
|
7
7
|
|
8
8
|
group :development do
|
9
9
|
gem "appraisal", "~> 2.2"
|
10
|
-
gem "
|
11
|
-
gem "pry-byebug", "~> 3.10.1"
|
10
|
+
gem "debug", "~> 1.9.2"
|
12
11
|
gem "sdoc", "~> 2.0.3"
|
13
12
|
gem "telegram-bot-types", "~> 0.6.3"
|
14
13
|
gem "rspec", "~> 3.12.0"
|
15
14
|
gem "rspec-its", "~> 1.3.0"
|
16
15
|
gem "rspec-rails", "~> 4.0.2"
|
17
|
-
gem "rubocop", "~>
|
16
|
+
gem "rubocop", "~> 1.59.0"
|
17
|
+
gem "rubocop-rails", "~> 2.23.1"
|
18
18
|
gem "coveralls", "~> 0.8.23", require: false
|
19
19
|
end
|
20
20
|
|
data/gemfiles/rails_52.gemfile
CHANGED
@@ -7,14 +7,14 @@ gem "railties", "~> 5.2.0"
|
|
7
7
|
|
8
8
|
group :development do
|
9
9
|
gem "appraisal", "~> 2.2"
|
10
|
-
gem "
|
11
|
-
gem "pry-byebug", "~> 3.10.1"
|
10
|
+
gem "debug", "~> 1.9.2"
|
12
11
|
gem "sdoc", "~> 2.0.3"
|
13
12
|
gem "telegram-bot-types", "~> 0.6.3"
|
14
13
|
gem "rspec", "~> 3.12.0"
|
15
14
|
gem "rspec-its", "~> 1.3.0"
|
16
15
|
gem "rspec-rails", "~> 4.0.2"
|
17
|
-
gem "rubocop", "~>
|
16
|
+
gem "rubocop", "~> 1.59.0"
|
17
|
+
gem "rubocop-rails", "~> 2.23.1"
|
18
18
|
gem "coveralls", "~> 0.8.23", require: false
|
19
19
|
end
|
20
20
|
|
data/gemfiles/rails_60.gemfile
CHANGED
@@ -7,14 +7,14 @@ gem "railties", "~> 6.0.0"
|
|
7
7
|
|
8
8
|
group :development do
|
9
9
|
gem "appraisal", "~> 2.2"
|
10
|
-
gem "
|
11
|
-
gem "pry-byebug", "~> 3.10.1"
|
10
|
+
gem "debug", "~> 1.9.2"
|
12
11
|
gem "sdoc", "~> 2.0.3"
|
13
12
|
gem "telegram-bot-types", "~> 0.6.3"
|
14
13
|
gem "rspec", "~> 3.12.0"
|
15
14
|
gem "rspec-its", "~> 1.3.0"
|
16
15
|
gem "rspec-rails", "~> 4.0.2"
|
17
|
-
gem "rubocop", "~>
|
16
|
+
gem "rubocop", "~> 1.59.0"
|
17
|
+
gem "rubocop-rails", "~> 2.23.1"
|
18
18
|
gem "coveralls", "~> 0.8.23", require: false
|
19
19
|
end
|
20
20
|
|
data/gemfiles/rails_61.gemfile
CHANGED
@@ -7,14 +7,14 @@ gem "railties", "~> 6.1.0"
|
|
7
7
|
|
8
8
|
group :development do
|
9
9
|
gem "appraisal", "~> 2.2"
|
10
|
-
gem "
|
11
|
-
gem "pry-byebug", "~> 3.10.1"
|
10
|
+
gem "debug", "~> 1.9.2"
|
12
11
|
gem "sdoc", "~> 2.0.3"
|
13
12
|
gem "telegram-bot-types", "~> 0.6.3"
|
14
13
|
gem "rspec", "~> 3.12.0"
|
15
14
|
gem "rspec-its", "~> 1.3.0"
|
16
15
|
gem "rspec-rails", "~> 4.0.2"
|
17
|
-
gem "rubocop", "~>
|
16
|
+
gem "rubocop", "~> 1.59.0"
|
17
|
+
gem "rubocop-rails", "~> 2.23.1"
|
18
18
|
gem "coveralls", "~> 0.8.23", require: false
|
19
19
|
end
|
20
20
|
|
data/gemfiles/rails_70.gemfile
CHANGED
@@ -7,14 +7,14 @@ gem "railties", "~> 7.0.0"
|
|
7
7
|
|
8
8
|
group :development do
|
9
9
|
gem "appraisal", "~> 2.2"
|
10
|
-
gem "
|
11
|
-
gem "pry-byebug", "~> 3.10.1"
|
10
|
+
gem "debug", "~> 1.9.2"
|
12
11
|
gem "sdoc", "~> 2.0.3"
|
13
12
|
gem "telegram-bot-types", "~> 0.6.3"
|
14
13
|
gem "rspec", "~> 3.12.0"
|
15
14
|
gem "rspec-its", "~> 1.3.0"
|
16
15
|
gem "rspec-rails", "~> 4.0.2"
|
17
|
-
gem "rubocop", "~>
|
16
|
+
gem "rubocop", "~> 1.59.0"
|
17
|
+
gem "rubocop-rails", "~> 2.23.1"
|
18
18
|
gem "coveralls", "~> 0.8.23", require: false
|
19
19
|
end
|
20
20
|
|
data/gemfiles/rails_71.gemfile
CHANGED
@@ -7,14 +7,14 @@ gem "railties", "~> 7.1.0"
|
|
7
7
|
|
8
8
|
group :development do
|
9
9
|
gem "appraisal", "~> 2.2"
|
10
|
-
gem "
|
11
|
-
gem "pry-byebug", "~> 3.10.1"
|
10
|
+
gem "debug", "~> 1.9.2"
|
12
11
|
gem "sdoc", "~> 2.0.3"
|
13
12
|
gem "telegram-bot-types", "~> 0.6.3"
|
14
13
|
gem "rspec", "~> 3.12.0"
|
15
14
|
gem "rspec-its", "~> 1.3.0"
|
16
15
|
gem "rspec-rails", "~> 4.0.2"
|
17
|
-
gem "rubocop", "~>
|
16
|
+
gem "rubocop", "~> 1.59.0"
|
17
|
+
gem "rubocop-rails", "~> 2.23.1"
|
18
18
|
gem "coveralls", "~> 0.8.23", require: false
|
19
19
|
end
|
20
20
|
|
data/lib/tasks/telegram-bot.rake
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
namespace :telegram do
|
2
4
|
namespace :bot do
|
3
5
|
desc 'Run poller. It broadcasts Rails.logger to STDOUT in dev like `rails s` do. ' \
|
@@ -6,14 +8,14 @@ namespace :telegram do
|
|
6
8
|
ENV['BOT_POLLER_MODE'] = 'true'
|
7
9
|
Rake::Task['environment'].invoke
|
8
10
|
if ENV.fetch('LOG_TO_STDOUT') { Rails.env.development? }.present?
|
9
|
-
console = ActiveSupport::Logger.new(
|
10
|
-
if
|
11
|
-
|
11
|
+
console = ActiveSupport::Logger.new($stderr)
|
12
|
+
if Rails.logger.respond_to?(:broadcast_to)
|
13
|
+
Rails.logger.broadcast_to(console)
|
12
14
|
else
|
13
15
|
Rails.logger.extend ActiveSupport::Logger.broadcast console
|
14
16
|
end
|
15
17
|
end
|
16
|
-
Telegram::Bot::UpdatesPoller.start(ENV['BOT']
|
18
|
+
Telegram::Bot::UpdatesPoller.start(ENV['BOT']&.to_sym || :default)
|
17
19
|
end
|
18
20
|
|
19
21
|
desc 'Set webhook urls for all bots'
|
data/lib/telegram/bot/async.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Telegram
|
2
4
|
module Bot
|
3
5
|
# Telegram clients can perform requests in async way with
|
@@ -128,7 +130,7 @@ module Telegram
|
|
128
130
|
#
|
129
131
|
# If no block is given returns previously set value or the global one,
|
130
132
|
# set by #async=.
|
131
|
-
def async(val = true)
|
133
|
+
def async(val = true) # rubocop:disable Style/OptionalBooleanParameter
|
132
134
|
thread_key = object_id
|
133
135
|
thread_store = Async.thread_store
|
134
136
|
return thread_store.fetch(thread_key) { @async } unless block_given?
|
@@ -137,7 +139,7 @@ module Telegram
|
|
137
139
|
thread_store[thread_key] = self.class.prepare_async_val(val)
|
138
140
|
yield
|
139
141
|
ensure
|
140
|
-
if
|
142
|
+
if old_val == MISSING_VALUE
|
141
143
|
thread_store.delete(thread_key)
|
142
144
|
else
|
143
145
|
thread_store[thread_key] = old_val
|
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'active_support/core_ext/string/inflections'
|
2
4
|
|
3
5
|
module Telegram
|
4
6
|
module Bot
|
5
7
|
class Client
|
6
8
|
module ApiHelper
|
7
|
-
METHODS_LIST_FILE = File.expand_path('
|
9
|
+
METHODS_LIST_FILE = File.expand_path('api_methods.txt', __dir__)
|
8
10
|
|
9
11
|
class << self
|
10
12
|
def methods_list(file = METHODS_LIST_FILE)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Generated with bin/fetch-telegram-methods
|
2
|
-
# Bot API
|
2
|
+
# Bot API 7.3
|
3
3
|
|
4
4
|
getUpdates
|
5
5
|
setWebhook
|
@@ -11,7 +11,9 @@ logOut
|
|
11
11
|
close
|
12
12
|
sendMessage
|
13
13
|
forwardMessage
|
14
|
+
forwardMessages
|
14
15
|
copyMessage
|
16
|
+
copyMessages
|
15
17
|
sendPhoto
|
16
18
|
sendAudio
|
17
19
|
sendDocument
|
@@ -26,6 +28,7 @@ sendContact
|
|
26
28
|
sendPoll
|
27
29
|
sendDice
|
28
30
|
sendChatAction
|
31
|
+
setMessageReaction
|
29
32
|
getUserProfilePhotos
|
30
33
|
getFile
|
31
34
|
banChatMember
|
@@ -70,6 +73,8 @@ hideGeneralForumTopic
|
|
70
73
|
unhideGeneralForumTopic
|
71
74
|
unpinAllGeneralForumTopicMessages
|
72
75
|
answerCallbackQuery
|
76
|
+
getUserChatBoosts
|
77
|
+
getBusinessConnection
|
73
78
|
setMyCommands
|
74
79
|
deleteMyCommands
|
75
80
|
getMyCommands
|
@@ -92,6 +97,7 @@ stopMessageLiveLocation
|
|
92
97
|
editMessageReplyMarkup
|
93
98
|
stopPoll
|
94
99
|
deleteMessage
|
100
|
+
deleteMessages
|
95
101
|
|
96
102
|
sendSticker
|
97
103
|
getStickerSet
|
@@ -101,6 +107,7 @@ createNewStickerSet
|
|
101
107
|
addStickerToSet
|
102
108
|
setStickerPositionInSet
|
103
109
|
deleteStickerFromSet
|
110
|
+
replaceStickerInSet
|
104
111
|
setStickerEmojiList
|
105
112
|
setStickerKeywords
|
106
113
|
setStickerMaskPosition
|
data/lib/telegram/bot/client.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'active_support/core_ext/hash/keys'
|
2
4
|
require 'httpclient'
|
3
5
|
|
4
6
|
module Telegram
|
5
7
|
module Bot
|
6
8
|
class Client
|
7
|
-
SERVER = 'https://api.telegram.org'
|
8
|
-
URL_TEMPLATE = '%<server>s/bot%<token>s/'
|
9
|
+
SERVER = 'https://api.telegram.org'
|
10
|
+
URL_TEMPLATE = '%<server>s/bot%<token>s/'
|
9
11
|
|
10
12
|
autoload :RequestBodyFormatter, 'telegram/bot/client/request_body_formatter'
|
11
13
|
autoload :TypedResponse, 'telegram/bot/client/typed_response'
|
@@ -41,7 +43,7 @@ module Telegram
|
|
41
43
|
end
|
42
44
|
|
43
45
|
def error_for_response(response)
|
44
|
-
result = JSON.parse(response.body) rescue nil # rubocop:disable RescueModifier
|
46
|
+
result = JSON.parse(response.body) rescue nil # rubocop:disable Style/RescueModifier
|
45
47
|
return Error.new(response.reason) unless result
|
46
48
|
message = result['description'] || '-'
|
47
49
|
# This errors are raised only for valid responses from Telegram
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Telegram
|
2
4
|
module Bot
|
3
5
|
# Stubbed client for tests. Saves all requests into #requests hash.
|
@@ -17,7 +19,7 @@ module Telegram
|
|
17
19
|
class << self
|
18
20
|
# Any call to Client.new will return ClientStub instance when `enabled` is true.
|
19
21
|
# Can be used with a block.
|
20
|
-
def stub_all!(enabled = true)
|
22
|
+
def stub_all!(enabled = true) # rubocop:disable Style/OptionalBooleanParameter
|
21
23
|
Client.extend(StubbedConstructor) unless Client < StubbedConstructor
|
22
24
|
return @_stub_all = enabled unless block_given?
|
23
25
|
begin
|
@@ -34,7 +36,7 @@ module Telegram
|
|
34
36
|
end
|
35
37
|
end
|
36
38
|
|
37
|
-
def initialize(token = nil, username = nil, **options)
|
39
|
+
def initialize(token = nil, username = nil, **options) # rubocop:disable Lint/MissingSuper
|
38
40
|
@token = token || options[:token]
|
39
41
|
@username = username || options[:username] || token
|
40
42
|
reset
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'active_support/core_ext/hash/keys'
|
2
4
|
require 'active_support/core_ext/hash/indifferent_access'
|
3
5
|
|
@@ -44,7 +46,7 @@ module Telegram
|
|
44
46
|
# from `secrets.yml` merging `telegram['bot']` at `:default` key.
|
45
47
|
#
|
46
48
|
# Can be overwritten with .bots_config=
|
47
|
-
def bots_config
|
49
|
+
def bots_config # rubocop:disable Metrics/PerceivedComplexity
|
48
50
|
@bots_config ||=
|
49
51
|
if defined?(Rails.application)
|
50
52
|
app = Rails.application
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'active_support/concern'
|
2
4
|
require 'active_support/core_ext/hash/indifferent_access'
|
3
5
|
require 'active_support/json'
|
@@ -21,7 +23,7 @@ module Telegram
|
|
21
23
|
end
|
22
24
|
|
23
25
|
def inspect
|
24
|
-
"#<#{self.class.name}(#{controller
|
26
|
+
"#<#{self.class.name}(#{controller&.name})>"
|
25
27
|
end
|
26
28
|
end
|
27
29
|
end
|
data/lib/telegram/bot/railtie.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'telegram/bot/routes_helper'
|
2
4
|
|
3
5
|
module Telegram
|
@@ -10,7 +12,7 @@ module Telegram
|
|
10
12
|
end
|
11
13
|
|
12
14
|
config.before_initialize do
|
13
|
-
::ActionDispatch::Routing::Mapper.
|
15
|
+
::ActionDispatch::Routing::Mapper.include RoutesHelper
|
14
16
|
end
|
15
17
|
|
16
18
|
initializer 'telegram.bot.updates_controller.set_config' do |app|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'telegram/bot/rspec'
|
2
4
|
require 'telegram/bot/rspec/message_helpers'
|
3
5
|
|
@@ -7,7 +9,7 @@ RSpec.shared_context 'telegram/bot/callback_query' do
|
|
7
9
|
|
8
10
|
subject { -> { dispatch callback_query: payload } }
|
9
11
|
let(:payload) { {id: callback_query_id, from: from, message: message, data: data} }
|
10
|
-
let(:callback_query_id) { 11 }
|
12
|
+
let(:callback_query_id) { '11' }
|
11
13
|
let(:message_id) { 22 }
|
12
14
|
let(:message) { {message_id: message_id, chat: chat, text: 'message text'} }
|
13
15
|
let(:data) { raise '`let(:data) { "callback query data here" }` is required' }
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Telegram
|
2
4
|
module Bot
|
3
5
|
module RSpec
|
@@ -61,14 +63,14 @@ module Telegram
|
|
61
63
|
|
62
64
|
attr_reader :performed_requests, :description
|
63
65
|
|
64
|
-
def initialize(bot, action, description: nil)
|
66
|
+
def initialize(bot, action, description: nil) # rubocop:disable Lint/MissingSuper
|
65
67
|
@bot = bot
|
66
68
|
@action = action
|
67
69
|
@description = description || "make #{action} telegram request"
|
68
70
|
exactly(1)
|
69
71
|
end
|
70
72
|
|
71
|
-
def matches?(proc) # rubocop:disable AbcSize
|
73
|
+
def matches?(proc) # rubocop:disable Metrics/AbcSize
|
72
74
|
raise ArgumentError, 'matcher only supports block expectations' unless proc.is_a?(Proc)
|
73
75
|
original_requests_count = bot.requests[action].count
|
74
76
|
proc.call
|
@@ -115,15 +117,15 @@ module Telegram
|
|
115
117
|
:arg_list_matcher, :matching_requests_count
|
116
118
|
|
117
119
|
def base_message
|
118
|
-
"make #{expectation_type.to_s.tr('_', ' ')} #{expected_number} " \
|
119
|
-
"#{bot.inspect}.#{action} requests,"
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
end
|
120
|
+
msg = "make #{expectation_type.to_s.tr('_', ' ')} #{expected_number} " \
|
121
|
+
"#{bot.inspect}.#{action} requests,"
|
122
|
+
msg += " with #{arg_list_matcher}," if arg_list_matcher
|
123
|
+
msg += " but made #{matching_requests_count}"
|
124
|
+
if performed_requests
|
125
|
+
actual_args = performed_requests.map(&:inspect).join(', ')
|
126
|
+
msg += ", and #{performed_requests.count} with #{actual_args}"
|
126
127
|
end
|
128
|
+
msg
|
127
129
|
end
|
128
130
|
end
|
129
131
|
|