Skip to content

Commit 9f12ef1

Browse files
committed
Optimisations and a few new features.
1 parent f5ac055 commit 9f12ef1

File tree

11 files changed

+25
-32
lines changed

11 files changed

+25
-32
lines changed

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
}
66

77
group 'me.devoxin'
8-
version '3.0.5'
8+
version '3.0.6'
99

1010
repositories {
1111
maven {
@@ -20,7 +20,7 @@ repositories {
2020
dependencies {
2121
def kotlinVersion = '1.7.22'
2222
def coroutinesVersion = '1.6.4'
23-
def jdaVersion = '5.0.0-beta.12'
23+
def jdaVersion = '5.0.0-beta.15'
2424

2525
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion"
2626
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:$coroutinesVersion"

src/main/kotlin/me/devoxin/flight/api/CommandClientBuilder.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import me.devoxin.flight.api.hooks.CommandEventAdapter
88
import me.devoxin.flight.api.hooks.DefaultCommandEventAdapter
99
import me.devoxin.flight.internal.arguments.ArgParser
1010
import me.devoxin.flight.internal.parsers.*
11+
import me.devoxin.flight.internal.parsers.TextChannelParser
12+
import me.devoxin.flight.internal.parsers.VoiceChannelParser
1113
import net.dv8tion.jda.api.entities.Member
1214
import net.dv8tion.jda.api.entities.Role
1315
import net.dv8tion.jda.api.entities.User
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package me.devoxin.flight.api.arguments.types
22

3+
import net.dv8tion.jda.api.entities.emoji.CustomEmoji
4+
35
class Emoji(val name: String, val id: Long, val animated: Boolean) {
46
val url: String
57
get() {
68
val extension = if (animated) "gif" else "png"
7-
return "https://cdn.discordapp.com/emojis/$id.$extension"
9+
return CustomEmoji.ICON_URL.format(id, extension)
810
}
911
}
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package me.devoxin.flight.api.arguments.types
22

3+
import kotlinx.coroutines.future.await
34
import net.dv8tion.jda.api.JDA
45
import net.dv8tion.jda.api.entities.Invite
56

@@ -8,5 +9,7 @@ class Invite(
89
val url: String,
910
val code: String
1011
) {
11-
fun resolve() = Invite.resolve(jda, code)
12+
fun resolve(withCounts: Boolean = false) = Invite.resolve(jda, code, withCounts)
13+
14+
suspend fun resolveAsync(withCounts: Boolean = false) = Invite.resolve(jda, code, withCounts).submit().await()
1215
}

src/main/kotlin/me/devoxin/flight/internal/arguments/ArgParser.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class ArgParser(
2727
var quoting = false
2828
var escaping = false
2929

30-
loop@ while (iterator.hasNext()) {
30+
while (iterator.hasNext()) {
3131
val char = iterator.nextChar()
3232
original.append(char)
3333

@@ -41,8 +41,8 @@ class ArgParser(
4141
!quoting && char == '"' -> quoting = true // accept other quote chars
4242
!quoting && char == delimiter -> {
4343
// Maybe this should throw? !test blah -- Extraneous whitespace is ignored.
44-
if (argument.isEmpty()) continue@loop
45-
else break@loop
44+
if (argument.isEmpty()) continue
45+
else break
4646
}
4747
else -> argument.append(char)
4848
}
@@ -51,8 +51,9 @@ class ArgParser(
5151
argument.append('"')
5252

5353
val remainingArgs = StringBuilder().apply {
54-
iterator.forEachRemaining { this.append(it) }
54+
iterator.forEachRemaining(this::append)
5555
}
56+
5657
args = remainingArgs.toString().split(delimiter).toMutableList()
5758
return Pair(argument.toString(), original.split(delimiterStr))
5859
}

src/main/kotlin/me/devoxin/flight/internal/parsers/InviteParser.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ class InviteParser : Parser<Invite> {
1717
}
1818

1919
companion object {
20-
val INVITE_PATTERN = "discord(?:(?:app)?\\.com/invite|\\.gg)/([a-zA-Z\\d]{1,16})".toPattern()
20+
val INVITE_PATTERN = "(?:https?://)?discord(?:(?:app)?\\.com/invite|\\.gg)/([a-zA-Z\\d]{1,16})".toPattern()
2121
}
2222
}

src/main/kotlin/me/devoxin/flight/internal/parsers/MemberParser.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,17 @@ import java.util.*
66

77
class MemberParser : Parser<Member> {
88
override fun parse(ctx: MessageContext, param: String): Optional<Member> {
9-
val snowflake = snowflakeParser.parse(ctx, param).takeIf { it.isPresent }?.get()?.resolved
9+
val snowflake = SnowflakeParser.INSTANCE.parse(ctx, param).takeIf { it.isPresent }?.get()?.resolved
1010

1111
val member = when {
1212
snowflake != null -> ctx.message.mentions.members.firstOrNull { it.user.idLong == snowflake } ?: ctx.guild?.getMemberById(snowflake)
1313
param.length > 5 && param[param.length - 5] == '#' -> {
1414
val tag = param.split("#")
1515
ctx.guild?.memberCache?.find { (it.user.discriminator != "0000" && it.user.name == tag[0]) || it.user.asTag == param }
1616
}
17-
else -> ctx.guild?.getMembersByName(param, false)?.firstOrNull()
17+
else -> ctx.guild?.memberCache?.firstOrNull { it.user.name == param }
1818
}
1919

2020
return Optional.ofNullable(member)
2121
}
22-
23-
companion object {
24-
private val snowflakeParser = SnowflakeParser() // We can reuse this
25-
}
2622
}

src/main/kotlin/me/devoxin/flight/internal/parsers/RoleParser.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,11 @@ import java.util.*
66

77
class RoleParser : Parser<Role> {
88
override fun parse(ctx: MessageContext, param: String): Optional<Role> {
9-
val snowflake = snowflakeParser.parse(ctx, param).takeIf { it.isPresent }?.get()?.resolved
9+
val snowflake = SnowflakeParser.INSTANCE.parse(ctx, param).takeIf { it.isPresent }?.get()?.resolved
1010

1111
return when {
1212
snowflake != null -> Optional.ofNullable(ctx.guild?.getRoleById(snowflake))
1313
else -> Optional.ofNullable(ctx.guild?.roleCache?.firstOrNull { it.name == param })
1414
}
1515
}
16-
17-
companion object {
18-
private val snowflakeParser = SnowflakeParser() // We can reuse this
19-
}
2016
}

src/main/kotlin/me/devoxin/flight/internal/parsers/SnowflakeParser.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class SnowflakeParser : Parser<Snowflake> {
1717
}
1818

1919
companion object {
20+
internal val INSTANCE = SnowflakeParser()
2021
val SNOWFLAKE_PATTERN = "^(?:<(?:@!?|@&|#)(?<sid>\\d{17,21})>|(?<id>\\d{17,21}))$".toPattern()
2122
}
2223
}

src/main/kotlin/me/devoxin/flight/internal/parsers/TextChannelParser.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,11 @@ import java.util.*
66

77
class TextChannelParser : Parser<TextChannel> {
88
override fun parse(ctx: MessageContext, param: String): Optional<TextChannel> {
9-
val snowflake = snowflakeParser.parse(ctx, param).takeIf { it.isPresent }?.get()?.resolved
9+
val snowflake = SnowflakeParser.INSTANCE.parse(ctx, param).takeIf { it.isPresent }?.get()?.resolved
1010

1111
return when {
1212
snowflake != null -> Optional.ofNullable(ctx.guild?.getTextChannelById(snowflake))
13-
else -> Optional.ofNullable(ctx.guild?.textChannels?.firstOrNull { it.name == param })
13+
else -> Optional.ofNullable(ctx.guild?.textChannelCache?.firstOrNull { it.name == param })
1414
}
1515
}
16-
17-
companion object {
18-
val snowflakeParser = SnowflakeParser() // We can reuse this
19-
}
2016
}

0 commit comments

Comments
 (0)