Skip to content

Commit d2e74a4

Browse files
committed
refactor: use function
1 parent ef4fc9e commit d2e74a4

File tree

3 files changed

+25
-9
lines changed

3 files changed

+25
-9
lines changed

packages/discord.js/src/managers/ThreadMemberManager.js

+3-9
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ const { Routes } = require('discord-api-types/v10');
77
const CachedManager = require('./CachedManager');
88
const { DiscordjsTypeError, ErrorCodes } = require('../errors');
99
const ThreadMember = require('../structures/ThreadMember');
10+
const { emitDeprecationWarningForRemoveThreadMember } = require('../util/Util');
1011

1112
let deprecationEmittedForAdd = false;
12-
let deprecationEmittedForRemove = false;
1313

1414
/**
1515
* Manages API methods for GuildMembers and stores their cache.
@@ -124,14 +124,8 @@ class ThreadMemberManager extends CachedManager {
124124
* @returns {Promise<Snowflake>}
125125
*/
126126
async remove(member, reason) {
127-
if (reason !== undefined && !deprecationEmittedForRemove) {
128-
process.emitWarning(
129-
// eslint-disable-next-line max-len
130-
'The reason parameter of ThreadMemberManager#remove() is deprecated as Discord does not parse them. It will be removed in the next major version.',
131-
'DeprecationWarning',
132-
);
133-
134-
deprecationEmittedForRemove = true;
127+
if (reason !== undefined) {
128+
emitDeprecationWarningForRemoveThreadMember(this.constructor.name);
135129
}
136130

137131
const id = member === '@me' ? member : this.client.users.resolveId(member);

packages/discord.js/src/structures/ThreadMember.js

+5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
const Base = require('./Base');
44
const ThreadMemberFlagsBitField = require('../util/ThreadMemberFlagsBitField');
5+
const { emitDeprecationWarningForRemoveThreadMember } = require('../util/Util');
56

67
/**
78
* Represents a Member for a Thread.
@@ -106,6 +107,10 @@ class ThreadMember extends Base {
106107
* @returns {Promise<ThreadMember>}
107108
*/
108109
async remove(reason) {
110+
if (reason !== undefined) {
111+
emitDeprecationWarningForRemoveThreadMember(this.constructor.name);
112+
}
113+
109114
await this.thread.members.remove(this.id, reason);
110115
return this;
111116
}

packages/discord.js/src/util/Util.js

+17
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
'use strict';
22

33
const { parse } = require('node:path');
4+
const process = require('node:process');
45
const { Collection } = require('@discordjs/collection');
56
const { ChannelType, RouteBases, Routes } = require('discord-api-types/v10');
67
const { fetch } = require('undici');
78
const Colors = require('./Colors');
89
const { DiscordjsError, DiscordjsRangeError, DiscordjsTypeError, ErrorCodes } = require('../errors');
910
const isObject = d => typeof d === 'object' && d !== null;
1011

12+
let deprecationEmittedForRemoveThreadMember = false;
13+
1114
/**
1215
* Flatten an object. Any properties that are collections will get converted to an array of keys.
1316
* @param {Object} obj The object to flatten.
@@ -499,6 +502,19 @@ function resolveSKUId(resolvable) {
499502
return null;
500503
}
501504

505+
/**
506+
* Deprecation function for the reason parameter of removing thread members.
507+
* @param {string} name Name of the class
508+
* @private
509+
*/
510+
function emitDeprecationWarningForRemoveThreadMember(name) {
511+
if (deprecationEmittedForRemoveThreadMember) return;
512+
process.emitWarning(
513+
`The reason parameter of ${name}#remove() is deprecated as Discord does not parse them. It will be removed in the next major version.`,
514+
);
515+
deprecationEmittedForRemoveThreadMember = true;
516+
}
517+
502518
module.exports = {
503519
flatten,
504520
fetchRecommendedShardCount,
@@ -518,6 +534,7 @@ module.exports = {
518534
parseWebhookURL,
519535
transformResolved,
520536
resolveSKUId,
537+
emitDeprecationWarningForRemoveThreadMember,
521538
};
522539

523540
// Fixes Circular

0 commit comments

Comments
 (0)