aboutsummaryrefslogtreecommitdiff
path: root/lib/utils/AllowedMentions.ts
diff options
context:
space:
mode:
authorIRONM00N <64110067+IRONM00N@users.noreply.github.com>2022-08-18 22:42:12 -0400
committerIRONM00N <64110067+IRONM00N@users.noreply.github.com>2022-08-18 22:42:12 -0400
commit2356d2c44736fb83021dacb551625852111c8ce6 (patch)
tree10408d22fdd7a358d2f5c5917c3b59e55aa4c19d /lib/utils/AllowedMentions.ts
parent8aed6f93f7740c592cbc0e2f9fd3269c05286077 (diff)
downloadtanzanite-2356d2c44736fb83021dacb551625852111c8ce6.tar.gz
tanzanite-2356d2c44736fb83021dacb551625852111c8ce6.tar.bz2
tanzanite-2356d2c44736fb83021dacb551625852111c8ce6.zip
restructure, experimental presence and member automod, fixed bugs probably made some more bugs
Diffstat (limited to 'lib/utils/AllowedMentions.ts')
-rw-r--r--lib/utils/AllowedMentions.ts68
1 files changed, 68 insertions, 0 deletions
diff --git a/lib/utils/AllowedMentions.ts b/lib/utils/AllowedMentions.ts
new file mode 100644
index 0000000..d2eb030
--- /dev/null
+++ b/lib/utils/AllowedMentions.ts
@@ -0,0 +1,68 @@
+import { type MessageMentionOptions, type MessageMentionTypes } from 'discord.js';
+
+/**
+ * A utility class for creating allowed mentions.
+ */
+export class AllowedMentions {
+ /**
+ * @param everyone Whether everyone and here should be mentioned.
+ * @param roles Whether roles should be mentioned.
+ * @param users Whether users should be mentioned.
+ * @param repliedUser Whether the author of the Message being replied to should be mentioned.
+ */
+ public constructor(public everyone = false, public roles = false, public users = true, public repliedUser = true) {}
+
+ /**
+ * Don't mention anyone.
+ * @param repliedUser Whether the author of the Message being replied to should be mentioned.
+ */
+ public static none(repliedUser = true): MessageMentionOptions {
+ return { parse: [], repliedUser };
+ }
+
+ /**
+ * Mention @everyone and @here, roles, and users.
+ * @param repliedUser Whether the author of the Message being replied to should be mentioned.
+ */
+ public static all(repliedUser = true): MessageMentionOptions {
+ return { parse: ['everyone', 'roles', 'users'], repliedUser };
+ }
+
+ /**
+ * Mention users.
+ * @param repliedUser Whether the author of the Message being replied to should be mentioned.
+ */
+ public static users(repliedUser = true): MessageMentionOptions {
+ return { parse: ['users'], repliedUser };
+ }
+
+ /**
+ * Mention everyone and here.
+ * @param repliedUser Whether the author of the Message being replied to should be mentioned.
+ */
+ public static everyone(repliedUser = true): MessageMentionOptions {
+ return { parse: ['everyone'], repliedUser };
+ }
+
+ /**
+ * Mention roles.
+ * @param repliedUser Whether the author of the Message being replied to should be mentioned.
+ */
+ public static roles(repliedUser = true): MessageMentionOptions {
+ return { parse: ['roles'], repliedUser };
+ }
+
+ /**
+ * Converts this into a MessageMentionOptions object.
+ */
+ public toObject(): MessageMentionOptions {
+ return {
+ parse: [
+ ...(this.users ? ['users'] : []),
+ ...(this.roles ? ['roles'] : []),
+ ...(this.everyone ? ['everyone'] : [])
+ ] as MessageMentionTypes[],
+ repliedUser: this.repliedUser
+ };
+ }
+}