mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-10 16:43:31 +01:00
Member role *should* be used properly across the API
The Client now SHOULD add roles properly to members, as they leave it up to the Server class.
This commit is contained in:
@@ -938,12 +938,8 @@ class Client {
|
||||
if (server) {
|
||||
|
||||
var user = self.addUser(data.user); //if for whatever reason it doesn't exist..
|
||||
|
||||
if (!~server.members.indexOf(user)) {
|
||||
server.members.push(user);
|
||||
}
|
||||
|
||||
self.trigger("serverNewMember", user, server);
|
||||
self.trigger("serverNewMember", server.addMember(user, data.roles), server);
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -956,10 +952,8 @@ class Client {
|
||||
|
||||
var user = self.addUser(data.user); //if for whatever reason it doesn't exist..
|
||||
|
||||
if (~server.members.indexOf(user)) {
|
||||
server.members.splice(server.members.indexOf(user), 1);
|
||||
}
|
||||
|
||||
server.removeMember("id", user.id);
|
||||
|
||||
self.trigger("serverRemoveMember", user, server);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,13 +2,22 @@ var User = require("./user.js");
|
||||
|
||||
class Member extends User{
|
||||
|
||||
constructor(user, server){
|
||||
constructor(user, server, roles){
|
||||
super(user); // should work, we are basically creating a Member that has the same properties as user and a few more
|
||||
this.server = server;
|
||||
this.rawRoles = roles;
|
||||
}
|
||||
|
||||
get roles(){
|
||||
return [];
|
||||
|
||||
var ufRoles = [];
|
||||
|
||||
for(var rawRole of this.rawRoles){
|
||||
ufRoles.push( this.server.getRole(rawRole) );
|
||||
}
|
||||
|
||||
return ufRoles;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ class Message{
|
||||
this.editedTimestamp = data.edited_timestamp;
|
||||
this.content = data.content.trim();
|
||||
this.channel = channel;
|
||||
this.author = author;
|
||||
this.author = this.channel.server.getMember("id", author.id);
|
||||
this.attachments = data.attachments;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ class Server {
|
||||
// it will be identical (unless an async change occurred)
|
||||
// to the client's cache.
|
||||
if(member.user)
|
||||
this.members.push(client.addUser(member.user));
|
||||
this.addMember(client.addUser(member.user), member.roles);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -68,6 +68,17 @@ class Server {
|
||||
}
|
||||
|
||||
// get/set
|
||||
|
||||
getRole(id){
|
||||
for (var role of this.roles) {
|
||||
if (role.id === id) {
|
||||
return role;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
getChannel(key, value) {
|
||||
for (var channel of this.channels) {
|
||||
if (channel[key] === value) {
|
||||
@@ -88,6 +99,17 @@ class Server {
|
||||
return null;
|
||||
}
|
||||
|
||||
removeMember(key, value){
|
||||
for (var member of this.members) {
|
||||
if (member[key] === value) {
|
||||
this.members.splice(key, 1);
|
||||
return member;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
addChannel(chann) {
|
||||
if (!this.getChannel("id", chann.id)) {
|
||||
this.channels.push(chann);
|
||||
@@ -95,9 +117,9 @@ class Server {
|
||||
return chann;
|
||||
}
|
||||
|
||||
addMember(user){
|
||||
addMember(user, roles){
|
||||
if (!this.getMember("id", user.id)){
|
||||
var mem = new Member(user, this);
|
||||
var mem = new Member(user, this, roles);
|
||||
this.members.push(mem);
|
||||
}
|
||||
return mem;
|
||||
|
||||
Reference in New Issue
Block a user