diff --git a/build.gradle.kts b/build.gradle.kts index 00e0104..4b5ed07 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -34,12 +34,12 @@ version = System.getenv("CI_COMMIT_TAG")?.let { "$it-${System.getenv("CI_COMMIT_ ?: System.getenv("CI_COMMIT_SHORT_SHA")?.let { "$it-dev" } ?: "2.6.7" -val kordver = "1.7.1-SNAPSHOT" +val kordver = "1.5.9-SNAPSHOT" val coroutinesver = "1.7.3" -val ktorver = "2.3.7" -val exposedver = "0.45.0" -val postgresver = "42.7.1" -val krontabver = "2.2.4" +val ktorver = "2.3.5" +val exposedver = "0.43.0" +val postgresver = "42.6.0" +val krontabver = "2.2.1" val mavenArtifact = "lilJudd" project.base.archivesName.set(mavenArtifact) @@ -105,8 +105,8 @@ dependencies { //Krontab shadow("dev.inmo:krontab:$krontabver") - shadow("io.ktor:ktor-client-core-jvm:$ktorver") - shadow("io.ktor:ktor-client-cio-jvm:$ktorver") + shadow("io.ktor:ktor-client-core-jvm:2.3.5") + shadow("io.ktor:ktor-client-cio-jvm:2.3.5") } diff --git a/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/AcceptEditButton.kt b/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/AcceptEditButton.kt index ffb7759..4e04fa1 100644 --- a/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/AcceptEditButton.kt +++ b/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/AcceptEditButton.kt @@ -25,8 +25,7 @@ import dev.kord.core.entity.Guild import dev.kord.core.entity.User import dev.kord.core.entity.channel.MessageChannel import dev.kord.core.entity.interaction.ButtonInteraction -import dev.kord.rest.builder.message.EmbedBuilder -import dev.kord.rest.builder.message.embed +import dev.kord.rest.builder.message.modify.embed import net.moonleay.lilJudd.Bot import net.moonleay.lilJudd.buttons.component.IEditButton import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository @@ -90,13 +89,13 @@ class AcceptEditButton() : IEditButton { if (shouldEditButton) { // update the message Bot.bot.kordRef.getChannelOf(interaction.channelId)!!.getMessage(m.id).edit { - this.embed(fun EmbedBuilder.() { - color = eb.color - title = eb.title - description = eb.description - fields = eb.fields - footer = eb.footer - }) + this.embed { + this.color = eb.color + this.title = eb.title + this.description = eb.description + this.fields = eb.fields + this.footer = eb.footer + } } } } diff --git a/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/CancelEditButton.kt b/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/CancelEditButton.kt index 12eaea1..348446c 100644 --- a/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/CancelEditButton.kt +++ b/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/CancelEditButton.kt @@ -25,8 +25,7 @@ import dev.kord.core.entity.Guild import dev.kord.core.entity.User import dev.kord.core.entity.channel.MessageChannel import dev.kord.core.entity.interaction.ButtonInteraction -import dev.kord.rest.builder.message.EmbedBuilder -import dev.kord.rest.builder.message.embed +import dev.kord.rest.builder.message.modify.embed import net.moonleay.lilJudd.Bot import net.moonleay.lilJudd.buttons.component.IEditButton import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository @@ -63,14 +62,14 @@ class CancelEditButton : IEditButton { member.removeRole(role.id) } Bot.bot.kordRef.getChannelOf(interaction.channelId)!!.getMessage(m.id).edit { - this.embed(fun EmbedBuilder.() { + this.embed { val temp = EmbedUtil.replaceXWithYinValuesAtTable(user.id.value.toString(), "", m.embeds[0], 1) - color = temp.color - title = temp.title - description = temp.description - fields = temp.fields - footer = temp.footer - }) + this.color = temp.color + this.title = temp.title + this.description = temp.description + this.fields = temp.fields + this.footer = temp.footer + } } } } diff --git a/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/DeclineEditButton.kt b/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/DeclineEditButton.kt index 12c8375..93f6b36 100644 --- a/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/DeclineEditButton.kt +++ b/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/DeclineEditButton.kt @@ -25,8 +25,7 @@ import dev.kord.core.entity.Guild import dev.kord.core.entity.User import dev.kord.core.entity.channel.MessageChannel import dev.kord.core.entity.interaction.ButtonInteraction -import dev.kord.rest.builder.message.EmbedBuilder -import dev.kord.rest.builder.message.embed +import dev.kord.rest.builder.message.modify.embed import net.moonleay.lilJudd.Bot import net.moonleay.lilJudd.buttons.component.IEditButton import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository @@ -90,13 +89,13 @@ class DeclineEditButton : IEditButton { if (shouldEditButton) { // update the message Bot.bot.kordRef.getChannelOf(interaction.channelId)!!.getMessage(m.id).edit { - this.embed(fun EmbedBuilder.() { - color = eb.color - title = eb.title - description = eb.description - fields = eb.fields - footer = eb.footer - }) + this.embed { + this.color = eb.color + this.title = eb.title + this.description = eb.description + this.fields = eb.fields + this.footer = eb.footer + } } } } diff --git a/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/IsAvailableEditButton.kt b/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/IsAvailableEditButton.kt index ccc67fd..9dbae16 100644 --- a/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/IsAvailableEditButton.kt +++ b/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/IsAvailableEditButton.kt @@ -24,7 +24,7 @@ import dev.kord.core.entity.Guild import dev.kord.core.entity.User import dev.kord.core.entity.channel.MessageChannel import dev.kord.core.entity.interaction.ButtonInteraction -import dev.kord.rest.builder.message.embed +import dev.kord.rest.builder.message.modify.embed import net.moonleay.lilJudd.Bot import net.moonleay.lilJudd.buttons.component.IEditButton import net.moonleay.lilJudd.features.AvailabilityManager diff --git a/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/MaybeAvailableEditButton.kt b/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/MaybeAvailableEditButton.kt index a8b174c..01cf792 100644 --- a/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/MaybeAvailableEditButton.kt +++ b/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/MaybeAvailableEditButton.kt @@ -24,7 +24,7 @@ import dev.kord.core.entity.Guild import dev.kord.core.entity.User import dev.kord.core.entity.channel.MessageChannel import dev.kord.core.entity.interaction.ButtonInteraction -import dev.kord.rest.builder.message.embed +import dev.kord.rest.builder.message.modify.embed import net.moonleay.lilJudd.Bot import net.moonleay.lilJudd.buttons.component.IEditButton import net.moonleay.lilJudd.features.AvailabilityManager diff --git a/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/NotAvailableEditButton.kt b/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/NotAvailableEditButton.kt index e5e8103..ade9557 100644 --- a/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/NotAvailableEditButton.kt +++ b/src/main/kotlin/net/moonleay/lilJudd/buttons/timeplanner/NotAvailableEditButton.kt @@ -24,7 +24,7 @@ import dev.kord.core.entity.Guild import dev.kord.core.entity.User import dev.kord.core.entity.channel.MessageChannel import dev.kord.core.entity.interaction.ButtonInteraction -import dev.kord.rest.builder.message.embed +import dev.kord.rest.builder.message.modify.embed import net.moonleay.lilJudd.Bot import net.moonleay.lilJudd.buttons.component.IEditButton import net.moonleay.lilJudd.features.AvailabilityManager diff --git a/src/main/kotlin/net/moonleay/lilJudd/extensions/FeatureManageExtension.kt b/src/main/kotlin/net/moonleay/lilJudd/extensions/FeatureManageExtension.kt index ef1c52a..e09786c 100644 --- a/src/main/kotlin/net/moonleay/lilJudd/extensions/FeatureManageExtension.kt +++ b/src/main/kotlin/net/moonleay/lilJudd/extensions/FeatureManageExtension.kt @@ -23,9 +23,9 @@ import com.kotlindiscord.kord.extensions.commands.application.slash.converters.i import com.kotlindiscord.kord.extensions.commands.converters.impl.channel import com.kotlindiscord.kord.extensions.extensions.Extension import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand +import com.kotlindiscord.kord.extensions.types.respond import com.kotlindiscord.kord.extensions.utils.hasPermission import dev.kord.common.entity.Permission -import dev.kord.rest.builder.message.embed import net.moonleay.lilJudd.extensions.component.EnableOrDisable import net.moonleay.lilJudd.features.component.FeatureEnum import net.moonleay.lilJudd.features.component.FeatureManager @@ -49,16 +49,14 @@ class FeatureManageExtension : Extension() { val u = this.user if (!u.asMember(this.guild!!.id).hasPermission(Permission.Administrator)) { this.respond { - this.embed { - this.color = EmbedColor.ERROR.color - this.title = "403: Forbidden" - this.description = - "You cannot edit features, as you don't have the Administrator permission." - this.footer { - this.icon = u.asUser().avatar?.cdnUrl?.toUrl() - this.text = MessageUtil.getFooter(u) - } - } + embeds.add( + MessageUtil.getEmbed( + EmbedColor.ERROR, + "403: Forbidden", + "You cannot edit features, as you don't have the Administrator permission.", + u.asUser().username + "#" + u.asUser().discriminator + ) + ) } return@action } @@ -70,45 +68,26 @@ class FeatureManageExtension : Extension() { val f = FeatureManager.getFeature(args.feature) if (f == null) { this.respond { - this.embed { - this.color = EmbedColor.ERROR.color - this.title = "404: Not Found" - this.description = "The feature you are trying to edit does not exist." - this.footer { - this.icon = u.asUser().avatar?.cdnUrl?.toUrl() - this.text = MessageUtil.getFooter(u) - } - } + this.embeds.add( + MessageUtil.getEmbed( + EmbedColor.ERROR, + "404: Not Found", + "The feature you are trying to edit does not exist.", + u.asUser().username + "#" + u.asUser().discriminator + ) + ) } return@action } if (this.arguments.setStatus == EnableOrDisable.ENABLE) { - val enabled = f.enable(u, gID, cID, channel, args) this.respond { - this.embed { - this.color = enabled.color - this.title = enabled.title - this.description = enabled.description - this.footer { - this.icon = u.asUser().avatar?.cdnUrl?.toUrl() - this.text = MessageUtil.getFooter(u) - } - } + this.embeds.add(f.enable(u, gID, cID, channel, args)) } return@action } - val disabled = f.disable(u, gID, cID, channel, args) this.respond { - this.embed { - this.color = disabled.color - this.title = disabled.title - this.description = disabled.description - this.footer { - this.icon = u.asUser().avatar?.cdnUrl?.toUrl() - this.text = MessageUtil.getFooter(u) - } - } + this.embeds.add(f.disable(u, gID, cID, channel, args)) } } } diff --git a/src/main/kotlin/net/moonleay/lilJudd/extensions/InfoExtension.kt b/src/main/kotlin/net/moonleay/lilJudd/extensions/InfoExtension.kt index 4928043..6445faf 100644 --- a/src/main/kotlin/net/moonleay/lilJudd/extensions/InfoExtension.kt +++ b/src/main/kotlin/net/moonleay/lilJudd/extensions/InfoExtension.kt @@ -20,8 +20,8 @@ package net.moonleay.lilJudd.extensions import com.kotlindiscord.kord.extensions.extensions.Extension import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand -import dev.kord.rest.builder.message.embed import net.moonleay.lilJudd.util.EmbedColor +import net.moonleay.lilJudd.util.MessageUtil import net.moonleay.liljudd.build.BuildConstants class InfoExtension : Extension() { @@ -31,17 +31,16 @@ class InfoExtension : Extension() { name = "info" description = "Show infos about the bot" this.action { - this.respond { - this.embed { - this.color = EmbedColor.INFO.color - this.title = "Li'l Judd" - this.description = "Li'l Judd ***v." + BuildConstants.version + "***\n" + - "Kord-Extensions ***v." + BuildConstants.kordVersion + "***\n" + - "Coroutines ***v." + BuildConstants.coroutinesVersion + "***\n" + - "Krontab ***v." + BuildConstants.krontabVersion + "***\n\n" + - "Splatoon 3 api data provided by splatoon3.ink" - } - } + MessageUtil.sendEmbedForPublicSlashCommand( + this, + EmbedColor.INFO, + "Lil' Judd", + "Lil' Judd ***v." + BuildConstants.version + "***\n" + + "Kord-Extensions ***v." + BuildConstants.kordVersion + "***\n" + + "Coroutines ***v." + BuildConstants.coroutinesVersion + "***\n" + + "Krontab ***v." + BuildConstants.krontabVersion + "***\n\n" + + "Splatoon 3 api data provided by splatoon3.ink" + ) } } } diff --git a/src/main/kotlin/net/moonleay/lilJudd/extensions/MatchExtension.kt b/src/main/kotlin/net/moonleay/lilJudd/extensions/MatchExtension.kt index e825baa..118d368 100644 --- a/src/main/kotlin/net/moonleay/lilJudd/extensions/MatchExtension.kt +++ b/src/main/kotlin/net/moonleay/lilJudd/extensions/MatchExtension.kt @@ -23,9 +23,9 @@ import com.kotlindiscord.kord.extensions.commands.application.slash.converters.i import com.kotlindiscord.kord.extensions.commands.converters.impl.string import com.kotlindiscord.kord.extensions.extensions.Extension import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand +import com.kotlindiscord.kord.extensions.types.respond import dev.kord.core.behavior.createRole -import dev.kord.rest.builder.message.actionRow -import dev.kord.rest.builder.message.embed +import dev.kord.rest.builder.message.create.actionRow import net.moonleay.lilJudd.data.database.entry.MatchPlanningDataData import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository import net.moonleay.lilJudd.extensions.component.MatchTypes @@ -55,16 +55,15 @@ class MatchExtension : Extension() { val opponent = args.opponent if (!TimeUtil.validateDateString(args.timeStamp)) { this.respond { - this.embed { - this.color = EmbedColor.ERROR.color - this.title = "400: Bad Request" - this.description = "The given timestamp is invalid.\n" + - "Please use the format \"dd.MM.yyyy HH:mm\"." - this.footer { - this.icon = m.asUser().avatar?.cdnUrl?.toUrl() - this.text = MessageUtil.getFooter(m.asUser()) - } - } + this.embeds.add( + MessageUtil.getEmbed( + EmbedColor.ERROR, + "400: Bad Request", + "The given timestamp is invalid.\n" + + "Please use the format \"dd.MM.yyyy HH:mm\".", + m.asUser().username + ) + ) } return@action } @@ -81,41 +80,32 @@ class MatchExtension : Extension() { // Check if the role was created successfully if (role == null) { this.respond { - this.embed { - this.color = EmbedColor.ERROR.color - this.title = "500: Internal Error" - this.description = "Could not find created role.\n" + - "It seems, that said role could not be created." - this.footer { - this.icon = m.asUser().avatar?.cdnUrl?.toUrl() - this.text = MessageUtil.getFooter(m.asUser()) - } - } + this.embeds.add( + MessageUtil.getEmbed( + EmbedColor.ERROR, + "500: Internal Error", + "Could not find created role.\n" + + "It seems, that said role could not be created.", + m.asUser().username + ) + ) } return@action } val msg = this.respond { - val eb = MessageUtil.getEmbedWithTable( - EmbedColor.INFO, - args.matchType.readableName, - "***Vs. $opponent***\n" + - "At ${args.timeStamp}\n" + - "Registered by ${m.mention}", - mapOf( - "Signed up" to listOf(), - "Unavailable" to listOf(), + this.embeds.add( + MessageUtil.getEmbedWithTable( + EmbedColor.INFO, + args.matchType.readableName, + "***Vs. $opponent***\n" + + "At ${args.timeStamp}\n" + + "Registered by ${m.mention}", + mapOf( + "Signed up" to listOf(), + "Unavailable" to listOf(), + ) ) ) - this.embed { - this.color = eb.color - this.title = eb.title - this.description = eb.description - this.fields = eb.fields - this.footer { - this.icon = m.asUser().avatar?.cdnUrl?.toUrl() - this.text = MessageUtil.getFooter(m.asUser()) - } - } this.actionRow { this.components.addAll(EmbedUtil.getMatchButtons().components) diff --git a/src/main/kotlin/net/moonleay/lilJudd/extensions/SendPlannerExtension.kt b/src/main/kotlin/net/moonleay/lilJudd/extensions/SendPlannerExtension.kt index 87a6abb..781de2c 100644 --- a/src/main/kotlin/net/moonleay/lilJudd/extensions/SendPlannerExtension.kt +++ b/src/main/kotlin/net/moonleay/lilJudd/extensions/SendPlannerExtension.kt @@ -20,13 +20,12 @@ package net.moonleay.lilJudd.extensions import com.kotlindiscord.kord.extensions.extensions.Extension import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand +import com.kotlindiscord.kord.extensions.types.respond import com.kotlindiscord.kord.extensions.utils.hasPermission import dev.kord.common.entity.Permission import dev.kord.core.behavior.channel.createMessage -import dev.kord.rest.builder.message.actionRow -import dev.kord.rest.builder.message.embed +import dev.kord.rest.builder.message.create.actionRow import kotlinx.coroutines.delay -import net.moonleay.lilJudd.Bot import net.moonleay.lilJudd.data.database.entry.TimePlanningMessagesData import net.moonleay.lilJudd.data.database.repository.TimePlanningMessagesRepository import net.moonleay.lilJudd.util.* @@ -65,40 +64,30 @@ class SendPlannerExtension : Extension() { .withHour(4) .withMinute(0).withSecond(0) c.createMessage { - this.embed { - this.color = EmbedColor.INFO.color - this.title = "Time Planning Feature" - this.description = "Do you have time on the following Days?" - this.footer { - this.icon = Bot.bot.kordRef.getSelf().avatar?.cdnUrl?.toUrl() - this.text = MessageUtil.getFooter() - } - } + this.embeds.add( + MessageUtil.getEmbed( + EmbedColor.INFO, + "Time Planning Feature", + "Do you have time on the following Days?", + "Automated Message" + ) + ) } delay(1000) repeat(7) { - val eb = MessageUtil.getEmbedWithTable( - EmbedColor.INFO, - "", - "${then.dayOfWeek.name}, ${then.dayOfMonth}.${then.monthValue}.${then.year} /${it + 1}. weekday", - mapOf( - "Is available" to listOf(), - "May be available" to listOf(), - "Is not available" to listOf() - ) - ) - val msg = c.createMessage { - this.embed { - this.color = eb.color - this.title = eb.title - this.description = eb.description - this.fields = eb.fields - this.footer { - this.icon = Bot.bot.kordRef.getSelf().avatar?.cdnUrl?.toUrl() - this.text = MessageUtil.getFooter() - } - } + this.embeds.add( + MessageUtil.getEmbedWithTable( + EmbedColor.INFO, + "", + "${then.dayOfWeek.name}, ${then.dayOfMonth}.${then.monthValue}.${then.year} /${it + 1}. weekday", + mapOf( + "Is available" to listOf(), + "May be available" to listOf(), + "Is not available" to listOf() + ) + ) + ) this.actionRow { this.components.addAll(EmbedUtil.getTimePlannerButtons().components) diff --git a/src/main/kotlin/net/moonleay/lilJudd/extensions/UpdateRolesExtension.kt b/src/main/kotlin/net/moonleay/lilJudd/extensions/UpdateRolesExtension.kt index 8d8e986..be6ba80 100644 --- a/src/main/kotlin/net/moonleay/lilJudd/extensions/UpdateRolesExtension.kt +++ b/src/main/kotlin/net/moonleay/lilJudd/extensions/UpdateRolesExtension.kt @@ -20,9 +20,9 @@ package net.moonleay.lilJudd.extensions import com.kotlindiscord.kord.extensions.extensions.Extension import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand +import com.kotlindiscord.kord.extensions.types.respond import com.kotlindiscord.kord.extensions.utils.hasPermission import dev.kord.common.entity.Permission -import dev.kord.rest.builder.message.embed import net.moonleay.lilJudd.features.AvailabilityManager import net.moonleay.lilJudd.util.EmbedColor import net.moonleay.lilJudd.util.Logger @@ -42,31 +42,30 @@ class UpdateRolesExtension : Extension() { .hasPermission(Permission.Administrator) ) { this.respond { - this.embed { - this.color = EmbedColor.ERROR.color - this.title = "403: Forbidden" - this.description = - "You cannot update roles, as you don't have the Administrator permission." - this.footer { - this.icon = user.asUser().avatar?.cdnUrl?.toUrl() - this.text = MessageUtil.getFooter(user) - } - } + this.embeds.add( + MessageUtil.getEmbed( + EmbedColor.ERROR, + "403: Forbidden", + "You need to be an administrator to use this command.", + user.asUser().username + "#" + user.asUser().discriminator + ) + ) } return@action } this.respond { - this.embed { - this.color = EmbedColor.INFO.color - this.title = "200: Success" - this.description = "Updating roles.\n" + - "This may take a while, please be patient." - this.footer { - this.icon = user.asUser().avatar?.cdnUrl?.toUrl() - this.text = MessageUtil.getFooter(user) - } - } + this.embeds.add( + MessageUtil.getEmbed( + EmbedColor.SUCCESS, + "200: Success", + "Updating roles.\n" + + "This may take a while, please be patient.", + user.asUser().username + "#" + user.asUser().discriminator + ) + ) } + + // -- below here is the code of the cronjob -- Logger.out("Starting to update roles...") AvailabilityManager.updateInChannel(this.channel.id) diff --git a/src/main/kotlin/net/moonleay/lilJudd/features/TimeManager.kt b/src/main/kotlin/net/moonleay/lilJudd/features/TimeManager.kt index 87018df..ec073ac 100644 --- a/src/main/kotlin/net/moonleay/lilJudd/features/TimeManager.kt +++ b/src/main/kotlin/net/moonleay/lilJudd/features/TimeManager.kt @@ -26,8 +26,7 @@ import dev.kord.core.behavior.channel.createMessage import dev.kord.core.entity.channel.Channel import dev.kord.core.entity.channel.MessageChannel import dev.kord.rest.builder.message.EmbedBuilder -import dev.kord.rest.builder.message.actionRow -import dev.kord.rest.builder.message.embed +import dev.kord.rest.builder.message.create.actionRow import kotlinx.coroutines.delay import net.moonleay.lilJudd.Bot import net.moonleay.lilJudd.data.database.entry.TimePlanningChannelsData @@ -79,53 +78,43 @@ object TimeManager : IFeature { c.createMessage { this.content = "The weekly planning starts now <@&${Snowflake(targetedRoles[ch2]?.wantsToBeNotifiedID!!)}>" - this.embed { - this.color = EmbedColor.INFO.color - this.title = "Time Planning Feature" - this.description = "Do you have time on the following Days?" - this.footer { - this.icon = Bot.bot.kordRef.getSelf().avatar?.cdnUrl?.toUrl() - this.text = MessageUtil.getFooter() - } - } + this.embeds.add( + MessageUtil.getEmbed( + EmbedColor.INFO, + "Time Planning Feature", + "Do you have time on the following Days?", + "Automated Message" + ) + ) } } else { c.createMessage { - this.embed { - this.color = EmbedColor.INFO.color - this.title = "Time Planning Feature" - this.description = "Do you have time on the following Days?" - this.footer { - this.icon = Bot.bot.kordRef.getSelf().avatar?.cdnUrl?.toUrl() - this.text = MessageUtil.getFooter() - } - } + this.embeds.add( + MessageUtil.getEmbed( + EmbedColor.INFO, + "Time Planning Feature", + "Do you have time on the following Days?", + "Automated Message" + ) + ) } } delay(2000) var then = ZonedDateTime.now(ZoneId.of("Europe/Berlin")).withHour(4).withMinute(0).withSecond(0) repeat(7) { - val eb = MessageUtil.getEmbedWithTable( - EmbedColor.INFO, - "", - "${then.dayOfWeek.name}, ${then.dayOfMonth}.${then.monthValue}.${then.year} /${it + 1}. weekday", - mapOf( - "Is available" to listOf(), - "May be available" to listOf(), - "Is not available" to listOf() - ) - ) val msg = c.createMessage { - this.embed { - this.color = eb.color - this.title = eb.title - this.description = eb.description - this.fields = eb.fields - this.footer { - this.icon = Bot.bot.kordRef.getSelf().avatar?.cdnUrl?.toUrl() - this.text = MessageUtil.getFooter() - } - } + this.embeds.add( + MessageUtil.getEmbedWithTable( + EmbedColor.INFO, + "", + "${then.dayOfWeek.name}, ${then.dayOfMonth}.${then.monthValue}.${then.year} /${it + 1}. weekday", + mapOf( + "Is available" to listOf(), + "May be available" to listOf(), + "Is not available" to listOf() + ) + ) + ) this.actionRow { this.components.addAll(EmbedUtil.getTimePlannerButtons().components) diff --git a/src/main/kotlin/net/moonleay/lilJudd/jobs/StatusUpdater.kt b/src/main/kotlin/net/moonleay/lilJudd/jobs/StatusUpdater.kt index 762b498..9f5688d 100644 --- a/src/main/kotlin/net/moonleay/lilJudd/jobs/StatusUpdater.kt +++ b/src/main/kotlin/net/moonleay/lilJudd/jobs/StatusUpdater.kt @@ -41,7 +41,7 @@ object StatusUpdater : ICronjob { private var statusList = listOf() private var index = 0 - // I h8 this cronjob. I'll recode this someday. + // I h8 this job. I'll recode this someday. override suspend fun jobFunction() { if (index >= statusList.size) { index = 0 diff --git a/src/main/kotlin/net/moonleay/lilJudd/util/MessageUtil.kt b/src/main/kotlin/net/moonleay/lilJudd/util/MessageUtil.kt index 3307f58..6dfb545 100644 --- a/src/main/kotlin/net/moonleay/lilJudd/util/MessageUtil.kt +++ b/src/main/kotlin/net/moonleay/lilJudd/util/MessageUtil.kt @@ -18,7 +18,10 @@ package net.moonleay.lilJudd.util -import dev.kord.core.behavior.UserBehavior +import com.kotlindiscord.kord.extensions.commands.Arguments +import com.kotlindiscord.kord.extensions.commands.application.slash.PublicSlashCommandContext +import com.kotlindiscord.kord.extensions.components.forms.ModalForm +import com.kotlindiscord.kord.extensions.types.respond import dev.kord.core.entity.Embed import dev.kord.rest.builder.message.EmbedBuilder import java.time.LocalDateTime @@ -27,9 +30,44 @@ import java.time.format.DateTimeFormatter object MessageUtil { private val dtf: DateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy @ HH:mm:ss") - suspend fun getFooter(u: UserBehavior? = null): String { - val now: LocalDateTime = LocalDateTime.now() - return ">" + dtf.format(now) + " - ${u?.asUser()?.username ?: "Automated Message"}" + ///Send an embedded message as a reply + suspend fun sendEmbedForPublicSlashCommand( + ctx: PublicSlashCommandContext, + color: EmbedColor, + title: String, + description: String + ) { + ctx.respond { + embeds.add( + getEmbed( + color, + title, + description, + ctx.user.asUser().username + "#" + ctx.user.asUser().discriminator + ) + ) + } + } + + ///Send an embedded message with an image as a reply + suspend fun sendEmbedForPublicSlashCommandWithImage( + ctx: PublicSlashCommandContext, + color: EmbedColor, + title: String, + description: String, + thumbnailUrl: String + ) { + ctx.respond { + embeds.add( + getEmbedWithImage( + color, + title, + description, + ctx.user.asUser().username + "#" + ctx.user.asUser().discriminator, + thumbnailUrl + ) + ) + } } ///Get a cloned embedded message @@ -63,6 +101,20 @@ object MessageUtil { return ebb } + fun getEmbedWithTableWithFooter( + color: EmbedColor, + title: String, + description: String, + values: Map>?, + footer: String + ): EmbedBuilder { + val ebb = getEmbedWithTable(color, title, description, values) + ebb.footer = EmbedBuilder.Footer() + ebb.footer!!.text = ">m.id/$footer" + return ebb + } + + ///Get an embedded msg with image, title and description fun getEmbedWithTable( color: EmbedColor, title: String, @@ -84,6 +136,7 @@ object MessageUtil { return ebb } + ///Get an embedded msg with title and description fun getEmbedSmall( color: EmbedColor, @@ -111,4 +164,17 @@ object MessageUtil { return ebb } + ///Get an embedded msg with image, title, description and a src + fun getEmbedWithImage( + color: EmbedColor, + title: String, + description: String, + source: String, + thumbnailUrl: String + ): EmbedBuilder { + val ebb = getEmbed(color, title, description, source) + ebb.thumbnail = EmbedBuilder.Thumbnail() + ebb.thumbnail!!.url = thumbnailUrl + return ebb + } }