Move around mentions and stuff

This commit is contained in:
Amish Shah
2016-08-22 23:09:45 +01:00
parent ddd3ea9727
commit 2a1799f20f
4 changed files with 50 additions and 15 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,7 @@
const DocumentedItem = require('./DocumentedItem'); const DocumentedItem = require('./DocumentedItem');
const DocumentedItemMeta = require('./DocumentedItemMeta'); const DocumentedItemMeta = require('./DocumentedItemMeta');
const DocumentedVarType = require('./DocumentedVarType'); const DocumentedVarType = require('./DocumentedVarType');
const DocumentedParam = require('./DocumentedParam');
/* /*
{ id: 'Client#rest', { id: 'Client#rest',
@@ -26,11 +27,20 @@ class DocumentedMember extends DocumentedItem {
this.directData = data; this.directData = data;
this.directData.meta = new DocumentedItemMeta(this, data.meta); this.directData.meta = new DocumentedItemMeta(this, data.meta);
this.directData.type = new DocumentedVarType(this, data.type); this.directData.type = new DocumentedVarType(this, data.type);
if (data.properties) {
const newProps = [];
for (const param of data.properties) {
newProps.push(new DocumentedParam(this, param));
}
this.directData.properties = newProps;
} else {
data.properties = [];
}
} }
serialize() { serialize() {
super.serialize(); super.serialize();
const { id, name, description, memberof, type, access, meta } = this.directData; const { id, name, description, memberof, type, access, meta, properties } = this.directData;
return { return {
id, id,
name, name,
@@ -39,6 +49,7 @@ class DocumentedMember extends DocumentedItem {
type: type.serialize(), type: type.serialize(),
access, access,
meta: meta.serialize(), meta: meta.serialize(),
props: properties.map(p => p.serialize()),
}; };
} }

View File

@@ -79,28 +79,37 @@ class Message {
*/ */
this.attachments = data.attachments; this.attachments = data.attachments;
/** /**
* A map of users mentioned in the message, the key is the user ID. * An object containing a further users or roles map
* @type {Map<String, User>} * @type {Object}
* @property {Map<String, User>} mentions.users Mentioned users, maps their ID to the user object.
* @property {Map<String, Role>} mentions.roles Mentioned roles, maps their ID to the role object.
*/ */
this.mentions = new Map(); this.mentions = {
users: new Map(),
roles: new Map(),
};
/** /**
* The ID of the message (unique in the channel it was sent) * The ID of the message (unique in the channel it was sent)
* @type {String} * @type {String}
*/ */
this.id = data.id; this.id = data.id;
/**
* A map of roles mentioned in the message, the key is the role ID.
* @type {Map<String, Role>}
*/
this.roleMentions = new Map();
for (const mention of data.mentions) { for (const mention of data.mentions) {
let user = this.client.users.get(mention.id); let user = this.client.users.get(mention.id);
if (user) { if (user) {
this.mentions.set(user.id, user); this.mentions.users.set(user.id, user);
} else { } else {
user = this.client.dataManager.newUser(mention); user = this.client.dataManager.newUser(mention);
this.mentions.set(user.id, user); this.mentions.users.set(user.id, user);
}
}
if (data.mention_roles) {
for (const mention of data.mention_roles) {
const role = this.channel.guild.roles.get(mention);
if (role) {
this.mentions.roles.set(role.id, role);
}
} }
} }
} }
@@ -137,14 +146,21 @@ class Message {
for (const mention of data.mentions) { for (const mention of data.mentions) {
let user = this.client.users.get(mention.id); let user = this.client.users.get(mention.id);
if (user) { if (user) {
this.mentions.set(user.id, user); this.mentions.users.set(user.id, user);
} else { } else {
user = this.client.dataManager.newUser(mention); user = this.client.dataManager.newUser(mention);
this.mentions.set(user.id, user); this.mentions.users.set(user.id, user);
}
}
}
if (data.mention_roles) {
for (const mention of data.mention_roles) {
const role = this.channel.guild.roles.get(mention);
if (role) {
this.mentions.roles.set(role.id, role);
} }
} }
} }
if (data.id) { if (data.id) {
this.id = data.id; this.id = data.id;
} }

View File

@@ -213,6 +213,14 @@ class Role {
return ((this.permissions & permission) > 0); return ((this.permissions & permission) > 0);
} }
/**
* When concatenated with a String, this automatically concatenates the Role mention rather than the Role object.
* @returns {String}
*/
toString() {
return `<@&${this.id}>`;
}
} }
module.exports = Role; module.exports = Role;