diff --git a/app/services/discord/modules/commands/GetVoiceMessageUrl.ts b/app/services/discord/modules/commands/GetVoiceMessageUrl.ts new file mode 100644 index 00000000..7def2ab3 --- /dev/null +++ b/app/services/discord/modules/commands/GetVoiceMessageUrl.ts @@ -0,0 +1,25 @@ +import { EphemeralResponse } from "."; +import { MenuCommand } from "@/extensions/discord"; +import Discord from "discord.js"; + +export const MenuGetVoiceMessageUrlCommand: MenuCommand = { + options: { + name: "get voice message url", + type: Discord.ApplicationCommandType.Message, + }, + execute: async (ctx: Discord.MessageContextMenuCommandInteraction) => { + if (ctx.targetMessage.attachments.size === 0) { + await ctx.reply(EphemeralResponse("no attachments found in this message...")); + return; + } + const voiceUris = ctx.targetMessage.attachments.find(a => a.waveform !== null && a.url); + if (!voiceUris) { + await ctx.reply(EphemeralResponse("no voice messages found in this message...")); + return; + } + await ctx.reply({ + content: voiceUris.url, + ephemeral: true, + }); + }, +}; diff --git a/app/services/discord/modules/commands/index.ts b/app/services/discord/modules/commands/index.ts index 70ceea21..1341b9c9 100644 --- a/app/services/discord/modules/commands/index.ts +++ b/app/services/discord/modules/commands/index.ts @@ -1,6 +1,7 @@ import { DiscordBot } from "../.."; import { MenuDeeplCommand, SlashDeeplCommand } from "./DeepL"; import { MenuGetStickerUrlCommand } from "./GetStickerUrl"; +import { MenuGetVoiceMessageUrlCommand } from "./GetVoiceMessageUrl"; import { MenuManageMediaLinksCommand, SlashManageMediaLinks } from "./developer/ManageMediaLinks"; import { MenuSpeechbubbleLeftCommand, @@ -55,6 +56,7 @@ export const menuCommands = [ // normal menuCommands MenuDeeplCommand, MenuGetStickerUrlCommand, + MenuGetVoiceMessageUrlCommand, MenuSpeechbubbleLeftCommand, MenuSpeechbubbleRightCommand, MenuWhyRoleCommand,