telegram-bot 0.16.7 → 0.17.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 34995d74c520f8eae70916aeb0275f4a497efb3acdbd646deff9a3f958a68091
4
- data.tar.gz: 9435155f30d6b38fd104014186724882800dd427d50511bb8ad6918da061a278
3
+ metadata.gz: b28011561c8299c9b039c129d1395abcb4c3992d5a29ba9ac49dbc5848d74186
4
+ data.tar.gz: 5dc18d9b70aeb49a58952a1676befcd8a5371e8367ee08e2ca7e08074e718124
5
5
  SHA512:
6
- metadata.gz: 34010573106a018e76e7818206b5105a87df55fb3e937a7d1ddae9e6a25a21ed542a30bf06b9e808dccb21c2bb99f5ef07e4aff5e2666baad416836e29b07755
7
- data.tar.gz: 830516cb35cf2779bff8b8538d2bc9c9e481ce43437f5b32c4be6ac56eea55382354a98983be3aab12987868197e3a2eb66040a5e69d224f8dcabdc2e9c8d07b
6
+ metadata.gz: 3d7118c1e008c2085e48cbbfb5aeb7cae8bcb4f7804aa91e6cabd9e846a8b30b68af0c9de2c7ab56f29491643fd3f2da6c2931f82131d76c775a805008ea72bf
7
+ data.tar.gz: af484c66db4ce1dd02d115a59b6f55b1f7b28ad33ba5ff49fe02001ce28f4c70467f596ff100ec91c98c082a998c090f3bc3c93c47aed247905b3e08ec8323b7
@@ -17,25 +17,19 @@ jobs:
17
17
  runs-on: ubuntu-latest
18
18
  strategy:
19
19
  matrix:
20
- ruby:
21
- - '2.7'
22
- gemfile:
23
- - gemfiles/rails_61.gemfile
24
- - gemfiles/rails_60.gemfile
25
- - gemfiles/rails_52.gemfile
26
- - gemfiles/rails_51.gemfile
27
20
  include:
28
21
  # ruby 3.x
22
+ - ruby: '3.2'
23
+ gemfile: gemfiles/rails_81.gemfile
29
24
  - ruby: '3.2'
30
25
  gemfile: gemfiles/rails_80.gemfile
31
26
  - ruby: '3.2'
32
27
  gemfile: gemfiles/rails_72.gemfile
33
28
  - ruby: '3.2'
34
29
  gemfile: gemfiles/rails_71.gemfile
35
- - ruby: '3.0'
36
- gemfile: gemfiles/rails_61.gemfile
37
- - ruby: '3.0'
38
- gemfile: gemfiles/rails_60.gemfile
30
+ # ruby 2.x
31
+ - ruby: '2.7'
32
+ gemfile: gemfiles/rails_71.gemfile
39
33
  env:
40
34
  BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}
41
35
  steps:
data/.rubocop.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  require: rubocop-rails
2
2
 
3
3
  AllCops:
4
- TargetRubyVersion: 2.4
4
+ TargetRubyVersion: 2.7
5
5
  NewCops: enable
6
6
  SuggestExtensions: false
7
7
  Exclude:
data/Appraisals CHANGED
@@ -1,5 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ appraise 'rails-81' do
4
+ gem 'actionpack', '~> 8.1.0'
5
+ gem 'railties', '~> 8.1.0'
6
+ end
7
+
3
8
  appraise 'rails-80' do
4
9
  gem 'actionpack', '~> 8.0.0'
5
10
  gem 'railties', '~> 8.0.0'
@@ -19,23 +24,3 @@ appraise 'rails-70' do
19
24
  gem 'actionpack', '~> 7.0.0'
20
25
  gem 'railties', '~> 7.0.0'
21
26
  end
22
-
23
- appraise 'rails-61' do
24
- gem 'actionpack', '~> 6.1.0'
25
- gem 'railties', '~> 6.1.0'
26
- end
27
-
28
- appraise 'rails-60' do
29
- gem 'actionpack', '~> 6.0.0'
30
- gem 'railties', '~> 6.0.0'
31
- end
32
-
33
- appraise 'rails-52' do
34
- gem 'actionpack', '~> 5.2.0'
35
- gem 'railties', '~> 5.2.0'
36
- end
37
-
38
- appraise 'rails-51' do
39
- gem 'actionpack', '~> 5.1.0'
40
- gem 'railties', '~> 5.1.0'
41
- end
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Unreleased
2
2
 
3
+ # 0.17.0
4
+
5
+ - Rails 8.1 support
6
+ - Drop support for rails < 7.0 and ruby < 2.7
7
+ - Update to Bot API 9.6
8
+
3
9
  # 0.16.7
4
10
 
5
11
  - Update to Bot API 8.2
@@ -42,7 +42,6 @@ API_METHODS_FILE = File.expand_path('../lib/telegram/bot/client/api_methods.txt'
42
42
  File.write(API_METHODS_FILE, result_txt)
43
43
  puts '', "Updated #{API_METHODS_FILE}"
44
44
 
45
-
46
45
  puts '', 'Payload types:'
47
46
  update_tbody = doc.css('tbody').
48
47
  find { |tbody| tbody.css('td').any? { |td| td.text == 'update_id' } }
@@ -2,8 +2,8 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "actionpack", "~> 5.1.0"
6
- gem "railties", "~> 5.1.0"
5
+ gem "actionpack", "~> 8.1.0"
6
+ gem "railties", "~> 8.1.0"
7
7
 
8
8
  group :development do
9
9
  gem "appraisal", "~> 2.2"
@@ -1,5 +1,5 @@
1
1
  # Generated with bin/fetch-telegram-methods
2
- # Bot API 8.2
2
+ # Bot API 9.6
3
3
 
4
4
  getUpdates
5
5
  setWebhook
@@ -27,10 +27,13 @@ sendLocation
27
27
  sendVenue
28
28
  sendContact
29
29
  sendPoll
30
+ sendChecklist
30
31
  sendDice
32
+ sendMessageDraft
31
33
  sendChatAction
32
34
  setMessageReaction
33
35
  getUserProfilePhotos
36
+ getUserProfileAudios
34
37
  setUserEmojiStatus
35
38
  getFile
36
39
  banChatMember
@@ -38,6 +41,7 @@ unbanChatMember
38
41
  restrictChatMember
39
42
  promoteChatMember
40
43
  setChatAdministratorCustomTitle
44
+ setChatMemberTag
41
45
  banChatSenderChat
42
46
  unbanChatSenderChat
43
47
  setChatPermissions
@@ -79,6 +83,8 @@ unpinAllGeneralForumTopicMessages
79
83
  answerCallbackQuery
80
84
  getUserChatBoosts
81
85
  getBusinessConnection
86
+ getManagedBotToken
87
+ replaceManagedBotToken
82
88
  setMyCommands
83
89
  deleteMyCommands
84
90
  getMyCommands
@@ -88,18 +94,53 @@ setMyDescription
88
94
  getMyDescription
89
95
  setMyShortDescription
90
96
  getMyShortDescription
97
+ setMyProfilePhoto
98
+ removeMyProfilePhoto
91
99
  setChatMenuButton
92
100
  getChatMenuButton
93
101
  setMyDefaultAdministratorRights
94
102
  getMyDefaultAdministratorRights
103
+ getAvailableGifts
104
+ sendGift
105
+ giftPremiumSubscription
106
+ verifyUser
107
+ verifyChat
108
+ removeUserVerification
109
+ removeChatVerification
110
+ readBusinessMessage
111
+ deleteBusinessMessages
112
+ setBusinessAccountName
113
+ setBusinessAccountUsername
114
+ setBusinessAccountBio
115
+ setBusinessAccountProfilePhoto
116
+ removeBusinessAccountProfilePhoto
117
+ setBusinessAccountGiftSettings
118
+ getBusinessAccountStarBalance
119
+ transferBusinessAccountStars
120
+ getBusinessAccountGifts
121
+ getUserGifts
122
+ getChatGifts
123
+ convertGiftToStars
124
+ upgradeGift
125
+ transferGift
126
+ postStory
127
+ repostStory
128
+ editStory
129
+ deleteStory
130
+ answerWebAppQuery
131
+ savePreparedInlineMessage
132
+ savePreparedKeyboardButton
95
133
 
96
134
  editMessageText
97
135
  editMessageCaption
98
136
  editMessageMedia
99
137
  editMessageLiveLocation
100
138
  stopMessageLiveLocation
139
+ editMessageChecklist
101
140
  editMessageReplyMarkup
102
141
  stopPoll
142
+ approveSuggestedPost
143
+ declineSuggestedPost
103
144
  deleteMessage
104
145
  deleteMessages
105
146
 
@@ -119,21 +160,14 @@ setStickerSetTitle
119
160
  setStickerSetThumbnail
120
161
  setCustomEmojiStickerSetThumbnail
121
162
  deleteStickerSet
122
- getAvailableGifts
123
- sendGift
124
- verifyUser
125
- verifyChat
126
- removeUserVerification
127
- removeChatVerification
128
163
 
129
164
  answerInlineQuery
130
- answerWebAppQuery
131
- savePreparedInlineMessage
132
165
 
133
166
  sendInvoice
134
167
  createInvoiceLink
135
168
  answerShippingQuery
136
169
  answerPreCheckoutQuery
170
+ getMyStarBalance
137
171
  getStarTransactions
138
172
  refundStarPayment
139
173
  editUserStarSubscription
@@ -17,10 +17,9 @@ module Telegram
17
17
  when 'sendMediaGroup'
18
18
  extract_files_from_array!(body, :media)
19
19
  when 'editMessageMedia'
20
- replace_field(body, :media) do |value|
21
- files = {}
22
- extract_files_from_hash(value, files).tap { body.merge!(files) }
23
- end
20
+ extract_files_from_field!(body, :media)
21
+ when 'postStory'
22
+ extract_files_from_field!(body, :content)
24
23
  end
25
24
  body.each do |key, val|
26
25
  body[key] = val.to_json if val.is_a?(Hash) || val.is_a?(Array)
@@ -29,6 +28,14 @@ module Telegram
29
28
 
30
29
  private
31
30
 
31
+ # Extracts files from the given field and merges them into the body.
32
+ def extract_files_from_field!(body, field_name)
33
+ replace_field(body, field_name) do |value|
34
+ files = {}
35
+ extract_files_from_hash(value, files).tap { body.merge!(files) }
36
+ end
37
+ end
38
+
32
39
  # Detects field by symbol or string name and replaces it with mapped value.
33
40
  def replace_field(hash, field_name)
34
41
  field_name = [field_name.to_sym, field_name.to_s].find { |x| hash.key?(x) }
@@ -47,7 +47,7 @@ module Telegram
47
47
  as: RoutesHelper.route_name_for_bot(bot),
48
48
  format: false,
49
49
  }.merge!(options)
