kanal-interfaces-telegram 0.2.1 → 0.3.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: 214fdfb6f4940364c3169b9db39c19276bb9c435ac0204f81b7a2943fb90b1ed
4
- data.tar.gz: 97f7f66f82039c0722ba552a8929739a04fa2b8f6e78a8142a6ec44bdbd4babe
3
+ metadata.gz: d561c375f8a3d3802d78a2c03b7b8859d4d6db10cd6a4fb55242dc11776c2448
4
+ data.tar.gz: 1fe7521d6848968a584173484fbdeca37ebbf1d9cebc0ffa07cff2d8ceab6298
5
5
  SHA512:
6
- metadata.gz: 8257d35fc51f48850dcf32707c92b25449470c121c28096178a19433cb62f33f2c89fd6f3dbea9934542de2d23d033ef12c6a4a8e44d9573cf68da3264bd8e34
7
- data.tar.gz: 134c37797653dec0f74baa42e7e6db3a2ffbc238451bd55d607e74f9cc992f9a8ed0e5b71711bbaa1725980ea2ea55c38a8698ee59dd08b44b839e9eeea5a1e8
6
+ metadata.gz: 93dec85818dcf56c4d578a4ad82564bfd4dde43e101d04bea1c7f32095aab0c9ca89db0e725829c2482fc179b1bceee3d6391bbda1ac5cd9f4c83dc6b1ddb641
7
+ data.tar.gz: 29e6de8af8c702984d6829f74c7ddd3393b315aade1b31a1c64f4000d0564f2528022ae5ebd4d77e952a18e009aa83c77a215735c355b9308fb4b993638ef072
data/.idea/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ # Default ignored files
2
+ /shelf/
3
+ /workspace.xml
4
+ # Editor-based HTTP Client requests
5
+ /httpRequests/
6
+ # Datasource local storage ignored files
7
+ /dataSources/
8
+ /dataSources.local.xml
@@ -0,0 +1,72 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="RUBY_MODULE" version="4">
3
+ <component name="ModuleRunConfigurationManager">
4
+ <shared />
5
+ </component>
6
+ <component name="NewModuleRootManager">
7
+ <content url="file://$MODULE_DIR$">
8
+ <sourceFolder url="file://$MODULE_DIR$/features" isTestSource="true" />
9
+ <sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
10
+ <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
11
+ </content>
12
+ <orderEntry type="inheritedJdk" />
13
+ <orderEntry type="sourceFolder" forTests="false" />
14
+ <orderEntry type="library" scope="PROVIDED" name="ast (v2.4.2, RVM: ruby-2.7.6) [gem]" level="application" />
15
+ <orderEntry type="library" scope="PROVIDED" name="axiom-types (v0.1.1, RVM: ruby-2.7.6) [gem]" level="application" />
16
+ <orderEntry type="library" scope="PROVIDED" name="backport (v1.2.0, RVM: ruby-2.7.6) [gem]" level="application" />
17
+ <orderEntry type="library" scope="PROVIDED" name="benchmark (v0.2.1, RVM: ruby-2.7.6) [gem]" level="application" />
18
+ <orderEntry type="library" scope="PROVIDED" name="bundler (v2.4.5, RVM: ruby-2.7.6) [gem]" level="application" />
19
+ <orderEntry type="library" scope="PROVIDED" name="coercible (v1.0.0, RVM: ruby-2.7.6) [gem]" level="application" />
20
+ <orderEntry type="library" scope="PROVIDED" name="descendants_tracker (v0.0.4, RVM: ruby-2.7.6) [gem]" level="application" />
21
+ <orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.5.0, RVM: ruby-2.7.6) [gem]" level="application" />
22
+ <orderEntry type="library" scope="PROVIDED" name="docile (v1.4.0, RVM: ruby-2.7.6) [gem]" level="application" />
23
+ <orderEntry type="library" scope="PROVIDED" name="dry-inflector (v1.0.0, RVM: ruby-2.7.6) [gem]" level="application" />
24
+ <orderEntry type="library" scope="PROVIDED" name="e2mmap (v0.1.0, RVM: ruby-2.7.6) [gem]" level="application" />
25
+ <orderEntry type="library" scope="PROVIDED" name="faraday (v2.7.4, RVM: ruby-2.7.6) [gem]" level="application" />
26
+ <orderEntry type="library" scope="PROVIDED" name="faraday-multipart (v1.0.4, RVM: ruby-2.7.6) [gem]" level="application" />
27
+ <orderEntry type="library" scope="PROVIDED" name="faraday-net_http (v3.0.2, RVM: ruby-2.7.6) [gem]" level="application" />
28
+ <orderEntry type="library" scope="PROVIDED" name="ice_nine (v0.11.2, RVM: ruby-2.7.6) [gem]" level="application" />
29
+ <orderEntry type="library" scope="PROVIDED" name="jaro_winkler (v1.5.4, RVM: ruby-2.7.6) [gem]" level="application" />
30
+ <orderEntry type="library" scope="PROVIDED" name="json (v2.6.3, RVM: ruby-2.7.6) [gem]" level="application" />
31
+ <orderEntry type="library" scope="PROVIDED" name="kanal (v0.3.0, RVM: ruby-2.7.6) [gem]" level="application" />
32
+ <orderEntry type="library" scope="PROVIDED" name="kramdown (v2.4.0, RVM: ruby-2.7.6) [gem]" level="application" />
33
+ <orderEntry type="library" scope="PROVIDED" name="kramdown-parser-gfm (v1.1.0, RVM: ruby-2.7.6) [gem]" level="application" />
34
+ <orderEntry type="library" scope="PROVIDED" name="multipart-post (v2.3.0, RVM: ruby-2.7.6) [gem]" level="application" />
35
+ <orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.14.0, RVM: ruby-2.7.6) [gem]" level="application" />
36
+ <orderEntry type="library" scope="PROVIDED" name="parallel (v1.22.1, RVM: ruby-2.7.6) [gem]" level="application" />
37
+ <orderEntry type="library" scope="PROVIDED" name="parser (v3.2.0.0, RVM: ruby-2.7.6) [gem]" level="application" />
38
+ <orderEntry type="library" scope="PROVIDED" name="racc (v1.6.2, RVM: ruby-2.7.6) [gem]" level="application" />
39
+ <orderEntry type="library" scope="PROVIDED" name="rainbow (v3.1.1, RVM: ruby-2.7.6) [gem]" level="application" />
40
+ <orderEntry type="library" scope="PROVIDED" name="rake (v13.0.6, RVM: ruby-2.7.6) [gem]" level="application" />
41
+ <orderEntry type="library" scope="PROVIDED" name="regexp_parser (v2.6.2, RVM: ruby-2.7.6) [gem]" level="application" />
42
+ <orderEntry type="library" scope="PROVIDED" name="reverse_markdown (v2.1.1, RVM: ruby-2.7.6) [gem]" level="application" />
43
+ <orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.5, RVM: ruby-2.7.6) [gem]" level="application" />
44
+ <orderEntry type="library" scope="PROVIDED" name="rspec (v3.12.0, RVM: ruby-2.7.6) [gem]" level="application" />
45
+ <orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.12.0, RVM: ruby-2.7.6) [gem]" level="application" />
46
+ <orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.12.2, RVM: ruby-2.7.6) [gem]" level="application" />
47
+ <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.12.3, RVM: ruby-2.7.6) [gem]" level="application" />
48
+ <orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.12.0, RVM: ruby-2.7.6) [gem]" level="application" />
49
+ <orderEntry type="library" scope="PROVIDED" name="rubocop (v1.44.1, RVM: ruby-2.7.6) [gem]" level="application" />
50
+ <orderEntry type="library" scope="PROVIDED" name="rubocop-ast (v1.24.1, RVM: ruby-2.7.6) [gem]" level="application" />
51
+ <orderEntry type="library" scope="PROVIDED" name="ruby-debug-ide (v0.7.3, RVM: ruby-2.7.6) [gem]" level="application" />
52
+ <orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.11.0, RVM: ruby-2.7.6) [gem]" level="application" />
53
+ <orderEntry type="library" scope="PROVIDED" name="ruby2_keywords (v0.0.5, RVM: ruby-2.7.6) [gem]" level="application" />
54
+ <orderEntry type="library" scope="PROVIDED" name="simplecov (v0.22.0, RVM: ruby-2.7.6) [gem]" level="application" />
55
+ <orderEntry type="library" scope="PROVIDED" name="simplecov-html (v0.12.3, RVM: ruby-2.7.6) [gem]" level="application" />
56
+ <orderEntry type="library" scope="PROVIDED" name="simplecov_json_formatter (v0.1.4, RVM: ruby-2.7.6) [gem]" level="application" />
57
+ <orderEntry type="library" scope="PROVIDED" name="solargraph (v0.48.0, RVM: ruby-2.7.6) [gem]" level="application" />
58
+ <orderEntry type="library" scope="PROVIDED" name="telegram-bot-ruby (v0.23.0, RVM: ruby-2.7.6) [gem]" level="application" />
59
+ <orderEntry type="library" scope="PROVIDED" name="thor (v1.2.1, RVM: ruby-2.7.6) [gem]" level="application" />
60
+ <orderEntry type="library" scope="PROVIDED" name="thread_safe (v0.3.6, RVM: ruby-2.7.6) [gem]" level="application" />
61
+ <orderEntry type="library" scope="PROVIDED" name="tilt (v2.0.11, RVM: ruby-2.7.6) [gem]" level="application" />
62
+ <orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v2.4.2, RVM: ruby-2.7.6) [gem]" level="application" />
63
+ <orderEntry type="library" scope="PROVIDED" name="virtus (v2.0.0, RVM: ruby-2.7.6) [gem]" level="application" />
64
+ <orderEntry type="library" scope="PROVIDED" name="webrick (v1.7.0, RVM: ruby-2.7.6) [gem]" level="application" />
65
+ <orderEntry type="library" scope="PROVIDED" name="yard (v0.9.28, RVM: ruby-2.7.6) [gem]" level="application" />
66
+ </component>
67
+ <component name="RakeTasksCache">
68
+ <option name="myRootTask">
69
+ <RakeTaskImpl id="rake" />
70
+ </option>
71
+ </component>
72
+ </module>
data/.idea/misc.xml ADDED
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-2.7.6" project-jdk-type="RUBY_SDK" />
4
+ </project>
data/.idea/modules.xml ADDED
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/kanal-interfaces-telegram.iml" filepath="$PROJECT_DIR$/.idea/kanal-interfaces-telegram.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
data/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="Git" />
5
+ </component>
6
+ </project>
data/CHANGELOG.md CHANGED
@@ -1,10 +1,7 @@
1
1
  ## [Unreleased]
2
2
 
3
- ## [0.2.0] - 2023-01-30
4
-
5
- - Library now can send images via .tg_image_path
6
- - Populating separate field in input
7
- - Using output.tg_chat_id and not the one inside interface, this is preparations for future sending outputs in separate methods... Probably
3
+ ## [0.3.0] - 2023-03-10
4
+ - Reworked interface with the new Kanal release, now it uses Interface base class properly
8
5
 
9
6
  ## [0.1.0] - 2022-11-21
10
7
 
data/Gemfile CHANGED
@@ -9,7 +9,7 @@ gem "rake", "~> 13.0"
9
9
 
10
10
  gem "rspec", "~> 3.0"
11
11
 
12
- gem "kanal"
12
+ gem "kanal", "0.4.0"
13
13
 
14
14
  group :development do
15
15
  gem "rubocop", "~> 1.21"
data/Gemfile.lock CHANGED
@@ -31,7 +31,7 @@ GEM
31
31
  ice_nine (0.11.2)
32
32
  jaro_winkler (1.5.4)
33
33
  json (2.6.3)
34
- kanal (0.3.0)
34
+ kanal (0.4.0)
35
35
  kramdown (2.4.0)
36
36
  rexml
37
37
  kramdown-parser-gfm (1.1.0)
@@ -39,6 +39,8 @@ GEM
39
39
  multipart-post (2.3.0)
