Files
xiao/types/font.js
T
Dragon Fire 1202e2c4e6 Fix lint
2021-02-20 11:29:53 -05:00

50 lines
1.7 KiB
JavaScript

const { ArgumentType, util: { disambiguation } } = require('discord.js-commando');
const { escapeMarkdown } = require('discord.js');
module.exports = class FontArgumentType extends ArgumentType {
constructor(client) {
super(client, 'font');
}
validate(value) {
const choice = value.toLowerCase();
let found = this.client.fonts.filter(font => {
if (font.isVariant) return false;
if (font.name.toLowerCase().includes(choice)) return true;
if (font.filenameNoExt.toLowerCase().includes(choice)) return true;
return false;
});
if (found.size === 0) return false;
if (found.size === 1) return true;
const foundExact = found.filter(font => {
if (font.name.toLowerCase() === choice) return true;
if (font.filenameNoExt.toLowerCase() === choice) return true;
return false;
});
if (foundExact.size === 1) return true;
if (foundExact.size > 0) found = foundExact;
return found.size <= 15
? `${disambiguation(found.map(font => escapeMarkdown(font.name)), 'fonts', null)}\n`
: 'Multiple fonts found. Please be more specific.';
}
parse(value) {
const choice = value.toLowerCase();
const found = this.client.fonts.filter(font => {
if (font.isVariant) return false;
if (font.name.toLowerCase().includes(choice)) return true;
if (font.filenameNoExt.toLowerCase().includes(choice)) return true;
return false;
});
if (found.size === 0) return null;
if (found.size === 1) return found.first();
const foundExact = found.filter(font => {
if (font.name.toLowerCase() === choice) return true;
if (font.filenameNoExt.toLowerCase() === choice) return true;
return false;
});
if (foundExact.size === 1) return foundExact.first();
return null;
}
};