Skip to content

Commit fc10ea4

Browse files
authored
Support new username system (#825)
see discord/discord-api-docs#6218
1 parent eaf0b35 commit fc10ea4

File tree

34 files changed

+219
-73
lines changed

34 files changed

+219
-73
lines changed

common/api/common.api

Lines changed: 30 additions & 26 deletions
Large diffs are not rendered by default.

common/src/commonMain/kotlin/entity/DiscordUser.kt

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import kotlinx.serialization.descriptors.SerialDescriptor
2727
import kotlinx.serialization.encoding.Decoder
2828
import kotlinx.serialization.encoding.Encoder
2929
import kotlinx.serialization.json.JsonNames
30+
import kotlin.DeprecationLevel.WARNING
3031
import kotlin.contracts.InvocationKind
3132
import kotlin.contracts.contract
3233

@@ -51,7 +52,14 @@ import kotlin.contracts.contract
5152
public data class DiscordUser(
5253
val id: Snowflake,
5354
val username: String,
54-
val discriminator: String,
55+
@Deprecated(
56+
"Discord's username system is changing and discriminators are being removed, see " +
57+
"https://discord.com/developers/docs/change-log#unique-usernames-on-discord for details.",
58+
level = WARNING,
59+
)
60+
val discriminator: Optional<String> = Optional.Missing(),
61+
@SerialName("global_name")
62+
val globalName: Optional<String?> = Optional.Missing(),
5563
val avatar: String?,
5664
val bot: OptionalBoolean = OptionalBoolean.Missing,
5765
val system: OptionalBoolean = OptionalBoolean.Missing,
@@ -92,7 +100,14 @@ public data class DiscordUser(
92100
public data class DiscordOptionallyMemberUser(
93101
val id: Snowflake,
94102
val username: String,
95-
val discriminator: String,
103+
@Deprecated(
104+
"Discord's username system is changing and discriminators are being removed, see " +
105+
"https://discord.com/developers/docs/change-log#unique-usernames-on-discord for details.",
106+
level = WARNING,
107+
)
108+
val discriminator: Optional<String> = Optional.Missing(),
109+
@SerialName("global_name")
110+
val globalName: Optional<String?> = Optional.Missing(),
96111
val avatar: String?,
97112
val bot: OptionalBoolean = OptionalBoolean.Missing,
98113
val system: OptionalBoolean = OptionalBoolean.Missing,

common/src/commonTest/kotlin/json/ChannelTest.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ class ChannelTest {
2525
recipients.value!!.size shouldBe 1
2626
with(recipients.value!!.first()) {
2727
username shouldBe "test"
28+
@Suppress("DEPRECATION")
2829
discriminator shouldBe "9999"
30+
globalName shouldBe null
2931
id.toString() shouldBe "82198898841029460"
3032
avatar shouldBe "33ecab261d4681afa4d85a04691c4a01"
3133
}
@@ -62,13 +64,17 @@ class ChannelTest {
6264
recipients.value!!.size shouldBe 2
6365
with(recipients.value!!.first()) {
6466
username shouldBe "test"
67+
@Suppress("DEPRECATION")
6568
discriminator shouldBe "9999"
69+
globalName shouldBe null
6670
id.toString() shouldBe "82198898841029460"
6771
avatar shouldBe "33ecab261d4681afa4d85a04691c4a01"
6872
}
6973
with(recipients.value!![1]) {
7074
username shouldBe "test2"
75+
@Suppress("DEPRECATION")
7176
discriminator shouldBe "9999"
77+
globalName shouldBe "amazing name"
7278
id.toString() shouldBe "82198810841029460"
7379
avatar shouldBe "33ecab261d4681afa4d85a10691c4a01"
7480
}

common/src/commonTest/kotlin/json/EmojiTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ class EmojiTest {
4545
roles shouldBe listOf("41771983429993000", "41771983429993111").map { Snowflake(it) }
4646
with(user.value!!) {
4747
username shouldBe "Luigi"
48+
@Suppress("DEPRECATION")
4849
discriminator shouldBe "0002"
50+
globalName shouldBe null
4951
id shouldBe "96008815106887111"
5052
avatar shouldBe "5500909a3274e1812beb4e8de6631111"
5153
}

common/src/commonTest/kotlin/json/MessageTest.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ class MessageTest {
3737
editedTimestamp shouldBe null
3838
with(author) {
3939
username shouldBe "Mason"
40+
@Suppress("DEPRECATION")
4041
discriminator shouldBe "9999"
42+
globalName shouldBe null
4143
id shouldBe "53908099506183680"
4244
avatar shouldBe "a_bab14f271d565501444b2ca3be944b25"
4345
}
@@ -75,7 +77,9 @@ class MessageTest {
7577
editedTimestamp shouldBe null
7678
with(author) {
7779
username shouldBe "Mason"
80+
@Suppress("DEPRECATION")
7881
discriminator shouldBe "9999"
82+
globalName shouldBe "Mason!"
7983
id.toString() shouldBe "53908099506183680"
8084
avatar shouldBe "a_bab14f271d565501444b2ca3be944b25"
8185
}

common/src/commonTest/kotlin/json/UserTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ class UserTest {
2020
with(user) {
2121
id.toString() shouldBe "80351110224678912"
2222
username shouldBe "Nelly"
23+
@Suppress("DEPRECATION")
2324
discriminator shouldBe "1337"
25+
globalName shouldBe "Nelly"
2426
avatar shouldBe "8342729096ea3675442027381ff50dfe"
2527
verified.asNullable!! shouldBe true
2628
email.value shouldBe "[email protected]"

common/src/commonTest/resources/json/channel/dmchannel.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
{
77
"username": "test",
88
"discriminator": "9999",
9+
"global_name": null,
910
"id": "82198898841029460",
1011
"avatar": "33ecab261d4681afa4d85a04691c4a01"
1112
}
1213
]
13-
}
14+
}

common/src/commonTest/resources/json/channel/groupdmchannel.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@
55
{
66
"username": "test",
77
"discriminator": "9999",
8+
"global_name": null,
89
"id": "82198898841029460",
910
"avatar": "33ecab261d4681afa4d85a04691c4a01"
1011
},
1112
{
1213
"username": "test2",
1314
"discriminator": "9999",
15+
"global_name": "amazing name",
1416
"id": "82198810841029460",
1517
"avatar": "33ecab261d4681afa4d85a10691c4a01"
1618
}
@@ -19,4 +21,4 @@
1921
"type": 3,
2022
"id": "319674150115710528",
2123
"owner_id": "82198810841029460"
22-
}
24+
}

common/src/commonTest/resources/json/emoji/emoji.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"user": {
66
"username": "Luigi",
77
"discriminator": "0002",
8+
"global_name": null,
89
"id": "96008815106887111",
910
"avatar": "5500909a3274e1812beb4e8de6631111"
1011
},

common/src/commonTest/resources/json/interaction/groupsubcommand.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"public_flags": 64,
99
"id": "695549908383432716",
1010
"discriminator": "9000",
11+
"global_name": null,
1112
"avatar": "68922a048551bb4b0dda88b65e85d8f1"
1213
},
1314
"roles": [

common/src/commonTest/resources/json/interaction/rootcommand.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"public_flags": 64,
99
"id": "695549908383432716",
1010
"discriminator": "9000",
11+
"global_name": null,
1112
"avatar": "68922a048551bb4b0dda88b65e85d8f1"
1213
},
1314
"roles": [

common/src/commonTest/resources/json/interaction/selectmenu.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"user":{
3131
"avatar": "a_d5efa99b3eeaa7dd43acca82f5692432",
3232
"discriminator": "1337",
33+
"global_name": null,
3334
"id": "53908232506183680",
3435
"public_flags": 131141,
3536
"username": "Mason"
@@ -42,6 +43,7 @@
4243
"avatar": null,
4344
"bot": true,
4445
"discriminator": "5284",
46+
"global_name": null,
4547
"id": "845027738276462632",
4648
"public_flags": 0,
4749
"username": "Interactions Test"
@@ -102,6 +104,7 @@
102104
"user": {
103105
"avatar": "a_d5efa99b3eeaa7dd43acca82f5692432",
104106
"discriminator": "1337",
107+
"global_name": null,
105108
"id": "53908232506183680",
106109
"public_flags": 131141,
107110
"username": "Mason"

common/src/commonTest/resources/json/interaction/subcommand.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"public_flags": 64,
99
"id": "695549908383432716",
1010
"discriminator": "9000",
11+
"global_name": null,
1112
"avatar": "68922a048551bb4b0dda88b65e85d8f1"
1213
},
1314
"roles": [

common/src/commonTest/resources/json/message/crossposted.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"author": {
2121
"username": "Mason",
2222
"discriminator": "9999",
23+
"global_name": "Mason!",
2324
"id": "53908099506183680",
2425
"avatar": "a_bab14f271d565501444b2ca3be944b25"
2526
},

common/src/commonTest/resources/json/message/message.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"author": {
2121
"username": "Mason",
2222
"discriminator": "9999",
23+
"global_name": null,
2324
"id": "53908099506183680",
2425
"avatar": "a_bab14f271d565501444b2ca3be944b25"
2526
},

common/src/commonTest/resources/json/user/user.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
"id": "80351110224678912",
33
"username": "Nelly",
44
"discriminator": "1337",
5+
"global_name": "Nelly",
56
"avatar": "8342729096ea3675442027381ff50dfe",
67
"verified": true,
78
"email": "[email protected]",
89
"flags": 64,
910
"premium_type": 1
10-
}
11+
}

core/api/core.api

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5459,25 +5459,27 @@ public final class dev/kord/core/cache/data/ThreadMetadataData$Companion {
54595459

54605460
public final class dev/kord/core/cache/data/UserData {
54615461
public static final field Companion Ldev/kord/core/cache/data/UserData$Companion;
5462-
public synthetic fun <init> (ILdev/kord/common/entity/Snowflake;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ljava/lang/Integer;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V
5463-
public fun <init> (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ljava/lang/Integer;)V
5464-
public synthetic fun <init> (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ljava/lang/Integer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
5462+
public synthetic fun <init> (ILdev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ljava/lang/Integer;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V
5463+
public fun <init> (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ljava/lang/Integer;)V
5464+
public synthetic fun <init> (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ljava/lang/Integer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
54655465
public final fun component1 ()Ldev/kord/common/entity/Snowflake;
54665466
public final fun component2 ()Ljava/lang/String;
5467-
public final fun component3 ()Ljava/lang/String;
5468-
public final fun component4 ()Ljava/lang/String;
5469-
public final fun component5 ()Ldev/kord/common/entity/optional/OptionalBoolean;
5470-
public final fun component6 ()Ldev/kord/common/entity/optional/Optional;
5471-
public final fun component7 ()Ljava/lang/String;
5472-
public final fun component8 ()Ljava/lang/Integer;
5473-
public final fun copy (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ljava/lang/Integer;)Ldev/kord/core/cache/data/UserData;
5474-
public static synthetic fun copy$default (Ldev/kord/core/cache/data/UserData;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ljava/lang/Integer;ILjava/lang/Object;)Ldev/kord/core/cache/data/UserData;
5467+
public final fun component3 ()Ldev/kord/common/entity/optional/Optional;
5468+
public final fun component4 ()Ldev/kord/common/entity/optional/Optional;
5469+
public final fun component5 ()Ljava/lang/String;
5470+
public final fun component6 ()Ldev/kord/common/entity/optional/OptionalBoolean;
5471+
public final fun component7 ()Ldev/kord/common/entity/optional/Optional;
5472+
public final fun component8 ()Ljava/lang/String;
5473+
public final fun component9 ()Ljava/lang/Integer;
5474+
public final fun copy (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ljava/lang/Integer;)Ldev/kord/core/cache/data/UserData;
5475+
public static synthetic fun copy$default (Ldev/kord/core/cache/data/UserData;Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ljava/lang/String;Ljava/lang/Integer;ILjava/lang/Object;)Ldev/kord/core/cache/data/UserData;
54755476
public fun equals (Ljava/lang/Object;)Z
54765477
public final fun getAccentColor ()Ljava/lang/Integer;
54775478
public final fun getAvatar ()Ljava/lang/String;
54785479
public final fun getBanner ()Ljava/lang/String;
54795480
public final fun getBot ()Ldev/kord/common/entity/optional/OptionalBoolean;
5480-
public final fun getDiscriminator ()Ljava/lang/String;
5481+
public final fun getDiscriminator ()Ldev/kord/common/entity/optional/Optional;
5482+
public final fun getGlobalName ()Ldev/kord/common/entity/optional/Optional;
54815483
public final fun getId ()Ldev/kord/common/entity/Snowflake;
54825484
public final fun getPublicFlags ()Ldev/kord/common/entity/optional/Optional;
54835485
public final fun getUsername ()Ljava/lang/String;
@@ -5781,6 +5783,7 @@ public final class dev/kord/core/entity/Asset$Companion {
57815783
public final fun applicationCover (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/core/Kord;)Ldev/kord/core/entity/Asset;
57825784
public final fun applicationIcon (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/core/Kord;)Ldev/kord/core/entity/Asset;
57835785
public final fun defaultUserAvatar (ILdev/kord/core/Kord;)Ldev/kord/core/entity/Asset;
5786+
public final fun defaultUserAvatar (Ldev/kord/common/entity/Snowflake;Ldev/kord/core/Kord;)Ldev/kord/core/entity/Asset;
57845787
public final fun emoji (Ldev/kord/common/entity/Snowflake;ZLdev/kord/core/Kord;)Ldev/kord/core/entity/Asset;
57855788
public final fun guildBanner (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/core/Kord;)Ldev/kord/core/entity/Asset;
57865789
public final fun guildDiscoverySplash (Ldev/kord/common/entity/Snowflake;Ljava/lang/String;Ldev/kord/core/Kord;)Ldev/kord/core/entity/Asset;
@@ -6595,6 +6598,7 @@ public final class dev/kord/core/entity/Member : dev/kord/core/entity/User, dev/
65956598
public fun fetchMemberOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
65966599
public final fun getCommunicationDisabledUntil ()Lkotlinx/datetime/Instant;
65976600
public final fun getDisplayName ()Ljava/lang/String;
6601+
public final fun getEffectiveName ()Ljava/lang/String;
65986602
public fun getGuild ()Ldev/kord/core/behavior/GuildBehavior;
65996603
public fun getGuild (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
66006604
public fun getGuildId ()Ldev/kord/common/entity/Snowflake;
@@ -7201,6 +7205,7 @@ public class dev/kord/core/entity/User : dev/kord/core/behavior/UserBehavior {
72017205
public final fun getDiscriminator ()Ljava/lang/String;
72027206
public fun getDmChannel (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
72037207
public fun getDmChannelOrNull (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
7208+
public final fun getGlobalName ()Ljava/lang/String;
72047209
public fun getId ()Ldev/kord/common/entity/Snowflake;
72057210
public fun getKord ()Ldev/kord/core/Kord;
72067211
public fun getMention ()Ljava/lang/String;
@@ -7242,6 +7247,10 @@ public final class dev/kord/core/entity/User$Avatar : dev/kord/core/KordObject {
72427247
public fun toString ()Ljava/lang/String;
72437248
}
72447249

7250+
public final class dev/kord/core/entity/UserKt {
7251+
public static final fun getEffectiveName (Ldev/kord/core/entity/User;)Ljava/lang/String;
7252+
}
7253+
72457254
public final class dev/kord/core/entity/VoiceState : dev/kord/core/KordObject, dev/kord/core/entity/Strategizable {
72467255
public fun <init> (Ldev/kord/core/cache/data/VoiceStateData;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;)V
72477256
public synthetic fun <init> (Ldev/kord/core/cache/data/VoiceStateData;Ldev/kord/core/Kord;Ldev/kord/core/supplier/EntitySupplier;ILkotlin/jvm/internal/DefaultConstructorMarker;)V

core/src/commonMain/kotlin/cache/data/UserData.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,21 @@ import dev.kord.common.entity.UserFlags
99
import dev.kord.common.entity.optional.Optional
1010
import dev.kord.common.entity.optional.OptionalBoolean
1111
import kotlinx.serialization.Serializable
12+
import kotlin.DeprecationLevel.WARNING
1213

1314
private val WebhookData.nullableUserId get() = userId.value
1415

1516
@Serializable
1617
public data class UserData(
1718
val id: Snowflake,
1819
val username: String,
19-
val discriminator: String,
20+
@Deprecated(
21+
"Discord's username system is changing and discriminators are being removed, see " +
22+
"https://discord.com/developers/docs/change-log#unique-usernames-on-discord for details.",
23+
level = WARNING,
24+
)
25+
val discriminator: Optional<String> = Optional.Missing(),
26+
val globalName: Optional<String?> = Optional.Missing(),
2027
val avatar: String? = null,
2128
val bot: OptionalBoolean = OptionalBoolean.Missing,
2229
val publicFlags: Optional<UserFlags> = Optional.Missing(),
@@ -33,11 +40,11 @@ public data class UserData(
3340
}
3441

3542
public fun from(entity: DiscordUser): UserData = with(entity) {
36-
UserData(id, username, discriminator, avatar, bot, publicFlags, banner, accentColor)
43+
UserData(id, username, @Suppress("DEPRECATION") discriminator, globalName, avatar, bot, publicFlags, banner, accentColor)
3744
}
3845

3946
public fun from(entity: DiscordOptionallyMemberUser): UserData = with(entity) {
40-
UserData(id, username, discriminator, avatar, bot, publicFlags)
47+
UserData(id, username, @Suppress("DEPRECATION") discriminator, globalName, avatar, bot, publicFlags)
4148
}
4249

4350
}

core/src/commonMain/kotlin/entity/Asset.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,19 @@ public class Asset private constructor(
5151
public fun userBanner(userId: Snowflake, hash: String, kord: Kord): Asset =
5252
Asset(hash.isAnimated, DiscordCdn.userBanner(userId, hash), kord)
5353

54+
@Suppress("DEPRECATION")
55+
@Deprecated(
56+
"Discord's username system is changing and discriminators are being removed, see " +
57+
"https://discord.com/developers/docs/change-log#unique-usernames-on-discord for details.",
58+
ReplaceWith("Asset.defaultUserAvatar(userId, kord)", imports = ["dev.kord.core.entity.Asset"]),
59+
DeprecationLevel.WARNING,
60+
)
5461
public fun defaultUserAvatar(discriminator: Int, kord: Kord): Asset =
5562
Asset(isAnimated = false, DiscordCdn.defaultAvatar(discriminator), kord, recommendedFormat = PNG)
5663

64+
public fun defaultUserAvatar(userId: Snowflake, kord: Kord): Asset =
65+
Asset(isAnimated = false, DiscordCdn.defaultUserAvatar(userId), kord, recommendedFormat = PNG)
66+
5767
public fun userAvatar(userId: Snowflake, hash: String, kord: Kord): Asset =
5868
Asset(hash.isAnimated, DiscordCdn.userAvatar(userId, hash), kord)
5969

core/src/commonMain/kotlin/entity/Icon.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,12 @@ public sealed class Icon(
4949
public class EmojiIcon(animated: Boolean, emojiId: Snowflake, kord: Kord) :
5050
Icon(if (animated) Image.Format.GIF else Image.Format.WEBP, animated, DiscordCdn.emoji(emojiId), kord)
5151

52-
public class DefaultUserAvatar(discriminator: Int, kord: Kord) :
53-
Icon(Image.Format.PNG /* Discord Default Avatars only support PNG */, false, DiscordCdn.defaultAvatar(discriminator), kord)
52+
public class DefaultUserAvatar private constructor(cdnUrl: CdnUrl, kord: Kord) :
53+
Icon(Image.Format.PNG /* Discord Default Avatars only support PNG */, false, cdnUrl, kord) {
54+
@Suppress("DEPRECATION")
55+
public constructor(discriminator: Int, kord: Kord) : this(DiscordCdn.defaultAvatar(discriminator), kord)
56+
internal constructor(userId: Snowflake, kord: Kord) : this(DiscordCdn.defaultUserAvatar(userId), kord)
57+
}
5458

5559
public class UserAvatar(userId: Snowflake, avatarHash: String, kord: Kord) :
5660
Icon(if (avatarHash.startsWith("a_")) Image.Format.GIF else Image.Format.WEBP, avatarHash.startsWith("a_"), DiscordCdn.userAvatar(userId, avatarHash), kord)

0 commit comments

Comments
 (0)