module SlackMathbot
|
|
module Commands
|
|
class Calculator < SlackRubyBot::Commands::Base
|
|
operator '=' do |client, _data, _match|
|
|
# Set API key (donut steal)
|
|
Wolfram.appid = "R3KHQ2-2T2769PP4P"
|
|
|
|
# Get equation part of argument
|
|
eq = _match[1..-1]
|
|
|
|
# Get results from Wolfram Alpha
|
|
result = Wolfram.fetch(eq[1])
|
|
|
|
# Get hash of results
|
|
hash = Wolfram::HashPresenter.new(result).to_hash
|
|
|
|
# Debug output hash
|
|
puts hash
|
|
|
|
# Breakdown hash
|
|
pods = hash[:pods]
|
|
|
|
# Try for results
|
|
result = pods["Result"]
|
|
puts result
|
|
|
|
# If result exists
|
|
if result != nil
|
|
# Prettify equivalency
|
|
result[0].sub! "~~", "≈"
|
|
send_message client, _data.channel, result[0]
|
|
else
|
|
# If result doesn't exist, look for the real solution
|
|
solution = pods["Real solution"]
|
|
puts solution
|
|
|
|
# If the real solution exists
|
|
if solution != nil
|
|
# Prettify equivalency
|
|
solution[0].sub! "~~", "≈"
|
|
send_message client, _data.channel, solution[0]
|
|
else
|
|
# Check the other possible name for real solutions
|
|
solution = pods["Real solutions"]
|
|
|
|
if solution != nil
|
|
# Prettify equivalency
|
|
solution[0].sub! "~~", "≈"
|
|
puts solution
|
|
send_message client, _data.channel, solution[0]
|
|
else
|
|
decimal = pods["Decimal approximation"]
|
|
|
|
if decimal != nil
|
|
puts decimal
|
|
send_message client, _data.channel, decimal[0]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|