From 5202e3f6ae10df796c361619a20e7240c3c48f6b Mon Sep 17 00:00:00 2001 From: ITOH Date: Sat, 19 Jun 2021 17:12:23 +0200 Subject: [PATCH 1/6] remove todos --- src/helpers/channels/delete_channel.ts | 1 - src/helpers/channels/edit_channel.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/src/helpers/channels/delete_channel.ts b/src/helpers/channels/delete_channel.ts index 894cb4883..c9df3bcc1 100644 --- a/src/helpers/channels/delete_channel.ts +++ b/src/helpers/channels/delete_channel.ts @@ -20,7 +20,6 @@ export async function deleteChannel(channelId: bigint, reason?: string) { throw new Error(Errors.UPDATES_CHANNEL_CANNOT_BE_DELETED); } - // TODO(threads): check if this requires guild perms or channel is enough await requireBotGuildPermissions(guild, ["MANAGE_CHANNELS"]); } diff --git a/src/helpers/channels/edit_channel.ts b/src/helpers/channels/edit_channel.ts index d4805f026..05e577954 100644 --- a/src/helpers/channels/edit_channel.ts +++ b/src/helpers/channels/edit_channel.ts @@ -9,7 +9,6 @@ import { endpoints } from "../../util/constants.ts"; import { calculateBits, requireOverwritePermissions } from "../../util/permissions.ts"; import { snakelize } from "../../util/utils.ts"; -//TODO: implement DM group channel edit /** Update a channel's settings. Requires the `MANAGE_CHANNELS` permission for the guild. */ export async function editChannel(channelId: bigint, options: ModifyChannel, reason?: string) { const channel = await cacheHandlers.get("channels", channelId); From f3353f512c84248f44bf8b1175096238401bcf34 Mon Sep 17 00:00:00 2001 From: ITOH Date: Sat, 19 Jun 2021 17:13:08 +0200 Subject: [PATCH 2/6] add: return type --- src/helpers/channels/threads/add_to_thread.ts | 5 ++--- src/helpers/channels/threads/delete_thread.ts | 2 +- src/helpers/channels/threads/join_thread.ts | 2 +- src/helpers/channels/threads/leave_thread.ts | 2 +- src/helpers/channels/threads/remove_thread_member.ts | 2 +- src/helpers/channels/threads/start_private_thread.ts | 5 ++++- src/helpers/channels/threads/start_thread.ts | 12 ++++++++---- 7 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/helpers/channels/threads/add_to_thread.ts b/src/helpers/channels/threads/add_to_thread.ts index 3872ecbaa..520ad7c1e 100644 --- a/src/helpers/channels/threads/add_to_thread.ts +++ b/src/helpers/channels/threads/add_to_thread.ts @@ -4,8 +4,7 @@ import { Errors } from "../../../types/discordeno/errors.ts"; import { endpoints } from "../../../util/constants.ts"; import { requireBotChannelPermissions } from "../../../util/permissions.ts"; -/** Adds a user to a thread. Requires the ability to send messages in the thread. Requires the thread is not archived. - */ +/** Adds a user to a thread. Requires the ability to send messages in the thread. Requires the thread is not archived. */ export async function addToThread(threadId: bigint, userId: bigint) { const thread = await cacheHandlers.get("threads", threadId); if (thread) { @@ -19,5 +18,5 @@ export async function addToThread(threadId: bigint, userId: bigint) { if (channel) await requireBotChannelPermissions(channel, ["SEND_MESSAGES"]); } - return await rest.runMethod("put", endpoints.THREAD_USER(threadId, userId)); + return await rest.runMethod("put", endpoints.THREAD_USER(threadId, userId)); } diff --git a/src/helpers/channels/threads/delete_thread.ts b/src/helpers/channels/threads/delete_thread.ts index 53d314697..ea5d01ac3 100644 --- a/src/helpers/channels/threads/delete_thread.ts +++ b/src/helpers/channels/threads/delete_thread.ts @@ -11,5 +11,5 @@ export async function deleteThread(threadId: bigint, reason?: string) { if (channel?.guildId) await requireBotGuildPermissions(channel.guildId, ["MANAGE_THREADS"]); } - return await rest.runMethod("delete", endpoints.CHANNEL_BASE(threadId), { reason }); + return await rest.runMethod("delete", endpoints.CHANNEL_BASE(threadId), { reason }); } diff --git a/src/helpers/channels/threads/join_thread.ts b/src/helpers/channels/threads/join_thread.ts index c3bf65e24..815975de5 100644 --- a/src/helpers/channels/threads/join_thread.ts +++ b/src/helpers/channels/threads/join_thread.ts @@ -10,5 +10,5 @@ export async function joinThread(threadId: bigint) { throw new Error(Errors.CANNOT_ADD_USER_TO_ARCHIVED_THREADS); } - return await rest.runMethod("put", endpoints.THREAD_ME(threadId)); + return await rest.runMethod("put", endpoints.THREAD_ME(threadId)); } diff --git a/src/helpers/channels/threads/leave_thread.ts b/src/helpers/channels/threads/leave_thread.ts index 546309fb6..867727397 100644 --- a/src/helpers/channels/threads/leave_thread.ts +++ b/src/helpers/channels/threads/leave_thread.ts @@ -8,5 +8,5 @@ export async function leaveThread(threadId: bigint) { const thread = await cacheHandlers.get("threads", threadId); if (thread?.archived) throw new Error(Errors.CANNOT_LEAVE_ARCHIVED_THREAD); - return await rest.runMethod("delete", endpoints.THREAD_ME(threadId)); + return await rest.runMethod("delete", endpoints.THREAD_ME(threadId)); } diff --git a/src/helpers/channels/threads/remove_thread_member.ts b/src/helpers/channels/threads/remove_thread_member.ts index 8951e0695..8c338c95e 100644 --- a/src/helpers/channels/threads/remove_thread_member.ts +++ b/src/helpers/channels/threads/remove_thread_member.ts @@ -17,5 +17,5 @@ export async function removeThreadMember(threadId: bigint, userId: bigint) { } } - return await rest.runMethod("delete", endpoints.THREAD_USER(threadId, userId)); + return await rest.runMethod("delete", endpoints.THREAD_USER(threadId, userId)); } diff --git a/src/helpers/channels/threads/start_private_thread.ts b/src/helpers/channels/threads/start_private_thread.ts index 48c07007d..d4653df80 100644 --- a/src/helpers/channels/threads/start_private_thread.ts +++ b/src/helpers/channels/threads/start_private_thread.ts @@ -1,5 +1,6 @@ import { cacheHandlers } from "../../../cache.ts"; import { rest } from "../../../rest/rest.ts"; +import { Channel } from "../../../types/channels/channel.ts"; import { StartThread } from "../../../types/channels/threads/start_thread.ts"; import { Errors } from "../../../types/discordeno/errors.ts"; import { endpoints } from "../../../util/constants.ts"; @@ -18,5 +19,7 @@ export async function startPrivateThread(channelId: bigint, options: StartThread await requireBotChannelPermissions(channel, ["SEND_MESSAGES", "USE_PRIVATE_THREADS"]); } - return channelToThread(await rest.runMethod("post", endpoints.THREAD_START_PRIVATE(channelId), snakelize(options))); + return channelToThread( + await rest.runMethod("post", endpoints.THREAD_START_PRIVATE(channelId), snakelize(options)) + ); } diff --git a/src/helpers/channels/threads/start_thread.ts b/src/helpers/channels/threads/start_thread.ts index 35e9b4ce5..f9a6b3590 100644 --- a/src/helpers/channels/threads/start_thread.ts +++ b/src/helpers/channels/threads/start_thread.ts @@ -1,9 +1,11 @@ import { cacheHandlers } from "../../../cache.ts"; import { rest } from "../../../rest/rest.ts"; +import { Channel } from "../../../types/channels/channel.ts"; import { StartThread } from "../../../types/channels/threads/start_thread.ts"; import { Errors } from "../../../types/discordeno/errors.ts"; import { endpoints } from "../../../util/constants.ts"; import { requireBotChannelPermissions } from "../../../util/permissions.ts"; +import { channelToThread } from "../../../util/transformers/channel_to_thread.ts"; import { snakelize } from "../../../util/utils.ts"; /** Creates a new public thread from an existing message. Returns a thread channel. */ @@ -17,9 +19,11 @@ export async function startThread(channelId: bigint, options: StartThread & { me await requireBotChannelPermissions(channel, ["SEND_MESSAGES", "USE_PUBLIC_THREADS"]); } - return await rest.runMethod( - "post", - endpoints.THREAD_START_PUBLIC(channelId, options.messageId), - snakelize(options) + return channelToThread( + await rest.runMethod( + "post", + endpoints.THREAD_START_PUBLIC(channelId, options.messageId), + snakelize(options) + ) ); } From 43d933908ff7e7b974d39c5a136719b358ee744f Mon Sep 17 00:00:00 2001 From: ITOH Date: Sat, 19 Jun 2021 17:13:18 +0200 Subject: [PATCH 3/6] add: thread#guildId --- src/util/transformers/channel_to_thread.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/util/transformers/channel_to_thread.ts b/src/util/transformers/channel_to_thread.ts index 0999c6ff9..c9822fbad 100644 --- a/src/util/transformers/channel_to_thread.ts +++ b/src/util/transformers/channel_to_thread.ts @@ -59,6 +59,7 @@ export function channelToThread(channel: Channel) { bitfield: createNewProp(bitfield), ownerId: createNewProp(snowflakeToBigint(channel.ownerId!)), botIsMember: createNewProp(Boolean(channel.member)), + guildId: createNewProp(snowflakeToBigint(channel.guildId!)), members: createNewProp(new Collection>()), }) as DiscordenoThread; } @@ -78,6 +79,7 @@ export interface Thread { locked: boolean; ownerId: string; botIsMember: boolean; + guildId: string; } export interface DiscordenoThread { @@ -98,6 +100,7 @@ export interface DiscordenoThread { isPrivate: boolean; isPublic: boolean; botIsMember: boolean; + guildId: bigint; members: Collection>; toJSON(): Thread; } From 0e020fdcd87f381377d8e71c2c2df00582e94f31 Mon Sep 17 00:00:00 2001 From: ITOH Date: Sat, 19 Jun 2021 17:13:44 +0200 Subject: [PATCH 4/6] remove: deprecated message#embed field --- src/helpers/messages/edit_message.ts | 5 ----- src/helpers/messages/send_message.ts | 5 ----- src/types/messages/create_message.ts | 5 ----- src/types/messages/edit_message.ts | 5 ----- 4 files changed, 20 deletions(-) diff --git a/src/helpers/messages/edit_message.ts b/src/helpers/messages/edit_message.ts index 192cbe665..bd58ba51f 100644 --- a/src/helpers/messages/edit_message.ts +++ b/src/helpers/messages/edit_message.ts @@ -29,11 +29,6 @@ export async function editMessage(channelId: bigint, messageId: bigint, content: validateComponents(content.components); } - // TODO: v12 remove - if (content.embed) { - content.embeds = [content.embed, ...(content.embeds || [])]; - content.embed = undefined; - } content.embeds?.splice(10); if (content.content && content.content.length > 2000) { diff --git a/src/helpers/messages/send_message.ts b/src/helpers/messages/send_message.ts index 13f3664b1..0b4ae5f48 100644 --- a/src/helpers/messages/send_message.ts +++ b/src/helpers/messages/send_message.ts @@ -34,11 +34,6 @@ export async function sendMessage(channelId: bigint, content: string | CreateMes const requiredPerms: Set = new Set(["SEND_MESSAGES", "VIEW_CHANNEL"]); if (content.tts) requiredPerms.add("SEND_TTS_MESSAGES"); - // TODO: v12 remove - if (content.embed) { - content.embeds = [content.embed, ...(content.embeds || [])]; - content.embed = undefined; - } if (content.embeds?.length) { requiredPerms.add("EMBED_LINKS"); content.embeds?.splice(10); diff --git a/src/types/messages/create_message.ts b/src/types/messages/create_message.ts index 9cddc7a85..73eaded32 100644 --- a/src/types/messages/create_message.ts +++ b/src/types/messages/create_message.ts @@ -10,11 +10,6 @@ export interface CreateMessage { content?: string; /** true if this is a TTS message */ tts?: boolean; - // TODO: v12 remove - /** Embedded `rich` content - * @deprecated will be removed in Discordeno v12 use embeds - */ - embed?: Embed; /** Embedded `rich` content (up to 6000 characters) */ embeds?: Embed[]; /** Allowed mentions for the message */ diff --git a/src/types/messages/edit_message.ts b/src/types/messages/edit_message.ts index 2d47780e6..ac76bf263 100644 --- a/src/types/messages/edit_message.ts +++ b/src/types/messages/edit_message.ts @@ -8,11 +8,6 @@ import { MessageComponents } from "./components/message_components.ts"; export interface EditMessage { /** The new message contents (up to 2000 characters) */ content?: string | null; - // TODO: v12 remove - /** Embedded `rich` content - * @deprecated will be removed in Discordeno v12 use embeds - */ - embed?: Embed | null; /** Embedded `rich` content (up to 6000 characters) */ embeds?: Embed[] | null; /** Edit the flags of the message (only `SUPRESS_EMBEDS` can currently be set/unset) */ From dea6b1a5471a28b36aa51be80d76516a5cc2f188 Mon Sep 17 00:00:00 2001 From: ITOH Date: Sat, 19 Jun 2021 17:14:02 +0200 Subject: [PATCH 5/6] fix: add await for better errors --- src/helpers/channels/threads/archive_thread.ts | 4 ++-- src/helpers/channels/threads/lock_thread.ts | 4 ++-- src/helpers/channels/threads/unarchive_thread.ts | 4 ++-- src/helpers/channels/threads/unlock_thread.ts | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/helpers/channels/threads/archive_thread.ts b/src/helpers/channels/threads/archive_thread.ts index bb0254fb3..cc3884546 100644 --- a/src/helpers/channels/threads/archive_thread.ts +++ b/src/helpers/channels/threads/archive_thread.ts @@ -1,6 +1,6 @@ import { editThread } from "./edit_thread.ts"; /** Sets a thread channel to be archived. */ -export function archiveThread(threadId: bigint) { - return editThread(threadId, { archived: true }); +export async function archiveThread(threadId: bigint) { + return await editThread(threadId, { archived: true }); } diff --git a/src/helpers/channels/threads/lock_thread.ts b/src/helpers/channels/threads/lock_thread.ts index 3e2cace3c..5a5ca9fae 100644 --- a/src/helpers/channels/threads/lock_thread.ts +++ b/src/helpers/channels/threads/lock_thread.ts @@ -1,6 +1,6 @@ import { editThread } from "./edit_thread.ts"; /** Sets a thread channel to be locked. */ -export function lockThread(threadId: bigint) { - return editThread(threadId, { locked: true }); +export async function lockThread(threadId: bigint) { + return await editThread(threadId, { locked: true }); } diff --git a/src/helpers/channels/threads/unarchive_thread.ts b/src/helpers/channels/threads/unarchive_thread.ts index 03671aceb..d80a56885 100644 --- a/src/helpers/channels/threads/unarchive_thread.ts +++ b/src/helpers/channels/threads/unarchive_thread.ts @@ -1,6 +1,6 @@ import { editThread } from "./edit_thread.ts"; /** Sets a thread channel to be unarchived. */ -export function unarchiveThread(threadId: bigint) { - return editThread(threadId, { archived: false }); +export async function unarchiveThread(threadId: bigint) { + return await editThread(threadId, { archived: false }); } diff --git a/src/helpers/channels/threads/unlock_thread.ts b/src/helpers/channels/threads/unlock_thread.ts index e410c77bc..277713aec 100644 --- a/src/helpers/channels/threads/unlock_thread.ts +++ b/src/helpers/channels/threads/unlock_thread.ts @@ -1,6 +1,6 @@ import { editThread } from "./edit_thread.ts"; /** Sets a thread channel to be unlocked. */ -export function unlockThread(threadId: bigint) { - return editThread(threadId, { locked: false }); +export async function unlockThread(threadId: bigint) { + return await editThread(threadId, { locked: false }); } From b6f24cb59f0d620e9c3aa3a119afb2c89b0de40a Mon Sep 17 00:00:00 2001 From: ITOH Date: Sat, 19 Jun 2021 17:14:12 +0200 Subject: [PATCH 6/6] add: better return --- src/helpers/channels/threads/get_thread_members.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/helpers/channels/threads/get_thread_members.ts b/src/helpers/channels/threads/get_thread_members.ts index bc3f965dc..202e9c81a 100644 --- a/src/helpers/channels/threads/get_thread_members.ts +++ b/src/helpers/channels/threads/get_thread_members.ts @@ -1,9 +1,12 @@ import { cacheHandlers } from "../../../cache.ts"; import { rest } from "../../../rest/rest.ts"; +import { ThreadMember } from "../../../types/channels/threads/thread_member.ts"; import { Errors } from "../../../types/discordeno/errors.ts"; import { DiscordGatewayIntents } from "../../../types/gateway/gateway_intents.ts"; +import { Collection } from "../../../util/collection.ts"; import { endpoints } from "../../../util/constants.ts"; import { botHasChannelPermissions } from "../../../util/permissions.ts"; +import { threadMemberModified } from "../../../util/transformers/thread_member_modified.ts"; import { ws } from "../../../ws/ws.ts"; /** Returns thread members objects that are members of the thread. */ @@ -20,5 +23,9 @@ export async function getThreadMembers(threadId: bigint) { throw new Error(Errors.CANNOT_GET_MEMBERS_OF_AN_UNJOINED_PRIVATE_THREAD); } - return await rest.runMethod("get", endpoints.THREAD_MEMBERS(threadId)); + const result = await rest.runMethod("get", endpoints.THREAD_MEMBERS(threadId)); + + const members = result.map((member) => threadMemberModified(member)); + + return new Collection(members.map((member) => [member.id, member])); }