slack-smart-bot 1.11.0 → 1.12.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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +44 -3
  3. data/lib/slack/smart-bot/comm/respond.rb +8 -2
  4. data/lib/slack/smart-bot/comm/set_status.rb +21 -0
  5. data/lib/slack/smart-bot/comm.rb +1 -0
  6. data/lib/slack/smart-bot/commands/general/add_memo_team.rb +117 -0
  7. data/lib/slack/smart-bot/commands/general/add_vacation.rb +51 -0
  8. data/lib/slack/smart-bot/commands/general/delete_memo_team.rb +69 -0
  9. data/lib/slack/smart-bot/commands/general/delete_team.rb +21 -1
  10. data/lib/slack/smart-bot/commands/general/remove_vacation.rb +27 -0
  11. data/lib/slack/smart-bot/commands/general/see_announcements.rb +1 -1
  12. data/lib/slack/smart-bot/commands/general/see_statuses.rb +1 -1
  13. data/lib/slack/smart-bot/commands/general/see_teams.rb +182 -32
  14. data/lib/slack/smart-bot/commands/general/see_vacations.rb +58 -0
  15. data/lib/slack/smart-bot/commands/general/see_vacations_team.rb +136 -0
  16. data/lib/slack/smart-bot/commands/general/set_memo_status.rb +58 -0
  17. data/lib/slack/smart-bot/commands/general/update_team.rb +22 -1
  18. data/lib/slack/smart-bot/commands/general_bot_commands.rb +172 -4
  19. data/lib/slack/smart-bot/commands/on_bot/general/bot_stats.rb +21 -5
  20. data/lib/slack/smart-bot/commands/on_bot/kill_repl.rb +32 -0
  21. data/lib/slack/smart-bot/commands/on_bot/repl.rb +1 -0
  22. data/lib/slack/smart-bot/commands/on_bot/run_repl.rb +113 -33
  23. data/lib/slack/smart-bot/commands/on_master/admin_master/publish_announcements.rb +3 -1
  24. data/lib/slack/smart-bot/commands.rb +8 -0
  25. data/lib/slack/smart-bot/process.rb +17 -7
  26. data/lib/slack/smart-bot/treat_message.rb +11 -1
  27. data/lib/slack/smart-bot/utils/check_vacations.rb +43 -0
  28. data/lib/slack/smart-bot/utils/get_admins_channels.rb +23 -3
  29. data/lib/slack/smart-bot/utils/get_command_ids.rb +1 -1
  30. data/lib/slack/smart-bot/utils/get_help.rb +4 -3
  31. data/lib/slack/smart-bot/utils/get_vacations.rb +22 -0
  32. data/lib/slack/smart-bot/utils/save_stats.rb +9 -2
  33. data/lib/slack/smart-bot/utils/save_status.rb +1 -1
  34. data/lib/slack/smart-bot/utils/update_admins_channels.rb +20 -3
  35. data/lib/slack/smart-bot/utils/update_vacations.rb +16 -0
  36. data/lib/slack/smart-bot/utils.rb +3 -0
  37. data/lib/slack-smart-bot.rb +22 -2
  38. data/whats_new.txt +12 -17
  39. metadata +19 -7
@@ -0,0 +1,43 @@
1
+ class SlackSmartBot
2
+ def check_vacations(date: Date.today, user: nil, set_status: true, only_first_day: true)
3
+ get_vacations()
4
+ if user.nil?
5
+ users = @vacations.keys
6
+ else
7
+ users = [user]
8
+ end
9
+ on_vacation = []
10
+ users.each do |user|
11
+ type = nil
12
+ expiration = nil
13
+ @vacations[user].periods.each do |p|
14
+ if only_first_day and p.from == date.strftime("%Y/%m/%d")
15
+ type = p.type
16
+ on_vacation << user
17
+ expiration = p.to
18
+ break
19
+ elsif !only_first_day and p.from <= date.strftime("%Y/%m/%d") and p.to >= date.strftime("%Y/%m/%d")
20
+ type = p.type
21
+ on_vacation << user
22
+ expiration = p.to
23
+ break
24
+ end
25
+ end
26
+ unless type.nil? or !set_status
27
+ icon = ''
28
+ if type == 'vacation'
29
+ icon = ':palm_tree:'
30
+ elsif type == 'sick'
31
+ icon = ':face_with_thermometer:'
32
+ elsif type == 'sick child'
33
+ icon = ':baby:'
34
+ end
35
+ unless icon.empty?
36
+ expiration_date = Date.parse(expiration,'%Y/%m/%d') + 1 #next day at 0:00
37
+ set_status(@vacations[user].user_id, status: icon, expiration: expiration_date, message: "#{type} until #{expiration}")
38
+ end
39
+ end
40
+ end
41
+ return on_vacation
42
+ end
43
+ end
@@ -1,11 +1,31 @@
1
1
  class SlackSmartBot
2
2
 
3
3
  def get_admins_channels()
4
- if File.exist?("#{config.path}/rules/#{@channel_id}/admins_channels.rb")
5
- file_conf = IO.readlines("#{config.path}/rules/#{@channel_id}/admins_channels.rb").join
6
- unless file_conf.to_s() == ""
4
+ require 'yaml'
5
+ admins_file = "#{config.path}/rules/#{@channel_id}/admins_channels.yaml"
6
+
7
+ if File.exist?(admins_file.gsub(".yaml", ".rb")) #backwards compatible
8
+ file_conf = IO.readlines(admins_file.gsub(".yaml", ".rb")).join
9
+ if file_conf.to_s() == ""
10
+ @admins_channels = {}
11
+ else
7
12
  @admins_channels = eval(file_conf)
8
13
  end
14
+ File.open(admins_file, 'w') {|file| file.write(@admins_channels.to_yaml) }
15
+ File.delete(admins_file.gsub(".yaml", ".rb"))
16
+ end
17
+
18
+ if File.exist?(admins_file)
19
+ admins_channels = @admins_channels
20
+ 10.times do
21
+ admins_channels = YAML.load(File.read(admins_file))
22
+ if admins_channels.is_a?(Hash)
23
+ break
24
+ else
25
+ sleep (0.1*(rand(2)+1))
26
+ end
27
+ end
28
+ @admins_channels = admins_channels unless admins_channels.is_a?(FalseClass)
9
29
  else
10
30
  @admins_channels = {}
11
31
  end
@@ -42,7 +42,7 @@ class SlackSmartBot
42
42
 
43
43
  if typem == :on_extended
44
44
  commands[:on_extended] = (Dir.entries("#{__dir__}/../commands/on_extended/").select { |e| e.match?(/\.rb/) }).sort.join('|').gsub('.rb','').split('|')
45
- commands[:on_extended]+= ['repl', 'see_repls', 'get_repl', 'run_repl', 'delete_repl', 'ruby_code']
45
+ commands[:on_extended]+= ['repl', 'see_repls', 'get_repl', 'run_repl', 'delete_repl', 'kill_repl', 'ruby_code']
46
46
  end
47
47
 
48
48
  if typem == :on_master
@@ -3,9 +3,10 @@ class SlackSmartBot
3
3
  order = {
4
4
  general: [:bot_help, :hi_bot, :bye_bot, :add_admin, :remove_admin, :see_admins, :poster, :add_announcement, :delete_announcement,
5
5
  :see_announcements, :see_command_ids, :share_messages, :see_shares, :delete_share, :see_favorite_commands, :see_statuses,
6
- :allow_access, :see_access, :deny_access, :add_team, :see_teams, :update_team, :ping_team, :delete_team],
6
+ :allow_access, :see_access, :deny_access, :add_team, :add_memo_team, :delete_memo_team, :set_memo_status, :see_teams, :update_team, :ping_team, :delete_team,
7
+ :add_vacation, :remove_vacation, :see_vacations, :see_vacations_team],
7
8
  on_bot_general: [:whats_new, :suggest_command, :bot_status, :use_rules, :stop_using_rules, :bot_stats, :leaderboard],
8
- on_bot: [:ruby_code, :repl, :get_repl, :run_repl, :delete_repl, :see_repls, :add_shortcut, :delete_shortcut, :see_shortcuts],
9
+ on_bot: [:ruby_code, :repl, :get_repl, :run_repl, :delete_repl, :see_repls, :kill_repl, :add_shortcut, :delete_shortcut, :see_shortcuts],
9
10
  on_bot_admin: [:extend_rules, :stop_using_rules_on, :start_bot, :pause_bot, :add_routine,
10
11
  :see_routines, :start_routine, :pause_routine, :remove_routine, :see_result_routine, :run_routine]
11
12
  }
@@ -73,7 +74,7 @@ class SlackSmartBot
73
74
  help[:general_commands_file] += build_help(config.path+'/rules/general_commands.rb', expanded)[user_type].values.join("\n") + "\n"
74
75
  end
75
76
  if help.key?(:on_bot)
76
- commands_on_extended_from_on_bot = [:repl, :see_repls, :get_repl, :run_repl, :delete_repl, :ruby_code]
77
+ commands_on_extended_from_on_bot = [:repl, :see_repls, :get_repl, :run_repl, :delete_repl, :kill_repl, :ruby_code]
77
78
  commands_on_extended_from_on_bot.each do |cm|
78
79
  help[:on_extended][cm] = help[:on_bot][cm] if help[:on_bot].key?(cm)
79
80
  end
@@ -0,0 +1,22 @@
1
+ class SlackSmartBot
2
+ def get_vacations
3
+ @vacations ||= {}
4
+ vacations_file = config.file_path.gsub(".rb", "_vacations.yaml")
5
+ if File.exist?(vacations_file)
6
+ if !defined?(@datetime_vacations_file) or @datetime_vacations_file != File.mtime(vacations_file)
7
+ require 'yaml'
8
+ vacations = @vacations
9
+ 10.times do
10
+ vacations = YAML.load(File.read(vacations_file))
11
+ if vacations.is_a?(Hash)
12
+ break
13
+ else
14
+ sleep (0.1*(rand(2)+1))
15
+ end
16
+ end
17
+ @vacations = vacations unless vacations.is_a?(FalseClass)
18
+ @datetime_vacations_file = File.mtime(vacations_file)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -6,7 +6,7 @@ class SlackSmartBot
6
6
  require "csv"
7
7
  if !File.exist?("#{config.stats_path}.#{Time.now.strftime("%Y-%m")}.log")
8
8
  CSV.open("#{config.stats_path}.#{Time.now.strftime("%Y-%m")}.log", "wb") do |csv|
9
- csv << ["date", "bot_channel", "bot_channel_id", "dest_channel", "dest_channel_id", "type_message", "user_name", "user_id", "text", "command", "files"]
9
+ csv << ["date", "bot_channel", "bot_channel_id", "dest_channel", "dest_channel_id", "type_message", "user_name", "user_id", "text", "command", "files", "time_zone"]
10
10
  end
11
11
  end
12
12
  if data.empty?
@@ -34,8 +34,15 @@ class SlackSmartBot
34
34
  user_name = data.user.name
35
35
  user_id = data.user.id
36
36
  end
37
+ user_info = @users.select { |u| u.id == user_id or (u.key?(:enterprise_user) and u.enterprise_user.id == user_id) }[-1]
38
+ if user_info.nil? or user_info.is_app_user or user_info.is_bot
39
+ time_zone = ''
40
+ else
41
+ time_zone = user_info.tz_label
42
+ end
43
+
37
44
  CSV.open("#{config.stats_path}.#{Time.now.strftime("%Y-%m")}.log", "a+") do |csv|
38
- csv << [Time.now, config.channel, @channel_id, @channels_name[data.dest], data.dest, data.typem, user_name, user_id, command_txt, method, data.files]
45
+ csv << [Time.now, config.channel, @channel_id, @channels_name[data.dest], data.dest, data.typem, user_name, user_id, command_txt, method, data.files, time_zone]
39
46
  end
40
47
  rescue Exception => exception
41
48
  @logger.fatal "There was a problem on the stats"
@@ -57,7 +57,7 @@ class SlackSmartBot
57
57
  @last_status_change = Time.now
58
58
  @last_notified_status_id = status_id
59
59
  unless m == ''
60
- respond m, config.status_channel
60
+ respond eval("\"" + m + "\""), config.status_channel
61
61
  end
62
62
  end
63
63
 
@@ -1,8 +1,25 @@
1
1
  class SlackSmartBot
2
2
 
3
3
  def update_admins_channels()
