Update Bot (j'ai plus le repo sur GitHub)
Qui c'est la conne qui a delete le repo sur GitHub? C'EST MOIIIII
This commit is contained in:
130
node_modules/discord.js/src/managers/GuildMemberManager.js
generated
vendored
130
node_modules/discord.js/src/managers/GuildMemberManager.js
generated
vendored
@@ -1,19 +1,24 @@
|
||||
'use strict';
|
||||
|
||||
const { process } = require('node:process');
|
||||
const { setTimeout, clearTimeout } = require('node:timers');
|
||||
const { Collection } = require('@discordjs/collection');
|
||||
const { makeURLSearchParams } = require('@discordjs/rest');
|
||||
const { GatewayRateLimitError } = require('@discordjs/util');
|
||||
const { DiscordSnowflake } = require('@sapphire/snowflake');
|
||||
const { Routes, GatewayOpcodes } = require('discord-api-types/v10');
|
||||
const { Routes, GatewayOpcodes, GatewayDispatchEvents } = require('discord-api-types/v10');
|
||||
const CachedManager = require('./CachedManager');
|
||||
const { DiscordjsError, DiscordjsTypeError, DiscordjsRangeError, ErrorCodes } = require('../errors');
|
||||
const BaseGuildVoiceChannel = require('../structures/BaseGuildVoiceChannel');
|
||||
const { GuildMember } = require('../structures/GuildMember');
|
||||
const { Role } = require('../structures/Role');
|
||||
const { resolveImage } = require('../util/DataResolver');
|
||||
const Events = require('../util/Events');
|
||||
const { GuildMemberFlagsBitField } = require('../util/GuildMemberFlagsBitField');
|
||||
const Partials = require('../util/Partials');
|
||||
|
||||
let deprecatedEmittedForEditSoleNickname = false;
|
||||
|
||||
/**
|
||||
* Manages API methods for GuildMembers and stores their cache.
|
||||
* @extends {CachedManager}
|
||||
@@ -235,19 +240,25 @@ class GuildMemberManager extends CachedManager {
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!query && !users) query = '';
|
||||
this.guild.shard.send({
|
||||
op: GatewayOpcodes.RequestGuildMembers,
|
||||
d: {
|
||||
guild_id: this.guild.id,
|
||||
presences,
|
||||
user_ids: users,
|
||||
query,
|
||||
nonce,
|
||||
limit,
|
||||
},
|
||||
});
|
||||
const fetchedMembers = new Collection();
|
||||
let i = 0;
|
||||
|
||||
const cleanup = () => {
|
||||
/* eslint-disable no-use-before-define */
|
||||
clearTimeout(timeout);
|
||||
|
||||
this.client.removeListener(Events.Raw, rateLimitHandler);
|
||||
this.client.decrementMaxListeners();
|
||||
this.client.removeListener(Events.GuildMembersChunk, handler);
|
||||
this.client.decrementMaxListeners();
|
||||
/* eslint-enable no-use-before-define */
|
||||
};
|
||||
|
||||
const timeout = setTimeout(() => {
|
||||
cleanup();
|
||||
reject(new DiscordjsError(ErrorCodes.GuildMembersTimeout));
|
||||
}, time).unref();
|
||||
|
||||
const handler = (members, _, chunk) => {
|
||||
if (chunk.nonce !== nonce) return;
|
||||
timeout.refresh();
|
||||
@@ -256,19 +267,37 @@ class GuildMemberManager extends CachedManager {
|
||||
fetchedMembers.set(member.id, member);
|
||||
}
|
||||
if (members.size < 1_000 || (limit && fetchedMembers.size >= limit) || i === chunk.count) {
|
||||
clearTimeout(timeout);
|
||||
this.client.removeListener(Events.GuildMembersChunk, handler);
|
||||
this.client.decrementMaxListeners();
|
||||
cleanup();
|
||||
resolve(users && !Array.isArray(users) && fetchedMembers.size ? fetchedMembers.first() : fetchedMembers);
|
||||
}
|
||||
};
|
||||
const timeout = setTimeout(() => {
|
||||
this.client.removeListener(Events.GuildMembersChunk, handler);
|
||||
this.client.decrementMaxListeners();
|
||||
reject(new DiscordjsError(ErrorCodes.GuildMembersTimeout));
|
||||
}, time).unref();
|
||||
|
||||
const requestData = {
|
||||
guild_id: this.guild.id,
|
||||
presences,
|
||||
user_ids: users,
|
||||
query,
|
||||
nonce,
|
||||
limit,
|
||||
};
|
||||
|
||||
const rateLimitHandler = payload => {
|
||||
if (payload.t === GatewayDispatchEvents.RateLimited && payload.d.meta.nonce === nonce) {
|
||||
cleanup();
|
||||
reject(new GatewayRateLimitError(payload.d, requestData));
|
||||
}
|
||||
};
|
||||
|
||||
this.client.incrementMaxListeners();
|
||||
this.client.on(Events.Raw, rateLimitHandler);
|
||||
|
||||
this.client.incrementMaxListeners();
|
||||
this.client.on(Events.GuildMembersChunk, handler);
|
||||
|
||||
this.guild.shard.send({
|
||||
op: GatewayOpcodes.RequestGuildMembers,
|
||||
d: requestData,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -336,8 +365,8 @@ class GuildMemberManager extends CachedManager {
|
||||
*/
|
||||
|
||||
/**
|
||||
* Edits a member of the guild.
|
||||
* <info>The user must be a member of the guild</info>
|
||||
* Edits a member of a guild.
|
||||
*
|
||||
* @param {UserResolvable} user The member to edit
|
||||
* @param {GuildMemberEditOptions} options The options to provide
|
||||
* @returns {Promise<GuildMember>}
|
||||
@@ -372,13 +401,30 @@ class GuildMemberManager extends CachedManager {
|
||||
}
|
||||
|
||||
let endpoint;
|
||||
|
||||
if (id === this.client.user.id) {
|
||||
const keys = Object.keys(options);
|
||||
if (keys.length === 1 && keys[0] === 'nick') endpoint = Routes.guildMember(this.guild.id);
|
||||
else endpoint = Routes.guildMember(this.guild.id, id);
|
||||
} else {
|
||||
endpoint = Routes.guildMember(this.guild.id, id);
|
||||
|
||||
if (keys.length === 1 && keys[0] === 'nick') {
|
||||
// For modifying the current application's nickname only, we use the /guilds/{guild.id}/members/@me endpoint.
|
||||
// This endpoint only requires the CHANGE_NICKNAME permission.
|
||||
// The other endpoint would require the MANAGE_NICKNAMES permission.
|
||||
// In v15, this will be split out, so emit a deprecation.
|
||||
endpoint = Routes.guildMember(this.guild.id, '@me');
|
||||
|
||||
if (!deprecatedEmittedForEditSoleNickname) {
|
||||
process.emitWarning(
|
||||
// eslint-disable-next-line max-len
|
||||
"You should use GuildMemberManager#editMe() when changing your nickname. Due to Discord's API changes, GuildMemberManager#edit() will end up requiring MANAGE_NICKNAMES in v15.",
|
||||
'DeprecationWarning',
|
||||
);
|
||||
|
||||
deprecatedEmittedForEditSoleNickname = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
endpoint ??= Routes.guildMember(this.guild.id, id);
|
||||
const d = await this.client.rest.patch(endpoint, { body: options, reason });
|
||||
|
||||
const clone = this.cache.get(id)?._clone();
|
||||
@@ -386,6 +432,38 @@ class GuildMemberManager extends CachedManager {
|
||||
return clone ?? this._add(d, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* The data for editing the current application's guild member.
|
||||
*
|
||||
* @typedef {Object} GuildMemberEditMeOptions
|
||||
* @property {?string} [nick] The nickname to set
|
||||
* @property {?(BufferResolvable|Base64Resolvable)} [banner] The banner to set
|
||||
* @property {?(BufferResolvable|Base64Resolvable)} [avatar] The avatar to set
|
||||
* @property {?string} [bio] The bio to set
|
||||
* @property {string} [reason] The reason to use
|
||||
*/
|
||||
|
||||
/**
|
||||
* Edits the current application's guild member in a guild.
|
||||
*
|
||||
* @param {GuildMemberEditMeOptions} options The options to provide
|
||||
* @returns {Promise<GuildMember>}
|
||||
*/
|
||||
async editMe({ reason, ...options }) {
|
||||
const data = await this.client.rest.patch(Routes.guildMember(this.guild.id, '@me'), {
|
||||
body: {
|
||||
...options,
|
||||
banner: options.banner && (await resolveImage(options.banner)),
|
||||
avatar: options.avatar && (await resolveImage(options.avatar)),
|
||||
},
|
||||
reason,
|
||||
});
|
||||
|
||||
const clone = this.me?._clone();
|
||||
clone?._patch(data);
|
||||
return clone ?? this._add(data, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Options used for pruning guild members.
|
||||
* <info>It's recommended to set {@link GuildPruneMembersOptions#count options.count}
|
||||
|
||||
Reference in New Issue
Block a user