telegram-bot-ruby 0.13.0 → 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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +8 -10
  3. data/.travis.yml +2 -2
  4. data/CHANGELOG.md +17 -0
  5. data/Rakefile +2 -2
  6. data/lib/telegram/bot/api.rb +9 -40
  7. data/lib/telegram/bot/client.rb +9 -5
  8. data/lib/telegram/bot/null_logger.rb +2 -4
  9. data/lib/telegram/bot/types/audio.rb +1 -0
  10. data/lib/telegram/bot/types/base.rb +1 -0
  11. data/lib/telegram/bot/types/chat.rb +1 -0
  12. data/lib/telegram/bot/types/chat_invite_link.rb +14 -0
  13. data/lib/telegram/bot/types/chat_location.rb +10 -0
  14. data/lib/telegram/bot/types/chat_member.rb +4 -1
  15. data/lib/telegram/bot/types/chat_member_updated.rb +14 -0
  16. data/lib/telegram/bot/types/compactable.rb +5 -1
  17. data/lib/telegram/bot/types/inline_query_result_audio.rb +1 -0
  18. data/lib/telegram/bot/types/inline_query_result_cached_audio.rb +1 -0
  19. data/lib/telegram/bot/types/inline_query_result_cached_document.rb +1 -0
  20. data/lib/telegram/bot/types/inline_query_result_cached_gif.rb +1 -0
  21. data/lib/telegram/bot/types/inline_query_result_cached_mpeg4_gif.rb +1 -0
  22. data/lib/telegram/bot/types/inline_query_result_cached_photo.rb +1 -0
  23. data/lib/telegram/bot/types/inline_query_result_cached_video.rb +1 -0
  24. data/lib/telegram/bot/types/inline_query_result_cached_voice.rb +1 -0
  25. data/lib/telegram/bot/types/inline_query_result_document.rb +1 -0
  26. data/lib/telegram/bot/types/inline_query_result_location.rb +4 -0
  27. data/lib/telegram/bot/types/inline_query_result_mpeg4_gif.rb +1 -0
  28. data/lib/telegram/bot/types/inline_query_result_photo.rb +1 -0
  29. data/lib/telegram/bot/types/inline_query_result_venue.rb +2 -0
  30. data/lib/telegram/bot/types/inline_query_result_video.rb +1 -0
  31. data/lib/telegram/bot/types/inline_query_result_voice.rb +1 -0
  32. data/lib/telegram/bot/types/input_location_message_content.rb +4 -0
  33. data/lib/telegram/bot/types/input_media_document.rb +2 -0
  34. data/lib/telegram/bot/types/input_media_photo.rb +1 -0
  35. data/lib/telegram/bot/types/input_media_video.rb +1 -0
  36. data/lib/telegram/bot/types/input_venue_message_content.rb +2 -0
  37. data/lib/telegram/bot/types/location.rb +4 -0
  38. data/lib/telegram/bot/types/message.rb +6 -0
  39. data/lib/telegram/bot/types/message_auto_delete_timer_changed.rb +9 -0
  40. data/lib/telegram/bot/types/pattern_matching.rb +11 -0
  41. data/lib/telegram/bot/types/proximity_alert_triggered.rb +11 -0
  42. data/lib/telegram/bot/types/update.rb +2 -0
  43. data/lib/telegram/bot/types/venue.rb +2 -0
  44. data/lib/telegram/bot/types/video.rb +1 -0
  45. data/lib/telegram/bot/types/voice_chat_ended.rb +9 -0
  46. data/lib/telegram/bot/types/voice_chat_participants_invited.rb +9 -0
  47. data/lib/telegram/bot/types/voice_chat_started.rb +8 -0
  48. data/lib/telegram/bot/types/webhook_info.rb +17 -0
  49. data/lib/telegram/bot/types.rb +11 -1
  50. data/lib/telegram/bot/version.rb +1 -1
  51. data/lib/telegram/bot.rb +0 -1
  52. data/telegram-bot-ruby.gemspec +3 -3
  53. metadata +26 -17
  54. data/.rubocop_todo.yml +0 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2649b3b518f533f21f76f5b9002859193931492b3828cbbcd483001cecc80917
4
- data.tar.gz: c8266c61deba86552d0bd93062cf6a04bb0e7e4a505d6e6a076de7ec8433cf2f
3
+ metadata.gz: 5b5931412b4f0464fd2cbe2adedf7f23e8b2425a1732f8017eb9fc854d202060
4
+ data.tar.gz: a954f05f6201e8354e7cc720be521bdd641948240bb3568c9d83cf9160c83b24
5
5
  SHA512:
