From e3173d1561c6cc6bbf43c38e832d8da4cd65bde4 Mon Sep 17 00:00:00 2001 From: abalabahaha Date: Fri, 29 Jan 2016 22:05:01 -0800 Subject: [PATCH] In-order + duplicate mentions, cleanContent in Messages --- lib/Client/Resolver/Resolver.js | 9 ++++++--- lib/Structures/Message.js | 5 ++++- src/Client/Resolver/Resolver.js | 11 +++++++---- src/Structures/Message.js | 5 ++++- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/lib/Client/Resolver/Resolver.js b/lib/Client/Resolver/Resolver.js index b2d6f32f3..d742ff037 100644 --- a/lib/Client/Resolver/Resolver.js +++ b/lib/Client/Resolver/Resolver.js @@ -155,7 +155,7 @@ var Resolver = (function () { // resource is a string var _mentions = []; var changed = resource; - for (var _iterator2 = resource.match(/<@[^>]*>/g) || [], _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + for (var _iterator2 = resource.match(/<@[0-9]+>/g) || [], _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { var _ref2; if (_isArray2) { @@ -170,8 +170,11 @@ var Resolver = (function () { var mention = _ref2; var userID = mention.substring(2, mention.length - 1); - _mentions.push(userID); - changed = changed.replace(new RegExp(mention, "g"), "@" + this.internal.client.users.get("id", userID).username); + var user = this.internal.client.users.get("id", userID); + if (user) { + _mentions.push(user); + changed = changed.replace(new RegExp(mention, "g"), "@" + user.username); + } } return [_mentions, changed]; }; diff --git a/lib/Structures/Message.js b/lib/Structures/Message.js index 6ad276f2a..62eb341e4 100644 --- a/lib/Structures/Message.js +++ b/lib/Structures/Message.js @@ -48,9 +48,12 @@ var Message = (function (_Equality) { if (data.author instanceof _User2["default"]) this.author = data.author;else this.author = client.internal.users.add(new _User2["default"](data.author, client)); this.content = data.content; + + var mentionData = client.internal.resolver.resolveMentions(data.content); + this.cleanContent = mentionData[1]; this.mentions = new _UtilCache2["default"](); - data.mentions.forEach(function (mention) { + mentionData[0].forEach(function (mention) { // this is .add and not .get because it allows the bot to cache // users from messages from logs who may have left the server and were // not previously cached. diff --git a/src/Client/Resolver/Resolver.js b/src/Client/Resolver/Resolver.js index c360ce57d..fe88ba946 100644 --- a/src/Client/Resolver/Resolver.js +++ b/src/Client/Resolver/Resolver.js @@ -98,10 +98,13 @@ export default class Resolver { // resource is a string var _mentions = []; var changed = resource; - for (var mention of (resource.match(/<@[^>]*>/g) || [])) { - let userID = mention.substring(2, mention.length - 1); - _mentions.push(userID); - changed = changed.replace(new RegExp(mention, "g"), `@${this.internal.client.users.get("id", userID).username}`); + for (var mention of (resource.match(/<@[0-9]+>/g) || [])) { + var userID = mention.substring(2, mention.length - 1); + var user = this.internal.client.users.get("id", userID); + if (user) { + _mentions.push(user); + changed = changed.replace(new RegExp(mention, "g"), `@${user.username}`); + } } return [_mentions, changed]; } diff --git a/src/Structures/Message.js b/src/Structures/Message.js index 46f6a2c66..972cdcf19 100644 --- a/src/Structures/Message.js +++ b/src/Structures/Message.js @@ -27,9 +27,12 @@ export default class Message extends Equality{ this.author = client.internal.users.add(new User(data.author, client)); this.content = data.content; + + var mentionData = client.internal.resolver.resolveMentions(data.content); + this.cleanContent = mentionData[1]; this.mentions = new Cache(); - data.mentions.forEach((mention) => { + mentionData[0].forEach((mention) => { // this is .add and not .get because it allows the bot to cache // users from messages from logs who may have left the server and were // not previously cached.