Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
212 changes: 202 additions & 10 deletions common/api/common.api

Large diffs are not rendered by default.

184 changes: 179 additions & 5 deletions common/api/common.klib.api

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
// THIS FILE IS AUTO-GENERATED, DO NOT EDIT!
@file:Suppress(names = arrayOf("IncorrectFormatting", "ReplaceArrayOfWithLiteral", "SpellCheckingInspection", "GrazieInspection"))

package dev.kord.common.entity

import kotlin.LazyThreadSafetyMode.PUBLICATION
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializable
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder

/**
*
*
* See [NameplatePalette]s in the [Discord Developer Documentation](https://discord.com/developers/docs/resources/user#nameplate-nameplate-structure).
*/
@Serializable(with = NameplatePalette.Serializer::class)
public sealed class NameplatePalette(
/**
* The raw value used by Discord.
*/
public val `value`: String,
) {
final override fun equals(other: Any?): Boolean = this === other || (other is NameplatePalette && this.value == other.value)

final override fun hashCode(): Int = value.hashCode()

final override fun toString(): String = if (this is Unknown) "NameplatePalette.Unknown(value=$value)" else "NameplatePalette.${this::class.simpleName}"

/**
* An unknown [NameplatePalette].
*
* This is used as a fallback for [NameplatePalette]s that haven't been added to Kord yet.
*/
public class Unknown internal constructor(
`value`: String,
) : NameplatePalette(value)

public object CRIMSON : NameplatePalette("crimson")

public object BERRY : NameplatePalette("berry")

public object SKY : NameplatePalette("sky")

public object TEAL : NameplatePalette("teal")

public object FOREST : NameplatePalette("forest")

public object BUBBLEGUM : NameplatePalette("bubble_gum")

public object VIOLET : NameplatePalette("violet")

public object COBALT : NameplatePalette("cobalt")

public object CLOVER : NameplatePalette("clover")

public object LEMON : NameplatePalette("lemon")

public object WHITE : NameplatePalette("white")

internal object Serializer : KSerializer<NameplatePalette> {
override val descriptor: SerialDescriptor =
PrimitiveSerialDescriptor("dev.kord.common.entity.NameplatePalette", PrimitiveKind.STRING)

override fun serialize(encoder: Encoder, `value`: NameplatePalette) {
encoder.encodeString(value.value)
}

override fun deserialize(decoder: Decoder): NameplatePalette = from(decoder.decodeString())
}

public companion object {
/**
* A [List] of all known [NameplatePalette]s.
*/
public val entries: List<NameplatePalette> by lazy(mode = PUBLICATION) {
listOf(
CRIMSON,
BERRY,
SKY,
TEAL,
FOREST,
BUBBLEGUM,
VIOLET,
COBALT,
CLOVER,
LEMON,
WHITE,
)
}

/**
* Returns an instance of [NameplatePalette] with [NameplatePalette.value] equal to the specified [value].
*/
public fun from(`value`: String): NameplatePalette = when (value) {
"crimson" -> CRIMSON
"berry" -> BERRY
"sky" -> SKY
"teal" -> TEAL
"forest" -> FOREST
"bubble_gum" -> BUBBLEGUM
"violet" -> VIOLET
"cobalt" -> COBALT
"clover" -> CLOVER
"lemon" -> LEMON
"white" -> WHITE
else -> Unknown(value)
}
}
}
17 changes: 17 additions & 0 deletions common/src/commonMain/kotlin/entity/DiscordAvatarDecoration.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package dev.kord.common.entity

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

/**
* The representation for the users avatar decoration.
*
* @property asset The avatar decoration hash
* @property skuId The ID of the avatar decoration's SKU
*/
@Serializable
public data class DiscordAvatarDecoration(
val asset: String,
@SerialName("sku_id")
val skuId: Snowflake
)
1 change: 1 addition & 0 deletions common/src/commonMain/kotlin/entity/DiscordMessage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -390,6 +390,7 @@ public data class DiscordPartialMessage(
@SerialName("referenced_message")
val referencedMessage: Optional<DiscordMessage?> = Optional.Missing(),
val interaction: Optional<DiscordMessageInteraction> = Optional.Missing(),
val thread: Optional<DiscordChannel> = Optional.Missing(),
val position: OptionalInt = OptionalInt.Missing,
)