50
- post(path || "telegram/#{bot.token && RoutesHelper.token_hash(bot.token)}", params)
50
+ post(path || "telegram/#{bot.token && RoutesHelper.token_hash(bot.token)}", **params)
51
51
  UpdatesPoller.add(bot, controller) if Telegram.bot_poller_mode?
52
52
  end
53
53
  end
@@ -82,8 +82,8 @@ module Telegram
82
82
  expected_number.public_send(expectation_method, matching_requests_count)
83
83
  end
84
84
 
85
- def with(*args, &block)
86
- @arg_list_matcher = ArgListMatcher.new(*args, &block)
85
+ def with(...)
86
+ @arg_list_matcher = ArgListMatcher.new(...)
87
87
  self
88
88
  end
89
89
 
@@ -8,9 +8,7 @@ module Telegram
8
8
  module Instrumentation
9
9
  extend ActiveSupport::Concern
10
10
 
11
- included do
12
- config_accessor :logger
13
- end
11
+ include AbstractController::Logger
14
12
 
15
13
  class << self
16
14
  def instrument(action, *args, &block)
@@ -30,11 +28,9 @@ module Telegram
30
28
  }
31
29
  Instrumentation.instrument(:start_processing, raw_payload.dup)
32
30
  Instrumentation.instrument(:process_action, raw_payload) do |payload|
33
- begin
34
- super
35
- ensure
36
- append_info_to_payload(payload)
37
- end
31
+ super
32
+ ensure
33
+ append_info_to_payload(payload)
38
34
  end
39
35
  end
40
36
 
@@ -1,5 +1,5 @@
1
1
  # Generated with bin/fetch-telegram-methods
2
- # Bot API 8.2
2
+ # Bot API 9.6
3
3
  message
4
4
  edited_message
5
5
  channel_post
@@ -23,3 +23,4 @@ chat_member
23
23
  chat_join_request
24
24
  chat_boost
25
25
  removed_chat_boost
26
+ managed_bot
@@ -33,7 +33,7 @@ RSpec.shared_context 'telegram/bot/updates_controller' do
33
33
  def deep_stringify(input)
34
34
  case input
35
35
  when Array then input.map(&method(__callee__))
36
- when Hash then input.map { |k, v| [k.to_s, deep_stringify(v)] }.to_h
36
+ when Hash then input.to_h { |k, v| [k.to_s, deep_stringify(v)] }
37
37
  else input
38
38
  end
39
39
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'logger'
3
4
  require 'abstract_controller'
4
5
  require 'active_support/core_ext/string/inflections'
5
6
  require 'active_support/callbacks'
@@ -120,12 +121,10 @@ module Telegram
120
121
 
121
122
  def payload_from_typed_update(update)
122
123
  PAYLOAD_TYPES.find do |type|
123
- begin
124
- item = update[type]
125
- return [item, type] if item
126
- rescue Exception # rubocop:disable Lint/RescueException
127
- # dry-rb raises exception if field is not defined in schema
128
- end
124
+ item = update[type]
125
+ return [item, type] if item
126
+ rescue Exception # rubocop:disable Lint/RescueException
127
+ # dry-rb raises exception if field is not defined in schema
129
128
  end
130
129
  end
131
130
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Telegram
4
4
  module Bot
5
- VERSION = '0.16.7'
5
+ VERSION = '0.17.0'
6
6
 
7
7
  def self.gem_version
