mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-06 09:00:14 +08:00
[Review] Event: review type hierarchy, add UserEvent
This commit is contained in:
parent
6b11ae7320
commit
ea4c82d3c5
@ -491,7 +491,7 @@ public sealed class ImageUploadEvent : BotEvent, BotActiveEvent, AbstractEvent()
|
||||
*
|
||||
* @see isContextIdenticalWith 判断语境相同
|
||||
*/
|
||||
public interface MessageEvent : Event, Packet, BotEvent {
|
||||
public interface MessageEvent : Event, Packet, BotPassiveEvent {
|
||||
/**
|
||||
* 与这个消息事件相关的 [Bot]
|
||||
*/
|
||||
@ -502,7 +502,9 @@ public interface MessageEvent : Event, Packet, BotEvent {
|
||||
*
|
||||
* - 对于好友消息, 这个属性为 [Friend] 的实例, 与 [sender] 引用相同;
|
||||
* - 对于临时会话消息, 这个属性为 [Member] 的实例, 与 [sender] 引用相同;
|
||||
* - 对于陌生人消息, 这个属性为 [Stranger] 的实例, 与 [sender] 引用相同
|
||||
* - 对于群消息, 这个属性为 [Group] 的实例, 与 [GroupMessageEvent.group] 引用相同
|
||||
* - 对于其他客户端消息, 这个属性为 [OtherClient] 的实例, 与 [OtherClientMessageEvent.client] 引用相同
|
||||
*
|
||||
* 在回复消息时, 可通过 [subject] 作为回复对象
|
||||
*/
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2019-2020 Mamoe Technologies and contributors.
|
||||
* Copyright 2019-2021 Mamoe Technologies and contributors.
|
||||
*
|
||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||
@ -18,8 +18,7 @@ import net.mamoe.mirai.utils.MiraiInternalApi
|
||||
|
||||
public interface OtherClientEvent : BotEvent, Packet {
|
||||
public val client: OtherClient
|
||||
override val bot: Bot
|
||||
get() = client.bot
|
||||
override val bot: Bot get() = client.bot
|
||||
}
|
||||
|
||||
/**
|
||||
@ -31,11 +30,11 @@ public data class OtherClientOnlineEvent @MiraiInternalApi constructor(
|
||||
* 详细设备类型,通常非 `null`.
|
||||
*/
|
||||
val kind: ClientKind?
|
||||
) : OtherClientEvent, AbstractEvent()
|
||||
) : OtherClientEvent, AbstractEvent(), BotPassiveEvent
|
||||
|
||||
/**
|
||||
* 其他设备离线
|
||||
*/
|
||||
public data class OtherClientOfflineEvent(
|
||||
override val client: OtherClient,
|
||||
) : OtherClientEvent, AbstractEvent()
|
||||
) : OtherClientEvent, AbstractEvent(), BotPassiveEvent
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2019-2020 Mamoe Technologies and contributors.
|
||||
* Copyright 2019-2021 Mamoe Technologies and contributors.
|
||||
*
|
||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||
@ -14,10 +14,7 @@
|
||||
package net.mamoe.mirai.event.events
|
||||
|
||||
import net.mamoe.mirai.Bot
|
||||
import net.mamoe.mirai.contact.Friend
|
||||
import net.mamoe.mirai.contact.Group
|
||||
import net.mamoe.mirai.contact.Member
|
||||
import net.mamoe.mirai.contact.Stranger
|
||||
import net.mamoe.mirai.contact.*
|
||||
import net.mamoe.mirai.event.Event
|
||||
import kotlin.internal.HidesMembers
|
||||
|
||||
@ -48,14 +45,6 @@ public interface GroupEvent : BotEvent {
|
||||
get() = group.bot
|
||||
}
|
||||
|
||||
/**
|
||||
* 有关群成员的事件
|
||||
*/
|
||||
public interface GroupMemberEvent : GroupEvent {
|
||||
public val member: Member
|
||||
override val group: Group
|
||||
get() = member.group
|
||||
}
|
||||
|
||||
/**
|
||||
* 可由 [Member] 或 [Bot] 操作的事件
|
||||
@ -85,19 +74,36 @@ public inline val GroupOperableEvent.isByBot: Boolean
|
||||
public inline val GroupOperableEvent.operatorOrBot: Member
|
||||
get() = this.operator ?: this.group.botAsMember
|
||||
|
||||
/**
|
||||
* 有关 [User] 的事件
|
||||
*/
|
||||
public interface UserEvent : BotEvent {
|
||||
public val user: User
|
||||
}
|
||||
|
||||
/**
|
||||
* 有关好友的事件
|
||||
*/
|
||||
public interface FriendEvent : BotEvent {
|
||||
public interface FriendEvent : BotEvent, UserEvent {
|
||||
public val friend: Friend
|
||||
public override val bot: Bot get() = friend.bot
|
||||
override val bot: Bot get() = friend.bot
|
||||
override val user: Friend get() = friend
|
||||
}
|
||||
|
||||
/**
|
||||
* 有关陌生人的事件
|
||||
*/
|
||||
public interface StrangerEvent : BotEvent {
|
||||
public interface StrangerEvent : BotEvent, UserEvent {
|
||||
public val stranger: Stranger
|
||||
public override val bot: Bot get() = stranger.bot
|
||||
override val bot: Bot get() = stranger.bot
|
||||
override val user: Stranger get() = stranger
|
||||
}
|
||||
|
||||
/**
|
||||
* 有关群成员的事件
|
||||
*/
|
||||
public interface GroupMemberEvent : GroupEvent, UserEvent {
|
||||
public val member: Member
|
||||
override val group: Group get() = member.group
|
||||
override val user: Member get() = member
|
||||
}
|
Loading…
Reference in New Issue
Block a user