Add information about invalid options
This commit is contained in:
parent
b39fa23397
commit
be840fce28
1 changed files with 22 additions and 11 deletions
|
@ -19,13 +19,14 @@ class MessageInvalidListener extends Listener {
|
||||||
const result = await this.client.languageHandler.evalCode(message, parse)
|
const result = await this.client.languageHandler.evalCode(message, parse)
|
||||||
.catch(e => e.message) || '\n';
|
.catch(e => e.message) || '\n';
|
||||||
|
|
||||||
const output = `\`\`\`${parse.language.highlight}\n${result}\`\`\``;
|
const invalid = parse.invalid.length ? `Invalid options: ${parse.invalid.join(', ')}\n` : '';
|
||||||
|
const output = `${invalid}\`\`\`${parse.language.highlight}\n${result}\`\`\``;
|
||||||
if (output.length >= 2000) {
|
if (output.length >= 2000) {
|
||||||
const key = await fetch('https://hastebin.com/documents', { method: 'POST', body: result })
|
const key = await fetch('https://hastebin.com/documents', { method: 'POST', body: result })
|
||||||
.then(res => res.json())
|
.then(res => res.json())
|
||||||
.then(json => json.key);
|
.then(json => json.key);
|
||||||
|
|
||||||
return message.util.send(`https://hastebin.com/${key}.js`);
|
return message.util.send(`${invalid}Output was too long: <https://hastebin.com/${key}.js>`);
|
||||||
}
|
}
|
||||||
|
|
||||||
return message.util.send(output);
|
return message.util.send(output);
|
||||||
|
@ -45,8 +46,8 @@ class MessageInvalidListener extends Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
const code = match[3].trim();
|
const code = match[3].trim();
|
||||||
const options = this.parseOptions(language, match[1] || '');
|
const [valid, invalid] = this.parseOptions(language, match[1] || '');
|
||||||
return { id: message.id, language, code, options };
|
return { id: message.id, language, code, options: valid, invalid };
|
||||||
}
|
}
|
||||||
|
|
||||||
parseLanguage(language) {
|
parseLanguage(language) {
|
||||||
|
@ -59,13 +60,23 @@ class MessageInvalidListener extends Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
parseOptions(language, options) {
|
parseOptions(language, options) {
|
||||||
return new Map(options.split(';')
|
const kvs = options.split(';').map(opt => {
|
||||||
.map(opt => {
|
|
||||||
const [k, v = ''] = opt.split('=');
|
const [k, v = ''] = opt.split('=');
|
||||||
return [k.toLowerCase().trim(), v.trim()];
|
return [k.toLowerCase().trim(), v.trim()];
|
||||||
})
|
});
|
||||||
.filter(([key, value]) =>
|
|
||||||
Object.prototype.hasOwnProperty.call(language.options, key) && language.options[key](value)));
|
const valid = new Map();
|
||||||
|
const invalid = [];
|
||||||
|
for (const [key, value] of kvs) {
|
||||||
|
const ok = Object.prototype.hasOwnProperty.call(language.options, key) && language.options[key](value);
|
||||||
|
if (ok) {
|
||||||
|
valid.set(key, value);
|
||||||
|
} else {
|
||||||
|
invalid.push(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return [valid, invalid];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue