mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-13 06:30:13 +08:00
Use strong reference in message events, fix #303
This commit is contained in:
parent
63241670e4
commit
f041a7eda7
@ -73,7 +73,6 @@ abstract class MessagePacketBase<out TSender : User, out TSubject : Contact> : P
|
||||
/**
|
||||
* 接受到这条消息的
|
||||
*/
|
||||
@WeakRefProperty
|
||||
abstract override val bot: Bot
|
||||
|
||||
/**
|
||||
@ -85,7 +84,6 @@ abstract class MessagePacketBase<out TSender : User, out TSubject : Contact> : P
|
||||
*
|
||||
* 在回复消息时, 可通过 [subject] 作为回复对象
|
||||
*/
|
||||
@WeakRefProperty
|
||||
abstract val subject: TSubject
|
||||
|
||||
/**
|
||||
@ -93,7 +91,6 @@ abstract class MessagePacketBase<out TSender : User, out TSubject : Contact> : P
|
||||
*
|
||||
* 在好友消息时为 [Friend] 的实例, 在群消息时为 [Member] 的实例
|
||||
*/
|
||||
@WeakRefProperty
|
||||
abstract val sender: TSender
|
||||
|
||||
abstract val senderName: String
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user