From 187da815e266125c7cd6fd0dbe7c981079d04e71 Mon Sep 17 00:00:00 2001 From: limited_dev Date: Wed, 12 Jul 2023 13:24:12 +0200 Subject: [PATCH] feat: added CancelEditButton Signed-off-by: limited_dev --- .../buttons/matchplanner/CancelEditButton.kt | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/CancelEditButton.kt diff --git a/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/CancelEditButton.kt b/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/CancelEditButton.kt new file mode 100644 index 0000000..3925cd3 --- /dev/null +++ b/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/CancelEditButton.kt @@ -0,0 +1,92 @@ +/* + * lilJudd + * Copyright (C) 2023 moonleay + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package net.moonleay.lilJudd.buttons.matchplanner + +import dev.kord.common.entity.Snowflake +import dev.kord.core.behavior.edit +import dev.kord.core.behavior.interaction.response.PublicMessageInteractionResponseBehavior +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.modify.embed +import net.moonleay.lilJudd.Bot +import net.moonleay.lilJudd.buttons.component.IEditButton +import net.moonleay.lilJudd.data.entry.MatchPlanningDataData +import net.moonleay.lilJudd.data.tables.MatchPlanningData +import net.moonleay.lilJudd.util.EmbedUtil +import org.jetbrains.exposed.sql.and +import org.jetbrains.exposed.sql.select +import org.jetbrains.exposed.sql.transactions.transaction + +class CancelEditButton : IEditButton { + override val id: String = "public.edit.btn.matchmanagement.cancel" + + override suspend fun onInteraction( + interaction: ButtonInteraction, + response: PublicMessageInteractionResponseBehavior, + guild: Guild, + user: User + ) { + val m = interaction.message + if (m.embeds[0].fields[0].value.contains(user.id.value.toString())) { + lateinit var mpdd: MatchPlanningDataData + var found = false + transaction { + for (pnr in MatchPlanningData.select { + MatchPlanningData.messageid eq (interaction.message.id.value.toString()) and ( + MatchPlanningData.serverid eq (guild.id.value.toString())) and ( + MatchPlanningData.channelid eq (interaction.channelId.value.toString())) + }) { + mpdd = MatchPlanningDataData( + pnr[MatchPlanningData.id].value, + pnr[MatchPlanningData.serverid], + pnr[MatchPlanningData.channelid], + pnr[MatchPlanningData.matchtype], + pnr[MatchPlanningData.registererid], + pnr[MatchPlanningData.roleid], + pnr[MatchPlanningData.opponentName], + pnr[MatchPlanningData.messageid], + pnr[MatchPlanningData.timestamp], + pnr[MatchPlanningData.jobstr] + ) + found = true + } + } + if (!found || mpdd == null) { + return + } + val role = guild.getRoleOrNull(Snowflake(mpdd.roleid)) ?: return + val member = interaction.user.asMember(guild.id) + if (member.roleIds.contains(Snowflake(mpdd.roleid))) { + member.removeRole(role.id) + } + Bot.bot.kordRef.getChannelOf(interaction.channelId)!!.getMessage(m.id).edit { + this.embed { + val temp = EmbedUtil.replaceXWithYinValuesAtTable(user.id.value.toString(), "", m.embeds[0], 1) + this.color = temp.color + this.title = temp.title + this.description = temp.description + this.fields = temp.fields + this.footer = temp.footer + } + } + } + } +}