async def METHOD_NAME(
    self, ctx: discord.ApplicationContext, link: str, temperature: float
):
    # Check if this discord file is an instance of mp3, mp4, mpeg, mpga, m4a, wav, or webm.
    await ctx.defer()
    user_api_key = None
    if USER_INPUT_API_KEYS:
        user_api_key = await TextService.get_user_api_key(
            ctx.user.id, ctx, USER_KEY_DB
        )
        if not user_api_key:
            return
    if await UrlCheck.check_youtube_link(link):
        # We need to download the youtube video and save it to a temporary file
        options = {
            "format": "bestaudio/best",
            "outtmpl": os.path.join(
                "audiotemp/", f"{ctx.user.id}temp.%(ext)s"
            ),  # save file as the videos title
            "quiet": True,
            "postprocessors": [
                {
                    "key": "FFmpegExtractAudio",
                    "preferredcodec": "mp3",
                    "preferredquality": "192",
                }
            ],
        }
        # Delete audiotemp/{str(ctx.user.id)}temp.mp3 if it already exists
        if Path("audiotemp/{}temp.mp3".format(str(ctx.user.id))).exists():
            Path("audiotemp/{}temp.mp3".format(str(ctx.user.id))).unlink()
        def download_video(url, options):
            with YoutubeDL(options) as ydl:
                ydl.download([url])
        try:
            await asyncio.get_running_loop().run_in_executor(
                None,
                partial(
                    download_video,
                    link,
                    options,
                ),
            )
        except Exception as e:
            traceback.print_exc()
            await ctx.respond(
                "Failed to download youtube video. Please try again later. "
                + str(e)
            )
            return
    else:
        await ctx.respond(
            "Please upload a valid youtube link. Other links are not implemented yet"
        )
        return
    # Load the file object from the file_path
    file_path = Path("audiotemp/{}temp.mp3".format(str(ctx.user.id)))
    file = discord.File(file_path)
    response_message = await ctx.respond(
        embed=EmbedStatics.build_transcribe_progress_embed()
    )
    try:
        response = await self.model.send_transcription_request(
            file, temperature, user_api_key
        )
        print(response)
        if len(response) > 4080:
            # Chunk the response into 2048 character chunks, each an embed page
            chunks = [response[i : i + 2048] for i in range(0, len(response), 2048)]
            embed_pages = []
            for chunk in chunks:
                embed_pages.append(
                    discord.Embed(
                        title="Transcription Page {}".format(len(embed_pages) + 1),
                        description=chunk,
                    )
                )
            paginator = pages.Paginator(
                pages=embed_pages,
                timeout=None,
                author_check=False,
            )
            await paginator.respond(ctx.interaction)
            await response_message.delete()
            return
        await response_message.edit(
            embed=EmbedStatics.build_transcribe_success_embed(response)
        )
    except Exception as e:
        await response_message.edit(
            embed=EmbedStatics.build_transcribe_failed_embed(str(e))
        )