Files
xiao/structures/mafia/Player.js
T
2024-03-19 23:50:10 -04:00

45 lines
1.3 KiB
JavaScript

const { stripIndents } = require('common-tags');
const questions = {
mafia: 'Who would you like to kill?',
detective: 'Who do you think is a Mafia member?'
};
module.exports = class Player {
constructor(game, user, role) {
this.game = game;
this.user = user;
this.id = user.id;
this.role = role;
}
toString() {
return this.user.toString();
}
async dmRound() {
const valid = Array.from(this.game.players.filter(p => p.role !== this.role).values());
await this.user.send(stripIndents`
${questions[this.role]} Please type the number.
${valid.map((p, i) => `**${i + 1}.** ${p.user.tag}`).join('\n')}
`);
const filter = res => valid[Number.parseInt(res.content, 10) - 1];
const decision = await this.user.dmChannel.awaitMessages({
filter,
max: 1,
time: 120000
});
if (!decision.size) {
await this.user.send('Sorry, time is up!');
return null;
}
const choice = valid[Number.parseInt(decision.first().content, 10) - 1].id;
if (this.role === 'detective') {
const isMafia = this.game.players.get(choice).role === 'mafia';
await this.user.send(isMafia ? 'Yes, they are a Mafioso.' : 'No, they are not a Mafioso.');
} else {
await this.user.send(`**${this.game.players.get(choice).user.tag}** is your choice...`);
}
return choice;
}
};