telegem 3.4.0 → 3.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a7cc82173aa5648e1b1d119971c9fec495db0bb9f2764135ffa15bd5c641e1e
4
- data.tar.gz: ec409f5eecba8209c1f1f7e6237f2eddddebb67251fe9ffe4d8f329845256758
3
+ metadata.gz: 45cc39ffb7a5897950caff2309dbeb1e5d479d8d20e13e2219fc9165ec4026d5
4
+ data.tar.gz: '039472d0308d1e42b752cee2a93a0cdd0880ee1677608964911d5ba6e947a750'
5
5
  SHA512:
6
- metadata.gz: 0e3eaf7311d7cf248b0b59bfa1e0fd7a4ae745129dae8abc0d6a50be55b85c8d86a399913585e72b70fbff935e07450418d6085d2e3ce7ba8e6de3999235593c
7
- data.tar.gz: 93f600342a065a36014d8e3d0c37c455ec1bfe1db9ac43801ce5b9cb04d66906dd036b7b239f2e47359bb36cb324ed2fdb3894d56ea146abafd9c20612670a06
6
+ metadata.gz: 8108374c406751c497c309a50a40a7aa99776f1c6871a2f1cc700b96bfa328046bdcaf2e9848cd9aa28b90dcb780f42f1c790ad03f85261d3a16c1802186c812
7
+ data.tar.gz: 37f9fd3006d5702f049f79817e9a9fe0054c04b4ecbdedd4e06daa2fe314f28eb98fdfb539fdcba4280c12a9eeff82c2b7851eb2edb2c28c5285a8eb94e223a8
data/CHANGELOG.md CHANGED
@@ -1,10 +1,36 @@
1
1
  # Telegem Changelog
2
2
 
3
- ## v3.4.0(latest)
3
+ ## v3.5.0 (latest)
4
+
5
+ ### Added
6
+ - **Bot API 10.0 Full Support**
7
+ - Guest mode support: `SentGuestMessage` type and `guest_message` update type
8
+ - Message reactions: Support for deleting reactions via `call('deleteAllMessageReactions', ...)` and `call('deleteMessageReaction', ...)`
9
+ - Live photos: `LivePhoto`, `InputMediaLivePhoto`, `PaidMediaLivePhoto`, `InputPaidMediaLivePhoto` types
10
+ - Poll media enhancements: `PollMedia`, `InputPollMedia`, `InputPollOptionMedia` types
11
+ - Business access: New types and methods accessible via generic `call` method
12
+ - Enhanced chat administrators: Support for `return_bots` parameter in `getChatAdministrators`
13
+ - User guest query support: `supports_guest_queries` field in User type
14
+ - Message guest fields: `guest_bot_caller_user`, `guest_bot_caller_chat`, `guest_query_id`, `live_photo` in Message type
15
+ - Poll media fields: `media`, `explanation_media` in Poll type; `media` in PollOption type
16
+ - Reaction permissions: `can_react_to_messages` in ChatPermissions and ChatMemberRestricted types
17
+
18
+ ### Changed
19
+ - Updated API version support to Bot API 10.0
20
+ - All new API methods automatically supported through generic `call()` and `call!()` methods
21
+
22
+ ## v3.4.0
4
23
 
5
24
  - added bot api 9.6 full support
6
25
  - all fixes from v3.3.2-rc.1
7
-
26
+ - enhanced install message
27
+ - requires ruby v >= 3.4.x
28
+ - added bot api 9.6 helper to ctx
29
+ - introduced redis store to `session/redis_store.rb`
30
+ - new translate plugin
31
+ - added more docs to support telegem -v 3.x
32
+ - improved error message on invalid middlewares
33
+ - removed `concurrent-ruby` gem to keep telegem lightweight
8
34
 
9
35
  ## v3.3.2-rc.1
10
36
 
data/README.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  Welcome to the comprehensive documentation for Telegem, a modern Ruby framework for building Telegram bots.
4
4
 
