slack-smart-bot 1.14.0 → 1.14.2

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: fef5b10f464c14059a0c350c44e0bbb86c7c92db0f60a05516982c79e4764159
4
- data.tar.gz: 5fa566a1f3198e1021a5a1f3ae6759e0814eeafa394e7acad2117bf0661d2cfe
3
+ metadata.gz: bab245674cac897b9bc248f749a80b8d83c0654bb8abdaa1ca985211995df834
4
+ data.tar.gz: c22b08d76ee508e7f7a1f5a5a294722ff0cf10e5ddb7a88fdcfca2ac05489510
5
5
  SHA512:
6
- metadata.gz: 2a73bdd8c22589f205997f00723e15b791805430b4c614f33ea0abe32dee48fc5c6e9f8b7bd0709eb35376e133e40389c12e5efc7e0f5b8f871553cfe9f0b4f3
7
- data.tar.gz: a98455b32e704fb57a84c6df1df523f0967a8499bf1c61bbda079f951b9f4b854e65f02395f2b85743e93ef05eb9ac505a57f452af9b0399ea362982392ac9ab
6
+ metadata.gz: d89f157f6e1cc1ebe762eef538b427c33610d18aeb47a0383cf17e8a18c18f7498a523bef74b4a1b8e61b455e60407fe5169ecafb0810aec813011c1b4d63f6c
7
+ data.tar.gz: 3d3eeab66e48f7289bb9dc194e38f943d95a57447419f6db66afcdea22c24d23c1f6cc9a5b391290c60f35642520e88b6110fcb2a72efdcf4188a9900ceadc92
data/README.md CHANGED
@@ -231,28 +231,16 @@ To run a command on demand and add the response on a thread:
231
231
  **_`^THE_COMMAND`_**
232
232
  **_`!!THE_COMMAND`_**
233
233
 
234
- Examples run a command on demand:
235
- >**_Peter>_** `!ruby puts Time.now`
236
- >**_Smart-Bot>_** `2019-10-23 12:43:42 +0000`
234
+ Examples run a command on demand:
237
235
 
238
- >**_Peter>_** `@smart-bot echo Example`
239
- >**_Smart-Bot>_** `Example`
236
+ <img src="img/commands_on_demand.png" width="500">
240
237
 
241
- >**_Peter>_** `smart-bot see shortcuts`
242
- >**_Smart-Bot>_** `Available shortcuts for Peter:`
243
- >`Spanish account: ruby require 'iso/iban'; 10.times {puts ISO::IBAN.random('ES')}`
244
- >**_Peter>_** `!!echo Example`
245
- >. . . . . . . . .**_Smart-Bot>_** `Example`
246
- >**_Peter>_** `^echo Example`
247
- >. . . . . . . . .**_Smart-Bot>_** `Example`
248
238
 
249
239
  Also you can always call the Smart Bot from any channel, even from channels without a running Smart Bot. You can use the External Call on Demand: **_`@NAME_OF_BOT on #CHANNEL_NAME COMMAND`_**. In this case you will call the bot on #CHANNEL_NAME. You can supply more than one channel then all the bots will respond. In case you are in a private conversation with the Smart Bot (DM) then you can use directly: **_`#CHANNEL_NAME COMMAND`_** or **_`on #CHANNEL_NAME COMMAND`_**
250
240
 
251
- Examples:
252
- >**_Peter>_** `@smart-bot on #the_channel ruby puts Time.now`
253
- >**_Smart-Bot>_** `2019-10-23 12:43:42 +0000`
254
- >**_Peter>_** `@smart-bot on #the_channel ^ruby puts Time.now`
255
- >. . . . . . . . .**_Smart-Bot>_** `2019-10-23 12:43:42 +0000`
241
+ Examples:
242
+
243
+ <img src="img/commands_on_external_call.png" width="400">
256
244
 
257
245
  Examples on DM:
258
246
  >**_Peter>_** `#sales show report from India`
@@ -260,14 +248,8 @@ Examples on DM:
260
248
 
261
249
  If you want the Smart Bot just listen to part of the message you send, add the commands you want using '`' and start the line with '-!', '-!!' or '-^'
262
250
 
263
- Examples:
264
- >**_Peter>_** ``-!This text won't be treated but this one yes `ruby puts 'a'` and also this one `ruby puts 'b'` ``
265
- >**_Smart-Bot>_** `a`
266
- >**_Smart-Bot>_** `b`
267
-
268
- >**_Peter>_** ``-^This text won't be treated but this one yes `ruby puts 'a'` and also this one `ruby puts 'b'` ``
269
- >. . . . . . . . .**_Smart-Bot>_** `a`
270
- >. . . . . . . . .**_Smart-Bot>_** `b`
251
+ Examples:
252
+ <img src="img/commands_inline.png" width="500">
271
253
 
272
254
 
273
255
  All the commands specified on `./rules/general_commands.rb` will be accessible from any channel where the Smart Bot is present, without the necessity to call it with !, !!, ^ or on demand.
@@ -287,10 +269,9 @@ To show only the specific rules of the Smart Bot defined on the rules file: **_`
287
269
 
288
270
  Also you can call `suggest command` or `random command` and SmartBot will return the help content for a random command.
289
271
 
290
- Example:
291
- >**_Peter>_** `bot help echo`
292
- >**_Smart-Bot>_** `echo SOMETHING`
293
- `repeats SOMETHING`
272
+ Example:
273
+ <img src="img/command_bot_help_echo.png" width="250">
274
+
294
275
 
295
276
  When you call a command that is not recognized, you will get suggestions from the Smart Bot.
296
277
 
@@ -368,15 +349,17 @@ Also you can always call the Smart Bot from any channel, even from channels with
368
349
 
369
350
  You can run Ruby code by using the command: **_`ruby THE_CODE`_**.
370
351
 
371
- Example:
372
- >**_Peter>_** `!ruby require 'json'; res=[]; 20.times {res.push rand(100)}; my_json={result: res}; puts my_json.to_json`
373
- >**_Smart-Bot>_** `{"result":[63,66,35,83,44,40,72,25,59,73,75,54,56,91,19,6,68,1,25,3]}`
352
+ Example:
353
+ <img src="img/command_ruby.png" width="650">
354
+
374
355
 
375
356
  Also it is possible to attach a Ruby file and the Smart Bot will run and post the output. You need to select Ruby as file format. Or if you prefer it you can call the `ruby` command and on the same message supply a code block.
376
357
 
377
358
  #### REPL
378
359
  > for all users
379
360
 
361
+ [![SmartBot REPLs](https://img.youtube.com/vi/URMI3BdD7J8/0.jpg)](https://www.youtube.com/watch?v=URMI3BdD7J8)
362
+
380
363
  Easily starts a REPL session so you will be able to create a script directly from the slack conversation. You will be able to share the REPL so they can run it or see the content.
381
364
 
382
365
  It Will run all we write as a ruby command and will keep the session values until we finish the session sending `quit`, `exit` or `bye`
@@ -406,28 +389,16 @@ Examples:
406
389
  _repl_
407
390
 
408
391
 
409
- Running Example:
410
- >**_Peter>_** `!repl Create10RandomUsers: "This is just an example"`
411
- >**_Smart-Bot>_** `Session name: *Create10RandomUsers*`
412
- >**_Peter>_** `http = NiceHttp.new("https://reqres.in/")`
413
- >**_Smart-Bot>_** `#<NiceHttp:0x00007fc6e216e328 @host="reqres.in", @port=443...>`
414
- >**_Peter>_** `request ||= { path: '/api/users' }`
415
- >**_Smart-Bot>_** `{ :path => "/api/users" }`
416
- >**_Peter>_** `request.data = { name: '1-10:L', job: 'leader|worker' }`
417
- >**_Smart-Bot>_** `{ :name => "1-10:L", :job => "leader|worker" }`
418
- >**_Peter>_** `request.data.generate`
419
- >**_Smart-Bot>_** `{ :name => "kLam", :job => "leader" }`
420
- >**_Peter>_** `10.times { http.post(request.generate) } `
421
- >**_Smart-Bot>_** `10`
422
- >**_Peter>_** `puts "10 Random Users Created"`
423
- >**_Smart-Bot>_** `10 Random Users Created`
424
- >**_Peter>_** `quit`
425
- >**_Smart-Bot>_** `REPL session finished: Create10RandomUsers`
426
-
427
-
428
- >**_Peter>_** `run repl Create10RandomUsers`
429
- >**_Smart-Bot>_** `Running REPL Create10RandomUsers`
430
- >**_Smart-Bot>_** `Create10RandomUsers: 10 Random Users Created`
392
+ Running Example:
393
+ <img src="img/command_repl1.png" width="650">
394
+
395
+ <img src="img/command_repl2.png" width="650">
396
+
397
+
398
+ Runnning on demand the repl we created:
399
+
400
+ <img src="img/command_run_repl.png" width="400">
401
+
431
402
 
