From 6734403fb076764cf94d46957a829998bd0813e0 Mon Sep 17 00:00:00 2001 From: Him188 Date: Thu, 23 Apr 2020 14:16:40 +0800 Subject: [PATCH] Add `User.nameCardOrNick`; Rename `Member.takeIfFriend` to `Member.takeIfIsFriend`; Replace `fun Member.isMuted()` with `val Member.isMuted` --- .../kotlin/net.mamoe.mirai/contact/Member.kt | 45 +++++++++++++++---- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt index fb1c5d94d..69e801e7a 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt @@ -19,7 +19,10 @@ import net.mamoe.mirai.message.MessageReceipt import net.mamoe.mirai.message.data.Message import net.mamoe.mirai.message.data.toMessage import net.mamoe.mirai.utils.MiraiInternalAPI +import net.mamoe.mirai.utils.PlannedRemoval +import net.mamoe.mirai.utils.SinceMirai import net.mamoe.mirai.utils.WeakRefProperty +import kotlin.jvm.JvmName import kotlin.jvm.JvmSynthetic import kotlin.time.Duration import kotlin.time.ExperimentalTime @@ -156,15 +159,15 @@ abstract class Member : MemberJavaFriendlyAPI() { /** * 得到此成员作为好友的对象. + * + * @throws IllegalStateException 当此成员不是好友时抛出 */ -inline val Member.asFriend: Friend - get() = this.bot.getFriendOrNull(this.id) ?: error("$this is not a friend") +fun Member.asFriend(): Friend = this.bot.getFriendOrNull(this.id) ?: error("$this is not a friend") /** * 得到此成员作为好友的对象. */ -inline val Member.asFriendOrNull: Friend? - get() = this.bot.getFriendOrNull(this.id) +fun Member.asFriendOrNull(): Friend? = this.bot.getFriendOrNull(this.id) /** * 判断此成员是否为好友 @@ -175,8 +178,8 @@ inline val Member.isFriend: Boolean /** * 如果此成员是好友, 则执行 [block] 并返回其返回值. 否则返回 `null` */ -inline fun Member.takeIfFriend(block: (Friend) -> R): R? { - return this.asFriendOrNull?.let(block) +inline fun Member.takeIfIsFriend(block: (Friend) -> R): R? { + return this.asFriendOrNull()?.let(block) } /** @@ -186,12 +189,36 @@ inline fun Member.takeIfFriend(block: (Friend) -> R): R? { */ val Member.nameCardOrNick: String get() = this.nameCard.takeIf { it.isNotEmpty() } ?: this.nick +/** + * 获取非空群名片或昵称. + * + * @return 当 [User] 为 [Member] 时返回 [Member.nameCardOrNick] + * + * 否则返回 [Member.nick] + */ +@SinceMirai("0.39.0") +val User.nameCardOrNick: String + get() = when (this) { + is Member -> this.nameCardOrNick + else -> this.nick + } + /** * 判断改成员是否处于禁言状态. */ -fun Member.isMuted(): Boolean { - return muteTimeRemaining != 0 && muteTimeRemaining != 0xFFFFFFFF.toInt() -} +@JvmName("isMuted2") // make compiler happy +@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") +@kotlin.internal.InlineOnly // val Member.isMuted 编译在 JVM 也会产生 `public boolean isMuted(Member receive)` +@PlannedRemoval("1.0.0") +@Deprecated("use property instead", ReplaceWith("this.isMuted")) +inline fun Member.isMuted(): Boolean = this.isMuted + +/** + * 判断群成员是否处于禁言状态. + */ +@SinceMirai("0.39.0") +val Member.isMuted: Boolean + get() = muteTimeRemaining != 0 && muteTimeRemaining != 0xFFFFFFFF.toInt() /** * @see Member.mute