qwtf_discord_bot 5.4.6 → 5.4.7

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: 5f57dc18281f366be0004ffcf3ab6a35938b155c5897922c28cba7c6cf7e18b5
4
- data.tar.gz: a27fcdd5f32203382595bc5b135af9940690fc0b45f7dbd6a5e019777de0ff5a
3
+ metadata.gz: 494909e7fd239e609f01dd75f848bbe8137fc0d867acb5787b0944302ec5afc7
4
+ data.tar.gz: 9fea99c070c99eb6044fbc75f812ab200553208c656a494a5dbd6d8468fc8913
5
5
  SHA512:
6
- metadata.gz: c3d452a44dd1506cad8d214089737a0f515edabd2fe189bb437a321d624346ecd1795fa0bcb79bd8734d9f56f952c41e7aec49126a563bda7fbb8d313676cc24
7
- data.tar.gz: 0df2e2073331e1cec5332bf7d680bb9715c789d2bac18ccf9750d48d7b4df1eb7a46c515f38a14597aa99de206b58392a41e613f5060b4f2b82c4438797c298b
6
+ metadata.gz: d0174509b7ef119457eba3d97367e3c53e176a6e8597888c235d74f030a28a8afcebbf63b7c416c63b3f64183cf81e655b5d9eb7628c7df533514d609b575b9d
7
+ data.tar.gz: d8296d6419b4cb26ede8395a7552154e926be59cfac50cae5d7d8dd2aa291699c7f9cb3b6923330a7ff1641a58b85af60ad5e2d43b5c4d54f4820f35c786e8ed
data/README.md CHANGED
@@ -90,14 +90,14 @@ This responds to discord messages:
90
90
  - `!join`
91
91
  - `!leave`
92
92
  - `!teamsize <no_of_players>`
93
- - `!kick <@player>`
93
+ - `!kick <@player> [@player2]`
94
94
  - `!team <team_no>`
95
95
  - `!unteam`
96
96
  - `!addmap <map_name>`
97
97
  - `!removemap <map_name>`
98
98
  - `!maps`
99
- - `!map <map_name>`
100
- - `!choose`
99
+ - `!map [map_name]`
100
+ - `!choose [n]`
101
101
  - `!win <team_no>`
102
102
  - `!draw`
103
103
  - `!notify <@role>`
data/VERSION CHANGED
@@ -1 +1 @@
1
- 5.4.6
1
+ 5.4.7
@@ -26,7 +26,7 @@ class QwtfDiscordBotPug # :nodoc:
26
26
  )
27
27
 
28
28
  bot.command :help do |event, *args|
29
- "Pug commands: `!status`, `!join`, `!team <team_no>`, `!unteam`, `!leave`, `!kick <@player>`, `!win <team_no>`, `!draw`, `!end`, `!teamsize <no_of_players>`, `!addmap <map_name>`, `!removemap <map_name>`, `!maps`, `!map <map_name>`, `!choose`, `!notify <@role>`"
29
+ "Pug commands: `!status`, `!join`, `!team <team_no> [@player1] [@player2]`, `!unteam`, `!leave`, `!kick <@player>`, `!win <team_no>`, `!draw`, `!end`, `!teamsize <no_of_players>`, `!addmap <map_name>`, `!removemap <map_name>`, `!maps`, `!map [map_name]`, `!choose [n]`, `!notify <@role>`"
30
30
  end
31
31
 
32
32
  bot.command :join do |event, *args|
@@ -45,18 +45,28 @@ class QwtfDiscordBotPug # :nodoc:
45
45
 
46
46
  bot.command :choose do |event, *args|
47
47
  setup_pug(event) do |e, pug|
48
- if !pug.full?
48
+ if pug.joined_players.count.odd?
49
49
  return send_embedded_message(
50
- description: "Can't choose teams until PUG is full",
51
- channel: e.channel
50
+ description: "Can't choose teams with odd number of players",
51
+ channel: event.channel
52
52
  )
53
53
  end
54
54
 
55
- pug.joined_players.each do |player_id|
56
- pug.join_team(team_no: 0, player_id: player_id)
55
+ if args.any? && args.first.to_i < 1
56
+ return send_embedded_message(
57
+ description: "Choose a number higher than 0; e.g. `!choose 2`",
58
+ channel: e.channel
59
+ )
57
60
  end
58
61
 
59
- start_pug(pug, e)
62
+ iteration = if args.any?
63
+ args.first.to_i - 1
64
+ else
65
+ 0
66
+ end
67
+
68
+ choose_fair_teams(pug: pug, event: e, iteration: iteration)
69
+ status(pug: pug, event: e)
60
70
  end
61
71
  end
62
72
 
@@ -69,35 +79,7 @@ class QwtfDiscordBotPug # :nodoc:
69
79
  )
70
80
  end
71
81
 
72
- footer = [
73
- pug.game_map,
74
- "#{pug.player_slots} joined",
75
- ].compact.join(MSG_SNIPPET_DELIMITER)
76
-
77
- send_embedded_message(
78
- description: nil,
79
- channel: e.channel
80
- ) do |embed|
81
- embed.footer = Discordrb::Webhooks::EmbedFooter.new(
82
- text: footer
83
- )
84
-
85
- pug.teams.each do |team_no, player_ids|
86
- team_display_names = player_ids.map do |player_id|
87
- e.display_name_for(player_id)
88
- end
89
-
90
- embed.add_field(
91
- Discordrb::Webhooks::EmbedField.new(
92
- {
93
- inline: true,
94
- name: team_name(team_no),
95
- value: team_display_names.join("\n")
96
- }
97
- )
98
- )
99
- end
100
- end
82
+ status(pug: pug, event: e)
101
83
  end
102
84
  end
103
85
 
@@ -619,20 +601,70 @@ class QwtfDiscordBotPug # :nodoc:
619
601
  nil # stop discordrb printing return value
620
602
  end
621
603
 
622
- def start_pug(pug, event)
623
- if !pug.actual_teams.any?
624
- send_embedded_message(
625
- description: "Choosing fair teams...",
604
+ def choose_fair_teams(pug:, event:, iteration: 0)
605
+ if !pug.full?
606
+ return send_embedded_message(
607
+ description: "Can't choose teams until PUG is full",
608
+ channel: e.channel
609
+ )
610
+ end
611
+
612
+ send_embedded_message(
613
+ description: "Choosing fair teams...",
614
+ channel: event.channel
615
+ )
616
+
617
+ combinations = get_fair_teams(pug.joined_players)
618
+ teams = combinations[iteration]
619
+
620
+ if !teams
621
+ return send_embedded_message(
622
+ description: "There are only #{combinations.count} possible combinations",
626
623
  channel: event.channel
627
624
  )
628
- teams = get_fair_teams(pug.joined_players)
625
+ end
626
+
627
+ teams.each do |team_no, player_ids|
628
+ player_ids.each do |player_id|
629
+ pug.join_team(team_no: team_no, player_id: player_id)
630
+ end
631
+ end
632
+ end
633
+
634
+ def status(pug:, event:)
635
+ footer = [
636
+ pug.game_map,
637
+ "#{pug.player_slots} joined"
638
+ ].compact.join(MSG_SNIPPET_DELIMITER)
639
+
640
+ send_embedded_message(
641
+ description: nil,
642
+ channel: event.channel
643
+ ) do |embed|
644
+ embed.footer = Discordrb::Webhooks::EmbedFooter.new(
645
+ text: footer
646
+ )
629
647
 
630
- teams.each do |team_no, player_ids|
631
- player_ids.each do |player_id|
632
- pug.join_team(team_no: team_no, player_id: player_id)
648
+ pug.teams.each do |team_no, player_ids|
649
+ team_display_names = player_ids.map do |player_id|
650
+ event.display_name_for(player_id)
633
651
  end
652
+
653
+ embed.add_field(
654
+ Discordrb::Webhooks::EmbedField.new(
655
+ {
656
+ inline: true,
657
+ name: team_name(team_no),
658
+ value: team_display_names.join("\n")
659
+ }
660
+ )
661
+ )
634
662
  end
635
663
  end
664
+ end
665
+
666
+ def start_pug(pug, event)
667
+ choose_fair_teams(pug: pug, event: event) unless pug.actual_teams.any?
636
668
 
637
669
  footer = [
638
670
  pug.game_map,
@@ -695,6 +727,7 @@ class QwtfDiscordBotPug # :nodoc:
695
727
  uri = URI("#{ENV['RATINGS_API_URL']}matches/")
696
728
  req = Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json')
697
729
  req.body = json
730
+
698
731
  Net::HTTP.start(uri.hostname, uri.port) do |http|
699
732
  http.request(req)
700
733
  end
@@ -705,9 +738,11 @@ class QwtfDiscordBotPug # :nodoc:
705
738
  params = { 'players[]' => players }
706
739
  uri.query = URI.encode_www_form(params)
707
740
  req = Net::HTTP::Get.new(uri)
741
+
708
742
  res = Net::HTTP.start(uri.hostname, uri.port) do |http|
709
743
  http.request(req)
710
744
  end
711
- JSON.parse(res.body).first.to_h
745
+
746
+ JSON.parse(res.body).map(&:to_h)
712
747
  end
713
748
  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: 5.4.6
4
+ version: 5.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sheldon Johnson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-27 00:00:00.000000000 Z
11
+ date: 2020-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: discordrb