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.
- checksums.yaml +4 -4
- data/README.md +44 -3
- data/lib/slack/smart-bot/comm/respond.rb +8 -2
- data/lib/slack/smart-bot/comm/set_status.rb +21 -0
- data/lib/slack/smart-bot/comm.rb +1 -0
- data/lib/slack/smart-bot/commands/general/add_memo_team.rb +117 -0
- data/lib/slack/smart-bot/commands/general/add_vacation.rb +51 -0
- data/lib/slack/smart-bot/commands/general/delete_memo_team.rb +69 -0
- data/lib/slack/smart-bot/commands/general/delete_team.rb +21 -1
- data/lib/slack/smart-bot/commands/general/remove_vacation.rb +27 -0
- data/lib/slack/smart-bot/commands/general/see_announcements.rb +1 -1
- data/lib/slack/smart-bot/commands/general/see_statuses.rb +1 -1
- data/lib/slack/smart-bot/commands/general/see_teams.rb +182 -32
- data/lib/slack/smart-bot/commands/general/see_vacations.rb +58 -0
- data/lib/slack/smart-bot/commands/general/see_vacations_team.rb +136 -0
- data/lib/slack/smart-bot/commands/general/set_memo_status.rb +58 -0
- data/lib/slack/smart-bot/commands/general/update_team.rb +22 -1
- data/lib/slack/smart-bot/commands/general_bot_commands.rb +172 -4
- data/lib/slack/smart-bot/commands/on_bot/general/bot_stats.rb +21 -5
- data/lib/slack/smart-bot/commands/on_bot/kill_repl.rb +32 -0
- data/lib/slack/smart-bot/commands/on_bot/repl.rb +1 -0
- data/lib/slack/smart-bot/commands/on_bot/run_repl.rb +113 -33
- data/lib/slack/smart-bot/commands/on_master/admin_master/publish_announcements.rb +3 -1
- data/lib/slack/smart-bot/commands.rb +8 -0
- data/lib/slack/smart-bot/process.rb +17 -7
- data/lib/slack/smart-bot/treat_message.rb +11 -1
- data/lib/slack/smart-bot/utils/check_vacations.rb +43 -0
- data/lib/slack/smart-bot/utils/get_admins_channels.rb +23 -3
- data/lib/slack/smart-bot/utils/get_command_ids.rb +1 -1
- data/lib/slack/smart-bot/utils/get_help.rb +4 -3
- data/lib/slack/smart-bot/utils/get_vacations.rb +22 -0
- data/lib/slack/smart-bot/utils/save_stats.rb +9 -2
- data/lib/slack/smart-bot/utils/save_status.rb +1 -1
- data/lib/slack/smart-bot/utils/update_admins_channels.rb +20 -3
- data/lib/slack/smart-bot/utils/update_vacations.rb +16 -0
- data/lib/slack/smart-bot/utils.rb +3 -0
- data/lib/slack-smart-bot.rb +22 -2
- data/whats_new.txt +12 -17
- 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
|
-
|
5
|
-
|
6
|
-
|
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"
|
@@ -1,8 +1,25 @@
|
|
1
1
|
class SlackSmartBot
|
2
2
|
|
3
3
|
def update_admins_channels()
|
4
|
-
|
5
|
-
|
6
|
-
|
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
|
|
data/lib/slack-smart-bot.rb
CHANGED
@@ -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.
|
1
|
+
*Version 1.12.0* Released 2022-Sep-28
|
2
2
|
|
3
3
|
*For General users*
|
4
|
-
- `run repl`
|
5
|
-
-
|
6
|
-
-
|
7
|
-
-
|
8
|
-
- `
|
9
|
-
-
|
10
|
-
-
|
11
|
-
-
|
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
|
-
-
|
15
|
-
-
|
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/
|
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.
|
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-
|
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: '
|
19
|
+
version: '1'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
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: '
|
29
|
+
version: '1'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
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.
|
293
|
+
version: '2.7'
|
282
294
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
283
295
|
requirements:
|
284
296
|
- - ">="
|