4
- file = File.open("#{config.path}/rules/#{@channel_id}/admins_channels.rb", "w")
5
- file.write (@admins_channels.inspect)
6
- file.close
4
+
5
+ require 'yaml'
6
+ admins_file = "#{config.path}/rules/#{@channel_id}/admins_channels.yaml"
7
+
8
+ if File.exist?(admins_file.gsub(".yaml", ".rb")) #backwards compatible
9
+ file_conf = IO.readlines(admins_file.gsub(".yaml", ".rb")).join
10
+ if file_conf.to_s() == ""
11
+ @admins_channels = {}
12
+ else
13
+ @admins_channels = eval(file_conf)
14
+ end
15
+ File.open(admins_file, 'w') {|file| file.write(@admins_channels.to_yaml) }
16
+ File.delete(admins_file.gsub(".yaml", ".rb"))
17
+ end
18
+
19
+ File.open(admins_file, 'w') {|file|
20
+ file.flock(File::LOCK_EX)
21
+ file.write(@admins_channels.to_yaml)
22
+ file.flock(File::LOCK_UN)
23
+ }
7
24
  end
8
25
  end
@@ -0,0 +1,16 @@
1
+ class SlackSmartBot
2
+ def update_vacations(vacation=nil)
3
+ require 'yaml'
4
+ unless vacation.nil?
5
+ get_vacations()
6
+ @vacations.merge!(vacation)
7
+ end
8
+ vacations_file = config.file_path.gsub(".rb", "_vacations.yaml")
9
+ File.open(vacations_file, 'w') {|file|
10
+ file.flock(File::LOCK_EX)
11
+ file.write(@vacations.to_yaml)
12
+ file.flock(File::LOCK_UN)
13
+ }
14
+ @datetime_vacations_file = File.mtime(vacations_file)
15
+ end
16
+ end
@@ -25,5 +25,8 @@ require_relative 'utils/get_access_channels'
25
25
  require_relative 'utils/update_access_channels'
26
26
  require_relative 'utils/get_command_ids'
27
27
  require_relative 'utils/get_teams'
28
+ require_relative 'utils/get_vacations'
28
29
  require_relative 'utils/update_teams'
30
+ require_relative 'utils/update_vacations'
31
+ require_relative 'utils/check_vacations'
29
32
 
@@ -21,7 +21,7 @@ require_relative "slack/smart-bot/utils"
21
21
 
22
22
  ADMIN_USERS = MASTER_USERS if defined?(MASTER_USERS) # for bg compatibility
23
23
  class SlackSmartBot
24
- attr_accessor :config, :client
24
+ attr_accessor :config, :client, :client_user
25
25
  attr_reader :master_bot_id, :channel_id
26
26
  geml = Gem.loaded_specs.values.select { |x| x.name == "slack-smart-bot" }[0]
27
27
  if geml.nil?
@@ -47,7 +47,11 @@ class SlackSmartBot
47
47
  config[:general_message] = "" unless config.key?(:general_message)
48
48
  config[:logrtm] = false unless config.key?(:logrtm)
49
49
  config[:status_channel] = 'smartbot-status' unless config.key?(:status_channel)
50
-
50
+ config[:jira] = { host: '', user: '', password: '' } unless config.key?(:jira) and config[:jira].key?(:host) and config[:jira].key?(:user) and config[:jira].key?(:password)
51
+ config[:jira][:host] = "https://#{config[:jira][:host]}" unless config[:jira][:host] == '' or config[:jira][:host].match?(/^http/)
52
+ config[:github] = {token: '' } unless config.key?(:github) and config[:github].key?(:token)
53
+ config[:github][:host] ||= "https://api.github.com"
54
+ config[:github][:host] = "https://#{config[:github][:host]}" unless config[:github][:host] == '' or config[:github][:host].match?(/^http/)
51
55
  if config.path.to_s!='' and config.file.to_s==''
52
56
  config.file = File.basename($0)
53
57
  end
@@ -118,6 +122,7 @@ class SlackSmartBot
118
122
 
119
123
  config_log = config.dup
120
124
  config_log.delete(:token)
125
+ config_log.delete(:user_token)
121
126
  @logger.info "Initializing bot: #{config_log.inspect}"
122
127
 
123
128
  File.new("#{config.path}/buffer.log", "w") if config[:testing] and config.on_master_bot
@@ -131,6 +136,18 @@ class SlackSmartBot
131
136
  conf.token = config[:token]
132
137
  end
133
138
  end
