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 */
|
/** 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(
|
await this.client.rest.delete(
|
||||||
GUILD_ROLE(this.guild.id, typeof role === 'object' ? role.id : role)
|
GUILD_ROLE(this.guild.id, typeof role === 'object' ? role.id : role)
|
||||||
)
|
)
|
||||||
return true
|
|
||||||
|
return oldRole
|
||||||
}
|
}
|
||||||
|
|
||||||
async edit(role: Role | string, options: RoleModifyPayload): Promise<Role> {
|
async edit(role: Role | string, options: RoleModifyPayload): Promise<Role> {
|
||||||
if (role instanceof Role) {
|
if (role instanceof Role) {
|
||||||
role = role.id
|
role = role.id
|
||||||
}
|
}
|
||||||
const resp = await this.client.rest.patch(
|
const resp: RolePayload = await this.client.rest.patch(
|
||||||
GUILD_ROLE(this.guild.id, role),
|
GUILD_ROLE(this.guild.id, role),
|
||||||
options
|
options
|
||||||
)
|
)
|
||||||
|
|
|
@ -11,7 +11,10 @@ import {
|
||||||
GuildPreview,
|
GuildPreview,
|
||||||
MessageNotification,
|
MessageNotification,
|
||||||
ContentFilter,
|
ContentFilter,
|
||||||
GuildModifyOptions
|
GuildModifyOptions,
|
||||||
|
GuildGetPruneCountOptions,
|
||||||
|
GuildGetPruneCountPayload,
|
||||||
|
GuildPruneCountPayload
|
||||||
} from '../types/guild.ts'
|
} from '../types/guild.ts'
|
||||||
import { Base } from './base.ts'
|
import { Base } from './base.ts'
|
||||||
import { CreateGuildRoleOptions, RolesManager } from '../managers/roles.ts'
|
import { CreateGuildRoleOptions, RolesManager } from '../managers/roles.ts'
|
||||||
|
@ -26,7 +29,12 @@ import { GuildEmojisManager } from '../managers/guildEmojis.ts'
|
||||||
import { Member } from './member.ts'
|
import { Member } from './member.ts'
|
||||||
import { User } from './user.ts'
|
import { User } from './user.ts'
|
||||||
import { Application } from './application.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 { GuildVoiceStatesManager } from '../managers/guildVoiceStates.ts'
|
||||||
import { RequestMembersOptions } from '../gateway/index.ts'
|
import { RequestMembersOptions } from '../gateway/index.ts'
|
||||||
import { GuildPresencesManager } from '../managers/presences.ts'
|
import { GuildPresencesManager } from '../managers/presences.ts'
|
||||||
|
@ -354,6 +362,29 @@ export class Guild extends Base {
|
||||||
|
|
||||||
return result === undefined ? this : result
|
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 {
|
export class GuildIntegration extends Base {
|
||||||
|
|
|
@ -50,6 +50,10 @@ export class Role extends Base {
|
||||||
this.mentionable = data.mentionable ?? this.mentionable
|
this.mentionable = data.mentionable ?? this.mentionable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async delete(): Promise<Role | undefined> {
|
||||||
|
return this.guild.roles.delete(this)
|
||||||
|
}
|
||||||
|
|
||||||
async edit(options: RoleModifyPayload): Promise<Role> {
|
async edit(options: RoleModifyPayload): Promise<Role> {
|
||||||
return this.guild.roles.edit(this, options)
|
return this.guild.roles.edit(this, options)
|
||||||
}
|
}
|
||||||
|
|
|
@ -280,3 +280,17 @@ export interface GuildModifyOptions {
|
||||||
publicUpdatesChannelID?: string | null
|
publicUpdatesChannelID?: string | null
|
||||||
preferredLocale?: 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