mirror of
https://github.com/Noratrieb/killua-bot.git
synced 2026-01-14 15:15:01 +01:00
emote steal
This commit is contained in:
parent
f64252f5c0
commit
0d7e01fd49
1 changed files with 30 additions and 4 deletions
|
|
@ -2,6 +2,7 @@ package com.github.nilstrieb.commands.util;
|
||||||
|
|
||||||
import com.github.nilstrieb.core.command.Command;
|
import com.github.nilstrieb.core.command.Command;
|
||||||
import net.dv8tion.jda.api.Permission;
|
import net.dv8tion.jda.api.Permission;
|
||||||
|
import net.dv8tion.jda.api.entities.Emote;
|
||||||
import net.dv8tion.jda.api.entities.Icon;
|
import net.dv8tion.jda.api.entities.Icon;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
|
|
@ -10,6 +11,7 @@ import javax.imageio.ImageIO;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
@ -33,6 +35,12 @@ public class EmoteAddCommand extends Command {
|
||||||
reply("You don't have the permissions to do that.");
|
reply("You don't have the permissions to do that.");
|
||||||
} else if (emoteLimitReached()) {
|
} else if (emoteLimitReached()) {
|
||||||
reply("Emote limit reached");
|
reply("Emote limit reached");
|
||||||
|
} else if (messageContainsEmote()) {
|
||||||
|
try {
|
||||||
|
stealEmote();
|
||||||
|
} catch (Exception e) {
|
||||||
|
reply("Error while reading image. Please try again.");
|
||||||
|
}
|
||||||
} else if (attachments.isEmpty() || !attachments.get(0).isImage()) {
|
} else if (attachments.isEmpty() || !attachments.get(0).isImage()) {
|
||||||
reply("No image attached");
|
reply("No image attached");
|
||||||
} else if (args.length() < 3) {
|
} else if (args.length() < 3) {
|
||||||
|
|
@ -43,19 +51,33 @@ public class EmoteAddCommand extends Command {
|
||||||
try {
|
try {
|
||||||
Message.Attachment image = attachments.get(0);
|
Message.Attachment image = attachments.get(0);
|
||||||
byte[] bytes = readImage(image);
|
byte[] bytes = readImage(image);
|
||||||
|
|
||||||
if (bytes.length > MAX_EMOTE_SIZE) {
|
if (bytes.length > MAX_EMOTE_SIZE) {
|
||||||
bytes = resizeImage(bytes, image.getFileExtension(), DEFAULT_SIZE);
|
bytes = resizeImage(bytes, image.getFileExtension(), DEFAULT_SIZE);
|
||||||
}
|
}
|
||||||
|
uploadEmote(bytes, args);
|
||||||
Icon icon = Icon.from(bytes);
|
|
||||||
event.getGuild().createEmote(args, icon).queue(emote -> reply("Successfully added emote: " + emote.getAsMention()));
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
reply("Error while reading image. Please try again.");
|
reply("Error while reading image. Please try again.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void stealEmote() throws IOException {
|
||||||
|
Emote emote = event.getMessage().getEmotes().get(0);
|
||||||
|
URL url = new URL(emote.getImageUrl());
|
||||||
|
byte[] data = readUrl(url);
|
||||||
|
uploadEmote(data, event.getMessage().getContentRaw());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void uploadEmote(byte[] bytes, String name) {
|
||||||
|
|
||||||
|
Icon icon = Icon.from(bytes);
|
||||||
|
event.getGuild().createEmote(name, icon).queue(emote -> reply("Successfully added emote: " + emote.getAsMention()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean messageContainsEmote() {
|
||||||
|
return !event.getMessage().getEmotes().isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
private boolean emoteLimitReached() {
|
private boolean emoteLimitReached() {
|
||||||
int max = event.getGuild().getMaxEmotes();
|
int max = event.getGuild().getMaxEmotes();
|
||||||
int count = event.getGuild().retrieveEmotes().complete().size();
|
int count = event.getGuild().retrieveEmotes().complete().size();
|
||||||
|
|
@ -66,6 +88,10 @@ public class EmoteAddCommand extends Command {
|
||||||
private byte[] readImage(Message.Attachment image) throws IOException {
|
private byte[] readImage(Message.Attachment image) throws IOException {
|
||||||
String urlString = image.getUrl();
|
String urlString = image.getUrl();
|
||||||
URL url = new URL(urlString);
|
URL url = new URL(urlString);
|
||||||
|
return readUrl(url);
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte[] readUrl(URL url) throws IOException {
|
||||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
|
|
||||||
byte[] chunk = new byte[4096];
|
byte[] chunk = new byte[4096];
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue