tangled
alpha
login
or
join now
alpine.girlfag.club
/
refbot
0
fork
atom
SpinShare Referee Bot
refbot.ellite.dev/overlay
0
fork
atom
overview
issues
13
pulls
pipelines
general cleanup
alpinesystem
3 weeks ago
de5d9226
acdf460f
+25
-56
4 changed files
expand all
collapse all
unified
split
state
generatedPools.js
rounds.js
util
matchFlow.js
resumeMatch.js
-14
state/generatedPools.js
···
98
98
}),
99
99
};
100
100
});
101
101
-
102
102
-
103
103
-
// WE DON'T HAVE TO LOG THIS ANYMORE
104
104
-
105
105
-
// console.log('loadGeneratedPoolsFromDB - Reconstructed pools:',
106
106
-
// generatedPools.map(b => ({
107
107
-
// name: b.name,
108
108
-
// rounds: b.rounds.map(r => ({
109
109
-
// name: r.name,
110
110
-
// matchCount: r.matches.length,
111
111
-
// firstMatchCharts: r.matches[0]?.charts?.length || 0,
112
112
-
// })),
113
113
-
// })),
114
114
-
// );
115
101
}
116
102
117
103
function getGeneratedPools() {
+24
-24
state/rounds.js
···
1
1
/* eslint-disable no-multi-spaces */
2
2
const ROUNDS = [
3
3
-
{ name: 'Qualifiers – Winners 1', bestOf: 3, tier: 1, bracket: 'Qualifiers', round: 'Winners 1' },
4
4
-
{ name: 'Qualifiers – Winners 2', bestOf: 3, tier: 2, bracket: 'Qualifiers', round: 'Winners 2' },
5
5
-
{ name: 'Qualifiers – Losers 1', bestOf: 3, tier: 1, bracket: 'Qualifiers', round: 'Losers 1' },
6
6
-
{ name: 'Qualifiers – Losers 2', bestOf: 3, tier: 2, bracket: 'Qualifiers', round: 'Losers 2' },
7
7
-
{ name: 'Qualifiers – Finals', bestOf: 3, tier: 2, bracket: 'Qualifiers', round: 'Finals' },
8
8
-
{ name: 'Qualifiers – Finals (Reset)', bestOf: 3, tier: 2, bracket: 'Qualifiers', round: 'Finals (Reset)' },
9
9
-
{ name: 'Challenger – Winners 1', bestOf: 5, tier: 2, bracket: 'Challenger', round: 'Winners 1' },
10
10
-
{ name: 'Challenger – Winners 2', bestOf: 7, tier: 3, bracket: 'Challenger', round: 'Winners 2' },
11
11
-
{ name: 'Challenger – Winners Finals', bestOf: 9, tier: 3, bracket: 'Challenger', round: 'Winners Finals' },
12
12
-
{ name: 'Challenger – Losers 1', bestOf: 5, tier: 2, bracket: 'Challenger', round: 'Losers 1' },
13
13
-
{ name: 'Challenger – Losers 2', bestOf: 5, tier: 3, bracket: 'Challenger', round: 'Losers 2' },
14
14
-
{ name: 'Challenger – Losers 3', bestOf: 7, tier: 3, bracket: 'Challenger', round: 'Losers 3' },
15
15
-
{ name: 'Challenger – Losers Finals', bestOf: 7, tier: 3, bracket: 'Challenger', round: 'Losers Finals' },
16
16
-
{ name: 'Challenger – Grand Finals', bestOf: 9, tier: 3, bracket: 'Challenger', round: 'Grand Finals' },
17
17
-
{ name: 'Challenger – Grand Finals (Reset)', bestOf: 9, tier: 3, bracket: 'Challenger', round: 'Grand Finals (Reset)' },
18
18
-
{ name: 'Elite – Winners 1', bestOf: 5, tier: 3, bracket: 'Elite', round: 'Winners 1' },
19
19
-
{ name: 'Elite – Winners 2', bestOf: 7, tier: 4, bracket: 'Elite', round: 'Winners 2' },
20
20
-
{ name: 'Elite – Winners Finals', bestOf: 9, tier: 4, bracket: 'Elite', round: 'Winners Finals' },
21
21
-
{ name: 'Elite – Losers 1', bestOf: 5, tier: 3, bracket: 'Elite', round: 'Losers 1' },
22
22
-
{ name: 'Elite – Losers 2', bestOf: 5, tier: 4, bracket: 'Elite', round: 'Losers 2' },
23
23
-
{ name: 'Elite – Losers 3', bestOf: 7, tier: 4, bracket: 'Elite', round: 'Losers 3' },
24
24
-
{ name: 'Elite – Losers Finals', bestOf: 7, tier: 4, bracket: 'Elite', round: 'Losers Finals' },
25
25
-
{ name: 'Elite – Grand Finals', bestOf: 9, tier: 4, bracket: 'Elite', round: 'Grand Finals' },
26
26
-
{ name: 'Elite – Grand Finals (Reset)', bestOf: 9, tier: 4, bracket: 'Elite', round: 'Grand Finals (Reset)' },
3
3
+
{ name: 'Qualifiers - Winners 1', bestOf: 3, tier: 1, bracket: 'Qualifiers', round: 'Winners 1' },
4
4
+
{ name: 'Qualifiers - Winners 2', bestOf: 3, tier: 2, bracket: 'Qualifiers', round: 'Winners 2' },
5
5
+
{ name: 'Qualifiers - Losers 1', bestOf: 3, tier: 1, bracket: 'Qualifiers', round: 'Losers 1' },
6
6
+
{ name: 'Qualifiers - Losers 2', bestOf: 3, tier: 2, bracket: 'Qualifiers', round: 'Losers 2' },
7
7
+
{ name: 'Qualifiers - Finals', bestOf: 3, tier: 2, bracket: 'Qualifiers', round: 'Finals' },
8
8
+
{ name: 'Qualifiers - Finals (Reset)', bestOf: 3, tier: 2, bracket: 'Qualifiers', round: 'Finals (Reset)' },
9
9
+
{ name: 'Challenger - Winners 1', bestOf: 5, tier: 2, bracket: 'Challenger', round: 'Winners 1' },
10
10
+
{ name: 'Challenger - Winners 2', bestOf: 7, tier: 3, bracket: 'Challenger', round: 'Winners 2' },
11
11
+
{ name: 'Challenger - Winners Finals', bestOf: 9, tier: 3, bracket: 'Challenger', round: 'Winners Finals' },
12
12
+
{ name: 'Challenger - Losers 1', bestOf: 5, tier: 2, bracket: 'Challenger', round: 'Losers 1' },
13
13
+
{ name: 'Challenger - Losers 2', bestOf: 5, tier: 3, bracket: 'Challenger', round: 'Losers 2' },
14
14
+
{ name: 'Challenger - Losers 3', bestOf: 7, tier: 3, bracket: 'Challenger', round: 'Losers 3' },
15
15
+
{ name: 'Challenger - Losers Finals', bestOf: 7, tier: 3, bracket: 'Challenger', round: 'Losers Finals' },
16
16
+
{ name: 'Challenger - Grand Finals', bestOf: 9, tier: 3, bracket: 'Challenger', round: 'Grand Finals' },
17
17
+
{ name: 'Challenger - Grand Finals (Reset)', bestOf: 9, tier: 3, bracket: 'Challenger', round: 'Grand Finals (Reset)' },
18
18
+
{ name: 'Elite - Winners 1', bestOf: 5, tier: 3, bracket: 'Elite', round: 'Winners 1' },
19
19
+
{ name: 'Elite - Winners 2', bestOf: 7, tier: 4, bracket: 'Elite', round: 'Winners 2' },
20
20
+
{ name: 'Elite - Winners Finals', bestOf: 9, tier: 4, bracket: 'Elite', round: 'Winners Finals' },
21
21
+
{ name: 'Elite - Losers 1', bestOf: 5, tier: 3, bracket: 'Elite', round: 'Losers 1' },
22
22
+
{ name: 'Elite - Losers 2', bestOf: 5, tier: 4, bracket: 'Elite', round: 'Losers 2' },
23
23
+
{ name: 'Elite - Losers 3', bestOf: 7, tier: 4, bracket: 'Elite', round: 'Losers 3' },
24
24
+
{ name: 'Elite - Losers Finals', bestOf: 7, tier: 4, bracket: 'Elite', round: 'Losers Finals' },
25
25
+
{ name: 'Elite - Grand Finals', bestOf: 9, tier: 4, bracket: 'Elite', round: 'Grand Finals' },
26
26
+
{ name: 'Elite - Grand Finals (Reset)', bestOf: 9, tier: 4, bracket: 'Elite', round: 'Grand Finals (Reset)' },
27
27
];
28
28
29
29
function getRound(name) {
-16
util/matchFlow.js
···
12
12
const {
13
13
getBanOrderContainer,
14
14
getBanContainer,
15
15
-
getPickContainer,
16
15
getReadyCheckContainer,
17
16
getCountdownContainer,
18
17
} = require('../ui/matchContainers.js');
19
18
20
20
-
function chartDisplayName(entry) {
21
21
-
if (typeof entry === 'string') return entry;
22
22
-
return entry.displayName ?? entry.csvName ?? entry.name ?? '?';
23
23
-
}
24
24
-
25
25
-
function chartId(entry) {
26
26
-
if (typeof entry === 'string') return entry;
27
27
-
return entry.csvName ?? entry.name ?? '?';
28
28
-
}
29
29
-
30
19
function getScore(state) {
31
20
return [state.players[0].points, state.players[1].points];
32
21
}
···
44
33
45
34
function getPlayerByDiscordId(state, discordId) {
46
35
return state.players.find(p => p.discordId === discordId) ?? null;
47
47
-
}
48
48
-
49
49
-
function getDiscordUserFromState(state, slot, discordUsersMap) {
50
50
-
const player = state.players[slot - 1];
51
51
-
return discordUsersMap.get(player.discordId) ?? null;
52
36
}
53
37
54
38
async function startReadyCheck(interaction, message, csvName, state, discordUsersMap) {
+1
-2
util/resumeMatch.js
···
3
3
getPickContainer,
4
4
getReadyCheckContainer,
5
5
getCountdownContainer,
6
6
-
getSimpleContainer,
7
6
} = require('../ui/matchContainers.js');
8
7
const { startPickPhase, getCurrentPool, getScore, getPlayerNames } = require('./matchFlow.js');
9
8
const { restoreMatchState, saveMatchState } = require('../state/match.js');
···
104
103
}
105
104
else {
106
105
const pickerStatePlayer = state.players.find(p => p.discordId === state.currentPickerDiscordId);
107
107
-
const pickerDiscordUser = discordUsersMap.get(state.currentPickerDiscordId) ?? { username: pickerStatePlayer?.displayName ?? "?" };
106
106
+
const pickerDiscordUser = discordUsersMap.get(state.currentPickerDiscordId) ?? { username: pickerStatePlayer?.displayName ?? '?' };
108
107
109
108
resumeMsg = await channel.send({
110
109
components: [getPickContainer(pickerDiscordUser, currentPool, getScore(state), getPlayerNames(state), state.meta.bestOf)],