Skip to content

Commit de14c92

Browse files
MinerPLJiralite
andauthored
feat(ClientUser): Add support for setting bot banner (#10176)
* feat(discord.js): added support to setting bot banner added feature to set banner for bot from code level the function is in the experimental phase of Discord. * fix: resolve requested changes * fix: add missing type in ClientUserEditOptions --------- Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
1 parent 464d627 commit de14c92

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

packages/discord.js/src/structures/ClientUser.js

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,21 @@ class ClientUser extends User {
4747
* @typedef {Object} ClientUserEditOptions
4848
* @property {string} [username] The new username
4949
* @property {?(BufferResolvable|Base64Resolvable)} [avatar] The new avatar
50+
* @property {?(BufferResolvable|Base64Resolvable)} [banner] The new banner
5051
*/
5152

5253
/**
5354
* Edits the logged in client.
5455
* @param {ClientUserEditOptions} options The options to provide
5556
* @returns {Promise<ClientUser>}
5657
*/
57-
async edit({ username, avatar }) {
58+
async edit({ username, avatar, banner }) {
5859
const data = await this.client.rest.patch(Routes.user(), {
59-
body: { username, avatar: avatar && (await resolveImage(avatar)) },
60+
body: {
61+
username,
62+
avatar: avatar && (await resolveImage(avatar)),
63+
banner: banner && (await resolveImage(banner)),
64+
},
6065
});
6166

6267
this.client.token = data.token;
@@ -95,6 +100,20 @@ class ClientUser extends User {
95100
return this.edit({ avatar });
96101
}
97102

103+
/**
104+
* Sets the banner of the logged in client.
105+
* @param {?(BufferResolvable|Base64Resolvable)} banner The new banner
106+
* @returns {Promise<ClientUser>}
107+
* @example
108+
* // Set banner
109+
* client.user.setBanner('./banner.png')
110+
* .then(user => console.log(`New banner set!`))
111+
* .catch(console.error);
112+
*/
113+
setBanner(banner) {
114+
return this.edit({ banner });
115+
}
116+
98117
/**
99118
* Options for setting activities
100119
* @typedef {Object} ActivitiesOptions

packages/discord.js/typings/index.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1093,6 +1093,7 @@ export class ClientUser extends User {
10931093
public setActivity(name: string, options?: Omit<ActivityOptions, 'name'>): ClientPresence;
10941094
public setAFK(afk?: boolean, shardId?: number | readonly number[]): ClientPresence;
10951095
public setAvatar(avatar: BufferResolvable | Base64Resolvable | null): Promise<this>;
1096+
public setBanner(banner: BufferResolvable | Base64Resolvable | null): Promise<this>;
10961097
public setPresence(data: PresenceData): ClientPresence;
10971098
public setStatus(status: PresenceStatusData, shardId?: number | readonly number[]): ClientPresence;
10981099
public setUsername(username: string): Promise<this>;
@@ -5233,6 +5234,7 @@ export interface ClientPresenceStatusData {
52335234
export interface ClientUserEditOptions {
52345235
username?: string;
52355236
avatar?: BufferResolvable | Base64Resolvable | null;
5237+
banner?: BufferResolvable | Base64Resolvable | null;
52365238
}
52375239

52385240
export interface CloseEvent {

0 commit comments

Comments
 (0)