001package co.aikar.commands;
002
003import net.dv8tion.jda.api.entities.Message;
004import net.dv8tion.jda.api.entities.MessageEmbed;
005import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
006import org.jetbrains.annotations.NotNull;
007
008import java.util.UUID;
009
010public class JDACommandEvent implements CommandIssuer {
011
012    private MessageReceivedEvent event;
013    private JDACommandManager manager;
014
015    public JDACommandEvent(JDACommandManager manager, MessageReceivedEvent event) {
016
017        this.manager = manager;
018        this.event = event;
019    }
020
021    public MessageReceivedEvent getEvent() {
022        return event;
023    }
024
025    @Override
026    public MessageReceivedEvent getIssuer() {
027        return event;
028    }
029
030    @Override
031    public CommandManager getManager() {
032        return this.manager;
033    }
034
035    @Override
036    public boolean isPlayer() {
037        return false;
038    }
039
040    @Override
041    public @NotNull UUID getUniqueId() {
042        // Discord id only have 64 bit width (long) while UUIDs have twice the size.
043        // In order to keep it unique we use 0L for the first 64 bit.
044        long authorId = event.getAuthor().getIdLong();
045        return new UUID(0, authorId);
046    }
047
048    @Override
049    public boolean hasPermission(String permission) {
050        CommandPermissionResolver permissionResolver = this.manager.getPermissionResolver();
051        return permissionResolver == null || permissionResolver.hasPermission(manager, this, permission);
052    }
053
054    @Override
055    public void sendMessageInternal(String message) {
056        this.event.getChannel().sendMessage(message).queue();
057    }
058
059    public void sendMessage(Message message) {
060        this.event.getChannel().sendMessage(message).queue();
061    }
062
063    public void sendMessage(MessageEmbed message) {
064        this.event.getChannel().sendMessage(message).queue();
065    }
066}