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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/qstat_request.rb +16 -22
- data/lib/qwtf_discord_bot/qwtf_discord_bot_watcher.rb +1 -1
- data/lib/qwtf_discord_bot/version.rb +1 -1
- data/lib/team.rb +37 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 625dc50fbaa6381cf034e4c390056a569214b48353640b10964dcb98c9398d81
|
4
|
+
data.tar.gz: 77edfe65a8d87813c53a51b2eeaf7f28902bdf842a16dba02887a71163ce44fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8a3e1e910013ef151e4d8d955987064530bcb67e4e185967cc3029785832df64b4fadf36833a030b49fe63e01ef6cc59204592919ce59445f6342da72a07aa2
|
7
|
+
data.tar.gz: fc32085412a1b9c1fdf21a7e7523bbfc87fbfd673974f08f335b4e86c53c3a8987e8b404560b2ff5dfc38c41c315dbdbd73d31047d0d4aabadcbaf617c1d63e8
|
data/Gemfile.lock
CHANGED
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 |
|
35
|
-
|
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.
|
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)
|
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 = {
|
4
|
+
TEAMS = { "blue": 1, "red": 2, "yell": 3, "gren": 4, "spec": 5 }.freeze
|
5
5
|
|
6
|
-
def initialize(
|
7
|
-
@
|
6
|
+
def initialize(name)
|
7
|
+
@name = build_name(name)
|
8
|
+
@number = TEAMS[name] || 5
|
9
|
+
@players = []
|
8
10
|
end
|
9
11
|
|
10
|
-
def
|
11
|
-
|
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.
|
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-
|
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:
|