Files
xiao/commands/random-seed/name-rater.js
T
2021-01-16 12:13:09 -05:00

51 lines
1.3 KiB
JavaScript

const Command = require('../../structures/Command');
const { MersenneTwister19937, integer } = require('random-js');
const texts = require('../../assets/json/name-rater');
const { NAME_RATER_EMOJI_ID } = process.env;
module.exports = class NameRaterCommand extends Command {
constructor(client) {
super(client, {
name: 'name-rater',
aliases: ['name-rate', 'rate-name'],
group: 'random-seed',
memberName: 'name-rater',
description: 'Determines a name\'s quality.',
credit: [
{
name: 'Pokémon',
url: 'https://www.pokemon.com/us/',
reason: 'Sprite'
}
],
args: [
{
key: 'name',
prompt: 'What name do you want to determine the quality of?',
type: 'string',
max: 25,
default: msg => msg.author.username
}
]
});
}
run(msg, { name }) {
if (name.toLowerCase() === 'xiao') {
return msg.say(`<:nameRater:${NAME_RATER_EMOJI_ID}> Yes, ${name}! What a perfect name! I'm speechless!`);
}
const random = MersenneTwister19937.seed(this.stringToSeed(name.toLowerCase()));
const quality = integer(0, texts.length - 1)(random);
return msg.say(`<:nameRater:${NAME_RATER_EMOJI_ID}> ${texts[quality].replace(/{{name}}/gi, name)}`);
}
stringToSeed(str) {
if (!str) return 0;
let hash = 0;
for (const char of str.split('')) {
hash += char.charCodeAt(0);
}
return hash;
}
};