diff --git a/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/SignMeUpEditButton.kt b/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/SignMeUpEditButton.kt
new file mode 100644
index 0000000..fa47749
--- /dev/null
+++ b/src/main/kotlin/net/moonleay/lilJudd/buttons/matchplanner/SignMeUpEditButton.kt
@@ -0,0 +1,94 @@
+/*
+ * 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 SignMeUpEditButton() : IEditButton {
+ override val id: String = "public.edit.btn.matchmanagement.accept"
+
+ 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.addRole(role.id)
+ }
+
+ //Add the user to the list in the embed
+ Bot.bot.kordRef.getChannelOf(interaction.channelId)!!.getMessage(m.id).edit {
+ this.embed {
+ val temp = EmbedUtil.addXToValuesAtTable(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
+ }
+ }
+ }
+ }
+}