0.6.0-pre

This changes all commands to use EmbedUI.
This also changes most commands to give more info about what parameters the user sent.
This commit is contained in:
Anya 2022-03-29 04:52:52 -07:00
parent e291c7d2d8
commit eebc73ac0c
8 changed files with 136 additions and 128 deletions

View file

@ -7,7 +7,7 @@
<groupId>moe.oko</groupId>
<artifactId>Kiafumi</artifactId>
<name>Kiafumi</name>
<version>0.5</version>
<version>0.6.0-pre</version>
<packaging>jar</packaging>
<url>https://oko.moe/kiafumi.htm</url>

View file

@ -5,6 +5,7 @@ import moe.oko.Kiafumi.listener.MainListener;
import moe.oko.Kiafumi.model.KiafumiDB;
import moe.oko.Kiafumi.model.ServerManager;
import moe.oko.Kiafumi.util.CommandInfo;
import moe.oko.Kiafumi.util.EmbedUI;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
@ -20,7 +21,6 @@ import org.simpleyaml.configuration.file.YamlConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.awt.Color;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.InputStream;
@ -173,11 +173,11 @@ public class Kiafumi {
info("Loaded " + activeCommands.size() + " commands.");
EmbedBuilder eb = new EmbedBuilder()
.setTitle("Kiafumi Online")
.setColor(EmbedUI.SUCCESS)
.setAuthor("Kiafumi", null, Kiafumi.JDA.getSelfUser().getAvatarUrl())
.setTitle("Online")
.setFooter("Created by Oko, Laika, and Tiddy")
.setColor(new Color(0x6271c1))
.setTimestamp(ZonedDateTime.now())
.setAuthor("Kiafumi!", null, Kiafumi.JDA.getSelfUser().getAvatarUrl());
.setTimestamp(ZonedDateTime.now());
JDA.getTextChannelById(config.getLogChannel()).sendMessageEmbeds(eb.build()).queue();
}

View file

@ -1,6 +1,7 @@
package moe.oko.Kiafumi.command;
import moe.oko.Kiafumi.util.CommandInfo;
import moe.oko.Kiafumi.util.EmbedUI;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
@ -8,15 +9,15 @@ import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
import net.dv8tion.jda.api.interactions.commands.OptionType;
import java.awt.*;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.TimeUnit;
// TODO: Make this actually a Dreidel, and use this code for a fight command.
public class DreidelCommand extends CommandClass {
private boolean enabled = true;
private boolean enabled = false;
@Override
public boolean isEnabled() {
return enabled;
@ -34,31 +35,30 @@ public class DreidelCommand extends CommandClass {
@Override
public void newCommand(String name, SlashCommandInteractionEvent e) {
switch (name) {
case "dreidel":
e.deferReply().queue();
List<User> usersForRng = new ArrayList<>();
for(OptionMapping option : e.getOptions()) {
usersForRng.add(option.getAsUser());
}
//Done, now roll
EmbedBuilder eb = new EmbedBuilder()
.setColor(Color.PINK)
.setTitle("Rolling...")
.setDescription("*VROOOOOOOOOOOOOOOOM*")
.setFooter("Kiafumi - Maintained by oko.moe")
.setTimestamp(ZonedDateTime.now());
e.getHook().sendMessageEmbeds(eb.build()).queue();
Random rng = new Random();
User pickedUser = usersForRng.get(rng.nextInt(usersForRng.size()));
EmbedBuilder eb1 = new EmbedBuilder()
.setColor(Color.PINK)
.setFooter("Kiafumi - Maintained by oko.moe")
.setTimestamp(ZonedDateTime.now())
.setTitle("The dreidel has spoken...")
.setThumbnail(pickedUser.getAvatarUrl())
.setDescription(pickedUser.getName() + " is the lucky winner!");
e.getHook().editOriginalEmbeds(eb1.build()).completeAfter(5, TimeUnit.SECONDS);
if ("dreidel".equals(name)) {
e.deferReply().queue();
List<User> usersForRng = new ArrayList<>();
for (OptionMapping option : e.getOptions()) {
usersForRng.add(option.getAsUser());
}
//Done, now roll
EmbedBuilder eb = new EmbedBuilder()
.setColor(EmbedUI.INFO)
.setTitle("Rolling...")
.setDescription("*VROOOOOOOOOOOOOOOOM*")
.setFooter(EmbedUI.BRAND)
.setTimestamp(ZonedDateTime.now());
e.getHook().sendMessageEmbeds(eb.build()).queue();
Random rng = new Random();
User pickedUser = usersForRng.get(rng.nextInt(usersForRng.size()));
EmbedBuilder eb1 = new EmbedBuilder()
.setColor(EmbedUI.INFO)
.setTitle("The dreidel has spoken...")
.setDescription(pickedUser.getName() + " is the lucky winner!")
.setThumbnail(pickedUser.getAvatarUrl())
.setFooter(EmbedUI.BRAND) // TODO: Make this show the list of participants
.setTimestamp(ZonedDateTime.now());
e.getHook().editOriginalEmbeds(eb1.build()).completeAfter(3, TimeUnit.SECONDS);
}
}

View file

@ -1,6 +1,7 @@
package moe.oko.Kiafumi.command;
import moe.oko.Kiafumi.util.CommandInfo;
import moe.oko.Kiafumi.util.EmbedUI;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
@ -8,7 +9,6 @@ import net.dv8tion.jda.api.interactions.commands.OptionType;
import org.bitnick.net.duckduckgo.WebSearch;
import org.bitnick.net.duckduckgo.entity.SearchResult;
import java.awt.Color;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.List;
@ -33,32 +33,30 @@ public class DuckCommand extends CommandClass{
@Override
public void newCommand(String name, SlashCommandInteractionEvent e) {
switch (name) {
case "search":
e.deferReply().queue();
String option = e.getOption("query").getAsString();
WebSearch ws = WebSearch.instanceOf();
SearchResult sr;
try {
sr = ws.instantAnswerSearch(option);
} catch (Exception ex) {
EmbedBuilder eb = new EmbedBuilder()
.setColor(Color.RED)
.setTitle("Query Failed")
.setDescription("Couldn't find any results for " + option)
.setFooter("Kiafumi - Maintained by oko.moe")
.setTimestamp(ZonedDateTime.now());
e.getHook().sendMessageEmbeds(eb.build()).queue();
return;
}
if ("search".equals(name)) {
e.deferReply().queue();
String option = e.getOption("query").getAsString();
WebSearch ws = WebSearch.instanceOf();
SearchResult sr;
try {
sr = ws.instantAnswerSearch(option);
} catch (Exception ex) {
EmbedBuilder eb = new EmbedBuilder()
.setColor(Color.PINK)
.setTitle(sr.getTitle(), sr.getUrl().toString())
.setDescription(sr.getDescription())
.setFooter("Kiafumi - Maintained by oko.moe")
.setColor(EmbedUI.FAILURE)
.setTitle("Query Failed")
.setDescription("Couldn't find any results.")
.setFooter("Query: " + option)
.setTimestamp(ZonedDateTime.now());
e.getHook().sendMessageEmbeds(eb.build()).queue();
return; //unnecessary, but there.
return;
}
EmbedBuilder eb = new EmbedBuilder()
.setColor(EmbedUI.INFO)
.setTitle(sr.getTitle(), sr.getUrl().toString())
.setDescription(sr.getDescription())
.setFooter("Query: " + option)
.setTimestamp(ZonedDateTime.now());
e.getHook().sendMessageEmbeds(eb.build()).queue();
}
}

View file

@ -6,7 +6,7 @@ import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import java.awt.*;
import moe.oko.Kiafumi.util.EmbedUI;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.List;
@ -30,17 +30,17 @@ public class InviteCommand extends CommandClass{
@Override
public void newCommand(String name, SlashCommandInteractionEvent e) {
if(e.getGuild() == null) { return; }
switch (name) {
case "invite":
e.deferReply().queue();
EmbedBuilder eb = new EmbedBuilder()
.setColor(Color.PINK)
.setFooter("Kiafumi - Maintained by oko.moe")
.setTimestamp(ZonedDateTime.now())
.setTitle("Invite me to your server!", Kiafumi.instance.config.assembleDefaultInvite())
.setDescription("Have a nice day!!!")
.setAuthor("oko.moe", "https://oko.moe", Kiafumi.JDA.getSelfUser().getAvatarUrl());
e.getHook().sendMessageEmbeds(eb.build()).queue();
if ("invite".equals(name)) {
e.deferReply().queue();
EmbedBuilder eb = new EmbedBuilder()
.setColor(EmbedUI.INFO)
.setAuthor("Kiafumi", "https://oko.moe/kiafumi.htm", Kiafumi.JDA.getSelfUser().getAvatarUrl())
.setTitle("Invite me to your server!", Kiafumi.instance.config.assembleDefaultInvite())
.setDescription("Alternatively, you can host me yourself!")
.appendDescription("https://fem.mint.lgbt/oko/kiafumi")
.setFooter(EmbedUI.BRAND)
.setTimestamp(ZonedDateTime.now());
e.getHook().sendMessageEmbeds(eb.build()).queue();
}
}
@ -52,7 +52,7 @@ public class InviteCommand extends CommandClass{
@Override
public List<CommandInfo> getSlashCommandInfo() {
List<CommandInfo> cil = new ArrayList<>();
CommandInfo ci = new CommandInfo("invite", "provides an invite for kiafumi.");
CommandInfo ci = new CommandInfo("invite", "Returns an invite for Kiafumi.");
cil.add(ci);
return cil;
}

View file

@ -2,13 +2,16 @@ package moe.oko.Kiafumi.command;
import moe.oko.Kiafumi.Kiafumi;
import moe.oko.Kiafumi.util.CommandInfo;
import moe.oko.Kiafumi.util.EmbedUI;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import java.awt.Color;
import java.util.*;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Random;
public class PingCommand extends CommandClass{
//Always true, ping cmd is EXISTENTIAL
@ -25,33 +28,34 @@ public class PingCommand extends CommandClass{
@Override
public void legacyCommand(String[] args, MessageReceivedEvent e, boolean prefix) {
if(!prefix) { return; }
switch(args[0].toLowerCase()) {
case "ping":
long sentMs = e.getMessage().getTimeCreated().toInstant().toEpochMilli();
long recMs = System.currentTimeMillis();
long ping = sentMs - recMs;
EmbedBuilder eb = new EmbedBuilder().setColor(new Color(0x6271c1))
.setFooter("ping pong :)").setTitle(getComedy()).setDescription("Pinged " + ping + "ms");
e.getChannel().sendMessageEmbeds(eb.build()).queue();
return;
default:
//how
if ("ping".equals(args[0].toLowerCase())) {
long sentMs = e.getMessage().getTimeCreated().toInstant().toEpochMilli();
long recMs = System.currentTimeMillis();
long ping = recMs - sentMs;
EmbedBuilder eb = new EmbedBuilder()
.setColor(EmbedUI.INFO)
.setTitle(getComedy())
.setDescription("Pong! " + ping + "ms")
.setFooter(EmbedUI.BRAND)
.setTimestamp(ZonedDateTime.now());
e.getChannel().sendMessageEmbeds(eb.build()).queue();
}
}
@Override
public void newCommand(String name, SlashCommandInteractionEvent e) {
switch(name.toLowerCase(Locale.ROOT)) {
case "ping":
e.deferReply().queue();
long sentMs = e.getTimeCreated().toInstant().toEpochMilli();
long recMs = System.currentTimeMillis();
long ping = sentMs - recMs;
EmbedBuilder eb = new EmbedBuilder().setColor(Color.PINK)
.setFooter("ping pong :)").setTitle(getComedy()).setDescription("Pinged " + ping + "ms");
e.getHook().sendMessageEmbeds(eb.build()).queue();
return;
default:
if ("ping".equals(name.toLowerCase(Locale.ROOT))) {
e.deferReply().queue();
long sentMs = e.getTimeCreated().toInstant().toEpochMilli();
long recMs = System.currentTimeMillis();
long ping = recMs - sentMs;
EmbedBuilder eb = new EmbedBuilder()
.setColor(EmbedUI.INFO)
.setTitle(getComedy())
.setDescription("Pong! " + ping + "ms")
.setFooter(EmbedUI.BRAND)
.setTimestamp(ZonedDateTime.now());
e.getHook().sendMessageEmbeds(eb.build()).queue();
}
}
@ -68,7 +72,7 @@ public class PingCommand extends CommandClass{
@Override
public List<CommandInfo> getSlashCommandInfo() {
List<CommandInfo> si = new ArrayList<>();
CommandInfo ci = new CommandInfo("ping", "pings the server with a comedic message :)");
CommandInfo ci = new CommandInfo("ping", "Returns bot latency with a twist!");
si.add(ci);
return si;
}

View file

@ -3,12 +3,12 @@ package moe.oko.Kiafumi.command;
import moe.oko.Kiafumi.Kiafumi;
import moe.oko.Kiafumi.model.Server;
import moe.oko.Kiafumi.util.CommandInfo;
import moe.oko.Kiafumi.util.EmbedUI;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.interactions.commands.OptionType;
import java.awt.Color;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.List;
@ -38,22 +38,22 @@ public class SettingCommand extends CommandClass {
e.deferReply().queue();
//No options, just fire an embed off...
EmbedBuilder eb = new EmbedBuilder()
.setColor(Color.PINK)
.setTitle("Server Settings")
.setFooter("Kiafumi - Maintained by oko.moe")
.setTimestamp(ZonedDateTime.now())
.setDescription(server.getOpts());
.setColor(EmbedUI.INFO)
.setTitle("Kiafumi Settings")
.setDescription(server.getOpts())
.setFooter(EmbedUI.BRAND)
.setTimestamp(ZonedDateTime.now());
e.getHook().sendMessageEmbeds(eb.build()).queue();
return;
case "setting":
e.deferReply().queue();
String opt = e.getOption("setting_name").getAsString();
EmbedBuilder eb1 = new EmbedBuilder()
.setColor(Color.PINK)
.setTitle(opt + " Value")
.setFooter("Kiafumi - Maintained by oko.moe")
.setTimestamp(ZonedDateTime.now())
.setDescription(server.getOptionByString(opt));
.setColor(EmbedUI.INFO)
.setTitle(opt)
.setDescription("Value: `" + server.getOptionByString(opt) + '`')
.setFooter(EmbedUI.BRAND)
.setTimestamp(ZonedDateTime.now());
e.getHook().sendMessageEmbeds(eb1.build()).queue();
return;
case "setting_set":
@ -62,11 +62,11 @@ public class SettingCommand extends CommandClass {
String opt2 = e.getOption("setting_value").getAsString();
String response = server.setOptionByString(opt1, opt2);
EmbedBuilder eb2 = new EmbedBuilder()
.setColor(Color.PINK)
.setTitle("Setting Modification - " + opt1)
.setFooter("Kiafumi - Maintained by oko.moe")
.setTimestamp(ZonedDateTime.now())
.setDescription(response);
.setColor(EmbedUI.SUCCESS)
.setTitle(opt1)
.setDescription(response)
.setFooter(EmbedUI.BRAND)
.setTimestamp(ZonedDateTime.now());
e.getHook().sendMessageEmbeds(eb2.build()).queue();
return;
case "setting_clear":
@ -74,11 +74,11 @@ public class SettingCommand extends CommandClass {
String opt3 = e.getOption("setting_name").getAsString();
String response1 = server.resetOptionByString(opt3);
EmbedBuilder eb3 = new EmbedBuilder()
.setColor(Color.PINK)
.setTitle("Setting Reset - " + opt3)
.setFooter("Kiafumi - Maintained by oko.moe")
.setTimestamp(ZonedDateTime.now())
.setDescription(response1);
.setColor(EmbedUI.SUCCESS)
.setTitle(opt3)
.setDescription(response1)
.setFooter(EmbedUI.BRAND)
.setTimestamp(ZonedDateTime.now());
e.getHook().sendMessageEmbeds(eb3.build()).queue();
return;
}

View file

@ -2,6 +2,7 @@ package moe.oko.Kiafumi.listener;
import moe.oko.Kiafumi.Kiafumi;
import moe.oko.Kiafumi.model.Server;
import moe.oko.Kiafumi.util.EmbedUI;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.entities.Activity;
import net.dv8tion.jda.api.entities.Guild;
@ -15,7 +16,6 @@ import net.dv8tion.jda.api.events.user.update.GenericUserPresenceEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import org.jetbrains.annotations.NotNull;
import java.awt.Color;
import java.time.OffsetDateTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
@ -57,12 +57,12 @@ public class MainListener extends ListenerAdapter {
public void onMessageReceived(MessageReceivedEvent event) {
if(event.getMessage().getMentionedUsers().contains(Kiafumi.JDA.getSelfUser())) {
EmbedBuilder eb = new EmbedBuilder()
.setColor(Color.PINK)
.setImage(Kiafumi.JDA.getSelfUser().getAvatarUrl())
.setColor(EmbedUI.INFO)
.setTitle("Hi, i'm Kiafumi!")
.setDescription("I was born on October 6th 2017! My goal is to explore the metaverse and help people in it!")
.setDescription("I was summoned on October 6th 2017! My goal is to explore the metaverse and help people in it!")
.setImage(Kiafumi.JDA.getSelfUser().getAvatarUrl())
.setTimestamp(ZonedDateTime.now())
.setFooter("Kiafumi - Maintained by oko.moe");
.setFooter(EmbedUI.BRAND);
event.getChannel().sendMessageEmbeds(eb.build()).queue();
}
}
@ -107,20 +107,23 @@ public class MainListener extends ListenerAdapter {
try {
event.getGuild().addRoleToMember(event.getMember(), event.getGuild().getRoleById(server.getJoinRole())).queue();
} catch(Exception ex) {
event.getGuild().getTextChannels().get(0).sendMessage("**Failed to apply welcome role to " + event.getMember().getEffectiveName() + ", role did not exist.**").queue();
event.getGuild().getTextChannels().get(0).sendMessage("**Failed to apply welcome role to " + event.getMember().getEffectiveName() + ", as the role does not exist.**").queue();
}
}
if(server.isWelcomeEnabled()) {
TextChannel textChannel = event.getGuild().getTextChannelById(server.getWelcomeChannel());
if(textChannel == null) {
event.getGuild().getTextChannels().get(0).sendMessage("**Failed to send welcome message, welcome channel doesn't exist.**").queue();
event.getGuild().getTextChannels().get(0).sendMessage("**Failed to send welcome message, as the welcome channel does not exist.**").queue();
return;
}
//Ok, now we proceed.
EmbedBuilder embedBuilder = new EmbedBuilder()
.setColor(EmbedUI.SUCCESS)
.setAuthor(event.getMember().getEffectiveName() + "#" + event.getMember().getUser().getDiscriminator() + " ("
+ event.getMember().getId() + ")", null, event.getMember().getAvatarUrl()).setFooter("User Joined").setTimestamp(OffsetDateTime.now())
.setDescription(event.getMember().getAsMention() + " | **Joined Discord**: " + event.getMember().getTimeCreated()).setColor(Color.GREEN);
+ event.getMember().getId() + ")", null, event.getMember().getEffectiveAvatarUrl())
.setDescription(event.getMember().getAsMention() + " | **Joined Discord**: " + event.getMember().getTimeCreated())
.setFooter("User Joined")
.setTimestamp(OffsetDateTime.now());
textChannel.sendMessageEmbeds(embedBuilder.build()).queue();
}
}
@ -131,15 +134,18 @@ public class MainListener extends ListenerAdapter {
if(server.isWelcomeEnabled()) {
TextChannel textChannel = event.getGuild().getTextChannelById(server.getWelcomeChannel());
if(textChannel == null) {
event.getGuild().getTextChannels().get(0).sendMessage("**Failed to send leave message, welcome channel doesn't exist.**").queue();
event.getGuild().getTextChannels().get(0).sendMessage("**Failed to send leave message, as the welcome channel does not exist.**").queue();
return;
}
//Ok, now we proceed.
DateTimeFormatter dTF = DateTimeFormatter.ofPattern("dd-MM-yyyy");
EmbedBuilder embedBuilder = new EmbedBuilder()
.setColor(EmbedUI.FAILURE)
.setAuthor(event.getMember().getEffectiveName() + "#" + event.getMember().getUser().getDiscriminator() + " ("
+ event.getMember().getId() + ")", null, event.getMember().getAvatarUrl()).setFooter("User Left").setTimestamp(OffsetDateTime.now())
.setDescription(event.getMember().getAsMention() + " | **Joined Server**: " + event.getMember().getTimeJoined().format(dTF)).setColor(Color.RED);
+ event.getMember().getId() + ")", null, event.getMember().getEffectiveAvatarUrl())
.setDescription(event.getMember().getAsMention() + " | **Joined Server**: " + event.getMember().getTimeJoined().format(dTF))
.setFooter("User Left")
.setTimestamp(OffsetDateTime.now());
textChannel.sendMessageEmbeds(embedBuilder.build()).queue();
}
}