Module: Kward::ChatInvocation

Defined in:
lib/kward/model/chat_invocation.rb

Constant Summary collapse

KEYWORD_PARAMETER_TYPES =
[:key, :keyreq].freeze

Class Method Summary collapse

Class Method Details

.call(client, messages, keywords) ⇒ Object



7
8
9
# File 'lib/kward/model/chat_invocation.rb', line 7

def call(client, messages, keywords)
  client.chat(messages, **supported_keywords(client, keywords))
end

.supported_keywords(client, keywords) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/kward/model/chat_invocation.rb', line 11

def supported_keywords(client, keywords)
  parameters = client.method(:chat).parameters
  return keywords if parameters.any? { |type, _name| type == :keyrest }

  supported = parameters.each_with_object({}) do |(type, name), names|
    names[name] = true if KEYWORD_PARAMETER_TYPES.include?(type)
  end
  keywords.select { |name, _value| supported.key?(name) }
rescue NameError
  keywords
end