lib/socrates/adapters/slack_adapter.rb in socrates-0.1.6 vs lib/socrates/adapters/slack_adapter.rb in socrates-0.1.7

- old
+ new

@@ -4,33 +4,44 @@ def initialize(real_time_client) @real_time_client = real_time_client end def client_id_from_context(context) - context&.user + raise ArgumentError, "Context cannot be nil" if context.nil? + raise ArgumentError, "Expected context to respond to :user" unless context.respond_to?(:user) + + context.user end def send_message(message, context:) + raise ArgumentError, "Expected context to respond to :channel" unless context.respond_to?(:channel) + @real_time_client.message(text: message, channel: context.channel) end def send_direct_message(message, user, *) - user = user.id if user.respond_to?(:id) + raise ArgumentError, "Expected user to respond to :id" unless user.respond_to?(:id) im_channel = lookup_im_channel(user) @real_time_client.message(text: message, channel: im_channel) end - def users_list + def users_list(include_deleted: false, include_bots: false) client = @real_time_client.web_client - client.users_list + + client.users_list.tap do |response| + response.members.reject!(&:deleted?) unless include_deleted + response.members.reject!(&:is_bot?) unless include_bots + end end def lookup_email(context:) + raise ArgumentError, "Expected context to respond to :user" unless context.respond_to?(:user) + client = @real_time_client.web_client - info = client.users_info(user: context.user) - info.present? ? info.user.profile.email : nil + info = client.users_info(user: context.user) + info.present? ? info.user.profile.email.presence : nil end private def lookup_im_channel(user)