package co.aikar.commands;

public class JDACommandContexts extends CommandContexts<JDACommandExecutionContext> {
    JDACommandContexts(CommandManager manager) {
        super(manager);
    }
}

@@ -21,16 +21,397 @@
 mands;%0A%0A
+import co.aikar.commands.annotation.Optional;%0Aimport net.dv8tion.jda.core.JDA;%0Aimport net.dv8tion.jda.core.entities.ChannelType;%0Aimport net.dv8tion.jda.core.entities.Guild;%0Aimport net.dv8tion.jda.core.entities.Message;%0Aimport net.dv8tion.jda.core.entities.MessageChannel;%0Aimport net.dv8tion.jda.core.entities.User;%0Aimport net.dv8tion.jda.core.events.message.MessageReceivedEvent;%0A%0A
 public c
@@ -492,16 +492,23 @@
 %3E %7B%0A    
+public 
 JDAComma
@@ -518,16 +518,19 @@
 ontexts(
+JDA
 CommandM
@@ -575,12 +575,1484 @@
 r);%0A    
-%7D
+    this.registerIssuerOnlyContext(CommandEvent.class, CommandExecutionContext::getIssuer);%0A        this.registerIssuerOnlyContext(MessageReceivedEvent.class, c -%3E c.getIssuer().getIssuer());%0A        this.registerIssuerOnlyContext(Message.class, c -%3E %7B%0A            MessageReceivedEvent event = c.getIssuer().getIssuer();%0A            return event.getMessage();%0A        %7D);%0A        this.registerIssuerOnlyContext(Guild.class, c -%3E %7B%0A            MessageReceivedEvent event = c.getIssuer().getIssuer();%0A            if (event.isFromType(ChannelType.PRIVATE) && c.getAnnotation(Optional.class) == null) %7B%0A                throw new InvalidCommandArgument(%22This command can only be executed in a Guild.%22, false); // TODO: Message Keys%0A            %7D else %7B%0A                return event.getGuild();%0A            %7D%0A        %7D);%0A        this.registerIssuerOnlyContext(MessageChannel.class, c -%3E %7B%0A            MessageReceivedEvent event = c.getIssuer().getIssuer();%0A            return event.getChannel();%0A        %7D);%0A        this.registerIssuerOnlyContext(ChannelType.class, c -%3E %7B%0A            MessageReceivedEvent event = c.getIssuer().getIssuer();%0A            return event.getChannelType();%0A        %7D);%0A        this.registerIssuerOnlyContext(User.class, c -%3E %7B%0A            MessageReceivedEvent event = c.getIssuer().getIssuer();%0A            return event.getAuthor();%0A        %7D);%0A        this.registerIssuerOnlyContext(JDA.class, c -%3E ((JDACommandManager) this.manager).getJDA());%0A    %7D%0A
 %0A%7D%0A

provide some contexts for JDA