6
- metadata.gz: 9810e2b705be56be45b1ab731a544f7a242b446ec335429b358b48de4c8d552df7dfe508f62b8d7fe3c3ae7a8a9f2bf8e16bc87c9f2ea4ecdbe36e7c9b167921
7
- data.tar.gz: 887d8c8a64ccb52b079ba6ece9f6f060616d45fc4793b4c114310556a201c50e77ecb3ba5c3ee55dcf9635d21630b7e5819b70927ab9fd371ddf3d0a85fbed48
6
+ metadata.gz: 999cdc66427a961c164ff4d3e830f1d4c20b5df6487a2e53e44f2566ec2e60de5d540df849b974788c4dd26b53a9add2451022194b4520ae1b2346124e47ea3d
7
+ data.tar.gz: df14c4cb348275c9f6eaa6b2698947f62425c63802154163de5d2c532d8cd20bbf57de15439293f2b69bd744321df314840a59ec15fd78f9ef06e85db1ec730f
data/.rubocop.yml CHANGED
@@ -1,18 +1,16 @@
1
- inherit_from: .rubocop_todo.yml
1
+ ---
2
2
  require: rubocop-rspec
3
3
 
4
+ Style/Documentation:
5
+ Enabled: false
6
+
4
7
  Metrics/BlockLength:
5
- Exclude:
6
- - spec/**/*.rb
8
+ ExcludedMethods:
9
+ - context
10
+ - describe
7
11
 
8
12
  Metrics/LineLength:
13
+ Max: 120
9
14
  Exclude:
10
15
  - telegram-bot-ruby.gemspec
11
16
  - examples/*.rb
12
-
13
- Style/EmptyMethod:
14
- EnforcedStyle: expanded
15
-
16
- Style/PercentLiteralDelimiters:
17
- PreferredDelimiters:
18
- '%w': '()'
data/.travis.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.6.5
4
- - 2.7.0
3
+ - 2.6.6
4
+ - 2.7.2
5
5
  script:
6
6
  - bundle exec rubocop
7
7
  - bundle exec rspec
data/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.17.0
4
+
5
+ - Pin `faraday` to 1.0
6
+
7
+ ## 0.16.0
8
+
9
+ - Replace `inflecto` with `dry-inflector`
10
+ - Update `virtus` up to 2.0
11
+
12
+ ## 0.15.0
13
+
14
+ - Implement [Bot API 5.1](https://core.telegram.org/bots/api#march-9-2021)
15
+
16
+ ## 0.14.0
17
+
18
+ - Implement [Bot API 5.0](https://core.telegram.org/bots/api#november-4-2020)
19
+
3
20
  ## 0.13.0
4
21
 
5
22
  - Implement [Bot API 4.9](https://core.telegram.org/bots/api-changelog#june-4-2020)
data/Rakefile CHANGED
@@ -5,8 +5,8 @@ require 'rspec/core/rake_task'
5
5
 
6
6
  RuboCop::RakeTask.new(:rubocop) do |task|
7
7
  task.fail_on_error = false
8
- task.options = %w(--force-exclusion)
9
- task.patterns = %w(lib/**/*.rb)
8
+ task.options = %w[--force-exclusion]
9
+ task.patterns = %w[lib/**/*.rb]
10
10
  task.requires << 'rubocop-rspec'
11
11
  end
12
12
 
@@ -1,7 +1,7 @@
1
1
  module Telegram
2
2
  module Bot
