telegram-bot-ruby 0.13.0 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
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