slack-smart-bot 1.12.5 → 1.12.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/slack/smart-bot/commands/general_bot_commands.rb +13 -8
- data/lib/slack/smart-bot/commands/on_bot/general/bot_stats.rb +31 -19
- data/lib/slack/smart-bot/process.rb +44 -8
- data/lib/slack/smart-bot/process_first.rb +1 -2
- data/lib/slack/smart-bot/treat_message.rb +2 -0
- data/lib/slack-smart-bot.rb +2 -0
- data/whats_new.txt +4 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5596e8869ae4c53cddb593dadcbde5aa6dc5e4a024d7301e7d2d45e1b03882d9
|
4
|
+
data.tar.gz: 2f4e295bd3881c7f2172b1abd39e40163f3cd244a8ee9f250b8c2e606e8137c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24c6dc230c11db7075dee20b7a9f04202417ae443b3abe6b290668a965ef8778b3d211deb8c660bb869dbf54c7e2912b98a8e6b3b86722e8e88e5a832556596d
|
7
|
+
data.tar.gz: b075c60bbc5b632374328c8b8c65a1857454cba5b92ef4d8d0e168a4aefdc0b25e6ba5afdc04c6014c53cf5b35d24dceba5015df1c28491f8fd2d4a5604f56ef
|
data/README.md
CHANGED
@@ -307,7 +307,7 @@ To display a general message after every command use: `set general message MESSA
|
|
307
307
|
|
308
308
|
To close the Master Bot, run on MASTER CHANNEL: **_`exit bot`_**
|
309
309
|
|
310
|
-
If you are a Master Admin on a Direct Message with the Smart Bot you can call the **_`bot stats`_** and get use stats of the users. You need to set to `true` the `stats` settings when initializing the Smart Bot. As a normal user you will get your own stats when calling **_`bot stats`_**. Take a look at `bot help bot stats` for more info. Also you can call **_`leaderboard`_** to get some useful information about the use of the SmartBot.
|
310
|
+
If you are a Master Admin on a Direct Message with the Smart Bot you can call the **_`bot stats`_** and get use stats of the users. You need to set to `true` the `stats` settings when initializing the Smart Bot. As a normal user you will get your own stats when calling **_`bot stats`_**. Take a look at `bot help bot stats` for more info. If you are a member of #smartbot-stats you can use the bot stats command on that channel. You can set a different channel by supplying it on the config key stats_channel. Also you can call **_`leaderboard`_** to get some useful information about the use of the SmartBot.
|
311
311
|
|
312
312
|
You can also get the bot logs of the bot channel you are using by calling `get bot logs`. You need to be a Master Admin user on a DM with the Smart Bot.
|
313
313
|
|
@@ -582,6 +582,8 @@ def general_bot_commands(user, command, dest, files = [])
|
|
582
582
|
# help: `add sick from YYYY/MM/DD to YYYY/MM/DD`
|
583
583
|
# help: `add sick YYYY/MM/DD`
|
584
584
|
# help: `add sick child YYYY/MM/DD`
|
585
|
+
# help: `I'm sick today`
|
586
|
+
# help: `I'm on vacation today`
|
585
587
|
# help: It will add the supplied period to your plan.
|
586
588
|
# help: Instead of YYYY/MM/DD you can use 'today' or 'tomorrow' or 'next week'
|
587
589
|
# help: To see your plan call `see my time off`
|
@@ -592,18 +594,21 @@ def general_bot_commands(user, command, dest, files = [])
|
|
592
594
|
# help: _add vacation from 2022/10/01 to 2022/10/22_
|
593
595
|
# help: _add sick 2022/08/22_
|
594
596
|
# help: _add vacation tomorrow_
|
597
|
+
# help: _I'll be on vacation next week_
|
595
598
|
# help: _add sick baby today_
|
596
599
|
# help: <https://github.com/MarioRuiz/slack-smart-bot#time-off-management|more info>
|
597
600
|
# help: command_id: :add_vacation
|
598
601
|
# help:
|
599
|
-
when /\A\s*add\s+(sick|vacation|sick\s+baby|sick\s+child)\s+from\s+(\d\d\d\d\/\d\d\/\d\d)\s+to\s+(\d\d\d\d\/\d\d\/\d\d)\s*\z/i,
|
600
|
-
/\A\s*add\s+(sick|vacation|sick\s+baby|sick\s+child)\s+from\s+(\d\d\d\d-\d\d-\d\d)\s+to\s+(\d\d\d\d-\d\d-\d\d)\s*\z/i,
|
601
|
-
/\A\s*add\s+(sick|vacation|sick\s+baby|sick\s+child)\s+(\d\d\d\d-\d\d-\d\d)()\s*\z/i,
|
602
|
-
/\A\s*add\s+(sick|vacation|sick\s+baby|sick\s+child)\s+(\d\d\d\d\/\d\d\/\d\d)()\s*\z/i,
|
603
|
-
/\A\s*add\s+(sick|vacation|sick\s+baby|sick\s+child)\s+(today|tomorrow|next\sweek)()\s*\z/i
|
604
|
-
|
605
|
-
|
606
|
-
|
602
|
+
when /\A\s*(add)\s+(sick|vacation|sick\s+baby|sick\s+child)\s+from\s+(\d\d\d\d\/\d\d\/\d\d)\s+to\s+(\d\d\d\d\/\d\d\/\d\d)\s*\z/i,
|
603
|
+
/\A\s*(add)\s+(sick|vacation|sick\s+baby|sick\s+child)\s+from\s+(\d\d\d\d-\d\d-\d\d)\s+to\s+(\d\d\d\d-\d\d-\d\d)\s*\z/i,
|
604
|
+
/\A\s*(add)\s+(sick|vacation|sick\s+baby|sick\s+child)\s+(\d\d\d\d-\d\d-\d\d)()\s*\z/i,
|
605
|
+
/\A\s*(add)\s+(sick|vacation|sick\s+baby|sick\s+child)\s+(\d\d\d\d\/\d\d\/\d\d)()\s*\z/i,
|
606
|
+
/\A\s*(add)\s+(sick|vacation|sick\s+baby|sick\s+child)\s+(today|tomorrow|next\sweek)()\s*\z/i,
|
607
|
+
/\A\s*(I'm|I\s+am|I'll\s+be|I\s+will\s+be)\s+(sick|on\s+vacation)\s+(today|tomorrow|next\sweek)()\s*\z/i
|
608
|
+
type = $2
|
609
|
+
from = $3.downcase
|
610
|
+
to = $4
|
611
|
+
type = 'vacation' if type.match?(/vacation/)
|
607
612
|
add_vacation(user, type, from, to)
|
608
613
|
|
609
614
|
# help: ----------------------------------------------
|
@@ -16,11 +16,16 @@ class SlackSmartBot
|
|
16
16
|
# help: `bot stats members #CHANNEL`
|
17
17
|
# help: `bot stats exclude members #CHANNEL`
|
18
18
|
# help: `bot stats today`
|
19
|
+
# help: `bot stats yesterday`
|
20
|
+
# help: `bot stats last month`
|
21
|
+
# help: `bot stats this month`
|
22
|
+
# help: `bot stats last week`
|
23
|
+
# help: `bot stats this week`
|
19
24
|
# help: `bot stats exclude COMMAND_ID`
|
20
25
|
# help: `bot stats monthly`
|
21
26
|
# help: `bot stats alldata`
|
22
27
|
# help: To see the bot stats
|
23
|
-
# helpmaster: You can use this command only if you are a Master admin user and if you are in a private conversation with the bot
|
28
|
+
# helpmaster: You can use this command only if you are a Master admin user and if you are in a private conversation with the bot, or you are on the Smartbot-stats channel
|
24
29
|
# helpmaster: You need to set stats to true to generate the stats when running the bot instance.
|
25
30
|
# help: members #CHANNEL will return stats for only members of the channel supplied
|
26
31
|
# help: exclude members #CHANNEL will return stats for only members that are not members of the channel supplied
|
@@ -44,7 +49,15 @@ class SlackSmartBot
|
|
44
49
|
message = ["You need to set stats to true to generate the stats when running the bot instance."]
|
45
50
|
end
|
46
51
|
save_stats(__method__)
|
47
|
-
|
52
|
+
get_channels_name_and_id() unless @channels_name.keys.include?(dest)
|
53
|
+
master_admin_users_id = @master_admin_users_id.dup
|
54
|
+
if dest == @channels_id[config.stats_channel]
|
55
|
+
#master_admin_users_id << user
|
56
|
+
user = '' # for the case we are on the stats channel
|
57
|
+
end
|
58
|
+
if (from_user.id != user and
|
59
|
+
(config.masters.include?(from_user.name) or master_admin_users_id.include?(from_user.id) or dest == @channels_id[config.stats_channel]) and #Jal
|
60
|
+
(typem==:on_dm or dest[0]=='D' or dest == @channels_id[config.stats_channel] ))
|
48
61
|
on_dm_master = true #master admin user
|
49
62
|
else
|
50
63
|
on_dm_master = false
|
@@ -164,7 +177,7 @@ class SlackSmartBot
|
|
164
177
|
end
|
165
178
|
if !exclude_masters or (exclude_masters and !master_admins.include?(row[:user_name]) and
|
166
179
|
!master_admins.include?(row[:user_id]) and
|
167
|
-
|
180
|
+
!master_admin_users_id.include?(row[:user_id]))
|
168
181
|
if !exclude_routines or (exclude_routines and !row[:user_name].match?(/^routine\//) )
|
169
182
|
if exclude_command == '' or (exclude_command!='' and row[:command]!=exclude_command)
|
170
183
|
if st_command == '' or (st_command != '' and row[:command] == st_command)
|
@@ -322,29 +335,28 @@ class SlackSmartBot
|
|
322
335
|
end
|
323
336
|
if rows[0].key?(:job_title) #then save_stats is saving the job title already
|
324
337
|
rows.job_title.each_with_index do |job_title, idx|
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
end
|
338
|
+
job_title = job_title.to_s.split.map(&:capitalize).join(' ')
|
339
|
+
job_title_users[job_title] ||= 0
|
340
|
+
job_title_users[job_title] += 1
|
341
|
+
users_by_job_title[job_title] ||= []
|
342
|
+
users_by_job_title[job_title] << rows.user_name[idx]
|
331
343
|
end
|
332
344
|
else
|
333
345
|
rows.user_id.each_with_index do |usr, i|
|
334
346
|
if rows[i].values.size >= 13 #then save_stats is saving the job_title already but not all the data
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
end
|
347
|
+
job_title = rows[i].values[12].to_s.split.map(&:capitalize).join(' ')
|
348
|
+
job_title_users[job_title] ||= 0
|
349
|
+
job_title_users[job_title] += 1
|
350
|
+
users_by_job_title[job_title] ||= []
|
351
|
+
users_by_job_title[job_title] << rows.user_name[i]
|
341
352
|
else
|
342
353
|
user_info = @users.select { |u| u.id == usr or (u.key?(:enterprise_user) and u.enterprise_user.id == usr) }[-1]
|
343
354
|
unless user_info.nil? or user_info.is_app_user or user_info.is_bot
|
344
|
-
|
345
|
-
job_title_users[
|
346
|
-
|
347
|
-
users_by_job_title[
|
355
|
+
job_title = user_info.profile.title.split.map(&:capitalize).join(' ')
|
356
|
+
job_title_users[job_title] ||= 0
|
357
|
+
job_title_users[job_title] += 1
|
358
|
+
users_by_job_title[job_title] ||= []
|
359
|
+
users_by_job_title[job_title] << rows.user_name[i]
|
348
360
|
end
|
349
361
|
end
|
350
362
|
end
|
@@ -37,7 +37,8 @@ class SlackSmartBot
|
|
37
37
|
end
|
38
38
|
if !config.on_maintenance or (config.on_maintenance and command.match?(/\A(set|turn)\s+maintenance\s+off\s*\z/))
|
39
39
|
#todo: check :on_pg in this case
|
40
|
-
if typem == :on_master or typem == :on_bot or typem == :on_pg or typem == :on_dm
|
40
|
+
if typem == :on_master or typem == :on_bot or typem == :on_pg or typem == :on_dm or
|
41
|
+
(command.match?(/\A\s*bot\s+stats\s*(.*)\s*$/i) and dest==@channels_id[config.stats_channel])
|
41
42
|
|
42
43
|
case command
|
43
44
|
|
@@ -102,14 +103,11 @@ class SlackSmartBot
|
|
102
103
|
when /\A\s*(where\s+is|which\s+channels|where\s+is\s+a\s+member)\s+(#{@salutations.join("|")})\??\s*$/i
|
103
104
|
where_smartbot(user)
|
104
105
|
when /\A\s*(add|create)\s+(silent\s+)?(bgroutine|routine)\s+([\w\.]+)\s+(every)\s+(\d+)\s*(days|hours|minutes|seconds|mins|min|secs|sec|d|h|m|s)\s*(\s#(\w+)\s*)(\s.+)?\s*\z/im,
|
105
|
-
/\A\s*(add|create)\s+(silent\s+)?(bgroutine|routine)\s+([\w\.]+)\s+(every)\s+(\d+)\s*(days|hours|minutes|seconds|mins|min|secs|sec|d|h|m|s)\s*(\s<#(C\w+)
|
106
|
-
/\A\s*(add|create)\s+(silent\s+)?(bgroutine|routine)\s+([\w\.]+)\s+(every)\s+(\d+)\s*(days|hours|minutes|seconds|mins|min|secs|sec|d|h|m|s)\s*(\s<#(\w+)\|>\s*)?(\s.+)?\s*\z/im,
|
106
|
+
/\A\s*(add|create)\s+(silent\s+)?(bgroutine|routine)\s+([\w\.]+)\s+(every)\s+(\d+)\s*(days|hours|minutes|seconds|mins|min|secs|sec|d|h|m|s)\s*(\s<#(C\w+)\|.*>\s*)?(\s.+)?\s*\z/im,
|
107
107
|
/\A\s*(add|create)\s+(silent\s+)?(bgroutine|routine)\s+([\w\.]+)\s+on\s+(monday|tuesday|wednesday|thursday|friday|saturday|sunday|weekend|weekday)s?\s+at\s+(\d+:\d+:?\d+?)\s*()(\s#(\w+)\s*)(\s.+)?\s*\z/im,
|
108
|
-
/\A\s*(add|create)\s+(silent\s+)?(bgroutine|routine)\s+([\w\.]+)\s+on\s+(monday|tuesday|wednesday|thursday|friday|saturday|sunday|weekend|weekday)s?\s+at\s+(\d+:\d+:?\d+?)\s*()(\s<#(C\w+)
|
109
|
-
/\A\s*(add|create)\s+(silent\s+)?(bgroutine|routine)\s+([\w\.]+)\s+on\s+(monday|tuesday|wednesday|thursday|friday|saturday|sunday|weekend|weekday)s?\s+at\s+(\d+:\d+:?\d+?)\s*()(\s<#(\w+)\|>\s*)?(\s.+)?\s*\z/im,
|
108
|
+
/\A\s*(add|create)\s+(silent\s+)?(bgroutine|routine)\s+([\w\.]+)\s+on\s+(monday|tuesday|wednesday|thursday|friday|saturday|sunday|weekend|weekday)s?\s+at\s+(\d+:\d+:?\d+?)\s*()(\s<#(C\w+)\|.*>\s*)?(\s.+)?\s*\z/im,
|
110
109
|
/\A\s*(add|create)\s+(silent\s+)?(bgroutine|routine)\s+([\w\.]+)\s+(at)\s+(\d+:\d+:?\d+?)\s*()(\s#(\w+)\s*)(\s.+)?\s*\z/im,
|
111
|
-
/\A\s*(add|create)\s+(silent\s+)?(bgroutine|routine)\s+([\w\.]+)\s+(at)\s+(\d+:\d+:?\d+?)\s*()(\s<#(C\w+)
|
112
|
-
/\A\s*(add|create)\s+(silent\s+)?(bgroutine|routine)\s+([\w\.]+)\s+(at)\s+(\d+:\d+:?\d+?)\s*()(\s<#(\w+)\|>\s*)?(\s.+)?\s*\z/im
|
110
|
+
/\A\s*(add|create)\s+(silent\s+)?(bgroutine|routine)\s+([\w\.]+)\s+(at)\s+(\d+:\d+:?\d+?)\s*()(\s<#(C\w+)\|.*>\s*)?(\s.+)?\s*\z/im
|
113
111
|
silent = $2.to_s!=''
|
114
112
|
routine_type = $3.downcase
|
115
113
|
name = $4.downcase
|
@@ -272,6 +270,12 @@ class SlackSmartBot
|
|
272
270
|
opts.gsub!(/exclude\s+members\s+<#\w+\|.*>/,'')
|
273
271
|
members_channel = opts.scan(/members\s+<#(\w+)\|.*>/i).join #todo: add test
|
274
272
|
opts.gsub!(/members\s+<#\w+\|.*>/,'')
|
273
|
+
this_month = opts.match?(/this\s+month/i)
|
274
|
+
last_month = opts.match?(/last\s+month/i)
|
275
|
+
this_year = opts.match?(/this\s+year/i)
|
276
|
+
last_year = opts.match?(/last\s+year/i)
|
277
|
+
this_week = opts.match?(/this\s+week/i)
|
278
|
+
last_week = opts.match?(/last\s+week/i)
|
275
279
|
all_opts = opts.downcase.split(' ')
|
276
280
|
all_data = all_opts.include?('alldata')
|
277
281
|
st_channel = opts.scan(/<#(\w+)\|.*>/).join
|
@@ -296,14 +300,46 @@ class SlackSmartBot
|
|
296
300
|
monthly = false
|
297
301
|
if all_opts.include?('today')
|
298
302
|
st_from = st_to = "#{Time.now.strftime("%Y-%m-%d")}"
|
303
|
+
elsif all_opts.include?('yesterday')
|
304
|
+
st_from = st_to = "#{(Time.now-86400).strftime("%Y-%m-%d")}"
|
299
305
|
elsif all_opts.include?('monthly')
|
300
306
|
monthly = true
|
301
307
|
end
|
308
|
+
if this_month
|
309
|
+
st_from = "#{Date.today.strftime("%Y-%m-01")}"
|
310
|
+
st_to = "#{Date.today.strftime("%Y-%m-%d")}"
|
311
|
+
elsif last_month
|
312
|
+
date = Date.today<<1
|
313
|
+
st_from = "#{date.strftime("%Y-%m-01")}"
|
314
|
+
st_to = "#{(Date.new(date.year, date.month, -1)).strftime("%Y-%m-%d")}"
|
315
|
+
elsif this_year
|
316
|
+
st_from = "#{Date.today.strftime("%Y-01-01")}"
|
317
|
+
st_to = "#{Date.today.strftime("%Y-%m-%d")}"
|
318
|
+
elsif last_year
|
319
|
+
date = Date.today.prev_year
|
320
|
+
st_from = "#{date.strftime("%Y-01-01")}"
|
321
|
+
st_to = "#{(Date.new(date.year, 12, 31)).strftime("%Y-%m-%d")}"
|
322
|
+
elsif this_week
|
323
|
+
date = Date.today
|
324
|
+
wday = date.wday
|
325
|
+
wday = 7 if wday==0
|
326
|
+
wday-=1
|
327
|
+
st_from = "#{(date-wday).strftime("%Y-%m-%d")}"
|
328
|
+
st_to = "#{date.strftime("%Y-%m-%d")}"
|
329
|
+
elsif last_week
|
330
|
+
date = Date.today
|
331
|
+
wday = date.wday
|
332
|
+
wday = 7 if wday==0
|
333
|
+
wday-=1
|
334
|
+
st_from = "#{(date-wday-7).strftime("%Y-%m-%d")}"
|
335
|
+
st_to = "#{(date-wday-1).strftime("%Y-%m-%d")}"
|
336
|
+
end
|
337
|
+
|
302
338
|
exclude_command = opts.scan(/exclude\s+([^\s]+)/i).join
|
303
339
|
unless @master_admin_users_id.include?(user.id)
|
304
340
|
st_user = user.id
|
305
341
|
end
|
306
|
-
if (typem == :on_master or typem == :on_bot) and dest[0]!='D' #routine bot stats to be published on DM
|
342
|
+
if (typem == :on_master or typem == :on_bot) and dest[0]!='D' and dest!=@channels_id[config.stats_channel] #routine bot stats to be published on DM
|
307
343
|
st_channel = dchannel
|
308
344
|
end
|
309
345
|
bot_stats(dest, user, typem, st_channel, st_from, st_to, st_user, st_command, exclude_masters, exclude_routines, exclude_command, monthly, all_data, members_channel, exclude_members_channel)
|
@@ -212,12 +212,11 @@ class SlackSmartBot
|
|
212
212
|
else
|
213
213
|
Thread.current[:using_channel] = ''
|
214
214
|
end
|
215
|
-
if typem == :on_pub or typem == :on_pg
|
215
|
+
if (typem == :on_pub or typem == :on_pg) and (!command.match?(/\A\s*bot\s+stats\s*(.*)\s*$/i) or dest!=@channels_id[config.stats_channel])
|
216
216
|
processed = false
|
217
217
|
else
|
218
218
|
processed = process(user, command, dest, dchannel, rules_file, typem, files, Thread.current[:thread_ts])
|
219
219
|
end
|
220
|
-
@logger.info "command: #{nick}> #{command}" if processed
|
221
220
|
on_demand = false
|
222
221
|
if command.match(/\A@?(#{config[:nick]}):*\s+(.+)/im) or
|
223
222
|
command.match(/\A()!!(.+)/im) or
|
@@ -250,6 +250,7 @@ class SlackSmartBot
|
|
250
250
|
command += " ruby" if command != "ruby"
|
251
251
|
command = "#{command} #{res.body.to_s.force_encoding("UTF-8")}"
|
252
252
|
end
|
253
|
+
|
253
254
|
if typem == :on_call
|
254
255
|
command = "!" + command unless command[0] == "!" or command.match?(/^\s*$/) or command[0] == "^"
|
255
256
|
|
@@ -283,6 +284,7 @@ class SlackSmartBot
|
|
283
284
|
elsif typem == :on_pub or typem == :on_pg
|
284
285
|
process_first(user_info, command, dest, channel_rules, typem, data.files, data.ts, data.thread_ts, data.routine, data.routine_name, data.routine_type, command_orig)
|
285
286
|
end
|
287
|
+
|
286
288
|
rescue Exception => stack
|
287
289
|
@logger.fatal stack
|
288
290
|
end
|
data/lib/slack-smart-bot.rb
CHANGED
@@ -47,6 +47,8 @@ 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
|
+
config[:stats_channel] = 'smartbot-stats' unless config.key?(:stats_channel)
|
51
|
+
|
50
52
|
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
53
|
config[:jira][:host] = "https://#{config[:jira][:host]}" unless config[:jira][:host] == '' or config[:jira][:host].match?(/^http/)
|
52
54
|
config[:github] = {token: '' } unless config.key?(:github) and config[:github].key?(:token)
|
data/whats_new.txt
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
*Version 1.12.
|
1
|
+
*Version 1.12.6* Released 2022-Nov-08
|
2
2
|
|
3
3
|
*For General users*
|
4
4
|
- `run repl` accepts local parameters and precode to be supplied (<https://github.com/MarioRuiz/slack-smart-bot/issues/60|#60>).
|
@@ -9,11 +9,14 @@
|
|
9
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
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
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
|
+
- More natural language for 'Time off' command: (<https://github.com/MarioRuiz/slack-smart-bot/issues/80|#80>)
|
12
13
|
|
13
14
|
*For Admin users*
|
14
15
|
- Bot Stats is now saving the time_zone of the user (<https://github.com/MarioRuiz/slack-smart-bot/issues/66|#66>)
|
15
16
|
- Announcements won't be published if no activity on channel. (<https://github.com/MarioRuiz/slack-smart-bot/issues/74|#74>)
|
16
17
|
- Bot Stats is now saving the job title of the user (<https://github.com/MarioRuiz/slack-smart-bot/issues/77|#77>)
|
18
|
+
- Any member of smartbot-stats channel can use the `bot stats` command on the channel (<https://github.com/MarioRuiz/slack-smart-bot/issues/78|#78>)
|
19
|
+
- Added options for `bot stats` command: today, yesterday, this week, last week, this year, last year (<https://github.com/MarioRuiz/slack-smart-bot/issues/79|#79>)
|
17
20
|
------------------------------
|
18
21
|
|
19
22
|
*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.12.
|
4
|
+
version: 1.12.6
|
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-
|
11
|
+
date: 2022-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: slack-ruby-client
|
@@ -297,7 +297,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
297
297
|
- !ruby/object:Gem::Version
|
298
298
|
version: '0'
|
299
299
|
requirements: []
|
300
|
-
rubygems_version: 3.
|
300
|
+
rubygems_version: 3.2.15
|
301
301
|
signing_key:
|
302
302
|
specification_version: 4
|
303
303
|
summary: Create a Slack bot that is smart and so easy to expand, create new bots on
|