5
+ [![CodeQl](https://github.com/slick-lab/telegem/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/slick-lab/telegem/actions/workflows/github-code-scanning/codeql)
5
6
  [![Gem Version](https://badge.fury.io/rb/telegem.svg)](https://badge.fury.io/rb/telegem)
6
7
  [![Join Telegram Group](https://img.shields.io/badge/Telegram-Join%20Group-2CA5E0?style=flat-square&logo=telegram&logoColor=white)](https://t.me/r_telegem)
7
8
 
data/lib/api/types.rb CHANGED
@@ -91,7 +91,8 @@ module Telegem
91
91
  can_join_groups can_read_all_group_messages
92
92
  supports_inline_queries language_code
93
93
  is_premium added_to_attachment_menu
94
- can_connect_to_business can_manage_bots].freeze
94
+ can_connect_to_business can_manage_bots
95
+ supports_guest_queries].freeze
95
96
 
96
97
  def initialize(data)
97
98
  super(data)
@@ -191,7 +192,9 @@ module Telegem
191
192
  forward_from_message_id forward_signature
192
193
  forward_sender_name forward_date reply_to_message
193
194
  media_group_id author_signature
194
- has_protected_content managed_bot_created managed_bot].freeze
195
+ has_protected_content managed_bot_created managed_bot
196
+ guest_bot_caller_user guest_bot_caller_chat
197
+ guest_query_id live_photo].freeze
195
198
 
196
199
  def initialize(data)
197
200
  super(data)
@@ -301,6 +304,10 @@ module Telegem
301
304
  wrap('voice', Voice)
302
305
  wrap('video_note', VideoNote)
303
306
  wrap('sticker', Sticker)
307
+ wrap('live_photo', LivePhoto)
308
+
309
+ wrap('guest_bot_caller_user', User)
310
+ wrap('guest_bot_caller_chat', Chat)
304
311
 
305
312
  wrap('invoice', Invoice)
306
313
  wrap('successful_payment', SuccessfulPayment)
@@ -409,7 +416,8 @@ module Telegem
409
416
  edited_channel_post inline_query chosen_inline_result
410
417
  callback_query shipping_query pre_checkout_query
411
418
  poll poll_answer my_chat_member chat_member
412
- chat_join_request managed_bot_created managed_bot].freeze
419
+ chat_join_request managed_bot_created managed_bot
420
+ guest_message].freeze
413
421
 
414
422
  def initialize(data)
415
423
  super(data)
@@ -438,6 +446,7 @@ module Telegem
438
446
  return :chat_join_request if chat_join_request
439
447
  return :managed_bot_created if managed_bot_created
440
448
  return :managed_bot if managed_bot
449
+ return :guest_message if guest_message
441
450
  :unknown
442
451
  end
443
452
 
@@ -463,6 +472,8 @@ module Telegem
463
472
  chat_join_request.from
464
473
  when :managed_bot_created, :managed_bot
465
474
  managed_bot_created&.from || managed_bot&.from
475
+ when :guest_message
476
+ guest_message.from
466
477
  else
467
478
  nil
468
479
  end
@@ -497,6 +508,8 @@ module Telegem
497
508
  # Bot API 9.6 - Managed Bot Support
498
509
  wrap('managed_bot_created', ManagedBotCreated)
499
510
  wrap('managed_bot', ManagedBotUpdated)
511
+ # Bot API 10.0 - Guest Message Support
512
+ wrap('guest_message', SentGuestMessage)
500
513
  end
501
514
  end
502
515
 
@@ -546,6 +559,8 @@ module Telegem
546
559
  # Bot API 9.6 enhancements
547
560
  wrap('added_by_user', User)
548
561
  wrap('added_by_chat', Chat)
562
+ # Bot API 10.0 - media support
563
+ wrap('media', InputPollOptionMedia)
549
564
  end
550
565
  end
551
566
 
@@ -556,10 +571,19 @@ module Telegem
556
571
  super(data)
557
572
  wrap_array('options', PollOption)
558
573
  wrap_array('explanation_entities', MessageEntity)
574
+ # Bot API 10.0 - poll media support
575
+ wrap('media', PollMedia)
576
+ wrap('explanation_media', PollMedia)
559
577
  end
560
578
  end
561
579
 
562
- class ChatPermissions < BaseType; end
580
+ class ChatPermissions < BaseType
581
+ def initialize(data)
582
+ super(data)
583
+ # Bot API 10.0 - reaction support
584
+ define_accessor(:can_react_to_messages)
585
+ end
586
+ end
563
587
  class ChatPhoto < BaseType; end
564
588
  class ChatInviteLink < BaseType; end
565
589
 
@@ -568,7 +592,13 @@ module Telegem
568
592
  class ChatMemberOwner < ChatMember; end
569
593
  class ChatMemberAdministrator < ChatMember; end
570
594
  class ChatMemberMember < ChatMember; end
571
- class ChatMemberRestricted < ChatMember; end
595
+ class ChatMemberRestricted < ChatMember
596
+ def initialize(data)
597
+ super(data)
598
+ # Bot API 10.0 - reaction support
599
+ define_accessor(:can_react_to_messages)
600
+ end
601
+ end
572
602
  class ChatMemberLeft < ChatMember; end
573
603
  class ChatMemberBanned < ChatMember; end
574
604
 
@@ -699,5 +729,29 @@ module Telegem
699
729
  class ManagedBotCreated < BaseType; end
700
730
  class ManagedBotDeleted < BaseType; end
701
731
  class ManagedBotUpdated < BaseType; end
732
+
733
+ # Bot API 10.0 - Guest Mode Support
734
+ class SentGuestMessage < BaseType; end
735
+
736
+ # Bot API 10.0 - Poll Media Support
737
+ class PollMedia < BaseType; end
738
+ class InputPollMedia < BaseType; end
739
+ class InputPollOptionMedia < BaseType; end
740
+
741
+ # Bot API 10.0 - Live Photo Support
742
+ class LivePhoto < BaseType
743
+ def initialize(data)
744
+ super(data)
745
+ wrap('photo', PhotoSize)
746
+ wrap('video', Video)
747
+ end
748
+ end
749
+
750
+ class InputMediaLivePhoto < BaseType; end
751
+ class PaidMediaLivePhoto < BaseType; end
752
+ class InputPaidMediaLivePhoto < BaseType; end
753
+
754
+ # Bot API 10.0 - Business Access Settings
755
+ class BotAccessSettings < BaseType; end
702
756
  end
703
757
  end
@@ -63,7 +63,6 @@ module Telegem
63
63
  end
64
64
 
65
65
  def increment_counters(ctx)
66
- now = Time.now.to_i
67
66
  if @options[:global]
68
67
  key = "global"
69
68
  @counters[:global].increment(key, 1, ttl: @options[:global][:per])
@@ -80,8 +79,12 @@ module Telegem
80
79
  end
81
80
  end
82
81
  def rate_limit_response(ctx)
83
- ctx.reply("⏳ Please wait a moment before sending another request.") rescue nil
82
+ begin
83
+ ctx.reply("⏳ Please wait a moment before sending another request.")
84
+ rescue StandardError => e
85
+ ctx.logger&.warn("Failed to send rate limit response: #{e.class}: #{e.message}")
86
+ end
84
87
  nil
85
88
  end
86
89
  end
87
- end
90
+ end
data/lib/telegem.rb CHANGED
@@ -3,7 +3,7 @@ require 'logger'
3
3
  require 'json'
4
4
 
5
5
  module Telegem
6
- VERSION = "3.4.0"
6
+ VERSION = "3.5.0"
7
7
  end
8
8
 
9
9
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: telegem
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - zendrx
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-05-05 00:00:00.000000000 Z
11
+ date: 2026-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: securerandom
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 2.35.2
33
+ version: '2.35'
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: 2.35.2
40
+ version: '2.35'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: async-http
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -179,23 +179,23 @@ homepage: https://github.com/slick-lab/telegem
179
179
  licenses:
180
180
  - MIT
181
181
  metadata:
182
- homepage_uri: https://github.com/slick-lab/telegem/-/blob/main/README.md
182
+ homepage_uri: https://github.com/slick-lab/telegem/blob/main/README.md
183
183
  source_code_uri: https://github.com/slick-lab/telegem
184
- changelog_uri: https://github.com/slick-lab/telegem/-/blob/main/CHANGELOG.md
185
- bug_tracker_uri: https://github.com/slick-lab/telegem/-/issues
184
+ changelog_uri: https://github.com/slick-lab/telegem/blob/main/CHANGELOG.md
185
+ bug_tracker_uri: https://github.com/slick-lab/telegem/issues
186
186
  documentation_uri: https://github.com/slick-lab/telegem/tree/main/docs
187
187
  rubygems_mfa_required: 'false'
188
188
  post_install_message: |
189
- Thanks for installing Telegem 3.4.0!
189
+ Thanks for installing Telegem 3.5.0!
190
190
 
191
191
  Documentation: https://github.com/slick-lab/telegem
192
192
 
193
- For SSL Webhooks:
193
+ For SSL Webhooks:
194
194
  Run: telegem-ssl your-domain.com
195
195
  This sets up Let's Encrypt certificates automatically.
196
196
 
197
- join the official telegram group: https://t.me/r_telegem
198
- Happy bot building!
197
+ Join the official telegram group: https://t.me/r_telegem
198
+ Happy bot building!
199
199
  rdoc_options: []
200
200
  require_paths:
201
201
  - lib
@@ -203,7 +203,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
203
203
  requirements:
204
204
  - - ">="
205
205
  - !ruby/object:Gem::Version
206
- version: 3.4.0
206
+ version: 3.1.0
207
207
  required_rubygems_version: !ruby/object:Gem::Requirement
208
208
  requirements:
209
209
  - - ">="