feat(Invite): add deletable getter (#3203)

* add Invite#deletable

* fix ci

* reee

* since guild is nullable

* accommodate for external invites

* nit(Invite): use guild instead of channel.guild
This commit is contained in:
izexi
2019-04-22 08:24:32 +01:00
committed by SpaceEEC
parent f7f4607b5f
commit c4b79571ba
2 changed files with 15 additions and 1 deletions

View File

@@ -1,6 +1,7 @@
'use strict';
const { Endpoints } = require('../util/Constants');
const Permissions = require('../util/Permissions');
const Base = require('./Base');
/**
@@ -91,6 +92,18 @@ class Invite extends Base {
return this.createdTimestamp ? new Date(this.createdTimestamp) : null;
}
/**
* Whether the invite is deletable by the client user
* @type {boolean}
* @readonly
*/
get deletable() {
const guild = this.guild;
if (!guild || !this.client.guilds.has(guild.id)) return false;
return this.channel.permissionsFor(this.client.user).has(Permissions.FLAGS.MANAGE_CHANNELS, false) ||
guild.me.permissions.has(Permissions.FLAGS.MANAGE_GUILD);
}
/**
* The timestamp the invite will expire at
* @type {?number}

3
typings/index.d.ts vendored
View File

@@ -615,7 +615,8 @@ declare module 'discord.js' {
constructor(client: Client, data: object);
public channel: GuildChannel;
public code: string;
public readonly createdAt: Date;
public readonly deletable: boolean;
public readonly createdAt: Date | null;
public createdTimestamp: number | null;
public readonly expiresAt: Date | null;
public readonly expiresTimestamp: number | null;