зеркало из
https://github.com/glebtv/telegram-bot.git
synced 2026-09-03 17:55:52 +03:00
Сравнить коммиты
21 Коммитов
| Автор | SHA1 | Дата | |
|---|---|---|---|
|
|
8494c7df0c | ||
|
|
a2659e00c2 | ||
|
|
e43c611d9d | ||
|
|
b84c48bc1d | ||
|
|
43cd096a21 | ||
|
|
903e14a3e5 | ||
|
|
da31cd148a | ||
|
|
552f3b3353 | ||
|
|
e5f93f608b | ||
|
|
7e823b4354 | ||
|
|
ca4ea9e6cb | ||
|
|
68ec0257bd | ||
|
|
b50bd30137 | ||
|
|
80362da270 | ||
|
|
294d762785 | ||
|
|
1cb3265371 | ||
|
|
c44529725f | ||
|
|
fa43561765 | ||
|
|
cea856c928 | ||
|
|
5a93c1efc6 | ||
|
|
38ee303912 |
21
.travis.yml
21
.travis.yml
@@ -1,34 +1,31 @@
|
|||||||
language: ruby
|
language: ruby
|
||||||
cache: bundler
|
cache: bundler
|
||||||
rvm:
|
rvm:
|
||||||
|
- 2.6
|
||||||
- 2.5
|
- 2.5
|
||||||
- 2.4
|
|
||||||
gemfile:
|
gemfile:
|
||||||
|
- gemfiles/rails_60.gemfile
|
||||||
- gemfiles/rails_52.gemfile
|
- gemfiles/rails_52.gemfile
|
||||||
- gemfiles/rails_51.gemfile
|
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
# old rails
|
# old rails
|
||||||
|
- rvm: 2.5
|
||||||
|
gemfile: gemfiles/rails_51.gemfile
|
||||||
- rvm: 2.5
|
- rvm: 2.5
|
||||||
gemfile: gemfiles/rails_50.gemfile
|
gemfile: gemfiles/rails_50.gemfile
|
||||||
- rvm: 2.5
|
- rvm: 2.5
|
||||||
gemfile: gemfiles/rails_42.gemfile
|
gemfile: gemfiles/rails_42.gemfile
|
||||||
# old rubies
|
# old rubies
|
||||||
|
- rvm: 2.4
|
||||||
|
gemfile: gemfiles/rails_52.gemfile
|
||||||
- rvm: 2.3
|
- rvm: 2.3
|
||||||
gemfile: gemfiles/rails_52.gemfile
|
gemfile: gemfiles/rails_52.gemfile
|
||||||
# future rails
|
# future rails
|
||||||
- rvm: 2.5
|
- rvm: 2.5
|
||||||
gemfile: gemfiles/rails_60.gemfile
|
gemfile: gemfiles/rails_61.gemfile
|
||||||
# Allow rails 6 to fail while master branch is used
|
# Allow rails 6.1 to fail while master branch is used
|
||||||
allow_failures:
|
allow_failures:
|
||||||
- rvm: 2.5
|
- rvm: 2.5
|
||||||
gemfile: gemfiles/rails_60.gemfile
|
gemfile: gemfiles/rails_61.gemfile
|
||||||
notifications:
|
notifications:
|
||||||
email: false
|
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
|
|
||||||
|
|||||||
27
Appraisals
27
Appraisals
@@ -1,26 +1,31 @@
|
|||||||
appraise 'rails-60' do
|
appraise 'rails-61' do
|
||||||
git 'https://github.com/rails/rails.git' do
|
git 'https://github.com/rails/rails.git' do
|
||||||
gem 'actionpack', '~> 6.0.0.alpha'
|
gem 'actionpack', '~> 6.1.0.alpha'
|
||||||
gem 'railties', '~> 6.0.0.alpha'
|
gem 'railties', '~> 6.1.0.alpha'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
appraise 'rails-60' do
|
||||||
|
gem 'actionpack', '~> 6.0.0'
|
||||||
|
gem 'railties', '~> 6.0.0'
|
||||||
|
end
|
||||||
|
|
||||||
appraise 'rails-52' do
|
appraise 'rails-52' do
|
||||||
gem 'actionpack', '~> 5.2.0.beta2'
|
gem 'actionpack', '~> 5.2.0'
|
||||||
gem 'railties', '~> 5.2.0.beta2'
|
gem 'railties', '~> 5.2.0'
|
||||||
end
|
end
|
||||||
|
|
||||||
appraise 'rails-51' do
|
appraise 'rails-51' do
|
||||||
gem 'actionpack', '~> 5.1'
|
gem 'actionpack', '~> 5.1.0'
|
||||||
gem 'railties', '~> 5.1'
|
gem 'railties', '~> 5.1.0'
|
||||||
end
|
end
|
||||||
|
|
||||||
appraise 'rails-50' do
|
appraise 'rails-50' do
|
||||||
gem 'actionpack', '~> 5.0'
|
gem 'actionpack', '~> 5.0.0'
|
||||||
gem 'railties', '~> 5.0'
|
gem 'railties', '~> 5.0.0'
|
||||||
end
|
end
|
||||||
|
|
||||||
appraise 'rails-42' do
|
appraise 'rails-42' do
|
||||||
gem 'actionpack', '~> 4.2'
|
gem 'actionpack', '~> 4.2.0'
|
||||||
gem 'railties', '~> 4.2'
|
gem 'railties', '~> 4.2.0'
|
||||||
end
|
end
|
||||||
|
|||||||
17
CHANGELOG.md
17
CHANGELOG.md
@@ -1,8 +1,25 @@
|
|||||||
# Unreleased
|
# 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.
|
- 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.
|
- 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
|
https://github.com/botanio/sdk#this-service-will-be-shut-down-on-25th-may-2018
|
||||||
|
- Update to Bot API 4.1.
|
||||||
|
|
||||||
# 0.14.0
|
# 0.14.0
|
||||||
|
|
||||||
|
|||||||
2
Gemfile
2
Gemfile
@@ -8,7 +8,7 @@ group :development do
|
|||||||
gem 'pry-byebug', '~> 3.2.0'
|
gem 'pry-byebug', '~> 3.2.0'
|
||||||
gem 'sdoc', '~> 0.4.1'
|
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', '~> 3.5.0'
|
||||||
gem 'rspec-its', '~> 1.1.0'
|
gem 'rspec-its', '~> 1.1.0'
|
||||||
|
|||||||
17
README.md
17
README.md
@@ -100,10 +100,12 @@ development:
|
|||||||
|
|
||||||
For Rails >= 5.2 `Telegram::Bot` searches for config first in credentials and then in secrets.
|
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
|
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).
|
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
|
and it's more difficult to use in multiple environments. See
|
||||||
[secure_credentials](https://github.com/printercu/secure_credentials) gem for better option.
|
[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_inline_query(results, params = {}); end
|
||||||
def answer_callback_query(text, params = {}); end
|
def answer_callback_query(text, params = {}); end
|
||||||
def edit_message(type, 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
|
#### Optional typecasting
|
||||||
@@ -471,10 +475,11 @@ RSpec.describe TelegramWebhooksController, telegram_bot: :rails do
|
|||||||
# dispatch_command(cmd, *args)
|
# dispatch_command(cmd, *args)
|
||||||
|
|
||||||
# Available matchers can be found in Telegram::Bot::RSpec::ClientMatchers.
|
# Available matchers can be found in Telegram::Bot::RSpec::ClientMatchers.
|
||||||
it 'shows usage of basic matchers'
|
it 'shows usage of basic matchers' do
|
||||||
# The most basic one is #make_telegram_request(bot, endpoint, params_matcher)
|
# The most basic one is #make_telegram_request(bot, action).
|
||||||
expect { dispatch_command(:start) }.
|
# It works similar to `receive` matcher and supports chaining `.with(args).exactly(n).times`.
|
||||||
to make_telegram_request(bot, :sendMessage, hash_including(text: 'msg text'))
|
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.
|
# There are some shortcuts for dispatching basic updates and testing responses.
|
||||||
expect { dispatch_message('Hi') }.to send_telegram_message(bot, /msg regexp/, some: :option)
|
expect { dispatch_message('Hi') }.to send_telegram_message(bot, /msg regexp/, some: :option)
|
||||||
|
|||||||
@@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
gem "actionpack", "~> 4.2"
|
gem "actionpack", "~> 4.2.0"
|
||||||
gem "railties", "~> 4.2"
|
gem "railties", "~> 4.2.0"
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
gem "appraisal", "~> 2.2"
|
gem "appraisal", "~> 2.2"
|
||||||
gem "pry", "~> 0.10.1"
|
gem "pry", "~> 0.10.1"
|
||||||
gem "pry-byebug", "~> 3.2.0"
|
gem "pry-byebug", "~> 3.2.0"
|
||||||
gem "sdoc", "~> 0.4.1"
|
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", "~> 3.5.0"
|
||||||
gem "rspec-its", "~> 1.1.0"
|
gem "rspec-its", "~> 1.1.0"
|
||||||
gem "rspec-rails", "~> 3.5.0"
|
gem "rspec-rails", "~> 3.5.0"
|
||||||
|
|||||||
@@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
gem "actionpack", "~> 5.0"
|
gem "actionpack", "~> 5.0.0"
|
||||||
gem "railties", "~> 5.0"
|
gem "railties", "~> 5.0.0"
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
gem "appraisal", "~> 2.2"
|
gem "appraisal", "~> 2.2"
|
||||||
gem "pry", "~> 0.10.1"
|
gem "pry", "~> 0.10.1"
|
||||||
gem "pry-byebug", "~> 3.2.0"
|
gem "pry-byebug", "~> 3.2.0"
|
||||||
gem "sdoc", "~> 0.4.1"
|
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", "~> 3.5.0"
|
||||||
gem "rspec-its", "~> 1.1.0"
|
gem "rspec-its", "~> 1.1.0"
|
||||||
gem "rspec-rails", "~> 3.5.0"
|
gem "rspec-rails", "~> 3.5.0"
|
||||||
|
|||||||
@@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
gem "actionpack", "~> 5.1"
|
gem "actionpack", "~> 5.1.0"
|
||||||
gem "railties", "~> 5.1"
|
gem "railties", "~> 5.1.0"
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
gem "appraisal", "~> 2.2"
|
gem "appraisal", "~> 2.2"
|
||||||
gem "pry", "~> 0.10.1"
|
gem "pry", "~> 0.10.1"
|
||||||
gem "pry-byebug", "~> 3.2.0"
|
gem "pry-byebug", "~> 3.2.0"
|
||||||
gem "sdoc", "~> 0.4.1"
|
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", "~> 3.5.0"
|
||||||
gem "rspec-its", "~> 1.1.0"
|
gem "rspec-its", "~> 1.1.0"
|
||||||
gem "rspec-rails", "~> 3.5.0"
|
gem "rspec-rails", "~> 3.5.0"
|
||||||
|
|||||||
@@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
gem "actionpack", "~> 5.2.0.beta2"
|
gem "actionpack", "~> 5.2.0"
|
||||||
gem "railties", "~> 5.2.0.beta2"
|
gem "railties", "~> 5.2.0"
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
gem "appraisal", "~> 2.2"
|
gem "appraisal", "~> 2.2"
|
||||||
gem "pry", "~> 0.10.1"
|
gem "pry", "~> 0.10.1"
|
||||||
gem "pry-byebug", "~> 3.2.0"
|
gem "pry-byebug", "~> 3.2.0"
|
||||||
gem "sdoc", "~> 0.4.1"
|
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", "~> 3.5.0"
|
||||||
gem "rspec-its", "~> 1.1.0"
|
gem "rspec-its", "~> 1.1.0"
|
||||||
gem "rspec-rails", "~> 3.5.0"
|
gem "rspec-rails", "~> 3.5.0"
|
||||||
|
|||||||
@@ -2,17 +2,15 @@
|
|||||||
|
|
||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
git "https://github.com/rails/rails.git" do
|
gem "actionpack", "~> 6.0.0"
|
||||||
gem "actionpack", "~> 6.0.0.alpha"
|
gem "railties", "~> 6.0.0"
|
||||||
gem "railties", "~> 6.0.0.alpha"
|
|
||||||
end
|
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
gem "appraisal", "~> 2.2"
|
gem "appraisal", "~> 2.2"
|
||||||
gem "pry", "~> 0.10.1"
|
gem "pry", "~> 0.10.1"
|
||||||
gem "pry-byebug", "~> 3.2.0"
|
gem "pry-byebug", "~> 3.2.0"
|
||||||
gem "sdoc", "~> 0.4.1"
|
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", "~> 3.5.0"
|
||||||
gem "rspec-its", "~> 1.1.0"
|
gem "rspec-its", "~> 1.1.0"
|
||||||
gem "rspec-rails", "~> 3.5.0"
|
gem "rspec-rails", "~> 3.5.0"
|
||||||
|
|||||||
23
gemfiles/rails_61.gemfile
Обычный файл
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
|
# accessible via `Teletgram.bots[id]` in job worker. Or just use
|
||||||
# `Telegram.bots_config=` for configuration.
|
# `Telegram.bots_config=` for configuration.
|
||||||
#
|
#
|
||||||
# Being in async mode `#request` enqueues job instead to perform
|
# Being in async mode `#request` enqueues job to perform
|
||||||
# http request instead of performing it directly.
|
# http request instead of performing it immediately.
|
||||||
# Async behavior is controlled with `#async=` writer
|
# Async behavior is controlled with `#async=` writer
|
||||||
# and can be enabled/disabled for the block with `#async`:
|
# and can be enabled/disabled for the block with `#async`:
|
||||||
#
|
#
|
||||||
@@ -29,7 +29,7 @@ module Telegram
|
|||||||
# while `#async(val, &block)` is thread-safe.
|
# while `#async(val, &block)` is thread-safe.
|
||||||
#
|
#
|
||||||
# It can be set with custom job class or classname. By default it defines
|
# 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
|
# 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)`
|
# other job provider by defining a class with `.perform_later(bot_id, *args)`
|
||||||
# method. See Async::Job for implemetation.
|
# method. See Async::Job for implemetation.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Generated with bin/fetch-telegram-methods
|
# Generated with bin/fetch-telegram-methods
|
||||||
# Bot API 4.1
|
# Bot API 4.7
|
||||||
|
|
||||||
getUpdates
|
getUpdates
|
||||||
setWebhook
|
setWebhook
|
||||||
@@ -22,6 +22,8 @@ editMessageLiveLocation
|
|||||||
stopMessageLiveLocation
|
stopMessageLiveLocation
|
||||||
sendVenue
|
sendVenue
|
||||||
sendContact
|
sendContact
|
||||||
|
sendPoll
|
||||||
|
sendDice
|
||||||
sendChatAction
|
sendChatAction
|
||||||
getUserProfilePhotos
|
getUserProfilePhotos
|
||||||
getFile
|
getFile
|
||||||
@@ -29,6 +31,8 @@ kickChatMember
|
|||||||
unbanChatMember
|
unbanChatMember
|
||||||
restrictChatMember
|
restrictChatMember
|
||||||
promoteChatMember
|
promoteChatMember
|
||||||
|
setChatAdministratorCustomTitle
|
||||||
|
setChatPermissions
|
||||||
exportChatInviteLink
|
exportChatInviteLink
|
||||||
setChatPhoto
|
setChatPhoto
|
||||||
deleteChatPhoto
|
deleteChatPhoto
|
||||||
@@ -44,11 +48,14 @@ getChatMember
|
|||||||
setChatStickerSet
|
setChatStickerSet
|
||||||
deleteChatStickerSet
|
deleteChatStickerSet
|
||||||
answerCallbackQuery
|
answerCallbackQuery
|
||||||
|
setMyCommands
|
||||||
|
getMyCommands
|
||||||
|
|
||||||
editMessageText
|
editMessageText
|
||||||
editMessageCaption
|
editMessageCaption
|
||||||
editMessageMedia
|
editMessageMedia
|
||||||
editMessageReplyMarkup
|
editMessageReplyMarkup
|
||||||
|
stopPoll
|
||||||
deleteMessage
|
deleteMessage
|
||||||
|
|
||||||
sendSticker
|
sendSticker
|
||||||
@@ -58,6 +65,7 @@ createNewStickerSet
|
|||||||
addStickerToSet
|
addStickerToSet
|
||||||
setStickerPositionInSet
|
setStickerPositionInSet
|
||||||
deleteStickerFromSet
|
deleteStickerFromSet
|
||||||
|
setStickerSetThumb
|
||||||
|
|
||||||
answerInlineQuery
|
answerInlineQuery
|
||||||
|
|
||||||
|
|||||||
@@ -7,13 +7,13 @@ module Telegram
|
|||||||
module Bot
|
module Bot
|
||||||
# Base class to create update processors. With callbacks, session and helpers.
|
# Base class to create update processors. With callbacks, session and helpers.
|
||||||
#
|
#
|
||||||
# Define public methods for each command and they will be called when
|
# Public methods ending with `!` handle messages with commands.
|
||||||
# update has this command. Message is automatically parsed and
|
# Message text is automatically parsed into method arguments.
|
||||||
# words are passed as method arguments. Be sure to use default values and
|
# Be sure to use default values and
|
||||||
# splat arguments in every action method to not get errors, when user
|
# splat arguments in every action method to not get errors, when user
|
||||||
# sends command without necessary args / with extra args.
|
# sends command without necessary args / with extra args.
|
||||||
#
|
#
|
||||||
# def start(token = nil, *)
|
# def start!(token = nil, *)
|
||||||
# if token
|
# if token
|
||||||
# # ...
|
# # ...
|
||||||
# else
|
# else
|
||||||
@@ -21,25 +21,21 @@ module Telegram
|
|||||||
# end
|
# end
|
||||||
# end
|
# end
|
||||||
#
|
#
|
||||||
# def help(*)
|
# def help!(*)
|
||||||
# respond_with :message, text:
|
# respond_with :message, text:
|
||||||
# end
|
# end
|
||||||
#
|
#
|
||||||
# To process plain text messages (without commands) or other updates just
|
# To process plain text messages (without commands) or other updates just
|
||||||
# define public method with name of payload type. They will receive payload
|
# define public method with name of payload type.
|
||||||
# as an argument.
|
# By default they receive payload as an argument, but some of them are called
|
||||||
|
# with more usefuk args:
|
||||||
#
|
#
|
||||||
# def message(message)
|
# def message(message)
|
||||||
# respond_with :message, text: "Echo: #{message['text']}"
|
# respond_with :message, text: "Echo: #{message['text']}"
|
||||||
# end
|
# end
|
||||||
#
|
#
|
||||||
# def inline_query(query)
|
# def inline_query(query, offset)
|
||||||
# answer_inline_query results_for_query(query), is_personal: true
|
# answer_inline_query results_for_query(query, offset), is_personal: true
|
||||||
# end
|
|
||||||
#
|
|
||||||
# # To process conflicting commands (`/message args`) just use `on_` prefix:
|
|
||||||
# def on_message(*args)
|
|
||||||
# # ...
|
|
||||||
# end
|
# end
|
||||||
#
|
#
|
||||||
# To process update run:
|
# To process update run:
|
||||||
@@ -101,6 +97,8 @@ module Telegram
|
|||||||
callback_query
|
callback_query
|
||||||
shipping_query
|
shipping_query
|
||||||
pre_checkout_query
|
pre_checkout_query
|
||||||
|
poll
|
||||||
|
poll_answer
|
||||||
].freeze
|
].freeze
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
@@ -152,7 +150,7 @@ module Telegram
|
|||||||
# Accessor to `'from'` field of payload. Can be overriden with `from` option
|
# Accessor to `'from'` field of payload. Can be overriden with `from` option
|
||||||
# for #initialize.
|
# for #initialize.
|
||||||
def from
|
def from
|
||||||
@_from ||= payload && payload['from']
|
@_from ||= payload.is_a?(Hash) ? payload['from'] : payload.try(:from)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Processes current update.
|
# Processes current update.
|
||||||
@@ -210,6 +208,10 @@ module Telegram
|
|||||||
[payload_type, [payload['data']]]
|
[payload_type, [payload['data']]]
|
||||||
end
|
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
|
# Silently ignore unsupported messages to not fail when user crafts
|
||||||
# an update with usupported command, callback query context, etc.
|
# an update with usupported command, callback query context, etc.
|
||||||
def action_missing(action, *_args)
|
def action_missing(action, *_args)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ module Telegram
|
|||||||
respond_with(type, params)
|
respond_with(type, params)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Same as reply_with, but for inline queries.
|
# Same as respond_with, but for inline queries.
|
||||||
def answer_inline_query(results, params = {})
|
def answer_inline_query(results, params = {})
|
||||||
params = params.merge(
|
params = params.merge(
|
||||||
inline_query_id: payload['id'],
|
inline_query_id: payload['id'],
|
||||||
@@ -30,7 +30,7 @@ module Telegram
|
|||||||
bot.answer_inline_query(params)
|
bot.answer_inline_query(params)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Same as reply_with, but for callback queries.
|
# Same as respond_with, but for callback queries.
|
||||||
def answer_callback_query(text, params = {})
|
def answer_callback_query(text, params = {})
|
||||||
params = params.merge(
|
params = params.merge(
|
||||||
callback_query_id: payload['id'],
|
callback_query_id: payload['id'],
|
||||||
@@ -39,6 +39,23 @@ module Telegram
|
|||||||
bot.answer_callback_query(params)
|
bot.answer_callback_query(params)
|
||||||
end
|
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.
|
# Edit message from callback query.
|
||||||
def edit_message(type, params = {})
|
def edit_message(type, params = {})
|
||||||
params =
|
params =
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
module Telegram
|
module Telegram
|
||||||
module Bot
|
module Bot
|
||||||
VERSION = '0.14.1'.freeze
|
VERSION = '0.14.4'.freeze
|
||||||
|
|
||||||
def self.gem_version
|
def self.gem_version
|
||||||
Gem::Version.new VERSION
|
Gem::Version.new VERSION
|
||||||
|
|||||||
@@ -26,6 +26,12 @@ RSpec.describe Telegram::Bot::UpdatesController do
|
|||||||
it { should eq [payload_type, payload.values_at(:data)] }
|
it { should eq [payload_type, payload.values_at(:data)] }
|
||||||
end
|
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
|
context 'when payload is not supported' do
|
||||||
let(:payload_type) { '_unsupported_' }
|
let(:payload_type) { '_unsupported_' }
|
||||||
it { should eq [:unsupported_payload_type, []] }
|
it { should eq [:unsupported_payload_type, []] }
|
||||||
@@ -39,6 +45,7 @@ RSpec.describe Telegram::Bot::UpdatesController do
|
|||||||
inline_query
|
inline_query
|
||||||
chosen_inline_result
|
chosen_inline_result
|
||||||
callback_query
|
callback_query
|
||||||
|
poll_answer
|
||||||
]
|
]
|
||||||
(described_class::PAYLOAD_TYPES - custom_payload_types).each do |type|
|
(described_class::PAYLOAD_TYPES - custom_payload_types).each do |type|
|
||||||
context "when payload is #{type}" do
|
context "when payload is #{type}" do
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ Gem::Specification.new do |spec|
|
|||||||
|
|
||||||
spec.required_ruby_version = '~> 2.0'
|
spec.required_ruby_version = '~> 2.0'
|
||||||
|
|
||||||
spec.add_dependency 'actionpack', '>= 4.0', '< 6.0'
|
spec.add_dependency 'actionpack', '>= 4.0', '< 6.1'
|
||||||
spec.add_dependency 'activesupport', '>= 4.0', '< 6.0'
|
spec.add_dependency 'activesupport', '>= 4.0', '< 6.1'
|
||||||
spec.add_dependency 'httpclient', '~> 2.7'
|
spec.add_dependency 'httpclient', '~> 2.7'
|
||||||
|
|
||||||
spec.add_development_dependency 'bundler', '~> 1.16'
|
spec.add_development_dependency 'bundler', '> 1.16'
|
||||||
spec.add_development_dependency 'rake', '~> 10.0'
|
spec.add_development_dependency 'rake', '~> 13.0'
|
||||||
end
|
end
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user