slack-smart-bot 1.14.1 → 1.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +237 -48
- data/img/chat_gpt.png +0 -0
- data/img/chat_gpt_session.png +0 -0
- data/img/chat_gpt_share.png +0 -0
- data/img/command_add_sc.png +0 -0
- data/img/command_bot_help_echo.png +0 -0
- data/img/command_loop.png +0 -0
- data/img/command_my_timeoff.png +0 -0
- data/img/command_recap.png +0 -0
- data/img/command_repl1.png +0 -0
- data/img/command_repl2.png +0 -0
- data/img/command_ruby.png +0 -0
- data/img/command_run_repl.png +0 -0
- data/img/command_see_announcements.png +0 -0
- data/img/command_see_statuses.png +0 -0
- data/img/command_see_team.png +0 -0
- data/img/command_summarize.png +0 -0
- data/img/commands_inline.png +0 -0
- data/img/commands_on_demand.png +0 -0
- data/img/commands_on_external_call.png +0 -0
- data/img/image_editing.png +0 -0
- data/img/image_generation.png +0 -0
- data/img/image_variations.png +0 -0
- data/img/openai-300.png +0 -0
- data/img/openai.png +0 -0
- data/img/slack-300.png +0 -0
- data/img/slack.png +0 -0
- data/img/smart-bot-150.png +0 -0
- data/img/smart-bot-profile-pic-2.png +0 -0
- data/img/smart-bot-profile-pic.png +0 -0
- data/img/smart-bot.png +0 -0
- data/img/whisper.png +0 -0
- data/lib/slack/smart-bot/ai/open_ai/connect.rb +165 -43
- data/lib/slack/smart-bot/ai/open_ai/models.rb +61 -9
- data/lib/slack/smart-bot/ai/open_ai/send_gpt_chat.rb +67 -11
- data/lib/slack/smart-bot/ai/open_ai/send_image_edit.rb +4 -3
- data/lib/slack/smart-bot/ai/open_ai/send_image_generation.rb +4 -4
- data/lib/slack/smart-bot/ai/open_ai/send_image_variation.rb +4 -3
- data/lib/slack/smart-bot/ai/open_ai/whisper_transcribe.rb +4 -3
- data/lib/slack/smart-bot/comm/ask.rb +20 -8
- data/lib/slack/smart-bot/comm/dont_understand.rb +2 -2
- data/lib/slack/smart-bot/comm/event_hello.rb +30 -1
- data/lib/slack/smart-bot/comm/get_channel_members.rb +2 -1
- data/lib/slack/smart-bot/comm/get_presence.rb +1 -0
- data/lib/slack/smart-bot/comm/get_smartbot_team_info.rb +10 -0
- data/lib/slack/smart-bot/comm/get_user_info.rb +45 -6
- data/lib/slack/smart-bot/comm/get_users.rb +8 -1
- data/lib/slack/smart-bot/comm/respond.rb +225 -196
- data/lib/slack/smart-bot/comm/send_msg_channel.rb +2 -2
- data/lib/slack/smart-bot/comm/send_msg_user.rb +10 -9
- data/lib/slack/smart-bot/comm/unreact.rb +2 -2
- data/lib/slack/smart-bot/comm.rb +1 -0
- data/lib/slack/smart-bot/commands/general/add_admin.rb +16 -6
- data/lib/slack/smart-bot/commands/general/add_announcement.rb +3 -3
- data/lib/slack/smart-bot/commands/general/add_vacation.rb +28 -12
- data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_chat.rb +272 -23
- data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_chat_add_collaborator.rb +42 -0
- data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_chat_copy_session.rb +89 -0
- data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_chat_delete_session.rb +45 -0
- data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_chat_get_prompts.rb +41 -0
- data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_chat_list_sessions.rb +81 -0
- data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_chat_share_session.rb +52 -0
- data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_chat_use_model.rb +52 -0
- data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_edit_image.rb +14 -11
- data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_generate_image.rb +15 -11
- data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_models.rb +29 -17
- data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_variations_image.rb +16 -13
- data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_whisper.rb +13 -7
- data/lib/slack/smart-bot/commands/general/allow_access.rb +8 -4
- data/lib/slack/smart-bot/commands/general/bot_help.rb +24 -9
- data/lib/slack/smart-bot/commands/general/bye_bot.rb +9 -5
- data/lib/slack/smart-bot/commands/general/delete_announcement.rb +2 -1
- data/lib/slack/smart-bot/commands/general/delete_share.rb +2 -1
- data/lib/slack/smart-bot/commands/general/deny_access.rb +1 -1
- data/lib/slack/smart-bot/commands/general/get_smartbot_readme.rb +15 -0
- data/lib/slack/smart-bot/commands/general/hi_bot.rb +10 -4
- data/lib/slack/smart-bot/commands/general/personal_settings.rb +26 -8
- data/lib/slack/smart-bot/commands/general/poster.rb +26 -2
- data/lib/slack/smart-bot/commands/general/public_holidays.rb +14 -24
- data/lib/slack/smart-bot/commands/general/recap.rb +399 -0
- data/lib/slack/smart-bot/commands/general/remove_admin.rb +19 -9
- data/lib/slack/smart-bot/commands/general/remove_vacation.rb +23 -6
- data/lib/slack/smart-bot/commands/general/see_access.rb +2 -1
- data/lib/slack/smart-bot/commands/general/see_admins.rb +8 -4
- data/lib/slack/smart-bot/commands/general/see_announcements.rb +5 -5
- data/lib/slack/smart-bot/commands/general/see_favorite_commands.rb +4 -4
- data/lib/slack/smart-bot/commands/general/see_shares.rb +1 -1
- data/lib/slack/smart-bot/commands/general/see_vacations.rb +34 -17
- data/lib/slack/smart-bot/commands/general/set_public_holidays.rb +4 -2
- data/lib/slack/smart-bot/commands/general/share_messages.rb +3 -3
- data/lib/slack/smart-bot/commands/general/summarize.rb +191 -0
- data/lib/slack/smart-bot/commands/general/teams/add_team.rb +4 -8
- data/lib/slack/smart-bot/commands/general/teams/delete_team.rb +3 -3
- data/lib/slack/smart-bot/commands/general/teams/memos/add_memo_team.rb +34 -29
- data/lib/slack/smart-bot/commands/general/teams/memos/add_memo_team_comment.rb +1 -1
- data/lib/slack/smart-bot/commands/general/teams/memos/delete_memo_team.rb +6 -4
- data/lib/slack/smart-bot/commands/general/teams/memos/see_memo_team.rb +26 -15
- data/lib/slack/smart-bot/commands/general/teams/memos/see_memos_team.rb +33 -24
- data/lib/slack/smart-bot/commands/general/teams/memos/set_memo_status.rb +4 -4
- data/lib/slack/smart-bot/commands/general/teams/ping_team.rb +10 -8
- data/lib/slack/smart-bot/commands/general/teams/see_teams.rb +73 -61
- data/lib/slack/smart-bot/commands/general/teams/see_vacations_team.rb +28 -13
- data/lib/slack/smart-bot/commands/general/teams/update_team.rb +9 -9
- data/lib/slack/smart-bot/commands/general_bot_commands.rb +1153 -835
- data/lib/slack/smart-bot/commands/on_bot/add_shortcut.rb +19 -17
- data/lib/slack/smart-bot/commands/on_bot/admin/add_routine.rb +12 -9
- data/lib/slack/smart-bot/commands/on_bot/admin/remove_routine.rb +2 -0
- data/lib/slack/smart-bot/commands/on_bot/admin/run_routine.rb +1 -0
- data/lib/slack/smart-bot/commands/on_bot/admin/see_routines.rb +5 -3
- data/lib/slack/smart-bot/commands/on_bot/admin_master/delete_message.rb +2 -3
- data/lib/slack/smart-bot/commands/on_bot/admin_master/get_bot_logs.rb +2 -3
- data/lib/slack/smart-bot/commands/on_bot/admin_master/react_to.rb +2 -3
- data/lib/slack/smart-bot/commands/on_bot/admin_master/send_message.rb +7 -6
- data/lib/slack/smart-bot/commands/on_bot/admin_master/update_message.rb +2 -3
- data/lib/slack/smart-bot/commands/on_bot/delete_repl.rb +1 -1
- data/lib/slack/smart-bot/commands/on_bot/delete_shortcut.rb +21 -20
- data/lib/slack/smart-bot/commands/on_bot/general/bot_stats.rb +40 -7
- data/lib/slack/smart-bot/commands/on_bot/general/bot_status.rb +6 -2
- data/lib/slack/smart-bot/commands/on_bot/general/stop_using_rules.rb +7 -6
- data/lib/slack/smart-bot/commands/on_bot/general/suggest_command.rb +5 -4
- data/lib/slack/smart-bot/commands/on_bot/general/use_rules.rb +4 -3
- data/lib/slack/smart-bot/commands/on_bot/get_repl.rb +4 -4
- data/lib/slack/smart-bot/commands/on_bot/kill_repl.rb +1 -1
- data/lib/slack/smart-bot/commands/on_bot/repl.rb +110 -53
- data/lib/slack/smart-bot/commands/on_bot/repl_client.rb +35 -29
- data/lib/slack/smart-bot/commands/on_bot/run_repl.rb +5 -5
- data/lib/slack/smart-bot/commands/on_bot/see_repls.rb +1 -2
- data/lib/slack/smart-bot/commands/on_bot/see_shortcuts.rb +5 -4
- data/lib/slack/smart-bot/commands/on_extended/bot_rules.rb +22 -11
- data/lib/slack/smart-bot/commands/on_master/admin_master/exit_bot.rb +12 -7
- data/lib/slack/smart-bot/commands/on_master/admin_master/notify_message.rb +2 -2
- data/lib/slack/smart-bot/commands/on_master/admin_master/publish_announcements.rb +1 -1
- data/lib/slack/smart-bot/commands/on_master/admin_master/set_general_message.rb +5 -5
- data/lib/slack/smart-bot/commands/on_master/admin_master/set_maintenance.rb +5 -5
- data/lib/slack/smart-bot/commands/on_master/create_bot.rb +3 -3
- data/lib/slack/smart-bot/commands.rb +10 -0
- data/lib/slack/smart-bot/config.rb +126 -0
- data/lib/slack/smart-bot/listen.rb +12 -11
- data/lib/slack/smart-bot/process.rb +62 -55
- data/lib/slack/smart-bot/process_first.rb +106 -65
- data/lib/slack/smart-bot/treat_message.rb +79 -47
- data/lib/slack/smart-bot/utils/answer.rb +11 -3
- data/lib/slack/smart-bot/utils/answer_delete.rb +11 -3
- data/lib/slack/smart-bot/utils/check_vacations.rb +21 -3
- data/lib/slack/smart-bot/utils/create_routine_thread.rb +13 -13
- data/lib/slack/smart-bot/utils/display_calendar.rb +42 -8
- data/lib/slack/smart-bot/utils/encryption/decrypt.rb +16 -9
- data/lib/slack/smart-bot/utils/encryption/encrypt.rb +14 -11
- data/lib/slack/smart-bot/utils/find_user.rb +71 -0
- data/lib/slack/smart-bot/utils/get_access_channels.rb +22 -3
- data/lib/slack/smart-bot/utils/get_channels_name_and_id.rb +3 -4
- data/lib/slack/smart-bot/utils/get_command_ids.rb +5 -5
- data/lib/slack/smart-bot/utils/get_countries_candelarific.rb +18 -0
- data/lib/slack/smart-bot/utils/get_help.rb +21 -19
- data/lib/slack/smart-bot/utils/get_openai_sessions.rb +47 -0
- data/lib/slack/smart-bot/utils/get_personal_settings.rb +29 -3
- data/lib/slack/smart-bot/utils/get_rules_imported.rb +27 -6
- data/lib/slack/smart-bot/utils/get_shares.rb +1 -1
- data/lib/slack/smart-bot/utils/get_team_members.rb +4 -4
- data/lib/slack/smart-bot/utils/get_vacations.rb +15 -7
- data/lib/slack/smart-bot/utils/has_access.rb +10 -4
- data/lib/slack/smart-bot/utils/is_admin.rb +25 -17
- data/lib/slack/smart-bot/utils/local_time.rb +29 -0
- data/lib/slack/smart-bot/utils/save_stats.rb +5 -3
- data/lib/slack/smart-bot/utils/update_access_channels.rb +19 -3
- data/lib/slack/smart-bot/utils/update_openai_sessions.rb +42 -0
- data/lib/slack/smart-bot/utils/update_personal_settings.rb +11 -3
- data/lib/slack/smart-bot/utils/update_rules_imported.rb +18 -3
- data/lib/slack/smart-bot/utils/update_vacations.rb +5 -2
- data/lib/slack/smart-bot/utils/upgrade_to_use_team_ids.rb +276 -0
- data/lib/slack/smart-bot/utils.rb +6 -1
- data/lib/slack-smart-bot.rb +182 -76
- data/lib/slack-smart-bot_general_commands.rb +10 -9
- data/whats_new.txt +30 -13
- metadata +152 -18
@@ -1,18 +1,22 @@
|
|
1
1
|
class SlackSmartBot
|
2
2
|
|
3
|
-
def bye_bot(dest,
|
3
|
+
def bye_bot(dest, user, display_name)
|
4
|
+
user_name = user.name
|
5
|
+
team_id = user.team_id
|
6
|
+
team_id_user = team_id + "_" + user_name
|
7
|
+
|
4
8
|
if @status == :on
|
5
9
|
save_stats(__method__)
|
6
10
|
bye = ["Bye", "Bæ", "Good Bye", "Adiós", "Ciao", "Bless", "Bless bless", "Adeu"].sample
|
7
11
|
respond "#{bye} #{display_name}", dest
|
8
12
|
|
9
|
-
if @listening.key?(
|
13
|
+
if @listening.key?(team_id_user)
|
10
14
|
if Thread.current[:on_thread]
|
11
|
-
@listening[
|
15
|
+
@listening[team_id_user].delete(Thread.current[:thread_ts])
|
12
16
|
else
|
13
|
-
@listening[
|
17
|
+
@listening[team_id_user].delete(dest)
|
14
18
|
end
|
15
|
-
@listening.delete(
|
19
|
+
@listening.delete(team_id_user) if @listening[team_id_user].empty?
|
16
20
|
end
|
17
21
|
end
|
18
22
|
end
|
@@ -9,7 +9,7 @@ class SlackSmartBot
|
|
9
9
|
channel = Thread.current[:dest]
|
10
10
|
end
|
11
11
|
if File.exist?("#{config.path}/announcements/#{channel}.csv") and !@announcements.key?(channel)
|
12
|
-
t = CSV.table("#{config.path}/announcements/#{channel}.csv", headers: ['message_id', 'user_deleted', 'user_created', 'date', 'time', 'type', 'message'])
|
12
|
+
t = CSV.table("#{config.path}/announcements/#{channel}.csv", headers: ['message_id', 'user_team_id_deleted', 'user_deleted', 'user_team_id_created', 'user_created', 'date', 'time', 'type', 'message'])
|
13
13
|
@announcements[channel] = t
|
14
14
|
end
|
15
15
|
found = false
|
@@ -19,6 +19,7 @@ class SlackSmartBot
|
|
19
19
|
@announcements[channel].each do |row|
|
20
20
|
if row[:message_id].to_i == message_id.to_i
|
21
21
|
message = row[:message]
|
22
|
+
row[:user_team_id_deleted] = user.team_id
|
22
23
|
row[:user_deleted] = user.name
|
23
24
|
end
|
24
25
|
csv << row
|
@@ -9,7 +9,7 @@ class SlackSmartBot
|
|
9
9
|
channel = Thread.current[:dest]
|
10
10
|
end
|
11
11
|
if File.exist?("#{config.path}/shares/#{@channels_name[channel]}.csv") and !@shares.key?(@channels_name[channel])
|
12
|
-
t = CSV.table("#{config.path}/shares/#{@channels_name[channel]}.csv", headers: ['share_id', 'user_deleted', 'user_created', 'date', 'time', 'type', 'to_channel', 'condition'])
|
12
|
+
t = CSV.table("#{config.path}/shares/#{@channels_name[channel]}.csv", headers: ['share_id', 'user_team_id_deleted', 'user_deleted', 'user_team_id_created', 'user_created', 'date', 'time', 'type', 'to_channel', 'condition'])
|
13
13
|
@shares[@channels_name[channel]] = t
|
14
14
|
end
|
15
15
|
found = false
|
@@ -19,6 +19,7 @@ class SlackSmartBot
|
|
19
19
|
@shares[@channels_name[channel]].each do |row|
|
20
20
|
if row[:share_id].to_i == share_id.to_i
|
21
21
|
message = row[:condition]
|
22
|
+
row[:user_team_id_deleted] = user.team_id
|
22
23
|
row[:user_deleted] = user.name
|
23
24
|
end
|
24
25
|
csv << row
|
@@ -4,7 +4,7 @@ class SlackSmartBot
|
|
4
4
|
not_allowed = ['hi_bot', 'bye_bot', "allow_access", "deny_access", "get_bot_logs", "add_routine", "pause_bot", "pause_routine", "remove_routine", "run_routine", "start_bot",
|
5
5
|
"start_routine", "delete_message", "update_message", "send_message", "kill_bot_on_channel", "exit_bot", "notify_message", "publish_announcements", "set_general_message",
|
6
6
|
"set_maintenance", 'bot_help', 'bot_rules']
|
7
|
-
if !is_admin?(user
|
7
|
+
if !is_admin?(user)
|
8
8
|
respond "Only admins of this channel can use this command. Take a look who is an admin of this channel by calling `see admins`"
|
9
9
|
elsif Thread.current[:dest][0] == "D"
|
10
10
|
respond "This command cannot be called from a DM"
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class SlackSmartBot
|
2
|
+
#todo: Add tests
|
3
|
+
def get_smartbot_readme(dest)
|
4
|
+
save_stats(__method__)
|
5
|
+
dir = Gem::Specification.latest_spec_for('slack-smart-bot').gem_dir
|
6
|
+
file_name = "README.md"
|
7
|
+
content = File.read("#{dir}/#{file_name}")
|
8
|
+
content.gsub!('"img/', '"https://raw.githubusercontent.com/MarioRuiz/slack-smart-bot/master/img/')
|
9
|
+
if File.exist?("#{dir}/#{file_name}")
|
10
|
+
send_file(dest, "SmartBot README", "", file_name, "text/markdown", "markdown", content: content)
|
11
|
+
else
|
12
|
+
respond "There is no README.md"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -3,6 +3,10 @@ class SlackSmartBot
|
|
3
3
|
def hi_bot(user, dest, from, display_name)
|
4
4
|
if @status == :on
|
5
5
|
save_stats(__method__)
|
6
|
+
user_name = user.name
|
7
|
+
team_id = user.team_id
|
8
|
+
team_id_user = team_id + "_" + user_name
|
9
|
+
|
6
10
|
greetings = ["Hello", "Hallo", "Hi", "Hola", "What's up", "Hey", "Hæ"].sample
|
7
11
|
respond "#{greetings} #{display_name}", dest
|
8
12
|
if Thread.current[:typem] == :on_pub or Thread.current[:typem] == :on_pg
|
@@ -12,7 +16,9 @@ class SlackSmartBot
|
|
12
16
|
message << "Call `bot help` to see the commands you can use."
|
13
17
|
respond message.join("\n")
|
14
18
|
elsif Thread.current[:typem] == :on_dm and Thread.current[:using_channel] == ''
|
15
|
-
|
19
|
+
unless @bots_created.empty?
|
20
|
+
respond "To start using the rules from a Bot channel call `use #CHANNEL`.\nAvailable SmartBots: <##{@bots_created.keys.join('>, <#')}>\nIf you want to call just one command from a specific channel: `#CHANNEL COMMAND`"
|
21
|
+
end
|
16
22
|
else
|
17
23
|
respond "You are on <##{@channel_id}> SmartBot channel. Call `bot help` to see all commands you can use or `bot rules` just to see the specific commands for this Bot channel."
|
18
24
|
end
|
@@ -22,11 +28,11 @@ class SlackSmartBot
|
|
22
28
|
message << "You can call a command from any other channel by calling `#CHANNEL COMMAND`" if Thread.current[:typem] == :on_dm
|
23
29
|
respond message.join("\n")
|
24
30
|
end
|
25
|
-
@listening[
|
31
|
+
@listening[team_id_user] = {} unless @listening.key?(team_id_user)
|
26
32
|
if Thread.current[:on_thread]
|
27
|
-
@listening[
|
33
|
+
@listening[team_id_user][Thread.current[:thread_ts]] = Time.now
|
28
34
|
else
|
29
|
-
@listening[
|
35
|
+
@listening[team_id_user][dest] = Time.now
|
30
36
|
end
|
31
37
|
end
|
32
38
|
end
|
@@ -2,32 +2,50 @@ class SlackSmartBot
|
|
2
2
|
def personal_settings(user, type, settings_id, settings_value)
|
3
3
|
save_stats "#{type}_personal_settings"
|
4
4
|
if Thread.current[:typem] == :on_dm
|
5
|
+
user_name = user.name
|
6
|
+
team_id = user.team_id
|
7
|
+
team_id_user = team_id + "_" + user_name
|
5
8
|
get_personal_settings()
|
6
|
-
@personal_settings[
|
9
|
+
@personal_settings[team_id_user] ||= {}
|
7
10
|
if type == :get
|
8
11
|
if settings_id.to_s == ''
|
9
12
|
personal_settings_txt = ""
|
10
|
-
@personal_settings[
|
13
|
+
@personal_settings[team_id_user].each do |key, value|
|
11
14
|
personal_settings_txt << "`#{key}`: #{value}\n"
|
12
15
|
end
|
16
|
+
if personal_settings_txt == ""
|
17
|
+
personal_settings_txt = "No personal settings found.\nYou can set personal settings with `set personal settings SETTINGS_ID VALUE`"
|
18
|
+
end
|
13
19
|
respond "Personal settings for *#{user.name}* are:\n#{personal_settings_txt}"
|
14
20
|
else
|
15
|
-
if @personal_settings[
|
16
|
-
respond "Personal settings for *#{settings_id}* is: *#{@personal_settings[
|
21
|
+
if @personal_settings[team_id_user].key?(settings_id)
|
22
|
+
respond "Personal settings for *#{settings_id}* is: *#{@personal_settings[team_id_user][settings_id]}*."
|
17
23
|
else
|
18
24
|
respond "Personal settings for *#{settings_id}* not found."
|
19
25
|
end
|
20
26
|
end
|
21
27
|
elsif type == :delete
|
22
|
-
if @personal_settings[
|
23
|
-
@personal_settings[
|
28
|
+
if @personal_settings[team_id_user].key?(settings_id)
|
29
|
+
@personal_settings[team_id_user].delete(settings_id)
|
24
30
|
update_personal_settings()
|
25
31
|
respond "Personal settings deleted for *#{settings_id}*."
|
26
32
|
else
|
27
|
-
|
33
|
+
settings_id_deleted = []
|
34
|
+
@personal_settings[team_id_user].each do |key, value|
|
35
|
+
if key.match?(/^#{settings_id}\./i)
|
36
|
+
@personal_settings[team_id_user].delete(key)
|
37
|
+
settings_id_deleted << key
|
38
|
+
end
|
39
|
+
end
|
40
|
+
if settings_id_deleted.empty?
|
41
|
+
respond "Personal settings for *#{settings_id}* not found."
|
42
|
+
else
|
43
|
+
update_personal_settings()
|
44
|
+
respond "Personal settings deleted for *#{settings_id}*:\n`#{settings_id_deleted.join("`, `")}`"
|
45
|
+
end
|
28
46
|
end
|
29
47
|
else #set
|
30
|
-
@personal_settings[
|
48
|
+
@personal_settings[team_id_user][settings_id] = settings_value
|
31
49
|
update_personal_settings()
|
32
50
|
respond "Personal settings set for *#{settings_id}*."
|
33
51
|
end
|
@@ -28,6 +28,30 @@ class SlackSmartBot
|
|
28
28
|
y: ["00000", "10001", "01010", "00100", "00100", "00100", "00000"],
|
29
29
|
z: ["00000", "11111", "00010", "00100", "01000", "11111", "00000"],
|
30
30
|
'!': ["0", "1", "1", "1", "0", "1", "0"],
|
31
|
+
"'": ["0", "1", "0", "0", "0", "0", "0"],
|
32
|
+
".": ["0", "0", "0", "0", "0", "1", "0"],
|
33
|
+
"|": ["0", "1", "1", "1", "1", "1", "0"],
|
34
|
+
"%": ["1001", "1001", "0010", "0100", "1001", "1001", "0000"],
|
35
|
+
"$": ["0110", "1001", "0110", "0010", "1001", "0110", "0000"],
|
36
|
+
"*": ["000", "010", "111", "010", "000", "000", "000"],
|
37
|
+
"/": ["000000", "000010", "000100", "001000", "010000", "100000", "000000"],
|
38
|
+
"(": ["000", "001", "010", "010", "010", "001", "000"],
|
39
|
+
")": ["000", "100", "010", "010", "010", "100", "000"],
|
40
|
+
"<": ["000", "001", "010", "100", "010", "001", "000"],
|
41
|
+
">": ["000", "100", "010", "001", "010", "100", "000"],
|
42
|
+
"[": ["00", "11", "10", "10", "10", "11", "00"],
|
43
|
+
"]": ["00", "11", "01", "01", "01", "11", "00"],
|
44
|
+
"{": ["00", "01", "10", "01", "10", "01", "00"],
|
45
|
+
"}": ["00", "10", "01", "10", "01", "10", "00"],
|
46
|
+
"_": ["000", "000", "000", "000", "000", "000", "111"],
|
47
|
+
"°": ["0110", "1001", "1001", "0110", "0000", "0000", "0000"],
|
48
|
+
"º": ["0110", "1001", "1001", "0110", "0000", "0000", "0000"],
|
49
|
+
"ª": ["0110", "1001", "0110", "0000", "0000", "0000", "0000"],
|
50
|
+
"&": ["0000", "0110", "1000", "0101", "1010", "0101", "0000"],
|
51
|
+
"#": ["00000", "01010", "11111", "01010", "11111", "01010", "00000"],
|
52
|
+
"@": ["01110", "10001", "10101", "10111", "10000", "01110", "00000"],
|
53
|
+
'^': ["00100", "01010", "10001", "00000", "00000", "00000", "00000"],
|
54
|
+
'"': ["000", "101", "101", "000", "000", "000", "000"],
|
31
55
|
'+': ["000", "000", "010", "111", "010", "000", "000"],
|
32
56
|
'-': ["000", "000", "000", "111", "000", "000", "000"],
|
33
57
|
'=': ["000", "000", "111", "000", "111", "000", "000"],
|
@@ -44,7 +68,7 @@ class SlackSmartBot
|
|
44
68
|
'9': ["000", "111", "101", "111", "001", "111", "000"],
|
45
69
|
' ': ["0", "0", "0", "0", "0", "0", "0"] }
|
46
70
|
|
47
|
-
emoticon_bg = ":
|
71
|
+
emoticon_bg = ":transparent_square:" if emoticon_bg.to_s == ""
|
48
72
|
emoticon_text = ":black_square:" if emoticon_text.to_s == ""
|
49
73
|
string.downcase!
|
50
74
|
messages = []
|
@@ -116,4 +140,4 @@ class SlackSmartBot
|
|
116
140
|
react :heavy_minus_sign
|
117
141
|
end
|
118
142
|
end
|
119
|
-
end
|
143
|
+
end
|
@@ -9,18 +9,7 @@ class SlackSmartBot
|
|
9
9
|
found_location = true
|
10
10
|
http = NiceHttp.new("#{config[:public_holidays][:host]}/api/v2")
|
11
11
|
if !defined?(@countries_candelarific)
|
12
|
-
|
13
|
-
@countries_candelarific = JSON.parse(File.read("#{config.path}/vacations/countries_candelarific.json"))
|
14
|
-
else
|
15
|
-
response = http.get "/countries?api_key=#{config[:public_holidays][:api_key]}"
|
16
|
-
countries_candelarific = response.data.json(:countries)
|
17
|
-
if countries_candelarific.is_a?(Array)
|
18
|
-
File.write("#{config.path}/vacations/countries_candelarific.json", countries_candelarific.to_json)
|
19
|
-
@countries_candelarific = JSON.parse(countries_candelarific.to_json)
|
20
|
-
else
|
21
|
-
@countries_candelarific = []
|
22
|
-
end
|
23
|
-
end
|
12
|
+
get_countries_candelarific()
|
24
13
|
end
|
25
14
|
country = @countries_candelarific.find { |c| c.country_name.match?(/^\s*#{country_name}\s*$/i) }
|
26
15
|
if country.nil?
|
@@ -95,24 +84,25 @@ class SlackSmartBot
|
|
95
84
|
date_holiday = " #{holiday[:date][:datetime][:year]}-#{"%02d" % m}-#{"%02d" % d} "
|
96
85
|
end
|
97
86
|
num_holidays_to_show += 1
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
87
|
+
unless num_holidays_to_show > 30 and publish_results
|
88
|
+
week_day = Date.new(holiday[:date][:datetime][:year], holiday[:date][:datetime][:month], holiday[:date][:datetime][:day]).strftime("%A")
|
89
|
+
messages << "\t:spiral_calendar_pad:#{date_holiday}*#{holiday[:name]}* _(#{holiday[:type].join(", ")}) (#{week_day})_"
|
90
|
+
messages << "\t#{holiday[:description]}"
|
91
|
+
if location == ""
|
92
|
+
if holiday.states.is_a?(Array)
|
93
|
+
messages << "\tLocations: #{holiday.states.name.sort.join(", ")}"
|
94
|
+
else
|
95
|
+
messages << "\tLocations: #{holiday.states}"
|
96
|
+
end
|
107
97
|
end
|
98
|
+
messages << "\n"
|
99
|
+
holidays_to_add << holiday
|
108
100
|
end
|
109
101
|
if holiday.states.is_a?(Array)
|
110
102
|
states << holiday.states.name
|
111
103
|
else
|
112
104
|
states << holiday.states
|
113
105
|
end
|
114
|
-
messages << "\n"
|
115
|
-
holidays_to_add << holiday
|
116
106
|
end
|
117
107
|
end
|
118
108
|
end
|
@@ -143,4 +133,4 @@ class SlackSmartBot
|
|
143
133
|
return (found_location==true and !country.nil?) if !publish_results
|
144
134
|
end
|
145
135
|
end
|
146
|
-
end
|
136
|
+
end
|