diff --git a/bot.js b/bot.js index 86bfb9a..b254940 100644 --- a/bot.js +++ b/bot.js @@ -171,30 +171,45 @@ function onMessageHandler (channel, userstate, message, self) { console.log(`* buttsbot: User not authorized`); } } else { + // ignore commands if (message.startsWith("!")) return; + // ignore ignored users if (config.ignoredUsers.includes(userstate['display-name']) || config.ignoredUsers.includes(userstate['username'])) { console.log(`* User ${userstate['username']} is on the ignore list.`); return; } + + // ignore messages containing URLs + let regex = /((http(s)?(\:\/\/))*(www\.)?([\w\-\.\/])*(\.[a-zA-Z]{2,3}\/?))[^\s\b\n|]*[^.,;:\?\!\@\^\$ -]/g; + let matches = message.match(regex); + if (matches && matches.length > 0) { + console.log(`* Message contained URL - skip`); + return; + } + + // split messages into word array and try to determine syllabes + var words = message.split(' '); + var syllables = words.map(syllabify); + + // calculate syllabe count + var syllableCount = 0; + syllables.forEach((s) => { + syllableCount += s.length; + }); + + // ignore message if it doesn't contain enough syllabes + if (syllableCount < config.syllableCount) { + console.log(`* Message had too few syllables`); + return; + } + // random chance + // TODO: find a better alternative var number = Math.random() * 100; if (number <= config.chance) { - - var words = message.split(' '); - var syllables = words.map(syllabify); - var syllableCount = 0; - syllables.forEach((s) => { - syllableCount += s.length; - }); - - if (syllableCount < config.syllableCount) { - console.log(`* Message had too few syllables`); - return; - } - var buttCount = Math.ceil(words.length / config.limit); var randomNumbersUsed = [];