mirror of
https://github.com/arthur-pbty/xiao.git
synced 2026-06-03 15:07:42 +02:00
34 lines
748 B
JavaScript
34 lines
748 B
JavaScript
const Argument = require('../framework/ArgumentType');
|
|
const codeblock = /```(?:(\S+)\n)?\s*([^]+?)\s*```/i;
|
|
|
|
module.exports = class CodeArgument extends Argument {
|
|
constructor(client) {
|
|
super(client, 'code');
|
|
}
|
|
|
|
validate(value) {
|
|
if (!value) return false;
|
|
return true;
|
|
}
|
|
|
|
async parse(value, msg) {
|
|
if (!value) return null;
|
|
if (/^[0-9]+$/.test(value)) {
|
|
try {
|
|
const message = await msg.channel.messages.fetch(value);
|
|
value = message.content;
|
|
} catch (err) {
|
|
return { code: value, lang: null };
|
|
}
|
|
}
|
|
if (codeblock.test(value)) {
|
|
const parsed = codeblock.exec(value);
|
|
return {
|
|
code: parsed[2],
|
|
lang: parsed[1] ? parsed[1].toLowerCase() : null
|
|
};
|
|
}
|
|
return { code: value, lang: null };
|
|
}
|
|
};
|