Context Menu Commands

How to make context menu commands with Pycord - detailed explanation with examples.

This guide has been moved to https://namantech.me/pycord. Please visit the new guide instead, since this one might be outdated.

The new guide looks better, has better explanations, and is way better overall.

What are User Commands and Message Commands?

When you right click a message, you may see a option called "Apps". Hover over it and you can see commands a bot can run with that message. These are called message commands.

When you right click a message in the user list, you can once again see an option called "Apps". Hover over it and you can see commands a bot can run with that message. These are called user commands.

How to create User Commands

Docs: https://pycord.readthedocs.io/en/master/api.html#discord.Bot.user_command

Very Simple!

@bot.user_command(guild_ids=[...])  # create a user command for the supplied guilds
async def mention(ctx, member: discord.Member):  # user commands return the member
    await ctx.respond(f"{ctx.author.name} just mentioned {member.mention}!")

If you want to make the command global, remove guild_ids. Note that global application commands can take up to an hour to register.

How to create Message Commands

Docs: https://pycord.readthedocs.io/en/master/api.html#discord.Bot.message_command

Similar to user commands,

@bot.message_command(name="Show ID")  # creates a global message command. use guild_ids=[] to create guild-specific commands.
async def show_id(ctx, message: discord.Message):  # message commands return the message
    await ctx.respond(f"{ctx.author.name}, here's the message id: {message.id}!")

Last updated