From a3e86067c0e3d6b33b2857528a27cba784ddb82c Mon Sep 17 00:00:00 2001 From: Filip Date: Thu, 23 Jan 2025 20:53:13 +0100 Subject: [PATCH] Added weight and speed conversions. --- build.gradle.kts | 3 +++ src/main/kotlin/Main.kt | 57 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index e76c2e2..67bc94b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -11,6 +11,9 @@ repositories { dependencies { testImplementation(kotlin("test")) + // https://mvnrepository.com/artifact/org.javacord/javacord + implementation("org.javacord:javacord:3.8.0") + } tasks.test { diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt index 732adf1..fe44eb1 100644 --- a/src/main/kotlin/Main.kt +++ b/src/main/kotlin/Main.kt @@ -1,5 +1,60 @@ package org.example +import org.javacord.api.DiscordApiBuilder +import org.javacord.api.event.message.MessageCreateEvent + +fun extractNumbers(pattern: String, text: String?): List { + val matches = Regex(pattern).findAll(text ?: "") + return matches + .filter { it.groups[1] != null } + .map { it.value.lowercase() } + .map { it.replace(",", ".").toDouble() } + .toList() +} + +fun convertKg(event: MessageCreateEvent) { + for (kgs in extractNumbers("/(\\d+[,.]*\\d*)\\s*kg/gm", event.message.content)) { + val pounds = kgs * 2.20462262 + event.channel.sendMessage("$kgs kg = $pounds lb") + } +} + +fun convertLbs(event: MessageCreateEvent) { + for (pounds in extractNumbers("/(\\d+[,.]*\\d*)\\s*lb/gm", event.message.content)) { + val kgs = pounds / 2.20462262 + event.channel.sendMessage("$pounds lb = $kgs kg") + } +} + +fun convertMph(event: MessageCreateEvent) { + for (mph in extractNumbers("/(\\d+[,.]*\\d*)\\s*mi*ph/gm", event.message.content)) { + val kmph = mph * 1.609344 + val mps = kmph / 3.6 + event.channel.sendMessage("$mph lb = $kmph km/h = $mps m/s") + } +} + +fun convertKmh(event: MessageCreateEvent) { + for (kmph in extractNumbers("/(\\d+[,.]*\\d*)\\s*km*[p\\/]h/gm", event.message.content)) { + val mph = kmph / 1.609344 + val mps = kmph / 3.6 + event.channel.sendMessage("$kmph km/h = $mph lb = $mps m/s") + } +} + fun main() { - println("Hello World!") + val token = System.getenv("DISCORD_UNITS_BOT_TOKEN") ?: return + + val api = DiscordApiBuilder() + .setAllIntents() + .setToken(token) + .login() + .join() + + api.addMessageCreateListener { + convertKg(it) + convertLbs(it) + convertMph(it) + convertKmh(it) + } } \ No newline at end of file