|
|
@@ -0,0 +1,43 @@ |
|
|
|
# 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) |
|
|
|
{ |
|
|
|
var slashCommand = arg as SocketSlashCommand; |
|
|
|
if(slashCommand != null) |
|
|
|
Console.Writeline("Slash command received!") |
|
|
|
|
|
|
|
var userCommand = arg as SocketApplicationUserCommand; |
|
|
|
if(userCommand != null) |
|
|
|
{ |
|
|
|
Console.Writeline("User command received!") |
|
|
|
// userCommand.User = User who ran command. |
|
|
|
// userCommand.Data.Member = User who was clicked. |
|
|
|
} |
|
|
|
|
|
|
|
var messageCommand = arg as SocketApplicationMessageCommand; |
|
|
|
if(messageCommand != null) |
|
|
|
{ |
|
|
|
Console.Writeline("Message command received!") |
|
|
|
// messageCommand.User = User who ran command. |
|
|
|
// messageCommand.Data.Message = Message that was clicked. |
|
|
|
} |
|
|
|
} |
|
|
|
``` |
|
|
|
|
|
|
|
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. |