aboutsummaryrefslogtreecommitdiff
path: root/src/arguments
diff options
context:
space:
mode:
Diffstat (limited to 'src/arguments')
-rw-r--r--src/arguments/messageLink.ts19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/arguments/messageLink.ts b/src/arguments/messageLink.ts
new file mode 100644
index 0000000..d270abd
--- /dev/null
+++ b/src/arguments/messageLink.ts
@@ -0,0 +1,19 @@
+import { type BushArgumentTypeCaster } from '../lib';
+
+export const messageLink: BushArgumentTypeCaster = async (_, phrase) => {
+ const match = client.consts.regex.messageLink.exec(phrase);
+ if (!match || !match.groups) return null;
+
+ const { guild_id, channel_id, message_id } = match.groups;
+
+ if (!guild_id || !channel_id || message_id) return null;
+
+ const guild = client.guilds.cache.get(guild_id);
+ if (!guild) return null;
+
+ const channel = guild.channels.cache.get(channel_id);
+ if (!channel || (!channel.isText() && !channel.isThread())) return null;
+
+ const message = await channel.messages.fetch(message_id).catch(() => null);
+ return message;
+};