mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
Nickname mention detecting, channel and role mentions in cleanContent
This commit is contained in:
@@ -190,11 +190,10 @@ var Resolver = (function () {
|
||||
return Promise.resolve(resource);
|
||||
};
|
||||
|
||||
Resolver.prototype.resolveMentions = function resolveMentions(resource) {
|
||||
// resource is a string
|
||||
Resolver.prototype.resolveMentions = function resolveMentions(resource, channel) {
|
||||
var _mentions = [];
|
||||
var changed = resource;
|
||||
for (var _iterator2 = resource.match(/<@[0-9]+>/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) {
|
||||
@@ -207,12 +206,62 @@ var Resolver = (function () {
|
||||
}
|
||||
|
||||
var mention = _ref2;
|
||||
// username mention
|
||||
if (mention[2] === '!') {
|
||||
var user = this.internal.users.get("id", mention.substring(3, mention.length - 1));
|
||||
if (user) {
|
||||
_mentions.push(user);
|
||||
var details = channel.server.detailsOf(user);
|
||||
if (details) {
|
||||
changed = changed.replace(new RegExp(mention, "g"), "@" + (details.nick || user.username + "#" + user.discriminator));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
var user = this.internal.users.get("id", mention.substring(2, mention.length - 1));
|
||||
if (user) {
|
||||
_mentions.push(user);
|
||||
changed = changed.replace(new RegExp(mention, "g"), "@" + (user.username + "#" + user.discriminator));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (channel && channel.server && channel.server.roles) {
|
||||
for (var _iterator3 = resource.match(/<@&[0-9]+>/g) || [], _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
|
||||
var _ref3;
|
||||
|
||||
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);
|
||||
if (_isArray3) {
|
||||
if (_i3 >= _iterator3.length) break;
|
||||
_ref3 = _iterator3[_i3++];
|
||||
} else {
|
||||
_i3 = _iterator3.next();
|
||||
if (_i3.done) break;
|
||||
_ref3 = _i3.value;
|
||||
}
|
||||
|
||||
var mention = _ref3;
|
||||
// role mention
|
||||
var role = channel.server.roles.get("id", mention.substring(3, mention.length - 1));
|
||||
if (role) {
|
||||
changed = changed.replace(new RegExp(mention, "g"), "@" + role.name);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (var _iterator4 = resource.match(/<#[0-9]+>/g) || [], _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
|
||||
var _ref4;
|
||||
|
||||
if (_isArray4) {
|
||||
if (_i4 >= _iterator4.length) break;
|
||||
_ref4 = _iterator4[_i4++];
|
||||
} else {
|
||||
_i4 = _iterator4.next();
|
||||
if (_i4.done) break;
|
||||
_ref4 = _i4.value;
|
||||
}
|
||||
|
||||
var mention = _ref4;
|
||||
// channel mention
|
||||
var channel = this.internal.channels.get("id", mention.substring(2, mention.length - 1));
|
||||
if (channel) {
|
||||
changed = changed.replace(new RegExp(mention, "g"), "#" + channel.name);
|
||||
}
|
||||
}
|
||||
return [_mentions, changed];
|
||||
@@ -299,19 +348,19 @@ var Resolver = (function () {
|
||||
}
|
||||
if (resource instanceof _StructuresUser2["default"]) {
|
||||
// see if a PM exists
|
||||
for (var _iterator3 = this.internal.private_channels, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
|
||||
var _ref3;
|
||||
for (var _iterator5 = this.internal.private_channels, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
|
||||
var _ref5;
|
||||
|
||||
if (_isArray3) {
|
||||
if (_i3 >= _iterator3.length) break;
|
||||
_ref3 = _iterator3[_i3++];
|
||||
if (_isArray5) {
|
||||
if (_i5 >= _iterator5.length) break;
|
||||
_ref5 = _iterator5[_i5++];
|
||||
} else {
|
||||
_i3 = _iterator3.next();
|
||||
if (_i3.done) break;
|
||||
_ref3 = _i3.value;
|
||||
_i5 = _iterator5.next();
|
||||
if (_i5.done) break;
|
||||
_ref5 = _i5.value;
|
||||
}
|
||||
|
||||
var pmchat = _ref3;
|
||||
var pmchat = _ref5;
|
||||
|
||||
if (pmchat.recipient.equals(resource)) {
|
||||
return Promise.resolve(pmchat);
|
||||
|
||||
Reference in New Issue
Block a user