Add get guild prune. add role delete in role structure
This commit is contained in:
parent
989706e71a
commit
2d27068f5c
4 changed files with 57 additions and 5 deletions
|
@ -80,18 +80,21 @@ export class RolesManager extends BaseManager<RolePayload, Role> {
|
|||
}
|
||||
|
||||
/** Delete a Guild Role */
|
||||
async delete(role: Role | string): Promise<boolean> {
|
||||
async delete(role: Role | string): Promise<Role | undefined> {
|
||||
const oldRole = await this.get(typeof role === 'object' ? role.id : role)
|
||||
|
||||
await this.client.rest.delete(
|
||||
GUILD_ROLE(this.guild.id, typeof role === 'object' ? role.id : role)
|
||||
)
|
||||
return true
|
||||
|
||||
return oldRole
|
||||
}
|
||||
|
||||
async edit(role: Role | string, options: RoleModifyPayload): Promise<Role> {
|
||||
if (role instanceof Role) {
|
||||
role = role.id
|
||||
}
|
||||
const resp = await this.client.rest.patch(
|
||||
const resp: RolePayload = await this.client.rest.patch(
|
||||
GUILD_ROLE(this.guild.id, role),
|
||||
options
|
||||
)
|
||||
|
|
|
@ -11,7 +11,10 @@ import {
|
|||
GuildPreview,
|
||||
MessageNotification,
|
||||
ContentFilter,
|
||||
GuildModifyOptions
|
||||
GuildModifyOptions,
|
||||
GuildGetPruneCountOptions,
|
||||
GuildGetPruneCountPayload,
|
||||
GuildPruneCountPayload
|
||||
} from '../types/guild.ts'
|
||||
import { Base } from './base.ts'
|
||||
import { CreateGuildRoleOptions, RolesManager } from '../managers/roles.ts'
|
||||
|
@ -26,7 +29,12 @@ import { GuildEmojisManager } from '../managers/guildEmojis.ts'
|
|||
import { Member } from './member.ts'
|
||||
import { User } from './user.ts'
|
||||
import { Application } from './application.ts'
|
||||
import { GUILD_BAN, GUILD_BANS, GUILD_INTEGRATIONS } from '../types/endpoint.ts'
|
||||
import {
|
||||
GUILD_BAN,
|
||||
GUILD_BANS,
|
||||
GUILD_INTEGRATIONS,
|
||||
GUILD_PRUNE
|
||||
} from '../types/endpoint.ts'
|
||||
import { GuildVoiceStatesManager } from '../managers/guildVoiceStates.ts'
|
||||
import { RequestMembersOptions } from '../gateway/index.ts'
|
||||
import { GuildPresencesManager } from '../managers/presences.ts'
|
||||
|
@ -354,6 +362,29 @@ export class Guild extends Base {
|
|||
|
||||
return result === undefined ? this : result
|
||||
}
|
||||
|
||||
async getPruneCount(options: GuildGetPruneCountOptions): Promise<number> {
|
||||
const query: GuildGetPruneCountPayload = {
|
||||
days: options.days,
|
||||
include_roles:
|
||||
options.includeRoles !== undefined
|
||||
? options.includeRoles
|
||||
.map((role) => (role instanceof Role ? role.id : role))
|
||||
.join(',')
|
||||
: undefined
|
||||
}
|
||||
|
||||
const result: GuildPruneCountPayload = await this.client.rest.get(
|
||||
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands
|
||||
GUILD_PRUNE(this.id) +
|
||||
'?' +
|
||||
Object.entries(query)
|
||||
.map(([key, value]) => `${key}=${value}`)
|
||||
.join('&')
|
||||
)
|
||||
|
||||
return result.pruned as number
|
||||
}
|
||||
}
|
||||
|
||||
export class GuildIntegration extends Base {
|
||||
|
|
|
@ -50,6 +50,10 @@ export class Role extends Base {
|
|||
this.mentionable = data.mentionable ?? this.mentionable
|
||||
}
|
||||
|
||||
async delete(): Promise<Role | undefined> {
|
||||
return this.guild.roles.delete(this)
|
||||
}
|
||||
|
||||
async edit(options: RoleModifyPayload): Promise<Role> {
|
||||
return this.guild.roles.edit(this, options)
|
||||
}
|
||||
|
|
|
@ -280,3 +280,17 @@ export interface GuildModifyOptions {
|
|||
publicUpdatesChannelID?: string | null
|
||||
preferredLocale?: string | null
|
||||
}
|
||||
|
||||
export interface GuildPruneCountPayload {
|
||||
pruned: number | null
|
||||
}
|
||||
|
||||
export interface GuildGetPruneCountPayload {
|
||||
days?: number
|
||||
include_roles?: string
|
||||
}
|
||||
|
||||
export interface GuildGetPruneCountOptions {
|
||||
days?: number
|
||||
includeRoles?: Array<Role | string>
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue