11package net.azisaba.guildchatdiscord.commands
22
3- import dev.kord.core.behavior.interaction.respondEphemeral
3+ import dev.kord.core.behavior.interaction.response.respond
44import dev.kord.core.entity.interaction.ApplicationCommandInteraction
55import dev.kord.rest.builder.interaction.GlobalMultiApplicationCommandBuilder
66import dev.kord.rest.builder.interaction.string
@@ -9,7 +9,24 @@ import net.azisaba.guildchatdiscord.util.optString
99
1010object LinkCommand : CommandHandler {
1111 override suspend fun handle0 (interaction : ApplicationCommandInteraction ) {
12+ val defer = interaction.deferEphemeralResponse()
1213 val code = interaction.optString(" code" )!!
14+ val linked = DatabaseManager .query(" SELECT `minecraft_uuid`, `minecraft_name` FROM `users` WHERE `discord_id` = ?" ) { stmt ->
15+ stmt.setString(1 , interaction.user.id.toString())
16+ stmt.executeQuery().use { rs ->
17+ if (rs.next()) {
18+ Pair (rs.getString(" minecraft_uuid" ), rs.getString(" minecraft_name" ))
19+ } else {
20+ null
21+ }
22+ }
23+ }
24+ if (linked != null ) {
25+ defer.respond {
26+ content = " このDiscordアカウントはすでに${linked.second} (`${linked.first} `)と連携済みです。\n 連携を解除するには`/unlink`を入力してください。"
27+ }
28+ return
29+ }
1330 val uuidName = DatabaseManager .query(" SELECT `minecraft_uuid`, `minecraft_name` FROM `users` WHERE `link_code` = ?" ) { stmt ->
1431 stmt.setString(1 , code)
1532 stmt.executeQuery().use { rs ->
@@ -21,7 +38,7 @@ object LinkCommand : CommandHandler {
2138 }
2239 }
2340 if (uuidName == null ) {
24- interaction.respondEphemeral { content = " コードが無効です。" }
41+ defer.respond { content = " コードが無効です。" }
2542 return
2643 }
2744 val discordId = DatabaseManager .query(" SELECT `discord_id` FROM `users` WHERE `link_code` = ?" ) { stmt ->
@@ -36,7 +53,7 @@ object LinkCommand : CommandHandler {
3653 }
3754 if (discordId != - 1L ) {
3855 // already linked
39- interaction.respondEphemeral { content = " コードが無効です。" }
56+ defer.respond { content = " コードが無効です。" }
4057 return
4158 }
4259 val (uuid, name) = uuidName
@@ -46,7 +63,7 @@ object LinkCommand : CommandHandler {
4663 stmt.executeUpdate()
4764 }
4865 DatabaseManager .getMinecraftUUIDByDiscordId.forget(interaction.user.id.value.toLong())
49- interaction.respondEphemeral { content = " `$name ` (`$uuid `)と連携しました。" }
66+ defer.respond { content = " `$name ` (`$uuid `)と連携しました。" }
5067 }
5168
5269 override fun register (builder : GlobalMultiApplicationCommandBuilder ) {
0 commit comments