qwtf_discord_bot 5.5.4 → 5.5.5

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: 5f9b7c8e269139913d517709124256e56fef428f17382c6c58d6e7e5f76887fb
4
- data.tar.gz: 92d1b89d60184d7dfa68de5419db9c59dc338298ef4092819e4bc34a27f99021
3
+ metadata.gz: 1f51fa8d63ad6a2e6e0e08e3e83c851930694ba6208a70469d95f3322f3a5215
4
+ data.tar.gz: f0d9139fab06e85aae6fe4d563cff3a13acd7ae88e0ba680c2add202a7c541e7
5
5
  SHA512:
6
- metadata.gz: 90aead5b21fa970eac664c9be433eabfa584e3c2335b2fa0508308c11ac83fb3e765ac353b10ed52896078f3f560c7cb9ac2aaa6b054d9c9d43f53615213d97f
7
- data.tar.gz: '0589136e79e9f98db93c1b069d5551cef7f2588fb252e9ddb00c0b99fbe4e992442d7a192bc4129a7da584dcfd7d649f19d19b9a8df036058f610659be1bfcd7'
6
+ metadata.gz: 0ac22beba9007bc30f809e3ab82ad382e078ba8036c71f91474ccad8b301b0b850a0b04dfa0529bfc4755aaa84bf82769846c72706dca4dcd7ca1c301f271457
7
+ data.tar.gz: 341a554d68f4680b09d22dcdc08f16c711c6d86271811e66810d61f6660d628a1cac7a656ba23724e593d1ec638dd7512484cc5af2007ce6d1897b58cba30e64
data/VERSION CHANGED
@@ -1 +1 @@
1
- 5.5.4
1
+ 5.5.5
data/lib/pug.rb CHANGED
@@ -11,8 +11,7 @@ class Pug
11
11
  end
12
12
 
13
13
  def join(player_id)
14
- redis.setnx(pug_key, Time.now)
15
-
14
+ redis.setnx(pug_key, Time.now.to_i)
16
15
  redis.sadd(team_key(0), player_id)
17
16
  end
18
17
 
@@ -139,6 +138,14 @@ class Pug
139
138
  end
140
139
  end
141
140
 
141
+ def update_last_result_time
142
+ redis.set(last_result_time_key, Time.now.to_i)
143
+ end
144
+
145
+ def last_result_time
146
+ redis.get(last_result_time_key).to_i
147
+ end
148
+
142
149
  private
143
150
 
144
151
  def leave_teams(player_id)
@@ -155,6 +162,10 @@ class Pug
155
162
  [pug_key, 'teams', team_no].join(':')
156
163
  end
157
164
 
165
+ def last_result_time_key
166
+ [channel_key, 'last_result_time'].join(':')
167
+ end
168
+
158
169
  def pug_key
159
170
  [channel_key, 'pug'].join(':')
160
171
  end
@@ -8,6 +8,7 @@ class QwtfDiscordBotPug # :nodoc:
8
8
 
9
9
  MSG_SNIPPET_DELIMITER = ' · '
10
10
  TEAM_NAMES = { 1 => "Blue", 2 => "Red" }
11
+ ONE_MINUTE = 60
11
12
 
12
13
  def run
13
14
  bot = Discordrb::Commands::CommandBot.new(
@@ -334,6 +335,13 @@ class QwtfDiscordBotPug # :nodoc:
334
335
 
335
336
  bot.command :win do |event, *args|
336
337
  setup_pug(event) do |e, pug|
338
+ unless args.any?
339
+ return send_embedded_message(
340
+ description: "Specify winning team; e.g. `!win 1`",
341
+ channel: e.channel
342
+ )
343
+ end
344
+
337
345
  unless pug.active?
338
346
  return send_embedded_message(
339
347
  description: no_active_pug_message,
@@ -348,17 +356,19 @@ class QwtfDiscordBotPug # :nodoc:
348
356
  )
349
357
  end
350
358
 
351
- unless args.any?
359
+ unless ["1", "2"].any?(args.first)
352
360
  return send_embedded_message(
353
- description: "Specify winning team; e.g. `!win 1`",
361
+ description: "Invalid team number",
354
362
  channel: e.channel
355
363
  )
356
364
  end
357
365
 
358
- unless ["1", "2"].any?(args.first)
366
+ if pug.last_result_time && pug.last_result_time > one_minute_ago
367
+ time_ago = Time.now.to_i - pug.last_result_time
368
+
359
369
  return send_embedded_message(
360
- description: "Invalid team number",
361
- channel: e.channel
370
+ description: "Please wait #{ONE_MINUTE - time_ago} more seconds before reporting",
371
+ channel: event.channel
362
372
  )
363
373
  end
364
374
 
@@ -380,7 +390,8 @@ class QwtfDiscordBotPug # :nodoc:
380
390
  teams.merge({ name => { players: players, result: result } })
381
391
  end
382
392
 
383
- id = post_results(
393
+ id = report(
394
+ pug,
384
395
  {
385
396
  match: {
386
397
  map: pug.game_map,
@@ -425,6 +436,15 @@ class QwtfDiscordBotPug # :nodoc:
425
436
  )
426
437
  end
427
438
 
439
+ if pug.last_result_time && pug.last_result_time > one_minute_ago
440
+ time_ago = Time.now.to_i - pug.last_result_time
441
+
442
+ return send_embedded_message(
443
+ description: "Please wait #{ONE_MINUTE - time_ago} more seconds before reporting",
444
+ channel: event.channel
445
+ )
446
+ end
447
+
428
448
  team_results = pug.actual_teams.inject({}) do |teams, (name, player_ids)|
429
449
  players = player_ids.inject({}) do |memo, id|
430
450
  memo.merge({ id => e.display_name_for(id) })
@@ -433,7 +453,8 @@ class QwtfDiscordBotPug # :nodoc:
433
453
  teams.merge({ name => { players: players, result: 0 } })
434
454
  end
435
455
 
436
- id = post_results(
456
+ id = report(
457
+ pug,
437
458
  {
438
459
  match: {
439
460
  map: pug.game_map,
@@ -767,6 +788,11 @@ class QwtfDiscordBotPug # :nodoc:
767
788
  end
768
789
  end
769
790
 
791
+ def report(pug, json)
792
+ pug.update_last_result_time
793
+ post_results(json)
794
+ end
795
+
770
796
  def post_results(json)
771
797
  uri = URI("#{ENV['RATINGS_API_URL']}matches/")
772
798
  req = Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json')
@@ -789,4 +815,8 @@ class QwtfDiscordBotPug # :nodoc:
789
815
 
790
816
  JSON.parse(res.body).map(&:to_h)
791
817
  end
818
+
819
+ def one_minute_ago
820
+ Time.now.to_i - ONE_MINUTE
821
+ end
792
822
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qwtf_discord_bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.5.4
4
+ version: 5.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sheldon Johnson