bugfix for dupe checking + allow action resetting

This commit is contained in:
Erik 2020-09-28 01:09:19 +03:00
parent 075e8c390b
commit 1ad27ccef1

View File

@ -145,7 +145,7 @@ module.exports = class WordFilter extends FilterSetting {
const submethod = args.shift().toLowerCase(); const submethod = args.shift().toLowerCase();
const resolved = await resolver.resolveMethod([submethod], null, null, { const resolved = await resolver.resolveMethod([submethod], null, null, {
allowedMethods: ['add', 'remove', 'edit', 'list'] allowedMethods: ['add', 'remove', 'edit', 'list', 'reset']
}); });
if (!resolved) return { error: true, msg: message.format('ERR_INVALID_METHOD', { method: submethod }) }; if (!resolved) return { error: true, msg: message.format('ERR_INVALID_METHOD', { method: submethod }) };
@ -162,6 +162,10 @@ module.exports = class WordFilter extends FilterSetting {
} else if (resolved.method === 'list') { } else if (resolved.method === 'list') {
this._listActions(message, setting); this._listActions(message, setting);
return; return;
} else if (resolved.method === 'reset') {
result = {};
setting.actions = [];
index = 'S_FILTER_ACTION_RESET';
} }
if (result.error) return result; if (result.error) return result;
@ -174,7 +178,7 @@ module.exports = class WordFilter extends FilterSetting {
points: result.points || message.format('ON_OFF_TOGGLE', { toggle: false }, true), points: result.points || message.format('ON_OFF_TOGGLE', { toggle: false }, true),
force: message.format('ON_OFF_TOGGLE', { toggle: result.force }, true), force: message.format('ON_OFF_TOGGLE', { toggle: result.force }, true),
prune: message.format('ON_OFF_TOGGLE', { toggle: result.prune }, true), prune: message.format('ON_OFF_TOGGLE', { toggle: result.prune }, true),
trigger: result.trigger instanceof Array ? '||' + result.trigger.join(', ') + '||' : result.trigger trigger: result.trigger instanceof Array ? '||' + result.trigger.join(', ') + '||' : '`' + result.trigger + '`'
}; };
} }
@ -190,6 +194,10 @@ module.exports = class WordFilter extends FilterSetting {
async _createTrigger(message, action, actionObject, setting) { async _createTrigger(message, action, actionObject, setting) {
const response = await message.prompt(message.format('S_WORDFILTER_ACTION_ADD_TRIGGERS'), { time: 60 * 1000 }); const response = await message.prompt(message.format('S_WORDFILTER_ACTION_ADD_TRIGGERS'), { time: 60 * 1000 });
if (!response) { if (!response) {
if (setting.actions.find((ac) => ac.trigger === 'generic')) return {
error: true,
msg: message.format('S_FILTER_ACTIONS_EXISTING', { trigger: 'generic' })
};
setting.actions.push(actionObject); setting.actions.push(actionObject);
actionObject.trigger = 'generic'; actionObject.trigger = 'generic';
return actionObject; return actionObject;
@ -216,7 +224,7 @@ module.exports = class WordFilter extends FilterSetting {
const { actions } = setting; const { actions } = setting;
const words = params.map((word) => word.toLowerCase()); const words = params.map((word) => word.toLowerCase());
const removed = []; const removed = [];
for (const word of words) { for (const word of [...words]) {
const existing = actions.find((ac) => ac.trigger.includes(word)); const existing = actions.find((ac) => ac.trigger.includes(word));
if (!existing) continue; if (!existing) continue;
words.splice(words.indexOf(word), 1); words.splice(words.indexOf(word), 1);