async def METHOD_NAME(self, ctx: Context, name: str | None = None) -> None:
    """
    Cast a vote for a particular monster.
    Displays a list of monsters that can be voted for if one is not specified.
    """
    if name is None:
        await ctx.invoke(self.monster_leaderboard)
        return
    async with ctx.typing():
        # Check to see if user used a numeric (leaderboard) index to vote
        try:
            idx = int(name)
            name = self.get_name_by_leaderboard_index(idx)
        except ValueError:
            name = name.lower()
        vote_embed = Embed(
            title="Monster Voting",
            color=0xFF6800
        )
        m = self.voter_registry.get(name)
        if m is None:
            vote_embed.description = f"You cannot vote for {name} because it's not in the running."
            vote_embed.add_field(
                name="Use `.monster show {monster_name}` for more information on a specific monster",
                value="or use `.monster vote {monster}` to cast your vote for said monster.",
                inline=False
            )
            vote_embed.add_field(
                name="You may vote for or show the following monsters:",
                value=", ".join(self.voter_registry.keys())
            )
        else:
            self.cast_vote(ctx.author.id, name)
            vote_embed.add_field(
                name="Vote successful!",
                value=f"You have successfully voted for {m['full_name']}!",
                inline=False
            )
            vote_embed.set_thumbnail(url=m["image"])
            vote_embed.set_footer(text="Please note that any previous votes have been removed.")
            self.json_write()
    await ctx.send(embed=vote_embed)