1
0
зеркало из https://github.com/glebtv/telegram-bot.git synced 2026-08-28 15:26:18 +03:00

Сравнить коммиты

...

21 Коммитов

Автор SHA1 Сообщение Дата
Max Melentiev
8494c7df0c v0.14.4 2020-04-15 20:40:55 +03:00
Max Melentiev
a2659e00c2 Bump rake version to resolve vulnerability notification 2020-04-04 22:36:41 +03:00
Max Melentiev
e43c611d9d Merge pull request #131 from telegram-bot-rb/update_api
Update to Bot API 4.7
2020-04-04 22:35:33 +03:00
Max Melentiev
b84c48bc1d Update to Bot API 4.7 2020-04-04 22:26:26 +03:00
Max Melentiev
43cd096a21 Fix spelling in Async docs 2020-01-25 15:49:28 +03:00
Maximilian Haack
903e14a3e5 Fix make_telegram_request examples in README (#129) 2020-01-25 13:34:48 +03:00
Max Melentiev
da31cd148a v0.14.3 2019-08-24 19:34:34 +03:00
Max Melentiev
552f3b3353 Update to Bot API 4.4 2019-08-24 19:33:46 +03:00
Max Melentiev
e5f93f608b Merge pull request #121 from telegram-bot-rb/rails_60
Require tests against rails 6.0, run tests against rails 6.1.alpha
2019-08-19 22:10:50 +03:00
Max Melentiev
7e823b4354 Require tests against rails 6.0, run tests against rails 6.1.alpha
Rails 6.0 requires ruby >= 2.5, so ruby 2.4 is not tested by default
and replaced with 2.6
2019-08-19 11:06:48 +03:00
Max Melentiev
ca4ea9e6cb v0.14.2 2019-06-30 21:15:53 +03:00
Max Melentiev
68ec0257bd Add note on editing rails 6.0 credential 2019-06-30 21:10:22 +03:00
Max Melentiev
b50bd30137 Add methods from api v4.3 2019-06-30 20:57:50 +03:00
Max Melentiev
80362da270 Add answer_shipping_query helper 2019-06-30 20:56:41 +03:00
Muhammad Nuzaihan Bin Kamal Luddin
294d762785 Add answer_pre_checkout_query helper (#118) 2019-06-30 20:39:43 +03:00
printercu
1cb3265371 Merge pull request #113 from telegram-bot-rb/fix_travis
Remove workaround for ruby 2.5.0 to fix travis builds
2019-02-15 20:03:31 +05:30
Max Melentiev
c44529725f Relax bundler dependency 2019-02-15 19:46:01 +05:30
Max Melentiev
fa43561765 Remove workaround for ruby 2.5.0 to fix travis builds 2019-02-15 19:27:18 +05:30
printercu
cea856c928 Merge pull request #110 from biow0lf/master
Fix typo
2019-02-15 19:25:32 +05:30
Igor Zubkov
5a93c1efc6 Fix typo 2019-01-24 03:47:05 +02:00
Max Melentiev
38ee303912 Fix doc-comment for latest changes 2018-09-23 10:39:56 +03:00
18 изменённых файлов: 152 добавлений и 73 удалений

Просмотреть файл

@@ -1,34 +1,31 @@
language: ruby
cache: bundler
rvm:
- 2.6
- 2.5
- 2.4
gemfile:
- gemfiles/rails_60.gemfile
- gemfiles/rails_52.gemfile
- gemfiles/rails_51.gemfile
matrix:
include:
# old rails
- rvm: 2.5
gemfile: gemfiles/rails_51.gemfile
- rvm: 2.5
gemfile: gemfiles/rails_50.gemfile
- rvm: 2.5
gemfile: gemfiles/rails_42.gemfile
# old rubies
- rvm: 2.4
gemfile: gemfiles/rails_52.gemfile
- rvm: 2.3
gemfile: gemfiles/rails_52.gemfile
# future rails
- rvm: 2.5
gemfile: gemfiles/rails_60.gemfile
# Allow rails 6 to fail while master branch is used
gemfile: gemfiles/rails_61.gemfile
# Allow rails 6.1 to fail while master branch is used
allow_failures:
- rvm: 2.5
gemfile: gemfiles/rails_60.gemfile
gemfile: gemfiles/rails_61.gemfile
notifications:
email: false
# for 2.5.0 until 2.5.1 is released:
# https://github.com/travis-ci/travis-ci/issues/8978
# https://github.com/travis-ci/travis-ci/issues/8969#issuecomment-354135622
before_install:
- gem update --system
- gem install bundler

Просмотреть файл

@@ -1,26 +1,31 @@
appraise 'rails-60' do
appraise 'rails-61' do
git 'https://github.com/rails/rails.git' do
gem 'actionpack', '~> 6.0.0.alpha'
gem 'railties', '~> 6.0.0.alpha'
gem 'actionpack', '~> 6.1.0.alpha'
gem 'railties', '~> 6.1.0.alpha'
end
end
appraise 'rails-60' do
gem 'actionpack', '~> 6.0.0'
gem 'railties', '~> 6.0.0'
end
appraise 'rails-52' do
gem 'actionpack', '~> 5.2.0.beta2'
gem 'railties', '~> 5.2.0.beta2'
gem 'actionpack', '~> 5.2.0'
gem 'railties', '~> 5.2.0'
end
appraise 'rails-51' do
gem 'actionpack', '~> 5.1'
gem 'railties', '~> 5.1'
gem 'actionpack', '~> 5.1.0'
gem 'railties', '~> 5.1.0'
end
appraise 'rails-50' do
gem 'actionpack', '~> 5.0'
gem 'railties', '~> 5.0'
gem 'actionpack', '~> 5.0.0'
gem 'railties', '~> 5.0.0'
end
appraise 'rails-42' do
gem 'actionpack', '~> 4.2'
gem 'railties', '~> 4.2'
gem 'actionpack', '~> 4.2.0'
gem 'railties', '~> 4.2.0'
end

Просмотреть файл

@@ -1,8 +1,25 @@
# Unreleased
# 0.14.4
- Update to Bot API 4.7
# 0.14.3
- Rails 6.0 support.
- Update to Bot API 4.4.
# 0.14.2
- Add reply helpers: `answer_pre_checkout_query`, `answer_shipping_query`.
- Update to Bot API 4.3.
# 0.14.1
- Read config from secrets when credentials don't provide it in rails >= 5.2.
- Remove botan.io support. It's already shut down, so it should not be a braking change.
https://github.com/botanio/sdk#this-service-will-be-shut-down-on-25th-may-2018
- Update to Bot API 4.1.
# 0.14.0

Просмотреть файл

@@ -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'

Просмотреть файл

@@ -100,10 +100,12 @@ development:
For Rails >= 5.2 `Telegram::Bot` searches for config first in credentials and then in secrets.
To use credentials as config store, add telegram section to credentials instead of secrets using
`rails credentials:edit`. In this case be aware of that [Rails may not load
`rails credentials:edit`. In this case be aware of that [Rails < 6.0 may not load
credentials in dev environment by default](https://github.com/telegram-bot-rb/telegram-bot/issues/74#issuecomment-384205609).
In Rails >= 6.0 run `rails credentials:edit --environment development` to configure bot
in each environment.
I suggest not using Rails 5.2 credentials because it can lead to leakage of sesitive data
I suggest not using Rails 5.2 credentials because it can lead to leakage of sensitive data
and it's more difficult to use in multiple environments. See
[secure_credentials](https://github.com/printercu/secure_credentials) gem for better option.
@@ -229,6 +231,8 @@ def reply_with(type, params); end
def answer_inline_query(results, params = {}); end
def answer_callback_query(text, params = {}); end
def edit_message(type, params = {}); end
def answer_pre_checkout_query(ok, params = {}); end
def answer_shipping_query(ok, params = {}); end
```
#### Optional typecasting
@@ -471,10 +475,11 @@ RSpec.describe TelegramWebhooksController, telegram_bot: :rails do
# dispatch_command(cmd, *args)
# Available matchers can be found in Telegram::Bot::RSpec::ClientMatchers.
it 'shows usage of basic matchers'
# The most basic one is #make_telegram_request(bot, endpoint, params_matcher)
expect { dispatch_command(:start) }.
to make_telegram_request(bot, :sendMessage, hash_including(text: 'msg text'))
it 'shows usage of basic matchers' do
# The most basic one is #make_telegram_request(bot, action).
# It works similar to `receive` matcher and supports chaining `.with(args).exactly(n).times`.
expect { dispatch_command(:start) }.to make_telegram_request(bot, :sendMessage).
with(hash_including(text: 'msg text'))
# There are some shortcuts for dispatching basic updates and testing responses.
expect { dispatch_message('Hi') }.to send_telegram_message(bot, /msg regexp/, some: :option)

Просмотреть файл

@@ -2,15 +2,15 @@
source "https://rubygems.org"
gem "actionpack", "~> 4.2"
gem "railties", "~> 4.2"
gem "actionpack", "~> 4.2.0"
gem "railties", "~> 4.2.0"
group :development do
gem "appraisal", "~> 2.2"
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"

Просмотреть файл

@@ -2,15 +2,15 @@
source "https://rubygems.org"
gem "actionpack", "~> 5.0"
gem "railties", "~> 5.0"
gem "actionpack", "~> 5.0.0"
gem "railties", "~> 5.0.0"
group :development do
gem "appraisal", "~> 2.2"
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"

Просмотреть файл

@@ -2,15 +2,15 @@
source "https://rubygems.org"
gem "actionpack", "~> 5.1"
gem "railties", "~> 5.1"
gem "actionpack", "~> 5.1.0"
gem "railties", "~> 5.1.0"
group :development do
gem "appraisal", "~> 2.2"
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"

Просмотреть файл

@@ -2,15 +2,15 @@
source "https://rubygems.org"
gem "actionpack", "~> 5.2.0.beta2"
gem "railties", "~> 5.2.0.beta2"
gem "actionpack", "~> 5.2.0"
gem "railties", "~> 5.2.0"
group :development do
gem "appraisal", "~> 2.2"
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"

Просмотреть файл

@@ -2,17 +2,15 @@
source "https://rubygems.org"
git "https://github.com/rails/rails.git" do
gem "actionpack", "~> 6.0.0.alpha"
gem "railties", "~> 6.0.0.alpha"
end
gem "actionpack", "~> 6.0.0"
gem "railties", "~> 6.0.0"
group :development do
gem "appraisal", "~> 2.2"
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"

23
gemfiles/rails_61.gemfile Обычный файл
Просмотреть файл

@@ -0,0 +1,23 @@
# This file was generated by Appraisal
source "https://rubygems.org"
git "https://github.com/rails/rails.git" do
gem "actionpack", "~> 6.1.0.alpha"
gem "railties", "~> 6.1.0.alpha"
end
group :development do
gem "appraisal", "~> 2.2"
gem "pry", "~> 0.10.1"
gem "pry-byebug", "~> 3.2.0"
gem "sdoc", "~> 0.4.1"
gem "telegram-bot-types", "~> 0.6.2"
gem "rspec", "~> 3.5.0"
gem "rspec-its", "~> 1.1.0"
gem "rspec-rails", "~> 3.5.0"
gem "rubocop", "~> 0.52.1"
gem "coveralls", "~> 0.8.2", require: false
end
gemspec path: "../"

Просмотреть файл

@@ -16,8 +16,8 @@ module Telegram
# accessible via `Teletgram.bots[id]` in job worker. Or just use
# `Telegram.bots_config=` for configuration.
#
# Being in async mode `#request` enqueues job instead to perform
# http request instead of performing it directly.
# Being in async mode `#request` enqueues job to perform
# http request instead of performing it immediately.
# Async behavior is controlled with `#async=` writer
# and can be enabled/disabled for the block with `#async`:
#
@@ -29,7 +29,7 @@ module Telegram
# while `#async(val, &block)` is thread-safe.
#
# It can be set with custom job class or classname. By default it defines
# job classes for every client class, inherited from ApplicationRecord, which
# job classes inherited from ApplicationJob, which
# can be accessed via `.default_async_job`. You can integrate it with any
# other job provider by defining a class with `.perform_later(bot_id, *args)`
# method. See Async::Job for implemetation.

Просмотреть файл

@@ -1,5 +1,5 @@
# Generated with bin/fetch-telegram-methods
# Bot API 4.1
# Bot API 4.7
getUpdates
setWebhook
@@ -22,6 +22,8 @@ editMessageLiveLocation
stopMessageLiveLocation
sendVenue
sendContact
sendPoll
sendDice
sendChatAction
getUserProfilePhotos
getFile
@@ -29,6 +31,8 @@ kickChatMember
unbanChatMember
restrictChatMember
promoteChatMember
setChatAdministratorCustomTitle
setChatPermissions
exportChatInviteLink
setChatPhoto
deleteChatPhoto
@@ -44,11 +48,14 @@ getChatMember
setChatStickerSet
deleteChatStickerSet
answerCallbackQuery
setMyCommands
getMyCommands
editMessageText
editMessageCaption
editMessageMedia
editMessageReplyMarkup
stopPoll
deleteMessage
sendSticker
@@ -58,6 +65,7 @@ createNewStickerSet
addStickerToSet
setStickerPositionInSet
deleteStickerFromSet
setStickerSetThumb
answerInlineQuery

Просмотреть файл

@@ -7,13 +7,13 @@ module Telegram
module Bot
# Base class to create update processors. With callbacks, session and helpers.
#
# Define public methods for each command and they will be called when
# update has this command. Message is automatically parsed and
# words are passed as method arguments. Be sure to use default values and
# Public methods ending with `!` handle messages with commands.
# Message text is automatically parsed into method arguments.
# Be sure to use default values and
# splat arguments in every action method to not get errors, when user
# sends command without necessary args / with extra args.
#
# def start(token = nil, *)
# def start!(token = nil, *)
# if token
# # ...
# else
@@ -21,25 +21,21 @@ module Telegram
# end
# end
#
# def help(*)
# def help!(*)
# respond_with :message, text:
# end
#
# To process plain text messages (without commands) or other updates just
# define public method with name of payload type. They will receive payload
# as an argument.
# define public method with name of payload type.
# By default they receive payload as an argument, but some of them are called
# with more usefuk args:
#
# def message(message)
# respond_with :message, text: "Echo: #{message['text']}"
# end
#
# def inline_query(query)
# answer_inline_query results_for_query(query), is_personal: true
# end
#
# # To process conflicting commands (`/message args`) just use `on_` prefix:
# def on_message(*args)
# # ...
# def inline_query(query, offset)
# answer_inline_query results_for_query(query, offset), is_personal: true
# end
#
# To process update run:
@@ -101,6 +97,8 @@ module Telegram
callback_query
shipping_query
pre_checkout_query
poll
poll_answer
].freeze
class << self
@@ -152,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.
@@ -210,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)

Просмотреть файл

@@ -21,7 +21,7 @@ module Telegram
respond_with(type, params)
end
# Same as reply_with, but for inline queries.
# Same as respond_with, but for inline queries.
def answer_inline_query(results, params = {})
params = params.merge(
inline_query_id: payload['id'],
@@ -30,7 +30,7 @@ module Telegram
bot.answer_inline_query(params)
end
# Same as reply_with, but for callback queries.
# Same as respond_with, but for callback queries.
def answer_callback_query(text, params = {})
params = params.merge(
callback_query_id: payload['id'],
@@ -39,6 +39,23 @@ module Telegram
bot.answer_callback_query(params)
end
# Same as respond_with, but for pre checkout queries.
def answer_pre_checkout_query(ok, params = {})
params = params.merge(
pre_checkout_query_id: payload['id'],
ok: ok,
)
bot.answer_pre_checkout_query(params)
end
def answer_shipping_query(ok, params = {})
params = params.merge(
shipping_query_id: payload['id'],
ok: ok,
)
bot.answer_shipping_query(params)
end
# Edit message from callback query.
def edit_message(type, params = {})
params =

Просмотреть файл

@@ -1,6 +1,6 @@
module Telegram
module Bot
VERSION = '0.14.1'.freeze
VERSION = '0.14.4'.freeze
def self.gem_version
Gem::Version.new VERSION

Просмотреть файл

@@ -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

Просмотреть файл

@@ -22,10 +22,10 @@ Gem::Specification.new do |spec|
spec.required_ruby_version = '~> 2.0'
spec.add_dependency 'actionpack', '>= 4.0', '< 6.0'
spec.add_dependency 'activesupport', '>= 4.0', '< 6.0'
spec.add_dependency 'actionpack', '>= 4.0', '< 6.1'
spec.add_dependency 'activesupport', '>= 4.0', '< 6.1'
spec.add_dependency 'httpclient', '~> 2.7'
spec.add_development_dependency 'bundler', '~> 1.16'
spec.add_development_dependency 'rake', '~> 10.0'
spec.add_development_dependency 'bundler', '> 1.16'
spec.add_development_dependency 'rake', '~> 13.0'
end