mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-17 03:53:29 +01:00
refactor: move member adding to manager (#6231)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com> Co-authored-by: Antonio Román <kyradiscord@gmail.com> Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
This commit is contained in:
8
typings/index.d.ts
vendored
8
typings/index.d.ts
vendored
@@ -573,7 +573,6 @@ export class Guild extends AnonymousGuild {
|
||||
public readonly widgetChannel: TextChannel | null;
|
||||
public widgetChannelId: Snowflake | null;
|
||||
public widgetEnabled: boolean | null;
|
||||
public addMember(user: UserResolvable, options: AddGuildMemberOptions): Promise<GuildMember>;
|
||||
public createTemplate(name: string, description?: string): Promise<GuildTemplate>;
|
||||
public delete(): Promise<Guild>;
|
||||
public discoverySplashURL(options?: StaticImageURLOptions): string | null;
|
||||
@@ -2341,6 +2340,11 @@ export class GuildManager extends CachedManager<Snowflake, Guild, GuildResolvabl
|
||||
export class GuildMemberManager extends CachedManager<Snowflake, GuildMember, GuildMemberResolvable> {
|
||||
public constructor(guild: Guild, iterable?: Iterable<unknown>);
|
||||
public guild: Guild;
|
||||
public add(
|
||||
user: UserResolvable,
|
||||
options: AddGuildMemberOptions & { fetchWhenExisting: false },
|
||||
): Promise<GuildMember | null>;
|
||||
public add(user: UserResolvable, options: AddGuildMemberOptions): Promise<GuildMember>;
|
||||
public ban(user: UserResolvable, options?: BanOptions): Promise<GuildMember | User | Snowflake>;
|
||||
public edit(user: UserResolvable, data: GuildMemberEditData, reason?: string): Promise<void>;
|
||||
public fetch(
|
||||
@@ -2609,6 +2613,8 @@ export interface AddGuildMemberOptions {
|
||||
roles?: Collection<Snowflake, Role> | RoleResolvable[];
|
||||
mute?: boolean;
|
||||
deaf?: boolean;
|
||||
force?: boolean;
|
||||
fetchWhenExisting?: boolean;
|
||||
}
|
||||
|
||||
export type AllowedImageFormat = 'webp' | 'png' | 'jpg' | 'jpeg' | 'gif';
|
||||
|
||||
@@ -404,6 +404,9 @@ client.on('ready', async () => {
|
||||
});
|
||||
});
|
||||
|
||||
// This is to check that stuff is the right type
|
||||
declare const assertIsPromiseMember: (m: Promise<GuildMember>) => void;
|
||||
|
||||
client.on('guildCreate', g => {
|
||||
const channel = g.channels.cache.random();
|
||||
if (!channel) return;
|
||||
@@ -411,6 +414,32 @@ client.on('guildCreate', g => {
|
||||
channel.setName('foo').then(updatedChannel => {
|
||||
console.log(`New channel name: ${updatedChannel.name}`);
|
||||
});
|
||||
|
||||
// @ts-expect-error no options
|
||||
assertIsPromiseMember(g.members.add(testUserId));
|
||||
|
||||
// @ts-expect-error no access token
|
||||
assertIsPromiseMember(g.members.add(testUserId, {}));
|
||||
|
||||
// @ts-expect-error invalid role resolvable
|
||||
assertIsPromiseMember(g.members.add(testUserId, { accessToken: 'totallyRealAccessToken', roles: [g.roles.cache] }));
|
||||
|
||||
assertType<Promise<GuildMember | null>>(
|
||||
g.members.add(testUserId, { accessToken: 'totallyRealAccessToken', fetchWhenExisting: false }),
|
||||
);
|
||||
|
||||
assertIsPromiseMember(g.members.add(testUserId, { accessToken: 'totallyRealAccessToken' }));
|
||||
|
||||
assertIsPromiseMember(
|
||||
g.members.add(testUserId, {
|
||||
accessToken: 'totallyRealAccessToken',
|
||||
mute: true,
|
||||
deaf: false,
|
||||
roles: [g.roles.cache.first()!],
|
||||
force: true,
|
||||
fetchWhenExisting: true,
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
client.on('messageReactionRemoveAll', async message => {
|
||||
|
||||
Reference in New Issue
Block a user