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

[core] Fix message source logic #2513

Merged
merged 13 commits into from
Mar 29, 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
38 changes: 22 additions & 16 deletions mirai-core-api/compatibility-validation/android/api/android.api
Original file line number Diff line number Diff line change
Expand Up @@ -4540,6 +4540,7 @@ public abstract class net/mamoe/mirai/message/data/MessageSource : net/mamoe/mir
public abstract fun getIds ()[I
public abstract fun getInternalIds ()[I
public final fun getKey ()Lnet/mamoe/mirai/message/data/MessageKey;
public abstract fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public abstract fun getOriginalMessage ()Lnet/mamoe/mirai/message/data/MessageChain;
public abstract fun getTargetId ()J
public abstract fun getTime ()I
Expand Down Expand Up @@ -4666,8 +4667,8 @@ public final class net/mamoe/mirai/message/data/MessageUtils {
public static final synthetic fun getContent (Lnet/mamoe/mirai/message/data/Message;)Ljava/lang/String;
public static final synthetic fun getIds (Lnet/mamoe/mirai/message/data/MessageChain;)[I
public static final synthetic fun getInternalId (Lnet/mamoe/mirai/message/data/MessageChain;)[I
public static final fun getKind (Lnet/mamoe/mirai/message/data/MessageSource;)Lnet/mamoe/mirai/message/data/MessageSourceKind;
public static final fun getKind (Lnet/mamoe/mirai/message/data/OnlineMessageSource;)Lnet/mamoe/mirai/message/data/MessageSourceKind;
public static final synthetic fun getKind (Lnet/mamoe/mirai/message/data/MessageSource;)Lnet/mamoe/mirai/message/data/MessageSourceKind;
public static final synthetic fun getKind (Lnet/mamoe/mirai/message/data/OnlineMessageSource;)Lnet/mamoe/mirai/message/data/MessageSourceKind;
public static final synthetic fun getLengthDuration (Lnet/mamoe/mirai/message/data/OnlineAudio;)J
public static final synthetic fun getOrFail (Lnet/mamoe/mirai/message/data/MessageChain;Lnet/mamoe/mirai/message/data/MessageKey;Lkotlin/jvm/functions/Function1;)Lnet/mamoe/mirai/message/data/SingleMessage;
public static synthetic fun getOrFail$default (Lnet/mamoe/mirai/message/data/MessageChain;Lnet/mamoe/mirai/message/data/MessageKey;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lnet/mamoe/mirai/message/data/SingleMessage;
Expand Down Expand Up @@ -4809,18 +4810,18 @@ public abstract class net/mamoe/mirai/message/data/OnlineMessageSource : net/mam

public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Incoming : net/mamoe/mirai/message/data/OnlineMessageSource {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Incoming$Key;
public final fun getFromId ()J
public fun getFromId ()J
public abstract fun getSender ()Lnet/mamoe/mirai/contact/User;
public final fun getTargetId ()J
public fun getTargetId ()J
}

public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Incoming$FromFriend : net/mamoe/mirai/message/data/OnlineMessageSource$Incoming {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Incoming$FromFriend$Key;
public final fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public abstract fun getSender ()Lnet/mamoe/mirai/contact/Friend;
public synthetic fun getSubject ()Lnet/mamoe/mirai/contact/Contact;
public final fun getSubject ()Lnet/mamoe/mirai/contact/Friend;
public final fun getTarget ()Lnet/mamoe/mirai/Bot;
public synthetic fun getTarget ()Lnet/mamoe/mirai/contact/ContactOrBot;
public abstract fun getSubject ()Lnet/mamoe/mirai/contact/Friend;
public final synthetic fun getTarget ()Lnet/mamoe/mirai/Bot;
public abstract fun getTarget ()Lnet/mamoe/mirai/contact/ContactOrBot;
public final fun toString ()Ljava/lang/String;
}

Expand All @@ -4830,6 +4831,7 @@ public final class net/mamoe/mirai/message/data/OnlineMessageSource$Incoming$Fro
public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Incoming$FromGroup : net/mamoe/mirai/message/data/OnlineMessageSource$Incoming {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Incoming$FromGroup$Key;
public final fun getGroup ()Lnet/mamoe/mirai/contact/Group;
public final fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public abstract fun getSender ()Lnet/mamoe/mirai/contact/Member;
public synthetic fun getSubject ()Lnet/mamoe/mirai/contact/Contact;
public fun getSubject ()Lnet/mamoe/mirai/contact/Group;
Expand All @@ -4843,11 +4845,11 @@ public final class net/mamoe/mirai/message/data/OnlineMessageSource$Incoming$Fro

public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Incoming$FromStranger : net/mamoe/mirai/message/data/OnlineMessageSource$Incoming {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Incoming$FromStranger$Key;
public final fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public abstract fun getSender ()Lnet/mamoe/mirai/contact/Stranger;
public synthetic fun getSubject ()Lnet/mamoe/mirai/contact/Contact;
public final fun getSubject ()Lnet/mamoe/mirai/contact/Stranger;
public final fun getTarget ()Lnet/mamoe/mirai/Bot;
public synthetic fun getTarget ()Lnet/mamoe/mirai/contact/ContactOrBot;
public abstract fun getSubject ()Lnet/mamoe/mirai/contact/Stranger;
public final synthetic fun getTarget ()Lnet/mamoe/mirai/Bot;
public abstract fun getTarget ()Lnet/mamoe/mirai/contact/ContactOrBot;
public final fun toString ()Ljava/lang/String;
}

Expand All @@ -4857,11 +4859,11 @@ public final class net/mamoe/mirai/message/data/OnlineMessageSource$Incoming$Fro
public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Incoming$FromTemp : net/mamoe/mirai/message/data/OnlineMessageSource$Incoming {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Incoming$FromTemp$Key;
public final fun getGroup ()Lnet/mamoe/mirai/contact/Group;
public final fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public abstract fun getSender ()Lnet/mamoe/mirai/contact/Member;
public synthetic fun getSubject ()Lnet/mamoe/mirai/contact/Contact;
public final fun getSubject ()Lnet/mamoe/mirai/contact/Member;
public final fun getTarget ()Lnet/mamoe/mirai/Bot;
public synthetic fun getTarget ()Lnet/mamoe/mirai/contact/ContactOrBot;
public abstract fun getSubject ()Lnet/mamoe/mirai/contact/Member;
public final synthetic fun getTarget ()Lnet/mamoe/mirai/Bot;
public abstract fun getTarget ()Lnet/mamoe/mirai/contact/ContactOrBot;
public final fun toString ()Ljava/lang/String;
}

Expand All @@ -4887,6 +4889,7 @@ public final class net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$Key

public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToFriend : net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToFriend$Key;
public final fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public synthetic fun getSubject ()Lnet/mamoe/mirai/contact/Contact;
public final fun getSubject ()Lnet/mamoe/mirai/contact/Friend;
public abstract fun getTarget ()Lnet/mamoe/mirai/contact/Friend;
Expand All @@ -4898,6 +4901,7 @@ public final class net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToF

public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToGroup : net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToGroup$Key;
public final fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public synthetic fun getSubject ()Lnet/mamoe/mirai/contact/Contact;
public final fun getSubject ()Lnet/mamoe/mirai/contact/Group;
public abstract fun getTarget ()Lnet/mamoe/mirai/contact/Group;
Expand All @@ -4909,6 +4913,7 @@ public final class net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToG

public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToStranger : net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToStranger$Key;
public final fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public synthetic fun getSubject ()Lnet/mamoe/mirai/contact/Contact;
public final fun getSubject ()Lnet/mamoe/mirai/contact/Stranger;
public abstract fun getTarget ()Lnet/mamoe/mirai/contact/Stranger;
Expand All @@ -4921,6 +4926,7 @@ public final class net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToS
public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToTemp : net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToTemp$Key;
public final fun getGroup ()Lnet/mamoe/mirai/contact/Group;
public final fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public synthetic fun getSubject ()Lnet/mamoe/mirai/contact/Contact;
public final fun getSubject ()Lnet/mamoe/mirai/contact/Member;
public abstract fun getTarget ()Lnet/mamoe/mirai/contact/Member;
Expand Down
38 changes: 22 additions & 16 deletions mirai-core-api/compatibility-validation/jvm/api/jvm.api
Original file line number Diff line number Diff line change
Expand Up @@ -4540,6 +4540,7 @@ public abstract class net/mamoe/mirai/message/data/MessageSource : net/mamoe/mir
public abstract fun getIds ()[I
public abstract fun getInternalIds ()[I
public final fun getKey ()Lnet/mamoe/mirai/message/data/MessageKey;
public abstract fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public abstract fun getOriginalMessage ()Lnet/mamoe/mirai/message/data/MessageChain;
public abstract fun getTargetId ()J
public abstract fun getTime ()I
Expand Down Expand Up @@ -4666,8 +4667,8 @@ public final class net/mamoe/mirai/message/data/MessageUtils {
public static final synthetic fun getContent (Lnet/mamoe/mirai/message/data/Message;)Ljava/lang/String;
public static final synthetic fun getIds (Lnet/mamoe/mirai/message/data/MessageChain;)[I
public static final synthetic fun getInternalId (Lnet/mamoe/mirai/message/data/MessageChain;)[I
public static final fun getKind (Lnet/mamoe/mirai/message/data/MessageSource;)Lnet/mamoe/mirai/message/data/MessageSourceKind;
public static final fun getKind (Lnet/mamoe/mirai/message/data/OnlineMessageSource;)Lnet/mamoe/mirai/message/data/MessageSourceKind;
public static final synthetic fun getKind (Lnet/mamoe/mirai/message/data/MessageSource;)Lnet/mamoe/mirai/message/data/MessageSourceKind;
public static final synthetic fun getKind (Lnet/mamoe/mirai/message/data/OnlineMessageSource;)Lnet/mamoe/mirai/message/data/MessageSourceKind;
public static final synthetic fun getLengthDuration (Lnet/mamoe/mirai/message/data/OnlineAudio;)J
public static final synthetic fun getOrFail (Lnet/mamoe/mirai/message/data/MessageChain;Lnet/mamoe/mirai/message/data/MessageKey;Lkotlin/jvm/functions/Function1;)Lnet/mamoe/mirai/message/data/SingleMessage;
public static synthetic fun getOrFail$default (Lnet/mamoe/mirai/message/data/MessageChain;Lnet/mamoe/mirai/message/data/MessageKey;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lnet/mamoe/mirai/message/data/SingleMessage;
Expand Down Expand Up @@ -4809,18 +4810,18 @@ public abstract class net/mamoe/mirai/message/data/OnlineMessageSource : net/mam

public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Incoming : net/mamoe/mirai/message/data/OnlineMessageSource {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Incoming$Key;
public final fun getFromId ()J
public fun getFromId ()J
public abstract fun getSender ()Lnet/mamoe/mirai/contact/User;
public final fun getTargetId ()J
public fun getTargetId ()J
}

public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Incoming$FromFriend : net/mamoe/mirai/message/data/OnlineMessageSource$Incoming {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Incoming$FromFriend$Key;
public final fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public abstract fun getSender ()Lnet/mamoe/mirai/contact/Friend;
public synthetic fun getSubject ()Lnet/mamoe/mirai/contact/Contact;
public final fun getSubject ()Lnet/mamoe/mirai/contact/Friend;
public final fun getTarget ()Lnet/mamoe/mirai/Bot;
public synthetic fun getTarget ()Lnet/mamoe/mirai/contact/ContactOrBot;
public abstract fun getSubject ()Lnet/mamoe/mirai/contact/Friend;
public final synthetic fun getTarget ()Lnet/mamoe/mirai/Bot;
public abstract fun getTarget ()Lnet/mamoe/mirai/contact/ContactOrBot;
public final fun toString ()Ljava/lang/String;
}

Expand All @@ -4830,6 +4831,7 @@ public final class net/mamoe/mirai/message/data/OnlineMessageSource$Incoming$Fro
public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Incoming$FromGroup : net/mamoe/mirai/message/data/OnlineMessageSource$Incoming {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Incoming$FromGroup$Key;
public final fun getGroup ()Lnet/mamoe/mirai/contact/Group;
public final fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public abstract fun getSender ()Lnet/mamoe/mirai/contact/Member;
public synthetic fun getSubject ()Lnet/mamoe/mirai/contact/Contact;
public fun getSubject ()Lnet/mamoe/mirai/contact/Group;
Expand All @@ -4843,11 +4845,11 @@ public final class net/mamoe/mirai/message/data/OnlineMessageSource$Incoming$Fro

public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Incoming$FromStranger : net/mamoe/mirai/message/data/OnlineMessageSource$Incoming {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Incoming$FromStranger$Key;
public final fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public abstract fun getSender ()Lnet/mamoe/mirai/contact/Stranger;
public synthetic fun getSubject ()Lnet/mamoe/mirai/contact/Contact;
public final fun getSubject ()Lnet/mamoe/mirai/contact/Stranger;
public final fun getTarget ()Lnet/mamoe/mirai/Bot;
public synthetic fun getTarget ()Lnet/mamoe/mirai/contact/ContactOrBot;
public abstract fun getSubject ()Lnet/mamoe/mirai/contact/Stranger;
public final synthetic fun getTarget ()Lnet/mamoe/mirai/Bot;
public abstract fun getTarget ()Lnet/mamoe/mirai/contact/ContactOrBot;
public final fun toString ()Ljava/lang/String;
}

Expand All @@ -4857,11 +4859,11 @@ public final class net/mamoe/mirai/message/data/OnlineMessageSource$Incoming$Fro
public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Incoming$FromTemp : net/mamoe/mirai/message/data/OnlineMessageSource$Incoming {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Incoming$FromTemp$Key;
public final fun getGroup ()Lnet/mamoe/mirai/contact/Group;
public final fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public abstract fun getSender ()Lnet/mamoe/mirai/contact/Member;
public synthetic fun getSubject ()Lnet/mamoe/mirai/contact/Contact;
public final fun getSubject ()Lnet/mamoe/mirai/contact/Member;
public final fun getTarget ()Lnet/mamoe/mirai/Bot;
public synthetic fun getTarget ()Lnet/mamoe/mirai/contact/ContactOrBot;
public abstract fun getSubject ()Lnet/mamoe/mirai/contact/Member;
public final synthetic fun getTarget ()Lnet/mamoe/mirai/Bot;
public abstract fun getTarget ()Lnet/mamoe/mirai/contact/ContactOrBot;
public final fun toString ()Ljava/lang/String;
}

Expand All @@ -4887,6 +4889,7 @@ public final class net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$Key

public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToFriend : net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToFriend$Key;
public final fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public synthetic fun getSubject ()Lnet/mamoe/mirai/contact/Contact;
public final fun getSubject ()Lnet/mamoe/mirai/contact/Friend;
public abstract fun getTarget ()Lnet/mamoe/mirai/contact/Friend;
Expand All @@ -4898,6 +4901,7 @@ public final class net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToF

public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToGroup : net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToGroup$Key;
public final fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public synthetic fun getSubject ()Lnet/mamoe/mirai/contact/Contact;
public final fun getSubject ()Lnet/mamoe/mirai/contact/Group;
public abstract fun getTarget ()Lnet/mamoe/mirai/contact/Group;
Expand All @@ -4909,6 +4913,7 @@ public final class net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToG

public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToStranger : net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToStranger$Key;
public final fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public synthetic fun getSubject ()Lnet/mamoe/mirai/contact/Contact;
public final fun getSubject ()Lnet/mamoe/mirai/contact/Stranger;
public abstract fun getTarget ()Lnet/mamoe/mirai/contact/Stranger;
Expand All @@ -4921,6 +4926,7 @@ public final class net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToS
public abstract class net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToTemp : net/mamoe/mirai/message/data/OnlineMessageSource$Outgoing {
public static final field Key Lnet/mamoe/mirai/message/data/OnlineMessageSource$Outgoing$ToTemp$Key;
public final fun getGroup ()Lnet/mamoe/mirai/contact/Group;
public final fun getKind ()Lnet/mamoe/mirai/message/data/MessageSourceKind;
public synthetic fun getSubject ()Lnet/mamoe/mirai/contact/Contact;
public final fun getSubject ()Lnet/mamoe/mirai/contact/Member;
public abstract fun getTarget ()Lnet/mamoe/mirai/contact/Member;
Expand Down
35 changes: 17 additions & 18 deletions mirai-core-api/src/commonMain/kotlin/message/data/MessageSource.kt
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,13 @@ public sealed class MessageSource : Message, MessageMetadata, ConstrainSingle {
*/
public abstract val isOriginalMessageInitialized: Boolean

/**
* 消息种类
*
* @since 2.15
*/
public abstract val kind: MessageSourceKind

public abstract override fun toString(): String

@MiraiInternalApi
Expand Down Expand Up @@ -376,26 +383,18 @@ public enum class MessageSourceKind {
STRANGER
}

/**
* 获取 [MessageSourceKind]
/*
public static final net.mamoe.mirai.message.data.MessageSourceKind getKind(net.mamoe.mirai.message.data.MessageSource);
public static final net.mamoe.mirai.message.data.MessageSourceKind getKind(net.mamoe.mirai.message.data.OnlineMessageSource);
*/
public val MessageSource.kind: MessageSourceKind
get() = when (this) {
is OnlineMessageSource -> kind
is OfflineMessageSource -> kind
}
@JvmName("getKind")
@Deprecated("For ABI compatibility", level = DeprecationLevel.HIDDEN)
public fun getKindLegacy(source: MessageSource): MessageSourceKind = source.kind

@JvmName("getKind")
@Deprecated("For ABI compatibility", level = DeprecationLevel.HIDDEN)
public fun getKindLegacy(source: OnlineMessageSource): MessageSourceKind = source.kind

/**
* 获取 [MessageSourceKind]
*/
public val OnlineMessageSource.kind: MessageSourceKind
get() = when (subject) {
is Group -> MessageSourceKind.GROUP
is Friend -> MessageSourceKind.FRIEND
is Member -> MessageSourceKind.TEMP
is Stranger -> MessageSourceKind.STRANGER
else -> error("Internal error: OnlineMessageSource.kind reached an unexpected clause, subject=$subject")
}

// For MessageChain, no need to expose to Java.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public abstract class OfflineMessageSource : MessageSource() {
/**
* 消息种类
*/
public abstract val kind: MessageSourceKind
public abstract override val kind: MessageSourceKind

final override fun toString(): String {
return "[mirai:source:ids=${ids.contentToString()}, internalIds=${internalIds.contentToString()}, from $fromId to $targetId at $time]"
Expand Down
Loading