dialog_ruby 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/Gemfile +0 -0
- data/_dev/get_full_botapi.rb +59 -0
- data/_dev/inlinekb_pubsub.rb +69 -0
- data/_dev/main.rb +127 -0
- data/_dev/restriction.rb +32 -0
- data/_dev/ru.yml +79 -0
- data/_dev/sidekiq.rb +28 -0
- data/_dev/tdlib.rb +154 -0
- data/dialog.sh +51 -0
- data/dialog_ruby.gemspec +41 -0
- data/lib/architecture.md +22 -0
- data/lib/configuration.rb +117 -0
- data/lib/dialogStart.rb +189 -0
- data/lib/dialog_ruby.rb +59 -0
- data/lib/exec.sh +61 -0
- data/lib/exec_conf/cli_config +7 -0
- data/lib/exec_conf/dialog__sync.service +14 -0
- data/lib/exec_conf/dialog__sync.timer +11 -0
- data/lib/exec_conf/dialog_bot@.path +6 -0
- data/lib/exec_conf/dialog_bot@.service +18 -0
- data/lib/exec_conf/dialog_bot_dev@.path +6 -0
- data/lib/exec_conf/dialog_bot_dev_pre@.service +16 -0
- data/lib/exec_conf/dialog_bot_pre@.service +16 -0
- data/lib/exec_conf/dialog_redis@.service +14 -0
- data/lib/exec_conf/post-merge +5 -0
- data/lib/exec_conf/redis_global.conf +49 -0
- data/lib/exec_conf/redis_local.conf +4 -0
- data/lib/lang/global_ru.yml +29 -0
- data/lib/lib/dialect/canvas/canvas.rb +35 -0
- data/lib/lib/dialect/canvas/element/convert/SearchBaloo.rb +45 -0
- data/lib/lib/dialect/canvas/element/data/search.rb +34 -0
- data/lib/lib/dialect/canvas/element/send/Inline_query_result.rb +32 -0
- data/lib/lib/dialect/canvas/element/send/bot_message.rb +38 -0
- data/lib/lib/dialect/canvas/element/send/keyboards.rb +59 -0
- data/lib/lib/dialect/canvas/element/send/recognize.rb +51 -0
- data/lib/lib/dialect/canvas/element/send/restrict.rb +42 -0
- data/lib/lib/dialect/canvas/element/send/tdlib_chat.rb +33 -0
- data/lib/lib/dialect/canvas/element/send/tdlib_message.rb +38 -0
- data/lib/lib/dialect/canvas/mod/send/_Inline_query_result.rb +38 -0
- data/lib/lib/dialect/canvas/mod/send/_keyboards.rb +40 -0
- data/lib/lib/dialect/canvas/mod/send/func.rb +98 -0
- data/lib/lib/dialect/canvas/mod/send/general/_heads.rb +27 -0
- data/lib/lib/dialect/canvas/mod/send/general/chat.rb +38 -0
- data/lib/lib/dialect/canvas/mod/send/general/common.rb +32 -0
- data/lib/lib/dialect/canvas/mod/send/general/message.rb +37 -0
- data/lib/lib/dialect/canvas/mod/send/general/user.rb +36 -0
- data/lib/lib/dialect/canvas/mod/send/inline_query_result/common.rb +36 -0
- data/lib/lib/dialect/codegen/codegen.rb +74 -0
- data/lib/lib/dialect/codegen/erb/data/1.ModReceive2GetData.erb +27 -0
- data/lib/lib/dialect/codegen/erb/data/2.GetData2Elements.erb +27 -0
- data/lib/lib/dialect/codegen/erb/data/3.GenData2Dest.erb +34 -0
- data/lib/lib/dialect/codegen/erb/functional/1.Expect2Events.erb +37 -0
- data/lib/lib/dialect/codegen/erb/functional/2.1.Events2AppEvent.erb +26 -0
- data/lib/lib/dialect/codegen/erb/functional/2.2.1.Events2ModReceive.erb +73 -0
- data/lib/lib/dialect/codegen/erb/functional/2.2.2.ModReceive2AppEvent.erb +59 -0
- data/lib/lib/dialect/codegen/erb/functional/3.Appevent2EventBus.erb +35 -0
- data/lib/lib/dialect/codegen/erb/functional/4.1.AppEvent2Elements.erb +72 -0
- data/lib/lib/dialect/codegen/erb/functional/5.1.Element2ModElements.erb +70 -0
- data/lib/lib/dialect/codegen/erb/functional/5.2.Element2ModSend.erb +69 -0
- data/lib/lib/dialect/codegen/erb/functional/7.ElementChains.erb +91 -0
- data/lib/lib/dialect/codegen/repack/constructor/DockedGroupings2AppFunctions.rb +36 -0
- data/lib/lib/dialect/codegen/repack/constructor/Element2ModSend.rb +49 -0
- data/lib/lib/dialect/codegen/repack/constructor/ElementsInElements.rb +34 -0
- data/lib/lib/dialect/codegen/repack/functional/1.Expect2Events.rb +35 -0
- data/lib/lib/dialect/codegen/repack/functional/2.2.1.Events2ModReceive.rb +71 -0
- data/lib/lib/dialect/codegen/repack/functional/2.2.2.ModReceive2AppEvent.rb +45 -0
- data/lib/lib/dialect/codegen/repack/functional/5.1.Element2ModElements.rb +90 -0
- data/lib/lib/dialect/codegen/repack/functional/5.2.Element2ModSend.rb +60 -0
- data/lib/lib/dialect/codegen/repack/functional/7.ElementChains.rb +88 -0
- data/lib/lib/dialect/codegen/run.rb +79 -0
- data/lib/lib/metamess/_run.rb +162 -0
- data/lib/lib/metamess/content/content_o-command_f.rb +100 -0
- data/lib/lib/metamess/content/content_o-media_f.rb +149 -0
- data/lib/lib/metamess/content/content_o-simple_f.rb +35 -0
- data/lib/lib/metamess/content/content_o.rb +245 -0
- data/lib/lib/metamess/event/notify_o-chatmember_f.rb +124 -0
- data/lib/lib/metamess/event/notify_o-chattitle_f.rb +34 -0
- data/lib/lib/metamess/event/notify_o-create_f.rb +42 -0
- data/lib/lib/metamess/event/notify_o-migrate_f.rb +34 -0
- data/lib/lib/metamess/event/notify_o-pinned_f.rb +34 -0
- data/lib/lib/metamess/event/notify_o.rb +28 -0
- data/lib/lib/metamess/event_c.rb +26 -0
- data/lib/lib/metamess/func.rb +220 -0
- data/lib/lib/metamess/service/service_o-callback_f.rb +33 -0
- data/lib/lib/metamess/service/service_o-inline_f.rb +55 -0
- data/lib/lib/metamess/service/service_o.rb +26 -0
- data/lib/lib/naming.rb +130 -0
- data/lib/lib/storage/redis/redisPubSub.rb +51 -0
- data/lib/lib/storage/redis/rediscached.rb +97 -0
- data/lib/lib/tdlib/auth.rb +141 -0
- data/lib/lib/tdlib/func.rb +34 -0
- data/lib/lib/tdlib/init.rb +39 -0
- data/lib/lib/telegram/botapi.rb +71 -0
- data/lib/lib/telegram/infra_info.rb +50 -0
- data/lib/lib/telegram/wrappers.rb +41 -0
- data/lib/lib/tooling/lang.rb +24 -0
- data/lib/lib/tooling/log.rb +54 -0
- data/lib/lib/tooling/ruby.rb +25 -0
- data/lib/version.rb +3 -0
- data/logo.png +0 -0
- metadata +305 -0
@@ -0,0 +1,59 @@
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
2
|
+
## / / / / License \ \ \ \
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
7
|
+
######## ####### ######## ####### ######## ########
|
8
|
+
## / / / / Code Climate \ \ \ \
|
9
|
+
## Language = ruby
|
10
|
+
## Indent = space; 2 chars;
|
11
|
+
######## ####### ######## ####### ######## ########
|
12
|
+
|
13
|
+
module Dialog
|
14
|
+
module ElementSend
|
15
|
+
class << self
|
16
|
+
|
17
|
+
|
18
|
+
def kbForming(args, key)
|
19
|
+
if args[:smsg].has_key?(key)
|
20
|
+
|
21
|
+
args[:smsg][:reply_markup][key] = args[:smsg][key]
|
22
|
+
args[:smsg].delete(key)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def send_DialogElementSendReply_keyboardStatic(args)
|
27
|
+
args[:smsg][:reply_markup] = {}
|
28
|
+
kbForming(args, :one_time_keyboard)
|
29
|
+
kbForming(args, :selective)
|
30
|
+
kbForming(args, :resize_keyboard)
|
31
|
+
args[:smsg][:reply_markup][:keyboard] = Dialog::ModSend.makeKeyboard(
|
32
|
+
args,
|
33
|
+
:reply,
|
34
|
+
args[:x][:exec][:DialogElementSendReply_keyboardStatic][:DialogModElementReply_keyboardButton])
|
35
|
+
send_DialogElementSendBot_messageSend(args)
|
36
|
+
end
|
37
|
+
|
38
|
+
def send_DialogModSendReply_keyboard(args)
|
39
|
+
Telegram::Bot::Types::ForceReply.new(force_reply: true, selective: args[:x][:selective])
|
40
|
+
end
|
41
|
+
|
42
|
+
def send_DialogModSendForce_reply(args)
|
43
|
+
Telegram::Bot::Types::ReplyKeyboardRemove.new(remove_keyboard: true, selective:args[:x][:selective])
|
44
|
+
end
|
45
|
+
|
46
|
+
###
|
47
|
+
def send_DialogElementSendInline_keyboardStatic(args)
|
48
|
+
args[:smsg][:reply_markup] = {
|
49
|
+
inline_keyboard: Dialog::ModSend.makeKeyboard(
|
50
|
+
args,
|
51
|
+
:inline,
|
52
|
+
args[:x][:exec][:DialogElementSendInline_keyboardStatic][:DialogModElementInline_keyboardButton])}
|
53
|
+
send_DialogElementSendBot_messageSend(args)
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
#
|
@@ -0,0 +1,51 @@
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
2
|
+
## / / / / License \ \ \ \
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
7
|
+
######## ####### ######## ####### ######## ########
|
8
|
+
## / / / / Code Climate \ \ \ \
|
9
|
+
## Language = ruby
|
10
|
+
## Indent = space; 2 chars;
|
11
|
+
######## ####### ######## ####### ######## ########
|
12
|
+
|
13
|
+
module Dialog
|
14
|
+
module ElementSend
|
15
|
+
class << self
|
16
|
+
|
17
|
+
|
18
|
+
def send_DialogElementSendRecognizeCode(args)
|
19
|
+
name = "#{Dialog.config.path.render}/_tmpfiles/#{Dialog::Wrappers.downloadFile(args)}"
|
20
|
+
attrs, stderr_str, status = Open3.capture3('/usr/bin/zbarimg', "-q", name)
|
21
|
+
|
22
|
+
unless attrs == ""
|
23
|
+
Dialog.logger.debug "#### muxFqn #{attrs}"
|
24
|
+
response = attrs.split(':')
|
25
|
+
codeType = response[0]
|
26
|
+
response.shift
|
27
|
+
text = answer_DialogModSendRecognizeCommonAction_success(codeType, response.join)
|
28
|
+
else
|
29
|
+
text = answer_DialogModSendRecognizeCommonAction_fail
|
30
|
+
end
|
31
|
+
args[:smsg][:text] = text
|
32
|
+
args[:x][:dataRespRaw] = response
|
33
|
+
end
|
34
|
+
|
35
|
+
def answer_DialogModSendRecognizeCommonAction_success(codeType, response)
|
36
|
+
<<-HEREDOC
|
37
|
+
*Тип кода*: #{codeType}
|
38
|
+
*Содержание*: #{response}
|
39
|
+
HEREDOC
|
40
|
+
end
|
41
|
+
|
42
|
+
def answer_DialogModSendRecognizeCommonAction_fail
|
43
|
+
<<-HEREDOC
|
44
|
+
Изображение не содержит какой-либо код или сфотографировано не чётко.
|
45
|
+
HEREDOC
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
#
|
@@ -0,0 +1,42 @@
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
2
|
+
## / / / / License \ \ \ \
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
7
|
+
######## ####### ######## ####### ######## ########
|
8
|
+
## / / / / Code Climate \ \ \ \
|
9
|
+
## Language = ruby
|
10
|
+
## Indent = space; 2 chars;
|
11
|
+
######## ####### ######## ####### ######## ########
|
12
|
+
|
13
|
+
module Dialog
|
14
|
+
module ElementSend
|
15
|
+
class << self
|
16
|
+
|
17
|
+
def send_DialogElementSendPermissionsLimit(args)
|
18
|
+
args[:api] = {:op => 'restrictChatMember'}
|
19
|
+
args[:smsg][:chat_id] = args[:mmsg][:fqndata][:o][:chat][:id]
|
20
|
+
args[:smsg][:until_date] = 0
|
21
|
+
args[:smsg][:can_send_messages] = false
|
22
|
+
args[:smsg][:can_send_media_messages] = false
|
23
|
+
args[:smsg][:can_send_other_messages] = false
|
24
|
+
args[:smsg][:can_add_web_page_previews] = false
|
25
|
+
|
26
|
+
return Dialog::BotApi.apiAction(args)
|
27
|
+
end
|
28
|
+
|
29
|
+
def send_DialogElementSendPermissionsNormal(args)
|
30
|
+
args[:api] = {:op => 'restrictChatMember'}
|
31
|
+
args[:smsg][:chat_id] = args[:mmsg][:fqndata][:o][:chat][:id]
|
32
|
+
args[:smsg][:can_send_messages] = true
|
33
|
+
args[:smsg][:can_send_media_messages] = true
|
34
|
+
args[:smsg][:can_send_other_messages] = true
|
35
|
+
args[:smsg][:can_add_web_page_previews] = true
|
36
|
+
return Dialog::BotApi.apiAction(args)
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
#
|
@@ -0,0 +1,33 @@
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
2
|
+
## / / / / License \ \ \ \
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
7
|
+
######## ####### ######## ####### ######## ########
|
8
|
+
## / / / / Code Climate \ \ \ \
|
9
|
+
## Language = ruby
|
10
|
+
## Indent = space; 2 chars;
|
11
|
+
######## ####### ######## ####### ######## ########
|
12
|
+
|
13
|
+
module Dialog
|
14
|
+
module ElementSend
|
15
|
+
class << self
|
16
|
+
|
17
|
+
def send_DialogElementSendTdlib_chatCreate(args)
|
18
|
+
args[:smsg]['@type'] = 'createNewSupergroupChat'
|
19
|
+
args[:smsg]['title'] = 'test'
|
20
|
+
args[:smsg]['is_channel'] = false
|
21
|
+
args[:smsg]['description'] = 'description'
|
22
|
+
args[:tdlib][:cli].on_ready do |client|
|
23
|
+
group = client.broadcast_and_receive(args[:smsg])
|
24
|
+
Dialog.logger.debug "#### group created - #{group}"
|
25
|
+
end
|
26
|
+
### CLEAN
|
27
|
+
Dialog.clear(args)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
#
|
@@ -0,0 +1,38 @@
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
2
|
+
## / / / / License \ \ \ \
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
7
|
+
######## ####### ######## ####### ######## ########
|
8
|
+
## / / / / Code Climate \ \ \ \
|
9
|
+
## Language = ruby
|
10
|
+
## Indent = space; 2 chars;
|
11
|
+
######## ####### ######## ####### ######## ########
|
12
|
+
|
13
|
+
module Dialog
|
14
|
+
module ElementSend
|
15
|
+
class << self
|
16
|
+
|
17
|
+
def send_DialogElementSendTdlib_messageSend(args)
|
18
|
+
args[:tdlib][:cli].on_ready do |client|
|
19
|
+
args[:smsg]['@type'] = 'sendMessage'
|
20
|
+
|
21
|
+
if args[:smsg][:chat_id] == args[:mmsg][:fqndata][:o][:from][:id]
|
22
|
+
client.fetch('@type' => 'createPrivateChat', 'user_id' => args[:smsg][:chat_id])
|
23
|
+
end
|
24
|
+
|
25
|
+
args[:smsg]['input_message_content'] = {"@type":"inputMessageText","text":{"text": args[:smsg][:text]}}
|
26
|
+
args[:smsg].delete('text')
|
27
|
+
Dialog.logger.catch "args[:smsg]::#{args[:smsg]}"
|
28
|
+
test = client.broadcast_and_receive(args[:smsg])
|
29
|
+
Dialog.logger.catch "test::#{test}"
|
30
|
+
end
|
31
|
+
### CLEAN
|
32
|
+
Dialog.clear(args)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
#
|
@@ -0,0 +1,38 @@
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
2
|
+
## / / / / License \ \ \ \
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
7
|
+
######## ####### ######## ####### ######## ########
|
8
|
+
## / / / / Code Climate \ \ \ \
|
9
|
+
## Language = ruby
|
10
|
+
## Indent = space; 2 chars;
|
11
|
+
######## ####### ######## ####### ######## ########
|
12
|
+
|
13
|
+
module Dialog
|
14
|
+
module ModSend
|
15
|
+
class << self
|
16
|
+
|
17
|
+
|
18
|
+
def makeInline_query_resultArticle(args, props, viewId)
|
19
|
+
result = Array.new
|
20
|
+
props[:tProp].to_h.each do |row, hash_col|
|
21
|
+
Dialog.logger.debug "%%%%%%%% row - #{row}, hash_col - #{hash_col}"
|
22
|
+
|
23
|
+
hash_col.sort.each do |col, prop|
|
24
|
+
Dialog::ModSend.call_CompileElementFromAtoms(args, {fFqn: prop[:modSend][:fFqn], tFqn: prop[:modSend][:tFqn], tProp: prop[:modSend][:tProp][:value], add: true}, viewId)
|
25
|
+
base = args[:x][:send][args[:x][:muxFqn][4].to_sym][args[:x][:muxFqn][:g].to_sym]
|
26
|
+
result << {id: rand(1 .. 90000), type: "article", title: "#{prop[:tProp][:value]}", input_message_content: {message_text: prop[:modSend][:tProp][:value]}}
|
27
|
+
args[:x][:send][args[:x][:muxFqn][4].to_sym][args[:x][:muxFqn][:g].to_sym] = {}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
Dialog.logger.debug "%%%%%%%%2 result - #{result}}"
|
32
|
+
return result
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
#
|
@@ -0,0 +1,40 @@
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
2
|
+
## / / / / License \ \ \ \
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
7
|
+
######## ####### ######## ####### ######## ########
|
8
|
+
## / / / / Code Climate \ \ \ \
|
9
|
+
## Language = ruby
|
10
|
+
## Indent = space; 2 chars;
|
11
|
+
######## ####### ######## ####### ######## ########
|
12
|
+
|
13
|
+
module Dialog
|
14
|
+
module ModSend
|
15
|
+
class << self
|
16
|
+
|
17
|
+
|
18
|
+
def makeKeyboard(args, mode, keyboardButtons)
|
19
|
+
keyboard = Array.new
|
20
|
+
keyboardButtons.each do |row, hash_col|
|
21
|
+
# Dialog.logger.debug "%%%%%%%% row - #{row}, hash_col - #{hash_col}"
|
22
|
+
keyboard[row.to_i] ||= Array.new
|
23
|
+
hash_col.sort.each do |col, prop|
|
24
|
+
case mode
|
25
|
+
when :reply
|
26
|
+
keyboard[row.to_i] << {text: "#{prop[:tValue]}"}
|
27
|
+
when :inline
|
28
|
+
keyboard[row.to_i] << {text: "#{prop[:tValue]}", prop[:spec][:key] => "#{prop[:spec][:value]}"}
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
return keyboard.drop(1)
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
#
|
@@ -0,0 +1,98 @@
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
2
|
+
## / / / / License \ \ \ \
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
7
|
+
######## ####### ######## ####### ######## ########
|
8
|
+
## / / / / Code Climate \ \ \ \
|
9
|
+
## Language = ruby
|
10
|
+
## Indent = space; 2 chars;
|
11
|
+
######## ####### ######## ####### ######## ########
|
12
|
+
|
13
|
+
module Dialog
|
14
|
+
module ModSend
|
15
|
+
class << self
|
16
|
+
|
17
|
+
def call_CompileElementFromAtoms(args, props, viewId)
|
18
|
+
args[:smsg] ||= {}
|
19
|
+
|
20
|
+
if props.has_key?(:add)
|
21
|
+
fFqn = props[:fFqn].to_sym
|
22
|
+
tFqn = props[:tFqn].to_sym
|
23
|
+
if args[:x][:exec].has_key?(fFqn)
|
24
|
+
args[:x][:exec][fFqn][tFqn] = props[:tProp]
|
25
|
+
end
|
26
|
+
atomMux(args, props, viewId, fFqn, tFqn)
|
27
|
+
else
|
28
|
+
fFqn = props[:tFqn].to_sym
|
29
|
+
args[:x][:exec][fFqn].each do |tFqn, prop|
|
30
|
+
# Dialog.logger.debug "@@@@@@@@@@@@@ 1 - fFqn::#{fFqn}, tFqn::#{tFqn}, props::#{props}"
|
31
|
+
atomMux(args, props, viewId, fFqn, tFqn)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
def atomMux(args, props, viewId, fFqn, tFqn)
|
38
|
+
muxFqn = tFqn.to_s.split /(?=[A-Z])/
|
39
|
+
if muxFqn[0] == 'Dialog'
|
40
|
+
if muxFqn[1] == 'Mod' && muxFqn[2] == 'Send'
|
41
|
+
Dialog.logger.debug "#### muxFqn #{muxFqn}"
|
42
|
+
args[:x][:muxFqn] = {}
|
43
|
+
args[:x][:muxFqn][3] = "#{muxFqn[0]}#{muxFqn[1]}#{muxFqn[2]}"
|
44
|
+
args[:x][:muxFqn][4] = "#{muxFqn[0]}#{muxFqn[1]}#{muxFqn[2]}#{muxFqn[3]}"
|
45
|
+
args[:x][:muxFqn][5] = "#{muxFqn[0]}#{muxFqn[1]}#{muxFqn[2]}#{muxFqn[3]}#{muxFqn[4]}"
|
46
|
+
args[:x][:muxFqn][:g] = muxFqn[4]
|
47
|
+
run = "set_#{args[:x][:muxFqn][5]}"
|
48
|
+
Dialog.logger.debug " @@@ pre-atomMux sender #{run}"
|
49
|
+
begin
|
50
|
+
send(run.to_sym, args, fFqn, tFqn, props, viewId)
|
51
|
+
rescue NoMethodError => @e
|
52
|
+
step = @e.message.split('`')[1].split('\'')[0].split /(?=[A-Z])/
|
53
|
+
Dialog.logger.debug " @@@@@@@@@@@@@@@@@@@@ #{step.count} - #{@e.message}"
|
54
|
+
|
55
|
+
case step.count
|
56
|
+
when 6 #runner
|
57
|
+
begin
|
58
|
+
Dialog.logger.debug " @@@ pre-atomMux sender #{step.count} - #{tFqn}"
|
59
|
+
send("set_#{tFqn}".to_sym, args, fFqn, tFqn, props, viewId)
|
60
|
+
Dialog.logger.debug " @@@ atomMux sender #{step.count} - #{tFqn}"
|
61
|
+
rescue NoMethodError
|
62
|
+
setterDefault(args, fFqn, tFqn, muxFqn[5].downcase, step.count)
|
63
|
+
rescue => @e
|
64
|
+
raise
|
65
|
+
end
|
66
|
+
when 7 #setter
|
67
|
+
setterDefault(args, fFqn, tFqn, muxFqn[5].downcase, step.count)
|
68
|
+
end
|
69
|
+
rescue => @e
|
70
|
+
raise
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
def setter(args, fFqn, k, v)
|
78
|
+
Dialog.logger.debug "## SET to FQN #{fFqn} :: K:#{k}, V:#{v}"
|
79
|
+
case v
|
80
|
+
when 'True', 'true'
|
81
|
+
v = true
|
82
|
+
when 'False', 'false'
|
83
|
+
v = false
|
84
|
+
end
|
85
|
+
|
86
|
+
args[:smsg][k.to_sym] = v
|
87
|
+
end
|
88
|
+
|
89
|
+
def setterDefault(args, fFqn, tFqn, k, step)
|
90
|
+
Dialog.logger.debug " @@@ atomMux default pre-setter #{step} tFqn::#{tFqn} - #{k} :: #{args[:x][:exec][fFqn][tFqn]}"
|
91
|
+
setter(args, fFqn, k, args[:x][:exec][fFqn][tFqn][:value])
|
92
|
+
Dialog.logger.debug " @@@ atomMux default setter #{step} - #{k} :: #{args[:x][:exec][fFqn][tFqn][:value]}"
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
#
|
@@ -0,0 +1,27 @@
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
2
|
+
## / / / / License \ \ \ \
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
7
|
+
######## ####### ######## ####### ######## ########
|
8
|
+
## / / / / Code Climate \ \ \ \
|
9
|
+
## Language = ruby
|
10
|
+
## Indent = space; 2 chars;
|
11
|
+
######## ####### ######## ####### ######## ########
|
12
|
+
|
13
|
+
module Dialog
|
14
|
+
module ModSend
|
15
|
+
class << self
|
16
|
+
|
17
|
+
## Message
|
18
|
+
def set_DialogModSendGeneralMessage(args, fFqn, tFqn, props, viewId)
|
19
|
+
args[:api] = { op: 'sendMessage'}
|
20
|
+
send("set_#{tFqn}".to_sym, args, fFqn, tFqn, props, viewId)
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
#
|
@@ -0,0 +1,38 @@
|
|
1
|
+
######## ####### ######## ####### ######## ########
|
2
|
+
## / / / / License \ \ \ \
|
3
|
+
## Copyleft culture, Copyright (C) is prohibited here
|
4
|
+
## This work is licensed under a CC BY-SA 4.0
|
5
|
+
## Creative Commons Attribution-ShareAlike 4.0 License
|
6
|
+
## Refer to the http://creativecommons.org/licenses/by-sa/4.0/
|
7
|
+
######## ####### ######## ####### ######## ########
|
8
|
+
## / / / / Code Climate \ \ \ \
|
9
|
+
## Language = ruby
|
10
|
+
## Indent = space; 2 chars;
|
11
|
+
######## ####### ######## ####### ######## ########
|
12
|
+
|
13
|
+
module Dialog
|
14
|
+
module ModSend
|
15
|
+
class << self
|
16
|
+
|
17
|
+
|
18
|
+
def set_DialogModSendGeneralChatId(args, fFqn, tFqn, props, viewId)
|
19
|
+
|
20
|
+
id = args[:x][:exec][fFqn][tFqn][:value]
|
21
|
+
case args[:x][:exec][fFqn][tFqn][:value]
|
22
|
+
when '{same}'
|
23
|
+
chat_id = args[:mmsg][:fqndata][:o][:chat][:id]
|
24
|
+
when '{user}'
|
25
|
+
chat_id = args[:mmsg][:fqndata][:o][:from][:id]
|
26
|
+
when /^[:fqndata]*/
|
27
|
+
id = "args[:mmsg]#{id}"
|
28
|
+
chat_id = binding.eval("#{id}")
|
29
|
+
else
|
30
|
+
chat_id = args[:x][:exec][fFqn][tFqn][:value]
|
31
|
+
end
|
32
|
+
setter(args, fFqn, 'chat_id', chat_id)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
#
|