From d0a3f6b1d0e87638074ac7c9116de21b58c21b4c Mon Sep 17 00:00:00 2001 From: Skillz4Killz <23035000+Skillz4Killz@users.noreply.github.com> Date: Tue, 23 Nov 2021 17:18:58 +0000 Subject: [PATCH] Closes #1296 --- .github/workflows/test.yml | 2 ++ configs.example.ts | 1 + src/helpers/members/getDmChannel.ts | 9 ++++----- src/helpers/members/getMembers.ts | 1 - tests/members/getDmChannel.ts | 7 +++++++ tests/mod.ts | 9 ++++----- 6 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 configs.example.ts create mode 100644 tests/members/getDmChannel.ts diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 78ea86190..25fae84b2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,6 +15,8 @@ jobs: deno-version: ${{ matrix.deno }} - name: Cache dependencies run: deno cache mod.ts + - name: Prepare configs file + run: cp configs.example.ts configs.ts - name: Run test script for maintainers if: ${{ github.actor == 'Skillz4Killz' || github.actor == 'itohatweb' }} run: deno test --unstable --coverage=coverage -A tests/mod.ts diff --git a/configs.example.ts b/configs.example.ts new file mode 100644 index 000000000..197129482 --- /dev/null +++ b/configs.example.ts @@ -0,0 +1 @@ +export const UNITTEST_TOKEN = "" || Deno.env.get("DISCORD_TOKEN"); diff --git a/src/helpers/members/getDmChannel.ts b/src/helpers/members/getDmChannel.ts index 37097036a..177e03d84 100644 --- a/src/helpers/members/getDmChannel.ts +++ b/src/helpers/members/getDmChannel.ts @@ -1,13 +1,12 @@ import type { Channel } from "../../types/channels/channel.ts"; -import type { CreateMessage } from "../../types/messages/createMessage.ts"; import type { Bot } from "../../bot.ts"; -/** Send a message to a users DM. Note: this takes 2 API calls. 1 is to fetch the users dm channel. 2 is to send a message to that channel. */ -export async function getDmChannel(bot: Bot, memberId: bigint, content: string | CreateMessage) { - if (memberId === bot.id) throw new Error(bot.constants.Errors.YOU_CAN_NOT_DM_THE_BOT_ITSELF); +/** Get a user's dm channel. This is required in order to send a DM. */ +export async function getDmChannel(bot: Bot, userId: bigint) { + if (userId === bot.id) throw new Error(bot.constants.Errors.YOU_CAN_NOT_DM_THE_BOT_ITSELF); const dmChannelData = await bot.rest.runMethod(bot.rest, "post", bot.constants.endpoints.USER_DM, { - recipient_id: memberId.toString(), + recipient_id: userId.toString(), }); return bot.transformers.channel(bot, { channel: dmChannelData }); } diff --git a/src/helpers/members/getMembers.ts b/src/helpers/members/getMembers.ts index 7e39b0437..0da8fc150 100644 --- a/src/helpers/members/getMembers.ts +++ b/src/helpers/members/getMembers.ts @@ -1,4 +1,3 @@ -import { GatewayIntents } from "../../types/gateway/gatewayIntents.ts"; import type { GuildMemberWithUser } from "../../types/members/guildMember.ts"; import type { ListGuildMembers } from "../../types/members/listGuildMembers.ts"; import type { Bot } from "../../bot.ts"; diff --git a/tests/members/getDmChannel.ts b/tests/members/getDmChannel.ts new file mode 100644 index 000000000..f1809db14 --- /dev/null +++ b/tests/members/getDmChannel.ts @@ -0,0 +1,7 @@ +import { bot } from "../mod.ts"; + +Deno.test("[member] get dm channel and send a message", async () => { + // Skillz ID + const channel = await bot.helpers.getDmChannel(130136895395987456n); + await bot.helpers.sendMessage(channel.id, "https://i.imgur.com/doG55NR.png"); +}); diff --git a/tests/mod.ts b/tests/mod.ts index 4070d78d9..8dacd38b8 100644 --- a/tests/mod.ts +++ b/tests/mod.ts @@ -1,4 +1,4 @@ -// import { UNITTEST_TOKEN } from "../configs.ts"; +import { UNITTEST_TOKEN } from "../configs.ts"; import { createBot, createEventHandlers, ChannelTypes, OverwriteTypes, startBot } from "../mod.ts"; import { assertEquals, assertExists, enableCachePlugin } from "./deps.ts"; import { deleteMessageWithReasonTest, deleteMessageWithoutReasonTest } from "./helpers/messages/deleteMessage.ts"; @@ -36,13 +36,11 @@ import { deleteChannelOverwriteTests } from "./helpers/channels/deleteChannelOve import { editChannelTests } from "./helpers/channels/editChannel.ts"; import { CACHED_COMMUNITY_GUILD_ID, sanitizeMode } from "./constants.ts"; -// const botId = BigInt(atob(UNITTEST_TOKEN.split(".")[0])); -const botId = BigInt(atob(Deno.env.get("DISCORD_TOKEN")!.split(".")[0])); +const botId = BigInt(atob(UNITTEST_TOKEN.split(".")[0])); let startedAt = 0; export const bot = createBot({ - // token: UNITTEST_TOKEN || Deno.env.get("DISCORD_TOKEN"), - token: Deno.env.get("DISCORD_TOKEN")!, + token: UNITTEST_TOKEN || Deno.env.get("DISCORD_TOKEN"), botId, events: createEventHandlers({ ready: () => { @@ -579,6 +577,7 @@ import "./invite/getInvite.ts"; import "./invite/getInvites.ts"; import "./members/avatarlUrl.ts"; import "./members/ban.ts"; +import "./members/getDmChannel.ts"; import "./misc/getDiscoveryCategories.ts"; import "./misc/getUser.ts"; import "./misc/snowflake.ts";