diff --git a/packages/discord.js/src/structures/ClientUser.js b/packages/discord.js/src/structures/ClientUser.js index ce48ef78cb01..3da3a52794cb 100644 --- a/packages/discord.js/src/structures/ClientUser.js +++ b/packages/discord.js/src/structures/ClientUser.js @@ -47,6 +47,7 @@ class ClientUser extends User { * @typedef {Object} ClientUserEditOptions * @property {string} [username] The new username * @property {?(BufferResolvable|Base64Resolvable)} [avatar] The new avatar + * @property {?(BufferResolvable|Base64Resolvable)} [banner] The new banner */ /** @@ -54,9 +55,13 @@ class ClientUser extends User { * @param {ClientUserEditOptions} options The options to provide * @returns {Promise} */ - async edit({ username, avatar }) { + async edit({ username, avatar, banner }) { const data = await this.client.rest.patch(Routes.user(), { - body: { username, avatar: avatar && (await resolveImage(avatar)) }, + body: { + username, + avatar: avatar && (await resolveImage(avatar)), + banner: banner && (await resolveImage(banner)), + }, }); this.client.token = data.token; @@ -95,6 +100,20 @@ class ClientUser extends User { return this.edit({ avatar }); } + /** + * Sets the banner of the logged in client. + * @param {?(BufferResolvable|Base64Resolvable)} banner The new banner + * @returns {Promise} + * @example + * // Set banner + * client.user.setBanner('./banner.png') + * .then(user => console.log(`New banner set!`)) + * .catch(console.error); + */ + setBanner(banner) { + return this.edit({ banner }); + } + /** * Options for setting activities * @typedef {Object} ActivitiesOptions diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 310a8bd09ceb..c247d4f61883 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -1093,6 +1093,7 @@ export class ClientUser extends User { public setActivity(name: string, options?: Omit): ClientPresence; public setAFK(afk?: boolean, shardId?: number | readonly number[]): ClientPresence; public setAvatar(avatar: BufferResolvable | Base64Resolvable | null): Promise; + public setBanner(banner: BufferResolvable | Base64Resolvable | null): Promise; public setPresence(data: PresenceData): ClientPresence; public setStatus(status: PresenceStatusData, shardId?: number | readonly number[]): ClientPresence; public setUsername(username: string): Promise; @@ -5233,6 +5234,7 @@ export interface ClientPresenceStatusData { export interface ClientUserEditOptions { username?: string; avatar?: BufferResolvable | Base64Resolvable | null; + banner?: BufferResolvable | Base64Resolvable | null; } export interface CloseEvent {