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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 36ca224f2a96256ac106440459efac5a513b0ebabac65494d6a070e1faa5abf3
4
- data.tar.gz: 3aac3bb4b43dc458876c8bd12157bd9e428eb5d684d69861dc174898b8c5cf9e
3
+ metadata.gz: 5596e8869ae4c53cddb593dadcbde5aa6dc5e4a024d7301e7d2d45e1b03882d9
4
+ data.tar.gz: 2f4e295bd3881c7f2172b1abd39e40163f3cd244a8ee9f250b8c2e606e8137c5
5
5
  SHA512:
6
- metadata.gz: f99650a5ee15bab2a367dbc3de6be5cf00e7e01cd083a0a6f5cc425e51893609dba819f31191da74ace36e03a64b13fa6dae346ab24bddbbfbb0883bad5eccc9
7
- data.tar.gz: 8f6904c2f655f09a0bdad49e4fe6da578524ccd8b82c0a00c4574398d01e4c7c109aeeb62868469471baf17a26c7778170e707e7ab87f2fe9065df7614db0b93
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
- type = $1
605
- from = $2.downcase
606
- to = $3
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
- if (from_user.id != user and (config.masters.include?(from_user.name) or @master_admin_users_id.include?(from_user.id)) and (typem==:on_dm or dest[0]=='D'))
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
- !@master_admin_users_id.include?(row[:user_id]))
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
- unless job_title == ''
326
- job_title_users[job_title] ||= 0
327
- job_title_users[job_title] += 1
328
- users_by_job_title[job_title] ||= []
329
- users_by_job_title[job_title] << rows.user_name[idx]
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
- unless rows[i].values[12] == ''
336
- job_title_users[rows[i].values[12]] ||= 0
337
- job_title_users[rows[i].values[12]] += 1
338
- users_by_job_title[rows[i].values[12]] ||= []
339
- users_by_job_title[rows[i].values[12]] << rows.user_name[i]
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
- job_title_users[user_info.profile.title] ||= 0
345
- job_title_users[user_info.profile.title] += 1
346
- users_by_job_title[user_info.profile.title] ||= []
347
- users_by_job_title[user_info.profile.title] << rows.user_name[i]
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+)\|.+>\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<#(\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+)\|.+>\s*)?(\s.+)?\s*\z/im,
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+)\|.+>\s*)?(\s.+)?\s*\z/im,
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
@@ -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.5* Released 2022-Nov-01
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.5
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-03 00:00:00.000000000 Z
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.1.6
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