feat: add typeguards to webhooks (#6850)

This commit is contained in:
Suneet Tipirneni
2021-10-19 10:11:21 -04:00
committed by GitHub
parent 4dff279a6f
commit e0afcadda4
3 changed files with 41 additions and 2 deletions

View File

@@ -1,8 +1,10 @@
import {
APIGuildMember,
APIInteractionDataResolvedGuildMember,
APIInteractionGuildMember,
APIMessage,
APIPartialChannel,
APIPartialGuild,
APIInteractionDataResolvedGuildMember,
} from 'discord-api-types/v9';
import {
ApplicationCommand,
@@ -478,7 +480,7 @@ client.on('messageReactionRemoveAll', async message => {
// This is to check that stuff is the right type
declare const assertIsMessage: (m: Promise<Message>) => void;
client.on('messageCreate', message => {
client.on('messageCreate', async message => {
const { channel } = message;
assertIsMessage(channel.send('string'));
assertIsMessage(channel.send({}));
@@ -573,6 +575,22 @@ client.on('messageCreate', message => {
},
});
const webhook = await message.fetchWebhook();
if (webhook.isChannelFollower()) {
assertType<Guild | APIPartialGuild>(webhook.sourceGuild);
assertType<NewsChannel | APIPartialChannel>(webhook.sourceChannel);
} else if (webhook.isIncoming()) {
assertType<string>(webhook.token);
}
// @ts-expect-error
assertType<Guild | APIPartialGuild>(webhook.sourceGuild);
// @ts-expect-error
assertType<NewsChannel | APIPartialChannel>(webhook.sourceChannel);
// @ts-expect-error
assertType<string>(webhook.token);
channel.awaitMessageComponent({
filter: i => {
assertType<MessageComponentInteraction>(i);