diff --git a/src/js/chat.js b/src/js/chat.js index 4b6881a..59eeeb8 100644 --- a/src/js/chat.js +++ b/src/js/chat.js @@ -29,7 +29,10 @@ export default class Chat { let usernameContainer = $('') .text(matchedUsernames[i]) .css('color', this.getUsernameColor(matchedUsernames[i])); - message = message.replace(matchedUsernames[i], usernameContainer.prop('outerHTML')); + + // Match only the username + let matchedUsernameOnly = new RegExp('(' + matchedUsernames[i] + ')(?![^<]*>|[^<>]*<\/)', 'gm'); + message = message.replace(matchedUsernameOnly, usernameContainer.prop('outerHTML')); } } @@ -51,7 +54,7 @@ export default class Chat { checkIfUsername(words) { let matchedUsernames = []; this.darkwire.users.forEach((user) => { - let usernameMatch = new RegExp('^' + user.username + '$', 'g'); + let usernameMatch = new RegExp('^' + user.username + '$'); for (let i = 0; i < words.length; i++) { let exactMatch = words[i].match(usernameMatch) || false; let usernameInMemory = this.usernamesInMemory.indexOf(words[i]) > -1; @@ -241,7 +244,7 @@ export default class Chat { if (commandToTrigger) { expectedParams = commandToTrigger.paramaters.length; if (expectedParams && trigger.params.length > expectedParams || expectedParams && trigger.params.length < expectedParams) { - if (!commandToTrigger.multple && trigger.params.length < 1) { + if ((!commandToTrigger.multple && trigger.params.length < 1) || (trigger.params.length >= 1 && trigger.params[0] === '')) { return this.log('Missing or too many paramater. Usage: ' + commandToTrigger.usage, {error: true}); } } diff --git a/src/js/main.js b/src/js/main.js index fc7f8d0..fbc3954 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -104,7 +104,7 @@ $(function() { socket.on('user update', (data) => { darkwire.updateUser(data).then((oldUsername) => { - chat.log(oldUsername + ' changed name to ' + data.username); + chat.log(oldUsername + ' changed name to ' + data.username); renderParticipantsList(); }); });