Compare commits

..

3 commits

Author SHA1 Message Date
a2dafa5c72
fix: fixed all exceptions, which were caused by upgrading dependencies
Some checks failed
Build Gradle project / build-gradle-project (push) Has been cancelled
Signed-off-by: moonleay <contact@moonleay.net>
2023-12-19 10:29:53 +01:00
fc7edc0d0d
feat!: improved MessageUtil
Signed-off-by: moonleay <contact@moonleay.net>
2023-12-19 10:28:49 +01:00
b2c43e2c04
chore: upgrade dependencies
Signed-off-by: moonleay <contact@moonleay.net>
2023-12-19 10:28:04 +01:00
15 changed files with 229 additions and 237 deletions

View file

@ -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" } ?: System.getenv("CI_COMMIT_SHORT_SHA")?.let { "$it-dev" }
?: "2.6.7" ?: "2.6.7"
val kordver = "1.5.9-SNAPSHOT" val kordver = "1.7.1-SNAPSHOT"
val coroutinesver = "1.7.3" val coroutinesver = "1.7.3"
val ktorver = "2.3.5" val ktorver = "2.3.7"
val exposedver = "0.43.0" val exposedver = "0.45.0"
val postgresver = "42.6.0" val postgresver = "42.7.1"
val krontabver = "2.2.1" val krontabver = "2.2.4"
val mavenArtifact = "lilJudd" val mavenArtifact = "lilJudd"
project.base.archivesName.set(mavenArtifact) project.base.archivesName.set(mavenArtifact)
@ -105,8 +105,8 @@ dependencies {
//Krontab //Krontab
shadow("dev.inmo:krontab:$krontabver") shadow("dev.inmo:krontab:$krontabver")
shadow("io.ktor:ktor-client-core-jvm:2.3.5") shadow("io.ktor:ktor-client-core-jvm:$ktorver")
shadow("io.ktor:ktor-client-cio-jvm:2.3.5") shadow("io.ktor:ktor-client-cio-jvm:$ktorver")
} }

View file

@ -25,7 +25,8 @@ import dev.kord.core.entity.Guild
import dev.kord.core.entity.User import dev.kord.core.entity.User
import dev.kord.core.entity.channel.MessageChannel import dev.kord.core.entity.channel.MessageChannel
import dev.kord.core.entity.interaction.ButtonInteraction import dev.kord.core.entity.interaction.ButtonInteraction
import dev.kord.rest.builder.message.modify.embed import dev.kord.rest.builder.message.EmbedBuilder
import dev.kord.rest.builder.message.embed
import net.moonleay.lilJudd.Bot import net.moonleay.lilJudd.Bot
import net.moonleay.lilJudd.buttons.component.IEditButton import net.moonleay.lilJudd.buttons.component.IEditButton
import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository
@ -89,13 +90,13 @@ class AcceptEditButton() : IEditButton {
if (shouldEditButton) { if (shouldEditButton) {
// update the message // update the message
Bot.bot.kordRef.getChannelOf<MessageChannel>(interaction.channelId)!!.getMessage(m.id).edit { Bot.bot.kordRef.getChannelOf<MessageChannel>(interaction.channelId)!!.getMessage(m.id).edit {
this.embed { this.embed(fun EmbedBuilder.() {
this.color = eb.color color = eb.color
this.title = eb.title title = eb.title
this.description = eb.description description = eb.description
this.fields = eb.fields fields = eb.fields
this.footer = eb.footer footer = eb.footer
} })
} }
} }
} }

View file

@ -25,7 +25,8 @@ import dev.kord.core.entity.Guild
import dev.kord.core.entity.User import dev.kord.core.entity.User
import dev.kord.core.entity.channel.MessageChannel import dev.kord.core.entity.channel.MessageChannel
import dev.kord.core.entity.interaction.ButtonInteraction import dev.kord.core.entity.interaction.ButtonInteraction
import dev.kord.rest.builder.message.modify.embed import dev.kord.rest.builder.message.EmbedBuilder
import dev.kord.rest.builder.message.embed
import net.moonleay.lilJudd.Bot import net.moonleay.lilJudd.Bot
import net.moonleay.lilJudd.buttons.component.IEditButton import net.moonleay.lilJudd.buttons.component.IEditButton
import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository
@ -62,14 +63,14 @@ class CancelEditButton : IEditButton {
member.removeRole(role.id) member.removeRole(role.id)
} }
Bot.bot.kordRef.getChannelOf<MessageChannel>(interaction.channelId)!!.getMessage(m.id).edit { Bot.bot.kordRef.getChannelOf<MessageChannel>(interaction.channelId)!!.getMessage(m.id).edit {
this.embed { this.embed(fun EmbedBuilder.() {
val temp = EmbedUtil.replaceXWithYinValuesAtTable(user.id.value.toString(), "", m.embeds[0], 1) val temp = EmbedUtil.replaceXWithYinValuesAtTable(user.id.value.toString(), "", m.embeds[0], 1)
this.color = temp.color color = temp.color
this.title = temp.title title = temp.title
this.description = temp.description description = temp.description
this.fields = temp.fields fields = temp.fields
this.footer = temp.footer footer = temp.footer
} })
} }
} }
} }

View file

@ -25,7 +25,8 @@ import dev.kord.core.entity.Guild
import dev.kord.core.entity.User import dev.kord.core.entity.User
import dev.kord.core.entity.channel.MessageChannel import dev.kord.core.entity.channel.MessageChannel
import dev.kord.core.entity.interaction.ButtonInteraction import dev.kord.core.entity.interaction.ButtonInteraction
import dev.kord.rest.builder.message.modify.embed import dev.kord.rest.builder.message.EmbedBuilder
import dev.kord.rest.builder.message.embed
import net.moonleay.lilJudd.Bot import net.moonleay.lilJudd.Bot
import net.moonleay.lilJudd.buttons.component.IEditButton import net.moonleay.lilJudd.buttons.component.IEditButton
import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository
@ -89,13 +90,13 @@ class DeclineEditButton : IEditButton {
if (shouldEditButton) { if (shouldEditButton) {
// update the message // update the message
Bot.bot.kordRef.getChannelOf<MessageChannel>(interaction.channelId)!!.getMessage(m.id).edit { Bot.bot.kordRef.getChannelOf<MessageChannel>(interaction.channelId)!!.getMessage(m.id).edit {
this.embed { this.embed(fun EmbedBuilder.() {
this.color = eb.color color = eb.color
this.title = eb.title title = eb.title
this.description = eb.description description = eb.description
this.fields = eb.fields fields = eb.fields
this.footer = eb.footer footer = eb.footer
} })
} }
} }
} }

View file

@ -24,7 +24,7 @@ import dev.kord.core.entity.Guild
import dev.kord.core.entity.User import dev.kord.core.entity.User
import dev.kord.core.entity.channel.MessageChannel import dev.kord.core.entity.channel.MessageChannel
import dev.kord.core.entity.interaction.ButtonInteraction import dev.kord.core.entity.interaction.ButtonInteraction
import dev.kord.rest.builder.message.modify.embed import dev.kord.rest.builder.message.embed
import net.moonleay.lilJudd.Bot import net.moonleay.lilJudd.Bot
import net.moonleay.lilJudd.buttons.component.IEditButton import net.moonleay.lilJudd.buttons.component.IEditButton
import net.moonleay.lilJudd.features.AvailabilityManager import net.moonleay.lilJudd.features.AvailabilityManager

View file

@ -24,7 +24,7 @@ import dev.kord.core.entity.Guild
import dev.kord.core.entity.User import dev.kord.core.entity.User
import dev.kord.core.entity.channel.MessageChannel import dev.kord.core.entity.channel.MessageChannel
import dev.kord.core.entity.interaction.ButtonInteraction import dev.kord.core.entity.interaction.ButtonInteraction
import dev.kord.rest.builder.message.modify.embed import dev.kord.rest.builder.message.embed
import net.moonleay.lilJudd.Bot import net.moonleay.lilJudd.Bot
import net.moonleay.lilJudd.buttons.component.IEditButton import net.moonleay.lilJudd.buttons.component.IEditButton
import net.moonleay.lilJudd.features.AvailabilityManager import net.moonleay.lilJudd.features.AvailabilityManager

View file

@ -24,7 +24,7 @@ import dev.kord.core.entity.Guild
import dev.kord.core.entity.User import dev.kord.core.entity.User
import dev.kord.core.entity.channel.MessageChannel import dev.kord.core.entity.channel.MessageChannel
import dev.kord.core.entity.interaction.ButtonInteraction import dev.kord.core.entity.interaction.ButtonInteraction
import dev.kord.rest.builder.message.modify.embed import dev.kord.rest.builder.message.embed
import net.moonleay.lilJudd.Bot import net.moonleay.lilJudd.Bot
import net.moonleay.lilJudd.buttons.component.IEditButton import net.moonleay.lilJudd.buttons.component.IEditButton
import net.moonleay.lilJudd.features.AvailabilityManager import net.moonleay.lilJudd.features.AvailabilityManager

View file

@ -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.commands.converters.impl.channel
import com.kotlindiscord.kord.extensions.extensions.Extension import com.kotlindiscord.kord.extensions.extensions.Extension
import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
import com.kotlindiscord.kord.extensions.types.respond
import com.kotlindiscord.kord.extensions.utils.hasPermission import com.kotlindiscord.kord.extensions.utils.hasPermission
import dev.kord.common.entity.Permission import dev.kord.common.entity.Permission
import dev.kord.rest.builder.message.embed
import net.moonleay.lilJudd.extensions.component.EnableOrDisable import net.moonleay.lilJudd.extensions.component.EnableOrDisable
import net.moonleay.lilJudd.features.component.FeatureEnum import net.moonleay.lilJudd.features.component.FeatureEnum
import net.moonleay.lilJudd.features.component.FeatureManager import net.moonleay.lilJudd.features.component.FeatureManager
@ -49,14 +49,16 @@ class FeatureManageExtension : Extension() {
val u = this.user val u = this.user
if (!u.asMember(this.guild!!.id).hasPermission(Permission.Administrator)) { if (!u.asMember(this.guild!!.id).hasPermission(Permission.Administrator)) {
this.respond { this.respond {
embeds.add( this.embed {
MessageUtil.getEmbed( this.color = EmbedColor.ERROR.color
EmbedColor.ERROR, this.title = "403: Forbidden"
"403: Forbidden", this.description =
"You cannot edit features, as you don't have the Administrator permission.", "You cannot edit features, as you don't have the Administrator permission."
u.asUser().username + "#" + u.asUser().discriminator this.footer {
) this.icon = u.asUser().avatar?.cdnUrl?.toUrl()
) this.text = MessageUtil.getFooter(u)
}
}
} }
return@action return@action
} }
@ -68,26 +70,45 @@ class FeatureManageExtension : Extension() {
val f = FeatureManager.getFeature(args.feature) val f = FeatureManager.getFeature(args.feature)
if (f == null) { if (f == null) {
this.respond { this.respond {
this.embeds.add( this.embed {
MessageUtil.getEmbed( this.color = EmbedColor.ERROR.color
EmbedColor.ERROR, this.title = "404: Not Found"
"404: Not Found", this.description = "The feature you are trying to edit does not exist."
"The feature you are trying to edit does not exist.", this.footer {
u.asUser().username + "#" + u.asUser().discriminator this.icon = u.asUser().avatar?.cdnUrl?.toUrl()
) this.text = MessageUtil.getFooter(u)
) }
}
} }
return@action return@action
} }
if (this.arguments.setStatus == EnableOrDisable.ENABLE) { if (this.arguments.setStatus == EnableOrDisable.ENABLE) {
val enabled = f.enable(u, gID, cID, channel, args)
this.respond { this.respond {
this.embeds.add(f.enable(u, gID, cID, channel, args)) 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)
}
}
} }
return@action return@action
} }
val disabled = f.disable(u, gID, cID, channel, args)
this.respond { this.respond {
this.embeds.add(f.disable(u, gID, cID, channel, args)) 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)
}
}
} }
} }
} }

View file

@ -20,8 +20,8 @@ package net.moonleay.lilJudd.extensions
import com.kotlindiscord.kord.extensions.extensions.Extension import com.kotlindiscord.kord.extensions.extensions.Extension
import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand 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.EmbedColor
import net.moonleay.lilJudd.util.MessageUtil
import net.moonleay.liljudd.build.BuildConstants import net.moonleay.liljudd.build.BuildConstants
class InfoExtension : Extension() { class InfoExtension : Extension() {
@ -31,16 +31,17 @@ class InfoExtension : Extension() {
name = "info" name = "info"
description = "Show infos about the bot" description = "Show infos about the bot"
this.action { this.action {
MessageUtil.sendEmbedForPublicSlashCommand( this.respond {
this, this.embed {
EmbedColor.INFO, this.color = EmbedColor.INFO.color
"Lil' Judd", this.title = "Li'l Judd"
"Lil' Judd ***v." + BuildConstants.version + "***\n" + this.description = "Li'l Judd ***v." + BuildConstants.version + "***\n" +
"Kord-Extensions ***v." + BuildConstants.kordVersion + "***\n" + "Kord-Extensions ***v." + BuildConstants.kordVersion + "***\n" +
"Coroutines ***v." + BuildConstants.coroutinesVersion + "***\n" + "Coroutines ***v." + BuildConstants.coroutinesVersion + "***\n" +
"Krontab ***v." + BuildConstants.krontabVersion + "***\n\n" + "Krontab ***v." + BuildConstants.krontabVersion + "***\n\n" +
"Splatoon 3 api data provided by splatoon3.ink" "Splatoon 3 api data provided by splatoon3.ink"
) }
}
} }
} }
} }

View file

@ -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.commands.converters.impl.string
import com.kotlindiscord.kord.extensions.extensions.Extension import com.kotlindiscord.kord.extensions.extensions.Extension
import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
import com.kotlindiscord.kord.extensions.types.respond
import dev.kord.core.behavior.createRole import dev.kord.core.behavior.createRole
import dev.kord.rest.builder.message.create.actionRow import dev.kord.rest.builder.message.actionRow
import dev.kord.rest.builder.message.embed
import net.moonleay.lilJudd.data.database.entry.MatchPlanningDataData import net.moonleay.lilJudd.data.database.entry.MatchPlanningDataData
import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository import net.moonleay.lilJudd.data.database.repository.MatchPlanningDataRepository
import net.moonleay.lilJudd.extensions.component.MatchTypes import net.moonleay.lilJudd.extensions.component.MatchTypes
@ -55,15 +55,16 @@ class MatchExtension : Extension() {
val opponent = args.opponent val opponent = args.opponent
if (!TimeUtil.validateDateString(args.timeStamp)) { if (!TimeUtil.validateDateString(args.timeStamp)) {
this.respond { this.respond {
this.embeds.add( this.embed {
MessageUtil.getEmbed( this.color = EmbedColor.ERROR.color
EmbedColor.ERROR, this.title = "400: Bad Request"
"400: Bad Request", this.description = "The given timestamp is invalid.\n" +
"The given timestamp is invalid.\n" + "Please use the format \"dd.MM.yyyy HH:mm\"."
"Please use the format \"dd.MM.yyyy HH:mm\".", this.footer {
m.asUser().username this.icon = m.asUser().avatar?.cdnUrl?.toUrl()
) this.text = MessageUtil.getFooter(m.asUser())
) }
}
} }
return@action return@action
} }
@ -80,21 +81,21 @@ class MatchExtension : Extension() {
// Check if the role was created successfully // Check if the role was created successfully
if (role == null) { if (role == null) {
this.respond { this.respond {
this.embeds.add( this.embed {
MessageUtil.getEmbed( this.color = EmbedColor.ERROR.color
EmbedColor.ERROR, this.title = "500: Internal Error"
"500: Internal Error", this.description = "Could not find created role.\n" +
"Could not find created role.\n" + "It seems, that said role could not be created."
"It seems, that said role could not be created.", this.footer {
m.asUser().username this.icon = m.asUser().avatar?.cdnUrl?.toUrl()
) this.text = MessageUtil.getFooter(m.asUser())
) }
}
} }
return@action return@action
} }
val msg = this.respond { val msg = this.respond {
this.embeds.add( val eb = MessageUtil.getEmbedWithTable(
MessageUtil.getEmbedWithTable(
EmbedColor.INFO, EmbedColor.INFO,
args.matchType.readableName, args.matchType.readableName,
"***Vs. $opponent***\n" + "***Vs. $opponent***\n" +
@ -105,7 +106,16 @@ class MatchExtension : Extension() {
"Unavailable" 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.actionRow {
this.components.addAll(EmbedUtil.getMatchButtons().components) this.components.addAll(EmbedUtil.getMatchButtons().components)

View file

@ -20,12 +20,13 @@ package net.moonleay.lilJudd.extensions
import com.kotlindiscord.kord.extensions.extensions.Extension import com.kotlindiscord.kord.extensions.extensions.Extension
import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
import com.kotlindiscord.kord.extensions.types.respond
import com.kotlindiscord.kord.extensions.utils.hasPermission import com.kotlindiscord.kord.extensions.utils.hasPermission
import dev.kord.common.entity.Permission import dev.kord.common.entity.Permission
import dev.kord.core.behavior.channel.createMessage import dev.kord.core.behavior.channel.createMessage
import dev.kord.rest.builder.message.create.actionRow import dev.kord.rest.builder.message.actionRow
import dev.kord.rest.builder.message.embed
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import net.moonleay.lilJudd.Bot
import net.moonleay.lilJudd.data.database.entry.TimePlanningMessagesData import net.moonleay.lilJudd.data.database.entry.TimePlanningMessagesData
import net.moonleay.lilJudd.data.database.repository.TimePlanningMessagesRepository import net.moonleay.lilJudd.data.database.repository.TimePlanningMessagesRepository
import net.moonleay.lilJudd.util.* import net.moonleay.lilJudd.util.*
@ -64,20 +65,19 @@ class SendPlannerExtension : Extension() {
.withHour(4) .withHour(4)
.withMinute(0).withSecond(0) .withMinute(0).withSecond(0)
c.createMessage { c.createMessage {
this.embeds.add( this.embed {
MessageUtil.getEmbed( this.color = EmbedColor.INFO.color
EmbedColor.INFO, this.title = "Time Planning Feature"
"Time Planning Feature", this.description = "Do you have time on the following Days?"
"Do you have time on the following Days?", this.footer {
"Automated Message" this.icon = Bot.bot.kordRef.getSelf().avatar?.cdnUrl?.toUrl()
) this.text = MessageUtil.getFooter()
) }
}
} }
delay(1000) delay(1000)
repeat(7) { repeat(7) {
val msg = c.createMessage { val eb = MessageUtil.getEmbedWithTable(
this.embeds.add(
MessageUtil.getEmbedWithTable(
EmbedColor.INFO, EmbedColor.INFO,
"", "",
"${then.dayOfWeek.name}, ${then.dayOfMonth}.${then.monthValue}.${then.year} /${it + 1}. weekday", "${then.dayOfWeek.name}, ${then.dayOfMonth}.${then.monthValue}.${then.year} /${it + 1}. weekday",
@ -87,7 +87,18 @@ class SendPlannerExtension : Extension() {
"Is not 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.actionRow { this.actionRow {
this.components.addAll(EmbedUtil.getTimePlannerButtons().components) this.components.addAll(EmbedUtil.getTimePlannerButtons().components)

View file

@ -20,9 +20,9 @@ package net.moonleay.lilJudd.extensions
import com.kotlindiscord.kord.extensions.extensions.Extension import com.kotlindiscord.kord.extensions.extensions.Extension
import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
import com.kotlindiscord.kord.extensions.types.respond
import com.kotlindiscord.kord.extensions.utils.hasPermission import com.kotlindiscord.kord.extensions.utils.hasPermission
import dev.kord.common.entity.Permission import dev.kord.common.entity.Permission
import dev.kord.rest.builder.message.embed
import net.moonleay.lilJudd.features.AvailabilityManager import net.moonleay.lilJudd.features.AvailabilityManager
import net.moonleay.lilJudd.util.EmbedColor import net.moonleay.lilJudd.util.EmbedColor
import net.moonleay.lilJudd.util.Logger import net.moonleay.lilJudd.util.Logger
@ -42,30 +42,31 @@ class UpdateRolesExtension : Extension() {
.hasPermission(Permission.Administrator) .hasPermission(Permission.Administrator)
) { ) {
this.respond { this.respond {
this.embeds.add( this.embed {
MessageUtil.getEmbed( this.color = EmbedColor.ERROR.color
EmbedColor.ERROR, this.title = "403: Forbidden"
"403: Forbidden", this.description =
"You need to be an administrator to use this command.", "You cannot update roles, as you don't have the Administrator permission."
user.asUser().username + "#" + user.asUser().discriminator this.footer {
) this.icon = user.asUser().avatar?.cdnUrl?.toUrl()
) this.text = MessageUtil.getFooter(user)
}
}
} }
return@action return@action
} }
this.respond { this.respond {
this.embeds.add( this.embed {
MessageUtil.getEmbed( this.color = EmbedColor.INFO.color
EmbedColor.SUCCESS, this.title = "200: Success"
"200: Success", this.description = "Updating roles.\n" +
"Updating roles.\n" + "This may take a while, please be patient."
"This may take a while, please be patient.", this.footer {
user.asUser().username + "#" + user.asUser().discriminator this.icon = user.asUser().avatar?.cdnUrl?.toUrl()
) this.text = MessageUtil.getFooter(user)
) }
}
} }
// -- below here is the code of the cronjob --
Logger.out("Starting to update roles...") Logger.out("Starting to update roles...")
AvailabilityManager.updateInChannel(this.channel.id) AvailabilityManager.updateInChannel(this.channel.id)

View file

@ -26,7 +26,8 @@ import dev.kord.core.behavior.channel.createMessage
import dev.kord.core.entity.channel.Channel import dev.kord.core.entity.channel.Channel
import dev.kord.core.entity.channel.MessageChannel import dev.kord.core.entity.channel.MessageChannel
import dev.kord.rest.builder.message.EmbedBuilder import dev.kord.rest.builder.message.EmbedBuilder
import dev.kord.rest.builder.message.create.actionRow import dev.kord.rest.builder.message.actionRow
import dev.kord.rest.builder.message.embed
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import net.moonleay.lilJudd.Bot import net.moonleay.lilJudd.Bot
import net.moonleay.lilJudd.data.database.entry.TimePlanningChannelsData import net.moonleay.lilJudd.data.database.entry.TimePlanningChannelsData
@ -78,33 +79,33 @@ object TimeManager : IFeature {
c.createMessage { c.createMessage {
this.content = this.content =
"The weekly planning starts now <@&${Snowflake(targetedRoles[ch2]?.wantsToBeNotifiedID!!)}>" "The weekly planning starts now <@&${Snowflake(targetedRoles[ch2]?.wantsToBeNotifiedID!!)}>"
this.embeds.add( this.embed {
MessageUtil.getEmbed( this.color = EmbedColor.INFO.color
EmbedColor.INFO, this.title = "Time Planning Feature"
"Time Planning Feature", this.description = "Do you have time on the following Days?"
"Do you have time on the following Days?", this.footer {
"Automated Message" this.icon = Bot.bot.kordRef.getSelf().avatar?.cdnUrl?.toUrl()
) this.text = MessageUtil.getFooter()
) }
}
} }
} else { } else {
c.createMessage { c.createMessage {
this.embeds.add( this.embed {
MessageUtil.getEmbed( this.color = EmbedColor.INFO.color
EmbedColor.INFO, this.title = "Time Planning Feature"
"Time Planning Feature", this.description = "Do you have time on the following Days?"
"Do you have time on the following Days?", this.footer {
"Automated Message" this.icon = Bot.bot.kordRef.getSelf().avatar?.cdnUrl?.toUrl()
) this.text = MessageUtil.getFooter()
) }
}
} }
} }
delay(2000) delay(2000)
var then = ZonedDateTime.now(ZoneId.of("Europe/Berlin")).withHour(4).withMinute(0).withSecond(0) var then = ZonedDateTime.now(ZoneId.of("Europe/Berlin")).withHour(4).withMinute(0).withSecond(0)
repeat(7) { repeat(7) {
val msg = c.createMessage { val eb = MessageUtil.getEmbedWithTable(
this.embeds.add(
MessageUtil.getEmbedWithTable(
EmbedColor.INFO, EmbedColor.INFO,
"", "",
"${then.dayOfWeek.name}, ${then.dayOfMonth}.${then.monthValue}.${then.year} /${it + 1}. weekday", "${then.dayOfWeek.name}, ${then.dayOfMonth}.${then.monthValue}.${then.year} /${it + 1}. weekday",
@ -114,7 +115,17 @@ object TimeManager : IFeature {
"Is not 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.actionRow { this.actionRow {
this.components.addAll(EmbedUtil.getTimePlannerButtons().components) this.components.addAll(EmbedUtil.getTimePlannerButtons().components)

View file

@ -41,7 +41,7 @@ object StatusUpdater : ICronjob {
private var statusList = listOf<String>() private var statusList = listOf<String>()
private var index = 0 private var index = 0
// I h8 this job. I'll recode this someday. // I h8 this cronjob. I'll recode this someday.
override suspend fun jobFunction() { override suspend fun jobFunction() {
if (index >= statusList.size) { if (index >= statusList.size) {
index = 0 index = 0

View file

@ -18,10 +18,7 @@
package net.moonleay.lilJudd.util package net.moonleay.lilJudd.util
import com.kotlindiscord.kord.extensions.commands.Arguments import dev.kord.core.behavior.UserBehavior
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.core.entity.Embed
import dev.kord.rest.builder.message.EmbedBuilder import dev.kord.rest.builder.message.EmbedBuilder
import java.time.LocalDateTime import java.time.LocalDateTime
@ -30,44 +27,9 @@ import java.time.format.DateTimeFormatter
object MessageUtil { object MessageUtil {
private val dtf: DateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy @ HH:mm:ss") private val dtf: DateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy @ HH:mm:ss")
///Send an embedded message as a reply suspend fun getFooter(u: UserBehavior? = null): String {
suspend fun sendEmbedForPublicSlashCommand( val now: LocalDateTime = LocalDateTime.now()
ctx: PublicSlashCommandContext<Arguments, ModalForm>, return ">" + dtf.format(now) + " - ${u?.asUser()?.username ?: "Automated Message"}"
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<Arguments, ModalForm>,
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 ///Get a cloned embedded message
@ -101,20 +63,6 @@ object MessageUtil {
return ebb return ebb
} }
fun getEmbedWithTableWithFooter(
color: EmbedColor,
title: String,
description: String,
values: Map<String, List<String>>?,
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( fun getEmbedWithTable(
color: EmbedColor, color: EmbedColor,
title: String, title: String,
@ -136,7 +84,6 @@ object MessageUtil {
return ebb return ebb
} }
///Get an embedded msg with title and description ///Get an embedded msg with title and description
fun getEmbedSmall( fun getEmbedSmall(
color: EmbedColor, color: EmbedColor,
@ -164,17 +111,4 @@ object MessageUtil {
return ebb 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
}
} }