Added the Embed module V1
This commit is contained in:
parent
be825e7281
commit
526dba12b8
3
SheepstarModules/EmbedV1/.gitignore
vendored
Normal file
3
SheepstarModules/EmbedV1/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
# Project exclude paths
|
||||
/target/
|
||||
.idea
|
2
SheepstarModules/EmbedV1/README.md
Normal file
2
SheepstarModules/EmbedV1/README.md
Normal file
@ -0,0 +1,2 @@
|
||||
# SheepstarModule-Embed
|
||||
The official sheepstar embed module
|
24
SheepstarModules/EmbedV1/pom.xml
Normal file
24
SheepstarModules/EmbedV1/pom.xml
Normal file
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>xyz.sheepstar</groupId>
|
||||
<artifactId>SheepstarModule-Embed</artifactId>
|
||||
<version>pre1.0.0</version>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>xyz.sheepstar</groupId>
|
||||
<artifactId>SheepstarCore</artifactId>
|
||||
<version>beta1.0.2</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -0,0 +1,75 @@
|
||||
package xyz.sheepstar.embed.commands;
|
||||
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||
import xyz.sheepstar.util.bot.builder.message.DefaultEmbedBuilder;
|
||||
import xyz.sheepstar.util.bot.command.Arguments;
|
||||
import xyz.sheepstar.util.bot.command.GuildCommand;
|
||||
import xyz.sheepstar.util.bot.command.GuildEventController;
|
||||
import xyz.sheepstar.util.bot.command.PublicCommandException;
|
||||
import xyz.sheepstar.util.bot.command.annotations.CommandMeta;
|
||||
import xyz.sheepstar.util.bot.permission.PermissionNode;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.Date;
|
||||
|
||||
@CommandMeta(aliases = "embed", subAliases = "custom", permission = PermissionNode.ADMINISTRATOR, description = "Creates a fully customizable embed")
|
||||
public class CustomEmbedCommand extends GuildCommand {
|
||||
|
||||
@Override
|
||||
public void usage() {
|
||||
|
||||
usage("title", "The title of the embed").required(true).add();
|
||||
|
||||
usage("description", "The description of the embed").add();
|
||||
|
||||
usage("author_name", "The name of the author field").add();
|
||||
usage("author_url", "The url of the author field (needs author_name to work)").add();
|
||||
|
||||
usage("footer_text", "The text of the footer field").add();
|
||||
usage("footer_icon", "The icon of the footer field (needs footer_text to work)").add();
|
||||
|
||||
usage("thumbnail_url", "The url of the thumbnail").add();
|
||||
usage("image_url", "The url of the image").add();
|
||||
|
||||
usage(OptionType.BOOLEAN, "enable_timestamp", "Shows a timestamp below the embed").add();
|
||||
|
||||
usage("color", "The color of the embed (hex-code)").add();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(GuildEventController event, Arguments args) throws Exception {
|
||||
DefaultEmbedBuilder builder = new DefaultEmbedBuilder();
|
||||
|
||||
try {
|
||||
builder.setTitle(args.getString("title"));
|
||||
|
||||
if (args.exists("description")) builder.setDescription(args.getString("description").replace("\\n", "\n"));
|
||||
|
||||
if (args.exists("author_name")) builder.setAuthor(args.getString("author_name"));
|
||||
|
||||
if (args.exists("author_name") && args.exists("author_url"))
|
||||
builder.setAuthor(args.getString("author_name"), null, args.getString("author_url"));
|
||||
|
||||
if (args.exists("footer_text")) builder.setFooter(args.getString("footer_text"));
|
||||
|
||||
if (args.exists("footer_text") && args.exists("footer_icon"))
|
||||
builder.setFooter(args.getString("footer_text"), args.getString("footer_icon"));
|
||||
|
||||
if (args.exists("thumbnail_url")) builder.setThumbnail(args.getString("thumbnail_url"));
|
||||
|
||||
if (args.exists("image_url")) builder.setImage(args.getString("image_url"));
|
||||
|
||||
if (args.exists("enable_timestamp") && args.getBoolean("enable_timestamp"))
|
||||
builder.setTimestamp(new Date().toInstant());
|
||||
|
||||
if (args.exists("color")) builder.setColor(Color.decode(args.getString("color")));
|
||||
|
||||
event.getChannel().sendMessage(builder.toMessage()).complete();
|
||||
|
||||
event.success("embed.success");
|
||||
} catch (Exception e) {
|
||||
throw new PublicCommandException("embed.error", e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
package xyz.sheepstar.embed.commands;
|
||||
|
||||
import xyz.sheepstar.util.bot.builder.message.DefaultEmbedBuilder;
|
||||
import xyz.sheepstar.util.bot.command.Arguments;
|
||||
import xyz.sheepstar.util.bot.command.GuildCommand;
|
||||
import xyz.sheepstar.util.bot.command.GuildEventController;
|
||||
import xyz.sheepstar.util.bot.command.annotations.CommandMeta;
|
||||
import xyz.sheepstar.util.bot.permission.PermissionNode;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
import static xyz.sheepstar.util.bot.builder.message.MessageType.*;
|
||||
|
||||
@CommandMeta(aliases = "embed", subAliases = "simple", permission = PermissionNode.ADMINISTRATOR, description = "Creates a simple embed")
|
||||
public class SimpleEmbedCommand extends GuildCommand {
|
||||
|
||||
@Override
|
||||
public void usage() {
|
||||
|
||||
usage("title", "The title of the embed").required(true).add();
|
||||
usage("description", "The description of the embed").required(true).add();
|
||||
|
||||
usage("color", "The color of the embed")
|
||||
.addChoice("blue", getHex(PRIMARY.getColor()))
|
||||
.addChoice("red", getHex(ERROR.getColor()))
|
||||
.addChoice("green", getHex(SUCCESS.getColor()))
|
||||
.addChoice("orange", getHex(WARNING.getColor()))
|
||||
.addChoice("gray", getHex(SECONDARY.getColor()))
|
||||
.addChoice("white", getHex(WHITE.getColor()))
|
||||
.addChoice("black", getHex(BLACK.getColor()))
|
||||
.add();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the hex code of a color
|
||||
* @param color The color you want to translate
|
||||
* @return the color as a hex string
|
||||
*/
|
||||
public String getHex(Color color) {
|
||||
return String.format("#%02x%02x%02x", color.getRed(), color.getGreen(), color.getBlue());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(GuildEventController event, Arguments args) throws Exception {
|
||||
DefaultEmbedBuilder builder = new DefaultEmbedBuilder();
|
||||
|
||||
builder.setTitle(args.getString("title"));
|
||||
builder.setDescription(args.getString("description").replace("\\n", "\n"));
|
||||
|
||||
builder.setColor(args.exists("color") ? Color.decode(args.getString("color")) : PRIMARY.getColor());
|
||||
|
||||
event.getChannel().sendMessage(builder.toMessage()).queue();
|
||||
|
||||
event.success("embed.embed_created");
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package xyz.sheepstar.embed.core;
|
||||
|
||||
import xyz.sheepstar.embed.commands.CustomEmbedCommand;
|
||||
import xyz.sheepstar.embed.commands.SimpleEmbedCommand;
|
||||
import xyz.sheepstar.util.bot.manager.ImportManager;
|
||||
import xyz.sheepstar.util.module.SheepstarModule;
|
||||
|
||||
public class EmbedCore extends SheepstarModule {
|
||||
|
||||
// TODO: Embed channels
|
||||
|
||||
private ImportManager importManager;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
importManager = new ImportManager(getAPI(), "embed");
|
||||
|
||||
importManager.registerCommand(new SimpleEmbedCommand());
|
||||
importManager.registerCommand(new CustomEmbedCommand());
|
||||
}
|
||||
}
|
3
SheepstarModules/EmbedV1/src/main/resources/module.yml
Normal file
3
SheepstarModules/EmbedV1/src/main/resources/module.yml
Normal file
@ -0,0 +1,3 @@
|
||||
main: xyz.sheepstar.embed.core.EmbedCore
|
||||
name: embed
|
||||
author: Mathias Wagner
|
Reference in New Issue
Block a user