From f041a7eda7e659254689911858b5c121de38bb01 Mon Sep 17 00:00:00 2001 From: Him188 Date: Tue, 5 May 2020 12:18:35 +0800 Subject: [PATCH] Use strong reference in message events, fix #303 --- .../kotlin/net.mamoe.mirai/message/ContactMessage.kt | 3 --- .../kotlin/net.mamoe.mirai/message/FriendMessage.kt | 5 +---- .../kotlin/net.mamoe.mirai/message/GroupMessage.kt | 5 +---- .../commonMain/kotlin/net.mamoe.mirai/message/TempMessage.kt | 5 +---- 4 files changed, 3 insertions(+), 15 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/ContactMessage.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/ContactMessage.kt index f8e77fc04..0cffddc74 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/ContactMessage.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/ContactMessage.kt @@ -73,7 +73,6 @@ abstract class MessagePacketBase : P /** * 接受到这条消息的 */ - @WeakRefProperty abstract override val bot: Bot /** @@ -85,7 +84,6 @@ abstract class MessagePacketBase : P * * 在回复消息时, 可通过 [subject] 作为回复对象 */ - @WeakRefProperty abstract val subject: TSubject /** @@ -93,7 +91,6 @@ abstract class MessagePacketBase : P * * 在好友消息时为 [Friend] 的实例, 在群消息时为 [Member] 的实例 */ - @WeakRefProperty abstract val sender: TSender abstract val senderName: String diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/FriendMessage.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/FriendMessage.kt index 92430b146..4e1beddb9 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/FriendMessage.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/FriendMessage.kt @@ -18,14 +18,12 @@ import net.mamoe.mirai.message.data.MessageChain import net.mamoe.mirai.message.data.MessageSource import net.mamoe.mirai.message.data.OnlineMessageSource import net.mamoe.mirai.message.data.source -import net.mamoe.mirai.utils.getValue -import net.mamoe.mirai.utils.unsafeWeakRef /** * 好友消息事件 */ class FriendMessage constructor( - sender: Friend, + override val sender: Friend, override val message: MessageChain, override val time: Int ) : ContactMessage(), BroadcastControllable { @@ -34,7 +32,6 @@ class FriendMessage constructor( check(source is OnlineMessageSource.Incoming.FromFriend) { "source provided to a FriendMessage must be an instance of OnlineMessageSource.Incoming.FromFriend" } } - override val sender: Friend by sender.unsafeWeakRef() override val bot: Bot get() = sender.bot override val subject: Friend get() = sender override val senderName: String get() = sender.nick diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/GroupMessage.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/GroupMessage.kt index d3bde0faa..ce84378bc 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/GroupMessage.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/GroupMessage.kt @@ -15,8 +15,6 @@ import net.mamoe.mirai.contact.Member import net.mamoe.mirai.contact.MemberPermission import net.mamoe.mirai.event.Event import net.mamoe.mirai.message.data.* -import net.mamoe.mirai.utils.getValue -import net.mamoe.mirai.utils.unsafeWeakRef /** * 群消息事件 @@ -30,7 +28,7 @@ class GroupMessage( * 发送方权限. */ val permission: MemberPermission, - sender: Member, + override val sender: Member, override val message: MessageChain, override val time: Int ) : ContactMessage(), Event { @@ -39,7 +37,6 @@ class GroupMessage( check(source is OnlineMessageSource.Incoming.FromGroup) { "source provided to a GroupMessage must be an instance of OnlineMessageSource.Incoming.FromGroup" } } - override val sender: Member by sender.unsafeWeakRef() val group: Group get() = sender.group override val bot: Bot get() = sender.bot diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/TempMessage.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/TempMessage.kt index b54907e24..997720930 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/TempMessage.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/TempMessage.kt @@ -10,15 +10,13 @@ import net.mamoe.mirai.message.data.MessageSource import net.mamoe.mirai.message.data.OnlineMessageSource import net.mamoe.mirai.message.data.source import net.mamoe.mirai.utils.SinceMirai -import net.mamoe.mirai.utils.getValue -import net.mamoe.mirai.utils.unsafeWeakRef /** * 临时会话消息 */ @SinceMirai("0.35.0") class TempMessage( - sender: Member, + override val sender: Member, override val message: MessageChain, override val time: Int ) : ContactMessage(), BroadcastControllable { @@ -27,7 +25,6 @@ class TempMessage( check(source is OnlineMessageSource.Incoming.FromTemp) { "source provided to a TempMessage must be an instance of OnlineMessageSource.Incoming.FromTemp" } } - override val sender: Member by sender.unsafeWeakRef() override val bot: Bot get() = sender.bot override val subject: Member get() = sender inline val group: Group get() = sender.group