139
+ unless (config.simulate and config.key?(:client)) or config.user_token.nil? or config.user_token.empty?
140
+ begin
141
+ self.client_user = Slack::Web::Client.new(token: config.user_token)
142
+ self.client_user.auth_test
143
+ rescue Exception => e
144
+ @logger.fatal "*" * 50
145
+ @logger.fatal "Rescued on creation client_user: #{e.inspect}"
146
+ self.client_user = nil
147
+ end
148
+ else
149
+ self.client_user = nil
150
+ end
134
151
  restarts = 0
135
152
  created = false
136
153
  while restarts < 200 and !created
@@ -176,10 +193,13 @@ class SlackSmartBot
176
193
  @rules_imported = Hash.new()
177
194
  @routines = Hash.new()
178
195
  @repls = Hash.new()
196
+ @run_repls = Hash.new()
179
197
  @users = Hash.new()
180
198
  @announcements = Hash.new()
181
199
  @shares = Hash.new()
182
200
  @last_status_change = Time.now
201
+ @vacations_check = (Date.today - 1)
202
+ @announcements_activity_after = Hash.new()
183
203
 
184
204
  if File.exist?("#{config.path}/shortcuts/#{config.shortcuts_file}".gsub('.yaml','.rb')) #backwards compatible
185
205
  file_conf = IO.readlines("#{config.path}/shortcuts/#{config.shortcuts_file}".gsub('.yaml','.rb')).join
data/whats_new.txt CHANGED
@@ -1,23 +1,18 @@
1
- *Version 1.11.0* Released 2022-May-09
1
+ *Version 1.12.0* Released 2022-Sep-28
2
2
 
3
3
  *For General users*
4
- - `run repl` displays results as code in case a value on stdout is returned as Hash or Array (<https://github.com/MarioRuiz/slack-smart-bot/issues/41|#41>).
5
- - `repl` command displays results when using iterators and printing results (<https://github.com/MarioRuiz/slack-smart-bot/issues/35|#35>).
6
- - `see command ids` will return the command ids. (<https://github.com/MarioRuiz/slack-smart-bot/issues/43|#43>)
7
- - `poster MESSAGE`, `poster :EMOTICON_TEXT: MESSAGE`, `poster :EMOTICON_TEXT: :EMOTICON_BACKGROUND: MESSAGE`, `poster MINUTESm MESSAGE` It will create a poster with the message supplied. By default will be autodeleted 1 minute later. (<https://github.com/MarioRuiz/slack-smart-bot/issues/34|#34>)
8
- - `who is available?` show members of the channel that are on line and not on a meeting or vacation or sick. (<https://github.com/MarioRuiz/slack-smart-bot/issues/52|#52>)
9
- - You can add, update, see, ping, contact, and delete teams. When calling `see TEAM_NAME team` the availability of the members will be displayed. Call `bot help teams` for more info. (<https://github.com/MarioRuiz/slack-smart-bot/issues/53|#53>)
10
- - repl improvements (<https://github.com/MarioRuiz/slack-smart-bot/issues/54|#54>)
11
- - new Master command `where is smartbot?` will return the channels where the SmartBot is a member. (<https://github.com/MarioRuiz/slack-smart-bot/issues/56|#56>)
4
+ - `run repl` accepts local parameters and precode to be supplied (<https://github.com/MarioRuiz/slack-smart-bot/issues/60|#60>).
5
+ - `!!run repl` will respond as soon as any result is released (<https://github.com/MarioRuiz/slack-smart-bot/issues/63|#63>)
6
+ - Now you can add notes for the team, even you can specify if those notes are private so only the members of the team can see them, or even personal. You can use different types of notes: memo, note, issue, task, feature, bug. Also you can indicate the topic of the note. To be able to add or delete notes you need to be a member of that team. Example: `add private bug to Moon team SRE : Logs should not be accessible from outside VPN` (<https://github.com/MarioRuiz/slack-smart-bot/issues/64|#64> <https://github.com/MarioRuiz/slack-smart-bot/issues/67|#67>)
7
+ - It is possible to add a JIRA JQL to the team memos that will automatically create the memos from the JIRA issues (<https://github.com/MarioRuiz/slack-smart-bot/issues/68|#68>)
8
+ - `kill repl RUN_REPL_ID` Will kill a running repl previously executed with `run repl` command. (<https://github.com/MarioRuiz/slack-smart-bot/issues/69|#69>)
9
+ - Now you can add a GitHub url to the issues you want to add as memos for teams. (<https://github.com/MarioRuiz/slack-smart-bot/issues/71|#71>)
10
+ - It is possible to add the status of a memo on teams feature. (<https://github.com/MarioRuiz/slack-smart-bot/issues/72|#72>)
11
+ - Added 'Time off' (Vacation/Sick/Sick Child) management. The SmartBot will automatically set your status on the periods specified. It will be possible to see the 'Time off' plan for a specific team and period. (<https://github.com/MarioRuiz/slack-smart-bot/issues/73|#73>)
12
12
 
13
13
  *For Admin users*
14
- - When calling `respond` it can be supplied the argument `return_message: true` to get access to the posted message. `msg = respond('my message', return_message: true)` (<https://github.com/MarioRuiz/slack-smart-bot/issues/31|#31>)
15
- - New command `delete message URL` will delete the SmartBot message supplied. Only for Master Admins (<https://github.com/MarioRuiz/slack-smart-bot/issues/32|#32>).
16
- - `send message` accept also the url of the message to respond on a thread. Only for Master Admins (<https://github.com/MarioRuiz/slack-smart-bot/issues/39|#39>).
17
- - `react to` accept also the url of the message. Only for Master Admins (<https://github.com/MarioRuiz/slack-smart-bot/issues/40|#40>).
18
- - You can add, remove and list admins of any channel by using: `add admin @user`, `remove admin @user` and `see admins`. You need to be the creator of the channel, a Master admin or an admin (<https://github.com/MarioRuiz/slack-smart-bot/issues/42|#42>).
19
- - `see access COMMAND_ID`, `allow access COMMAND_ID`, `allow access COMMAND_ID @user1 @user99` and `deny access COMMAND_ID`: Allows us to decide which commands are accessible on every channel. (<https://github.com/MarioRuiz/slack-smart-bot/issues/44|#44>).
20
-
14
+ - Bot Stats is now saving the time_zone of the user (<https://github.com/MarioRuiz/slack-smart-bot/issues/66|#66>)
15
+ - Announcements won't be published if no activity on channel. (<https://github.com/MarioRuiz/slack-smart-bot/issues/74|#74)
21
16
  ------------------------------
22
17
 
23
- *Previous*: <https://github.com/MarioRuiz/slack-smart-bot/blob/dd23939f93ee95aca3c04d33cd1ce197d6efbd37/whats_new.txt|1.10.0>
18
+ *Previous*: <https://github.com/MarioRuiz/slack-smart-bot/blob/b1a368c3342094e886f53d96dc4d12ecd81ab04b/whats_new.txt|1.11.0>
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: 1.11.0
4
+ version: 1.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mario Ruiz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-09 00:00:00.000000000 Z
11
+ date: 2022-09-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slack-ruby-client
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.17'
19
+ version: '1'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.17.0
22
+ version: 1.1.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '0.17'
29
+ version: '1'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.17.0
32
+ version: 1.1.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: nice_http
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -165,15 +165,19 @@ files:
165
165
  - lib/slack/smart-bot/comm/send_file.rb
166
166
  - lib/slack/smart-bot/comm/send_msg_channel.rb
167
167
  - lib/slack/smart-bot/comm/send_msg_user.rb
168
+ - lib/slack/smart-bot/comm/set_status.rb
168
169
  - lib/slack/smart-bot/comm/unreact.rb
169
170
  - lib/slack/smart-bot/commands.rb
170
171
  - lib/slack/smart-bot/commands/general/add_admin.rb
171
172
  - lib/slack/smart-bot/commands/general/add_announcement.rb
173
+ - lib/slack/smart-bot/commands/general/add_memo_team.rb
172
174
  - lib/slack/smart-bot/commands/general/add_team.rb
175
+ - lib/slack/smart-bot/commands/general/add_vacation.rb
173
176
  - lib/slack/smart-bot/commands/general/allow_access.rb
174
177
  - lib/slack/smart-bot/commands/general/bot_help.rb
175
178
  - lib/slack/smart-bot/commands/general/bye_bot.rb
176
179
  - lib/slack/smart-bot/commands/general/delete_announcement.rb
180
+ - lib/slack/smart-bot/commands/general/delete_memo_team.rb
177
181
  - lib/slack/smart-bot/commands/general/delete_share.rb
178
182
  - lib/slack/smart-bot/commands/general/delete_team.rb
179
183
  - lib/slack/smart-bot/commands/general/deny_access.rb
@@ -181,6 +185,7 @@ files:
181
185
  - lib/slack/smart-bot/commands/general/ping_team.rb
182
186
  - lib/slack/smart-bot/commands/general/poster.rb
183
187
  - lib/slack/smart-bot/commands/general/remove_admin.rb
188
+ - lib/slack/smart-bot/commands/general/remove_vacation.rb
184
189
  - lib/slack/smart-bot/commands/general/see_access.rb
185
190
  - lib/slack/smart-bot/commands/general/see_admins.rb
186
191
  - lib/slack/smart-bot/commands/general/see_announcements.rb
@@ -189,6 +194,9 @@ files:
189
194
  - lib/slack/smart-bot/commands/general/see_shares.rb
190
195
  - lib/slack/smart-bot/commands/general/see_statuses.rb
191
196
  - lib/slack/smart-bot/commands/general/see_teams.rb
197
+ - lib/slack/smart-bot/commands/general/see_vacations.rb
198
+ - lib/slack/smart-bot/commands/general/see_vacations_team.rb
199
+ - lib/slack/smart-bot/commands/general/set_memo_status.rb
192
200
  - lib/slack/smart-bot/commands/general/share_messages.rb
193
201
  - lib/slack/smart-bot/commands/general/update_team.rb
194
202
  - lib/slack/smart-bot/commands/general_bot_commands.rb
@@ -218,6 +226,7 @@ files:
218
226
  - lib/slack/smart-bot/commands/on_bot/general/use_rules.rb
219
227
  - lib/slack/smart-bot/commands/on_bot/general/whats_new.rb
220
228
  - lib/slack/smart-bot/commands/on_bot/get_repl.rb
229
+ - lib/slack/smart-bot/commands/on_bot/kill_repl.rb
221
230
  - lib/slack/smart-bot/commands/on_bot/repl.rb
222
231
  - lib/slack/smart-bot/commands/on_bot/ruby_code.rb
223
232
  - lib/slack/smart-bot/commands/on_bot/run_repl.rb
@@ -240,6 +249,7 @@ files:
240
249
  - lib/slack/smart-bot/utils/answer.rb
241
250
  - lib/slack/smart-bot/utils/answer_delete.rb
242
251
  - lib/slack/smart-bot/utils/build_help.rb
252
+ - lib/slack/smart-bot/utils/check_vacations.rb
243
253
  - lib/slack/smart-bot/utils/create_routine_thread.rb
244
254
  - lib/slack/smart-bot/utils/get_access_channels.rb
245
255
  - lib/slack/smart-bot/utils/get_admins_channels.rb
@@ -252,6 +262,7 @@ files:
252
262
  - lib/slack/smart-bot/utils/get_rules_imported.rb
253
263
  - lib/slack/smart-bot/utils/get_shares.rb
254
264
  - lib/slack/smart-bot/utils/get_teams.rb
265
+ - lib/slack/smart-bot/utils/get_vacations.rb
255
266
  - lib/slack/smart-bot/utils/has_access.rb
256
267
  - lib/slack/smart-bot/utils/is_admin.rb
257
268
  - lib/slack/smart-bot/utils/remove_hash_keys.rb
@@ -265,6 +276,7 @@ files:
265
276
  - lib/slack/smart-bot/utils/update_rules_imported.rb
266
277
  - lib/slack/smart-bot/utils/update_shortcuts_file.rb
267
278
  - lib/slack/smart-bot/utils/update_teams.rb
279
+ - lib/slack/smart-bot/utils/update_vacations.rb
268
280
  - whats_new.txt
269
281
  homepage: https://github.com/MarioRuiz/slack-smart-bot
270
282
  licenses:
@@ -278,7 +290,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
278
290
  requirements:
279
291
  - - ">="
280
292
  - !ruby/object:Gem::Version
281
- version: '2.6'
293
+ version: '2.7'
282
294
  required_rubygems_version: !ruby/object:Gem::Requirement
283
295
  requirements:
284
296
  - - ">="