diff --git a/src/managers/GuildMemberRoleManager.js b/src/managers/GuildMemberRoleManager.js index f5dd801da82f..08b78f9098d2 100644 --- a/src/managers/GuildMemberRoleManager.js +++ b/src/managers/GuildMemberRoleManager.js @@ -47,6 +47,17 @@ class GuildMemberRoleManager extends DataManager { return hoistedRoles.reduce((prev, role) => (!prev || role.comparePositionTo(prev) > 0 ? role : prev)); } + /** + * The role of the member used to set their role icon + * @type {?Role} + * @readonly + */ + get icon() { + const iconRoles = this.cache.filter(role => role.icon || role.unicodeEmoji); + if (!iconRoles.size) return null; + return iconRoles.reduce((prev, role) => (role.comparePositionTo(prev) > 0 ? role : prev)); + } + /** * The role of the member used to set their color * @type {?Role} diff --git a/typings/index.d.ts b/typings/index.d.ts index 5f2674177e37..3bd0b3dfcf15 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -2751,6 +2751,7 @@ export class GuildStickerManager extends CachedManager { private constructor(member: GuildMember); public readonly hoist: Role | null; + public readonly icon: Role | null; public readonly color: Role | null; public readonly highest: Role; public readonly premiumSubscriberRole: Role | null;