432
403
  You can run repls and supply parameters to the repl that will be executed on the same session just before the repl. [More info](https://github.com/MarioRuiz/slack-smart-bot/issues/60)
433
404
  Example:
@@ -456,13 +427,11 @@ If you have for example a rule like this: **_`run tests on customers android app
456
427
  From that moment you will be able to run the command: **_`run tca`_**
457
428
 
458
429
  That shortcut will be available for you, in case you want to make it available for everybody on the channel:
459
- Example:
460
- >**_Peter>_** `!add shortcut for all spanish bank account: ruby require 'iso/iban'; 3.times {puts ISO::IBAN.random('ES')}`
461
- >**_Smart-Bot>_** `shortcut added`
462
- >**_John>_** `!spanish bank account`
463
- >**_Smart-Bot>_** `ES4664553191352006861448`
464
- `ES4799209592433480943244`
465
- `ES8888795057132445752702`
430
+
431
+ Example:
432
+
433
+ <img src="img/command_add_sc.png" width="650">
434
+
466
435
 
467
436
  In case you want to use a shortcut as a inline shortcut inside a command you can do it by adding a $:
468
437
  Example:
@@ -491,7 +460,9 @@ Examples:
491
460
  >**_Peter>_** `add announcement Party will start at 20:00 :tada:`
492
461
  >**_Peter>_** `add :heavy_exclamation_mark: message Pay attention all DB are on maintenance until 20:00 GMT`
493
462
 
494
- To see the announcements of the channel: **_`see announcements`_**, **_`see COLOR announcements`_**, **_`see EMOJI announcements`_** and to delete a particular announcement: **_`delete announcement ID`_**
463
+ To see the announcements of the channel: **_`see announcements`_**, **_`see COLOR announcements`_**, **_`see EMOJI announcements`_** and to delete a particular announcement: **_`delete announcement ID`_**
464
+
465
+ <img src="img/command_see_announcements.png" width="650">
495
466
 
496
467
  If you are a master admin and you are on master channel then you can call **_`publish announcements`_** that will publish the announcements on all channels. The messages stored on a DM won't be published. This is very convenient to be called from a *Routine* for example every weekday at 09:00.
497
468
 
@@ -521,7 +492,9 @@ Examples:
521
492
  >**_Peter>_** `who is not on vacation?`
522
493
  >**_Peter>_** `who is on vacation? #SalesChannel`
523
494
  >**_Peter>_** `who is on :working-from-home:`
524
- >**_Peter>_** `who is available?`
495
+ >**_Peter>_** `who is available?`
496
+
497
+ <img src="img/command_see_statuses.png" width="400">
525
498
 
526
499
  ### Routines
527
500
  > for admins
@@ -556,7 +529,7 @@ Other routine commands:
556
529
  ### Loops
557
530
  > for all users
558
531
 
559
- You can run any command or rule on a loop by using:
532
+ You can run *any command* or rule on a loop by using:
560
533
  **_`for NUMBER times every NUMBER minutes COMMAND`_**
561
534
  **_`for NUMBER times every NUMBER seconds COMMAND`_**
562
535
  Maximum number of times to be used: 24. Minimum every 10 seconds. Maximum every 60 minutes.
@@ -569,6 +542,8 @@ Examples:
569
542
  >**_`quit loop 1`_**
570
543
  >**_`stop iterator 12`_**
571
544
 
545
+ <img src="img/command_loop.png" width="500">
546
+
572
547
  ### Control who has access to a command
573
548
  > for admins
574
549
 
@@ -646,6 +621,8 @@ Examples:
646
621
  ### Teams
647
622
  > for all users
648
623
 
624
+ [![SmartBot Teams](https://img.youtube.com/vi/u8B4aGDXH9M/0.jpg)](https://www.youtube.com/watch?v=u8B4aGDXH9M)
625
+
649
626
  You can add, update, see, ping and delete teams. When calling `see TEAM_NAME team` the availability of the members will be displayed.
650
627
  `add team TEAM_NAME PROPERTIES` will add a team with the info supplied. In case it is supplied a channel with type 'members' the members of that channel would be considered members of the team.
651
628
 
@@ -703,8 +680,12 @@ Examples:
703
680
  >**_`sales team memo 4 Put it on hold until tests for Apple feature are finished`_**
704
681
  >**_`sales team memo 7`_**
705
682
 
683
+ <img src="img/command_see_team.png" width="650">
684
+
685
+
706
686
  Other team commands: **_`delete team TEAM_NAME`_**, **_`delete memo ID from team TEAM_NAME`_**, **_`set STATUS on memo ID TEAM_NAME team`_**, **_`see MEMO_TYPE from TEAM_NAME team TOPIC`_**
707
687
 
688
+
708
689
  ### Time off management
709
690
  > for all users
710
691
 
@@ -736,7 +717,7 @@ settings = {
736
717
 
737
718
  When calling `see my time off` on a DM will display a calendar of the year with the days off, including public holidays
738
719
 
739
- <img src="img/my_timeoff.png" width="650">
720
+ <img src="img/command_my_timeoff.png" width="750">
740
721
 
741
722
  Other 'time off' commands: **_`remove time off ID`_**, **_`see my time off`_**, **_`see vacations @USER`_**, **_`time off team NAME`_**, **_`set public holidays to COUNTRY/REGION`_**
742
723
 
@@ -754,7 +735,7 @@ ai: {
754
735
  access_token: 'OPENAI_ACCESS_TOKEN',
755
736
  organization_id: 'OPENAI_ORGANIZATION_ID',
756
737
  gpt_model: 'gpt-3.5-turbo',
757
- whisper_model : 'whisper-1',
738
+ whisper_model: 'whisper-1',
758
739
  image_size: '256x256'
759
740
  }
760
741
  }
@@ -116,6 +116,7 @@ class SlackSmartBot
116
116
  end
117
117
  output.each do |h|
118
118
  msg = h.gsub(/^\s*command_id:\s+:\w+\s*$/,'')
119
+ msg.gsub!(/^\s*>.+$/,'') if help_command.to_s != ''
119
120
  unless msg.match?(/\A\s*\z/)
120
121
  respond msg, dest, unfurl_links: false, unfurl_media: false
121
122
  end
@@ -86,6 +86,7 @@ class SlackSmartBot
86
86
  bye_bot(dest, user.name, display_name)
87
87
 
88
88
  # help: ----------------------------------------------
89
+ # help: >*<https://github.com/MarioRuiz/slack-smart-bot#announcements|ANNOUNCEMENTS>*
89
90
  # help: `add announcement MESSAGE`
90
91
  # help: `add red announcement MESSAGE`
91
92
  # help: `add green announcement MESSAGE`
@@ -162,6 +163,7 @@ class SlackSmartBot
162
163
 
163
164
 
164
165
  # help: ----------------------------------------------
166
+ # help: >*<https://github.com/MarioRuiz/slack-smart-bot#share-messages|SHARE MESSAGES>*
165
167
  # help: `share messages /REGEXP/ on #CHANNEL`
166
168
  # help: `share messages "TEXT" on #CHANNEL`
167
169
  # xhelp: `share messages :EMOJI: on #CHANNEL`
@@ -395,6 +397,7 @@ class SlackSmartBot
395
397
  end
396
398
 
397
399
  # help: ----------------------------------------------
400
+ # help: >*<https://github.com/MarioRuiz/slack-smart-bot#teams|TEAMS>*
398
401
  # help: `add team TEAM_NAME members #TEAM_CHANNEL CHANNEL_TYPE #CHANNEL1 #CHANNEL99 : INFO`
399
402
  # help: `add team TEAM_NAME MEMBER_TYPE @USER1 @USER99 CHANNEL_TYPE #CHANNEL1 #CHANNEL99 : INFO`
400
403
  # help: `add team TEAM_NAME MEMBER_TYPE1 @USER1 @USER99 MEMBER_TYPE99 @USER1 @USER99 CHANNEL_TYPE1 #CHANNEL1 #CHANNEL99 CHANNEL_TYPE99 #CHANNEL1 #CHANNEL99 : INFO`
@@ -662,6 +665,7 @@ class SlackSmartBot
662
665
  see_memos_team(user, type: type, name: name, topic: topic)
663
666
 
664
667
  # help: ----------------------------------------------
668
+ # help: >*<https://github.com/MarioRuiz/slack-smart-bot#time-off-management|TIME OFF MANAGEMENT>*
665
669
  # help: `add vacation from YYYY/MM/DD to YYYY/MM/DD`
666
670
  # help: `add vacation YYYY/MM/DD`
667
671
  # help: `add sick from YYYY/MM/DD to YYYY/MM/DD`
@@ -826,6 +830,7 @@ class SlackSmartBot
826
830
  personal_settings(user, settings_type, settings_id, settings_value)
827
831
 
828
832
  # help: ----------------------------------------------
833
+ # help: >*<https://github.com/MarioRuiz/slack-smart-bot#openai|OpenAI>*
829
834
  # help: `?w`
830
835
  # help: `?w PROMPT`
831
836
  # help: OpenAI: It will transcribe the audio file attached and performed the PROMPT indicated if supplied.
@@ -1,6 +1,7 @@
1
1
  class SlackSmartBot
2
2
 
3
3
  # help: ----------------------------------------------
4
+ # help: >*<https://github.com/MarioRuiz/slack-smart-bot#shortcuts|SHORTCUTS>*
4
5
  # help: `add shortcut NAME: COMMAND`
5
6
  # help: `add sc NAME: COMMAND`
6
7
  # help: `add shortcut for all NAME: COMMAND`
@@ -26,6 +27,7 @@ class SlackSmartBot
26
27
  unless typem == :on_extended
27
28
  from = user.name
28
29
  if has_access?(__method__, user)
30
+ shortcut_name.strip!
29
31
  if global
30
32
  if !config.on_master_bot or typem != :on_master
31
33
  respond "It is only possible to add global shortcuts from Master channel"
@@ -1,5 +1,6 @@
1
1
  class SlackSmartBot
2
2
  # helpadmin: ----------------------------------------------
3
+ # helpadmin: >*<https://github.com/MarioRuiz/slack-smart-bot#routines|ROUTINES>*
3
4
  # helpadmin: `add routine NAME every NUMBER PERIOD COMMAND`
4
5
  # helpadmin: `add routine NAME every NUMBER PERIOD #CHANNEL COMMAND`
5
6
  # helpadmin: `add routine NAME every NUMBER PERIOD`
@@ -14,8 +14,8 @@ class SlackSmartBot
14
14
  unless typem == :on_extended
15
15
  from = user.name
16
16
  if has_access?(__method__, user)
17
- deleted = false
18
-
17
+ deleted = false
18
+ shortcut.strip!
19
19
  if global
20
20
  if !config.on_master_bot or typem != :on_master
21
21
  respond "It is only possible to delete global shortcuts from Master channel"
@@ -1,5 +1,6 @@
1
1
  class SlackSmartBot
2
2
  # help: ----------------------------------------------
3
+ # help: >*<https://github.com/MarioRuiz/slack-smart-bot#repl|REPLs>*
3
4
  # help: `repl`
4
5
  # help: `live`
5
6
  # help: `irb`
@@ -79,6 +79,7 @@ class SlackSmartBot
79
79
  end
80
80
  output.each do |h|
81
81
  msg = h.gsub(/^\s*command_id:\s+:\w+\s*$/,'')
82
+ msg.gsub!(/^\s*>.+$/,'') if help_command.to_s != ''
82
83
  unless msg.match?(/\A\s*\z/)
83
84
  respond msg, dest, unfurl_links: false, unfurl_media: false
84
85
  end
data/whats_new.txt CHANGED
@@ -1,4 +1,4 @@
1
- *Version 1.14.0* Released 2023-Apr-13
1
+ *Version 1.14.1* Released 2023-Apr-13
2
2
 
3
3
  *For General users*
4
4
  - `team TEAM_NAME memo ID MESSAGE`, `TEAM_NAME team memo ID MESSAGE` It will add a comment to the memo ID specified on the team specified. (<https://github.com/MarioRuiz/slack-smart-bot/issues/95|#95>).
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.14.0
4
+ version: 1.14.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mario Ruiz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-13 00:00:00.000000000 Z
11
+ date: 2023-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slack-ruby-client
@@ -65,6 +65,9 @@ dependencies:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
67
  version: '3'
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 3.7.0
68
71
  type: :runtime
69
72
  prerelease: false
70
73
  version_requirements: !ruby/object:Gem::Requirement
@@ -72,6 +75,9 @@ dependencies:
72
75
  - - "~>"
73
76
  - !ruby/object:Gem::Version
74
77
  version: '3'
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 3.7.0
75
81
  - !ruby/object:Gem::Dependency
76
82
  name: nice_hash
77
83
  requirement: !ruby/object:Gem::Requirement