8
8
  Gem::Version.new VERSION
data/telegram-bot.gemspec CHANGED
@@ -23,10 +23,10 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  spec.require_paths = ['lib']
25
25
 
26
- spec.required_ruby_version = '>= 2.4'
26
+ spec.required_ruby_version = '>= 2.7'
27
27
 
28
- spec.add_dependency 'actionpack', '>= 4.0', '< 8.1'
29
- spec.add_dependency 'activesupport', '>= 4.0', '< 8.1'
28
+ spec.add_dependency 'actionpack', '>= 7.0', '< 8.2'
29
+ spec.add_dependency 'activesupport', '>= 7.0', '< 8.2'
30
30
  spec.add_dependency 'httpclient', '~> 2.7'
31
31
 
32
32
  spec.add_development_dependency 'bundler', '> 1.16'
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.7
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Melentiev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-01-15 00:00:00.000000000 Z
11
+ date: 2026-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -16,40 +16,40 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4.0'
19
+ version: '7.0'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '8.1'
22
+ version: '8.2'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '4.0'
29
+ version: '7.0'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '8.1'
32
+ version: '8.2'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: activesupport
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: '4.0'
39
+ version: '7.0'
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '8.1'
42
+ version: '8.2'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: '4.0'
49
+ version: '7.0'
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '8.1'
52
+ version: '8.2'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: httpclient
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -115,14 +115,11 @@ files:
115
115
  - bin/git-hooks/pre-commit
116
116
  - bin/install_git_hooks
117
117
  - bin/setup
118
- - gemfiles/rails_51.gemfile
119
- - gemfiles/rails_52.gemfile
120
- - gemfiles/rails_60.gemfile
121
- - gemfiles/rails_61.gemfile
122
118
  - gemfiles/rails_70.gemfile
123
119
  - gemfiles/rails_71.gemfile
124
120
  - gemfiles/rails_72.gemfile
125
121
  - gemfiles/rails_80.gemfile
122
+ - gemfiles/rails_81.gemfile
126
123
  - lib/tasks/telegram-bot.rake
127
124
  - lib/telegram/bot.rb
128
125
  - lib/telegram/bot/async.rb
@@ -176,7 +173,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
176
173
  requirements:
177
174
  - - ">="
178
175
  - !ruby/object:Gem::Version
179
- version: '2.4'
176
+ version: '2.7'
180
177
  required_rubygems_version: !ruby/object:Gem::Requirement
181
178
  requirements:
182
179
  - - ">="
@@ -1,21 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "actionpack", "~> 5.2.0"
6
- gem "railties", "~> 5.2.0"
7
-
8
- group :development do
9
- gem "appraisal", "~> 2.2"
10
- gem "debug", "~> 1.9.2"
11
- gem "sdoc", "~> 2.0.3"
12
- gem "telegram-bot-types", "~> 0.6.3"
13
- gem "rspec", "~> 3.12.0"
14
- gem "rspec-its", "~> 1.3.0"
15
- gem "rspec-rails", "~> 4.0.2"
16
- gem "rubocop", "~> 1.59.0"
17
- gem "rubocop-rails", "~> 2.23.1"
18
- gem "coveralls", "~> 0.8.23", require: false
19
- end
20
-
21
- gemspec path: "../"
@@ -1,21 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "actionpack", "~> 6.0.0"
6
- gem "railties", "~> 6.0.0"
7
-
8
- group :development do
9
- gem "appraisal", "~> 2.2"
10
- gem "debug", "~> 1.9.2"
11
- gem "sdoc", "~> 2.0.3"
12
- gem "telegram-bot-types", "~> 0.6.3"
13
- gem "rspec", "~> 3.12.0"
14
- gem "rspec-its", "~> 1.3.0"
15
- gem "rspec-rails", "~> 4.0.2"
16
- gem "rubocop", "~> 1.59.0"
17
- gem "rubocop-rails", "~> 2.23.1"
18
- gem "coveralls", "~> 0.8.23", require: false
19
- end
20
-
21
- gemspec path: "../"
@@ -1,21 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "actionpack", "~> 6.1.0"
6
- gem "railties", "~> 6.1.0"
7
-
8
- group :development do
9
- gem "appraisal", "~> 2.2"
10
- gem "debug", "~> 1.9.2"
11
- gem "sdoc", "~> 2.0.3"
12
- gem "telegram-bot-types", "~> 0.6.3"
13
- gem "rspec", "~> 3.12.0"
14
- gem "rspec-its", "~> 1.3.0"
15
- gem "rspec-rails", "~> 4.0.2"
16
- gem "rubocop", "~> 1.59.0"
17
- gem "rubocop-rails", "~> 2.23.1"
18
- gem "coveralls", "~> 0.8.23", require: false
19
- end
20
-
21
- gemspec path: "../"