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

# Context Menu Commands



{% hint style="danger" %}
This guide has been moved to [https://namantech.me/pycord](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.
{% endhint %}

## What are User Commands and Message Commands?

![Preview of User commands and Message commands - click to expand](https://2961845821-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MjPk-Yu4sOq8KGrr_yG%2F-MjSXhYe9K0uVV4_oRsn%2F-MjSYM78m_x2LUvCexhn%2FqxVMvwcH.gif?alt=media\&token=90f20216-6860-4234-abbd-1e237224dc65)

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](https://pycord.readthedocs.io/en/master/api.html#discord.Bot.user_command)

Very Simple!

```python
@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](https://pycord.readthedocs.io/en/master/api.html#discord.Bot.message_command)

Similar to user commands,

```python
@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}!")
```