Expand Down
54 changes: 54 additions & 0 deletions common/src/commonMain/kotlin/entity/DiscordNameplate.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
@file:Generate(
STRING_KORD_ENUM,
name = "NameplatePalette",
docUrl = "https://discord.com/developers/docs/resources/user#nameplate-nameplate-structure",
entries = [
Entry("CRIMSON", stringValue = "crimson"),
Entry("BERRY", stringValue = "berry"),
Entry("SKY", stringValue = "sky"),
Entry("TEAL", stringValue = "teal"),
Entry("FOREST", stringValue = "forest"),
Entry("BUBBLEGUM", stringValue = "bubble_gum"),
Entry("VIOLET", stringValue = "violet"),
Entry("COBALT", stringValue = "cobalt"),
Entry("CLOVER", stringValue = "clover"),
Entry("LEMON", stringValue = "lemon"),
Entry("WHITE", stringValue = "white"),
]
)

package dev.kord.common.entity

import dev.kord.common.entity.optional.Optional
import dev.kord.ksp.Generate
import dev.kord.ksp.Generate.EntityType.STRING_KORD_ENUM
import dev.kord.ksp.Generate.Entry
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

/**
* The representation for a users collectible
*
* @property nameplate The users nameplate
*/
@Serializable
public data class DiscordCollectible(
val nameplate: Optional<DiscordNameplate> = Optional.Missing()
)

/**
* The representation of a user's nameplate.
*
* @property skuId The ID of the nameplate SKU
* @property asset The path to the nameplate asset
* @property label The label of this nameplate. Currently unused
* @property palette The background color of the nameplate
*/
@Serializable
public data class DiscordNameplate(
@SerialName("sku_id")
val skuId: Snowflake,
val asset: String,
val label: String,
val palette: NameplatePalette
)
22 changes: 22 additions & 0 deletions common/src/commonMain/kotlin/entity/DiscordPrimaryGuild.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package dev.kord.common.entity

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

/**
* The representation of a users primary guild
*
* @property identityGuildId The ID of the users primary guild
* @property identityEnabled Whether the user is displaying the primary guild's server tag
* @property tag The text of the user's server tag
* @property badge The server tag badge hash
*/
@Serializable
public data class DiscordPrimaryGuild(
@SerialName("identity_guild_id")
val identityGuildId: Snowflake?,
@SerialName("identity_enabled")
val identityEnabled: Boolean?,
val tag: String?,
val badge: String?
)
11 changes: 8 additions & 3 deletions common/src/commonMain/kotlin/entity/DiscordUser.kt
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,9 @@ import kotlinx.serialization.json.JsonNames
* @param publicFlags The public flags on a user's account. Unlike [flags], these **are** visible ot other users.
* @param banner The user's banner hash.
* @param accentColor The user's banner color encoded as an integer representation of hexadecimal color code
* @param avatarDecoration The user's avatar decoration hash.
* @param avatarDecorationData The user's avatar decoration data.
* @param collectibles The user's collectibles.
* @param primaryGuild The User's primary guild.
*/
@Serializable
public data class DiscordUser(
Expand All @@ -94,8 +96,11 @@ public data class DiscordUser(
val banner: String? = null,
@SerialName("accent_color")
val accentColor: Int? = null,
@SerialName("avatar_decoration")
val avatarDecoration: Optional<String?> = Optional.Missing(),
@SerialName("avatar_decoration_data")
val avatarDecorationData: Optional<DiscordAvatarDecoration?> = Optional.Missing(),
val collectibles: Optional<DiscordCollectible?> = Optional.Missing(),
@SerialName("primary_guild")
val primaryGuild: Optional<DiscordPrimaryGuild?> = Optional.Missing()
)

/**
Expand Down
Loading
Loading