types: fix new types issues (#829)

* feat: add tests for deleting channel overwrites

* fix: typings
This commit is contained in:
Skillz4Killz
2021-04-12 02:26:55 -04:00
committed by GitHub
parent b7a2b0ed55
commit 51e27d8f17
31 changed files with 329 additions and 273 deletions
+2 -1
View File
@@ -1,6 +1,7 @@
import { cacheHandlers } from "../../cache.ts";
import { rest } from "../../rest/rest.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordGuildMember } from "../../types/guilds/guild_member.ts";
import { Errors } from "../../types/misc/errors.ts";
import { endpoints } from "../../util/constants.ts";
import {
@@ -69,7 +70,7 @@ export async function editMember(
"patch",
endpoints.GUILD_MEMBER(guildId, memberId),
options,
) as MemberCreatePayload;
) as DiscordGuildMember;
const member = await structures.createDiscordenoMember(result, guildId);
return member;
+2 -1
View File
@@ -1,6 +1,7 @@
import { cacheHandlers } from "../../cache.ts";
import { rest } from "../../rest/rest.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordGuildMember } from "../../types/guilds/guild_member.ts";
import { endpoints } from "../../util/constants.ts";
/** Returns a guild member object for the specified user.
@@ -18,7 +19,7 @@ export async function getMember(
const data = (await rest.runMethod(
"get",
endpoints.GUILD_MEMBER(guildId, id),
)) as MemberCreatePayload;
)) as DiscordGuildMember;
const discordenoMember = await structures.createDiscordenoMember(
data,
+2 -2
View File
@@ -1,5 +1,5 @@
import { cacheHandlers } from "../../cache.ts";
import { Member } from "../../structures/mod.ts";
import { DiscordenoMember } from "../../structures/member.ts";
import { Collection } from "../../util/collection.ts";
/** Returns guild member objects for the specified user by their nickname/username.
@@ -19,5 +19,5 @@ export async function getMembersByQuery(
query: name,
limit,
});
}) as Promise<Collection<string, Member>>;
}) as Promise<Collection<string, DiscordenoMember>>;
}
+3 -3
View File
@@ -9,7 +9,7 @@ import { requireBotChannelPermissions } from "../../util/permissions.ts";
/** Edit the message. */
export async function editMessage(
message: Message,
content: string | MessageContent,
content: string | MessageContent
) {
if (message.author.id !== botId) {
throw "You can only edit a message that was sent by the bot.";
@@ -30,8 +30,8 @@ export async function editMessage(
const result = await rest.runMethod(
"patch",
endpoints.CHANNEL_MESSAGE(message.channelId, message.id),
content,
content
);
return structures.createDiscordenoMessage(result as MessageCreateOptions);
return structures.createDiscordenoMessage(result as DiscordMessage);
}
+3 -2
View File
@@ -1,6 +1,7 @@
import { cacheHandlers } from "../../cache.ts";
import { rest } from "../../rest/rest.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordMessage } from "../../types/messages/message.ts";
import { endpoints } from "../../util/constants.ts";
import { requireBotChannelPermissions } from "../../util/permissions.ts";
@@ -15,8 +16,8 @@ export async function getMessage(channelId: string, id: string) {
const result = (await rest.runMethod(
"get",
endpoints.CHANNEL_MESSAGE(channelId, id),
)) as MessageCreateOptions;
endpoints.CHANNEL_MESSAGE(channelId, id)
)) as DiscordMessage;
return structures.createDiscordenoMessage(result);
}
+5 -4
View File
@@ -1,5 +1,6 @@
import { rest } from "../../rest/rest.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordMessage } from "../../types/messages/message.ts";
import { endpoints } from "../../util/constants.ts";
import { requireBotChannelPermissions } from "../../util/permissions.ts";
@@ -10,7 +11,7 @@ export async function getMessages(
| GetMessagesAfter
| GetMessagesBefore
| GetMessagesAround
| GetMessages,
| GetMessages
) {
await requireBotChannelPermissions(channelId, [
"VIEW_CHANNEL",
@@ -22,10 +23,10 @@ export async function getMessages(
const result = (await rest.runMethod(
"get",
endpoints.CHANNEL_MESSAGES(channelId),
options,
)) as MessageCreateOptions[];
options
)) as DiscordMessage[];
return Promise.all(
result.map((res) => structures.createDiscordenoMessage(res)),
result.map((res) => structures.createDiscordenoMessage(res))
);
}
+3 -2
View File
@@ -1,13 +1,14 @@
import { rest } from "../../rest/rest.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordMessage } from "../../types/messages/message.ts";
import { endpoints } from "../../util/constants.ts";
/** Crosspost a message in a News Channel to following channels. */
export async function publishMessage(channelId: string, messageId: string) {
const data = (await rest.runMethod(
"post",
endpoints.CHANNEL_MESSAGE_CROSSPOST(channelId, messageId),
)) as MessageCreateOptions;
endpoints.CHANNEL_MESSAGE_CROSSPOST(channelId, messageId)
)) as DiscordMessage;
return structures.createDiscordenoMessage(data);
}
+15 -13
View File
@@ -3,6 +3,7 @@ import { rest } from "../../rest/rest.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordChannelTypes } from "../../types/channels/channel_types.ts";
import { DiscordAllowedMentionsTypes } from "../../types/messages/allowed_mentions_types.ts";
import { CreateMessage } from "../../types/messages/create_message.ts";
import { DiscordMessage } from "../../types/messages/message.ts";
import { Errors } from "../../types/misc/errors.ts";
import { PermissionStrings } from "../../types/permissions/permission_strings.ts";
@@ -13,7 +14,7 @@ import { camelKeysToSnakeCase } from "../../util/utils.ts";
/** Send a message to the channel. Requires SEND_MESSAGES permission. */
export async function sendMessage(
channelId: string,
content: string | DiscordenoCreateMessage,
content: string | CreateMessage
) {
if (typeof content === "string") content = { content };
@@ -55,18 +56,18 @@ export async function sendMessage(
if (content.allowedMentions.users?.length) {
if (
content.allowedMentions.parse?.includes(
DiscordAllowedMentionsTypes.UserMentions,
DiscordAllowedMentionsTypes.UserMentions
)
) {
content.allowedMentions.parse = content.allowedMentions.parse.filter(
(p) => p !== "users",
(p) => p !== "users"
);
}
if (content.allowedMentions.users.length > 100) {
content.allowedMentions.users = content.allowedMentions.users.slice(
0,
100,
100
);
}
}
@@ -74,18 +75,18 @@ export async function sendMessage(
if (content.allowedMentions.roles?.length) {
if (
content.allowedMentions.parse?.includes(
DiscordAllowedMentionsTypes.RoleMentions,
DiscordAllowedMentionsTypes.RoleMentions
)
) {
content.allowedMentions.parse = content.allowedMentions.parse.filter(
(p) => p !== "roles",
(p) => p !== "roles"
);
}
if (content.allowedMentions.roles.length > 100) {
content.allowedMentions.roles = content.allowedMentions.roles.slice(
0,
100,
100
);
}
}
@@ -98,13 +99,14 @@ export async function sendMessage(
...content,
...(content.messageReference?.messageId
? {
messageReference: {
...content.messageReference,
failIfNotExists: content.messageReference.failIfNotExists === true,
},
}
messageReference: {
...content.messageReference,
failIfNotExists:
content.messageReference.failIfNotExists === true,
},
}
: {}),
}),
})
)) as DiscordMessage;
return structures.createDiscordenoMessage(result);
+3 -1
View File
@@ -1,9 +1,11 @@
import { rest } from "../../rest/rest.ts";
import { DiscordGetGatewayBot, GetGatewayBot } from "../../types/gateway/get_gateway_bot.ts";
import { endpoints } from "../../util/constants.ts";
import { camelKeysToSnakeCase } from "../../util/utils.ts";
/** Get the bots Gateway metadata that can help during the operation of large or sharded bots. */
export async function getGatewayBot() {
const result = await rest.runMethod("get", endpoints.GATEWAY_BOT);
return result as DiscordBotGatewayData;
return camelKeysToSnakeCase(result as DiscordGetGatewayBot) as GetGatewayBot;
}
@@ -1,5 +1,6 @@
import { rest } from "../../rest/rest.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordTemplate } from "../../types/templates/template.ts";
import { endpoints } from "../../util/constants.ts";
import { requireBotGuildPermissions } from "../../util/permissions.ts";
@@ -27,7 +28,7 @@ export async function createGuildTemplate(
"post",
endpoints.GUILD_TEMPLATES(guildId),
data,
)) as GuildTemplate;
)) as DiscordTemplate;
return structures.createTemplateStruct(template);
}
@@ -1,5 +1,6 @@
import { rest } from "../../rest/rest.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordTemplate } from "../../types/templates/template.ts";
import { endpoints } from "../../util/constants.ts";
import { requireBotGuildPermissions } from "../../util/permissions.ts";
@@ -16,7 +17,7 @@ export async function deleteGuildTemplate(
const deletedTemplate = (await rest.runMethod(
"delete",
`${endpoints.GUILD_TEMPLATES(guildId)}/${templateCode}`,
)) as GuildTemplate;
)) as DiscordTemplate;
return structures.createTemplateStruct(deletedTemplate);
}
+2 -1
View File
@@ -1,5 +1,6 @@
import { rest } from "../../rest/rest.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordTemplate } from "../../types/templates/template.ts";
import { endpoints } from "../../util/constants.ts";
import { requireBotGuildPermissions } from "../../util/permissions.ts";
@@ -26,7 +27,7 @@ export async function editGuildTemplate(
"patch",
`${endpoints.GUILD_TEMPLATES(guildId)}/${templateCode}`,
data,
)) as GuildTemplate;
)) as DiscordTemplate;
return structures.createTemplateStruct(template);
}
+3 -2
View File
@@ -2,6 +2,7 @@ import { rest } from "../../rest/rest.ts";
import { structures } from "../../structures/mod.ts";
import { endpoints } from "../../util/constants.ts";
import { requireBotGuildPermissions } from "../../util/permissions.ts";
import { DiscordTemplate } from "../../types/templates/template.ts";
/**
* Returns an array of templates.
@@ -12,8 +13,8 @@ export async function getGuildTemplates(guildId: string) {
const templates = (await rest.runMethod(
"get",
endpoints.GUILD_TEMPLATES(guildId),
)) as GuildTemplate[];
endpoints.GUILD_TEMPLATES(guildId)
)) as DiscordTemplate[];
return templates.map((template) => structures.createTemplateStruct(template));
}
+2 -1
View File
@@ -1,13 +1,14 @@
import { rest } from "../../rest/rest.ts";
import { structures } from "../../structures/mod.ts";
import { endpoints } from "../../util/constants.ts";
import { DiscordTemplate } from "../../types/templates/template.ts";
/** Returns the guild template if it exists */
export async function getTemplate(templateCode: string) {
const result = (await rest.runMethod(
"get",
endpoints.GUILD_TEMPLATE(templateCode),
) as GuildTemplate);
) as DiscordTemplate);
const template = await structures.createTemplateStruct(result);
return template;
+2 -1
View File
@@ -2,6 +2,7 @@ import { rest } from "../../rest/rest.ts";
import { structures } from "../../structures/mod.ts";
import { endpoints } from "../../util/constants.ts";
import { requireBotGuildPermissions } from "../../util/permissions.ts";
import { DiscordTemplate } from "../../types/templates/template.ts";
/**
* Syncs the template to the guild's current state.
@@ -13,7 +14,7 @@ export async function syncGuildTemplate(guildId: string, templateCode: string) {
const template = (await rest.runMethod(
"put",
`${endpoints.GUILD_TEMPLATES(guildId)}/${templateCode}`,
)) as GuildTemplate;
)) as DiscordTemplate;
return structures.createTemplateStruct(template);
}
+22 -19
View File
@@ -1,13 +1,16 @@
import { rest } from "../../rest/rest.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordAllowedMentionsTypes } from "../../types/messages/allowed_mentions_types.ts";
import { DiscordMessage } from "../../types/messages/message.ts";
import { Errors } from "../../types/misc/errors.ts";
import { EditWebhookMessage } from "../../types/webhooks/edit_webhook_message.ts";
import { endpoints } from "../../util/constants.ts";
export async function editWebhookMessage(
webhookId: string,
webhookToken: string,
messageId: string,
options: EditWebhookMessageOptions,
options: EditWebhookMessage
) {
if (options.content && options.content.length > 2000) {
throw Error(Errors.MESSAGE_MAX_LENGTH);
@@ -17,43 +20,43 @@ export async function editWebhookMessage(
options.embeds.splice(10);
}
if (options.allowed_mentions) {
if (options.allowed_mentions.users?.length) {
if (options.allowed_mentions.parse.includes("users")) {
options.allowed_mentions.parse = options.allowed_mentions.parse.filter(
(p) => p !== "users",
if (options.allowedMentions) {
if (options.allowedMentions.users?.length) {
if (options.allowedMentions.parse.includes("users")) {
options.allowedMentions.parse = options.allowedMentions.parse.filter(
(p) => p !== "users"
);
}
if (options.allowed_mentions.users.length > 100) {
options.allowed_mentions.users = options.allowed_mentions.users.slice(
if (options.allowedMentions.users.length > 100) {
options.allowedMentions.users = options.allowedMentions.users.slice(
0,
100,
100
);
}
}
if (options.allowed_mentions.roles?.length) {
if (options.allowed_mentions.parse.includes("roles")) {
options.allowed_mentions.parse = options.allowed_mentions.parse.filter(
(p) => p !== "roles",
if (options.allowedMentions.roles?.length) {
if (options.allowedMentions.parse.includes(DiscordAllowedMentionsTypes.RoleMentions)) {
options.allowedMentions.parse = options.allowedMentions.parse.filter(
(p) => p !== "roles"
);
}
if (options.allowed_mentions.roles.length > 100) {
options.allowed_mentions.roles = options.allowed_mentions.roles.slice(
if (options.allowedMentions.roles.length > 100) {
options.allowedMentions.roles = options.allowedMentions.roles.slice(
0,
100,
100
);
}
}
}
const result = await rest.runMethod(
const result = (await rest.runMethod(
"patch",
endpoints.WEBHOOK_MESSAGE(webhookId, webhookToken, messageId),
{ ...options, allowed_mentions: options.allowed_mentions },
) as MessageCreateOptions;
{ ...options, allowedMentions: options.allowedMentions }
)) as DiscordMessage;
const message = await structures.createDiscordenoMessage(result);
return message;
+39 -18
View File
@@ -1,13 +1,16 @@
import { rest } from "../../rest/rest.ts";
import { structures } from "../../structures/mod.ts";
import { DiscordAllowedMentionsTypes } from "../../types/messages/allowed_mentions_types.ts";
import { DiscordMessage } from "../../types/messages/message.ts";
import { Errors } from "../../types/misc/errors.ts";
import { ExecuteWebhook } from "../../types/webhooks/execute_webhook.ts";
import { endpoints } from "../../util/constants.ts";
/** Execute a webhook with webhook Id and webhook token */
export async function executeWebhook(
webhookId: string,
webhookToken: string,
options: ExecuteWebhookOptions,
options: ExecuteWebhook
) {
if (!options.content && !options.file && !options.embeds) {
throw new Error(Errors.INVALID_WEBHOOK_OPTIONS);
@@ -21,28 +24,42 @@ export async function executeWebhook(
options.embeds.splice(10);
}
if (options.mentions) {
if (options.mentions.users?.length) {
if (options.mentions.parse.includes("users")) {
options.mentions.parse = options.mentions.parse.filter(
(p) => p !== "users",
if (options.allowedMentions) {
if (options.allowedMentions.users?.length) {
if (
options.allowedMentions.parse.includes(
DiscordAllowedMentionsTypes.UserMentions
)
) {
options.allowedMentions.parse = options.allowedMentions.parse.filter(
(p) => p !== "users"
);
}
if (options.mentions.users.length > 100) {
options.mentions.users = options.mentions.users.slice(0, 100);
if (options.allowedMentions.users.length > 100) {
options.allowedMentions.users = options.allowedMentions.users.slice(
0,
100
);
}
}
if (options.mentions.roles?.length) {
if (options.mentions.parse.includes("roles")) {
options.mentions.parse = options.mentions.parse.filter(
(p) => p !== "roles",
if (options.allowedMentions.roles?.length) {
if (
options.allowedMentions.parse.includes(
DiscordAllowedMentionsTypes.RoleMentions
)
) {
options.allowedMentions.parse = options.allowedMentions.parse.filter(
(p) => p !== "roles"
);
}
if (options.mentions.roles.length > 100) {
options.mentions.roles = options.mentions.roles.slice(0, 100);
if (options.allowedMentions.roles.length > 100) {
options.allowedMentions.roles = options.allowedMentions.roles.slice(
0,
100
);
}
}
}
@@ -54,11 +71,15 @@ export async function executeWebhook(
}`,
{
...options,
allowed_mentions: options.mentions,
avatar_url: options.avatar_url,
},
allowed_mentions: options.allowedMentions,
avatar_url: options.avatarUrl,
}
);
if (!options.wait) return;
return structures.createDiscordenoMessage(result as MessageCreateOptions);
return structures.createDiscordenoMessage(result as DiscordMessage);
}
function DiscordAllowedMentionTypes(DiscordAllowedMentionTypes: any) {
throw new Error("Function not implemented.");
}