40
40
  nokogiri (1.14.0-x86_64-darwin)
41
41
  racc (~> 1.4)
42
+ nokogiri (1.14.0-x86_64-linux)
43
+ racc (~> 1.4)
42
44
  parallel (1.22.1)
43
45
  parser (3.2.0.0)
44
46
  ast (~> 2.4.1)
@@ -118,9 +120,10 @@ GEM
118
120
 
119
121
  PLATFORMS
120
122
  x86_64-darwin-21
123
+ x86_64-linux
121
124
 
122
125
  DEPENDENCIES
123
- kanal
126
+ kanal (= 0.4.0)
124
127
  kanal-interfaces-telegram!
125
128
  rake (~> 13.0)
126
129
  rspec (~> 3.0)
@@ -131,4 +134,4 @@ DEPENDENCIES
131
134
  yard
132
135
 
133
136
  BUNDLED WITH
134
- 2.3.19
137
+ 2.4.5
@@ -18,8 +18,12 @@ module Kanal
18
18
  def register_parameters(core)
19
19
  core.register_input_parameter :tg_message, readonly: true
20
20
  core.register_input_parameter :tg_text, readonly: true
21
+ core.register_input_parameter :tg_callback, readonly: true
22
+ core.register_input_parameter :tg_callback_text, readonly: true
21
23
  core.register_input_parameter :tg_chat_id, readonly: true
