use of com.sx4.bot.http.HttpCallback in project Sx4 by sx4-discord-bot.
the class HowToGoogleCommand method onCommand.
public void onCommand(Sx4CommandEvent event, @Argument(value = "query", endless = true) @Limit(max = 50) String query) {
Request request = new ImageRequest(event.getConfig().getImageWebserverUrl("google")).addQuery("q", query).build(event.getConfig().getImageWebserver());
event.getHttpClient().newCall(request).enqueue((HttpCallback) response -> ImageUtility.getImageMessage(event, response).queue());
}
use of com.sx4.bot.http.HttpCallback in project Sx4 by sx4-discord-bot.
the class HueCommand method onCommand.
public void onCommand(Sx4CommandEvent event, @Argument(value = "image url", endless = true, acceptEmpty = true) @ImageUrl String imageUrl) {
Request request = new ImageRequest(event.getConfig().getImageWebserverUrl("hue")).addQuery("image", imageUrl).build(event.getConfig().getImageWebserver());
event.getHttpClient().newCall(request).enqueue((HttpCallback) response -> ImageUtility.getImageMessage(event, response).queue());
}
use of com.sx4.bot.http.HttpCallback in project Sx4 by sx4-discord-bot.
the class InvertCommand method onCommand.
public void onCommand(Sx4CommandEvent event, @Argument(value = "image url", endless = true, acceptEmpty = true) @ImageUrl String imageUrl) {
Request request = new ImageRequest(event.getConfig().getImageWebserverUrl("invert")).addQuery("image", imageUrl).build(event.getConfig().getImageWebserver());
event.getHttpClient().newCall(request).enqueue((HttpCallback) response -> ImageUtility.getImageMessage(event, response).queue());
}
use of com.sx4.bot.http.HttpCallback in project Sx4 by sx4-discord-bot.
the class MostCommonColourCommand method onCommand.
public void onCommand(Sx4CommandEvent event, @Argument(value = "image url", acceptEmpty = true, endless = true) @ImageUrl String imageUrl) {
Request request = new ImageRequest(event.getConfig().getImageWebserverUrl("common-colour")).addQuery("image", imageUrl).build(event.getConfig().getImageWebserver());
event.getHttpClient().newCall(request).enqueue((HttpCallback) response -> {
if (!response.isSuccessful()) {
ImageUtility.getErrorMessage(event.getTextChannel(), response.code(), response.body().string()).queue();
return;
}
Document data = Document.parse(response.body().string());
Document common = data.getList("colours", Document.class).get(0);
int colour = common.getInteger("colour");
EmbedBuilder embed = new EmbedBuilder().setTitle("Most Common Colour").setThumbnail(imageUrl).setColor(ImageUtility.getEmbedColour(colour)).addField("Colour", String.format("Hex: #%s\nRGB: %s", ColourUtility.toHexString(colour), ColourUtility.toRGBString(colour)), true).addField("Pixels", String.format("Amount: %,d", common.getInteger("pixels")), true);
event.reply(embed.build()).queue();
});
}
use of com.sx4.bot.http.HttpCallback in project Sx4 by sx4-discord-bot.
the class YouTubeNotificationCommand method preview.
@Command(value = "preview", description = "Previews your YouTube notification message")
@CommandId(465)
@Examples({ "youtube notification preview 5e45ce6d3688b30ee75201ae" })
public void preview(Sx4CommandEvent event, @Argument(value = "id") ObjectId id) {
Document data = event.getMongo().getYouTubeNotification(Filters.and(Filters.eq("_id", id), Filters.eq("guildId", event.getGuild().getIdLong())), Projections.include("uploaderId", "message"));
if (data == null) {
event.replyFailure("I could not find that notification").queue();
return;
}
String channelId = data.getString("uploaderId");
Request request = new Request.Builder().url("https://www.youtube.com/feeds/videos.xml?channel_id=" + channelId).build();
event.getHttpClient().newCall(request).enqueue((HttpCallback) response -> {
if (response.code() == 404) {
event.replyFailure("The YouTube channel for this notification no longer exists").queue();
return;
}
JSONObject channel = XML.toJSONObject(response.body().string());
JSONObject feed = channel.getJSONObject("feed");
JSONArray entries = feed.optJSONArray("entry");
YouTubeVideo video;
if (entries == null || entries.isEmpty()) {
OffsetDateTime now = OffsetDateTime.now(ZoneOffset.UTC);
video = new YouTubeVideo("dQw4w9WgXcQ", "This channel had no uploads", now, now);
} else {
JSONObject entry = entries.getJSONObject(0);
video = new YouTubeVideo(entry.getString("yt:videoId"), entry.getString("title"), entry.getString("updated"), entry.getString("published"));
}
String channelName = feed.getString("title");
Document message = new JsonFormatter(data.get("message", YouTubeManager.DEFAULT_MESSAGE)).addVariable("video", video).addVariable("channel", new YouTubeChannel(channelId, channelName)).parse();
try {
MessageUtility.fromWebhookMessage(event.getTextChannel(), MessageUtility.fromJson(message).build()).queue();
} catch (IllegalArgumentException e) {
event.replyFailure(e.getMessage()).queue();
}
});
}
Aggregations