Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add guild member flags #760

Merged
merged 2 commits into from
Feb 17, 2023
Merged
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
53 changes: 46 additions & 7 deletions common/api/common.api
Original file line number Diff line number Diff line change
Expand Up @@ -3677,25 +3677,27 @@ public final class dev/kord/common/entity/DiscordGuildIntegrations$Companion {

public final class dev/kord/common/entity/DiscordGuildMember {
public static final field Companion Ldev/kord/common/entity/DiscordGuildMember$Companion;
public synthetic fun <init> (ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;Lkotlinx/datetime/Instant;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V
public fun <init> (Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;Lkotlinx/datetime/Instant;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;)V
public synthetic fun <init> (Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;Lkotlinx/datetime/Instant;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun <init> (ILdev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;Lkotlinx/datetime/Instant;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/GuildMemberFlags;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V
public fun <init> (Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;Lkotlinx/datetime/Instant;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/GuildMemberFlags;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;)V
public synthetic fun <init> (Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;Lkotlinx/datetime/Instant;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/GuildMemberFlags;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ldev/kord/common/entity/optional/Optional;
public final fun component10 ()Ldev/kord/common/entity/optional/Optional;
public final fun component11 ()Ldev/kord/common/entity/optional/Optional;
public final fun component2 ()Ldev/kord/common/entity/optional/Optional;
public final fun component3 ()Ljava/util/List;
public final fun component4 ()Lkotlinx/datetime/Instant;
public final fun component5 ()Ldev/kord/common/entity/optional/Optional;
public final fun component6 ()Ldev/kord/common/entity/optional/OptionalBoolean;
public final fun component7 ()Ldev/kord/common/entity/optional/OptionalBoolean;
public final fun component8 ()Ldev/kord/common/entity/optional/OptionalBoolean;
public final fun component9 ()Ldev/kord/common/entity/optional/Optional;
public final fun copy (Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;Lkotlinx/datetime/Instant;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;)Ldev/kord/common/entity/DiscordGuildMember;
public static synthetic fun copy$default (Ldev/kord/common/entity/DiscordGuildMember;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;Lkotlinx/datetime/Instant;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ILjava/lang/Object;)Ldev/kord/common/entity/DiscordGuildMember;
public final fun component8 ()Ldev/kord/common/entity/GuildMemberFlags;
public final fun component9 ()Ldev/kord/common/entity/optional/OptionalBoolean;
public final fun copy (Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;Lkotlinx/datetime/Instant;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/GuildMemberFlags;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;)Ldev/kord/common/entity/DiscordGuildMember;
public static synthetic fun copy$default (Ldev/kord/common/entity/DiscordGuildMember;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;Ljava/util/List;Lkotlinx/datetime/Instant;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/GuildMemberFlags;Ldev/kord/common/entity/optional/OptionalBoolean;Ldev/kord/common/entity/optional/Optional;Ldev/kord/common/entity/optional/Optional;ILjava/lang/Object;)Ldev/kord/common/entity/DiscordGuildMember;
public fun equals (Ljava/lang/Object;)Z
public final fun getAvatar ()Ldev/kord/common/entity/optional/Optional;
public final fun getCommunicationDisabledUntil ()Ldev/kord/common/entity/optional/Optional;
public final fun getDeaf ()Ldev/kord/common/entity/optional/OptionalBoolean;
public final fun getFlags ()Ldev/kord/common/entity/GuildMemberFlags;
public final fun getJoinedAt ()Lkotlinx/datetime/Instant;
public final fun getMute ()Ldev/kord/common/entity/optional/OptionalBoolean;
public final fun getNick ()Ldev/kord/common/entity/optional/Optional;
Expand Down Expand Up @@ -6247,6 +6249,43 @@ public final class dev/kord/common/entity/GuildFeature$WelcomeScreenEnabled : de
public static final field INSTANCE Ldev/kord/common/entity/GuildFeature$WelcomeScreenEnabled;
}

public final class dev/kord/common/entity/GuildMemberFlag : java/lang/Enum {
public static final field BYPASSES_VERIFICATION Ldev/kord/common/entity/GuildMemberFlag;
public static final field COMPLETED_ONBOARDING Ldev/kord/common/entity/GuildMemberFlag;
public static final field Companion Ldev/kord/common/entity/GuildMemberFlag$Companion;
public static final field DID_REJOIN Ldev/kord/common/entity/GuildMemberFlag;
public static final field STARTED_ONBOARDING Ldev/kord/common/entity/GuildMemberFlag;
public final fun getCode ()I
public static fun valueOf (Ljava/lang/String;)Ldev/kord/common/entity/GuildMemberFlag;
public static fun values ()[Ldev/kord/common/entity/GuildMemberFlag;
}

public final class dev/kord/common/entity/GuildMemberFlag$Companion {
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}

public final class dev/kord/common/entity/GuildMemberFlags {
public static final field Companion Ldev/kord/common/entity/GuildMemberFlags$Companion;
public fun <init> (I)V
public final fun component1 ()I
public final fun contains (Ldev/kord/common/entity/GuildMemberFlags;)Z
public final fun copy (I)Ldev/kord/common/entity/GuildMemberFlags;
public static synthetic fun copy$default (Ldev/kord/common/entity/GuildMemberFlags;IILjava/lang/Object;)Ldev/kord/common/entity/GuildMemberFlags;
public fun equals (Ljava/lang/Object;)Z
public final fun getCode ()I
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class dev/kord/common/entity/GuildMemberFlags$Companion : kotlinx/serialization/KSerializer {
public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/kord/common/entity/GuildMemberFlags;
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/kord/common/entity/GuildMemberFlags;)V
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
public final fun serializer ()Lkotlinx/serialization/KSerializer;
}

public final class dev/kord/common/entity/GuildScheduledEventEntityMetadata {
public static final field Companion Ldev/kord/common/entity/GuildScheduledEventEntityMetadata$Companion;
public fun <init> ()V
Expand Down
38 changes: 38 additions & 0 deletions common/src/main/kotlin/entity/Member.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,14 @@ import dev.kord.common.entity.optional.Optional
import dev.kord.common.entity.optional.OptionalBoolean
import dev.kord.common.entity.optional.OptionalSnowflake
import kotlinx.datetime.Instant
import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerialName
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

@Serializable
public data class DiscordGuildMember(
Expand All @@ -22,6 +28,7 @@ public data class DiscordGuildMember(
val premiumSince: Optional<Instant?> = Optional.Missing(),
val deaf: OptionalBoolean = OptionalBoolean.Missing,
val mute: OptionalBoolean = OptionalBoolean.Missing,
val flags: GuildMemberFlags,
val pending: OptionalBoolean = OptionalBoolean.Missing,
val avatar: Optional<String?> = Optional.Missing(),
@SerialName("communication_disabled_until")
Expand Down Expand Up @@ -106,3 +113,34 @@ public data class DiscordThreadMember(
val joinTimestamp: Instant,
val flags: Int
)

@Serializable(with = GuildMemberFlags.Companion::class)
public data class GuildMemberFlags(val code: Int) {

public operator fun contains(flag: GuildMemberFlags): Boolean {
return this.code and flag.code == flag.code
}

public companion object : KSerializer<GuildMemberFlags> {

override val descriptor: SerialDescriptor
get() = PrimitiveSerialDescriptor("flags", PrimitiveKind.INT)

override fun deserialize(decoder: Decoder): GuildMemberFlags {
return GuildMemberFlags(decoder.decodeInt())
}

override fun serialize(encoder: Encoder, value: GuildMemberFlags) {
encoder.encodeInt(value.code)
}
}

}

@Serializable
public enum class GuildMemberFlag(public val code: Int) {
DID_REJOIN(1.shl(0)),
COMPLETED_ONBOARDING(1.shl(1)),
BYPASSES_VERIFICATION(1.shl(2)),
STARTED_ONBOARDING(1.shl(3))
}
1 change: 1 addition & 0 deletions common/src/test/kotlin/json/GuildTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ class GuildTest {
joinedAt shouldBe Instant.parse("2015-04-26T06:26:56.936000+00:00")
deaf shouldBe false
mute shouldBe false
flags shouldBe GuildMemberFlags(0)
}
}

Expand Down
3 changes: 2 additions & 1 deletion common/src/test/resources/json/guild/guildmember.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@
"roles": [],
"joined_at": "2015-04-26T06:26:56.936000+00:00",
"deaf": false,
"mute": false
"mute": false,
"flags": 0
}