# Receiving Context Menu events User commands and Message commands have their own unique objects returned. Different from Slash commands. To get the appropriate object returned, you can use a similar method to the slash commands. ```cs client.InteractionCreated += InteractionCreatedHandler; ... public async Task InteractionCreatedHandler(SocketInteraction arg) { if ( arg.Type == InteractionType.ApplicationCommand) Task.Run(() => ApplicationCommandHandler(arg)); } public async Task ApplicationCommandHandler(SocketInteraction arg) { switch (arg) { case SocketSlashCommand slashCommand: Console.Writeline("Slash command received!"); break; case SocketUserCommand userCommand: Console.Writeline("User command received!") // userCommand.User = User who ran command. // userCommand.Data.Member = User who was clicked. break; case SocketMessageCommand messageCommand: Console.Writeline("Message command received!") // messageCommand.User = User who ran command. // messageCommand.Data.Message = Message that was clicked. break; } } ``` User commands return a SocketUser object, showing the user that was clicked to run the command. Message commands return a SocketMessage object, showing the message that was clicked to run the command. Both return the user who ran the command, the guild (if any), channel, etc.