qwtf_discord_bot 0.5.5 → 0.5.6

Sign up to get free protection for your applications and to get access to all the features.
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: