slack-smart-bot 0.6.6 → 0.6.8

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/slack-smart-bot.rb +64 -37
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 07f5a92aaf8c69776a02ac3200ab9d05d9ad9b6331c981468e297c0f490ca922
4
- data.tar.gz: a9df53002f42bb92bea6f9dbf3b2d369bf0166953d5894d1fcf0f8ceca473c8f
3
+ metadata.gz: 79e7f5fe180d59d53a3b04c4f5a6a71521f3153add97d4d2c7b467d0e14c7d70
4
+ data.tar.gz: 4c503562cc952a1c8bc892ee862bfc2d25de84e829a216b302dc6e771a2eb2db
5
5
  SHA512:
6
- metadata.gz: 3dd361332e4201b3357ac9fd7dee741902faa7d9c03d1ff1e944f60d0703fcc61724f76b19ba7ceaf5113ab0e1f2ccec864fd3cfd16d455db9463a0fea0be7ab
7
- data.tar.gz: 59405226fd400432fadae88592eb6ea75990e42d6fa5dd9c4cbf943e119e8341473535b1adb598a1010984e032c78e4cc00dbdbd7be1159da96f6e4b0af93073
6
+ metadata.gz: f960f7c7d0fd5e6949ac4b942dac8715da5a5275d514aea9faac5febb0f58ca74dfaae0b5fd9f9f969f79284ec50d982bd17449950cb8cc297b335f12661c69e
7
+ data.tar.gz: 729157c3ed6944b91aaeca4748f6a179f89df8cb953dee392d949d512800c507620e8f588d8f5b62d02bb267a1ca5b917ea763b5eaf30af999fd7e76f75f65de
@@ -211,11 +211,12 @@ class SlackSmartBot
211
211
  channels = wclient.channels_list.channels
212
212
  channel_found = channels.detect { |c| c.name == channel_rules_name }
213
213
  members = wclient.conversations_members(channel: @channels_id[channel_rules_name]).members unless channel_found.nil?
214
-
215
214
  if channel_found.nil?
216
215
  @logger.fatal "Not possible to find the channel #{channel_rules_name}"
217
216
  elsif channel_found.name == MASTER_CHANNEL
218
217
  respond "You cannot use the rules from Master Channel on any other channel.", dest
218
+ elsif @status != :on
219
+ respond "The bot in that channel is not :on", dest
219
220
  elsif data.user == channel_found.creator or members.include?(data.user)
220
221
  res = process_first(user_info.user, command, dest, channel_rules)
221
222
  else
@@ -246,16 +247,22 @@ class SlackSmartBot
246
247
  #todo: verify if on slack on anytime nick == config[:nick]
247
248
  if nick == config[:nick] or nick == (config[:nick] + " · Bot") #if message is coming from the bot
248
249
  begin
249
- @logger.info "#{nick}: #{text}"
250
250
  case text
251
251
  when /^Bot has been killed by/
252
+ @logger.info "#{nick}: #{text}"
252
253
  exit!
253
254
  when /^Changed status on (.+) to :(.+)/i
254
- channel = $1
255
+ channel_name = $1
255
256
  status = $2
256
- #todo: channel should be channel_id
257
- @bots_created[channel][:status] = status.to_sym
258
- update_bots_file()
257
+ if ON_MASTER_BOT or CHANNEL == channel_name
258
+ @bots_created[@channels_id[channel_name]][:status] = status.to_sym
259
+ update_bots_file()
260
+ if CHANNEL == channel_name
261
+ @logger.info "#{nick}: #{text}"
262
+ else #on master bot
263
+ @logger.info "Changed status on #{channel_name} to :#{status}"
264
+ end
265
+ end
259
266
  end
260
267
  return :next #don't continue analyzing
261
268
  rescue Exception => stack
@@ -291,6 +298,7 @@ class SlackSmartBot
291
298
  begin
292
299
  t = Thread.new do
293
300
  begin
301
+ done = false
294
302
  processed = process(user, command, dest, dchannel)
295
303
  @logger.info "command: #{nick}> #{command}" if processed
296
304
  on_demand = false
@@ -316,21 +324,28 @@ class SlackSmartBot
316
324
  end
317
325
  end
318
326
  if @bots_created.key?(@rules_imported[user.id][dchannel])
319
- rules_file = @bots_created[@rules_imported[user.id][dchannel]][:rules_file]
327
+ if @bots_created[@rules_imported[user.id][dchannel]][:status] == :on
328
+ rules_file = @bots_created[@rules_imported[user.id][dchannel]][:rules_file]
329
+ else
330
+ respond 'The bot on that channel is not :on', dest
331
+ done = true
332
+ end
320
333
  end
321
334
  end
322
- begin
323
- eval(File.new(rules_file).read) if File.exist?(rules_file)
324
- rescue Exception => stack
325
- @logger.fatal "ERROR ON RULES FILE: #{rules_file}"
326
- @logger.fatal stack
327
- end
328
- if defined?(rules)
329
- command[0] = "" if command[0] == "!"
330
- command.gsub!(/^@\w+:*\s*/, "")
331
- rules(user, command, processed, dest)
332
- else
333
- @logger.warn "It seems like rules method is not defined"
335
+ unless done
336
+ begin
337
+ eval(File.new(rules_file).read) if File.exist?(rules_file)
338
+ rescue Exception => stack
339
+ @logger.fatal "ERROR ON RULES FILE: #{rules_file}"
340
+ @logger.fatal stack
341
+ end
342
+ if defined?(rules)
343
+ command[0] = "" if command[0] == "!"
344
+ command.gsub!(/^@\w+:*\s*/, "")
345
+ rules(user, command, processed, dest)
346
+ else
347
+ @logger.warn "It seems like rules method is not defined"
348
+ end
334
349
  end
335
350
  elsif @rules_imported.key?(user.id) and @rules_imported[user.id].key?(user.id)
336
351
  unless @bots_created.key?(@rules_imported[user.id][user.id])
@@ -341,21 +356,28 @@ class SlackSmartBot
341
356
  end
342
357
 
343
358
  if @bots_created.key?(@rules_imported[user.id][user.id])
344
- rules_file = @bots_created[@rules_imported[user.id][user.id]][:rules_file]
345
- begin
346
- eval(File.new(rules_file).read) if File.exist?(rules_file)
347
- rescue Exception => stack
348
- @logger.fatal "ERROR ON imported RULES FILE: #{rules_file}"
349
- @logger.fatal stack
359
+ if @bots_created[@rules_imported[user.id][user.id]][:status] == :on
360
+ rules_file = @bots_created[@rules_imported[user.id][user.id]][:rules_file]
361
+ begin
362
+ eval(File.new(rules_file).read) if File.exist?(rules_file)
363
+ rescue Exception => stack
364
+ @logger.fatal "ERROR ON imported RULES FILE: #{rules_file}"
365
+ @logger.fatal stack
366
+ end
367
+ else
368
+ respond "The bot on <##{@rules_imported[user.id][user.id]}|#{@bots_created[@rules_imported[user.id][user.id]][:channel_name]}> is not :on", dest
369
+ done = true
350
370
  end
351
371
  end
352
372
 
353
- if defined?(rules)
354
- command[0] = "" if command[0] == "!"
355
- command.gsub!(/^@\w+:*\s*/, "")
356
- rules(user, command, processed, dest)
357
- else
358
- @logger.warn "It seems like rules method is not defined"
373
+ unless done
374
+ if defined?(rules)
375
+ command[0] = "" if command[0] == "!"
376
+ command.gsub!(/^@\w+:*\s*/, "")
377
+ rules(user, command, processed, dest)
378
+ else
379
+ @logger.warn "It seems like rules method is not defined"
380
+ end
359
381
  end
360
382
  else
361
383
  @logger.info "it is a direct message with no rules file selected so no rules file executed."
@@ -470,8 +492,7 @@ class SlackSmartBot
470
492
  respond "This bot is running and listening from now on. You can pause again: pause this bot", dest
471
493
  @status = :on
472
494
  unless ON_MASTER_BOT
473
- get_channels_name_and_id() unless @channels_name.keys.include?(MASTER_CHANNEL) and @channels_name.keys.include?(CHANNEL)
474
- send_msg_channel @channels_name[MASTER_CHANNEL], "Changed status on #{@channels_name[CHANNEL]} to :on"
495
+ send_msg_channel MASTER_CHANNEL, "Changed status on #{CHANNEL} to :on"
475
496
  end
476
497
  else
477
498
  respond "Only admin users can change my status", dest
@@ -489,8 +510,7 @@ class SlackSmartBot
489
510
  respond "zZzzzzZzzzzZZZZZZzzzzzzzz", dest
490
511
  @status = :paused
491
512
  unless ON_MASTER_BOT
492
- get_channels_name_and_id() unless @channels_name.keys.include?(MASTER_CHANNEL) and @channels_name.keys.include?(CHANNEL)
493
- send_msg_channel @channels_name[MASTER_CHANNEL], "Changed status on #{@channels_name[CHANNEL]} to :paused"
513
+ send_msg_channel MASTER_CHANNEL, "Changed status on #{CHANNEL} to :paused"
494
514
  end
495
515
  else
496
516
  respond "Only admin users can put me on pause", dest
@@ -564,6 +584,7 @@ class SlackSmartBot
564
584
  end
565
585
  channels = wclient.channels_list.channels
566
586
  channel_found = channels.detect { |c| c.name == channel }
587
+ members = wclient.conversations_members(channel: @channels_id[channel]).members unless channel_found.nil?
567
588
 
568
589
  if channel_id.nil?
569
590
  respond "There is no channel with that name: #{channel}, please be sure is written exactly the same", dest
@@ -571,7 +592,7 @@ class SlackSmartBot
571
592
  respond "There is already a bot in this channel: #{channel}", dest
572
593
  elsif @bots_created.keys.include?(channel_id)
573
594
  respond "There is already a bot in this channel: #{channel}, kill it before", dest
574
- elsif config[:nick_id] != channel_found.creator and !channel_found.members.include?(config[:nick_id])
595
+ elsif config[:nick_id] != channel_found.creator and !members.include?(config[:nick_id])
575
596
  respond "You need to add first to the channel the smart bot user: #{config[:nick]}", dest
576
597
  else
577
598
  if channel_id != config[:channel]
@@ -670,12 +691,18 @@ class SlackSmartBot
670
691
  channel = $2
671
692
  channels = wclient.channels_list.channels
672
693
  channel_found = channels.detect { |c| c.name == channel }
694
+ members = wclient.conversations_members(channel: @channels_id[channel]).members unless channel_found.nil?
695
+
673
696
  if channel_found.nil?
674
697
  respond "The channel you are trying to use doesn't exist", dest
675
698
  elsif channel_found.name == MASTER_CHANNEL
676
699
  respond "You cannot use the rules from Master Channel on any other channel.", dest
700
+ elsif !@bots_created.key?(@channels_id[channel])
701
+ respond "There is no bot running on that channel.", dest
702
+ elsif @bots_created.key?(@channels_id[channel]) and @bots_created[@channels_id[channel]][:status] != :on
703
+ respond "The bot in that channel is not :on", dest
677
704
  else
678
- if user.id == channel_found.creator or channel_found.members.include?(user.id)
705
+ if user.id == channel_found.creator or members.include?(user.id)
679
706
  @rules_imported[user.id] = {} unless @rules_imported.key?(user.id)
680
707
  if dest[0] == "C" #todo: take in consideration bots that are not master
681
708
  @rules_imported[user.id][dchannel] = channel_found.id
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack-smart-bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.6
4
+ version: 0.6.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mario Ruiz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-18 00:00:00.000000000 Z
11
+ date: 2019-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slack-ruby-client