ruboty-slack_take_turns 0.2.1 → 0.3.0

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
- SHA1:
3
- metadata.gz: 402c008854811042a1355dc92faf6c2fbe00466e
4
- data.tar.gz: 8dd4131bb8cc684439491d2efbe87b4e6f42d14f
2
+ SHA256:
3
+ metadata.gz: 28faeedaaa8d7e387c3640429ea093de59165aeb2661205d4aa0fbd98a663d72
4
+ data.tar.gz: f0ad79e131d11bf74ffab2fa4c4496e1e9193e11180f6e9ac75d02c263485555
5
5
  SHA512:
6
- metadata.gz: 9464ac1d146ceeb79eeec322700d0cfa27a14557ab62a12104422d19e571d8d88ada5997661378199ef66f2d2c5eb542f3c24027cd87048007898b496cbaa186
7
- data.tar.gz: 19e9a2f285d9c6a73e77cff83807de8f0a36fb965f452b32727a249cfdc4473f5510f40059b9fbf9b3ea482e06a6a24e44c3d4774f66bf8a26ea09cce47e155c
6
+ metadata.gz: 1f5c290764fdcffc94a00a52000280a25ce1446212d950ca3df0eb9df2c32442e1faa931fefbe56c80f63f12ce35d2449b72656fa815df8c70938563d1cdac7b
7
+ data.tar.gz: 291f67b30121a52378df4f1b190e1e173dfd8565ab991d7c17f01fa3ec39f41291a8c8b8f237d4098ec7b5d18365b3eeb9e3d2c62457c96bfc975befec763b09
data/.gitignore CHANGED
File without changes
data/Gemfile CHANGED
File without changes
data/LICENSE CHANGED
File without changes
data/README.md CHANGED
File without changes
data/Rakefile CHANGED
File without changes
data/bin/console CHANGED
File without changes
data/bin/setup CHANGED
File without changes
@@ -25,12 +25,12 @@ module Ruboty
25
25
  description: "#{I18n.t 'messages.handlers.next'}",
26
26
  )
27
27
  on(
28
- /exclude (?<user_name>.+?)\z/,
28
+ /exclude (?<space_separated_user_names>.+?)\z/,
29
29
  name: "exclude",
30
30
  description: "#{I18n.t 'messages.handlers.exclude'}",
31
31
  )
32
32
  on(
33
- /include (?<user_name>.+?)\z/,
33
+ /include (?<space_separated_user_names>.+?)\z/,
34
34
  name: "include",
35
35
  description: "#{I18n.t 'messages.handlers.include'}",
36
36
  )
File without changes
File without changes
File without changes
File without changes
@@ -15,12 +15,17 @@ module Ruboty
15
15
  private
16
16
 
17
17
  def exclude
18
- user_name = message[:user_name]
19
- user_id = find_user_id_by_user_name(user_name)
20
- unless excluded_user_ids.include? user_id
21
- excluded_user_ids << user_id
18
+ user_names = message[:space_separated_user_names].strip.delete('@').split(/\s*,\s*/)
19
+ excluded_user_names = []
20
+ user_names.each do |user_name|
21
+ user_id = find_user_id_by_user_name(user_name)
22
+ unless excluded_user_ids.include? user_id
23
+ excluded_user_ids << user_id
24
+ excluded_user_names << user_name
25
+ end
22
26
  end
23
- "#{I18n.t 'messages.actions.exclude', user_name: user_name}"
27
+ return I18n.t 'messages.actions.exclude_failure' if excluded_user_names.empty?
28
+ "#{I18n.t 'messages.actions.exclude', user_name: excluded_user_names.map{|name| "@#{name}"}.join(', ')}"
24
29
  end
25
30
 
26
31
  end
File without changes
@@ -15,12 +15,17 @@ module Ruboty
15
15
  private
16
16
 
17
17
  def include
18
- user_name = message[:user_name]
19
- user_id = find_user_id_by_user_name(user_name)
20
- if excluded_user_ids.include? user_id
21
- excluded_user_ids.delete user_id
18
+ user_names = message[:space_separated_user_names].strip.delete('@').split(/\s*,\s*/)
19
+ included_user_names = []
20
+ user_names.each do |user_name|
21
+ user_id = find_user_id_by_user_name(user_name)
22
+ if excluded_user_ids.include? user_id
23
+ excluded_user_ids.delete user_id
24
+ included_user_names << user_name
25
+ end
22
26
  end
23
- "#{I18n.t 'messages.actions.include', user_name: user_name}"
27
+ return I18n.t 'messages.actions.include_failure' if included_user_names.empty?
28
+ "#{I18n.t 'messages.actions.include', user_name: included_user_names.map{|name| "@#{name}"}.join(', ')}"
24
29
  end
25
30
 
26
31
  end
File without changes
File without changes
@@ -13,8 +13,10 @@ en:
13
13
  @%{current_user_name}, please deal with the task below.
14
14
  %{keyword}
15
15
  current: "@%{current_user_name} is on duty now."
16
- exclude: made @%{user_name} to not be on duty after this
17
- include: made @%{user_name} to be on duty after this
16
+ exclude: made %{user_name} to not be on duty after this.
17
+ exclude_failure: Exclude failure. spelling mistake?.
18
+ include: made %{user_name} to be on duty after this.
19
+ include_failure: Include failure. spelling mistake?.
18
20
  force:
19
21
  ok: made @%{user_name} to take over a duty
20
22
  ng: "%{user_name} is free from a duty"
@@ -13,8 +13,10 @@ ja:
13
13
  @%{current_user_name}さん、下記の対応をお願いします。
14
14
  %{keyword}
15
15
  current: "現在の当番は@%{current_user_name}さんです"
16
- exclude: "@%{user_name}さんを当番から除外しました"
17
- include: "@%{user_name}さんを当番に加えました"
16
+ exclude: "%{user_name}さんを当番から除外しました"
17
+ exclude_failure: "当番から除外するのに失敗しました。スペルミス?"
18
+ include: "%{user_name}さんを当番に加えました"
19
+ include_failure: "当番に追加するのに失敗しました。スペルミス?"
18
20
  force:
19
21
  ok: "@%{user_name}さんを当番にしました"
20
22
  ng: "%{user_name}さんは当番から除外されています"
@@ -7,6 +7,7 @@ module Ruboty
7
7
  def initialize(channel)
8
8
  @client ||= Slack::Client.new(token: ENV['SLACK_TOKEN'])
9
9
  @channel = channel
10
+ @channels_info = {}
10
11
  end
11
12
 
12
13
  def all_users
@@ -24,32 +25,32 @@ module Ruboty
24
25
  def channel_user_ids
25
26
  unless @channel_user_ids&.dig(channel)
26
27
  @channel_user_ids = {} unless @channel_user_ids
27
- ids = private_channel? ? private_channel_user_ids : public_channel_user_ids
28
+ ids = private_channel?(channel) ? private_channel_user_ids(channel) : public_channel_user_ids(channel)
29
+ # 退職してアカウント停止した人とボットは除く
30
+ ids = ids.select{|id| user = find_user_by_user_id(id); !user['deleted'] && !user['is_bot']}
28
31
  @channel_user_ids[channel] = ids.sort
29
32
  end
30
33
  @channel_user_ids[channel]
31
34
  end
32
35
 
33
- def channels_info
34
- @channels_info ||= client.channels_info(channel: channel)
36
+ def public_channel_user_ids(channel)
37
+ channel_info = @channels_info[channel]
38
+ @channels_info[channel] = client.channels_info(channel: channel) unless channel_info
39
+ @channels_info[channel]['channel']['members']
35
40
  end
36
41
 
37
- def public_channel_user_ids
38
- channels_info['channel']['members']
42
+ def private_channel_user_ids(channel)
43
+ channel_info = @channels_info[channel]
44
+ @channels_info[channel] = client.groups_info(channel: channel) unless channel_info
45
+ @channels_info[channel]['group']['members']
39
46
  end
40
47
 
41
- def private_channel_user_ids
42
- private_channels = groups_list
43
- current_channel = private_channels.find{|c| c['id'] == channel}
44
- current_channel['members']
48
+ def private_channel?(channel)
49
+ channel[0] == "G"
45
50
  end
46
51
 
47
- def groups_list
48
- @groups_list ||= client.groups_list['groups']
49
- end
50
-
51
- def private_channel?
52
- channels_info['error'] == "channel_not_found"
52
+ def find_user_by_user_id(user_id)
53
+ all_users_hash[user_id] || raise("user not found user_id: #{user_id}#")
53
54
  end
54
55
 
55
56
  end
@@ -1,5 +1,5 @@
1
1
  module Ruboty
2
2
  module SlackTakeTurns
3
- VERSION = "0.2.1"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruboty-slack_take_turns
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - oharato
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-16 00:00:00.000000000 Z
11
+ date: 2019-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -115,8 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  requirements: []
118
- rubyforge_project:
119
- rubygems_version: 2.5.2
118
+ rubygems_version: 3.0.3
120
119
  signing_key:
121
120
  specification_version: 4
122
121
  summary: Ruboty plugin to manage a duty that members in a slack channel take turns