forked from Galactic/galactic-bot
linkfilter triggers
This commit is contained in:
parent
4c0905d84a
commit
f412e1c3b3
@ -153,10 +153,56 @@ class LinkFilterSetting extends FilterSetting {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async _createTrigger(interaction, action, actionObject) {
|
async _createTrigger(interaction, action, actionObject, actions) {
|
||||||
|
|
||||||
// TODO: FINISH THIS!!
|
const response = await interaction.promptMessage(
|
||||||
actionObject.trigger = 'generic';
|
interaction.format('SETTING_LINKFILTER_ACTION_ADD_TRIGGERS'),
|
||||||
|
{ time: 60 * 1000, editReply: true }
|
||||||
|
);
|
||||||
|
if (!response) {
|
||||||
|
if (actions.find((ac) => ac.trigger === 'generic')) return {
|
||||||
|
error: true,
|
||||||
|
message: interaction.format('SETTING_FILTER_ACTIONS_EXISTING', { trigger: 'generic' })
|
||||||
|
};
|
||||||
|
actions.push(actionObject);
|
||||||
|
actionObject.trigger = 'generic';
|
||||||
|
return actionObject;
|
||||||
|
}
|
||||||
|
await response.delete();
|
||||||
|
if (['cancel', 'abort', 'exit'].includes(action.toLowerCase())) return {
|
||||||
|
error: true,
|
||||||
|
message: interaction.format('ERR_CANCEL')
|
||||||
|
};
|
||||||
|
|
||||||
|
const params = Util.parseQuotes(response.content).map(([param]) => param);
|
||||||
|
let first = params[0].toLowerCase();
|
||||||
|
|
||||||
|
if (['generic', 'gen', 'bl', 'blacklist', 'gl', 'greylist', 'wl', 'whitelist'].includes(first)) {
|
||||||
|
if (first === 'gen') first = 'generic';
|
||||||
|
else if (first === 'bl') first = 'blacklist';
|
||||||
|
else if (first === 'gl') first = 'greylist';
|
||||||
|
else if (first === 'wl') first = 'whitelist';
|
||||||
|
const existing = actions.find((ac) => ac.trigger === first);
|
||||||
|
if (existing) return {
|
||||||
|
error: true,
|
||||||
|
message: interaction.format('SETTING_FILTER_ACTIONS_EXISTING', { trigger: first })
|
||||||
|
};
|
||||||
|
actionObject.trigger = first;
|
||||||
|
} else {
|
||||||
|
const words = params.map((word) => word.toLowerCase());
|
||||||
|
const removed = [];
|
||||||
|
for (const word of [...words]) {
|
||||||
|
const existing = actions.find((ac) => ac.trigger.includes(word));
|
||||||
|
if (!existing) continue;
|
||||||
|
words.splice(words.indexOf(word), 1);
|
||||||
|
removed.push(word);
|
||||||
|
}
|
||||||
|
actionObject.trigger = words;
|
||||||
|
if (removed.length) interaction.channel.send(
|
||||||
|
interaction.format('SETTING_LINKFILTER_WORD_IN_ACTION',
|
||||||
|
{ params: { words: removed.join('`, `') } })
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user