22
24
  core.register_input_parameter :tg_username, readonly: true
25
+ core.register_input_parameter :tg_image_link, readonly: true
26
+ core.register_input_parameter :tg_audio_link, readonly: true
23
27
 
24
28
  core.register_output_parameter :tg_chat_id
25
29
  core.register_output_parameter :tg_text
@@ -35,7 +39,11 @@ module Kanal
35
39
  end
36
40
 
37
41
  core.hooks.attach :input_before_router do |input|
38
- input.body = input.tg_text
42
+ if input.tg_callback
43
+ input.body = input.tg_callback_text
44
+ else
45
+ input.body = input.tg_text
46
+ end
39
47
  end
40
48
 
41
49
  core.hooks.attach :output_before_returned do |input, output|
@@ -16,6 +16,8 @@ module Kanal
16
16
 
17
17
  @bot_token = bot_token
18
18
 
19
+ @bot = ::Telegram::Bot::Client.new(bot_token)
20
+
19
21
  @core.register_plugin Kanal::Plugins::Batteries::BatteriesPlugin.new
20
22
  @core.register_plugin Kanal::Interfaces::Telegram::Plugins::TelegramIntegrationPlugin.new
21
23
  end
@@ -23,34 +25,96 @@ module Kanal
23
25
  def start
24
26
  ::Telegram::Bot::Client.run(@bot_token) do |bot|
25
27
  bot.listen do |message|
26
- input = @core.create_input
27
-
28
- input.tg_message = message
29
- input.tg_text = message.text
30
- input.tg_chat_id = message.chat.id
31
- input.tg_username = message.try(:chat).try(:username) || input.tg_message.try(:from).try(:username)
32
-
33
- output = router.create_output_for_input input
34
-
35
- bot.api.send_message(
36
- chat_id: output.tg_chat_id,
37
- text: output.tg_text,
38
- reply_markup: output.tg_reply_markup
39
- )
40
-
41
- image_path = output.tg_image_path
42
-
43
- if image_path && File.exist?(image_path)
44
- bot.api.send_photo(
45
- chat_id: message.chat.id,
46
- photo: Faraday::UploadIO.new(image_path, guess_mimetype(image_path))
47
- )
28
+ puts "message class: #{message.class}"
29
+
30
+ if message.instance_of?(::Telegram::Bot::Types::CallbackQuery)
31
+ input = @core.create_input
32
+
33
+ input.tg_callback = message
34
+ input.tg_callback_text = message.data
35
+ input.tg_chat_id = message.from.id
36
+ input.tg_username = message.from.username
37
+
38
+ puts input.tg_username
39
+ puts input.tg_chat_id
40
+
41
+ router.consume_input input
42
+
43
+ # output = router.create_output_for_input input
44
+ #
45
+ # send_output bot, output
46
+ else
47
+ input = @core.create_input
48
+
49
+ if message.text.nil?
50
+ message.text = "EMPTY TEXT"
51
+ end
52
+
53
+ input.tg_message = message
54
+ input.tg_text = message.text
55
+ input.tg_chat_id = message.chat.id
56
+ input.tg_username = message.chat.username || input.tg_message.from.username
57
+
58
+ puts input.tg_username
59
+ puts input.tg_chat_id
60
+
61
+ if message.photo.count > 0
62
+ puts message.photo[0].file_id
63
+ file = bot.api.get_file(file_id: message.photo[2].file_id)
64
+ file_path = file.dig('result', 'file_path')
65
+ photo_url = "https://api.telegram.org/file/bot#{@bot_token}/#{file_path}"
66
+ puts photo_url
67
+ input.tg_image_link = photo_url
68
+ end
69
+
70
+ if message.audio.instance_of?(::Telegram::Bot::Types::Audio)
71
+ file = bot.api.get_file(file_id: message.audio.file_id)
72
+ file_path = file.dig('result', 'file_path')
73
+ audio_url = "https://api.telegram.org/file/bot#{@bot_token}/#{file_path}"
74
+ puts audio_url
75
+ input.tg_audio_link = audio_url
76
+ end
77
+
78
+ router.consume_input input
79
+
80
+ # output = router.create_output_for_input input
81
+ #
82
+ # send_output bot, output
48
83
  end
49
84
  end
50
85
  end
51
86
  end
52
87
 
88
+ def consume_output(output)
89
+ send_output @bot, output
90
+ end
91
+
53
92
  private
93
+ def send_output(bot, output)
94
+ bot.api.send_message(
95
+ chat_id: output.tg_chat_id,
96
+ text: output.tg_text,
97
+ reply_markup: output.tg_reply_markup
98
+ )
99
+
100
+ image_path = output.tg_image_path
101
+
102
+ if !image_path.nil? && File.exist?(image_path)
103
+ bot.api.send_photo(
104
+ chat_id: output.tg_chat_id,
105
+ photo: Faraday::UploadIO.new(output.tg_image_path, guess_mimetype(output.tg_image_path))
106
+ )
107
+ end
108
+
109
+ audio_path = output.tg_audio_path
110
+
111
+ if !output.tg_audio_path.nil? && File.exist?(audio_path)
112
+ bot.api.send_audio(
113
+ chat_id: output.tg_chat_id,
114
+ audio: Faraday::UploadIO.new(output.tg_audio_path, "audio/mpeg3")
115
+ )
116
+ end
117
+ end
54
118
 
55
119
  def guess_mimetype(filename)
56
120
  images = {
@@ -67,9 +131,6 @@ module Kanal
67
131
  end
68
132
  end
69
133
  end
70
-
71
-
72
- "application/octet-stream"
73
134
  end
74
135
  end
75
136
  end
@@ -3,7 +3,7 @@
3
3
  module Kanal
4
4
  module Interfaces
5
5
  module Telegram
6
- VERSION = "0.2.1"
6
+ VERSION = "0.3.0"
7
7
  end
8
8
  end
9
9
  end
@@ -2,6 +2,9 @@
2
2
 
3
3
  require_relative "telegram/version"
4
4
 
5
+ require "kanal/core/core"
6
+ require "kanal/interfaces/telegram/telegram_interface"
7
+
5
8
  module Kanal
6
9
  module Interfaces
7
10
  module Telegram
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kanal-interfaces-telegram
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - idchlife
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-29 00:00:00.000000000 Z
11
+ date: 2023-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: telegram-bot-ruby
@@ -32,6 +32,11 @@ executables: []
32
32
  extensions: []
33
33
  extra_rdoc_files: []
34
34
  files:
35
+ - ".idea/.gitignore"
36
+ - ".idea/kanal-interfaces-telegram.iml"
37
+ - ".idea/misc.xml"
38
+ - ".idea/modules.xml"
39
+ - ".idea/vcs.xml"
35
40
  - ".rspec"
36
41
  - ".rubocop.yml"
37
42
  - ".ruby-version"