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>
This commit is contained in:
Dawid Jaworski
2024-04-09 16:09:01 +02:00
committed by GitHub
parent 464d627f1d
commit de14c92c11
2 changed files with 23 additions and 2 deletions

View File

@@ -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<ClientUser>}
*/
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<ClientUser>}
* @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

View File

@@ -1093,6 +1093,7 @@ export class ClientUser extends User {
public setActivity(name: string, options?: Omit<ActivityOptions, 'name'>): ClientPresence;
public setAFK(afk?: boolean, shardId?: number | readonly number[]): ClientPresence;
public setAvatar(avatar: BufferResolvable | Base64Resolvable | null): Promise<this>;
public setBanner(banner: BufferResolvable | Base64Resolvable | null): Promise<this>;
public setPresence(data: PresenceData): ClientPresence;
public setStatus(status: PresenceStatusData, shardId?: number | readonly number[]): ClientPresence;
public setUsername(username: string): Promise<this>;
@@ -5233,6 +5234,7 @@ export interface ClientPresenceStatusData {
export interface ClientUserEditOptions {
username?: string;
avatar?: BufferResolvable | Base64Resolvable | null;
banner?: BufferResolvable | Base64Resolvable | null;
}
export interface CloseEvent {