slack-smart-bot 1.9.1 → 1.11.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 +184 -16
- data/lib/slack/smart-bot/comm/ask.rb +55 -49
- data/lib/slack/smart-bot/comm/delete.rb +13 -0
- data/lib/slack/smart-bot/comm/dont_understand.rb +3 -3
- data/lib/slack/smart-bot/comm/event_hello.rb +8 -4
- data/lib/slack/smart-bot/comm/get_channel_members.rb +13 -4
- data/lib/slack/smart-bot/comm/get_channels.rb +31 -16
- data/lib/slack/smart-bot/comm/get_presence.rb +20 -0
- data/lib/slack/smart-bot/comm/get_user_info.rb +12 -8
- data/lib/slack/smart-bot/comm/get_users.rb +24 -0
- data/lib/slack/smart-bot/comm/react.rb +19 -2
- data/lib/slack/smart-bot/comm/respond.rb +224 -53
- data/lib/slack/smart-bot/comm/respond_direct.rb +2 -3
- data/lib/slack/smart-bot/comm/respond_thread.rb +5 -0
- data/lib/slack/smart-bot/comm/send_file.rb +38 -34
- data/lib/slack/smart-bot/comm/send_msg_channel.rb +27 -22
- data/lib/slack/smart-bot/comm/send_msg_user.rb +59 -33
- data/lib/slack/smart-bot/comm/unreact.rb +22 -18
- data/lib/slack/smart-bot/comm.rb +4 -0
- data/lib/slack/smart-bot/commands/general/add_admin.rb +51 -0
- data/lib/slack/smart-bot/commands/general/add_announcement.rb +32 -0
- data/lib/slack/smart-bot/commands/general/add_team.rb +80 -0
- data/lib/slack/smart-bot/commands/general/allow_access.rb +67 -0
- data/lib/slack/smart-bot/commands/general/bot_help.rb +69 -33
- data/lib/slack/smart-bot/commands/general/bye_bot.rb +0 -7
- data/lib/slack/smart-bot/commands/general/delete_announcement.rb +34 -0
- data/lib/slack/smart-bot/commands/general/delete_share.rb +34 -0
- data/lib/slack/smart-bot/commands/general/delete_team.rb +34 -0
- data/lib/slack/smart-bot/commands/general/deny_access.rb +36 -0
- data/lib/slack/smart-bot/commands/general/hi_bot.rb +16 -11
- data/lib/slack/smart-bot/commands/general/ping_team.rb +100 -0
- data/lib/slack/smart-bot/commands/general/poster.rb +116 -0
- data/lib/slack/smart-bot/commands/general/remove_admin.rb +58 -0
- data/lib/slack/smart-bot/commands/general/see_access.rb +24 -0
- data/lib/slack/smart-bot/commands/general/see_admins.rb +33 -0
- data/lib/slack/smart-bot/commands/general/see_announcements.rb +115 -0
- data/lib/slack/smart-bot/commands/general/see_command_ids.rb +29 -0
- data/lib/slack/smart-bot/commands/general/see_favorite_commands.rb +53 -0
- data/lib/slack/smart-bot/commands/general/see_shares.rb +41 -0
- data/lib/slack/smart-bot/commands/general/see_statuses.rb +91 -0
- data/lib/slack/smart-bot/commands/general/see_teams.rb +252 -0
- data/lib/slack/smart-bot/commands/general/share_messages.rb +58 -0
- data/lib/slack/smart-bot/commands/general/update_team.rb +109 -0
- data/lib/slack/smart-bot/commands/general_bot_commands.rb +504 -0
- data/lib/slack/smart-bot/commands/on_bot/add_shortcut.rb +4 -6
- data/lib/slack/smart-bot/commands/on_bot/admin/add_routine.rb +45 -14
- data/lib/slack/smart-bot/commands/on_bot/admin/extend_rules.rb +4 -1
- data/lib/slack/smart-bot/commands/on_bot/admin/pause_bot.rb +6 -3
- data/lib/slack/smart-bot/commands/on_bot/admin/pause_routine.rb +3 -1
- data/lib/slack/smart-bot/commands/on_bot/admin/remove_routine.rb +4 -4
- data/lib/slack/smart-bot/commands/on_bot/admin/run_routine.rb +8 -2
- data/lib/slack/smart-bot/commands/on_bot/admin/see_result_routine.rb +33 -0
- data/lib/slack/smart-bot/commands/on_bot/admin/see_routines.rb +13 -10
- data/lib/slack/smart-bot/commands/on_bot/admin/start_bot.rb +6 -3
- data/lib/slack/smart-bot/commands/on_bot/admin/start_routine.rb +3 -1
- data/lib/slack/smart-bot/commands/on_bot/admin/stop_using_rules_on.rb +4 -1
- data/lib/slack/smart-bot/commands/on_bot/admin_master/delete_message.rb +25 -0
- data/lib/slack/smart-bot/commands/on_bot/admin_master/get_bot_logs.rb +1 -0
- data/lib/slack/smart-bot/commands/on_bot/admin_master/react_to.rb +34 -0
- data/lib/slack/smart-bot/commands/on_bot/admin_master/send_message.rb +37 -0
- data/lib/slack/smart-bot/commands/on_bot/delete_repl.rb +4 -5
- data/lib/slack/smart-bot/commands/on_bot/delete_shortcut.rb +7 -8
- data/lib/slack/smart-bot/commands/on_bot/general/bot_stats.rb +400 -0
- data/lib/slack/smart-bot/commands/{general → on_bot/general}/bot_status.rb +3 -4
- data/lib/slack/smart-bot/commands/on_bot/general/leaderboard.rb +201 -0
- data/lib/slack/smart-bot/commands/{general → on_bot/general}/stop_using_rules.rb +12 -6
- data/lib/slack/smart-bot/commands/on_bot/general/suggest_command.rb +36 -0
- data/lib/slack/smart-bot/commands/{general → on_bot/general}/use_rules.rb +13 -11
- data/lib/slack/smart-bot/commands/{general → on_bot/general}/whats_new.rb +2 -1
- data/lib/slack/smart-bot/commands/on_bot/get_repl.rb +4 -5
- data/lib/slack/smart-bot/commands/on_bot/repl.rb +76 -21
- data/lib/slack/smart-bot/commands/on_bot/ruby_code.rb +3 -4
- data/lib/slack/smart-bot/commands/on_bot/run_repl.rb +15 -7
- data/lib/slack/smart-bot/commands/on_bot/see_repls.rb +5 -6
- data/lib/slack/smart-bot/commands/on_bot/see_shortcuts.rb +5 -6
- data/lib/slack/smart-bot/commands/on_extended/bot_rules.rb +45 -12
- data/lib/slack/smart-bot/commands/on_master/admin/kill_bot_on_channel.rb +7 -3
- data/lib/slack/smart-bot/commands/on_master/admin_master/exit_bot.rb +4 -1
- data/lib/slack/smart-bot/commands/on_master/admin_master/notify_message.rb +3 -1
- data/lib/slack/smart-bot/commands/on_master/admin_master/publish_announcements.rb +33 -0
- data/lib/slack/smart-bot/commands/on_master/admin_master/set_general_message.rb +39 -0
- data/lib/slack/smart-bot/commands/on_master/admin_master/set_maintenance.rb +10 -1
- data/lib/slack/smart-bot/commands/on_master/create_bot.rb +28 -14
- data/lib/slack/smart-bot/commands/on_master/where_smartbot.rb +41 -0
- data/lib/slack/smart-bot/commands.rb +36 -5
- data/lib/slack/smart-bot/listen.rb +31 -33
- data/lib/slack/smart-bot/process.rb +234 -73
- data/lib/slack/smart-bot/process_first.rb +119 -38
- data/lib/slack/smart-bot/treat_message.rb +310 -237
- data/lib/slack/smart-bot/utils/build_help.rb +2 -2
- data/lib/slack/smart-bot/utils/create_routine_thread.rb +81 -46
- data/lib/slack/smart-bot/utils/get_access_channels.rb +13 -0
- data/lib/slack/smart-bot/utils/get_admins_channels.rb +13 -0
- data/lib/slack/smart-bot/utils/get_bots_created.rb +28 -8
- data/lib/slack/smart-bot/utils/get_channels_name_and_id.rb +7 -2
- data/lib/slack/smart-bot/utils/get_command_ids.rb +84 -0
- data/lib/slack/smart-bot/utils/get_help.rb +79 -73
- data/lib/slack/smart-bot/utils/get_repls.rb +22 -2
- data/lib/slack/smart-bot/utils/get_routines.rb +22 -2
- data/lib/slack/smart-bot/utils/get_shares.rb +12 -0
- data/lib/slack/smart-bot/utils/get_teams.rb +22 -0
- data/lib/slack/smart-bot/utils/has_access.rb +28 -0
- data/lib/slack/smart-bot/utils/is_admin.rb +27 -0
- data/lib/slack/smart-bot/utils/save_stats.rb +46 -41
- data/lib/slack/smart-bot/utils/save_status.rb +67 -0
- data/lib/slack/smart-bot/utils/update_access_channels.rb +8 -0
- data/lib/slack/smart-bot/utils/update_admins_channels.rb +8 -0
- data/lib/slack/smart-bot/utils/update_bots_file.rb +28 -7
- data/lib/slack/smart-bot/utils/update_repls.rb +7 -4
- data/lib/slack/smart-bot/utils/update_routines.rb +9 -3
- data/lib/slack/smart-bot/utils/update_shortcuts_file.rb +13 -6
- data/lib/slack/smart-bot/utils/update_teams.rb +16 -0
- data/lib/slack/smart-bot/utils.rb +11 -0
- data/lib/slack-smart-bot.rb +72 -12
- data/lib/slack-smart-bot_general_commands.rb +61 -0
- data/lib/slack-smart-bot_general_rules.rb +5 -2
- data/lib/slack-smart-bot_rules.rb +43 -17
- data/whats_new.txt +20 -15
- metadata +76 -9
- data/lib/slack/smart-bot/commands/general/bot_stats.rb +0 -313
@@ -4,17 +4,20 @@ class SlackSmartBot
|
|
4
4
|
# helpadmin: `extend rules to CHANNEL_NAME`
|
5
5
|
# helpadmin: `use rules on CHANNEL_NAME`
|
6
6
|
# helpadmin: It will allow to use the specific rules from this channel on the CHANNEL_NAME
|
7
|
+
# helpadmin: <https://github.com/MarioRuiz/slack-smart-bot#extending-rules-to-other-channels|more info>
|
8
|
+
# helpadmin: command_id: :extend_rules
|
7
9
|
# helpadmin:
|
8
10
|
def extend_rules(dest, user, from, channel, typem)
|
9
11
|
save_stats(__method__)
|
10
12
|
unless typem == :on_extended
|
11
13
|
if config.on_master_bot
|
12
14
|
respond "You cannot use the rules from Master Channel on any other channel.", dest
|
13
|
-
elsif !
|
15
|
+
elsif !is_admin? #not admin
|
14
16
|
respond "Only admins can extend the rules. Admins on this channel: #{config.admins}", dest
|
15
17
|
else
|
16
18
|
#todo: add pagination for case more than 1000 channels on the workspace
|
17
19
|
channels = get_channels()
|
20
|
+
channel = @channels_name[channel] if @channels_name.key?(channel)
|
18
21
|
|
19
22
|
channel_found = channels.detect { |c| c.name == channel }
|
20
23
|
get_channels_name_and_id()
|
@@ -5,18 +5,21 @@ class SlackSmartBot
|
|
5
5
|
# helpadmin: `pause this bot`
|
6
6
|
# helpadmin: the bot will pause so it will listen only to admin commands
|
7
7
|
# helpadmin: You can use this command only if you are an admin user
|
8
|
+
# helpadmin: <https://github.com/MarioRuiz/slack-smart-bot#bot-management|more info>
|
9
|
+
# helpadmin: command_id: :pause_bot
|
8
10
|
# helpadmin:
|
9
11
|
def pause_bot(dest, from)
|
10
12
|
save_stats(__method__)
|
11
|
-
if
|
13
|
+
if is_admin?
|
12
14
|
respond "This bot is paused from now on. You can start it again: start this bot", dest
|
13
15
|
respond "zZzzzzZzzzzZZZZZZzzzzzzzz", dest
|
14
16
|
@status = :paused
|
15
|
-
@bots_created[@channel_id][:status] = :paused
|
16
|
-
update_bots_file()
|
17
17
|
unless config.on_master_bot
|
18
|
+
@bots_created[@channel_id][:status] = :paused
|
19
|
+
update_bots_file()
|
18
20
|
send_msg_channel config.master_channel, "Changed status on #{config.channel} to :paused"
|
19
21
|
end
|
22
|
+
save_status :off, :paused, 'The admin paused this bot'
|
20
23
|
else
|
21
24
|
respond "Only admin users can put me on pause", dest
|
22
25
|
end
|
@@ -6,10 +6,12 @@ class SlackSmartBot
|
|
6
6
|
# helpadmin: NAME: one word to identify the routine
|
7
7
|
# helpadmin: Examples:
|
8
8
|
# helpadmin: _pause routine example_
|
9
|
+
# helpadmin: <https://github.com/MarioRuiz/slack-smart-bot#routines|more info>
|
10
|
+
# helpadmin: command_id: :pause_routine
|
9
11
|
# helpadmin:
|
10
12
|
def pause_routine(dest, from, name)
|
11
13
|
save_stats(__method__)
|
12
|
-
if
|
14
|
+
if is_admin?
|
13
15
|
if !config.on_master_bot and dest[0] == "D"
|
14
16
|
respond "It's only possible to pause routines from MASTER channel from a direct message with the bot.", dest
|
15
17
|
elsif @routines.key?(@channel_id) and @routines[@channel_id].key?(name)
|
@@ -9,13 +9,13 @@ class SlackSmartBot
|
|
9
9
|
# helpadmin: NAME: one word to identify the routine
|
10
10
|
# helpadmin: Examples:
|
11
11
|
# helpadmin: _kill routine example_
|
12
|
+
# helpadmin: <https://github.com/MarioRuiz/slack-smart-bot#routines|more info>
|
13
|
+
# helpadmin: command_id: :remove_routine
|
12
14
|
# helpadmin:
|
13
15
|
def remove_routine(dest, from, name)
|
14
16
|
save_stats(__method__)
|
15
|
-
if
|
16
|
-
if
|
17
|
-
respond "It's only possible to remove routines from MASTER channel from a direct message with the bot.", dest
|
18
|
-
elsif @routines.key?(@channel_id) and @routines[@channel_id].key?(name)
|
17
|
+
if is_admin?
|
18
|
+
if @routines.key?(@channel_id) and @routines[@channel_id].key?(name)
|
19
19
|
@routines[@channel_id][name][:thread].exit
|
20
20
|
@routines[@channel_id].delete(name)
|
21
21
|
update_routines()
|
@@ -8,14 +8,17 @@ class SlackSmartBot
|
|
8
8
|
# helpadmin: NAME: one word to identify the routine
|
9
9
|
# helpadmin: Examples:
|
10
10
|
# helpadmin: _run routine example_
|
11
|
+
# helpadmin: <https://github.com/MarioRuiz/slack-smart-bot#routines|more info>
|
12
|
+
# helpadmin: command_id: :run_routine
|
11
13
|
# helpadmin:
|
12
14
|
|
13
15
|
def run_routine(dest, from, name)
|
14
16
|
save_stats(__method__)
|
15
|
-
if
|
17
|
+
if is_admin?
|
16
18
|
if !config.on_master_bot and dest[0] == "D"
|
17
19
|
respond "It's only possible to run routines from MASTER channel from a direct message with the bot.", dest
|
18
20
|
elsif @routines.key?(@channel_id) and @routines[@channel_id].key?(name)
|
21
|
+
File.delete "#{config.path}/routines/#{@channel_id}/#{name}_output.txt" if File.exist?("#{config.path}/routines/#{@channel_id}/#{name}_output.txt")
|
19
22
|
if @routines[@channel_id][name][:file_path] != ""
|
20
23
|
if @routines[@channel_id][name][:file_path].match?(/\.rb$/i)
|
21
24
|
ruby = "ruby "
|
@@ -40,7 +43,10 @@ class SlackSmartBot
|
|
40
43
|
treat_message({ channel: @routines[@channel_id][name][:dest],
|
41
44
|
user: @routines[@channel_id][name][:creator_id],
|
42
45
|
text: @routines[@channel_id][name][:command],
|
43
|
-
files: nil
|
46
|
+
files: nil,
|
47
|
+
routine_name: name,
|
48
|
+
routine_type: @routines[@channel_id][name][:routine_type],
|
49
|
+
routine: true })
|
44
50
|
end
|
45
51
|
@routines[@channel_id][name][:last_elapsed] = (Time.now - started)
|
46
52
|
@routines[@channel_id][name][:last_run] = started.to_s
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class SlackSmartBot
|
2
|
+
|
3
|
+
# helpadmin: ----------------------------------------------
|
4
|
+
# helpadmin: `see routine result NAME`
|
5
|
+
# helpadmin: `see result routine NAME`
|
6
|
+
# helpadmin: `result routine NAME`
|
7
|
+
# helpadmin: It will display the last result of the routine run.
|
8
|
+
# helpadmin: You can use this command only if you are an admin user
|
9
|
+
# helpadmin: NAME: one word to identify the routine
|
10
|
+
# helpadmin: Examples:
|
11
|
+
# helpadmin: _see routine result example_
|
12
|
+
# helpadmin: <https://github.com/MarioRuiz/slack-smart-bot#routines|more info>
|
13
|
+
# helpadmin: command_id: :see_result_routine
|
14
|
+
# helpadmin:
|
15
|
+
def see_result_routine(dest, from, name)
|
16
|
+
save_stats(__method__)
|
17
|
+
if is_admin?
|
18
|
+
if @routines.key?(@channel_id) and @routines[@channel_id].key?(name)
|
19
|
+
if File.exist?("#{config.path}/routines/#{@channel_id}/#{name}_output.txt")
|
20
|
+
msg = "*Results from routine run #{File.mtime("#{config.path}/routines/#{@channel_id}/#{name}_output.txt")}*\n"
|
21
|
+
msg += File.read("#{config.path}/routines/#{@channel_id}/#{name}_output.txt")
|
22
|
+
respond msg, dest
|
23
|
+
else
|
24
|
+
respond "The routine *`#{name}`* doesn't have any result yet.", dest
|
25
|
+
end
|
26
|
+
else
|
27
|
+
respond "There isn't a routine with that name: *`#{name}`*.\nCall `see routines` to see added routines", dest
|
28
|
+
end
|
29
|
+
else
|
30
|
+
respond "Only admin users can see the routines results", dest
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -5,29 +5,31 @@ class SlackSmartBot
|
|
5
5
|
# helpadmin: It will show the routines of the channel
|
6
6
|
# helpadmin: In case of `all` and on the master channel, it will show all the routines from all channels
|
7
7
|
# helpadmin: You can use this command only if you are an admin user
|
8
|
+
# helpadmin: <https://github.com/MarioRuiz/slack-smart-bot#routines|more info>
|
9
|
+
# helpadmin: command_id: :see_routines
|
8
10
|
# helpadmin:
|
9
11
|
def see_routines(dest, from, user, all)
|
10
12
|
save_stats(__method__)
|
11
|
-
if
|
13
|
+
if is_admin?
|
12
14
|
if all
|
13
15
|
routines = {}
|
14
16
|
if config.on_master_bot
|
15
|
-
Dir["#{config.path}/routines/routines_*.
|
16
|
-
|
17
|
-
unless
|
18
|
-
routines.merge!(
|
17
|
+
Dir["#{config.path}/routines/routines_*.yaml"].each do |rout|
|
18
|
+
routine = YAML.load(File.read(rout))
|
19
|
+
unless routine.is_a?(FalseClass)
|
20
|
+
routines.merge!(routine)
|
19
21
|
end
|
20
22
|
end
|
21
23
|
else
|
22
24
|
respond "To see all routines on all channels you need to run the command on the master channel.\nI'll display only the routines on this channel.", dest
|
23
|
-
routines = @routines
|
25
|
+
routines = @routines
|
24
26
|
end
|
25
27
|
else
|
26
|
-
if @rules_imported.key?(user.
|
27
|
-
|
28
|
-
routines =
|
28
|
+
if @rules_imported.key?(user.name) and @rules_imported[user.name].key?(user.name) and dest[0] == "D"
|
29
|
+
routines = YAML.load(File.read("#{config.path}/routines/routines_#{@rules_imported[user.name][user.name]}.yaml"))
|
30
|
+
routines = {} if routines.is_a?(FalseClass)
|
29
31
|
else
|
30
|
-
routines = @routines
|
32
|
+
routines = @routines
|
31
33
|
end
|
32
34
|
end
|
33
35
|
|
@@ -57,6 +59,7 @@ class SlackSmartBot
|
|
57
59
|
msg << "\tCommand: #{v[:command]}" unless v[:command].to_s.strip == ''
|
58
60
|
msg << "\tFile: #{v[:file_path]}" unless v[:file_path] == ''
|
59
61
|
msg << "\tSilent: #{v[:silent]}" unless !v[:silent]
|
62
|
+
msg << "\tType: #{v[:routine_type]}" if v[:routine_type].to_s == 'bgroutine'
|
60
63
|
respond msg.join("\n"), dest
|
61
64
|
end
|
62
65
|
end
|
@@ -5,17 +5,20 @@ class SlackSmartBot
|
|
5
5
|
# helpadmin: `start this bot`
|
6
6
|
# helpadmin: the bot will start to listen
|
7
7
|
# helpadmin: You can use this command only if you are an admin user
|
8
|
+
# helpadmin: <https://github.com/MarioRuiz/slack-smart-bot#bot-management|more info>
|
9
|
+
# helpadmin: command_id: :start_bot
|
8
10
|
# helpadmin:
|
9
11
|
def start_bot(dest, from)
|
10
12
|
save_stats(__method__)
|
11
|
-
if
|
13
|
+
if is_admin?
|
12
14
|
respond "This bot is running and listening from now on. You can pause again: pause this bot", dest
|
13
15
|
@status = :on
|
14
|
-
@bots_created[@channel_id][:status] = :on
|
15
|
-
update_bots_file()
|
16
16
|
unless config.on_master_bot
|
17
|
+
@bots_created[@channel_id][:status] = :on
|
18
|
+
update_bots_file()
|
17
19
|
send_msg_channel config.master_channel, "Changed status on #{config.channel} to :on"
|
18
20
|
end
|
21
|
+
save_status :on, :started, 'The admin started this bot'
|
19
22
|
else
|
20
23
|
respond "Only admin users can change my status", dest
|
21
24
|
end
|
@@ -7,11 +7,13 @@ class SlackSmartBot
|
|
7
7
|
# helpadmin: NAME: one word to identify the routine
|
8
8
|
# helpadmin: Examples:
|
9
9
|
# helpadmin: _start routine example_
|
10
|
+
# helpadmin: <https://github.com/MarioRuiz/slack-smart-bot#routines|more info>
|
11
|
+
# helpadmin: command_id: :start_routine
|
10
12
|
# helpadmin:
|
11
13
|
|
12
14
|
def start_routine(dest, from, name)
|
13
15
|
save_stats(__method__)
|
14
|
-
if
|
16
|
+
if is_admin?
|
15
17
|
if !config.on_master_bot and dest[0] == "D"
|
16
18
|
respond "It's only possible to start routines from MASTER channel from a direct message with the bot.", dest
|
17
19
|
elsif @routines.key?(@channel_id) and @routines[@channel_id].key?(name)
|
@@ -3,15 +3,18 @@ class SlackSmartBot
|
|
3
3
|
# helpadmin: ----------------------------------------------
|
4
4
|
# helpadmin: `stop using rules on CHANNEL_NAME`
|
5
5
|
# helpadmin: it will stop using the extended rules on the specified channel.
|
6
|
+
# helpadmin: <https://github.com/MarioRuiz/slack-smart-bot#extending-rules-to-other-channels|more info>
|
7
|
+
# helpadmin: command_id: :stop_using_rules_on
|
6
8
|
# helpadmin:
|
7
9
|
|
8
10
|
def stop_using_rules_on(dest, user, from, channel, typem)
|
9
11
|
save_stats(__method__)
|
10
12
|
unless typem == :on_extended
|
11
|
-
if !
|
13
|
+
if !is_admin?
|
12
14
|
respond "Only admins can extend or stop using the rules. Admins on this channel: #{config.admins}", dest
|
13
15
|
else
|
14
16
|
get_bots_created()
|
17
|
+
channel = @channels_name[channel] if @channels_name.key?(channel)
|
15
18
|
if @bots_created[@channel_id][:extended].include?(channel)
|
16
19
|
@bots_created[@channel_id][:extended].delete(channel)
|
17
20
|
update_bots_file()
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class SlackSmartBot
|
2
|
+
|
3
|
+
# helpadmin: ----------------------------------------------
|
4
|
+
# helpadmin: `delete message URL`
|
5
|
+
# helpadmin: It will delete the SmartBot message supplied
|
6
|
+
# helpadmin: You can use this command only if you are a Master admin user and if you are in a private conversation with the bot
|
7
|
+
# helpadmin: command_id: :delete_message
|
8
|
+
# helpadmin:
|
9
|
+
def delete_message(from, typem, url)
|
10
|
+
save_stats(__method__)
|
11
|
+
channel, ts = url.scan(/\/archives\/(\w+)\/(\w\d+)/)[0]
|
12
|
+
if config.masters.include?(from) and typem==:on_dm and !channel.nil? #master admin user
|
13
|
+
ts = "#{ts[0..-7]}.#{ts[-6..-1]}"
|
14
|
+
succ = delete(channel, ts)
|
15
|
+
if succ
|
16
|
+
react :heavy_check_mark
|
17
|
+
else
|
18
|
+
react :x
|
19
|
+
end
|
20
|
+
else
|
21
|
+
respond "Only master admin users on a private conversation with the SmartBot can delete SmartBot messages"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
@@ -4,6 +4,7 @@ class SlackSmartBot
|
|
4
4
|
# helpadmin: `get bot logs`
|
5
5
|
# helpadmin: To see the bot logs
|
6
6
|
# helpadmin: You can use this command only if you are a Master admin user and if you are in a private conversation with the bot
|
7
|
+
# helpadmin: command_id: :get_bot_logs
|
7
8
|
# helpadmin:
|
8
9
|
def get_bot_logs(dest, from, typem)
|
9
10
|
save_stats(__method__)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
class SlackSmartBot
|
2
|
+
|
3
|
+
# helpadmin: ----------------------------------------------
|
4
|
+
# helpadmin: `react to #CHANNEL_NAME THREAD_ID EMOJIS`
|
5
|
+
# helpadmin: `react to URL EMOJIS`
|
6
|
+
# helpadmin: It will send the specified reactions as SmartBot
|
7
|
+
# helpadmin: You can use this command only if you are a Master admin user and if you are in a private conversation with the bot
|
8
|
+
# helpadmin: Examples:
|
9
|
+
# helpadmin: _react to #sales 1622550707.012100 :thumbsup:_
|
10
|
+
# helpadmin: _react to #sales p1622550707012100 :thumbsup:_
|
11
|
+
# helpadmin: _react to #sales p1622550707012100 :thumbsup: :heavy_check_mark: :bathtub:_
|
12
|
+
# helpadmin: command_id: :react_to
|
13
|
+
# helpadmin:
|
14
|
+
def react_to(dest, from, typem, to, thread_ts, emojis)
|
15
|
+
save_stats(__method__)
|
16
|
+
if config.masters.include?(from) and typem==:on_dm #master admin user
|
17
|
+
succs = []
|
18
|
+
emojis.split(' ').each do |emoji|
|
19
|
+
succs << (react emoji, thread_ts, to)
|
20
|
+
end
|
21
|
+
succs.uniq!
|
22
|
+
if succs.size == 1 and succs[0] == true
|
23
|
+
react :heavy_check_mark
|
24
|
+
elsif succs.size == 2
|
25
|
+
react :exclamation
|
26
|
+
else
|
27
|
+
react :x
|
28
|
+
end
|
29
|
+
else
|
30
|
+
respond "Only master admin users on a private conversation with the SmartBot can send reactions as SmartBot.", dest
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class SlackSmartBot
|
2
|
+
|
3
|
+
# helpadmin: ----------------------------------------------
|
4
|
+
# helpadmin: `send message to @USER_NAME : MESSAGE`
|
5
|
+
# helpadmin: `send message to #CHANNEL_NAME : MESSAGE`
|
6
|
+
# helpadmin: `send message to THREAD_ID : MESSAGE`
|
7
|
+
# helpadmin: `send message to URL : MESSAGE`
|
8
|
+
# helpadmin: `send message to @USER1 @USER99 : MESSAGE`
|
9
|
+
# helpadmin: `send message to #CHANNEL1 #CHANNEL99 : MESSAGE`
|
10
|
+
# helpadmin: It will send the specified message as SmartBot
|
11
|
+
# helpadmin: You can use this command only if you are a Master admin user and if you are in a private conversation with the bot
|
12
|
+
# helpadmin: command_id: :send_message
|
13
|
+
# helpadmin:
|
14
|
+
def send_message(dest, from, typem, to, thread_ts, message)
|
15
|
+
save_stats(__method__)
|
16
|
+
if config.masters.include?(from) and typem==:on_dm #master admin user
|
17
|
+
unless Thread.current[:command_orig].to_s == ''
|
18
|
+
message_orig = Thread.current[:command_orig].to_s.gsub("\u00A0", " ").scan(/[^:]+\s*:\s+(.+)/im).join
|
19
|
+
message = message_orig unless message_orig == ''
|
20
|
+
end
|
21
|
+
succ = true
|
22
|
+
to.each do |t|
|
23
|
+
unless t.match?(/^\s*$/)
|
24
|
+
succ = (respond message, t, thread_ts: thread_ts, web_client: true) && succ
|
25
|
+
end
|
26
|
+
end
|
27
|
+
if succ
|
28
|
+
react :heavy_check_mark
|
29
|
+
else
|
30
|
+
react :x
|
31
|
+
end
|
32
|
+
else
|
33
|
+
respond "Only master admin users on a private conversation with the SmartBot can send messages as SmartBot.", dest
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
@@ -5,17 +5,16 @@ class SlackSmartBot
|
|
5
5
|
# help: `remove repl SESSION_NAME`
|
6
6
|
# help: Will delete the specified REPL
|
7
7
|
# help: Only the creator of the REPL or an admin can delete REPLs
|
8
|
+
# help: <https://github.com/MarioRuiz/slack-smart-bot#repl|more info>
|
9
|
+
# help: command_id: :delete_repl
|
8
10
|
# help:
|
9
11
|
def delete_repl(dest, user, session_name)
|
10
12
|
#todo: add tests
|
11
13
|
save_stats(__method__)
|
12
|
-
if
|
13
|
-
(!user.key?(:enterprise_user) or ( user.key?(:enterprise_user) and !config[:allow_access][__method__].include?(user[:enterprise_user].id)))
|
14
|
-
respond "You don't have access to use this command, please contact an Admin to be able to use it: <@#{config.admins.join(">, <@")}>"
|
15
|
-
else
|
14
|
+
if has_access?(__method__, user)
|
16
15
|
if @repls.key?(session_name)
|
17
16
|
Dir.mkdir("#{config.path}/repl") unless Dir.exist?("#{config.path}/repl")
|
18
|
-
if
|
17
|
+
if is_admin?(user.name) or @repls[session_name].creator_name == user.name
|
19
18
|
@repls.delete(session_name)
|
20
19
|
update_repls()
|
21
20
|
File.rename("#{config.path}/repl/#{@channel_id}/#{session_name}.input", "#{config.path}/repl/#{@channel_id}/#{session_name}_#{Time.now.strftime("%Y%m%d%H%M%S%N")}.deleted")
|
@@ -5,27 +5,26 @@ class SlackSmartBot
|
|
5
5
|
# help: `delete global sc NAME`
|
6
6
|
# help: It will delete the shortcut with the supplied name
|
7
7
|
# help: 'global' or 'generic' can only be used on Master channel.
|
8
|
+
# help: <https://github.com/MarioRuiz/slack-smart-bot#shortcuts|more info>
|
9
|
+
# help: command_id: :delete_shortcut
|
8
10
|
# help:
|
9
11
|
|
10
12
|
def delete_shortcut(dest, user, shortcut, typem, command, global)
|
11
13
|
save_stats(__method__)
|
12
14
|
unless typem == :on_extended
|
13
15
|
from = user.name
|
14
|
-
if
|
15
|
-
(!user.key?(:enterprise_user) or ( user.key?(:enterprise_user) and !config[:allow_access][__method__].include?(user[:enterprise_user].id)))
|
16
|
-
respond "You don't have access to use this command, please contact an Admin to be able to use it: <@#{config.admins.join(">, <@")}>"
|
17
|
-
else
|
16
|
+
if has_access?(__method__, user)
|
18
17
|
deleted = false
|
19
18
|
|
20
19
|
if global
|
21
20
|
if !config.on_master_bot or typem != :on_master
|
22
21
|
respond "It is only possible to delete global shortcuts from Master channel"
|
23
22
|
else
|
24
|
-
if !
|
23
|
+
if !is_admin?(from) and @shortcuts_global[:all].include?(shortcut) and
|
25
24
|
(!@shortcuts_global.key?(from) or !@shortcuts_global[from].include?(shortcut))
|
26
25
|
respond "Only the creator of the shortcut or an admin user can delete it"
|
27
26
|
elsif (@shortcuts_global.key?(from) and @shortcuts_global[from].keys.include?(shortcut)) or
|
28
|
-
(
|
27
|
+
(is_admin?(from) and @shortcuts_global[:all].include?(shortcut))
|
29
28
|
|
30
29
|
respond "global shortcut deleted!", dest
|
31
30
|
if @shortcuts_global.key?(from) and @shortcuts_global[from].key?(shortcut)
|
@@ -41,11 +40,11 @@ class SlackSmartBot
|
|
41
40
|
end
|
42
41
|
end
|
43
42
|
else
|
44
|
-
if !
|
43
|
+
if !is_admin?(from) and @shortcuts[:all].include?(shortcut) and
|
45
44
|
(!@shortcuts.key?(from) or !@shortcuts[from].include?(shortcut))
|
46
45
|
respond "Only the creator of the shortcut or an admin user can delete it", dest
|
47
46
|
elsif (@shortcuts.keys.include?(from) and @shortcuts[from].keys.include?(shortcut)) or
|
48
|
-
(
|
47
|
+
(is_admin?(from) and @shortcuts[:all].include?(shortcut))
|
49
48
|
#are you sure? to avoid deleting by mistake
|
50
49
|
if answer.empty?
|
51
50
|
ask("are you sure you want to delete it?", command, from, dest)
|