telegram_workflow 1.7.0 → 1.8.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: b7d04e49cdc1dbb680c62e9293eba4e3e8bc42aeb19f071a18e7461bb12cc85f
4
- data.tar.gz: cfa4a8f4c2bfe5b8cca0b3f6d3ba425b87ee3da3458fe851aba0fe94cc6d8273
3
+ metadata.gz: 4e920305a6060ecc2d039a6527387f4f89f02b064278c43c9d3fedc41d1123ae
4
+ data.tar.gz: fdd2e724083ca50bcfe2c805142da92f5972d9abfff25e5140892aca0d5bdd68
5
5
  SHA512:
6
- metadata.gz: '058d9f15e33a4dccfc331a44dbaef37f41d2b03a83ebf4d8949613f160e3c7e7458423b81ac3171dec0b520464c15f37619480b87ffc347ab3fd387fef1b3de0'
7
- data.tar.gz: 04f6bfc69e83f2cfc47e1ed1f88708d74ff899c4e6d49184ec0c10815799b1dfa7e1b42a0dcb9bf6afde3fe566e518c34210f3d0190d488ef2d062297db7e2de
6
+ metadata.gz: 9895a4c27ab3740acdf3efd69c1bf40ee074a387375f0c9f858ff05aa88a0df69c2e8e1046c698cc38936e6fa2995f705377b5933098db9bc7e191c8cf3bfb26
7
+ data.tar.gz: 0dd8a6b2fe280fa0d1bd556fc39cbe027073da5210c76c3e5d93a91616a6967b41e594383f2edb86eb2bbd6e115e40e8eddf6845dfe2f79f11655277c4b414be
data/Gemfile CHANGED
@@ -9,5 +9,4 @@ gem "rspec", "~> 3.0"
9
9
  group :test do
10
10
  gem "simplecov"
11
11
  gem "simplecov-lcov", "~> 0.8.0"
12
- gem "dbm"
13
12
  end
@@ -1,6 +1,6 @@
1
1
  class TelegramWorkflow::Action
2
2
  extend ::Forwardable
3
- def_delegators :@__workflow, :client, :params, :redirect_to
3
+ def_delegators :@__workflow, :client, :params, :logger, :redirect_to
4
4
 
5
5
  def initialize(workflow, session, flash)
6
6
  @__workflow = workflow
@@ -1,5 +1,5 @@
1
1
  class TelegramWorkflow::Client
2
- API_VERSION = "5.5"
2
+ API_VERSION = "6.7"
3
3
  WebhookConfigPath = Pathname.new("tmp/telegram_workflow/webhook_config.txt")
4
4
 
5
5
  AVAILABLE_ACTIONS = %i(
@@ -45,6 +45,10 @@ class TelegramWorkflow::Client
45
45
  deleteChatPhoto
46
46
  setChatTitle
47
47
  setChatDescription
48
+ setMyDescription
49
+ getMyDescription
50
+ setMyShortDescription
51
+ getMyShortDescription
48
52
  pinChatMessage
49
53
  unpinChatMessage
50
54
  unpinAllChatMessages
@@ -57,9 +61,28 @@ class TelegramWorkflow::Client
57
61
  setChatStickerSet
58
62
  deleteChatStickerSet
59
63
  answerCallbackQuery
64
+ answerWebAppQuery
60
65
  setMyCommands
61
66
  deleteMyCommands
62
67
  getMyCommands
68
+ setChatMenuButton
69
+ getChatMenuButton
70
+ setMyDefaultAdministratorRights
71
+ getMyDefaultAdministratorRights
72
+ getCustomEmojiStickers
73
+
74
+ createForumTopic
75
+ editForumTopic
76
+ closeForumTopic
77
+ reopenForumTopic
78
+ deleteForumTopic
79
+ unpinAllForumTopicMessages
80
+ getForumTopicIconStickers
81
+ editGeneralForumTopic
82
+ closeGeneralForumTopic
83
+ reopenGeneralForumTopic
84
+ hideGeneralForumTopic
85
+ unhideGeneralForumTopic
63
86
 
64
87
  editMessageText
65
88
  editMessageCaption
@@ -75,7 +98,7 @@ class TelegramWorkflow::Client
75
98
  addStickerToSet
76
99
  setStickerPositionInSet
77
100
  deleteStickerFromSet
78
- setStickerSetThumb
101
+ setStickerSetThumbnail
79
102
 
80
103
  answerInlineQuery
81
104
 
@@ -103,7 +126,7 @@ class TelegramWorkflow::Client
103
126
 
104
127
  define_method(method_name) do |params = {}|
105
128
  if deprecated_in_favor_of = DEPRECATED_ACTIONS[action]
106
- TelegramWorkflow.config.logger.warn "[TelegramWorkflow] #{action} action is deprecated. Use #{deprecated_in_favor_of} action instead."
129
+ TelegramWorkflow.config.logger.warn "#{action} action is deprecated. Use #{deprecated_in_favor_of} action instead."
107
130
  end
108
131
 
109
132
  @inline ?
@@ -131,12 +154,12 @@ class TelegramWorkflow::Client
131
154
  end
132
155
 
133
156
  def __setup_webhook(webhook_url = TelegramWorkflow.config.webhook_url, params = {})
134
- TelegramWorkflow.config.logger.info "[TelegramWorkflow] Checking webhook setup..."
157
+ TelegramWorkflow.config.logger.info "Checking webhook setup..."
135
158
 
136
159
  webhook_params = { url: webhook_url, allowed_updates: [], **params }
137
160
 
138
161
  if cached_webhook_config != webhook_params
139
- TelegramWorkflow.config.logger.info "[TelegramWorkflow] Setting up a new webhook..."
162
+ TelegramWorkflow.config.logger.info "Setting up a new webhook..."
140
163
  set_webhook(webhook_params)
141
164
  end
142
165
  end
@@ -39,6 +39,10 @@ module TelegramWorkflow
39
39
  end
40
40
  end
41
41
 
42
+ def tagged_logger?
43
+ @tagged_logger ||= @logger.respond_to?(:tagged)
44
+ end
45
+
42
46
  def verify!
43
47
  blank_params = REQUIRED_PARAMS.select { |p| send(p).nil? }
44
48
 
@@ -17,7 +17,9 @@ class TelegramWorkflow::Params
17
17
  @params.dig("inline_query", "from") ||
18
18
  @params.dig("chosen_inline_result", "from") ||
19
19
  @params.dig("poll_answer", "user") ||
20
- @params.dig("chat_join_request", "from")
20
+ @params.dig("chat_join_request", "from") ||
21
+ @params.dig("chat_member", "from") ||
22
+ @params.dig("my_chat_member", "from")
21
23
  end
22
24
 
23
25
  def language_code
@@ -1,3 +1,3 @@
1
1
  module TelegramWorkflow
2
- VERSION = "1.7.0"
2
+ VERSION = "1.8.0"
3
3
  end
@@ -1,10 +1,14 @@
1
+ require "securerandom"
2
+
1
3
  class TelegramWorkflow::Workflow
2
- attr_reader :params, :client
4
+ attr_reader :params, :client, :logger
3
5
 
4
6
  def initialize(raw_params)
5
7
  @params = TelegramWorkflow::Params.new(raw_params)
6
8
  @session = TelegramWorkflow::Session.new(@params)
9
+
7
10
  @logger = TelegramWorkflow.config.logger
11
+ @logger = @logger.tagged(SecureRandom.hex(8)) if TelegramWorkflow.config.tagged_logger?
8
12
 
9
13
  if @params.start?
10
14
  set_current_action(TelegramWorkflow.config.start_action)
@@ -23,7 +27,7 @@ class TelegramWorkflow::Workflow
23
27
  current_action.public_send(current_step) # setup callbacks
24
28
  current_action.__run_on_message # run a callback
25
29
  else
26
- @logger.info "[TelegramWorkflow] Processing by shared handler"
30
+ @logger.info "Processing by shared handler"
27
31
  end
28
32
 
29
33
  while @redirect_to
@@ -47,10 +51,10 @@ class TelegramWorkflow::Workflow
47
51
  private
48
52
 
49
53
  def log_request
50
- @logger.info "[TelegramWorkflow] Processing by #{current_action.class.name}##{current_step}"
54
+ @logger.info "Processing by #{current_action.class.name}##{current_step}"
51
55
 
52
56
  if TelegramWorkflow.config.webhook_url.nil?
53
- @logger.info "[TelegramWorkflow] Parameters: #{@params.to_h}"
57
+ @logger.info "Parameters: #{@params.to_h}"
54
58
  end
55
59
  end
56
60
 
@@ -35,7 +35,6 @@ require "telegram_workflow/updates"
35
35
  require "telegram_workflow/workflow"
36
36
  require "telegram_workflow/input_file"
37
37
  require "telegram_workflow/stores/in_memory"
38
- require "telegram_workflow/stores/file"
39
38
 
40
39
  TelegramWorkflow.__after_configuration do |config|
41
40
  if config.webhook_url
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: telegram_workflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Samoilov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-05 00:00:00.000000000 Z
11
+ date: 2023-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http
@@ -91,7 +91,6 @@ files:
91
91
  - lib/telegram_workflow/params.rb
92
92
  - lib/telegram_workflow/rspec.rb
93
93
  - lib/telegram_workflow/session.rb
94
- - lib/telegram_workflow/stores/file.rb
95
94
  - lib/telegram_workflow/stores/in_memory.rb
96
95
  - lib/telegram_workflow/updates.rb
97
96
  - lib/telegram_workflow/version.rb
@@ -118,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
117
  - !ruby/object:Gem::Version
119
118
  version: '0'
120
119
  requirements: []
121
- rubygems_version: 3.1.2
120
+ rubygems_version: 3.4.10
122
121
  signing_key:
123
122
  specification_version: 4
124
123
  summary: A simple library to create Telegram Bots in Ruby.
@@ -1,18 +0,0 @@
1
- require "dbm"
2
-
3
- class TelegramWorkflow::Stores::File
4
- StorePath = Pathname.new("tmp/telegram_workflow/file_store")
5
-
6
- def initialize
7
- StorePath.dirname.mkpath unless StorePath.exist?
8
- @store = DBM.open(StorePath.to_s)
9
- end
10
-
11
- def read(key)
12
- @store[key.to_s]
13
- end
14
-
15
- def write(key, value)
16
- @store[key.to_s] = value
17
- end
18
- end