mirror of
https://github.com/danbulant/discord.js
synced 2026-06-09 01:31:29 +00:00
Add Guild.fetchMember
This commit is contained in:
parent
f3286402fb
commit
c7b4cf3d3f
5 changed files with 41 additions and 6 deletions
|
|
@ -69,6 +69,11 @@ class ClientDataManager {
|
||||||
return null;
|
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) {
|
killGuild(guild) {
|
||||||
const already = this.client.guilds.has(guild.id);
|
const already = this.client.guilds.has(guild.id);
|
||||||
this.client.guilds.delete(guild.id);
|
this.client.guilds.delete(guild.id);
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ class ActionsManager {
|
||||||
this.register('ChannelUpdate');
|
this.register('ChannelUpdate');
|
||||||
this.register('GuildDelete');
|
this.register('GuildDelete');
|
||||||
this.register('GuildUpdate');
|
this.register('GuildUpdate');
|
||||||
|
this.register('GuildMemberGet');
|
||||||
this.register('GuildMemberRemove');
|
this.register('GuildMemberRemove');
|
||||||
this.register('GuildBanRemove');
|
this.register('GuildBanRemove');
|
||||||
this.register('GuildRoleCreate');
|
this.register('GuildRoleCreate');
|
||||||
|
|
|
||||||
13
src/client/actions/GuildMemberGet.js
Normal file
13
src/client/actions/GuildMemberGet.js
Normal 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;
|
||||||
|
|
@ -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) {
|
updateGuildMember(member, data) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if (data.channel) data.channel_id = this.rest.client.resolver.resolveChannel(data.channel).id;
|
if (data.channel) data.channel_id = this.rest.client.resolver.resolveChannel(data.channel).id;
|
||||||
|
|
|
||||||
|
|
@ -67,9 +67,7 @@ class Guild {
|
||||||
}
|
}
|
||||||
|
|
||||||
_addMember(guildUser, noEvent) {
|
_addMember(guildUser, noEvent) {
|
||||||
if (!(guildUser.user instanceof User)) {
|
if (!(guildUser.user instanceof User)) guildUser.user = this.client.dataManager.newUser(guildUser.user);
|
||||||
guildUser.user = this.client.dataManager.newUser(guildUser.user);
|
|
||||||
}
|
|
||||||
|
|
||||||
guildUser.joined_at = guildUser.joined_at || 0;
|
guildUser.joined_at = guildUser.joined_at || 0;
|
||||||
const member = new GuildMember(this, guildUser);
|
const member = new GuildMember(this, guildUser);
|
||||||
|
|
@ -576,6 +574,18 @@ class Guild {
|
||||||
return this.client.rest.methods.getGuildInvites(this);
|
return this.client.rest.methods.getGuildInvites(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch a single guild member from a user.
|
||||||
|
* @param {UserResolvable} user The user to fetch the member for
|
||||||
|
* @returns {Promise<GuildMember>}
|
||||||
|
*/
|
||||||
|
fetchMember(user) {
|
||||||
|
user = this.client.resolver.resolveUser(user);
|
||||||
|
if (!user) return Promise.reject(new Error('user is not cached'));
|
||||||
|
if (this.members.has(user.id)) return Promise.resolve(this.members.get(user.id));
|
||||||
|
return this.client.rest.methods.getGuildMember(this, user);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetches all the members in the Guild, even if they are offline. If the Guild has less than 250 members,
|
* Fetches all the members in the Guild, even if they are offline. If the Guild has less than 250 members,
|
||||||
* this should not be necessary.
|
* this should not be necessary.
|
||||||
|
|
@ -584,9 +594,7 @@ class Guild {
|
||||||
*/
|
*/
|
||||||
fetchMembers(query = '') {
|
fetchMembers(query = '') {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if (this._fetchWaiter) {
|
if (this._fetchWaiter) throw new Error('already fetching guild members');
|
||||||
throw new Error('already fetching guild members');
|
|
||||||
}
|
|
||||||
if (this.memberCount === this.members.size) {
|
if (this.memberCount === this.members.size) {
|
||||||
resolve(this);
|
resolve(this);
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue