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 +4 -4
- data/CHANGELOG.md +28 -2
- data/README.md +1 -0
- data/lib/api/types.rb +59 -5
- data/lib/core/rate_limit.rb +6 -3
- data/lib/telegem.rb +1 -1
- metadata +12 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 45cc39ffb7a5897950caff2309dbeb1e5d479d8d20e13e2219fc9165ec4026d5
|
|
4
|
+
data.tar.gz: '039472d0308d1e42b752cee2a93a0cdd0880ee1677608964911d5ba6e947a750'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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
|
+
[](https://github.com/slick-lab/telegem/actions/workflows/github-code-scanning/codeql)
|
|
5
6
|
[](https://badge.fury.io/rb/telegem)
|
|
6
7
|
[](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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
data/lib/core/rate_limit.rb
CHANGED
|
@@ -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
|
-
|
|
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
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
|
+
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-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
185
|
-
bug_tracker_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
|
|
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.
|
|
189
|
+
Thanks for installing Telegem 3.5.0!
|
|
190
190
|
|
|
191
191
|
Documentation: https://github.com/slick-lab/telegem
|
|
192
192
|
|
|
193
|
-
|
|
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
|
-
|
|
198
|
-
|
|
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.
|
|
206
|
+
version: 3.1.0
|
|
207
207
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
208
208
|
requirements:
|
|
209
209
|
- - ">="
|