3
- class Api # rubocop:disable ClassLength
4
- ENDPOINTS = %w(
3
+ class Api
4
+ ENDPOINTS = %w[
5
5
  getUpdates setWebhook deleteWebhook getWebhookInfo getMe sendMessage
6
6
  forwardMessage sendPhoto sendAudio sendDocument sendVideo sendVoice
7
7
  sendVideoNote sendMediaGroup sendLocation editMessageLiveLocation
@@ -19,35 +19,8 @@ module Telegram
19
19
  sendGame setGameScore getGameHighScores setPassportDataErrors
20
20
  editMessageMedia sendAnimation sendPoll stopPoll setChatPermissions
21
21
  setChatAdministratorCustomTitle sendDice getMyCommands setMyCommands
22
- setStickerSetThumb
23
- ).freeze
24
- REPLY_MARKUP_TYPES = [
25
- Telegram::Bot::Types::ReplyKeyboardMarkup,
26
- Telegram::Bot::Types::ReplyKeyboardRemove,
27
- Telegram::Bot::Types::ForceReply,
28
- Telegram::Bot::Types::InlineKeyboardMarkup
29
- ].freeze
30
- INLINE_QUERY_RESULT_TYPES = [
31
- Telegram::Bot::Types::InlineQueryResultArticle,
32
- Telegram::Bot::Types::InlineQueryResultPhoto,
33
- Telegram::Bot::Types::InlineQueryResultGif,
34
- Telegram::Bot::Types::InlineQueryResultMpeg4Gif,
35
- Telegram::Bot::Types::InlineQueryResultVideo,
36
- Telegram::Bot::Types::InlineQueryResultAudio,
37
- Telegram::Bot::Types::InlineQueryResultVoice,
38
- Telegram::Bot::Types::InlineQueryResultDocument,
39
- Telegram::Bot::Types::InlineQueryResultLocation,
40
- Telegram::Bot::Types::InlineQueryResultVenue,
41
- Telegram::Bot::Types::InlineQueryResultContact,
42
- Telegram::Bot::Types::InlineQueryResultGame,
43
- Telegram::Bot::Types::InlineQueryResultCachedPhoto,
44
- Telegram::Bot::Types::InlineQueryResultCachedGif,
45
- Telegram::Bot::Types::InlineQueryResultCachedMpeg4Gif,
46
- Telegram::Bot::Types::InlineQueryResultCachedSticker,
47
- Telegram::Bot::Types::InlineQueryResultCachedDocument,
48
- Telegram::Bot::Types::InlineQueryResultCachedVideo,
49
- Telegram::Bot::Types::InlineQueryResultCachedVoice,
50
- Telegram::Bot::Types::InlineQueryResultCachedAudio
22
+ setStickerSetThumb logOut close copyMessage createChatInviteLink
23
+ editChatInviteLink revokeChatInviteLink
51
24
  ].freeze
52
25
 
53
26
  attr_reader :token, :url
@@ -91,19 +64,15 @@ module Telegram
91
64
  end
92
65
 
93
66
  def sanitize_value(value)
94
- jsonify_inline_query_results(jsonify_reply_markup(value))
67
+ jsonify_value(value)
95
68
  end
96
69
 
97
- def jsonify_reply_markup(value)
98
- return value unless REPLY_MARKUP_TYPES.any? { |type| value.is_a?(type) }
99
- value.to_compact_hash.to_json
70
+ def jsonify_value(value)
71
+ jsonify_value?(value) ? value.to_json : value
100
72
  end
101
73
 
102
- def jsonify_inline_query_results(value)
103
- return value unless
104
- value.is_a?(Array) &&
105
- value.all? { |i| INLINE_QUERY_RESULT_TYPES.any? { |t| i.is_a?(t) } }
106
- value.map { |i| i.to_compact_hash.select { |_, v| v } }.to_json
74
+ def jsonify_value?(value)
75
+ value.respond_to?(:to_compact_hash) || value.is_a?(Array)
107
76
  end
108
77
 
109
78
  def camelize(method_name)
@@ -31,16 +31,20 @@ module Telegram
31
31
  return unless response['ok']
32
32
 
33
33
  response['result'].each do |data|
34
- update = Types::Update.new(data)
35
- @options[:offset] = update.update_id.next
36
- message = update.current_message
37
- log_incoming_message(message)
38
- yield message
34
+ yield handle_update(Types::Update.new(data))
39
35
  end
40
36
  rescue Faraday::TimeoutError
41
37
  retry
42
38
  end
43
39
 
40
+ def handle_update(update)
41
+ @options[:offset] = update.update_id.next
42
+ message = update.current_message
43
+ log_incoming_message(message)
44
+
45
+ message
46
+ end
47
+
44
48
  private
45
49
 
46
50
  def default_options
@@ -1,11 +1,9 @@
1
1
  module Telegram
2
2
  module Bot
3
3
  class NullLogger < Logger
4
- def initialize(*)
5
- end
4
+ def initialize(*); end
6
5
 
7
- def add(*)
8
- end
6
+ def add(*); end
9
7
  end
10
8
  end
11
9
  end
@@ -7,6 +7,7 @@ module Telegram
7
7
  attribute :duration, Integer
8
8
  attribute :performer, String
9
9
  attribute :title, String
10
+ attribute :file_name, String
10
11
  attribute :mime_type, String
11
12
  attribute :file_size, Integer
12
13
  attribute :thumb, PhotoSize
@@ -4,6 +4,7 @@ module Telegram
4
4
  class Base
5
5
  include Virtus.model
6
6
  include Compactable
7
+ include PatternMatching
7
8
  end
8
9
  end
9
10
  end
@@ -4,6 +4,7 @@ module Telegram
4
4
  class Chat
5
5
  include Virtus.model(finalize: false)
6
6
  include Compactable
7
+ include PatternMatching
7
8
 
8
9
  attribute :id, Integer
9
10
  attribute :type, String
@@ -0,0 +1,14 @@
1
+ module Telegram
2
+ module Bot
3
+ module Types
4
+ class ChatInviteLink < Base
5
+ attribute :invite_link, String
6
+ attribute :creator, User
7
+ attribute :is_primary, Boolean
8
+ attribute :is_revoked, Boolean
9
+ attribute :expire_date, Integer
10
+ attribute :member_limit, Integer
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,10 @@
1
+ module Telegram
2
+ module Bot
3
+ module Types
4
+ class ChatLocation < Base
5
+ attribute :location, Location
6
+ attribute :address, String
7
+ end
8
+ end
9
+ end
10
+ end
@@ -5,11 +5,13 @@ module Telegram
5
5
  attribute :user, User
6
6
  attribute :status, String
7
7
  attribute :custom_title, String
8
- attribute :until_date, Integer
8
+ attribute :is_anonymous, Boolean
9
9
  attribute :can_be_edited, Boolean
10
+ attribute :can_manage_chat, Boolean
10
11
  attribute :can_post_messages, Boolean
11
12
  attribute :can_edit_messages, Boolean
12
13
  attribute :can_delete_messages, Boolean
14
+ attribute :can_manage_voice_chats, Boolean
13
15
  attribute :can_restrict_members, Boolean
14
16
  attribute :can_promote_members, Boolean
15
17
  attribute :can_change_info, Boolean
@@ -21,6 +23,7 @@ module Telegram
21
23
  attribute :can_send_polls, Boolean
22
24
  attribute :can_send_other_messages, Boolean
23
25
  attribute :can_add_web_page_previews, Boolean
26
+ attribute :until_date, Integer
24
27
  end
25
28
  end
26
29
  end
@@ -0,0 +1,14 @@
1
+ module Telegram
2
+ module Bot
3
+ module Types
4
+ class ChatMemberUpdated < Base
5
+ attribute :chat, Chat
6
+ attribute :from, User
7
+ attribute :date, Integer
8
+ attribute :old_chat_member, ChatMember
9
+ attribute :new_chat_member, ChatMember
10
+ attribute :invite_link, ChatInviteLink
11
+ end
12
+ end
13
+ end
14
+ end
@@ -5,7 +5,7 @@ module Telegram
5
5
  def to_compact_hash
6
6
  Hash[attributes.dup.delete_if { |_, v| v.nil? }.map do |key, value|
7
7
  value =
8
- if value.class.ancestors.include?(Telegram::Bot::Types::Base)
8
+ if value.respond_to?(:to_compact_hash)
9
9
  value.to_compact_hash
10
10
  else
11
11
  value
@@ -14,6 +14,10 @@ module Telegram
14
14
  [key, value]
15
15
  end]
16
16
  end
17
+
18
+ def to_json(*args)
19
+ to_compact_hash.select { |_, v| v }.to_json(*args)
20
+ end
17
21
  end
18
22
  end
19
23
  end
@@ -7,6 +7,7 @@ module Telegram
7
7
  attribute :audio_url, String
8
8
  attribute :title, String
9
9
  attribute :caption, String
10
+ attribute :parse_mode, String
10
11
  attribute :performer, String
11
12
  attribute :audio_duration, Integer
12
13
  attribute :reply_markup, InlineKeyboardMarkup
@@ -6,6 +6,7 @@ module Telegram
6
6
  attribute :id, String
7
7
  attribute :audio_file_id, String
8
8
  attribute :caption, String
9
+ attribute :parse_mode, String
9
10
  attribute :reply_markup, InlineKeyboardMarkup
10
11
  attribute :input_message_content, InputMessageContent
11
12
  end
@@ -8,6 +8,7 @@ module Telegram
8
8
  attribute :document_file_id, String
9
9
  attribute :description, String
10
10
  attribute :caption, String
11
+ attribute :parse_mode, String
11
12
  attribute :reply_markup, InlineKeyboardMarkup
12
13
  attribute :input_message_content, InputMessageContent
13
14
  end
@@ -7,6 +7,7 @@ module Telegram
7
7
  attribute :gif_file_id, String
8
8
  attribute :title, String
9
9
  attribute :caption, String
10
+ attribute :parse_mode, String
10
11
  attribute :reply_markup, InlineKeyboardMarkup
11
12
  attribute :input_message_content, InputMessageContent
12
13
  end
@@ -7,6 +7,7 @@ module Telegram
7
7
  attribute :mpeg4_file_id, String
8
8
  attribute :title, String
9
9
  attribute :caption, String
10
+ attribute :parse_mode, String
10
11
  attribute :reply_markup, InlineKeyboardMarkup
11
12
  attribute :input_message_content, InputMessageContent
12
13
  end
@@ -8,6 +8,7 @@ module Telegram
8
8
  attribute :title, String
9
9
  attribute :description, String
10
10
  attribute :caption, String
11
+ attribute :parse_mode, String
11
12
  attribute :reply_markup, InlineKeyboardMarkup
12
13
  attribute :input_message_content, InputMessageContent
13
14
  end
@@ -8,6 +8,7 @@ module Telegram
8
8
  attribute :title, String
9
9
  attribute :description, String
10
10
  attribute :caption, String
11
+ attribute :parse_mode, String
11
12
  attribute :reply_markup, InlineKeyboardMarkup
12
13
  attribute :input_message_content, InputMessageContent
13
14
  end
@@ -7,6 +7,7 @@ module Telegram
7
7
  attribute :voice_file_id, String
8
8
  attribute :title, String
9
9
  attribute :caption, String
10
+ attribute :parse_mode, String
10
11
  attribute :reply_markup, InlineKeyboardMarkup
11
12
  attribute :input_message_content, InputMessageContent
12
13
  end
@@ -6,6 +6,7 @@ module Telegram
6
6
  attribute :id, String
7
7
  attribute :title, String
8
8
  attribute :caption, String
9
+ attribute :parse_mode, String
9
10
  attribute :document_url, String
10
11
  attribute :mime_type, String
11
12
  attribute :description, String
@@ -7,6 +7,10 @@ module Telegram
7
7
  attribute :latitude, Float
8
8
  attribute :longitude, Float
9
9
  attribute :title, String
10
+ attribute :horizontal_accuracy, Float
11
+ attribute :live_period, Integer
12
+ attribute :heading, Integer
13
+ attribute :proximity_alert_radius, Integer
10
14
  attribute :reply_markup, InlineKeyboardMarkup
11
15
  attribute :input_message_content, InputMessageContent
12
16
  attribute :thumb_url, String
@@ -12,6 +12,7 @@ module Telegram
12
12
  attribute :thumb_mime_type, String
13
13
  attribute :title, String
14
14
  attribute :caption, String
15
+ attribute :parse_mode, String
15
16
  attribute :reply_markup, InlineKeyboardMarkup
16
17
  attribute :input_message_content, InputMessageContent
17
18
  end
@@ -11,6 +11,7 @@ module Telegram
11
11
  attribute :title, String
12
12
  attribute :description, String
13
13
  attribute :caption, String
14
+ attribute :parse_mode, String
14
15
  attribute :reply_markup, InlineKeyboardMarkup
15
16
  attribute :input_message_content, InputMessageContent
16
17
  end
@@ -10,6 +10,8 @@ module Telegram
10
10
  attribute :address, String
11
11
  attribute :foursquare_id, String
12
12
  attribute :foursquare_type, String
13
+ attribute :google_place_id, String
14
+ attribute :google_place_type, String
13
15
  attribute :reply_markup, InlineKeyboardMarkup
14
16
  attribute :input_message_content, InputMessageContent
15
17
  attribute :thumb_url, String
@@ -9,6 +9,7 @@ module Telegram
9
9
  attribute :thumb_url, String
10
10
  attribute :title, String
11
11
  attribute :caption, String
12
+ attribute :parse_mode, String
12
13
  attribute :video_width, Integer
13
14
  attribute :video_height, Integer
14
15
  attribute :video_duration, Integer
@@ -7,6 +7,7 @@ module Telegram
7
7
  attribute :voice_url, String
8
8
  attribute :title, String
9
9
  attribute :caption, String
10
+ attribute :parse_mode, String
10
11
  attribute :voice_duration, Integer
11
12
  attribute :reply_markup, InlineKeyboardMarkup
12
13
  attribute :input_message_content, InputMessageContent
@@ -4,6 +4,10 @@ module Telegram
4
4
  class InputLocationMessageContent < InputMessageContent
5
5
  attribute :latitude, Float
6
6
  attribute :longitude, Float
7
+ attribute :horizontal_accuracy, Float
8
+ attribute :live_period, Integer
9
+ attribute :heading, Integer
10
+ attribute :proximity_alert_radius, Integer
7
11
  end
8
12
  end
9
13
  end
@@ -7,6 +7,8 @@ module Telegram
7
7
  attribute :thumb, String
8
8
  attribute :caption, String
9
9
  attribute :parse_mode, String
10
+ attribute :caption_entities, Array[MessageEntity]
11
+ attribute :disable_content_type_detection, Boolean
10
12
  end
11
13
  end
12
14
  end
@@ -5,6 +5,7 @@ module Telegram
5
5
  attribute :type, String, default: 'photo'
6
6
  attribute :media, String
7
7
  attribute :caption, String
8
+ attribute :parse_mode, String
8
9
  end
9
10
  end
10
11
  end
@@ -5,6 +5,7 @@ module Telegram
5
5
  attribute :type, String, default: 'video'
6
6
  attribute :media, String
7
7
  attribute :caption, String
8
+ attribute :parse_mode, String
8
9
  attribute :width, Integer
9
10
  attribute :height, Integer
10
11
  attribute :duration, Integer
@@ -8,6 +8,8 @@ module Telegram
8
8
  attribute :address, String
9
9
  attribute :foursquare_id, String
10
10
  attribute :foursquare_type, String
11
+ attribute :google_place_id, String
12
+ attribute :google_place_type, String
11
13
  end
12
14
  end
13
15
  end
@@ -4,6 +4,10 @@ module Telegram
4
4
  class Location < Base
5
5
  attribute :longitude, Float
6
6
  attribute :latitude, Float
7
+ attribute :horizontal_accuracy, Float
8
+ attribute :live_period, Integer
9
+ attribute :heading, Integer
10
+ attribute :proximity_alert_radius, Integer
7
11
  end
8
12
  end
9
13
  end
@@ -4,6 +4,7 @@ module Telegram
4
4
  class Message < Base
5
5
  attribute :message_id, Integer
6
6
  attribute :from, User
7
+ attribute :sender_chat, Chat
7
8
  attribute :date, Integer
8
9
  attribute :chat, Chat
9
10
  attribute :forward_from, User
@@ -43,6 +44,7 @@ module Telegram
43
44
  attribute :group_chat_created, Boolean
44
45
  attribute :supergroup_chat_created, Boolean
45
46
  attribute :channel_chat_created, Boolean
47
+ attribute :message_auto_delete_timer_changed, MessageAutoDeleteTimerChanged
46
48
  attribute :migrate_to_chat_id, Integer
47
49
  attribute :migrate_from_chat_id, Integer
48
50
  attribute :pinned_message, Message
@@ -50,6 +52,10 @@ module Telegram
50
52
  attribute :successful_payment, SuccessfulPayment
51
53
  attribute :connected_website, String
52
54
  attribute :passport_data, PassportData
55
+ attribute :proximity_alert_triggered, ProximityAlertTriggered
56
+ attribute :voice_chat_started, VoiceChatStarted
57
+ attribute :voice_chat_ended, VoiceChatEnded
58
+ attribute :voice_chat_participants_invited, VoiceChatParticipantsInvited
53
59
  attribute :reply_markup, InlineKeyboardMarkup
54
60
 
55
61
  alias to_s text
@@ -0,0 +1,9 @@
1
+ module Telegram
2
+ module Bot
3
+ module Types
4
+ class MessageAutoDeleteTimerChanged < Base
5
+ attribute :message_auto_delete_time, Integer
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ module Telegram
2
+ module Bot
3
+ module Types
4
+ module PatternMatching
5
+ def deconstruct_keys(_keys)
6
+ attributes
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Telegram
2
+ module Bot
3
+ module Types
4
+ class ProximityAlertTriggered < Base
5
+ attribute :traveler, User
6
+ attribute :watcher, User
7
+ attribute :distance, Integer
8
+ end
9
+ end
10
+ end
11
+ end
@@ -14,6 +14,8 @@ module Telegram
14
14
  attribute :pre_checkout_query, PreCheckoutQuery
15
15
  attribute :poll, Poll
16
16
  attribute :poll_answer, PollAnswer
17
+ attribute :my_chat_member, ChatMemberUpdated
18
+ attribute :chat_member, ChatMemberUpdated
17
19
 
18
20
  def current_message
19
21
  @current_message ||=
@@ -7,6 +7,8 @@ module Telegram
7
7
  attribute :address, String
8
8
  attribute :foursquare_id, String
9
9
  attribute :foursquare_type, String
10
+ attribute :google_place_id, String
11
+ attribute :google_place_type, String
10
12
  end
11
13
  end
12
14
  end
@@ -8,6 +8,7 @@ module Telegram
8
8
  attribute :height, Integer
9
9
  attribute :duration, Integer
10
10
  attribute :thumb, PhotoSize
11
+ attribute :file_name, String
11
12
  attribute :mime_type, String
12
13
  attribute :file_size, Integer
13
14
  end
@@ -0,0 +1,9 @@
1
+ module Telegram
2
+ module Bot
3
+ module Types
4
+ class VoiceChatEnded < Base
5
+ attribute :duration, Integer
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Telegram
2
+ module Bot
3
+ module Types
4
+ class VoiceChatParticipantsInvited < Base
5
+ attribute :users, Array[User]
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ module Telegram
2
+ module Bot
3
+ module Types
4
+ class VoiceChatStarted < Base
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,17 @@
1
+ module Telegram
2
+ module Bot
3
+ module Types
4
+ class WebhookInfo < Base
5
+ attribute :url, String
6
+ attribute :has_custom_certificate, Boolean
7
+ attribute :pending_update_count, Integer
8
+ attribute :ip_address, String
9
+ attribute :last_error_date, Integer
10
+ attribute :last_error_message, String
11
+ attribute :max_connections, String
12
+ attribute :max_connections, Integer
13
+ attribute :allowed_updates, Array[String]
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,4 +1,5 @@
1
1
  require 'telegram/bot/types/compactable'
2
+ require 'telegram/bot/types/pattern_matching'
2
3
  require 'telegram/bot/types/base'
3
4
  require 'telegram/bot/types/user'
4
5
  require 'telegram/bot/types/photo_size'
@@ -72,11 +73,15 @@ require 'telegram/bot/types/inline_query_result_venue'
72
73
  require 'telegram/bot/types/inline_query_result_video'
73
74
  require 'telegram/bot/types/inline_query_result_voice'
74
75
  require 'telegram/bot/types/chosen_inline_result'
76
+ require 'telegram/bot/types/proximity_alert_triggered'
77
+ require 'telegram/bot/types/voice_chat_started'
78
+ require 'telegram/bot/types/voice_chat_ended'
79
+ require 'telegram/bot/types/voice_chat_participants_invited'
80
+ require 'telegram/bot/types/message_auto_delete_timer_changed'
75
81
  require 'telegram/bot/types/message'
76
82
  require 'telegram/bot/types/callback_query'
77
83
  require 'telegram/bot/types/shipping_query'
78
84
  require 'telegram/bot/types/pre_checkout_query'
79
- require 'telegram/bot/types/update'
80
85
  require 'telegram/bot/types/keyboard_button_poll_type'
81
86
  require 'telegram/bot/types/keyboard_button'
82
87
  require 'telegram/bot/types/reply_keyboard_markup'
@@ -85,12 +90,17 @@ require 'telegram/bot/types/force_reply'
85
90
  require 'telegram/bot/types/file'
86
91
  require 'telegram/bot/types/labeled_price'
87
92
  require 'telegram/bot/types/shipping_option'
93
+ require 'telegram/bot/types/chat_invite_link'
88
94
  require 'telegram/bot/types/chat_member'
95
+ require 'telegram/bot/types/chat_member_updated'
96
+ require 'telegram/bot/types/update'
89
97
  require 'telegram/bot/types/user_profile_photos'
90
98
  require 'telegram/bot/types/input_media_photo'
91
99
  require 'telegram/bot/types/input_media_video'
92
100
  require 'telegram/bot/types/input_media_animation'
93
101
  require 'telegram/bot/types/input_media_audio'
94
102
  require 'telegram/bot/types/input_media_document'
103
+ require 'telegram/bot/types/webhook_info'
104
+ require 'telegram/bot/types/chat_location'
95
105
 
96
106
  Virtus.finalize
@@ -1,5 +1,5 @@
1
1
  module Telegram
2
2
  module Bot
3
- VERSION = '0.13.0'.freeze
3
+ VERSION = '0.17.0'.freeze
4
4
  end
5
5
  end
data/lib/telegram/bot.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'virtus'
2
- require 'inflecto'
3
2
  require 'logger'
4
3
  require 'json'
5
4
  require 'faraday'
@@ -17,9 +17,9 @@ Gem::Specification.new do |spec|
17
17
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
18
  spec.require_paths = ['lib']
19
19
 
20
- spec.add_dependency 'faraday'
21
- spec.add_dependency 'virtus'
22
- spec.add_dependency 'inflecto'
20
+ spec.add_dependency 'faraday', '~> 1.0'
21
+ spec.add_dependency 'virtus', '~> 2.0'
22
+ spec.add_dependency 'dry-inflector'
23
23
 
24
24
  spec.add_development_dependency 'rake', '~> 13.0'
25
25
  spec.add_development_dependency 'pry'
metadata CHANGED
@@ -1,45 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: telegram-bot-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Tipugin
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-01 00:00:00.000000000 Z
11
+ date: 2022-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '1.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: virtus
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '2.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '2.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: inflecto
42
+ name: dry-inflector
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -122,7 +122,7 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '1.8'
125
- description:
125
+ description:
126
126
  email:
127
127
  - atipugin@gmail.com
128
128
  executables: []
@@ -132,7 +132,6 @@ files:
132
132
  - ".gitignore"
133
133
  - ".rspec"
134
134
  - ".rubocop.yml"
135
- - ".rubocop_todo.yml"
136
135
  - ".travis.yml"
137
136
  - CHANGELOG.md
138
137
  - Gemfile
@@ -157,7 +156,10 @@ files:
157
156
  - lib/telegram/bot/types/callback_game.rb
158
157
  - lib/telegram/bot/types/callback_query.rb
159
158
  - lib/telegram/bot/types/chat.rb
159
+ - lib/telegram/bot/types/chat_invite_link.rb
160
+ - lib/telegram/bot/types/chat_location.rb
160
161
  - lib/telegram/bot/types/chat_member.rb
162
+ - lib/telegram/bot/types/chat_member_updated.rb
161
163
  - lib/telegram/bot/types/chat_permissions.rb
162
164
  - lib/telegram/bot/types/chat_photo.rb
163
165
  - lib/telegram/bot/types/chosen_inline_result.rb
@@ -212,6 +214,7 @@ files:
212
214
  - lib/telegram/bot/types/login_url.rb
213
215
  - lib/telegram/bot/types/mask_position.rb
214
216
  - lib/telegram/bot/types/message.rb
217
+ - lib/telegram/bot/types/message_auto_delete_timer_changed.rb
215
218
  - lib/telegram/bot/types/message_entity.rb
216
219
  - lib/telegram/bot/types/order_info.rb
217
220
  - lib/telegram/bot/types/passport_data.rb
@@ -225,11 +228,13 @@ files:
225
228
  - lib/telegram/bot/types/passport_element_error_translation_files.rb
226
229
  - lib/telegram/bot/types/passport_element_error_unspecified.rb
227
230
  - lib/telegram/bot/types/passport_file.rb
231
+ - lib/telegram/bot/types/pattern_matching.rb
228
232
  - lib/telegram/bot/types/photo_size.rb
229
233
  - lib/telegram/bot/types/poll.rb
230
234
  - lib/telegram/bot/types/poll_answer.rb
231
235
  - lib/telegram/bot/types/poll_option.rb
232
236
  - lib/telegram/bot/types/pre_checkout_query.rb
237
+ - lib/telegram/bot/types/proximity_alert_triggered.rb
233
238
  - lib/telegram/bot/types/reply_keyboard_markup.rb
234
239
  - lib/telegram/bot/types/reply_keyboard_remove.rb
235
240
  - lib/telegram/bot/types/shipping_address.rb
@@ -245,12 +250,16 @@ files:
245
250
  - lib/telegram/bot/types/video.rb
246
251
  - lib/telegram/bot/types/video_note.rb
247
252
  - lib/telegram/bot/types/voice.rb
253
+ - lib/telegram/bot/types/voice_chat_ended.rb
254
+ - lib/telegram/bot/types/voice_chat_participants_invited.rb
255
+ - lib/telegram/bot/types/voice_chat_started.rb
256
+ - lib/telegram/bot/types/webhook_info.rb
248
257
  - lib/telegram/bot/version.rb
249
258
  - telegram-bot-ruby.gemspec
250
259
  homepage: https://github.com/atipugin/telegram-bot
251
260
  licenses: []
252
261
  metadata: {}
253
- post_install_message:
262
+ post_install_message:
254
263
  rdoc_options: []
255
264
  require_paths:
256
265
  - lib
@@ -265,8 +274,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
265
274
  - !ruby/object:Gem::Version
266
275
  version: '0'
267
276
  requirements: []
268
- rubygems_version: 3.1.2
269
- signing_key:
277
+ rubygems_version: 3.3.3
278
+ signing_key:
270
279
  specification_version: 4
271
280
  summary: Ruby wrapper for Telegram's Bot API
272
281
  test_files: []
data/.rubocop_todo.yml DELETED
@@ -1,13 +0,0 @@
1
- # This configuration was generated by `rubocop --auto-gen-config`
2
- # on 2015-06-27 20:51:46 +0300 using RuboCop version 0.32.1.
3
- # The point is for the user to remove these configuration records
4
- # one by one as the offenses are removed from the code base.
5
- # Note that changes in the inspected code, or installation of new
6
- # versions of RuboCop, may require this file to be generated again.
7
-
8
- Metrics/MethodLength:
9
- Max: 11
10
-
11
- # Offense count: 15
12
- Style/Documentation:
13
- Enabled: false