qwtf_discord_bot 0.5.5 → 0.5.6

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
  SHA256:
3
- metadata.gz: d8f3564733016efd63023d456c13f2d5635ea15b1d4ef68d7f61d4f724383005
4
- data.tar.gz: b27586638ec43753c37e77f960449c03ede61521018d0e8d55ce8e15e1b02218
3
+ metadata.gz: 625dc50fbaa6381cf034e4c390056a569214b48353640b10964dcb98c9398d81
4
+ data.tar.gz: 77edfe65a8d87813c53a51b2eeaf7f28902bdf842a16dba02887a71163ce44fc
5
5
  SHA512:
6
- metadata.gz: c55ca87e0642fb10337aad2dca53541a64c5bcd4407849497f2e4b149ec0de872ae1679774fbeaef8398a31dc5907869a509b162a97e9178079c8c2bde8f4cb9
7
- data.tar.gz: 67783c44fed2b6870599b7b141cdfea210dd8e0472e93381c085190146cc007da079dcddc3862699fb61b709c82fd5c57ebe8f60056c7d457acf9a0ad9645f68
6
+ metadata.gz: f8a3e1e910013ef151e4d8d955987064530bcb67e4e185967cc3029785832df64b4fadf36833a030b49fe63e01ef6cc59204592919ce59445f6342da72a07aa2
7
+ data.tar.gz: fc32085412a1b9c1fdf21a7e7523bbfc87fbfd673974f08f335b4e86c53c3a8987e8b404560b2ff5dfc38c41c315dbdbd73d31047d0d4aabadcbaf617c1d63e8
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- qwtf_discord_bot (0.5.1)
4
+ qwtf_discord_bot (0.5.6)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/lib/qstat_request.rb CHANGED
@@ -7,17 +7,7 @@ class QstatRequest
7
7
  def teams
8
8
  @teams ||= begin
9
9
  return nil unless has_players?
10
-
11
- roster = {}
12
-
13
- teams = players.map(&:team).uniq
14
- teams.each { |team| roster[team] = [] }
15
-
16
- players.each do |player|
17
- roster[player.team] << player
18
- end
19
-
20
- roster
10
+ build_roster
21
11
  end
22
12
  end
23
13
 
@@ -31,17 +21,8 @@ class QstatRequest
31
21
 
32
22
  embed = Discordrb::Webhooks::Embed.new
33
23
 
34
- teams.each do |team, players|
35
- player_list = players.map(&:to_row).join("\n")
36
- score = players.first.score
37
-
38
- field_name = case
39
- when team.empty? then "No Team"
40
- when score < 0 then "#{team.capitalize}"
41
- when score >= 0 then "#{team.capitalize} | #{score}"
42
- end
43
-
44
- embed.add_field(Discordrb::Webhooks::EmbedField.new(inline: true, name: field_name, value: player_list))
24
+ teams.each do |_name, team|
25
+ embed.add_field(team.to_embed_field)
45
26
  end
46
27
 
47
28
  embed
@@ -86,6 +67,19 @@ class QstatRequest
86
67
  @data["maxplayers"]
87
68
  end
88
69
 
70
+ def build_roster
71
+ roster = {}
72
+
73
+ @data["players"].map do |player_data|
74
+ player = Player.new(player_data)
75
+ team_name = player.team
76
+ roster[team_name] ||= Team.new(team_name)
77
+ roster[team_name].enlist(player)
78
+ end
79
+
80
+ roster
81
+ end
82
+
89
83
  def players
90
84
  @data["players"].map do |player_data|
91
85
  Player.new(player_data)
@@ -6,7 +6,7 @@ class QwtfDiscordBotWatcher < QwtfDiscordBot
6
6
  every(THIRTY_SECONDS) do
7
7
  request = QstatRequest.new(endpoint)
8
8
 
9
- if request.player_names
9
+ if request.has_players?
10
10
  request.player_names.each do |name|
11
11
  unless seen_recently?(name)
12
12
  report_joined(name: name, server_summary: request.server_summary)
@@ -1,3 +1,3 @@
1
1
  class QwtfDiscordBot
2
- VERSION = '0.5.5'.freeze
2
+ VERSION = '0.5.6'.freeze
3
3
  end
data/lib/team.rb CHANGED
@@ -1,13 +1,44 @@
1
1
  class Team
2
- attr_accessor :number
2
+ attr_accessor :name, :number, :players
3
3
 
4
- TEAMS = { spec: 0, blue: 1, red: 2, yell: 3, gren: 4 }.freeze
4
+ TEAMS = { "blue": 1, "red": 2, "yell": 3, "gren": 4, "spec": 5 }.freeze
5
5
 
6
- def initialize(sym)
7
- @number = TEAMS[sym] || 0
6
+ def initialize(name)
7
+ @name = build_name(name)
8
+ @number = TEAMS[name] || 5
9
+ @players = []
8
10
  end
9
11
 
10
- def to_s
11
- TEAMS.key(@number).to_s
12
+ def enlist(player)
13
+ @players << player
12
14
  end
15
+
16
+ def to_embed_field
17
+ Discordrb::Webhooks::EmbedField.new(inline: true, name: field_name, value: player_list)
18
+ end
19
+
20
+ private
21
+
22
+ def field_name
23
+ return "#{@name}" unless playing?
24
+ "#{@name} | #{score}"
25
+ end
26
+
27
+ def playing?
28
+ [1..4].include?(@number)
29
+ end
30
+
31
+ def player_list
32
+ players.map(&:to_row).join("\n")
33
+ end
34
+
35
+ def score
36
+ nil if @name == "Spec"
37
+ @players.first.score
38
+ end
39
+
40
+ def build_name(name)
41
+ name = TEAMS[name] || "spec"
42
+ name.capitalize
43
+ end
13
44
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qwtf_discord_bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sheldon Johnson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-15 00:00:00.000000000 Z
11
+ date: 2018-08-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A Discord bot for reporting on QuakeWorld Team Fortress game servers
14
14
  email: