Correctly parse regex.

This commit is contained in:
Filip 2025-01-23 21:08:08 +01:00
parent a3e86067c0
commit ca61620ba9

View file

@ -6,28 +6,28 @@ import org.javacord.api.event.message.MessageCreateEvent
fun extractNumbers(pattern: String, text: String?): List<Double> { fun extractNumbers(pattern: String, text: String?): List<Double> {
val matches = Regex(pattern).findAll(text ?: "") val matches = Regex(pattern).findAll(text ?: "")
return matches return matches
.filter { it.groups[1] != null } .map { it.groups[1]?.value?.lowercase() }
.map { it.value.lowercase() } .filter { it != null }
.map { it.replace(",", ".").toDouble() } .map { it!!.replace(",", ".").toDouble() }
.toList() .toList()
} }
fun convertKg(event: MessageCreateEvent) { fun convertKg(event: MessageCreateEvent) {
for (kgs in extractNumbers("/(\\d+[,.]*\\d*)\\s*kg/gm", event.message.content)) { for (kgs in extractNumbers("(\\d+[,.]*\\d*)\\s*kg", event.message.content)) {
val pounds = kgs * 2.20462262 val pounds = kgs * 2.20462262
event.channel.sendMessage("$kgs kg = $pounds lb") event.channel.sendMessage("$kgs kg = $pounds lb")
} }
} }
fun convertLbs(event: MessageCreateEvent) { fun convertLbs(event: MessageCreateEvent) {
for (pounds in extractNumbers("/(\\d+[,.]*\\d*)\\s*lb/gm", event.message.content)) { for (pounds in extractNumbers("(\\d+[,.]*\\d*)\\s*lb", event.message.content)) {
val kgs = pounds / 2.20462262 val kgs = pounds / 2.20462262
event.channel.sendMessage("$pounds lb = $kgs kg") event.channel.sendMessage("$pounds lb = $kgs kg")
} }
} }
fun convertMph(event: MessageCreateEvent) { fun convertMph(event: MessageCreateEvent) {
for (mph in extractNumbers("/(\\d+[,.]*\\d*)\\s*mi*ph/gm", event.message.content)) { for (mph in extractNumbers("(\\d+[,.]*\\d*)\\s*mi*ph", event.message.content)) {
val kmph = mph * 1.609344 val kmph = mph * 1.609344
val mps = kmph / 3.6 val mps = kmph / 3.6
event.channel.sendMessage("$mph lb = $kmph km/h = $mps m/s") event.channel.sendMessage("$mph lb = $kmph km/h = $mps m/s")
@ -35,7 +35,7 @@ fun convertMph(event: MessageCreateEvent) {
} }
fun convertKmh(event: MessageCreateEvent) { fun convertKmh(event: MessageCreateEvent) {
for (kmph in extractNumbers("/(\\d+[,.]*\\d*)\\s*km*[p\\/]h/gm", event.message.content)) { for (kmph in extractNumbers("(\\d+[,.]*\\d*)\\s*km*[p\\/]h", event.message.content)) {
val mph = kmph / 1.609344 val mph = kmph / 1.609344
val mps = kmph / 3.6 val mps = kmph / 3.6
event.channel.sendMessage("$kmph km/h = $mph lb = $mps m/s") event.channel.sendMessage("$kmph km/h = $mph lb = $mps m/s")
@ -46,8 +46,8 @@ fun main() {
val token = System.getenv("DISCORD_UNITS_BOT_TOKEN") ?: return val token = System.getenv("DISCORD_UNITS_BOT_TOKEN") ?: return
val api = DiscordApiBuilder() val api = DiscordApiBuilder()
.setAllIntents()
.setToken(token) .setToken(token)
.setAllIntents()
.login() .login()
.join() .join()