Commit f041a7ed authored by Him188's avatar Him188

Use strong reference in message events, fix #303

parent 63241670
...@@ -73,7 +73,6 @@ abstract class MessagePacketBase<out TSender : User, out TSubject : Contact> : P ...@@ -73,7 +73,6 @@ abstract class MessagePacketBase<out TSender : User, out TSubject : Contact> : P
/** /**
* 接受到这条消息的 * 接受到这条消息的
*/ */
@WeakRefProperty
abstract override val bot: Bot abstract override val bot: Bot
/** /**
...@@ -85,7 +84,6 @@ abstract class MessagePacketBase<out TSender : User, out TSubject : Contact> : P ...@@ -85,7 +84,6 @@ abstract class MessagePacketBase<out TSender : User, out TSubject : Contact> : P
* *
* 在回复消息时, 可通过 [subject] 作为回复对象 * 在回复消息时, 可通过 [subject] 作为回复对象
*/ */
@WeakRefProperty
abstract val subject: TSubject abstract val subject: TSubject
/** /**
...@@ -93,7 +91,6 @@ abstract class MessagePacketBase<out TSender : User, out TSubject : Contact> : P ...@@ -93,7 +91,6 @@ abstract class MessagePacketBase<out TSender : User, out TSubject : Contact> : P
* *
* 在好友消息时为 [Friend] 的实例, 在群消息时为 [Member] 的实例 * 在好友消息时为 [Friend] 的实例, 在群消息时为 [Member] 的实例
*/ */
@WeakRefProperty
abstract val sender: TSender abstract val sender: TSender
abstract val senderName: String abstract val senderName: String
......
...@@ -18,14 +18,12 @@ import net.mamoe.mirai.message.data.MessageChain ...@@ -18,14 +18,12 @@ import net.mamoe.mirai.message.data.MessageChain
import net.mamoe.mirai.message.data.MessageSource import net.mamoe.mirai.message.data.MessageSource
import net.mamoe.mirai.message.data.OnlineMessageSource import net.mamoe.mirai.message.data.OnlineMessageSource
import net.mamoe.mirai.message.data.source import net.mamoe.mirai.message.data.source
import net.mamoe.mirai.utils.getValue
import net.mamoe.mirai.utils.unsafeWeakRef
/** /**
* 好友消息事件 * 好友消息事件
*/ */
class FriendMessage constructor( class FriendMessage constructor(
sender: Friend, override val sender: Friend,
override val message: MessageChain, override val message: MessageChain,
override val time: Int override val time: Int
) : ContactMessage(), BroadcastControllable { ) : ContactMessage(), BroadcastControllable {
...@@ -34,7 +32,6 @@ class FriendMessage constructor( ...@@ -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" } 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 bot: Bot get() = sender.bot
override val subject: Friend get() = sender override val subject: Friend get() = sender
override val senderName: String get() = sender.nick override val senderName: String get() = sender.nick
......
...@@ -15,8 +15,6 @@ import net.mamoe.mirai.contact.Member ...@@ -15,8 +15,6 @@ import net.mamoe.mirai.contact.Member
import net.mamoe.mirai.contact.MemberPermission import net.mamoe.mirai.contact.MemberPermission
import net.mamoe.mirai.event.Event import net.mamoe.mirai.event.Event
import net.mamoe.mirai.message.data.* import net.mamoe.mirai.message.data.*
import net.mamoe.mirai.utils.getValue
import net.mamoe.mirai.utils.unsafeWeakRef
/** /**
* 群消息事件 * 群消息事件
...@@ -30,7 +28,7 @@ class GroupMessage( ...@@ -30,7 +28,7 @@ class GroupMessage(
* 发送方权限. * 发送方权限.
*/ */
val permission: MemberPermission, val permission: MemberPermission,
sender: Member, override val sender: Member,
override val message: MessageChain, override val message: MessageChain,
override val time: Int override val time: Int
) : ContactMessage(), Event { ) : ContactMessage(), Event {
...@@ -39,7 +37,6 @@ class GroupMessage( ...@@ -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" } 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 val group: Group get() = sender.group
override val bot: Bot get() = sender.bot override val bot: Bot get() = sender.bot
......
...@@ -10,15 +10,13 @@ import net.mamoe.mirai.message.data.MessageSource ...@@ -10,15 +10,13 @@ import net.mamoe.mirai.message.data.MessageSource
import net.mamoe.mirai.message.data.OnlineMessageSource import net.mamoe.mirai.message.data.OnlineMessageSource
import net.mamoe.mirai.message.data.source import net.mamoe.mirai.message.data.source
import net.mamoe.mirai.utils.SinceMirai import net.mamoe.mirai.utils.SinceMirai
import net.mamoe.mirai.utils.getValue
import net.mamoe.mirai.utils.unsafeWeakRef
/** /**
* 临时会话消息 * 临时会话消息
*/ */
@SinceMirai("0.35.0") @SinceMirai("0.35.0")
class TempMessage( class TempMessage(
sender: Member, override val sender: Member,
override val message: MessageChain, override val message: MessageChain,
override val time: Int override val time: Int
) : ContactMessage(), BroadcastControllable { ) : ContactMessage(), BroadcastControllable {
...@@ -27,7 +25,6 @@ class TempMessage( ...@@ -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" } 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 bot: Bot get() = sender.bot
override val subject: Member get() = sender override val subject: Member get() = sender
inline val group: Group get() = sender.group inline val group: Group get() = sender.group
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment