ruboty-attendance 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4904d8e184ac0e27b7f3de0b48c9d5518f45744e
4
- data.tar.gz: 85ff430145446783928c35e961d7f98cb82e059f
3
+ metadata.gz: 6d393ca269d49bbaf388554b39b5e7e24837ccf6
4
+ data.tar.gz: 4d4531971e83628d706af60cbe8e5c6b73654b2c
5
5
  SHA512:
6
- metadata.gz: 373f37b2b77982a132dbdcb8253caf58d8aea12a0c8e4d2e322b3d32ac11d12c55f6693d00ae025b669e27402bffbfcd834dfe3ec953211687aa2903db9fc2a6
7
- data.tar.gz: d521e95e2176d1f24b4fd32ef90170fd93352e1bf6f2056d88d21c623068a727c7dcb802b8e5d8d57cf6210ecb75a2b07a02ebafb3cdbc4510586d14bfdee258
6
+ metadata.gz: 2f708b9f7245403dc94da8a70361c26a14c602f2f2e560b010329566b0a1c98b2966cccf062a89b7f8b2861651c77e7ce29fe764d3a13163b951fc8e9b64522c
7
+ data.tar.gz: 7ad2ee8c2a210e28043b0ed2280c9a6498f552d4069ecd4f7f40c7f4d87dc47f5220e57007a78d0fece44463cc7d39aeda3388573065ec876119f7544c8e90e9
@@ -1,5 +1,5 @@
1
1
  module Ruboty
2
2
  module Attendance
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
@@ -3,12 +3,34 @@
3
3
  module Ruboty
4
4
  module Handlers
5
5
  class Attendance < Base
6
+ NAMESPACE = "attendance"
7
+
6
8
  on( /(?<name>.+) 出社/, name: "come_to_the_office", description: "<name> just got to work.")
7
9
 
8
10
  env :START_OF_OFFICE_HOURS, "The start of office hours. e.g. 9:30", optional: true
11
+
9
12
  private
10
13
 
11
14
  def come_to_the_office(message)
15
+ name = message[:name]
16
+ if check_duplicate(name)
17
+ duplicate(message)
18
+ return
19
+ end
20
+ check_limit ? success(name, message) : failure(name, message)
21
+ end
22
+
23
+ def check_duplicate(name)
24
+ last_time = scores[name]
25
+ return false unless last_time
26
+ now = Time.now
27
+ last = Time.at(last_time)
28
+ now.year == last.year &&
29
+ now.month == last.month &&
30
+ now.day == last.day
31
+ end
32
+
33
+ def check_limit
12
34
  now = Time.now
13
35
  limit = Time.local(
14
36
  now.year,
@@ -18,17 +40,22 @@ module Ruboty
18
40
  start_of_office_hours[1],
19
41
  00
20
42
  )
21
- now < limit ? success(message) : faild(message)
43
+ now <= limit
22
44
  end
23
45
 
24
- def faild(message)
25
- name = message[:name]
26
- message.reply("Login mission failed!\n今度はがんばりましょう")
46
+ def duplicate(message)
47
+ message.reply("Duplicate login!")
48
+ message.reply("#{robot.name} zoi ごはんにする")
49
+ end
50
+
51
+ def failure(name, message)
52
+ scores[name] = Time.now.to_i
53
+ message.reply("Login mission failure!\n今度はがんばりましょう")
27
54
  message.reply("#{name}--")
28
55
  end
29
56
 
30
- def success(message)
31
- name = message[:name]
57
+ def success(name, message)
58
+ scores[name] = Time.now.to_i
32
59
  message.reply("Login mission success!")
33
60
  message.reply("#{name}++")
34
61
  end
@@ -36,6 +63,10 @@ module Ruboty
36
63
  def start_of_office_hours
37
64
  ENV["START_OF_OFFICE_HOURS"].split(":").map(&:to_i)
38
65
  end
66
+
67
+ def scores
68
+ robot.brain.data[NAMESPACE] ||= {}
69
+ end
39
70
  end
40
71
  end
41
72
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruboty-attendance
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yoshiori SHOJI
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-26 00:00:00.000000000 Z
11
+ date: 2014-09-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruboty