slack-smart-bot 1.14.2 → 1.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (176) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +222 -37
  3. data/img/chat_gpt.png +0 -0
  4. data/img/chat_gpt_session.png +0 -0
  5. data/img/chat_gpt_share.png +0 -0
  6. data/img/command_add_sc.png +0 -0
  7. data/img/command_bot_help_echo.png +0 -0
  8. data/img/command_loop.png +0 -0
  9. data/img/command_my_timeoff.png +0 -0
  10. data/img/command_recap.png +0 -0
  11. data/img/command_repl1.png +0 -0
  12. data/img/command_repl2.png +0 -0
  13. data/img/command_ruby.png +0 -0
  14. data/img/command_run_repl.png +0 -0
  15. data/img/command_see_announcements.png +0 -0
  16. data/img/command_see_statuses.png +0 -0
  17. data/img/command_see_team.png +0 -0
  18. data/img/command_summarize.png +0 -0
  19. data/img/commands_inline.png +0 -0
  20. data/img/commands_on_demand.png +0 -0
  21. data/img/commands_on_external_call.png +0 -0
  22. data/img/image_editing.png +0 -0
  23. data/img/image_generation.png +0 -0
  24. data/img/image_variations.png +0 -0
  25. data/img/openai-300.png +0 -0
  26. data/img/openai.png +0 -0
  27. data/img/slack-300.png +0 -0
  28. data/img/slack.png +0 -0
  29. data/img/smart-bot-150.png +0 -0
  30. data/img/smart-bot-profile-pic-2.png +0 -0
  31. data/img/smart-bot-profile-pic.png +0 -0
  32. data/img/smart-bot.png +0 -0
  33. data/img/whisper.png +0 -0
  34. data/lib/slack/smart-bot/ai/open_ai/connect.rb +165 -43
  35. data/lib/slack/smart-bot/ai/open_ai/models.rb +61 -9
  36. data/lib/slack/smart-bot/ai/open_ai/send_gpt_chat.rb +67 -11
  37. data/lib/slack/smart-bot/ai/open_ai/send_image_edit.rb +4 -3
  38. data/lib/slack/smart-bot/ai/open_ai/send_image_generation.rb +4 -4
  39. data/lib/slack/smart-bot/ai/open_ai/send_image_variation.rb +4 -3
  40. data/lib/slack/smart-bot/ai/open_ai/whisper_transcribe.rb +4 -3
  41. data/lib/slack/smart-bot/comm/ask.rb +20 -8
  42. data/lib/slack/smart-bot/comm/dont_understand.rb +2 -2
  43. data/lib/slack/smart-bot/comm/event_hello.rb +30 -1
  44. data/lib/slack/smart-bot/comm/get_channel_members.rb +2 -1
  45. data/lib/slack/smart-bot/comm/get_presence.rb +1 -0
  46. data/lib/slack/smart-bot/comm/get_smartbot_team_info.rb +10 -0
  47. data/lib/slack/smart-bot/comm/get_user_info.rb +45 -6
  48. data/lib/slack/smart-bot/comm/get_users.rb +8 -1
  49. data/lib/slack/smart-bot/comm/respond.rb +225 -196
  50. data/lib/slack/smart-bot/comm/send_msg_channel.rb +2 -2
  51. data/lib/slack/smart-bot/comm/send_msg_user.rb +10 -9
  52. data/lib/slack/smart-bot/comm/unreact.rb +2 -2
  53. data/lib/slack/smart-bot/comm.rb +1 -0
  54. data/lib/slack/smart-bot/commands/general/add_admin.rb +16 -6
  55. data/lib/slack/smart-bot/commands/general/add_announcement.rb +3 -3
  56. data/lib/slack/smart-bot/commands/general/add_vacation.rb +28 -12
  57. data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_chat.rb +272 -23
  58. data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_chat_add_collaborator.rb +42 -0
  59. data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_chat_copy_session.rb +89 -0
  60. data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_chat_delete_session.rb +45 -0
  61. data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_chat_get_prompts.rb +41 -0
  62. data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_chat_list_sessions.rb +81 -0
  63. data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_chat_share_session.rb +52 -0
  64. data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_chat_use_model.rb +52 -0
  65. data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_edit_image.rb +14 -11
  66. data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_generate_image.rb +15 -11
  67. data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_models.rb +29 -17
  68. data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_variations_image.rb +16 -13
  69. data/lib/slack/smart-bot/commands/general/ai/open_ai/open_ai_whisper.rb +13 -7
  70. data/lib/slack/smart-bot/commands/general/allow_access.rb +8 -4
  71. data/lib/slack/smart-bot/commands/general/bot_help.rb +24 -10
  72. data/lib/slack/smart-bot/commands/general/bye_bot.rb +9 -5
  73. data/lib/slack/smart-bot/commands/general/delete_announcement.rb +2 -1
  74. data/lib/slack/smart-bot/commands/general/delete_share.rb +2 -1
  75. data/lib/slack/smart-bot/commands/general/deny_access.rb +1 -1
  76. data/lib/slack/smart-bot/commands/general/get_smartbot_readme.rb +15 -0
  77. data/lib/slack/smart-bot/commands/general/hi_bot.rb +10 -4
  78. data/lib/slack/smart-bot/commands/general/personal_settings.rb +26 -8
  79. data/lib/slack/smart-bot/commands/general/poster.rb +26 -2
  80. data/lib/slack/smart-bot/commands/general/public_holidays.rb +14 -24
  81. data/lib/slack/smart-bot/commands/general/recap.rb +399 -0
  82. data/lib/slack/smart-bot/commands/general/remove_admin.rb +19 -9
  83. data/lib/slack/smart-bot/commands/general/remove_vacation.rb +23 -6
  84. data/lib/slack/smart-bot/commands/general/see_access.rb +2 -1
  85. data/lib/slack/smart-bot/commands/general/see_admins.rb +8 -4
  86. data/lib/slack/smart-bot/commands/general/see_announcements.rb +5 -5
  87. data/lib/slack/smart-bot/commands/general/see_favorite_commands.rb +4 -4
  88. data/lib/slack/smart-bot/commands/general/see_shares.rb +1 -1
  89. data/lib/slack/smart-bot/commands/general/see_vacations.rb +34 -17
  90. data/lib/slack/smart-bot/commands/general/set_public_holidays.rb +4 -2
  91. data/lib/slack/smart-bot/commands/general/share_messages.rb +3 -3
  92. data/lib/slack/smart-bot/commands/general/summarize.rb +191 -0
  93. data/lib/slack/smart-bot/commands/general/teams/add_team.rb +4 -8
  94. data/lib/slack/smart-bot/commands/general/teams/delete_team.rb +3 -3
  95. data/lib/slack/smart-bot/commands/general/teams/memos/add_memo_team.rb +34 -29
  96. data/lib/slack/smart-bot/commands/general/teams/memos/add_memo_team_comment.rb +1 -1
  97. data/lib/slack/smart-bot/commands/general/teams/memos/delete_memo_team.rb +6 -4
  98. data/lib/slack/smart-bot/commands/general/teams/memos/see_memo_team.rb +26 -15
  99. data/lib/slack/smart-bot/commands/general/teams/memos/see_memos_team.rb +33 -24
  100. data/lib/slack/smart-bot/commands/general/teams/memos/set_memo_status.rb +4 -4
  101. data/lib/slack/smart-bot/commands/general/teams/ping_team.rb +10 -8
  102. data/lib/slack/smart-bot/commands/general/teams/see_teams.rb +73 -61
  103. data/lib/slack/smart-bot/commands/general/teams/see_vacations_team.rb +28 -13
  104. data/lib/slack/smart-bot/commands/general/teams/update_team.rb +9 -9
  105. data/lib/slack/smart-bot/commands/general_bot_commands.rb +1152 -839
  106. data/lib/slack/smart-bot/commands/on_bot/add_shortcut.rb +18 -17
  107. data/lib/slack/smart-bot/commands/on_bot/admin/add_routine.rb +11 -9
  108. data/lib/slack/smart-bot/commands/on_bot/admin/remove_routine.rb +2 -0
  109. data/lib/slack/smart-bot/commands/on_bot/admin/run_routine.rb +1 -0
  110. data/lib/slack/smart-bot/commands/on_bot/admin/see_routines.rb +5 -3
  111. data/lib/slack/smart-bot/commands/on_bot/admin_master/delete_message.rb +2 -3
  112. data/lib/slack/smart-bot/commands/on_bot/admin_master/get_bot_logs.rb +2 -3
  113. data/lib/slack/smart-bot/commands/on_bot/admin_master/react_to.rb +2 -3
  114. data/lib/slack/smart-bot/commands/on_bot/admin_master/send_message.rb +7 -6
  115. data/lib/slack/smart-bot/commands/on_bot/admin_master/update_message.rb +2 -3
  116. data/lib/slack/smart-bot/commands/on_bot/delete_repl.rb +1 -1
  117. data/lib/slack/smart-bot/commands/on_bot/delete_shortcut.rb +21 -20
  118. data/lib/slack/smart-bot/commands/on_bot/general/bot_stats.rb +40 -7
  119. data/lib/slack/smart-bot/commands/on_bot/general/bot_status.rb +6 -2
  120. data/lib/slack/smart-bot/commands/on_bot/general/stop_using_rules.rb +7 -6
  121. data/lib/slack/smart-bot/commands/on_bot/general/suggest_command.rb +5 -4
  122. data/lib/slack/smart-bot/commands/on_bot/general/use_rules.rb +4 -3
  123. data/lib/slack/smart-bot/commands/on_bot/get_repl.rb +4 -4
  124. data/lib/slack/smart-bot/commands/on_bot/kill_repl.rb +1 -1
  125. data/lib/slack/smart-bot/commands/on_bot/repl.rb +109 -53
  126. data/lib/slack/smart-bot/commands/on_bot/repl_client.rb +35 -29
  127. data/lib/slack/smart-bot/commands/on_bot/run_repl.rb +5 -5
  128. data/lib/slack/smart-bot/commands/on_bot/see_repls.rb +1 -2
  129. data/lib/slack/smart-bot/commands/on_bot/see_shortcuts.rb +5 -4
  130. data/lib/slack/smart-bot/commands/on_extended/bot_rules.rb +22 -12
  131. data/lib/slack/smart-bot/commands/on_master/admin_master/exit_bot.rb +12 -7
  132. data/lib/slack/smart-bot/commands/on_master/admin_master/notify_message.rb +2 -2
  133. data/lib/slack/smart-bot/commands/on_master/admin_master/publish_announcements.rb +1 -1
  134. data/lib/slack/smart-bot/commands/on_master/admin_master/set_general_message.rb +5 -5
  135. data/lib/slack/smart-bot/commands/on_master/admin_master/set_maintenance.rb +5 -5
  136. data/lib/slack/smart-bot/commands/on_master/create_bot.rb +3 -3
  137. data/lib/slack/smart-bot/commands.rb +10 -0
  138. data/lib/slack/smart-bot/config.rb +126 -0
  139. data/lib/slack/smart-bot/listen.rb +12 -11
  140. data/lib/slack/smart-bot/process.rb +62 -55
  141. data/lib/slack/smart-bot/process_first.rb +106 -65
  142. data/lib/slack/smart-bot/treat_message.rb +79 -47
  143. data/lib/slack/smart-bot/utils/answer.rb +11 -3
  144. data/lib/slack/smart-bot/utils/answer_delete.rb +11 -3
  145. data/lib/slack/smart-bot/utils/check_vacations.rb +21 -3
  146. data/lib/slack/smart-bot/utils/create_routine_thread.rb +13 -13
  147. data/lib/slack/smart-bot/utils/display_calendar.rb +42 -8
  148. data/lib/slack/smart-bot/utils/encryption/decrypt.rb +16 -9
  149. data/lib/slack/smart-bot/utils/encryption/encrypt.rb +14 -11
  150. data/lib/slack/smart-bot/utils/find_user.rb +71 -0
  151. data/lib/slack/smart-bot/utils/get_access_channels.rb +22 -3
  152. data/lib/slack/smart-bot/utils/get_channels_name_and_id.rb +3 -4
  153. data/lib/slack/smart-bot/utils/get_command_ids.rb +5 -5
  154. data/lib/slack/smart-bot/utils/get_countries_candelarific.rb +18 -0
  155. data/lib/slack/smart-bot/utils/get_help.rb +21 -19
  156. data/lib/slack/smart-bot/utils/get_openai_sessions.rb +47 -0
  157. data/lib/slack/smart-bot/utils/get_personal_settings.rb +29 -3
  158. data/lib/slack/smart-bot/utils/get_rules_imported.rb +27 -6
  159. data/lib/slack/smart-bot/utils/get_shares.rb +1 -1
  160. data/lib/slack/smart-bot/utils/get_team_members.rb +4 -4
  161. data/lib/slack/smart-bot/utils/get_vacations.rb +15 -7
  162. data/lib/slack/smart-bot/utils/has_access.rb +10 -4
  163. data/lib/slack/smart-bot/utils/is_admin.rb +25 -17
  164. data/lib/slack/smart-bot/utils/local_time.rb +29 -0
  165. data/lib/slack/smart-bot/utils/save_stats.rb +5 -3
  166. data/lib/slack/smart-bot/utils/update_access_channels.rb +19 -3
  167. data/lib/slack/smart-bot/utils/update_openai_sessions.rb +42 -0
  168. data/lib/slack/smart-bot/utils/update_personal_settings.rb +11 -3
  169. data/lib/slack/smart-bot/utils/update_rules_imported.rb +18 -3
  170. data/lib/slack/smart-bot/utils/update_vacations.rb +5 -2
  171. data/lib/slack/smart-bot/utils/upgrade_to_use_team_ids.rb +276 -0
  172. data/lib/slack/smart-bot/utils.rb +6 -1
  173. data/lib/slack-smart-bot.rb +182 -76
  174. data/lib/slack-smart-bot_general_commands.rb +10 -9
  175. data/whats_new.txt +30 -13
  176. metadata +148 -20
@@ -1,18 +1,22 @@
1
1
  class SlackSmartBot
2
2
 
3
- def bye_bot(dest, from, display_name)
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?(from)
13
+ if @listening.key?(team_id_user)
10
14
  if Thread.current[:on_thread]
11
- @listening[from].delete(Thread.current[:thread_ts])
15
+ @listening[team_id_user].delete(Thread.current[:thread_ts])
12
16
  else
13
- @listening[from].delete(dest)
17
+ @listening[team_id_user].delete(dest)
14
18
  end
15
- @listening.delete(from) if @listening[from].empty?
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.name)
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
- 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`"
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[from] = {} unless @listening.key?(from)
31
+ @listening[team_id_user] = {} unless @listening.key?(team_id_user)
26
32
  if Thread.current[:on_thread]
27
- @listening[from][Thread.current[:thread_ts]] = Time.now
33
+ @listening[team_id_user][Thread.current[:thread_ts]] = Time.now
28
34
  else
29
- @listening[from][dest] = Time.now
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[user.name] ||= {}
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[user.name].each do |key, value|
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[user.name].key?(settings_id)
16
- respond "Personal settings for *#{settings_id}* is: *#{@personal_settings[user.name][settings_id]}*."
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[user.name].key?(settings_id)
23
- @personal_settings[user.name].delete(settings_id)
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
- respond "Personal settings for *#{settings_id}* not found."
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[user.name][settings_id] = settings_value
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 = ":white_square:" if emoticon_bg.to_s == ""
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
- if File.exist?("#{config.path}/vacations/countries_candelarific.json")
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
- break if num_holidays_to_show > 30 and publish_results
99
- week_day = Date.new(holiday[:date][:datetime][:year], holiday[:date][:datetime][:month], holiday[:date][:datetime][:day]).strftime("%A")
100
- messages << "\t:spiral_calendar_pad:#{date_holiday}*#{holiday[:name]}* _(#{holiday[:type].join(", ")}) (#{week_day})_"
101
- messages << "\t#{holiday[:description]}"
102
- if location == ""
103
- if holiday.states.is_a?(Array)
104
- messages << "\tLocations: #{holiday.states.name.sort.join(", ")}"
105
- else
106
- messages << "\tLocations: #{holiday.states}"
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