class Ruboty::Handlers::Attendance

Constants

NAMESPACE

Private Instance Methods

check_duplicate(name) click to toggle source
# File lib/ruboty/handlers/attendance.rb, line 23
def check_duplicate(name)
  last_time = scores[name]
  return false unless last_time
  now = Time.now
  last = Time.at(last_time)
  now.year == last.year &&
  now.month == last.month &&
  now.day == last.day
end
check_limit() click to toggle source
# File lib/ruboty/handlers/attendance.rb, line 33
def check_limit
  now = Time.now
  limit = Time.local(
    now.year,
    now.month,
    now.day,
    start_of_office_hours[0],
    start_of_office_hours[1],
    00
  )
  now <= limit
end
come_to_the_office(message) click to toggle source
# File lib/ruboty/handlers/attendance.rb, line 14
def come_to_the_office(message)
  name = message[:name]
  if check_duplicate(name)
    duplicate(message)
    return
  end
  check_limit ? success(name, message) : failure(name, message)
end
duplicate(message) click to toggle source
# File lib/ruboty/handlers/attendance.rb, line 46
def duplicate(message)
  message.reply("Duplicate login!")
  message.reply("#{robot.name} zoi ごはんにする")
end
failure(name, message) click to toggle source
# File lib/ruboty/handlers/attendance.rb, line 51
def failure(name, message)
  scores[name] = Time.now.to_i
  message.reply("Login mission failure!\n今度はがんばりましょう")
  message.reply("#{name}--")
end
scores() click to toggle source
# File lib/ruboty/handlers/attendance.rb, line 67
def scores
  robot.brain.data[NAMESPACE] ||= {}
end
start_of_office_hours() click to toggle source
# File lib/ruboty/handlers/attendance.rb, line 63
def start_of_office_hours
  ENV["START_OF_OFFICE_HOURS"].split(":").map(&:to_i)
end
success(name, message) click to toggle source
# File lib/ruboty/handlers/attendance.rb, line 57
def success(name, message)
  scores[name] = Time.now.to_i
  message.reply("Login mission success!")
  message.reply("#{name}++")
end