From b84c48bc1da03a40b02f7e7e07501cc0aed5a3f6 Mon Sep 17 00:00:00 2001 From: Max Melentiev Date: Sat, 4 Apr 2020 22:26:09 +0300 Subject: [PATCH] Update to Bot API 4.7 --- CHANGELOG.md | 4 ++++ Gemfile | 2 +- gemfiles/rails_42.gemfile | 2 +- gemfiles/rails_50.gemfile | 2 +- gemfiles/rails_51.gemfile | 2 +- gemfiles/rails_52.gemfile | 2 +- gemfiles/rails_60.gemfile | 2 +- gemfiles/rails_61.gemfile | 2 +- lib/telegram/bot/client/api_methods.txt | 7 ++++++- lib/telegram/bot/updates_controller.rb | 8 +++++++- spec/telegram/bot/updates_controller_spec.rb | 7 +++++++ 11 files changed, 31 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0efb8e4..1c69c4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Unreleased +- Update to Bot API 4.7 + +# 0.14.3 + - Rails 6.0 support. - Update to Bot API 4.4. diff --git a/Gemfile b/Gemfile index 3cc2f4d..c87d544 100644 --- a/Gemfile +++ b/Gemfile @@ -8,7 +8,7 @@ group :development do gem 'pry-byebug', '~> 3.2.0' gem 'sdoc', '~> 0.4.1' - gem 'telegram-bot-types', '~> 0.6.0' + gem 'telegram-bot-types', '~> 0.6.2' gem 'rspec', '~> 3.5.0' gem 'rspec-its', '~> 1.1.0' diff --git a/gemfiles/rails_42.gemfile b/gemfiles/rails_42.gemfile index b600d8a..08dc582 100644 --- a/gemfiles/rails_42.gemfile +++ b/gemfiles/rails_42.gemfile @@ -10,7 +10,7 @@ group :development do gem "pry", "~> 0.10.1" gem "pry-byebug", "~> 3.2.0" gem "sdoc", "~> 0.4.1" - gem "telegram-bot-types", "~> 0.6.0" + gem "telegram-bot-types", "~> 0.6.2" gem "rspec", "~> 3.5.0" gem "rspec-its", "~> 1.1.0" gem "rspec-rails", "~> 3.5.0" diff --git a/gemfiles/rails_50.gemfile b/gemfiles/rails_50.gemfile index 489919e..552b189 100644 --- a/gemfiles/rails_50.gemfile +++ b/gemfiles/rails_50.gemfile @@ -10,7 +10,7 @@ group :development do gem "pry", "~> 0.10.1" gem "pry-byebug", "~> 3.2.0" gem "sdoc", "~> 0.4.1" - gem "telegram-bot-types", "~> 0.6.0" + gem "telegram-bot-types", "~> 0.6.2" gem "rspec", "~> 3.5.0" gem "rspec-its", "~> 1.1.0" gem "rspec-rails", "~> 3.5.0" diff --git a/gemfiles/rails_51.gemfile b/gemfiles/rails_51.gemfile index 91df7e4..ad81dd6 100644 --- a/gemfiles/rails_51.gemfile +++ b/gemfiles/rails_51.gemfile @@ -10,7 +10,7 @@ group :development do gem "pry", "~> 0.10.1" gem "pry-byebug", "~> 3.2.0" gem "sdoc", "~> 0.4.1" - gem "telegram-bot-types", "~> 0.6.0" + gem "telegram-bot-types", "~> 0.6.2" gem "rspec", "~> 3.5.0" gem "rspec-its", "~> 1.1.0" gem "rspec-rails", "~> 3.5.0" diff --git a/gemfiles/rails_52.gemfile b/gemfiles/rails_52.gemfile index b2a0ec6..a4a3603 100644 --- a/gemfiles/rails_52.gemfile +++ b/gemfiles/rails_52.gemfile @@ -10,7 +10,7 @@ group :development do gem "pry", "~> 0.10.1" gem "pry-byebug", "~> 3.2.0" gem "sdoc", "~> 0.4.1" - gem "telegram-bot-types", "~> 0.6.0" + gem "telegram-bot-types", "~> 0.6.2" gem "rspec", "~> 3.5.0" gem "rspec-its", "~> 1.1.0" gem "rspec-rails", "~> 3.5.0" diff --git a/gemfiles/rails_60.gemfile b/gemfiles/rails_60.gemfile index d903325..2c49975 100644 --- a/gemfiles/rails_60.gemfile +++ b/gemfiles/rails_60.gemfile @@ -10,7 +10,7 @@ group :development do gem "pry", "~> 0.10.1" gem "pry-byebug", "~> 3.2.0" gem "sdoc", "~> 0.4.1" - gem "telegram-bot-types", "~> 0.6.0" + gem "telegram-bot-types", "~> 0.6.2" gem "rspec", "~> 3.5.0" gem "rspec-its", "~> 1.1.0" gem "rspec-rails", "~> 3.5.0" diff --git a/gemfiles/rails_61.gemfile b/gemfiles/rails_61.gemfile index f7142b6..7fac8b8 100644 --- a/gemfiles/rails_61.gemfile +++ b/gemfiles/rails_61.gemfile @@ -12,7 +12,7 @@ group :development do gem "pry", "~> 0.10.1" gem "pry-byebug", "~> 3.2.0" gem "sdoc", "~> 0.4.1" - gem "telegram-bot-types", "~> 0.6.0" + gem "telegram-bot-types", "~> 0.6.2" gem "rspec", "~> 3.5.0" gem "rspec-its", "~> 1.1.0" gem "rspec-rails", "~> 3.5.0" diff --git a/lib/telegram/bot/client/api_methods.txt b/lib/telegram/bot/client/api_methods.txt index 715f0b7..24b1ffc 100644 --- a/lib/telegram/bot/client/api_methods.txt +++ b/lib/telegram/bot/client/api_methods.txt @@ -1,5 +1,5 @@ # Generated with bin/fetch-telegram-methods -# Bot API 4.4 +# Bot API 4.7 getUpdates setWebhook @@ -23,6 +23,7 @@ stopMessageLiveLocation sendVenue sendContact sendPoll +sendDice sendChatAction getUserProfilePhotos getFile @@ -30,6 +31,7 @@ kickChatMember unbanChatMember restrictChatMember promoteChatMember +setChatAdministratorCustomTitle setChatPermissions exportChatInviteLink setChatPhoto @@ -46,6 +48,8 @@ getChatMember setChatStickerSet deleteChatStickerSet answerCallbackQuery +setMyCommands +getMyCommands editMessageText editMessageCaption @@ -61,6 +65,7 @@ createNewStickerSet addStickerToSet setStickerPositionInSet deleteStickerFromSet +setStickerSetThumb answerInlineQuery diff --git a/lib/telegram/bot/updates_controller.rb b/lib/telegram/bot/updates_controller.rb index b4bd37f..f679f76 100644 --- a/lib/telegram/bot/updates_controller.rb +++ b/lib/telegram/bot/updates_controller.rb @@ -97,6 +97,8 @@ module Telegram callback_query shipping_query pre_checkout_query + poll + poll_answer ].freeze class << self @@ -148,7 +150,7 @@ module Telegram # Accessor to `'from'` field of payload. Can be overriden with `from` option # for #initialize. def from - @_from ||= payload && payload['from'] + @_from ||= payload.is_a?(Hash) ? payload['from'] : payload.try(:from) end # Processes current update. @@ -206,6 +208,10 @@ module Telegram [payload_type, [payload['data']]] end + def action_for_poll_answer + [payload_type, [payload['poll_id'], payload['option_ids']]] + end + # Silently ignore unsupported messages to not fail when user crafts # an update with usupported command, callback query context, etc. def action_missing(action, *_args) diff --git a/spec/telegram/bot/updates_controller_spec.rb b/spec/telegram/bot/updates_controller_spec.rb index 29efd6c..3f12640 100644 --- a/spec/telegram/bot/updates_controller_spec.rb +++ b/spec/telegram/bot/updates_controller_spec.rb @@ -26,6 +26,12 @@ RSpec.describe Telegram::Bot::UpdatesController do it { should eq [payload_type, payload.values_at(:data)] } end + context 'when payload is poll_answer' do + let(:payload_type) { 'poll_answer' } + let(:payload) { stub_payload(:poll_id, :user, :option_ids) } + it { should eq [payload_type, payload.values_at(:poll_id, :option_ids)] } + end + context 'when payload is not supported' do let(:payload_type) { '_unsupported_' } it { should eq [:unsupported_payload_type, []] } @@ -39,6 +45,7 @@ RSpec.describe Telegram::Bot::UpdatesController do inline_query chosen_inline_result callback_query + poll_answer ] (described_class::PAYLOAD_TYPES - custom_payload_types).each do |type| context "when payload is #{type}" do