Skip to content

Commit cf37bc2

Browse files
committed
🔖 2.1.2 - Disallow duplicate links
1 parent fd3a711 commit cf37bc2

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
}
66

77
group = "net.azisaba"
8-
version = "2.1.1"
8+
version = "2.1.2"
99

1010
repositories {
1111
mavenCentral()

src/main/kotlin/net/azisaba/guildchatdiscord/commands/LinkCommand.kt

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package net.azisaba.guildchatdiscord.commands
22

3-
import dev.kord.core.behavior.interaction.respondEphemeral
3+
import dev.kord.core.behavior.interaction.response.respond
44
import dev.kord.core.entity.interaction.ApplicationCommandInteraction
55
import dev.kord.rest.builder.interaction.GlobalMultiApplicationCommandBuilder
66
import dev.kord.rest.builder.interaction.string
@@ -9,7 +9,24 @@ import net.azisaba.guildchatdiscord.util.optString
99

1010
object 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

Comments
 (0)