Merge branch 'develop'
This commit is contained in:
+1
-1
@@ -26,7 +26,7 @@
|
|||||||
<classpathentry kind="lib" path="lib/commons-text-1.6.jar"/>
|
<classpathentry kind="lib" path="lib/commons-text-1.6.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/google-http-client-1.32.0.jar"/>
|
<classpathentry kind="lib" path="lib/google-http-client-1.32.0.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/google-api-services-youtube-v3-rev212-1.25.0.jar"/>
|
<classpathentry kind="lib" path="lib/google-api-services-youtube-v3-rev212-1.25.0.jar"/>
|
||||||
<classpathentry kind="lib" path="lib/LavaPlayerJar-0.0.1-jar-with-dependencies.jar"/>
|
|
||||||
<classpathentry kind="lib" path="lib/nanohttpd-2.3.1.jar"/>
|
<classpathentry kind="lib" path="lib/nanohttpd-2.3.1.jar"/>
|
||||||
|
<classpathentry kind="lib" path="G:/Shared/Coding/Java/workspace/ProKitty/lib/LavaPlayerJar-1.3.50-jar-with-dependencies.jar"/>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.2 KiB |
@@ -247,6 +247,7 @@
|
|||||||
"Localized Strings","TeeyInfo","Teey yourself back into existance, or teey a friend with @!"
|
"Localized Strings","TeeyInfo","Teey yourself back into existance, or teey a friend with @!"
|
||||||
"Localized Strings","TradeBeansInfo","Give your friends some of your beans! Just don't forget to @ them!"
|
"Localized Strings","TradeBeansInfo","Give your friends some of your beans! Just don't forget to @ them!"
|
||||||
"Localized Strings","TradeBeansIntParseError","That's not a real number! D:"
|
"Localized Strings","TradeBeansIntParseError","That's not a real number! D:"
|
||||||
|
"Localized Strings","TradeBeansMultipleUsersTagged",""
|
||||||
"Localized Strings","TradeBeansNoTargetError","Don't forget to tag who you want to give the beans to!"
|
"Localized Strings","TradeBeansNoTargetError","Don't forget to tag who you want to give the beans to!"
|
||||||
"Localized Strings","TradeBeansNotEnoughError","You can't give more beans than you have!"
|
"Localized Strings","TradeBeansNotEnoughError","You can't give more beans than you have!"
|
||||||
"Localized Strings","TradeBeansStealingBeans","Hey %s! Stealing is wrong! Let's see how you like it! *steals 10 beans*"
|
"Localized Strings","TradeBeansStealingBeans","Hey %s! Stealing is wrong! Let's see how you like it! *steals 10 beans*"
|
||||||
|
|||||||
|
Binary file not shown.
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 50 KiB |
BIN
Binary file not shown.
@@ -1,7 +1,9 @@
|
|||||||
package commands.general;
|
package commands.general;
|
||||||
|
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
|
import java.awt.Rectangle;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -31,7 +33,7 @@ public class CommandBeansShow extends Command
|
|||||||
{
|
{
|
||||||
if(input.mentions == null)
|
if(input.mentions == null)
|
||||||
{
|
{
|
||||||
res.send("" + user.getBeans());
|
//res.send("" + user.getBeans());
|
||||||
try {
|
try {
|
||||||
res.sendFile(combineImages(user.getBeans()), "png");
|
res.sendFile(combineImages(user.getBeans()), "png");
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
@@ -64,8 +66,6 @@ public class CommandBeansShow extends Command
|
|||||||
|
|
||||||
long calcBean = beans;
|
long calcBean = beans;
|
||||||
|
|
||||||
System.out.println("BEANS: " + beans);
|
|
||||||
|
|
||||||
long thousands = beans / 1000;
|
long thousands = beans / 1000;
|
||||||
calcBean = beans % 1000;
|
calcBean = beans % 1000;
|
||||||
long hundreds = (calcBean / 100);
|
long hundreds = (calcBean / 100);
|
||||||
@@ -76,6 +76,8 @@ public class CommandBeansShow extends Command
|
|||||||
|
|
||||||
BufferedImage beanImage = new BufferedImage(baseWidth, baseHeight, BufferedImage.TYPE_INT_ARGB);
|
BufferedImage beanImage = new BufferedImage(baseWidth, baseHeight, BufferedImage.TYPE_INT_ARGB);
|
||||||
Graphics beanGraphics = beanImage.getGraphics();
|
Graphics beanGraphics = beanImage.getGraphics();
|
||||||
|
Rectangle rect = new Rectangle(0, 0, baseWidth, baseHeight);
|
||||||
|
beanGraphics.drawImage(imageBase,0,0,null);
|
||||||
|
|
||||||
for(int i = 0; i < ones; i++)
|
for(int i = 0; i < ones; i++)
|
||||||
{
|
{
|
||||||
@@ -115,9 +117,22 @@ public class CommandBeansShow extends Command
|
|||||||
}
|
}
|
||||||
Font beanFont = new Font("font", Font.BOLD, 45);
|
Font beanFont = new Font("font", Font.BOLD, 45);
|
||||||
beanGraphics.setFont(beanFont);
|
beanGraphics.setFont(beanFont);
|
||||||
beanGraphics.drawString("YOU GOT " + beans + " BEANS", 0, baseHeight / 2);
|
|
||||||
|
|
||||||
|
drawCenteredString(beanGraphics, "YOU HAVE", rect, beanFont, .25);
|
||||||
|
drawCenteredString(beanGraphics, "" + beans, rect, beanFont, .5);
|
||||||
|
drawCenteredString(beanGraphics, "BEANS!", rect, beanFont, .75);
|
||||||
|
|
||||||
ImageIO.write(beanImage, "PNG", new File("beanImage.png"));
|
ImageIO.write(beanImage, "PNG", new File("beanImage.png"));
|
||||||
return new File("beanImage.png");
|
return new File("beanImage.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void drawCenteredString(Graphics beanGraphics, String text, Rectangle rect, Font font, double segment)
|
||||||
|
{
|
||||||
|
FontMetrics metrics = beanGraphics.getFontMetrics(font);
|
||||||
|
|
||||||
|
int x = rect.x + (rect.width - metrics.stringWidth(text)) / 2;
|
||||||
|
int y = (int)(rect.y + ((rect.height - metrics.getHeight()) * segment) + metrics.getAscent());
|
||||||
|
|
||||||
|
beanGraphics.drawString(text, x, y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,8 @@ public class CommandBetBeans extends Command
|
|||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
GlobalLog.log(LogFilter.Command, "Betting took place, but a value was not specified in the config file so 50 was used as the minimum bet threshold. Consider specifying BetBeansMinThreshold.");
|
GlobalLog.log(LogFilter.Command, "Betting took place, but a value was not specified in the config file "
|
||||||
|
+ "so 50 was used as the minimum bet threshold. Consider specifying BetBeansMinThreshold.");
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -27,12 +27,20 @@ public class CommandChoose extends Command
|
|||||||
|
|
||||||
String [] choices = input.args.split(",");
|
String [] choices = input.args.split(",");
|
||||||
|
|
||||||
if(choices.length == 1)
|
if(choices.length <= 1)
|
||||||
{
|
{
|
||||||
res.send(LocStrings.stub("ChooseOne"));
|
res.send(LocStrings.stub("ChooseOne"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < choices.length; i ++)
|
||||||
|
{
|
||||||
|
if (choices[i].equals(""))
|
||||||
|
{
|
||||||
|
choices[i] = "KittyBot is the best!";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
res.send(String.format(LocStrings.stub("ChooseChoice"), (choices[(int) (Math.random()*choices.length)]).toString()));
|
res.send(String.format(LocStrings.stub("ChooseChoice"), (choices[(int) (Math.random()*choices.length)]).toString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ public class CommandE6 extends Command
|
|||||||
{
|
{
|
||||||
if(guild.contentRating == KittyRating.Filtered)
|
if(guild.contentRating == KittyRating.Filtered)
|
||||||
{
|
{
|
||||||
image = searcher.getE6(input.args + " rating:safe");
|
image = searcher.getE6(input.args + " rating:safe", "");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
response = image.output();
|
response = image.output();
|
||||||
@@ -58,7 +58,7 @@ public class CommandE6 extends Command
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
response = searcher.getE6(input.args).output();
|
response = searcher.getE6(input.args, "").output();
|
||||||
res.send(response);
|
res.send(response);
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
|
|||||||
@@ -1,29 +1,35 @@
|
|||||||
package commands.general;
|
package commands.general;
|
||||||
|
|
||||||
import core.Command;
|
import core.Command;
|
||||||
import core.LocStrings;
|
import core.LocStrings;
|
||||||
import dataStructures.KittyChannel;
|
import dataStructures.KittyChannel;
|
||||||
import dataStructures.KittyGuild;
|
import dataStructures.KittyGuild;
|
||||||
import dataStructures.KittyRating;
|
import dataStructures.KittyRating;
|
||||||
import dataStructures.KittyRole;
|
import dataStructures.KittyRole;
|
||||||
import dataStructures.KittyUser;
|
import dataStructures.KittyUser;
|
||||||
import dataStructures.Response;
|
import dataStructures.Response;
|
||||||
import dataStructures.UserInput;
|
import dataStructures.UserInput;
|
||||||
import network.NetworkSauceNAO;
|
import network.NetworkSauceNAO;
|
||||||
|
|
||||||
public class CommandGetSauce extends Command
|
public class CommandGetSauce extends Command
|
||||||
{
|
{
|
||||||
NetworkSauceNAO sauce = new NetworkSauceNAO();
|
NetworkSauceNAO sauce = new NetworkSauceNAO();
|
||||||
|
|
||||||
public CommandGetSauce(KittyRole level, KittyRating rating) { super(level, rating); }
|
public CommandGetSauce(KittyRole level, KittyRating rating) { super(level, rating); }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getHelpText() { return LocStrings.stub("GetSauceInfo"); };
|
public String getHelpText() { return LocStrings.stub("GetSauceInfo"); };
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
|
public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
|
||||||
{
|
{
|
||||||
res.send(sauce.getSauce(input.args));
|
try
|
||||||
|
{
|
||||||
}
|
res.send(sauce.getSauce(input.args).output());
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
res.send("Image not found");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -25,6 +25,11 @@ public class CommandTradeBeans extends Command
|
|||||||
res.send(LocStrings.stub("TradeBeansNoTargetError"));
|
res.send(LocStrings.stub("TradeBeansNoTargetError"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if(input.mentions.length > 1)
|
||||||
|
{
|
||||||
|
res.send(LocStrings.stub("TradeBeansMultipleUsersTagged"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int beans = 0;
|
int beans = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -167,7 +167,8 @@ public class ObjectBuilderFactory
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Construct a new guild with defaults
|
// Construct a new guild with defaults
|
||||||
guild = new KittyGuild(uid, new AdminControl(event.getGuild()), emotesString, new AudioUtils(event.getGuild(), playerManager), channels);
|
guild = new KittyGuild(uid, new AdminControl(event.getGuild()), emotesString,
|
||||||
|
new AudioUtils(event.getGuild(), playerManager), channels);
|
||||||
DatabaseManager.instance.globalRegister(guild);
|
DatabaseManager.instance.globalRegister(guild);
|
||||||
guildCache.put(uid, guild);
|
guildCache.put(uid, guild);
|
||||||
}
|
}
|
||||||
@@ -176,6 +177,8 @@ public class ObjectBuilderFactory
|
|||||||
return guild;
|
return guild;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Explicitly locks: guildCache
|
// Explicitly locks: guildCache
|
||||||
public static KittyRole extractRole(GuildMessageReceivedEvent event)
|
public static KittyRole extractRole(GuildMessageReceivedEvent event)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -44,7 +44,8 @@ public class KittyGuild extends DatabaseTrackedObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Default content for a guild
|
// Default content for a guild
|
||||||
public KittyGuild(String uniqueID, AdminControl adminControl, ArrayList <String> emoji, AudioUtils audio, HashMap<Long, KittyChannel> channels)
|
public KittyGuild(String uniqueID, AdminControl adminControl, ArrayList <String> emoji,
|
||||||
|
AudioUtils audio, HashMap<Long, KittyChannel> channels)
|
||||||
{
|
{
|
||||||
|
|
||||||
super(uniqueID);
|
super(uniqueID);
|
||||||
@@ -63,7 +64,8 @@ public class KittyGuild extends DatabaseTrackedObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Explicit constructor
|
// Explicit constructor
|
||||||
public KittyGuild(String commandIndicator, KittyRating contentRating, KittyUser guildOwner, String uniqueID, AudioUtils audio, HashMap<Long, KittyChannel> channels)
|
public KittyGuild(String commandIndicator, KittyRating contentRating, KittyUser guildOwner,
|
||||||
|
String uniqueID, AudioUtils audio, HashMap<Long, KittyChannel> channels)
|
||||||
{
|
{
|
||||||
super(uniqueID);
|
super(uniqueID);
|
||||||
this.uniqueID = uniqueID;
|
this.uniqueID = uniqueID;
|
||||||
|
|||||||
+153
-146
@@ -1,146 +1,153 @@
|
|||||||
package dataStructures;
|
package dataStructures;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
import net.dv8tion.jda.core.JDA;
|
import net.dv8tion.jda.core.JDA;
|
||||||
import net.dv8tion.jda.core.MessageBuilder;
|
import net.dv8tion.jda.core.MessageBuilder;
|
||||||
import net.dv8tion.jda.core.entities.TextChannel;
|
import net.dv8tion.jda.core.entities.TextChannel;
|
||||||
import net.dv8tion.jda.core.events.message.guild.*;
|
import net.dv8tion.jda.core.events.message.guild.*;
|
||||||
import net.dv8tion.jda.core.EmbedBuilder;
|
import net.dv8tion.jda.core.EmbedBuilder;
|
||||||
import utils.GlobalLog;
|
import utils.GlobalLog;
|
||||||
import utils.LogFilter;
|
import utils.LogFilter;
|
||||||
|
|
||||||
// This isn't constructed with the factory at this time, mostly because we need it
|
// This isn't constructed with the factory at this time, mostly because we need it
|
||||||
// to handle all the response queue behavior and everything internally. So long as
|
// to handle all the response queue behavior and everything internally. So long as
|
||||||
// commands aren't exposed to the GuildMessageReceivedEvent then we should be fine.
|
// commands aren't exposed to the GuildMessageReceivedEvent then we should be fine.
|
||||||
public class Response
|
public class Response
|
||||||
{
|
{
|
||||||
// Variables
|
// Variables
|
||||||
private GuildMessageReceivedEvent event;
|
private GuildMessageReceivedEvent event;
|
||||||
private final int discordMessageMax = 2000;
|
private final int discordMessageMax = 2000;
|
||||||
private final int kittyMessageMax = 1950;
|
private final int kittyMessageMax = 1950;
|
||||||
private JDA kitty;
|
private JDA kitty;
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
public Response(GuildMessageReceivedEvent event, KittyCore kitty)
|
public Response(GuildMessageReceivedEvent event, KittyCore kitty)
|
||||||
{
|
{
|
||||||
this.event = event;
|
this.event = event;
|
||||||
this.kitty = kitty.jda;
|
this.kitty = kitty.jda;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Builds a nicely formatted embedded message based on information provided
|
// Builds a nicely formatted embedded message based on information provided
|
||||||
public void send(KittyEmbed embedInfo)
|
public void send(KittyEmbed embedInfo)
|
||||||
{
|
{
|
||||||
EmbedBuilder embed = new EmbedBuilder();
|
EmbedBuilder embed = new EmbedBuilder();
|
||||||
|
|
||||||
if(embedInfo.title != null && !embedInfo.title.isEmpty())
|
if(embedInfo.title != null && !embedInfo.title.isEmpty())
|
||||||
{
|
{
|
||||||
embed.setTitle(embedInfo.title);
|
embed.setTitle(embedInfo.title);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// We have to set the title to at least something that's not empty.
|
// We have to set the title to at least something that's not empty.
|
||||||
// By defualt, this creates nothing really visible.
|
// By defualt, this creates nothing really visible.
|
||||||
embed.setTitle(" ");
|
embed.setTitle(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(embedInfo.color != null)
|
if(embedInfo.color != null)
|
||||||
embed.setColor(embedInfo.color);
|
embed.setColor(embedInfo.color);
|
||||||
|
|
||||||
if(embedInfo.descriptionText != null)
|
if(embedInfo.descriptionText != null)
|
||||||
embed.setDescription(embedInfo.descriptionText);
|
embed.setDescription(embedInfo.descriptionText);
|
||||||
|
|
||||||
if(embedInfo.footerText != null)
|
if(embedInfo.footerText != null)
|
||||||
embed.setFooter(embedInfo.footerText, null);
|
embed.setFooter(embedInfo.footerText, null);
|
||||||
|
|
||||||
if(embedInfo.authorImage != null || embedInfo.authorLink != null || embedInfo.authorText != null)
|
if(embedInfo.authorImage != null || embedInfo.authorLink != null || embedInfo.authorText != null)
|
||||||
embed.setAuthor(embedInfo.authorText, embedInfo.authorLink, embedInfo.authorImage);
|
embed.setAuthor(embedInfo.authorText, embedInfo.authorLink, embedInfo.authorImage);
|
||||||
|
|
||||||
if(embedInfo.imageURL != null)
|
if(embedInfo.imageURL != null)
|
||||||
embed.setImage(embedInfo.imageURL);
|
embed.setImage(embedInfo.imageURL);
|
||||||
|
|
||||||
if(embedInfo.thumbnailURL != null && embedInfo.thumbnailURL.contains("attachment://"))
|
if(embedInfo.thumbnailURL != null && embedInfo.thumbnailURL.contains("attachment://"))
|
||||||
{
|
{
|
||||||
// This is the case where you have a thumbnail image, but you want it to be a local file.
|
// This is the case where you have a thumbnail image, but you want it to be a local file.
|
||||||
// TODO: Make this more generic. Consider message builder for the entire thing.
|
// TODO: Make this more generic. Consider message builder for the entire thing.
|
||||||
String thumbPath = embedInfo.thumbnailURL;
|
String thumbPath = embedInfo.thumbnailURL;
|
||||||
String thumbName = thumbPath.replace("attachment://", "");
|
String thumbName = thumbPath.replace("attachment://", "");
|
||||||
|
|
||||||
// Build the message and send if the file is valid
|
// Build the message and send if the file is valid
|
||||||
MessageBuilder message = new MessageBuilder();
|
MessageBuilder message = new MessageBuilder();
|
||||||
embed.setThumbnail(thumbPath);
|
embed.setThumbnail(thumbPath);
|
||||||
message.setEmbed(embed.build());
|
message.setEmbed(embed.build());
|
||||||
|
|
||||||
File thumbImage = new File(thumbName);
|
File thumbImage = new File(thumbName);
|
||||||
if(thumbImage.exists())
|
if(thumbImage.exists())
|
||||||
{
|
{
|
||||||
event.getChannel().sendFile(thumbImage, thumbName, message.build()).queue();
|
event.getChannel().sendFile(thumbImage, thumbName, message.build()).queue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(embedInfo.thumbnailURL != null)
|
if(embedInfo.thumbnailURL != null)
|
||||||
embed.setThumbnail(embedInfo.thumbnailURL);
|
embed.setThumbnail(embedInfo.thumbnailURL);
|
||||||
|
|
||||||
event.getChannel().sendMessage(embed.build()).queue();
|
event.getChannel().sendMessage(embed.build()).queue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Queues a standard text-based message response to the channel that issued the command.
|
// Queues a standard text-based message response to the channel that issued the command.
|
||||||
public void send(String toRespondWith)
|
public void send(String toRespondWith)
|
||||||
{
|
{
|
||||||
GlobalLog.log(LogFilter.Response, "Sending response: " + toRespondWith);
|
GlobalLog.log(LogFilter.Response, "Sending response: " + toRespondWith);
|
||||||
if(toRespondWith.length() > discordMessageMax)
|
if(toRespondWith.length() > discordMessageMax)
|
||||||
{
|
{
|
||||||
event.getChannel().sendMessage(toRespondWith.substring(0, kittyMessageMax) + "\n\nI think that's enough!").queue();
|
event.getChannel().sendMessage(toRespondWith.substring(0, kittyMessageMax) + "\n\nI think that's enough!").queue();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
event.getChannel().sendMessage(toRespondWith).queue();
|
event.getChannel().sendMessage(toRespondWith).queue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Queues a standard text-based message response to the specified channel.
|
// Queues a standard text-based message response to the specified channel.
|
||||||
public void sendToChannel(String toRespondWith, String channelID)
|
public void sendToChannel(String toRespondWith, String channelID)
|
||||||
{
|
{
|
||||||
TextChannel channel;
|
TextChannel channel;
|
||||||
channel = kitty.getTextChannelById(Long.parseLong(channelID));
|
channel = kitty.getTextChannelById(Long.parseLong(channelID));
|
||||||
if(toRespondWith.length() > discordMessageMax)
|
if(toRespondWith.length() > discordMessageMax)
|
||||||
{
|
{
|
||||||
channel.sendMessage(toRespondWith.substring(0, kittyMessageMax) + "\n\nI think that's enough!").queue();
|
channel.sendMessage(toRespondWith.substring(0, kittyMessageMax) + "\n\nI think that's enough!").queue();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
channel.sendMessage(toRespondWith).queue();
|
channel.sendMessage(toRespondWith).queue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Immediately dispatches the message to the channel that issued the command.
|
// Immediately dispatches the message to the channel that issued the command.
|
||||||
public void sendImmediate(String toRespondWith)
|
public void sendImmediate(String toRespondWith)
|
||||||
{
|
{
|
||||||
GlobalLog.log(LogFilter.Response, "Sending immediate response: " + toRespondWith);
|
GlobalLog.log(LogFilter.Response, "Sending immediate response: " + toRespondWith);
|
||||||
if(toRespondWith.length() > discordMessageMax)
|
if(toRespondWith.length() > discordMessageMax)
|
||||||
{
|
{
|
||||||
event.getChannel().sendMessage(toRespondWith.substring(0, kittyMessageMax) + "\n\nI think that's enough!");
|
event.getChannel().sendMessage(toRespondWith.substring(0, kittyMessageMax) + "\n\nI think that's enough!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
event.getChannel().sendMessage(toRespondWith).complete();
|
event.getChannel().sendMessage(toRespondWith).complete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Queues a file response to the channel that issued the command.
|
// Queues a file response to the channel that issued the command.
|
||||||
public void sendFile(File toRespondWith, String extension)
|
public void sendFile(File toRespondWith, String extension)
|
||||||
{
|
{
|
||||||
GlobalLog.log(LogFilter.Response, "Sending file response");
|
GlobalLog.log(LogFilter.Response, "Sending file response");
|
||||||
event.getChannel().sendFile(toRespondWith, "return." + extension).queue();
|
event.getChannel().sendFile(toRespondWith, "return." + extension).queue();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Queues an input stream response to the channel that issued the command.
|
// Queues an input stream response to the channel that issued the command.
|
||||||
public void sendFile(InputStream in, String extension)
|
public void sendFile(InputStream in, String extension)
|
||||||
{
|
{
|
||||||
GlobalLog.log(LogFilter.Response, "Sending input stream response");
|
GlobalLog.log(LogFilter.Response, "Sending input stream response");
|
||||||
event.getChannel().sendFile(in, "return." + extension).queue();
|
event.getChannel().sendFile(in, "return." + extension).queue();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
//Sends Kittybot as an object
|
||||||
|
//WARNING: THIS WILL EDIT THE ENTIRE BOT, DO NOT USE LIGHTLY
|
||||||
|
public JDA getKitty()
|
||||||
|
{
|
||||||
|
return kitty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
+2
-1
@@ -118,7 +118,8 @@ public class Main extends ListenerAdapter
|
|||||||
{
|
{
|
||||||
if(pluginOutput.get(i).startsWith("!"))
|
if(pluginOutput.get(i).startsWith("!"))
|
||||||
{
|
{
|
||||||
commandManager.invokeOnNewThread(guild, channel, user, new UserInput(pluginOutput.get(i).substring(1), guild), response);
|
commandManager.invokeOnNewThread(guild, channel, user,
|
||||||
|
new UserInput(pluginOutput.get(i).substring(1), guild), response);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import utils.*;
|
|||||||
|
|
||||||
public class NetworkDerpi
|
public class NetworkDerpi
|
||||||
{
|
{
|
||||||
private final String mainURL = "https://derpibooru.org/search.json?q=";
|
private final String mainURL = "https://derpibooru.org/api/v1/json/search/images?q=";
|
||||||
private static final Gson jsonParser_ = new Gson();
|
private static final Gson jsonParser_ = new Gson();
|
||||||
|
|
||||||
private class DerpiResponseObject
|
private class DerpiResponseObject
|
||||||
@@ -24,10 +24,20 @@ public class NetworkDerpi
|
|||||||
|
|
||||||
public GenericImage getDerpi(String query)
|
public GenericImage getDerpi(String query)
|
||||||
{
|
{
|
||||||
|
String res;
|
||||||
GenericImage image = new GenericImage(" ", " ", " ");
|
GenericImage image = new GenericImage(" ", " ", " ");
|
||||||
query = query.trim();
|
query = query.trim();
|
||||||
query = query.replace(" ", ",");
|
query = query.replace(" ", ",");
|
||||||
String res = HTTPUtils.sendGETRequest(mainURL + query + "&random_image=1&key=" + Ref.derpiKey);
|
System.out.println(mainURL + query + "&sf=random&key=" + Ref.derpiKey);
|
||||||
|
if(query.startsWith("ID:"))
|
||||||
|
{
|
||||||
|
res = HTTPUtils.sendGETRequest("https://derpibooru.org/api/v1/json/images/" + query.substring(3));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
res = HTTPUtils.sendGETRequest(mainURL + query + "&sf=random&key=" + Ref.derpiKey);
|
||||||
|
}
|
||||||
|
System.out.println(res);
|
||||||
if(res != null)
|
if(res != null)
|
||||||
{
|
{
|
||||||
InitialRequest obj;
|
InitialRequest obj;
|
||||||
@@ -43,7 +53,6 @@ public class NetworkDerpi
|
|||||||
|
|
||||||
if(res != null)
|
if(res != null)
|
||||||
{
|
{
|
||||||
|
|
||||||
String res2 = HTTPUtils.sendGETRequest("https://derpibooru.org/" + obj.id + ".json");
|
String res2 = HTTPUtils.sendGETRequest("https://derpibooru.org/" + obj.id + ".json");
|
||||||
image.editPostURL("https://derpibooru.org/" + obj.id);
|
image.editPostURL("https://derpibooru.org/" + obj.id);
|
||||||
DerpiResponseObject imageObj = jsonParser_.fromJson(res2, DerpiResponseObject.class);
|
DerpiResponseObject imageObj = jsonParser_.fromJson(res2, DerpiResponseObject.class);
|
||||||
|
|||||||
+27
-10
@@ -79,7 +79,7 @@ public class NetworkE6
|
|||||||
// Static methods //
|
// Static methods //
|
||||||
////////////////////
|
////////////////////
|
||||||
// Requests a specific image, then returns a few.
|
// Requests a specific image, then returns a few.
|
||||||
public GenericImage getE6(String input)
|
public GenericImage getE6(String input, String sauceNaoDependant)
|
||||||
{
|
{
|
||||||
GenericImage image = new GenericImage("","","");
|
GenericImage image = new GenericImage("","","");
|
||||||
boolean blacklisted;
|
boolean blacklisted;
|
||||||
@@ -92,14 +92,11 @@ public class NetworkE6
|
|||||||
// tag by default. User-provided tags, therefore, will override it.
|
// tag by default. User-provided tags, therefore, will override it.
|
||||||
// If order:score is provided, that will be honored over order:random.
|
// If order:score is provided, that will be honored over order:random.
|
||||||
String res = HTTPUtils.sendGETRequest(API_ROOT + "tags=order:random%20" + input + "&limit=" + maxSearchResults_);
|
String res = HTTPUtils.sendGETRequest(API_ROOT + "tags=order:random%20" + input + "&limit=" + maxSearchResults_);
|
||||||
|
|
||||||
if(res != null)
|
if(res != null)
|
||||||
{
|
{
|
||||||
|
|
||||||
// Use class evaluation on an array of the response imageObject to be able to hold multiple.
|
// Use class evaluation on an array of the response imageObject to be able to hold multiple.
|
||||||
System.out.println("Still");
|
|
||||||
E6ResponseObject imageObj = jsonParser_.fromJson(res, E6ResponseObject.class);
|
E6ResponseObject imageObj = jsonParser_.fromJson(res, E6ResponseObject.class);
|
||||||
System.out.println("Broken");
|
|
||||||
// For now, we really just wanna display images and their source.
|
// For now, we really just wanna display images and their source.
|
||||||
// Append them all separately to a response string w/ some flavor text.
|
// Append them all separately to a response string w/ some flavor text.
|
||||||
if(imageObj.posts.length < 1)
|
if(imageObj.posts.length < 1)
|
||||||
@@ -133,9 +130,9 @@ public class NetworkE6
|
|||||||
image.editPostURL("https://e621.net/posts/" + imageObj.posts[i].id);
|
image.editPostURL("https://e621.net/posts/" + imageObj.posts[i].id);
|
||||||
if(imageObj.posts[i].tags.artist.length > 0)
|
if(imageObj.posts[i].tags.artist.length > 0)
|
||||||
{
|
{
|
||||||
String artists = "";
|
String artists = imageObj.posts[i].tags.artist[0];
|
||||||
for(int j = 0; j < imageObj.posts[i].tags.artist.length; j++)
|
for(int j = 1; j < imageObj.posts[i].tags.artist.length; j++)
|
||||||
artists += imageObj.posts[i].tags.artist[j];
|
artists += ", " + imageObj.posts[i].tags.artist[j];
|
||||||
image.editArtist(artists);
|
image.editArtist(artists);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -160,12 +157,27 @@ public class NetworkE6
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
source = source.substring(source.indexOf("/") + 2);
|
source = source.substring(source.indexOf("/") + 2);
|
||||||
source = source.substring(0, source.indexOf('.'));
|
source = "[" + source.substring(0, source.indexOf('.')) + "]";
|
||||||
|
if(source.equals("[pbs]"))
|
||||||
|
{
|
||||||
|
source = "[twitter-cdn]";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
sources += " [" + source + "](" + imageObj.posts[i].sources[k] + ") ";
|
sources += " [" + source + "](" + imageObj.posts[i].sources[k] + ") ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
image.editDescriptionText("Score: " + imageObj.posts[i].score.total + "\n**Source:**" + sources);
|
if(sources.equals(""))
|
||||||
|
{
|
||||||
|
sources = " Source not listed";
|
||||||
|
}
|
||||||
|
if(sauceNaoDependant.equals(""))
|
||||||
|
{
|
||||||
|
image.editDescriptionText("Score: " + imageObj.posts[i].score.total + "\n**Source:**" + sources);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
image.editDescriptionText(sauceNaoDependant + "\nScore: " + imageObj.posts[i].score.total + "\n**Source:**" + sources);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -184,7 +196,12 @@ public class NetworkE6
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
descTags = imageObj.posts[i].tags.general.toString();
|
for(int o = 0; o < imageObj.posts[i].tags.general.length - 1; o++)
|
||||||
|
{
|
||||||
|
descTags += imageObj.posts[i].tags.general[o] + ", ";
|
||||||
|
}
|
||||||
|
descTags += imageObj.posts[i].tags.general[imageObj.posts[i].tags.general.length-1] + "";
|
||||||
|
|
||||||
image.editFooterText("[Tags] " + descTags);
|
image.editFooterText("[Tags] " + descTags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
|
|
||||||
|
import dataStructures.GenericImage;
|
||||||
import offline.Ref;
|
import offline.Ref;
|
||||||
import utils.HTTPUtils;
|
import utils.HTTPUtils;
|
||||||
|
|
||||||
@@ -20,6 +21,12 @@ public class NetworkSauceNAO
|
|||||||
private class SauceNAOResult
|
private class SauceNAOResult
|
||||||
{
|
{
|
||||||
SauceNAOData data;
|
SauceNAOData data;
|
||||||
|
SauceNAOHeader header;
|
||||||
|
}
|
||||||
|
|
||||||
|
private class SauceNAOHeader
|
||||||
|
{
|
||||||
|
double similarity;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class SauceNAOData
|
private class SauceNAOData
|
||||||
@@ -27,23 +34,23 @@ public class NetworkSauceNAO
|
|||||||
String [] ext_urls;
|
String [] ext_urls;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getSauce(String input)
|
public GenericImage getSauce(String input)
|
||||||
{
|
{
|
||||||
|
double similarity;
|
||||||
input = input.trim();
|
input = input.trim();
|
||||||
input = input.replace("+", "%2B");
|
input = input.replace("+", "%2B");
|
||||||
input = input.replace(" ", "%20");
|
input = input.replace(" ", "%20");
|
||||||
|
|
||||||
String res = HTTPUtils.sendGETRequest(API_ROOT + input);
|
String res = HTTPUtils.sendGETRequest(API_ROOT + input);
|
||||||
|
|
||||||
SauceNAOResponseObject sauce = jsonParser_.fromJson(res, SauceNAOResponseObject.class);
|
SauceNAOResponseObject sauce = jsonParser_.fromJson(res, SauceNAOResponseObject.class);
|
||||||
String sauceUrl = sauce.results.get(0).data.ext_urls[0];
|
String sauceUrl = sauce.results.get(0).data.ext_urls[0];
|
||||||
|
similarity = sauce.results.get(0).header.similarity;
|
||||||
if(sauceUrl.startsWith("https://e621.net/post/show/"))
|
if(sauceUrl.startsWith("https://e621.net/post/show/"))
|
||||||
{
|
{
|
||||||
System.out.println("id:" + sauceUrl.substring(26));
|
return e6Sauce.getE6("id:" + sauceUrl.substring(27), "Confidence: " + similarity + "%");
|
||||||
System.out.println("HERE");
|
|
||||||
return e6Sauce.getE6("id:" + sauceUrl.substring(27)).toString();
|
|
||||||
}
|
}
|
||||||
return sauce.results.get(0).data.ext_urls[0];
|
GenericImage unknown = new GenericImage("", "","");
|
||||||
|
return unknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,11 +27,11 @@ public class NetworkYoutube
|
|||||||
|
|
||||||
public class YTInner
|
public class YTInner
|
||||||
{
|
{
|
||||||
TYID id;
|
YTID id;
|
||||||
YTSnippet snippet;
|
YTSnippet snippet;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TYID
|
public class YTID
|
||||||
{
|
{
|
||||||
String videoId;
|
String videoId;
|
||||||
}
|
}
|
||||||
@@ -48,8 +48,9 @@ public class NetworkYoutube
|
|||||||
input = input.replace("+", "%2B");
|
input = input.replace("+", "%2B");
|
||||||
input = input.replace(" ", "%20");
|
input = input.replace(" ", "%20");
|
||||||
|
|
||||||
String res = HTTPUtils.sendGETRequest(API_ROOT + input + "&order=viewCount&type=video&topicId=%2Fm%2F04rlf&videoDefinition=high&key=" + Ref.youtube);
|
String res = HTTPUtils.sendGETRequest(API_ROOT + input +
|
||||||
|
"&order=viewCount&type=video&topicId=%2Fm%2F04rlf&videoDefinition=high&key=" + Ref.youtube);
|
||||||
YTOuter videoObj = jsonParser_.fromJson(res, YTOuter.class);
|
YTOuter videoObj = jsonParser_.fromJson(res, YTOuter.class);
|
||||||
return "https://www.youtube.com/watch?v=" + videoObj.items.get(0).id.videoId;
|
return "https://www.youtube.com/watch?v=" + videoObj.items.get(0).id.videoId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user