Compare commits
3 Commits
1e4fb03226
...
eebc73ac0c
Author | SHA1 | Date |
---|---|---|
Anya | eebc73ac0c | |
Anya | e291c7d2d8 | |
Anya | b8e0b9a1c8 |
2
pom.xml
2
pom.xml
|
@ -7,7 +7,7 @@
|
||||||
<groupId>moe.oko</groupId>
|
<groupId>moe.oko</groupId>
|
||||||
<artifactId>Kiafumi</artifactId>
|
<artifactId>Kiafumi</artifactId>
|
||||||
<name>Kiafumi</name>
|
<name>Kiafumi</name>
|
||||||
<version>0.5</version>
|
<version>0.6.0-pre</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<url>https://oko.moe/kiafumi.htm</url>
|
<url>https://oko.moe/kiafumi.htm</url>
|
||||||
|
|
||||||
|
|
12
readme.md
12
readme.md
|
@ -1,13 +1,23 @@
|
||||||
# Kiafumi
|
# Kiafumi
|
||||||
|
|
||||||
A kitchen-sink discord bot designed to replace [Skyra](https://skyra.pw) v7 for use in the [HC](https://discord.gg/utgAEV2) network.
|
A kitchen-sink discord bot designed to replace [Skyra](https://skyra.pw) v7 for use in the [HC](https://discord.gg/utgAEV2) network.
|
||||||
|
|
||||||
It's written in [JDA](https://github.com/DV8FromTheWorld/JDA) and is intended to be resource conscious where possible.
|
It's written in Java, using [JDA](https://github.com/DV8FromTheWorld/JDA). User feedback is greatly encouraged!
|
||||||
|
|
||||||
### Credits & Thanks
|
### Credits & Thanks
|
||||||
|
|
||||||
+ [oko](https://oko.moe) (Development + Moral Support)
|
+ [oko](https://oko.moe) (Development + Moral Support)
|
||||||
+ [Tiddy](https://tiddy.oko.moe) (Development + Being an Angel)
|
+ [Tiddy](https://tiddy.oko.moe) (Development + Being an Angel)
|
||||||
+ [Laika](http://alpinia.link) (Development + Java Shenanigans)
|
+ [Laika](http://alpinia.link) (Development + Java Shenanigans)
|
||||||
+ [Favna](https://favware.tech), for maintaining [Ribbon](https://github.com/favna/ribbon) from 2017-2019, & Skyra to this day!
|
+ [Favna](https://favware.tech), for maintaining [Ribbon](https://github.com/favna/ribbon) from 2017-2019, & Skyra to this day!
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
1. Download from the [Releases](https://fem.mint.lgbt/oko/kiafumi/releases), or compile with `mvn clean package`.
|
||||||
|
2. Run `Kiafumi-x.x.jar` in an empty directory.
|
||||||
|
3. Create a new MariaDB(**Not** MySQL) database.
|
||||||
|
4. Open and configure the generated `config.yml`.
|
||||||
|
5. Run `Kiafumi-x.x.jar` again.
|
||||||
|
|
||||||
### License
|
### License
|
||||||
Copyright © 2022 oko, under the [ISC License](./LICENSE)
|
Copyright © 2022 oko, under the [ISC License](./LICENSE)
|
|
@ -5,6 +5,7 @@ import moe.oko.Kiafumi.listener.MainListener;
|
||||||
import moe.oko.Kiafumi.model.KiafumiDB;
|
import moe.oko.Kiafumi.model.KiafumiDB;
|
||||||
import moe.oko.Kiafumi.model.ServerManager;
|
import moe.oko.Kiafumi.model.ServerManager;
|
||||||
import moe.oko.Kiafumi.util.CommandInfo;
|
import moe.oko.Kiafumi.util.CommandInfo;
|
||||||
|
import moe.oko.Kiafumi.util.EmbedUI;
|
||||||
import net.dv8tion.jda.api.EmbedBuilder;
|
import net.dv8tion.jda.api.EmbedBuilder;
|
||||||
import net.dv8tion.jda.api.JDA;
|
import net.dv8tion.jda.api.JDA;
|
||||||
import net.dv8tion.jda.api.JDABuilder;
|
import net.dv8tion.jda.api.JDABuilder;
|
||||||
|
@ -20,7 +21,6 @@ import org.simpleyaml.configuration.file.YamlConfiguration;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.awt.Color;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
@ -173,11 +173,11 @@ public class Kiafumi {
|
||||||
info("Loaded " + activeCommands.size() + " commands.");
|
info("Loaded " + activeCommands.size() + " commands.");
|
||||||
|
|
||||||
EmbedBuilder eb = new EmbedBuilder()
|
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")
|
.setFooter("Created by Oko, Laika, and Tiddy")
|
||||||
.setColor(new Color(0x6271c1))
|
.setTimestamp(ZonedDateTime.now());
|
||||||
.setTimestamp(ZonedDateTime.now())
|
|
||||||
.setAuthor("Kiafumi!", null, Kiafumi.JDA.getSelfUser().getAvatarUrl());
|
|
||||||
JDA.getTextChannelById(config.getLogChannel()).sendMessageEmbeds(eb.build()).queue();
|
JDA.getTextChannelById(config.getLogChannel()).sendMessageEmbeds(eb.build()).queue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package moe.oko.Kiafumi.command;
|
package moe.oko.Kiafumi.command;
|
||||||
|
|
||||||
import moe.oko.Kiafumi.util.CommandInfo;
|
import moe.oko.Kiafumi.util.CommandInfo;
|
||||||
|
import moe.oko.Kiafumi.util.EmbedUI;
|
||||||
import net.dv8tion.jda.api.EmbedBuilder;
|
import net.dv8tion.jda.api.EmbedBuilder;
|
||||||
import net.dv8tion.jda.api.entities.User;
|
import net.dv8tion.jda.api.entities.User;
|
||||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
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.OptionMapping;
|
||||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||||
|
|
||||||
import java.awt.*;
|
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
// TODO: Make this actually a Dreidel, and use this code for a fight command.
|
||||||
public class DreidelCommand extends CommandClass {
|
public class DreidelCommand extends CommandClass {
|
||||||
private boolean enabled = true;
|
private boolean enabled = false;
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnabled() {
|
public boolean isEnabled() {
|
||||||
return enabled;
|
return enabled;
|
||||||
|
@ -34,31 +35,30 @@ public class DreidelCommand extends CommandClass {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void newCommand(String name, SlashCommandInteractionEvent e) {
|
public void newCommand(String name, SlashCommandInteractionEvent e) {
|
||||||
switch (name) {
|
if ("dreidel".equals(name)) {
|
||||||
case "dreidel":
|
e.deferReply().queue();
|
||||||
e.deferReply().queue();
|
List<User> usersForRng = new ArrayList<>();
|
||||||
List<User> usersForRng = new ArrayList<>();
|
for (OptionMapping option : e.getOptions()) {
|
||||||
for(OptionMapping option : e.getOptions()) {
|
usersForRng.add(option.getAsUser());
|
||||||
usersForRng.add(option.getAsUser());
|
}
|
||||||
}
|
//Done, now roll
|
||||||
//Done, now roll
|
EmbedBuilder eb = new EmbedBuilder()
|
||||||
EmbedBuilder eb = new EmbedBuilder()
|
.setColor(EmbedUI.INFO)
|
||||||
.setColor(Color.PINK)
|
.setTitle("Rolling...")
|
||||||
.setTitle("Rolling...")
|
.setDescription("*VROOOOOOOOOOOOOOOOM*")
|
||||||
.setDescription("*VROOOOOOOOOOOOOOOOM*")
|
.setFooter(EmbedUI.BRAND)
|
||||||
.setFooter("Kiafumi - Maintained by oko.moe")
|
.setTimestamp(ZonedDateTime.now());
|
||||||
.setTimestamp(ZonedDateTime.now());
|
e.getHook().sendMessageEmbeds(eb.build()).queue();
|
||||||
e.getHook().sendMessageEmbeds(eb.build()).queue();
|
Random rng = new Random();
|
||||||
Random rng = new Random();
|
User pickedUser = usersForRng.get(rng.nextInt(usersForRng.size()));
|
||||||
User pickedUser = usersForRng.get(rng.nextInt(usersForRng.size()));
|
EmbedBuilder eb1 = new EmbedBuilder()
|
||||||
EmbedBuilder eb1 = new EmbedBuilder()
|
.setColor(EmbedUI.INFO)
|
||||||
.setColor(Color.PINK)
|
.setTitle("The dreidel has spoken...")
|
||||||
.setFooter("Kiafumi - Maintained by oko.moe")
|
.setDescription(pickedUser.getName() + " is the lucky winner!")
|
||||||
.setTimestamp(ZonedDateTime.now())
|
.setThumbnail(pickedUser.getAvatarUrl())
|
||||||
.setTitle("The dreidel has spoken...")
|
.setFooter(EmbedUI.BRAND) // TODO: Make this show the list of participants
|
||||||
.setThumbnail(pickedUser.getAvatarUrl())
|
.setTimestamp(ZonedDateTime.now());
|
||||||
.setDescription(pickedUser.getName() + " is the lucky winner!");
|
e.getHook().editOriginalEmbeds(eb1.build()).completeAfter(3, TimeUnit.SECONDS);
|
||||||
e.getHook().editOriginalEmbeds(eb1.build()).completeAfter(5, TimeUnit.SECONDS);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package moe.oko.Kiafumi.command;
|
package moe.oko.Kiafumi.command;
|
||||||
|
|
||||||
import moe.oko.Kiafumi.util.CommandInfo;
|
import moe.oko.Kiafumi.util.CommandInfo;
|
||||||
|
import moe.oko.Kiafumi.util.EmbedUI;
|
||||||
import net.dv8tion.jda.api.EmbedBuilder;
|
import net.dv8tion.jda.api.EmbedBuilder;
|
||||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
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.WebSearch;
|
||||||
import org.bitnick.net.duckduckgo.entity.SearchResult;
|
import org.bitnick.net.duckduckgo.entity.SearchResult;
|
||||||
|
|
||||||
import java.awt.Color;
|
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -33,32 +33,30 @@ public class DuckCommand extends CommandClass{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void newCommand(String name, SlashCommandInteractionEvent e) {
|
public void newCommand(String name, SlashCommandInteractionEvent e) {
|
||||||
switch (name) {
|
if ("search".equals(name)) {
|
||||||
case "search":
|
e.deferReply().queue();
|
||||||
e.deferReply().queue();
|
String option = e.getOption("query").getAsString();
|
||||||
String option = e.getOption("query").getAsString();
|
WebSearch ws = WebSearch.instanceOf();
|
||||||
WebSearch ws = WebSearch.instanceOf();
|
SearchResult sr;
|
||||||
SearchResult sr;
|
try {
|
||||||
try {
|
sr = ws.instantAnswerSearch(option);
|
||||||
sr = ws.instantAnswerSearch(option);
|
} catch (Exception ex) {
|
||||||
} 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;
|
|
||||||
}
|
|
||||||
EmbedBuilder eb = new EmbedBuilder()
|
EmbedBuilder eb = new EmbedBuilder()
|
||||||
.setColor(Color.PINK)
|
.setColor(EmbedUI.FAILURE)
|
||||||
.setTitle(sr.getTitle(), sr.getUrl().toString())
|
.setTitle("Query Failed")
|
||||||
.setDescription(sr.getDescription())
|
.setDescription("Couldn't find any results.")
|
||||||
.setFooter("Kiafumi - Maintained by oko.moe")
|
.setFooter("Query: " + option)
|
||||||
.setTimestamp(ZonedDateTime.now());
|
.setTimestamp(ZonedDateTime.now());
|
||||||
e.getHook().sendMessageEmbeds(eb.build()).queue();
|
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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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.interaction.command.SlashCommandInteractionEvent;
|
||||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||||
|
|
||||||
import java.awt.*;
|
import moe.oko.Kiafumi.util.EmbedUI;
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -30,17 +30,17 @@ public class InviteCommand extends CommandClass{
|
||||||
@Override
|
@Override
|
||||||
public void newCommand(String name, SlashCommandInteractionEvent e) {
|
public void newCommand(String name, SlashCommandInteractionEvent e) {
|
||||||
if(e.getGuild() == null) { return; }
|
if(e.getGuild() == null) { return; }
|
||||||
switch (name) {
|
if ("invite".equals(name)) {
|
||||||
case "invite":
|
e.deferReply().queue();
|
||||||
e.deferReply().queue();
|
EmbedBuilder eb = new EmbedBuilder()
|
||||||
EmbedBuilder eb = new EmbedBuilder()
|
.setColor(EmbedUI.INFO)
|
||||||
.setColor(Color.PINK)
|
.setAuthor("Kiafumi", "https://oko.moe/kiafumi.htm", Kiafumi.JDA.getSelfUser().getAvatarUrl())
|
||||||
.setFooter("Kiafumi - Maintained by oko.moe")
|
.setTitle("Invite me to your server!", Kiafumi.instance.config.assembleDefaultInvite())
|
||||||
.setTimestamp(ZonedDateTime.now())
|
.setDescription("Alternatively, you can host me yourself!")
|
||||||
.setTitle("Invite me to your server!", Kiafumi.instance.config.assembleDefaultInvite())
|
.appendDescription("https://fem.mint.lgbt/oko/kiafumi")
|
||||||
.setDescription("Have a nice day!!!")
|
.setFooter(EmbedUI.BRAND)
|
||||||
.setAuthor("oko.moe", "https://oko.moe", Kiafumi.JDA.getSelfUser().getAvatarUrl());
|
.setTimestamp(ZonedDateTime.now());
|
||||||
e.getHook().sendMessageEmbeds(eb.build()).queue();
|
e.getHook().sendMessageEmbeds(eb.build()).queue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ public class InviteCommand extends CommandClass{
|
||||||
@Override
|
@Override
|
||||||
public List<CommandInfo> getSlashCommandInfo() {
|
public List<CommandInfo> getSlashCommandInfo() {
|
||||||
List<CommandInfo> cil = new ArrayList<>();
|
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);
|
cil.add(ci);
|
||||||
return cil;
|
return cil;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,13 +2,16 @@ package moe.oko.Kiafumi.command;
|
||||||
|
|
||||||
import moe.oko.Kiafumi.Kiafumi;
|
import moe.oko.Kiafumi.Kiafumi;
|
||||||
import moe.oko.Kiafumi.util.CommandInfo;
|
import moe.oko.Kiafumi.util.CommandInfo;
|
||||||
|
import moe.oko.Kiafumi.util.EmbedUI;
|
||||||
import net.dv8tion.jda.api.EmbedBuilder;
|
import net.dv8tion.jda.api.EmbedBuilder;
|
||||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.time.ZonedDateTime;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
public class PingCommand extends CommandClass{
|
public class PingCommand extends CommandClass{
|
||||||
//Always true, ping cmd is EXISTENTIAL
|
//Always true, ping cmd is EXISTENTIAL
|
||||||
|
@ -25,33 +28,34 @@ public class PingCommand extends CommandClass{
|
||||||
@Override
|
@Override
|
||||||
public void legacyCommand(String[] args, MessageReceivedEvent e, boolean prefix) {
|
public void legacyCommand(String[] args, MessageReceivedEvent e, boolean prefix) {
|
||||||
if(!prefix) { return; }
|
if(!prefix) { return; }
|
||||||
switch(args[0].toLowerCase()) {
|
if ("ping".equals(args[0].toLowerCase())) {
|
||||||
case "ping":
|
long sentMs = e.getMessage().getTimeCreated().toInstant().toEpochMilli();
|
||||||
long sentMs = e.getMessage().getTimeCreated().toInstant().toEpochMilli();
|
long recMs = System.currentTimeMillis();
|
||||||
long recMs = System.currentTimeMillis();
|
long ping = recMs - sentMs;
|
||||||
long ping = sentMs - recMs;
|
EmbedBuilder eb = new EmbedBuilder()
|
||||||
EmbedBuilder eb = new EmbedBuilder().setColor(new Color(0x6271c1))
|
.setColor(EmbedUI.INFO)
|
||||||
.setFooter("ping pong :)").setTitle(getComedy()).setDescription("Pinged " + ping + "ms");
|
.setTitle(getComedy())
|
||||||
e.getChannel().sendMessageEmbeds(eb.build()).queue();
|
.setDescription("Pong! " + ping + "ms")
|
||||||
return;
|
.setFooter(EmbedUI.BRAND)
|
||||||
default:
|
.setTimestamp(ZonedDateTime.now());
|
||||||
//how
|
e.getChannel().sendMessageEmbeds(eb.build()).queue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void newCommand(String name, SlashCommandInteractionEvent e) {
|
public void newCommand(String name, SlashCommandInteractionEvent e) {
|
||||||
switch(name.toLowerCase(Locale.ROOT)) {
|
if ("ping".equals(name.toLowerCase(Locale.ROOT))) {
|
||||||
case "ping":
|
e.deferReply().queue();
|
||||||
e.deferReply().queue();
|
long sentMs = e.getTimeCreated().toInstant().toEpochMilli();
|
||||||
long sentMs = e.getTimeCreated().toInstant().toEpochMilli();
|
long recMs = System.currentTimeMillis();
|
||||||
long recMs = System.currentTimeMillis();
|
long ping = recMs - sentMs;
|
||||||
long ping = sentMs - recMs;
|
EmbedBuilder eb = new EmbedBuilder()
|
||||||
EmbedBuilder eb = new EmbedBuilder().setColor(Color.PINK)
|
.setColor(EmbedUI.INFO)
|
||||||
.setFooter("ping pong :)").setTitle(getComedy()).setDescription("Pinged " + ping + "ms");
|
.setTitle(getComedy())
|
||||||
e.getHook().sendMessageEmbeds(eb.build()).queue();
|
.setDescription("Pong! " + ping + "ms")
|
||||||
return;
|
.setFooter(EmbedUI.BRAND)
|
||||||
default:
|
.setTimestamp(ZonedDateTime.now());
|
||||||
|
e.getHook().sendMessageEmbeds(eb.build()).queue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +72,7 @@ public class PingCommand extends CommandClass{
|
||||||
@Override
|
@Override
|
||||||
public List<CommandInfo> getSlashCommandInfo() {
|
public List<CommandInfo> getSlashCommandInfo() {
|
||||||
List<CommandInfo> si = new ArrayList<>();
|
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);
|
si.add(ci);
|
||||||
return si;
|
return si;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,12 +3,12 @@ package moe.oko.Kiafumi.command;
|
||||||
import moe.oko.Kiafumi.Kiafumi;
|
import moe.oko.Kiafumi.Kiafumi;
|
||||||
import moe.oko.Kiafumi.model.Server;
|
import moe.oko.Kiafumi.model.Server;
|
||||||
import moe.oko.Kiafumi.util.CommandInfo;
|
import moe.oko.Kiafumi.util.CommandInfo;
|
||||||
|
import moe.oko.Kiafumi.util.EmbedUI;
|
||||||
import net.dv8tion.jda.api.EmbedBuilder;
|
import net.dv8tion.jda.api.EmbedBuilder;
|
||||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||||
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
import net.dv8tion.jda.api.interactions.commands.OptionType;
|
||||||
|
|
||||||
import java.awt.Color;
|
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -38,22 +38,22 @@ public class SettingCommand extends CommandClass {
|
||||||
e.deferReply().queue();
|
e.deferReply().queue();
|
||||||
//No options, just fire an embed off...
|
//No options, just fire an embed off...
|
||||||
EmbedBuilder eb = new EmbedBuilder()
|
EmbedBuilder eb = new EmbedBuilder()
|
||||||
.setColor(Color.PINK)
|
.setColor(EmbedUI.INFO)
|
||||||
.setTitle("Server Settings")
|
.setTitle("Kiafumi Settings")
|
||||||
.setFooter("Kiafumi - Maintained by oko.moe")
|
.setDescription(server.getOpts())
|
||||||
.setTimestamp(ZonedDateTime.now())
|
.setFooter(EmbedUI.BRAND)
|
||||||
.setDescription(server.getOpts());
|
.setTimestamp(ZonedDateTime.now());
|
||||||
e.getHook().sendMessageEmbeds(eb.build()).queue();
|
e.getHook().sendMessageEmbeds(eb.build()).queue();
|
||||||
return;
|
return;
|
||||||
case "setting":
|
case "setting":
|
||||||
e.deferReply().queue();
|
e.deferReply().queue();
|
||||||
String opt = e.getOption("setting_name").getAsString();
|
String opt = e.getOption("setting_name").getAsString();
|
||||||
EmbedBuilder eb1 = new EmbedBuilder()
|
EmbedBuilder eb1 = new EmbedBuilder()
|
||||||
.setColor(Color.PINK)
|
.setColor(EmbedUI.INFO)
|
||||||
.setTitle(opt + " Value")
|
.setTitle(opt)
|
||||||
.setFooter("Kiafumi - Maintained by oko.moe")
|
.setDescription("Value: `" + server.getOptionByString(opt) + '`')
|
||||||
.setTimestamp(ZonedDateTime.now())
|
.setFooter(EmbedUI.BRAND)
|
||||||
.setDescription(server.getOptionByString(opt));
|
.setTimestamp(ZonedDateTime.now());
|
||||||
e.getHook().sendMessageEmbeds(eb1.build()).queue();
|
e.getHook().sendMessageEmbeds(eb1.build()).queue();
|
||||||
return;
|
return;
|
||||||
case "setting_set":
|
case "setting_set":
|
||||||
|
@ -62,11 +62,11 @@ public class SettingCommand extends CommandClass {
|
||||||
String opt2 = e.getOption("setting_value").getAsString();
|
String opt2 = e.getOption("setting_value").getAsString();
|
||||||
String response = server.setOptionByString(opt1, opt2);
|
String response = server.setOptionByString(opt1, opt2);
|
||||||
EmbedBuilder eb2 = new EmbedBuilder()
|
EmbedBuilder eb2 = new EmbedBuilder()
|
||||||
.setColor(Color.PINK)
|
.setColor(EmbedUI.SUCCESS)
|
||||||
.setTitle("Setting Modification - " + opt1)
|
.setTitle(opt1)
|
||||||
.setFooter("Kiafumi - Maintained by oko.moe")
|
.setDescription(response)
|
||||||
.setTimestamp(ZonedDateTime.now())
|
.setFooter(EmbedUI.BRAND)
|
||||||
.setDescription(response);
|
.setTimestamp(ZonedDateTime.now());
|
||||||
e.getHook().sendMessageEmbeds(eb2.build()).queue();
|
e.getHook().sendMessageEmbeds(eb2.build()).queue();
|
||||||
return;
|
return;
|
||||||
case "setting_clear":
|
case "setting_clear":
|
||||||
|
@ -74,11 +74,11 @@ public class SettingCommand extends CommandClass {
|
||||||
String opt3 = e.getOption("setting_name").getAsString();
|
String opt3 = e.getOption("setting_name").getAsString();
|
||||||
String response1 = server.resetOptionByString(opt3);
|
String response1 = server.resetOptionByString(opt3);
|
||||||
EmbedBuilder eb3 = new EmbedBuilder()
|
EmbedBuilder eb3 = new EmbedBuilder()
|
||||||
.setColor(Color.PINK)
|
.setColor(EmbedUI.SUCCESS)
|
||||||
.setTitle("Setting Reset - " + opt3)
|
.setTitle(opt3)
|
||||||
.setFooter("Kiafumi - Maintained by oko.moe")
|
.setDescription(response1)
|
||||||
.setTimestamp(ZonedDateTime.now())
|
.setFooter(EmbedUI.BRAND)
|
||||||
.setDescription(response1);
|
.setTimestamp(ZonedDateTime.now());
|
||||||
e.getHook().sendMessageEmbeds(eb3.build()).queue();
|
e.getHook().sendMessageEmbeds(eb3.build()).queue();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package moe.oko.Kiafumi.listener;
|
||||||
|
|
||||||
import moe.oko.Kiafumi.Kiafumi;
|
import moe.oko.Kiafumi.Kiafumi;
|
||||||
import moe.oko.Kiafumi.model.Server;
|
import moe.oko.Kiafumi.model.Server;
|
||||||
|
import moe.oko.Kiafumi.util.EmbedUI;
|
||||||
import net.dv8tion.jda.api.EmbedBuilder;
|
import net.dv8tion.jda.api.EmbedBuilder;
|
||||||
import net.dv8tion.jda.api.entities.Activity;
|
import net.dv8tion.jda.api.entities.Activity;
|
||||||
import net.dv8tion.jda.api.entities.Guild;
|
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 net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.awt.Color;
|
|
||||||
import java.time.OffsetDateTime;
|
import java.time.OffsetDateTime;
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
|
@ -57,12 +57,12 @@ public class MainListener extends ListenerAdapter {
|
||||||
public void onMessageReceived(MessageReceivedEvent event) {
|
public void onMessageReceived(MessageReceivedEvent event) {
|
||||||
if(event.getMessage().getMentionedUsers().contains(Kiafumi.JDA.getSelfUser())) {
|
if(event.getMessage().getMentionedUsers().contains(Kiafumi.JDA.getSelfUser())) {
|
||||||
EmbedBuilder eb = new EmbedBuilder()
|
EmbedBuilder eb = new EmbedBuilder()
|
||||||
.setColor(Color.PINK)
|
.setColor(EmbedUI.INFO)
|
||||||
.setImage(Kiafumi.JDA.getSelfUser().getAvatarUrl())
|
|
||||||
.setTitle("Hi, i'm Kiafumi!")
|
.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())
|
.setTimestamp(ZonedDateTime.now())
|
||||||
.setFooter("Kiafumi - Maintained by oko.moe");
|
.setFooter(EmbedUI.BRAND);
|
||||||
event.getChannel().sendMessageEmbeds(eb.build()).queue();
|
event.getChannel().sendMessageEmbeds(eb.build()).queue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -107,20 +107,23 @@ public class MainListener extends ListenerAdapter {
|
||||||
try {
|
try {
|
||||||
event.getGuild().addRoleToMember(event.getMember(), event.getGuild().getRoleById(server.getJoinRole())).queue();
|
event.getGuild().addRoleToMember(event.getMember(), event.getGuild().getRoleById(server.getJoinRole())).queue();
|
||||||
} catch(Exception ex) {
|
} 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()) {
|
if(server.isWelcomeEnabled()) {
|
||||||
TextChannel textChannel = event.getGuild().getTextChannelById(server.getWelcomeChannel());
|
TextChannel textChannel = event.getGuild().getTextChannelById(server.getWelcomeChannel());
|
||||||
if(textChannel == null) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
//Ok, now we proceed.
|
//Ok, now we proceed.
|
||||||
EmbedBuilder embedBuilder = new EmbedBuilder()
|
EmbedBuilder embedBuilder = new EmbedBuilder()
|
||||||
|
.setColor(EmbedUI.SUCCESS)
|
||||||
.setAuthor(event.getMember().getEffectiveName() + "#" + event.getMember().getUser().getDiscriminator() + " ("
|
.setAuthor(event.getMember().getEffectiveName() + "#" + event.getMember().getUser().getDiscriminator() + " ("
|
||||||
+ event.getMember().getId() + ")", null, event.getMember().getAvatarUrl()).setFooter("User Joined").setTimestamp(OffsetDateTime.now())
|
+ event.getMember().getId() + ")", null, event.getMember().getEffectiveAvatarUrl())
|
||||||
.setDescription(event.getMember().getAsMention() + " | **Joined Discord**: " + event.getMember().getTimeCreated()).setColor(Color.GREEN);
|
.setDescription(event.getMember().getAsMention() + " | **Joined Discord**: " + event.getMember().getTimeCreated())
|
||||||
|
.setFooter("User Joined")
|
||||||
|
.setTimestamp(OffsetDateTime.now());
|
||||||
textChannel.sendMessageEmbeds(embedBuilder.build()).queue();
|
textChannel.sendMessageEmbeds(embedBuilder.build()).queue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -131,15 +134,18 @@ public class MainListener extends ListenerAdapter {
|
||||||
if(server.isWelcomeEnabled()) {
|
if(server.isWelcomeEnabled()) {
|
||||||
TextChannel textChannel = event.getGuild().getTextChannelById(server.getWelcomeChannel());
|
TextChannel textChannel = event.getGuild().getTextChannelById(server.getWelcomeChannel());
|
||||||
if(textChannel == null) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
//Ok, now we proceed.
|
//Ok, now we proceed.
|
||||||
DateTimeFormatter dTF = DateTimeFormatter.ofPattern("dd-MM-yyyy");
|
DateTimeFormatter dTF = DateTimeFormatter.ofPattern("dd-MM-yyyy");
|
||||||
EmbedBuilder embedBuilder = new EmbedBuilder()
|
EmbedBuilder embedBuilder = new EmbedBuilder()
|
||||||
|
.setColor(EmbedUI.FAILURE)
|
||||||
.setAuthor(event.getMember().getEffectiveName() + "#" + event.getMember().getUser().getDiscriminator() + " ("
|
.setAuthor(event.getMember().getEffectiveName() + "#" + event.getMember().getUser().getDiscriminator() + " ("
|
||||||
+ event.getMember().getId() + ")", null, event.getMember().getAvatarUrl()).setFooter("User Left").setTimestamp(OffsetDateTime.now())
|
+ event.getMember().getId() + ")", null, event.getMember().getEffectiveAvatarUrl())
|
||||||
.setDescription(event.getMember().getAsMention() + " | **Joined Server**: " + event.getMember().getTimeJoined().format(dTF)).setColor(Color.RED);
|
.setDescription(event.getMember().getAsMention() + " | **Joined Server**: " + event.getMember().getTimeJoined().format(dTF))
|
||||||
|
.setFooter("User Left")
|
||||||
|
.setTimestamp(OffsetDateTime.now());
|
||||||
textChannel.sendMessageEmbeds(embedBuilder.build()).queue();
|
textChannel.sendMessageEmbeds(embedBuilder.build()).queue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
package moe.oko.Kiafumi.util;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
|
||||||
|
public abstract class EmbedUI {
|
||||||
|
/**
|
||||||
|
* Shorthand reference for common EmbedBuilder colors & strings.
|
||||||
|
* I (oko) chose these colors based on the Pantone Color of the year.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Strings
|
||||||
|
public static final String BRAND = "Kiafumi - oko.moe";
|
||||||
|
|
||||||
|
// Colors
|
||||||
|
public static final Color SUCCESS = new Color(136,176,75);
|
||||||
|
public static final Color FAILURE = new Color(255,111,97);
|
||||||
|
public static final Color INFO = new Color(123,196,196);
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue