dialog_ruby 0.1.10 → 0.1.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Dockerfile +13 -0
- data/{lib/storage/redis → _dev}/redisPubSub.rb +1 -1
- data/background/_init.rb +43 -0
- data/background/batch.rb +69 -0
- data/background/redis.rb +34 -0
- data/dialog_ruby.gemspec +6 -7
- data/exec/conf/redis_global.conf +4 -2
- data/exec/dialog.sh +28 -26
- data/exec/git_sync/dialog__sync.service +1 -1
- data/exec/prereq.sh +18 -1
- data/exec/systemd/dialog_background.service +29 -0
- data/exec/systemd/dialog_redis.service +1 -1
- data/exec/systemd/dialog_runMode@.service +16 -6
- data/exec/systemd/dialog_runner@.path +8 -0
- data/lib/{triggers/start → begin}/_main.rb +29 -21
- data/lib/begin/_pre_bot.rb +58 -0
- data/lib/begin/background.rb +24 -0
- data/lib/{triggers/start → begin}/bot.rb +27 -6
- data/lib/{triggers/start → begin}/tdlib.rb +12 -16
- data/lib/configuration.rb +39 -27
- data/lib/dialect/canvas/element/send/Inline_query_result.rb +2 -0
- data/lib/dialect/canvas/element/send/background.rb +28 -0
- data/lib/dialect/canvas/element/send/recognize.rb +3 -2
- data/lib/dialect/canvas/element/send/restrict.rb +0 -1
- data/lib/dialect/canvas/element/send/tdlib_chat.rb +1 -1
- data/lib/dialect/canvas/element/send/tdlib_message.rb +1 -1
- data/lib/dialect/codegen/codegen.rb +9 -9
- data/lib/dialect/codegen/erb/functional/2.2.1.Events2ModReceive.erb +27 -4
- data/lib/dialect/codegen/erb/functional/4.1.AppEvent2Elements.erb +7 -2
- data/lib/dialect/codegen/erb/functional/5.1.Element2ModElements.erb +1 -1
- data/lib/dialect/codegen/erb/functional/7.ElementChains.erb +7 -6
- data/lib/dialog_ruby.rb +5 -2
- data/lib/metamess/_run.rb +1 -0
- data/lib/metamess/content/content_o-contact_f.rb +41 -0
- data/lib/metamess/content/content_o.rb +7 -6
- data/lib/metamess/func.rb +0 -24
- data/lib/metamess/naming.rb +8 -5
- data/lib/metamess/service/service_o-inline_f.rb +4 -3
- data/lib/require.rb +21 -2
- data/lib/statistics/func.rb +72 -0
- data/lib/statistics/general.rb +44 -0
- data/lib/statistics/redisDump.rb +49 -0
- data/lib/storage/redis/cached/pullpush.rb +76 -0
- data/lib/storage/redis/cached/pushPreproc.rb +41 -0
- data/lib/storage/redis/func.rb +47 -0
- data/lib/storage/redis/stat/push.rb +33 -0
- data/lib/tdlib/auth.rb +8 -7
- data/lib/tdlib/init.rb +5 -5
- data/lib/telegram/botapi.rb +2 -1
- data/lib/telegram/wrappers.rb +1 -2
- data/lib/tooling/log.rb +0 -1
- data/lib/tooling/strings.rb +12 -0
- data/lib/triggers/_func.rb +39 -0
- data/lib/triggers/{_meta/full.rb → console_start.rb} +8 -5
- data/lib/triggers/deploy.rb +104 -0
- data/lib/triggers/false.rb +8 -6
- data/lib/triggers/init.rb +23 -10
- data/lib/triggers/systemd_start.rb +24 -0
- data/lib/version.rb +1 -1
- metadata +83 -41
- data/_dev/sidekiq.rb +0 -28
- data/exec/systemd/_fix/dialog_bot@.path +0 -6
- data/exec/systemd/_fix/dialog_bot_dev@.path +0 -6
- data/exec/systemd/_fix/dialog_bot_dev_pre@.service +0 -16
- data/lib/storage/redis/rediscached.rb +0 -97
- data/lib/triggers/deploy/deploy.rb +0 -78
- data/lib/triggers/start/_pre_bot.rb +0 -43
@@ -0,0 +1,58 @@
|
|
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
|
+
class << self
|
15
|
+
|
16
|
+
|
17
|
+
def redisDBStore
|
18
|
+
@redisDBStore ||= Redis.new(path: Dialog.config.db.redis_url, db: Dialog.config.db.redisDBStore)
|
19
|
+
end
|
20
|
+
|
21
|
+
def redisDBCache
|
22
|
+
@redisDBCache ||= Redis.new(path: Dialog.config.db.redis_url, db: Dialog.config.db.redisDBCache)
|
23
|
+
end
|
24
|
+
|
25
|
+
def redisDBStat
|
26
|
+
@redisDBStat ||= Redis.new(path: Dialog.config.db.redis_url, db: Dialog.config.db.redisDBStat)
|
27
|
+
end
|
28
|
+
|
29
|
+
def clear(args)
|
30
|
+
args[:x] = {metamess: {}, data: {}, labels: {}, send: {}, exec: {}}
|
31
|
+
args[:smsg] = {}
|
32
|
+
end
|
33
|
+
|
34
|
+
def directoriesMustExists
|
35
|
+
FileUtils.mkdir_p("#{Dialog.config.path.dialogData}/#{Dialog.config.run.mode}/#{Dialog.config.naming.instance}")
|
36
|
+
FileUtils.mkdir_p("#{Dialog.config.path.dialogTmpfiles}")
|
37
|
+
end
|
38
|
+
|
39
|
+
def clearApi(args)
|
40
|
+
args[:api] = {}
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
def perf(perf)
|
45
|
+
a = []
|
46
|
+
a << "mmsg: #{perf[:metamess] - perf[:init]}s"
|
47
|
+
if perf.has_key?(:preApiAction)
|
48
|
+
a << "canvas: #{perf[:preApiAction] - perf[:metamess]}s"
|
49
|
+
a << "ApiAction in canvas: #{perf[:postApiAction] - perf[:preApiAction]}s"
|
50
|
+
else
|
51
|
+
a << "canvas: #{perf[:canvas] - perf[:metamess]}s"
|
52
|
+
end
|
53
|
+
a << "statistics: #{perf[:statistics] - perf[:canvas]}s" if perf.has_key?(:statistics)
|
54
|
+
a << "full: #{perf[:fullend] - perf[:init]}s"
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,24 @@
|
|
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
|
+
class << self
|
15
|
+
|
16
|
+
def start_background(args)
|
17
|
+
exec("#{Dir.home}/.gem/ruby/2.5.0/bin/sidekiq", "-r", "#{Dialog.config.path.dialog_ruby}/background/_init.rb")
|
18
|
+
# require_relative "#{Dir.home}/.gem/ruby/2.5.0/gems/sidekiq-5.2.2/lib/sidekiq/cli"
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -19,14 +19,28 @@ module Dialog
|
|
19
19
|
|
20
20
|
### LANG
|
21
21
|
i18n = Dialog::Lang.initial
|
22
|
-
|
22
|
+
|
23
|
+
###DRb
|
24
|
+
DRb.start_service
|
25
|
+
|
23
26
|
begin
|
24
|
-
Dialog::
|
27
|
+
Dialog::redisDBStore.call(['info', 'clients'])
|
28
|
+
Dialog::redisDBCache.call(['info', 'clients'])
|
29
|
+
Dialog::redisDBStat.call(['info', 'clients'])
|
25
30
|
rescue
|
26
31
|
Dialog.logger.error "No Redis connection!"
|
27
32
|
sleep(2)
|
28
33
|
retry
|
29
34
|
end
|
35
|
+
|
36
|
+
##Sidekiq
|
37
|
+
Sidekiq.configure_client do |config|
|
38
|
+
config.redis = { path: Dialog.config.db.redis_url, db: Dialog.config.db.redisDBBackground }
|
39
|
+
end
|
40
|
+
|
41
|
+
#Dirs
|
42
|
+
Dialog.directoriesMustExists
|
43
|
+
|
30
44
|
Telegram::Bot::Client.run Dialog.config.secure.token do |bot|
|
31
45
|
args[:bot]= bot; args[:bot].freeze
|
32
46
|
|
@@ -39,15 +53,19 @@ module Dialog
|
|
39
53
|
args[:globals][:botUsername] = me["result"]["username"]
|
40
54
|
args[:globals][:botFirstName] = me["result"]["first_name"]
|
41
55
|
args[:globals][:botFirstNameArray] = me["result"]["first_name"].split("\s")
|
56
|
+
args[:globals][:tdlibUser] = DRbObject.new_with_uri("drbunix:./_data/tdlib/#{Dialog.config.tdlib.instance}/drb.sock")
|
42
57
|
args[:globals].freeze
|
43
58
|
|
59
|
+
DRb.start_service("drbunix:./_data/bot/#{Dialog.config.naming.instance}/drb.sock", bot)
|
60
|
+
#DRb.thread.join
|
61
|
+
|
44
62
|
#common queue
|
45
63
|
args[:queue] = {}
|
46
64
|
args[:queue][:threadCommon] = Concurrent::CachedThreadPool.new
|
47
65
|
|
48
66
|
#Success
|
49
|
-
Dialog.logger.info "Started: Bot named \"#{args[:globals][:botUsername]}\",
|
50
|
-
|
67
|
+
Dialog.logger.info "Started: Bot named \"#{args[:globals][:botUsername]}\", instance=\"#{Dialog.config.naming.instance}\", interface=\"#{Dialog.config.naming.interface}\", ID=\"#{Dialog.config.naming.id}\", loglevel=\"#{Dialog.config.log.base}\""
|
68
|
+
|
51
69
|
begin
|
52
70
|
bot.listen do |rmsg|
|
53
71
|
args[:rmsg] = rmsg
|
@@ -80,14 +98,17 @@ module Dialog
|
|
80
98
|
|
81
99
|
def runMessage(args)
|
82
100
|
begin
|
83
|
-
# Dialog.logger.debug "######### - REDIS STAT:\n #{Dialog::
|
101
|
+
# Dialog.logger.debug "######### - REDIS STAT:\n #{Dialog::redisDBCache.call(['client', 'list'])}\n\n"
|
84
102
|
Dialog::Metamess.firstpoint(args)
|
103
|
+
Dialog::Statistics.general(args)
|
104
|
+
args[:perf][:statistics] = Time.now
|
85
105
|
args[:perf][:fullend] = Time.now
|
86
106
|
Dialog.logger.info("## PERF: #{perf(args[:perf]).join(", ")}")
|
87
107
|
|
88
108
|
rescue Exception => @e
|
89
109
|
Dialog.logger.error "ERROR - #{@e.inspect}\n\n Backtrace:\n #{@e.backtrace.join("\n\t")}\n \
|
90
|
-
MMSG:\n#{args[:mmsg]}\n
|
110
|
+
MMSG:\n#{args[:mmsg]}\n
|
111
|
+
RMSG:\n#{args[:rmsg].to_hash}\n" if @e
|
91
112
|
args[:bot].api.send("sendMessage".to_sym, {chat_id: Dialog.config.monitoring.channel, disable_notification: true, text: @e}) unless Dialog.config.monitoring.channel.nil?
|
92
113
|
raise
|
93
114
|
end
|
@@ -15,28 +15,24 @@ module Dialog
|
|
15
15
|
|
16
16
|
def start_tdlib(args)
|
17
17
|
require 'tdlib-ruby'
|
18
|
+
require 'drb/drb'
|
19
|
+
|
18
20
|
args[:globals] = {}
|
19
21
|
Dir.glob(File.join("#{Dialog.config.path.dialog_rubyLib}/tdlib/**", "*.rb")).each{|f| require f}
|
20
|
-
|
21
|
-
args[:tdlib][:cli].on_ready do |client|
|
22
|
-
a = client.fetch('@type' => 'getMe')
|
23
|
-
args[:globals][:cliId] = a['id'].to_i
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
def tdlibInit(args)
|
29
|
-
inits = ['cli']
|
30
|
-
args[:tdlib] = {}
|
31
|
-
inits.each do |init|
|
32
|
-
unless File.exists?("#{Dialog.config.path.dialogData}/tdlib/#{init}/td.binlog")
|
22
|
+
unless File.exists?("#{Dialog.config.path.dialogData}/tdlib/#{Dialog.config.naming.instance}/td.binlog")
|
33
23
|
Dialog.logger.error "ERROR: please make init of the '#{init}' using 'ruby dialog.rb init #{init}"
|
34
24
|
exit(false)
|
35
|
-
end
|
36
|
-
args[:tdlib][init.to_sym] = Dialog::TDLib.tdlibInit(init)
|
37
25
|
end
|
38
|
-
|
26
|
+
sess = Dialog::TDLib.tdlibInit
|
27
|
+
sess.on_ready do |client|
|
28
|
+
a = client.fetch('@type' => 'getMe')
|
29
|
+
args[:globals][:cliId] = a['id'].to_i
|
30
|
+
end
|
31
|
+
|
32
|
+
DRb.start_service("drbunix:./_data/tdlib/#{Dialog.config.naming.instance}/drb.sock", sess)
|
33
|
+
DRb.thread.join
|
39
34
|
end
|
40
35
|
|
36
|
+
|
41
37
|
end
|
42
38
|
end
|
data/lib/configuration.rb
CHANGED
@@ -25,56 +25,63 @@ module Dialog
|
|
25
25
|
else res = val
|
26
26
|
end
|
27
27
|
else res = ENV[env]; end
|
28
|
-
puts err
|
29
28
|
return res
|
30
29
|
end
|
31
30
|
|
32
31
|
err = []
|
33
32
|
app = 'Dialog'
|
34
33
|
|
35
|
-
setting :
|
34
|
+
setting :tdlib do
|
36
35
|
setting :id, Dialog.checkEnv('ApiID', false, err)
|
37
36
|
setting :hash_s, Dialog.checkEnv('ApiHash', false, err)
|
37
|
+
setting :instance, Dialog.checkEnv('TdlibInstance', false, err)
|
38
38
|
end
|
39
39
|
|
40
|
+
_scope = Dialog.checkEnv('runScope', false, err)
|
41
|
+
_mode = Dialog.checkEnv('runMode', false, err)
|
42
|
+
_instance = Dialog.checkEnv('runInstance', false, err)
|
40
43
|
setting :run do
|
41
|
-
setting :scope,
|
42
|
-
setting :mode,
|
44
|
+
setting :scope, _scope
|
45
|
+
setting :mode, _mode
|
43
46
|
end
|
44
47
|
|
45
48
|
setting :naming do
|
46
49
|
setting :app, app
|
47
50
|
end
|
48
51
|
|
49
|
-
|
50
|
-
|
52
|
+
_interface = Dialog.checkEnv('Interface', 'Demo')
|
53
|
+
unless _scope == 'deploy' or _mode == 'background'
|
51
54
|
token = Dialog.checkEnv('BotToken', false, err)
|
52
55
|
|
53
56
|
setting :naming do
|
54
57
|
setting :app, app
|
55
|
-
setting :
|
56
|
-
|
57
|
-
setting :
|
58
|
-
setting :instance, namingFull.split('__')[0]
|
58
|
+
setting :interface, _interface
|
59
|
+
unless _instance == false
|
60
|
+
setting :instance, _instance
|
59
61
|
else
|
60
|
-
err << "
|
62
|
+
err << "No instance!"
|
61
63
|
end
|
62
64
|
setting :id, token.split(':')[0].to_i unless token == false
|
63
65
|
end
|
64
66
|
|
65
67
|
setting :dialect do
|
66
|
-
setting :
|
67
|
-
setting :
|
68
|
-
end
|
69
|
-
|
70
|
-
setting :db do
|
71
|
-
setting :redis_url, "./_data/redis/redis.sock"
|
68
|
+
setting :sqlite, Dialog.checkEnv('DialectSqlite', "#{Dialog.getDialogPath}/dialect/dialect.sqlite")
|
69
|
+
setting :json, Dialog.checkEnv('DialectJSON', "#{Dialog.getDialogPath}/dialect/#{_interface}.json")
|
72
70
|
end
|
73
71
|
|
74
72
|
setting :secure do
|
75
73
|
setting :token, token
|
76
74
|
end
|
77
75
|
end
|
76
|
+
|
77
|
+
setting :db do
|
78
|
+
setting :redis_url, "./_data/redis/redis.sock"
|
79
|
+
setting :redisDBBackground, 0
|
80
|
+
setting :redisDBStore, 1
|
81
|
+
setting :redisDBStat, 2
|
82
|
+
setting :redisDBCache, 3
|
83
|
+
|
84
|
+
end
|
78
85
|
|
79
86
|
setting :proxy do
|
80
87
|
setting :type, Dialog.checkEnv('BotProxyType', false, err)
|
@@ -89,16 +96,13 @@ module Dialog
|
|
89
96
|
setting :dialog_rubyLib,"#{Dialog.getDialog_rubyPath}"
|
90
97
|
setting :dialog, "#{Dialog.getDialogPath}"
|
91
98
|
setting :dialogData, "#{Dialog.getDialogPath}/_data"
|
92
|
-
setting :dialogRender, "#{Dialog.getDialogPath}/#{
|
99
|
+
setting :dialogRender, "#{Dialog.getDialogPath}/_render/#{_instance}"
|
100
|
+
setting :dialogTmpfiles,"#{Dialog.getDialogPath}/_render/#{_instance}/tmpfiles"
|
93
101
|
end
|
94
102
|
|
95
|
-
setting :common do
|
96
|
-
setting :mode, Dialog.checkEnv('runMode', false, err)
|
97
|
-
end
|
98
|
-
|
99
103
|
setting :log do
|
100
104
|
setting :base, Dialog.checkEnv('LogLevel', 'info')
|
101
|
-
setting :tdlib, Dialog.checkEnv('
|
105
|
+
setting :tdlib, Dialog.checkEnv('LogLevel', 1)
|
102
106
|
end
|
103
107
|
|
104
108
|
setting :monitoring do
|
@@ -112,14 +116,22 @@ module Dialog
|
|
112
116
|
setting :web_hook_url, "https://#{botInstanceHostName}/telegram/api/web_hook"
|
113
117
|
end
|
114
118
|
|
115
|
-
if
|
116
|
-
|
117
|
-
|
119
|
+
if _scope == false
|
120
|
+
case _mode
|
121
|
+
when false
|
122
|
+
FileUtils.cp "#{Dialog.getDialog_rubyPath}/../exec/dialog.sh", "#{Dialog.getDialogPath}/" if not File.file?("#{Dialog.getDialogPath}/dialog.sh")
|
123
|
+
Dialog.logger.info "dialog.sh is copied to your dialog folder, please use it for correct ENV exports,\nbash ./dialog.sh"
|
124
|
+
Dialog.logger.info "Deploying dialog base"
|
125
|
+
deploy = true
|
126
|
+
when 'dev'
|
127
|
+
deploy = true
|
128
|
+
end
|
129
|
+
Dialog::Triggers.trigger_deploy if deploy == true
|
118
130
|
end
|
119
131
|
|
120
132
|
unless err.empty?
|
121
133
|
err << "EXITING!"
|
122
|
-
|
134
|
+
Dialog.logger.debug "ERRORS: #{err}"
|
123
135
|
exit(false)
|
124
136
|
end
|
125
137
|
end
|
@@ -18,12 +18,14 @@ module Dialog
|
|
18
18
|
args[:smsg] ||={}
|
19
19
|
args[:x].has_key?(:dataResp) ? results = args[:x][:dataResp] : results = makeInline_query_resultArticle(args, props, viewId)
|
20
20
|
args[:smsg][:results] = results
|
21
|
+
return Dialog::BotApi.apiAction(args)
|
21
22
|
end
|
22
23
|
|
23
24
|
def send_DialogElementSendInline_query_resultDocument(args)
|
24
25
|
args[:smsg] ||={}
|
25
26
|
args[:x].has_key?(:dataResp) ? results = args[:x][:dataResp] : results = makeInline_query_resultDocument(args, props, viewId)
|
26
27
|
args[:smsg][:results] = results
|
28
|
+
return Dialog::BotApi.apiAction(args)
|
27
29
|
end
|
28
30
|
|
29
31
|
end
|
@@ -0,0 +1,28 @@
|
|
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_DialogElementSendExecBackground(args)
|
19
|
+
require "#{Dialog.config.path.dialog_ruby}/background/batch"
|
20
|
+
res = Dialog::Background::BotApi.perform_async(Dialog.config.naming.instance, args[:mmsg])
|
21
|
+
Dialog.logger.debug "Async result: '#{res}'"
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
#
|
@@ -16,7 +16,7 @@ module Dialog
|
|
16
16
|
|
17
17
|
|
18
18
|
def send_DialogElementSendRecognizeCode(args)
|
19
|
-
name = "#{Dialog.config.path.
|
19
|
+
name = "#{Dialog.config.path.dialogTmpfiles}/#{Dialog::Wrappers.downloadFile(args)}"
|
20
20
|
attrs, stderr_str, status = Open3.capture3('/usr/bin/zbarimg', "-q", name)
|
21
21
|
|
22
22
|
unless attrs == ""
|
@@ -29,7 +29,8 @@ module Dialog
|
|
29
29
|
text = answer_DialogModSendRecognizeCommonAction_fail
|
30
30
|
end
|
31
31
|
args[:smsg][:text] = text
|
32
|
-
args[:x][:dataRespRaw] = response
|
32
|
+
args[:x][:dataRespRaw] = response
|
33
|
+
send_DialogElementSendBot_messageSend(args)
|
33
34
|
end
|
34
35
|
|
35
36
|
def answer_DialogModSendRecognizeCommonAction_success(codeType, response)
|
@@ -19,7 +19,7 @@ module Dialog
|
|
19
19
|
args[:smsg]['title'] = 'test'
|
20
20
|
args[:smsg]['is_channel'] = false
|
21
21
|
args[:smsg]['description'] = 'description'
|
22
|
-
args[:
|
22
|
+
args[:globals][:tdlibUser].on_ready do |client|
|
23
23
|
group = client.broadcast_and_receive(args[:smsg])
|
24
24
|
Dialog.logger.debug "#### group created - #{group}"
|
25
25
|
end
|
@@ -15,7 +15,7 @@ module Dialog
|
|
15
15
|
class << self
|
16
16
|
|
17
17
|
def send_DialogElementSendTdlib_messageSend(args)
|
18
|
-
args[:
|
18
|
+
args[:globals][:tdlibUser].on_ready do |client|
|
19
19
|
args[:smsg]['@type'] = 'sendMessage'
|
20
20
|
|
21
21
|
if args[:smsg][:chat_id] == args[:mmsg][:fqndata][:o][:from][:id]
|
@@ -48,15 +48,15 @@ module Dialog
|
|
48
48
|
nameSym = runProps[:name].to_sym
|
49
49
|
data = args[:dialect][:perView][Dialog.config.naming.app.to_sym]
|
50
50
|
if data.is_a?(Hash)
|
51
|
-
data.each do |viewId, viewProps|
|
52
|
-
if runProps[:erb] == 1 && data[viewId][runProps[:name]].is_a?(Hash)
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
51
|
+
data.each do |viewId, viewProps|
|
52
|
+
if runProps[:erb] == 1 && data[viewId].is_a?(Hash) and data[viewId][runProps[:name]].is_a?(Hash)
|
53
|
+
Dialog.logger.debug "### erb - #{runProps}"
|
54
|
+
fullName = "#{runProps[:order]}_#{runProps[:name]}_#{viewId}"
|
55
|
+
fullNameSym = fullName.to_sym
|
56
|
+
|
57
|
+
tmpl = ERB.new(File.read("#{File.dirname(__FILE__)}/erb/#{stage}/#{runProps[:order]}.#{runProps[:name]}.erb")).result(binding)
|
58
|
+
runProps.has_key?(:erb_order) ? rname = "#{runProps[:erb_order]}_#{fullName}" : rname = fullName
|
59
|
+
File.open("#{Dialog.config.path.dialogRender}/code_#{type}/#{stage}__#{rname}.rb", 'w') do |f| f.write tmpl; end
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
@@ -30,18 +30,41 @@ module Dialog
|
|
30
30
|
<% hash_tOID.each do |tOID, prop|
|
31
31
|
|
32
32
|
prop[:tProp][:op] == "=~" ? valuePrefix = "/" : valuePrefix = "\""
|
33
|
-
prop[:tProp][:value].to_s === prop[:tProp][:value].to_i.to_s ? value = prop[:tProp][:value] : value = "#{valuePrefix}#{prop[:tProp][:value]}#{valuePrefix}"
|
33
|
+
prop[:tProp][:value].to_s === prop[:tProp][:value].to_i.to_s ? value = prop[:tProp][:value] : value = "#{valuePrefix}#{prop[:tProp][:value]}#{valuePrefix}"
|
34
|
+
/[*.,.*]/.match?(value) ? valueArr = value[2..-3].split(",") : valueArr = false %>
|
35
|
+
|
34
36
|
## <%= prop[:tName]%>
|
35
37
|
## <%= prop[:fFqn]%> ->> <%= tFqn%>
|
36
|
-
|
38
|
+
<% if valueArr.is_a?(Array)
|
39
|
+
res = ""
|
40
|
+
i = 0
|
41
|
+
valueArr.each do |v|
|
42
|
+
res = res + "args[:mmsg][:fqndata]#{prop[:tProp][:key]} #{prop[:tProp][:op]} '#{v}' "
|
43
|
+
i += 1
|
44
|
+
i < valueArr.count ? res = res + " or " : true
|
45
|
+
end %>
|
46
|
+
if <%= res %>
|
47
|
+
<% else %>
|
48
|
+
if args[:mmsg][:fqndata]<%= prop[:tProp][:key]%> <%= prop[:tProp][:op]%> <%= value %>
|
49
|
+
<% end %>
|
37
50
|
args[:x][:labels] = {} if args[:x][:labels] == 'next'
|
38
51
|
args[:x][:labels][:oid_<%= prop[:tOID]%>] = true
|
39
52
|
Dialog.logger.debug "### ADD LABEL: <%= prop[:tProp][:key]%> = #{args[:mmsg][:fqndata]<%= prop[:tProp][:key]%>} <%= prop[:tProp][:op]%> %Q[#{<%= value %>}]"
|
40
53
|
<% if args[:dialect][:perView][Dialog.config.naming.app.to_sym][viewId][:ModReceive2GetData].is_a?(Hash)
|
41
54
|
if args[:dialect][:perView][Dialog.config.naming.app.to_sym][viewId][:ModReceive2GetData][:repack][:tOID][tOID.to_sym].is_a?(Hash)
|
42
55
|
case args[:dialect][:perView][Dialog.config.naming.app.to_sym][viewId][:ModReceive2GetData][:repack][:tOID][tOID.to_sym][:fFqn]
|
43
|
-
when "#{Dialog.config.naming.app}ArchiGetdataField"
|
44
|
-
|
56
|
+
when "#{Dialog.config.naming.app}ArchiGetdataField"
|
57
|
+
if prop[:tProp].has_key?(:vAction) and prop[:tProp].has_key?(:vFrom) and prop[:tProp].has_key?(:vTo)
|
58
|
+
case prop[:tProp][:vAction]
|
59
|
+
when 'sub' %>
|
60
|
+
args[:x][:dataReq] = args[:mmsg][:fqndata]<%= prop[:tProp][:key]%>.sub("<%= prop[:tProp][:vFrom] %>", "<%= prop[:tProp][:vTo] %>")
|
61
|
+
Dialog.logger.debug "@@@ SUB - #{args[:x][:dataReq]}"
|
62
|
+
<% when 'replace' %>
|
63
|
+
args[:x][:dataReq] = args[:mmsg][:fqndata]<%= prop[:tProp][:key]%> ## TODO
|
64
|
+
<% end %>
|
65
|
+
<% else %>
|
66
|
+
args[:x][:dataReq] = args[:mmsg][:fqndata]<%= prop[:tProp][:key]%>
|
67
|
+
<% end %>
|
45
68
|
<% when "#{Dialog.config.naming.app}ArchiGetdataFixed" %>
|
46
69
|
args[:x][:dataReq] = "<%= args[:dialect][:perView][Dialog.config.naming.app.to_sym][viewId][:ModReceive2GetData][:repack][:tOID][tOID.to_sym][:fProp][:data] %>"
|
47
70
|
<% end %>
|