Skip to content

Commit 1124614

Browse files
authored
Merge pull request #70 from TheCurle/3.0-mini-cleanup
Mini Cleanup.
2 parents e716dae + 5e63478 commit 1124614

File tree

16 files changed

+393
-151
lines changed

16 files changed

+393
-151
lines changed

src/main/java/com/mcmoddev/mmdbot/modules/commands/CommandModule.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import com.mcmoddev.mmdbot.modules.commands.server.moderation.CmdUser;
4949
import com.mcmoddev.mmdbot.modules.commands.server.quotes.CmdAddQuote;
5050
import com.mcmoddev.mmdbot.modules.commands.server.quotes.CmdGetQuote;
51+
import com.mcmoddev.mmdbot.modules.commands.server.quotes.CmdListQuotes;
5152
import com.mcmoddev.mmdbot.modules.commands.server.quotes.CmdRemoveQuote;
5253
import com.mcmoddev.mmdbot.modules.commands.server.tricks.CmdAddTrick;
5354
import com.mcmoddev.mmdbot.modules.commands.server.tricks.CmdListTricks;
@@ -120,6 +121,7 @@ public static void setupCommandModule() {
120121
.addCommand(new CmdAddQuote())
121122
.addCommand(new CmdGetQuote())
122123
.addCommand(new CmdRemoveQuote())
124+
.addCommand(new CmdListQuotes())
123125
.setHelpWord("help")
124126
.build();
125127

@@ -128,6 +130,7 @@ public static void setupCommandModule() {
128130
MMDBot.getInstance().addEventListener(CmdMappings.ButtonListener.INSTANCE);
129131
MMDBot.getInstance().addEventListener(CmdTranslateMappings.ButtonListener.INSTANCE);
130132
MMDBot.getInstance().addEventListener(new CmdListTricks.ButtonListener());
133+
MMDBot.getInstance().addEventListener(new CmdListQuotes.ButtonListener());
131134
MMDBot.LOGGER.warn("Command module enabled and loaded.");
132135
} else {
133136
MMDBot.LOGGER.warn("Command module disabled via config, commands will not work at this time!");

src/main/java/com/mcmoddev/mmdbot/modules/commands/bot/info/CmdUptime.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@
2828

2929
import java.awt.Color;
3030
import java.time.Instant;
31-
import java.time.LocalDateTime;
31+
import java.time.OffsetDateTime;
32+
import java.time.ZoneOffset;
33+
import java.time.temporal.ChronoUnit;
3234

3335
/**
3436
* The type Cmd uptime.
@@ -59,9 +61,10 @@ protected void execute(final CommandEvent event) {
5961

6062
embed.setTitle("Time spent online.");
6163
embed.setColor(Color.GREEN);
62-
//TODO Fix utils that handle time to show hours and minuets too.
63-
embed.addField("I've been online for: ", Utils.getTimeDifference(Utils.getLocalTime(
64-
References.STARTUP_TIME), LocalDateTime.now()), false);
64+
embed.addField("I've been online for: ", Utils.getTimeDifference(Utils.getTimeFromUTC(
65+
References.STARTUP_TIME), OffsetDateTime.now(ZoneOffset.UTC),
66+
ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS, ChronoUnit.HOURS, ChronoUnit.HOURS, ChronoUnit.SECONDS)
67+
, false);
6568
embed.setTimestamp(Instant.now());
6669
channel.sendMessageEmbeds(embed.build()).queue();
6770
}

src/main/java/com/mcmoddev/mmdbot/modules/commands/general/info/CmdMe.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
package com.mcmoddev.mmdbot.modules.commands.general.info;
2222

2323
import com.jagrosh.jdautilities.command.CommandEvent;
24-
import com.mcmoddev.mmdbot.utilities.Utils;
2524
import com.mcmoddev.mmdbot.modules.commands.server.moderation.CmdUser;
25+
import com.mcmoddev.mmdbot.utilities.Utils;
2626
import net.dv8tion.jda.api.EmbedBuilder;
2727

2828
/**

src/main/java/com/mcmoddev/mmdbot/modules/commands/general/mappings/CmdMappings.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class CmdMappings(name: String, private val namespace: Namespace, vararg aliases
6767

6868
scope.launch {
6969
val provider = namespace.getProvider(version)
70-
var embeds = query(provider, queryString)
70+
var embeds = query(provider, queryString)
7171
.mapIndexed { idx, it ->
7272
async {
7373
@Suppress("UNCHECKED_CAST")
@@ -131,12 +131,13 @@ class CmdMappings(name: String, private val namespace: Namespace, vararg aliases
131131
}.iterator()
132132

133133
if (!embeds.hasNext()) {
134-
embeds = listOf(async { EmbedBuilder()
135-
.setTitle("$namespace mapping for $version:")
136-
.setDescription("No results found.")
137-
.setFooter("Powered by linkie-core")
138-
.setColor(Color.RED)
139-
.build()
134+
embeds = listOf(async {
135+
EmbedBuilder()
136+
.setTitle("$namespace mapping for $version:")
137+
.setDescription("No results found.")
138+
.setFooter("Powered by linkie-core")
139+
.setColor(Color.RED)
140+
.build()
140141
}).iterator()
141142
}
142143

@@ -176,7 +177,7 @@ class CmdMappings(name: String, private val namespace: Namespace, vararg aliases
176177
var hasPerfectMatch = false
177178
return (
178179
MappingsQuery.queryClasses(context).value.asSequence()
179-
+ MappingsQuery.queryMember(context) { it.members.asSequence() }.value.asSequence()
180+
+ MappingsQuery.queryMember(context) { it.members.asSequence() }.value.asSequence()
180181
)
181182
.sortedBy { it.score }
182183
.also { seq ->

src/main/java/com/mcmoddev/mmdbot/modules/commands/general/mappings/CmdTranslateMappings.kt

Lines changed: 79 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,31 @@ import me.shedaniel.linkie.*
3131
import me.shedaniel.linkie.namespaces.MCPNamespace
3232
import me.shedaniel.linkie.namespaces.MojangNamespace
3333
import me.shedaniel.linkie.namespaces.YarnNamespace
34-
import me.shedaniel.linkie.utils.*
34+
import me.shedaniel.linkie.utils.ResultHolder
35+
import me.shedaniel.linkie.utils.tryToVersion
3536
import net.dv8tion.jda.api.EmbedBuilder
3637
import net.dv8tion.jda.api.entities.MessageEmbed
3738
import net.dv8tion.jda.api.events.interaction.ButtonClickEvent
3839
import net.dv8tion.jda.api.hooks.ListenerAdapter
3940
import net.dv8tion.jda.api.interactions.components.Button
4041
import java.awt.Color
4142
import java.util.*
43+
import kotlin.collections.Iterator
44+
import kotlin.collections.MutableMap
45+
import kotlin.collections.getOrElse
46+
import kotlin.collections.listOf
47+
import kotlin.collections.mutableMapOf
48+
import kotlin.collections.set
4249

4350
/**
4451
* @author Will BL
4552
*/
46-
class CmdTranslateMappings(name: String, private val namespace1: Namespace, private val namespace2: Namespace, vararg aliases: String?) : Command() {
53+
class CmdTranslateMappings(
54+
name: String,
55+
private val namespace1: Namespace,
56+
private val namespace2: Namespace,
57+
vararg aliases: String?
58+
) : Command() {
4759
init {
4860
this.name = name.lowercase(Locale.ROOT)
4961
this.aliases = aliases
@@ -65,7 +77,8 @@ class CmdTranslateMappings(name: String, private val namespace1: Namespace, priv
6577
val query = args[0];
6678
val version = args.getOrElse(1) {
6779
val namespace2Versions = namespace2.getAllVersions().toSet()
68-
namespace1.getAllVersions().filter { version -> namespace2Versions.contains(version) }.maxWithOrNull(nullsFirst(compareBy { it.tryToVersion() }))!!
80+
namespace1.getAllVersions().filter { version -> namespace2Versions.contains(version) }
81+
.maxWithOrNull(nullsFirst(compareBy { it.tryToVersion() }))!!
6982
}
7083

7184
scope.launch {
@@ -79,58 +92,59 @@ class CmdTranslateMappings(name: String, private val namespace1: Namespace, priv
7992
.map { res -> res to translate(res, targetMappings) }
8093
.filter { it.second != null }
8194
.mapIndexed { idx, it ->
82-
val originalResult = it.first
83-
val translation = it.second
84-
85-
@Suppress("UNCHECKED_CAST")
86-
when (translation) {
87-
is Class -> {
88-
val value = originalResult.value as Class
89-
EmbedBuilder()
90-
.setTitle("$originMappingsName -> $targetMappingsName Class mapping for $version:")
91-
.run {
92-
if (value.mappedName != null)
93-
addField("$originMappingsName Name", "`${value.mappedName}`", false)
94-
else this
95-
}
96-
.addField("Intermediary/SRG Name", "`${value.intermediaryName}`", false)
97-
.addField("Obfuscated Name", "`${value.obfName.merged}`", false)
98-
.addField("$targetMappingsName Name", "`${translation.optimumName}`", false)
99-
}
100-
is MappingsMember -> {
101-
val value = originalResult.value as Pair<Class, MappingsMember>
102-
EmbedBuilder()
103-
.setTitle(
104-
"$originMappingsName -> $targetMappingsName ${
105-
when (value.second) {
106-
is Field -> "Field"
107-
is Method -> "Method"
108-
else -> "Member"
109-
}
110-
} mapping for $version:"
111-
)
112-
.addField("$originMappingsName Name", "`${value.second.mappedName}`", false)
113-
.addField(
114-
"Intermediary/SRG Name",
115-
"`${value.second.intermediaryName}`",
116-
false
117-
)
118-
.addField("Obfuscated Name", "`${value.second.obfName.merged}`", false)
119-
.addField("$targetMappingsName Name", "`${translation.optimumName}`", false)
120-
}
121-
else -> {
122-
EmbedBuilder().setDescription("???")
123-
}
124-
}.setFooter("Page ${idx + 1} | Powered by linkie-core").build()
95+
val originalResult = it.first
96+
val translation = it.second
97+
98+
@Suppress("UNCHECKED_CAST")
99+
when (translation) {
100+
is Class -> {
101+
val value = originalResult.value as Class
102+
EmbedBuilder()
103+
.setTitle("$originMappingsName -> $targetMappingsName Class mapping for $version:")
104+
.run {
105+
if (value.mappedName != null)
106+
addField("$originMappingsName Name", "`${value.mappedName}`", false)
107+
else this
108+
}
109+
.addField("Intermediary/SRG Name", "`${value.intermediaryName}`", false)
110+
.addField("Obfuscated Name", "`${value.obfName.merged}`", false)
111+
.addField("$targetMappingsName Name", "`${translation.optimumName}`", false)
112+
}
113+
is MappingsMember -> {
114+
val value = originalResult.value as Pair<Class, MappingsMember>
115+
EmbedBuilder()
116+
.setTitle(
117+
"$originMappingsName -> $targetMappingsName ${
118+
when (value.second) {
119+
is Field -> "Field"
120+
is Method -> "Method"
121+
else -> "Member"
122+
}
123+
} mapping for $version:"
124+
)
125+
.addField("$originMappingsName Name", "`${value.second.mappedName}`", false)
126+
.addField(
127+
"Intermediary/SRG Name",
128+
"`${value.second.intermediaryName}`",
129+
false
130+
)
131+
.addField("Obfuscated Name", "`${value.second.obfName.merged}`", false)
132+
.addField("$targetMappingsName Name", "`${translation.optimumName}`", false)
133+
}
134+
else -> {
135+
EmbedBuilder().setDescription("???")
136+
}
137+
}.setFooter("Page ${idx + 1} | Powered by linkie-core").build()
125138
}.iterator()
126139

127140
if (!embeds.hasNext()) {
128-
embeds = listOf(EmbedBuilder()
129-
.setTitle("$namespace1 -> $namespace2 Class mapping for $version:")
141+
embeds = listOf(
142+
EmbedBuilder()
143+
.setTitle("$namespace1 -> $namespace2 Class mapping for $version:")
130144
.setDescription("No results found.")
131-
.setFooter("Powered by linkie-core")
132-
.setColor(Color.RED)
133-
.build()
145+
.setFooter("Powered by linkie-core")
146+
.setColor(Color.RED)
147+
.build()
134148
).iterator()
135149
}
136150

@@ -170,13 +184,25 @@ class CmdTranslateMappings(name: String, private val namespace1: Namespace, priv
170184
val parent = value.first as Class
171185
val member = value.second as Field
172186

173-
member.obfMergedName?.let { memberName -> parent.obfMergedName?.let { className -> target.getClassByObfName(className)?.getFieldByObfName(memberName) } }
187+
member.obfMergedName?.let { memberName ->
188+
parent.obfMergedName?.let { className ->
189+
target.getClassByObfName(
190+
className
191+
)?.getFieldByObfName(memberName)
192+
}
193+
}
174194
}
175195
value is Pair<*, *> && value.second is Method -> {
176196
val parent = value.first as Class
177197
val member = value.second as Method
178198

179-
member.obfMergedName?.let { memberName -> parent.obfMergedName?.let { className -> target.getClassByObfName(className)?.getMethodByObfName(memberName) } }
199+
member.obfMergedName?.let { memberName ->
200+
parent.obfMergedName?.let { className ->
201+
target.getClassByObfName(
202+
className
203+
)?.getMethodByObfName(memberName)
204+
}
205+
}
180206
}
181207
else -> null
182208
}

src/main/java/com/mcmoddev/mmdbot/modules/commands/server/CmdGuild.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@
2828
import java.awt.Color;
2929
import java.text.SimpleDateFormat;
3030
import java.time.Instant;
31-
import java.time.LocalDateTime;
31+
import java.time.OffsetDateTime;
32+
import java.time.ZoneOffset;
3233
import java.util.Locale;
3334

3435
/**
@@ -74,8 +75,8 @@ protected void execute(final CommandEvent event) {
7475
embed.addField("Role count:", Long.toString(guild.getRoleCache().size()), true);
7576
embed.addField("Date created:", new SimpleDateFormat("yyyy/MM/dd HH:mm",
7677
Locale.ENGLISH).format(dateGuildCreated.toEpochMilli()), true);
77-
embed.addField("Guilds age:", Utils.getTimeDifference(Utils.getLocalTime(dateGuildCreated),
78-
LocalDateTime.now()), true);
78+
embed.addField("Guilds age:", Utils.getTimeDifference(Utils.getTimeFromUTC(dateGuildCreated),
79+
OffsetDateTime.now(ZoneOffset.UTC)), true);
7980
embed.setTimestamp(Instant.now());
8081
channel.sendMessageEmbeds(embed.build()).queue();
8182
}

src/main/java/com/mcmoddev/mmdbot/modules/commands/server/moderation/CmdUser.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
import java.awt.Color;
3030
import java.text.SimpleDateFormat;
3131
import java.time.Instant;
32-
import java.time.LocalDateTime;
32+
import java.time.OffsetDateTime;
33+
import java.time.ZoneOffset;
3334
import java.util.Locale;
3435

3536
/**
@@ -98,8 +99,8 @@ protected EmbedBuilder createMemberEmbed(final Member member) {
9899
final var date = new SimpleDateFormat("yyyy/MM/dd HH:mm", Locale.ENGLISH);
99100
embed.addField("Joined Discord:", date.format(dateJoinedDiscord.toEpochMilli()), true);
100101
embed.addField("Joined MMD:", date.format(dateJoinedMMD.toEpochMilli()), true);
101-
embed.addField("Member for:", Utils.getTimeDifference(Utils.getLocalTime(dateJoinedMMD),
102-
LocalDateTime.now()), true);
102+
embed.addField("Member for:", Utils.getTimeDifference(Utils.getTimeFromUTC(dateJoinedMMD),
103+
OffsetDateTime.now(ZoneOffset.UTC)), true);
103104
embed.setTimestamp(Instant.now());
104105

105106
return embed;

src/main/java/com/mcmoddev/mmdbot/modules/commands/server/quotes/CmdAddQuote.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public CmdAddQuote() {
5454
super();
5555
name = "addquote";
5656
aliases = new String[]{"add-quote", "quoteadd", "quote-add"};
57-
help = "Adds a new Quote to the list.\nAdd a quote like so: !addquote \"I said something funny - author\"!";
57+
help = "Adds a new Quote to the list.\nAdd a quote like so: !addquote \"I said something funny\" - author";
5858
}
5959

6060
@Override
@@ -69,13 +69,13 @@ protected void execute(final CommandEvent event) {
6969
// args = [ "text", <@ID> ]
7070

7171
// Verify that there were any arguments
72-
if (!(args.length > 0)) {
72+
if (!(args.length > 0) || args.length > 2) {
7373
channel.sendMessage("Invalid arguments. See the help for this command.").queue();
7474
return;
7575
}
7676

7777
// Verify that there's a message being quoted.
78-
if (!(args[0].charAt(0) == '\"')) {
78+
if (!(args[0].charAt(0) == '\"') || !(args[0].charAt(args[0].length() - 2) == '\"')) {
7979
channel.sendMessage("Invalid arguments. See the help for this command.").queue();
8080
return;
8181
}

src/main/java/com/mcmoddev/mmdbot/modules/commands/server/quotes/CmdGetQuote.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
* Possible forms:
3737
* !quote
3838
* !quote 111
39+
*
3940
* Can be used by anyone.
4041
*
4142
* TODO: Prepare for more Quote implementations.
@@ -63,6 +64,12 @@ protected void execute(final CommandEvent event) {
6364
final TextChannel channel = event.getTextChannel();
6465
String argsFull = event.getArgs();
6566

67+
// If there are no quotes, exit early.
68+
if (QuoteList.getQuoteSlot() == 0) {
69+
channel.sendMessageEmbeds(QuoteList.getQuoteNotPresent()).queue();
70+
return;
71+
}
72+
6673
// Check whether any parameters given.
6774
if (argsFull.length() > 0) {
6875
// We have something to parse.
@@ -91,17 +98,12 @@ protected void execute(final CommandEvent event) {
9198
}
9299
}
93100

94-
// Get a random quote.
95-
int limit = QuoteList.getQuoteSlot() - 1;
96-
int index = new Random().nextInt(limit);
97-
Quote fetched = QuoteList.getQuote(index);
98-
99-
// Check if the quote exists.
100-
if (fetched == null) {
101-
// Send the standard message
102-
channel.sendMessageEmbeds(QuoteList.getQuoteNotPresent()).queue();
103-
return;
104-
}
101+
Quote fetched = null;
102+
Random rand = new Random();
103+
do {
104+
int index = rand.nextInt(QuoteList.getQuoteSlot());
105+
fetched = QuoteList.getQuote(index);
106+
} while (fetched == null);
105107

106108
// It exists, so get the content and send it.
107109
channel.sendMessageEmbeds(fetched.getQuoteMessage()).queue();

0 commit comments

Comments
 (0)