Add Guild.fetchMember

This commit is contained in:
Schuyler Cebulskie
2016-09-06 20:36:58 -04:00
parent f3286402fb
commit c7b4cf3d3f
5 changed files with 41 additions and 6 deletions

View File

@@ -69,6 +69,11 @@ class ClientDataManager {
return null;
}
newGuildMember(guild, data) {
if (guild.members.has(data.user.id)) return guild.members.get(data.user.id);
return guild._addMember(data);
}
killGuild(guild) {
const already = this.client.guilds.has(guild.id);
this.client.guilds.delete(guild.id);

View File

@@ -11,6 +11,7 @@ class ActionsManager {
this.register('ChannelUpdate');
this.register('GuildDelete');
this.register('GuildUpdate');
this.register('GuildMemberGet');
this.register('GuildMemberRemove');
this.register('GuildBanRemove');
this.register('GuildRoleCreate');

View File

@@ -0,0 +1,13 @@
const Action = require('./Action');
class GuildMemberGetAction extends Action {
handle(guild, data) {
const client = this.client;
const member = client.dataManager.newGuildMember(guild, data);
return {
member,
};
}
}
module.exports = GuildMemberGetAction;

View File

@@ -306,6 +306,14 @@ class RESTMethods {
});
}
getGuildMember(guild, user) {
return new Promise((resolve, reject) => {
this.rest.makeRequest('get', Constants.Endpoints.guildMember(guild.id, user.id), true).then((data) => {
resolve(this.rest.client.actions.GuildMemberGet.handle(guild, data).member);
}).catch(reject);
});
}
updateGuildMember(member, data) {
return new Promise((resolve, reject) => {
if (data.channel) data.channel_id = this.rest.client.resolver.resolveChannel(data.channel).id;