diff --git a/dist/native/user/isUserDMEnabled.d.ts.map b/dist/native/user/isUserDMEnabled.d.ts.map index a70a72d8b6..653b3c9a29 100644 --- a/dist/native/user/isUserDMEnabled.d.ts.map +++ b/dist/native/user/isUserDMEnabled.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"isUserDMEnabled.d.ts","sourceRoot":"","sources":["../../../src/native/user/isUserDMEnabled.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAU,MAAM,kBAAkB,CAAA;;;;;;;;AAElE,wBA4BE"} \ No newline at end of file +{"version":3,"file":"isUserDMEnabled.d.ts","sourceRoot":"","sources":["../../../src/native/user/isUserDMEnabled.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;;;;;;;;AAE1D,wBA8BE"} \ No newline at end of file diff --git a/dist/native/user/isUserDMEnabled.js b/dist/native/user/isUserDMEnabled.js index 00b9c86afc..56e3299110 100644 --- a/dist/native/user/isUserDMEnabled.js +++ b/dist/native/user/isUserDMEnabled.js @@ -5,27 +5,34 @@ const structures_1 = require("../../structures"); exports.default = new structures_1.NativeFunction({ name: "$isUserDMEnabled", version: "1.2.0", - description: "Checks whether given user can be DMed", + description: "Checks whether the given user can be DMed", unwrap: true, brackets: false, output: structures_1.ArgType.Boolean, args: [ { name: "user", - description: "The user to test dms", + description: "The user to test DMs", rest: false, required: true, - type: structures_1.ArgType.User - } + type: structures_1.ArgType.User, + }, ], async execute(ctx, [user]) { user ??= ctx.user; - // Only way to know is to send an empty message - const dm = await user?.send("").catch(err => err); - return this.success( - // If any of these is not met, cant be dmed - // 50007 = Cannot send message to this user - !!dm && dm instanceof discord_js_1.DiscordAPIError && dm.status !== 50007); + try { + await user.send(""); + return this.success(true); + } + catch (error) { + if (error instanceof discord_js_1.DiscordAPIError) { + if (error.code === 50007) + return this.success(false); // DM disabled + if (error.code === 50006) + return this.success(true); // Empty message (aka DM enabled) + } + throw error; + } }, }); //# sourceMappingURL=isUserDMEnabled.js.map \ No newline at end of file diff --git a/dist/native/user/isUserDMEnabled.js.map b/dist/native/user/isUserDMEnabled.js.map index cddad53809..c482e2657b 100644 --- a/dist/native/user/isUserDMEnabled.js.map +++ b/dist/native/user/isUserDMEnabled.js.map @@ -1 +1 @@ -{"version":3,"file":"isUserDMEnabled.js","sourceRoot":"","sources":["../../../src/native/user/isUserDMEnabled.ts"],"names":[],"mappings":";;AAAA,2CAA4C;AAC5C,iDAAkE;AAElE,kBAAe,IAAI,2BAAc,CAAC;IAC9B,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,uCAAuC;IACpD,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,KAAK;IACf,MAAM,EAAE,oBAAO,CAAC,OAAO;IACvB,IAAI,EAAE;QACF;YACI,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,sBAAsB;YACnC,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,oBAAO,CAAC,IAAI;SACrB;KACJ;IACD,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAE,IAAI,CAAE;QACvB,IAAI,KAAK,GAAG,CAAC,IAAK,CAAA;QAElB,+CAA+C;QAC/C,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;QAEjD,OAAO,IAAI,CAAC,OAAO;QACf,2CAA2C;QAC3C,2CAA2C;QAC3C,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,4BAAe,IAAI,EAAE,CAAC,MAAM,KAAK,KAAK,CAC/D,CAAA;IACL,CAAC;CACJ,CAAC,CAAA"} \ No newline at end of file +{"version":3,"file":"isUserDMEnabled.js","sourceRoot":"","sources":["../../../src/native/user/isUserDMEnabled.ts"],"names":[],"mappings":";;AAAA,2CAA4C;AAC5C,iDAA0D;AAE1D,kBAAe,IAAI,2BAAc,CAAC;IAC9B,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,2CAA2C;IACxD,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,KAAK;IACf,MAAM,EAAE,oBAAO,CAAC,OAAO;IACvB,IAAI,EAAE;QACF;YACI,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,sBAAsB;YACnC,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,oBAAO,CAAC,IAAI;SACrB;KACJ;IACD,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,IAAI,KAAK,GAAG,CAAC,IAAK,CAAA;QAElB,IAAI;YACA,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACnB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;SAC5B;QAAC,OAAO,KAAK,EAAE;YACZ,IAAI,KAAK,YAAY,4BAAe,EAAE;gBAClC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;oBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAC,cAAc;gBACnE,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;oBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,CAAE,iCAAiC;aACzF;YACD,MAAM,KAAK,CAAA;SACd;IACL,CAAC;CACJ,CAAC,CAAA"} \ No newline at end of file diff --git a/src/native/user/isUserDMEnabled.ts b/src/native/user/isUserDMEnabled.ts index d3615c1597..44daa579ac 100644 --- a/src/native/user/isUserDMEnabled.ts +++ b/src/native/user/isUserDMEnabled.ts @@ -4,29 +4,31 @@ import { ArgType, NativeFunction, Return } from "../../structures" export default new NativeFunction({ name: "$isUserDMEnabled", version: "1.2.0", - description: "Checks whether given user can be DMed", + description: "Checks whether the given user can be DMed", unwrap: true, brackets: false, output: ArgType.Boolean, args: [ { name: "user", - description: "The user to test dms", + description: "The user to test DMs", rest: false, required: true, type: ArgType.User } ], - async execute(ctx, [ user ]) { + async execute(ctx, [user]) { user ??= ctx.user! - // Only way to know is to send an empty message - const dm = await user?.send("").catch(err => err) - - return this.success( - // If any of these is not met, cant be dmed - // 50007 = Cannot send message to this user - !!dm && dm instanceof DiscordAPIError && dm.status !== 50007 - ) + try { + await user.send("") + return this.success(true) + } catch (error) { + if (error instanceof DiscordAPIError) { + if (error.code === 50007) return this.success(false) // DM disabled + if (error.code === 50006) return this.success(true) // Empty message (aka DM enabled) + } + throw error + } }, -}) \ No newline at end of file +})