From d5b520a1bc9074ea3ca394f27eb90d33e246132b Mon Sep 17 00:00:00 2001 From: Matthieu Pignolet Date: Fri, 21 Jun 2024 17:59:35 +0400 Subject: [PATCH] Fix messages sanitizations --- discordjs/src/index.mjs | 43 ++++++++++++----------------------------- 1 file changed, 12 insertions(+), 31 deletions(-) diff --git a/discordjs/src/index.mjs b/discordjs/src/index.mjs index 3f0643e..63a5a1e 100644 --- a/discordjs/src/index.mjs +++ b/discordjs/src/index.mjs @@ -27,54 +27,35 @@ export const completeWord = (grapheme) => { * @param sentence Raw discord sentence * @returns The last word without any specials characters */ -const cutWord = (sentence) => { +const sanitizeWord = (sentence) => { let lastWord = sentence - .replaceAll("?", "") - .replaceAll("!", "") - .replaceAll(".", "") - .replaceAll(",", "") - .replaceAll(";", "") .trim() .split(" ") .slice(-1)[0] + .replaceAll(/(?>\?|\!|\.|\,|\;)/g, "") .replaceAll(/(\s)?([^\x41-\x5A\s^\x61-\x7A^\xC0-\xFF])/g, "") + .replaceAll(/\<(?>[a-z]|[A-Z])+\:(?>[a-z]|[A-Z])+\:[0-9]+\>/g,) .replaceAll(/(?:https?|ftp):\/\/[\n\S]+/g, ''); return lastWord; }; +const re = /([a-z]|[A-Z])+/g; +const countChars = (str) => ((str || '').match(re) || []).length; -client.on("messageCreate", async (message) => { - // we shall not repond to bots +const messageAction = async (message) => { if (message.author.bot) return; + const cleanText = sanitizeWord(message.cleanContent); - try { - // Get the completed word found by the db. - - let response = await completeWord(cutWord(message.cleanContent)); + if (countChars(cleanText) > 0) { + let response = await completeWord(); // Ignore if there is no completion if ((response || response === "") && (Math.random() > 0.98 || message.channelId == '1248226018406301696' || message.guild == null)) { message.reply(response); } - } catch (e) { - console.log(e); } -}); - -client.on("messageUpdate", async (message) => { - if (message.author.bot) return; - - try { - // Get the completed word found by the db. - - let response = await completeWord(cutWord(message.cleanContent)); +}; - // Ignore if there is no completion - if ((response || response === "") && (Math.random() > 0.98 || message.channelId == '1248226018406301696' || message.guild == null)) { - message.reply(response); - } - } catch (e) { - console.log(e); - } -}); +client.on("messageCreate", messageAction); +client.on("messageUpdate", messageAction); client.login(process.env.TOKEN); -- 2.39.5