diff --git a/mirai-core-api/src/commonMain/kotlin/Bot.kt b/mirai-core-api/src/commonMain/kotlin/Bot.kt index 6f7ad58b0..1887d4a06 100644 --- a/mirai-core-api/src/commonMain/kotlin/Bot.kt +++ b/mirai-core-api/src/commonMain/kotlin/Bot.kt @@ -58,12 +58,6 @@ public abstract class Bot internal constructor( @Suppress("ObjectPropertyName") internal val _instances: LockFreeLinkedList> = LockFreeLinkedList() - @PlannedRemoval("2.0.0") - @Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN) - @JvmStatic - public val instances: List> - get() = _instances.toList() - /** * 复制一份此时的 [Bot] 实例列表. */ diff --git a/mirai-core-api/src/commonMain/kotlin/event/deprecated.kt b/mirai-core-api/src/commonMain/kotlin/event/deprecated.kt deleted file mode 100644 index a753f76bd..000000000 --- a/mirai-core-api/src/commonMain/kotlin/event/deprecated.kt +++ /dev/null @@ -1,245 +0,0 @@ -/* - * Copyright 2019-2020 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. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -@file:JvmMultifileClass -@file:JvmName("SubscribeMessagesKt") -@file:Suppress( - "EXPERIMENTAL_API_USAGE", - "MemberVisibilityCanBePrivate", - "unused", - "INVISIBLE_MEMBER", - "INVISIBLE_REFERENCE" -) - -package net.mamoe.mirai.event - -import kotlinx.coroutines.CancellationException -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.channels.Channel -import kotlinx.coroutines.channels.ReceiveChannel -import net.mamoe.mirai.Bot -import net.mamoe.mirai.event.events.BotEvent -import net.mamoe.mirai.utils.PlannedRemoval -import kotlin.contracts.InvocationKind -import kotlin.contracts.contract -import kotlin.coroutines.CoroutineContext -import kotlin.coroutines.EmptyCoroutineContext -import kotlin.jvm.JvmMultifileClass -import kotlin.jvm.JvmName - - -// -// -//// -//// 此文件存放所有 `subscribeMessages` 已弃用的函数. -//// -// -// -// -// -// -// -// - - -@PlannedRemoval("1.3.0") -@Suppress("DeprecatedCallableAddReplaceWith") -@Deprecated( - "Deprecated for better Coroutine life cycle management. Please filter bot instance on your own.", - level = DeprecationLevel.HIDDEN -) -@kotlin.internal.LowPriorityInOverloadResolution -public fun Bot.subscribeMessages( - coroutineContext: CoroutineContext = EmptyCoroutineContext, - concurrencyKind: Listener.ConcurrencyKind = Listener.ConcurrencyKind.CONCURRENT, - priority: Listener.EventPriority = EventPriority.MONITOR, - listeners: MessagePacketSubscribersBuilder.() -> R -): R { - contract { - callsInPlace(listeners, InvocationKind.EXACTLY_ONCE) - } - return MessagePacketSubscribersBuilder(Unit) { filter, listener -> - this.subscribeAlways(coroutineContext, concurrencyKind, priority) { - val toString = this.message.contentToString() - if (filter(this, toString)) - listener(this, toString) - } - }.run(listeners) -} - -@PlannedRemoval("1.3.0") -@kotlin.internal.LowPriorityInOverloadResolution -@Suppress("DeprecatedCallableAddReplaceWith") -@Deprecated( - "Deprecated for better Coroutine life cycle management. Please filter bot instance on your own.", - level = DeprecationLevel.HIDDEN -) -public fun Bot.subscribeGroupMessages( - coroutineContext: CoroutineContext = EmptyCoroutineContext, - concurrencyKind: Listener.ConcurrencyKind = Listener.ConcurrencyKind.CONCURRENT, - priority: Listener.EventPriority = EventPriority.MONITOR, - listeners: GroupMessageSubscribersBuilder.() -> R -): R { - contract { - callsInPlace(listeners, InvocationKind.EXACTLY_ONCE) - } - return GroupMessageSubscribersBuilder(Unit) { filter, listener -> - this.subscribeAlways(coroutineContext, concurrencyKind, priority) { - val toString = this.message.contentToString() - if (filter(this, toString)) - listener(this, toString) - } - }.run(listeners) -} - -@kotlin.internal.LowPriorityInOverloadResolution -@PlannedRemoval("1.3.0") -@Suppress("DeprecatedCallableAddReplaceWith") -@Deprecated( - "Deprecated for better Coroutine life cycle management. Please filter bot instance on your own.", - level = DeprecationLevel.HIDDEN -) -public fun Bot.subscribeFriendMessages( - coroutineContext: CoroutineContext = EmptyCoroutineContext, - concurrencyKind: Listener.ConcurrencyKind = Listener.ConcurrencyKind.CONCURRENT, - priority: Listener.EventPriority = EventPriority.MONITOR, - listeners: FriendMessageSubscribersBuilder.() -> R -): R { - contract { - callsInPlace(listeners, InvocationKind.EXACTLY_ONCE) - } - return FriendMessageSubscribersBuilder(Unit) { filter, listener -> - this.subscribeAlways(coroutineContext, concurrencyKind, priority) { - val toString = this.message.contentToString() - if (filter(this, toString)) - listener(this, toString) - } - }.run(listeners) -} - - -@kotlin.internal.LowPriorityInOverloadResolution -@PlannedRemoval("1.3.0") -@Suppress("DeprecatedCallableAddReplaceWith") -@Deprecated( - "Deprecated for better Coroutine life cycle management. Please filter bot instance on your own.", - level = DeprecationLevel.HIDDEN -) -public fun Bot.subscribeTempMessages( - coroutineContext: CoroutineContext = EmptyCoroutineContext, - concurrencyKind: Listener.ConcurrencyKind = Listener.ConcurrencyKind.CONCURRENT, - priority: Listener.EventPriority = EventPriority.MONITOR, - listeners: TempMessageSubscribersBuilder.() -> R -): R { - contract { - callsInPlace(listeners, InvocationKind.EXACTLY_ONCE) - } - return TempMessageSubscribersBuilder(Unit) { filter, listener -> - this.subscribeAlways(coroutineContext, concurrencyKind, priority) { - val toString = this.message.contentToString() - if (filter(this, toString)) - listener(this, toString) - } - }.run(listeners) -} - -@kotlin.internal.LowPriorityInOverloadResolution -@PlannedRemoval("1.3.0") -@Suppress("DeprecatedCallableAddReplaceWith") -@Deprecated( - "Deprecated for better Coroutine life cycle management. Please filter bot instance on your own.", - level = DeprecationLevel.HIDDEN -) -public inline fun Bot.incoming( - coroutineContext: CoroutineContext = EmptyCoroutineContext, - concurrencyKind: Listener.ConcurrencyKind = Listener.ConcurrencyKind.CONCURRENT, - priority: Listener.EventPriority = EventPriority.MONITOR, - capacity: Int = Channel.UNLIMITED -): ReceiveChannel { - return Channel(capacity).apply { - val listener = this@incoming.subscribeAlways(coroutineContext, concurrencyKind, priority) { - send(this) - } - this.invokeOnClose { - listener.cancel(CancellationException("ReceiveChannel closed", it)) - } - } -} - -@kotlin.internal.LowPriorityInOverloadResolution -@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN) -@PlannedRemoval("1.2.0") -public fun CoroutineScope.subscribeMessages( - coroutineContext: CoroutineContext = EmptyCoroutineContext, - concurrencyKind: Listener.ConcurrencyKind = Listener.ConcurrencyKind.CONCURRENT, - listeners: MessagePacketSubscribersBuilder.() -> R -): R = this.subscribeMessages(coroutineContext, concurrencyKind, EventPriority.MONITOR, listeners) - -@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN) -@kotlin.internal.LowPriorityInOverloadResolution -@PlannedRemoval("1.2.0") -public fun CoroutineScope.subscribeGroupMessages( - coroutineContext: CoroutineContext = EmptyCoroutineContext, - concurrencyKind: Listener.ConcurrencyKind = Listener.ConcurrencyKind.CONCURRENT, - listeners: GroupMessageSubscribersBuilder.() -> R -): R = this.subscribeGroupMessages(coroutineContext, concurrencyKind, EventPriority.MONITOR, listeners) - -@kotlin.internal.LowPriorityInOverloadResolution -@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN) -@PlannedRemoval("1.2.0") -public fun CoroutineScope.subscribeFriendMessages( - coroutineContext: CoroutineContext = EmptyCoroutineContext, - concurrencyKind: Listener.ConcurrencyKind = Listener.ConcurrencyKind.CONCURRENT, - listeners: FriendMessageSubscribersBuilder.() -> R -): R = this.subscribeFriendMessages(coroutineContext, concurrencyKind, EventPriority.MONITOR, listeners) - -@kotlin.internal.LowPriorityInOverloadResolution -@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN) -@PlannedRemoval("1.2.0") -public fun CoroutineScope.subscribeTempMessages( - coroutineContext: CoroutineContext = EmptyCoroutineContext, - concurrencyKind: Listener.ConcurrencyKind = Listener.ConcurrencyKind.CONCURRENT, - listeners: TempMessageSubscribersBuilder.() -> R -): R = this.subscribeTempMessages(coroutineContext, concurrencyKind, EventPriority.MONITOR, listeners) - -@kotlin.internal.LowPriorityInOverloadResolution -@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN) -@PlannedRemoval("1.2.0") -public fun Bot.subscribeMessages( - coroutineContext: CoroutineContext = EmptyCoroutineContext, - concurrencyKind: Listener.ConcurrencyKind = Listener.ConcurrencyKind.CONCURRENT, - listeners: MessagePacketSubscribersBuilder.() -> R -): R = this.subscribeMessages(coroutineContext, concurrencyKind, EventPriority.MONITOR, listeners) - -@kotlin.internal.LowPriorityInOverloadResolution -@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN) -@PlannedRemoval("1.2.0") -public fun Bot.subscribeGroupMessages( - coroutineContext: CoroutineContext = EmptyCoroutineContext, - concurrencyKind: Listener.ConcurrencyKind = Listener.ConcurrencyKind.CONCURRENT, - listeners: GroupMessageSubscribersBuilder.() -> R -): R = this.subscribeGroupMessages(coroutineContext, concurrencyKind, EventPriority.MONITOR, listeners) - -@kotlin.internal.LowPriorityInOverloadResolution -@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN) -@PlannedRemoval("1.2.0") -public fun Bot.subscribeFriendMessages( - coroutineContext: CoroutineContext = EmptyCoroutineContext, - concurrencyKind: Listener.ConcurrencyKind = Listener.ConcurrencyKind.CONCURRENT, - listeners: FriendMessageSubscribersBuilder.() -> R -): R = this.subscribeFriendMessages(coroutineContext, concurrencyKind, EventPriority.MONITOR, listeners) - -@kotlin.internal.LowPriorityInOverloadResolution -@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN) -@PlannedRemoval("1.2.0") -public fun Bot.subscribeTempMessages( - coroutineContext: CoroutineContext = EmptyCoroutineContext, - concurrencyKind: Listener.ConcurrencyKind = Listener.ConcurrencyKind.CONCURRENT, - listeners: TempMessageSubscribersBuilder.() -> R -): R = this.subscribeTempMessages(coroutineContext, concurrencyKind, EventPriority.MONITOR, listeners) \ No newline at end of file diff --git a/mirai-core-api/src/commonMain/kotlin/message/FriendMessageEvent.kt b/mirai-core-api/src/commonMain/kotlin/message/FriendMessageEvent.kt index ff6fda214..9340737c7 100644 --- a/mirai-core-api/src/commonMain/kotlin/message/FriendMessageEvent.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/FriendMessageEvent.kt @@ -12,14 +12,16 @@ package net.mamoe.mirai.message import net.mamoe.mirai.Bot +import net.mamoe.mirai.contact.Contact import net.mamoe.mirai.contact.Friend +import net.mamoe.mirai.contact.User +import net.mamoe.mirai.event.AbstractEvent import net.mamoe.mirai.event.BroadcastControllable import net.mamoe.mirai.event.events.FriendEvent 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.PlannedRemoval /** * 机器人收到的好友消息的事件 @@ -30,15 +32,14 @@ public class FriendMessageEvent constructor( public override val sender: Friend, public override val message: MessageChain, public override val time: Int -) : @PlannedRemoval("1.2.0") FriendMessage(), BroadcastControllable, FriendEvent { +) : AbstractEvent(), MessageEvent, MessageEventExtensions, BroadcastControllable, FriendEvent { init { val source = message[MessageSource] ?: throw IllegalArgumentException("Cannot find MessageSource from message") check(source is OnlineMessageSource.Incoming.FromFriend) { "source provided to a FriendMessage must be an instance of OnlineMessageSource.Incoming.FromFriend" } } - public override val friend: Friend - get() = sender + public override val friend: Friend get() = sender public override val bot: Bot get() = super.bot public override val subject: Friend get() = sender public override val senderName: String get() = sender.nick diff --git a/mirai-core-api/src/commonMain/kotlin/message/GroupAwareMessageEvent.kt b/mirai-core-api/src/commonMain/kotlin/message/GroupAwareMessageEvent.kt new file mode 100644 index 000000000..5498cbff4 --- /dev/null +++ b/mirai-core-api/src/commonMain/kotlin/message/GroupAwareMessageEvent.kt @@ -0,0 +1,22 @@ +/* + * Copyright 2020 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. + * + * https://github.com/mamoe/mirai/blob/master/LICENSE + */ + +package net.mamoe.mirai.message + +import net.mamoe.mirai.contact.Group + +/** + * 来自一个可以知道其 [Group] 的用户消息 + * + * @see FriendMessageEvent + * @see TempMessageEvent + */ +public interface GroupAwareMessageEvent : MessageEvent { + public val group: Group +} \ No newline at end of file diff --git a/mirai-core-api/src/commonMain/kotlin/message/GroupMessageEvent.kt b/mirai-core-api/src/commonMain/kotlin/message/GroupMessageEvent.kt index b8861b249..d98056ac3 100644 --- a/mirai-core-api/src/commonMain/kotlin/message/GroupMessageEvent.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/GroupMessageEvent.kt @@ -15,10 +15,10 @@ import net.mamoe.mirai.Bot import net.mamoe.mirai.contact.Group import net.mamoe.mirai.contact.Member import net.mamoe.mirai.contact.MemberPermission +import net.mamoe.mirai.event.AbstractEvent import net.mamoe.mirai.event.Event import net.mamoe.mirai.event.events.GroupEvent import net.mamoe.mirai.message.data.* -import net.mamoe.mirai.utils.PlannedRemoval /** * 机器人收到的群消息的事件 @@ -34,7 +34,7 @@ public class GroupMessageEvent( public override val sender: Member, public override val message: MessageChain, public override val time: Int -) : @PlannedRemoval("1.2.0") GroupMessage(), Event, GroupEvent { +) : AbstractEvent(), GroupAwareMessageEvent, MessageEvent, Event, GroupEvent { init { val source = message[MessageSource] ?: error("Cannot find MessageSource from message") check(source is OnlineMessageSource.Incoming.FromGroup) { "source provided to a GroupMessage must be an instance of OnlineMessageSource.Incoming.FromGroup" } @@ -42,9 +42,7 @@ public class GroupMessageEvent( public override val group: Group get() = sender.group public override val bot: Bot get() = sender.bot - public override val subject: Group get() = group - public override val source: OnlineMessageSource.Incoming.FromGroup get() = message.source as OnlineMessageSource.Incoming.FromGroup public inline fun At.asMember(): Member = group[this.target] diff --git a/mirai-core-api/src/commonMain/kotlin/message/MessageEvent.kt b/mirai-core-api/src/commonMain/kotlin/message/MessageEvent.kt index b6f50ae5b..6c3cb3d58 100644 --- a/mirai-core-api/src/commonMain/kotlin/message/MessageEvent.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/MessageEvent.kt @@ -21,8 +21,10 @@ package net.mamoe.mirai.message import event.* import net.mamoe.mirai.Bot import net.mamoe.mirai.contact.* +import net.mamoe.mirai.event.Event import net.mamoe.mirai.event.events.BotEvent import net.mamoe.mirai.event.subscribe +import net.mamoe.mirai.internal.network.Packet import net.mamoe.mirai.message.data.* import net.mamoe.mirai.message.data.MessageSource.Key.quote import net.mamoe.mirai.utils.ExternalImage @@ -45,13 +47,12 @@ import java.io.InputStream * @see isContextIdenticalWith 判断语境是否相同 */ @Suppress("DEPRECATION_ERROR") -public abstract class MessageEvent : ContactMessage(), - BotEvent, MessageEventExtensions { +public interface MessageEvent : Event, Packet, BotEvent, MessageEventExtensions { /** * 与这个消息事件相关的 [Bot] */ - public abstract override val bot: Bot + public override val bot: Bot /** * 消息事件主体. @@ -62,19 +63,19 @@ public abstract class MessageEvent : ContactMessage(), * * 在回复消息时, 可通过 [subject] 作为回复对象 */ - public abstract override val subject: Contact + public override val subject: Contact /** * 发送人. * * 在好友消息时为 [Friend] 的实例, 在群消息时为 [Member] 的实例 */ - public abstract override val sender: User + public override val sender: User /** * 发送人名称 */ - public abstract override val senderName: String + public val senderName: String /** * 消息内容. @@ -82,19 +83,18 @@ public abstract class MessageEvent : ContactMessage(), * 第一个元素一定为 [MessageSource], 存储此消息的发送人, 发送时间, 收信人, 消息 ids 等数据. * 随后的元素为拥有顺序的真实消息内容. */ - public abstract override val message: MessageChain + public override val message: MessageChain /** 消息发送时间 (由服务器提供, 可能与本地有时差) */ - public abstract override val time: Int + public val time: Int /** * 消息源. 来自 [message] 的第一个元素, */ - public override val source: OnlineMessageSource.Incoming get() = message.source as OnlineMessageSource.Incoming + public val source: OnlineMessageSource.Incoming get() = message.source as OnlineMessageSource.Incoming } /** 消息事件的扩展函数 */ -@Suppress("EXPOSED_SUPER_INTERFACE") // Functions are visible public interface MessageEventExtensions : MessageEventPlatformExtensions { @@ -165,55 +165,55 @@ public interface MessageEventExtensions { - val subject: TSubject - val sender: TSender - val message: MessageChain - val bot: Bot +public interface MessageEventPlatformExtensions { + public val subject: TSubject + public val sender: TSender + public val message: MessageChain + public val bot: Bot // region 上传图片 @JvmSynthetic - suspend fun uploadImage(image: BufferedImage): Image = subject.uploadImage(image) + public suspend fun uploadImage(image: BufferedImage): Image = subject.uploadImage(image) @JvmSynthetic - suspend fun uploadImage(image: InputStream): Image = subject.uploadImage(image) + public suspend fun uploadImage(image: InputStream): Image = subject.uploadImage(image) @JvmSynthetic - suspend fun uploadImage(image: File): Image = subject.uploadImage(image) + public suspend fun uploadImage(image: File): Image = subject.uploadImage(image) // endregion // region 发送图片 @JvmSynthetic - suspend fun sendImage(image: BufferedImage): MessageReceipt = subject.sendImage(image) + public suspend fun sendImage(image: BufferedImage): MessageReceipt = subject.sendImage(image) @JvmSynthetic - suspend fun sendImage(image: InputStream): MessageReceipt = subject.sendImage(image) + public suspend fun sendImage(image: InputStream): MessageReceipt = subject.sendImage(image) @JvmSynthetic - suspend fun sendImage(image: File): MessageReceipt = subject.sendImage(image) + public suspend fun sendImage(image: File): MessageReceipt = subject.sendImage(image) // endregion // region 上传图片 (扩展) @JvmSynthetic - suspend fun BufferedImage.upload(): Image = upload(subject) + public suspend fun BufferedImage.upload(): Image = upload(subject) @JvmSynthetic - suspend fun InputStream.uploadAsImage(): Image = uploadAsImage(subject) + public suspend fun InputStream.uploadAsImage(): Image = uploadAsImage(subject) @JvmSynthetic - suspend fun File.uploadAsImage(): Image = uploadAsImage(subject) + public suspend fun File.uploadAsImage(): Image = uploadAsImage(subject) // endregion 上传图片 (扩展) // region 发送图片 (扩展) @JvmSynthetic - suspend fun BufferedImage.send(): MessageReceipt = sendTo(subject) + public suspend fun BufferedImage.send(): MessageReceipt = sendTo(subject) @JvmSynthetic - suspend fun InputStream.sendAsImage(): MessageReceipt = sendAsImageTo(subject) + public suspend fun InputStream.sendAsImage(): MessageReceipt = sendAsImageTo(subject) @JvmSynthetic - suspend fun File.sendAsImage(): MessageReceipt = sendAsImageTo(subject) + public suspend fun File.sendAsImage(): MessageReceipt = sendAsImageTo(subject) // endregion 发送图片 (扩展) } \ No newline at end of file diff --git a/mirai-core-api/src/commonMain/kotlin/message/TempMessageEvent.kt b/mirai-core-api/src/commonMain/kotlin/message/TempMessageEvent.kt index 12196acaf..9f50218c4 100644 --- a/mirai-core-api/src/commonMain/kotlin/message/TempMessageEvent.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/TempMessageEvent.kt @@ -15,6 +15,7 @@ import net.mamoe.mirai.Bot import net.mamoe.mirai.contact.Group import net.mamoe.mirai.contact.Member import net.mamoe.mirai.contact.nameCardOrNick +import net.mamoe.mirai.event.AbstractEvent import net.mamoe.mirai.event.BroadcastControllable import net.mamoe.mirai.message.data.MessageChain import net.mamoe.mirai.message.data.MessageSource @@ -30,7 +31,7 @@ public class TempMessageEvent( public override val sender: Member, public override val message: MessageChain, public override val time: Int -) : TempMessage(), BroadcastControllable { +) : AbstractEvent(), GroupAwareMessageEvent, MessageEvent, BroadcastControllable { init { val source = message[MessageSource] ?: error("Cannot find MessageSource from message") check(source is OnlineMessageSource.Incoming.FromTemp) { "source provided to a TempMessage must be an instance of OnlineMessageSource.Incoming.FromTemp" } diff --git a/mirai-core-api/src/commonMain/kotlin/message/UserMessageEvent.kt b/mirai-core-api/src/commonMain/kotlin/message/UserMessageEvent.kt new file mode 100644 index 000000000..9716f3157 --- /dev/null +++ b/mirai-core-api/src/commonMain/kotlin/message/UserMessageEvent.kt @@ -0,0 +1,22 @@ +/* + * Copyright 2020 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. + * + * https://github.com/mamoe/mirai/blob/master/LICENSE + */ + +package net.mamoe.mirai.message + +import net.mamoe.mirai.contact.User + +/** + * 来自 [User] 的消息 + * + * @see FriendMessageEvent + * @see TempMessageEvent + */ +public interface UserMessageEvent : MessageEvent { + public override val subject: User +} \ No newline at end of file diff --git a/mirai-core-api/src/commonMain/kotlin/message/data/CombinedMessage.kt b/mirai-core-api/src/commonMain/kotlin/message/data/CombinedMessage.kt index fad811b69..f6f42dd9e 100644 --- a/mirai-core-api/src/commonMain/kotlin/message/data/CombinedMessage.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/data/CombinedMessage.kt @@ -12,11 +12,6 @@ package net.mamoe.mirai.message.data -import net.mamoe.mirai.utils.PlannedRemoval -import kotlin.jvm.JvmField -import kotlin.jvm.JvmMultifileClass -import kotlin.jvm.JvmName - /** * 快速链接的两个消息 (避免构造新的 list). * @@ -33,16 +28,6 @@ internal constructor( @JvmField internal val tail: Message ) : Message, MessageChain, List by (left.flatten() + tail.flatten()).toList() { - @PlannedRemoval("1.2.0") - @Deprecated( - "use asSequence from stdlib", - ReplaceWith("(this as List).asSequence()"), - level = DeprecationLevel.HIDDEN - ) - @Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER") - @kotlin.internal.LowPriorityInOverloadResolution // resolve to extension from stdlib - fun asSequence(): Sequence = (this as List).asSequence() - override fun equals(other: Any?): Boolean { if (other == null) return false if (other::class != CombinedMessage::class) return false diff --git a/mirai-core-api/src/commonMain/kotlin/message/deprecated.kt b/mirai-core-api/src/commonMain/kotlin/message/deprecated.kt deleted file mode 100644 index 252da2629..000000000 --- a/mirai-core-api/src/commonMain/kotlin/message/deprecated.kt +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2019-2020 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. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -@file:Suppress( - "EXPERIMENTAL_UNSIGNED_LITERALS", - "EXPERIMENTAL_API_USAGE", - "unused", - "DECLARATION_CANT_BE_INLINED", "UNCHECKED_CAST", "NOTHING_TO_INLINE" -) - -@file:JvmMultifileClass -@file:JvmName("MessageEventKt") - -package net.mamoe.mirai.message - -import net.mamoe.mirai.Bot -import net.mamoe.mirai.contact.* -import net.mamoe.mirai.event.AbstractEvent -import net.mamoe.mirai.event.events.BotEvent -import net.mamoe.mirai.internal.network.Packet -import net.mamoe.mirai.message.data.MessageChain -import net.mamoe.mirai.message.data.OnlineMessageSource -import kotlin.jvm.JvmMultifileClass -import kotlin.jvm.JvmName - - -/** - * 已废弃, 请使用 [MessageEvent] - */ -@Deprecated( - message = "use MessageEvent", - replaceWith = ReplaceWith("MessageEvent", "MessageEvent"), - level = DeprecationLevel.HIDDEN -) -public abstract class MessagePacketBase : Packet, BotEvent, - AbstractEvent() { - abstract override val bot: Bot - public abstract val sender: User - public abstract val subject: Contact - public abstract val message: MessageChain - public abstract val time: Int - public abstract val source: OnlineMessageSource.Incoming - public abstract val senderName: String -} - -@Deprecated( - message = "Ambiguous name. Use MessageEvent instead", - replaceWith = ReplaceWith("MessageEvent", "MessageEvent"), - level = DeprecationLevel.HIDDEN -) -@Suppress("DEPRECATION_ERROR") -public abstract class MessagePacket : MessagePacketBase(), - BotEvent, MessageEventExtensions { - abstract override val bot: Bot - abstract override val sender: User - abstract override val subject: Contact - abstract override val message: MessageChain - abstract override val time: Int - abstract override val source: OnlineMessageSource.Incoming - abstract override val senderName: String -} - -@Deprecated( - message = "Ambiguous name. Use MessageEvent instead", - replaceWith = ReplaceWith("MessageEvent", "MessageEvent"), - level = DeprecationLevel.HIDDEN -) -@Suppress("DEPRECATION_ERROR") -public abstract class ContactMessage : MessagePacket(), - BotEvent, MessageEventExtensions { - abstract override val bot: Bot - abstract override val sender: User - abstract override val subject: Contact - abstract override val message: MessageChain - abstract override val time: Int - abstract override val source: OnlineMessageSource.Incoming - abstract override val senderName: String -} - -@Deprecated( - message = "Ambiguous name. Use FriendMessageEvent instead", - replaceWith = ReplaceWith("FriendMessageEvent", "FriendMessageEvent"), - level = DeprecationLevel.HIDDEN -) -@Suppress("DEPRECATION_ERROR") -public abstract class FriendMessage : MessageEvent() { - abstract override val bot: Bot - abstract override val sender: Friend - abstract override val subject: Friend - abstract override val message: MessageChain - abstract override val time: Int - abstract override val source: OnlineMessageSource.Incoming.FromFriend - abstract override val senderName: String -} - -@Deprecated( - message = "Ambiguous name. Use GroupMessageEvent instead", - replaceWith = ReplaceWith("GroupMessageEvent", "GroupMessageEvent"), - level = DeprecationLevel.HIDDEN -) -@Suppress("DEPRECATION_ERROR") -public abstract class GroupMessage : MessageEvent() { - public abstract val group: Group - abstract override val bot: Bot - abstract override val sender: Member - abstract override val subject: Group - abstract override val message: MessageChain - abstract override val time: Int - abstract override val source: OnlineMessageSource.Incoming.FromGroup - abstract override val senderName: String -} - -@Deprecated( - message = "Ambiguous name. Use TempMessageEvent instead", - replaceWith = ReplaceWith("TempMessageEvent", "TempMessageEvent"), - level = DeprecationLevel.HIDDEN -) -public abstract class TempMessage : MessageEvent() { - abstract override val bot: Bot - abstract override val sender: Member - abstract override val subject: Member - abstract override val message: MessageChain - abstract override val time: Int - abstract override val source: OnlineMessageSource.Incoming.FromTemp - public abstract val group: Group - abstract override val senderName: String -} \ No newline at end of file diff --git a/mirai-core-api/src/commonMain/kotlin/message/utils.kt b/mirai-core-api/src/commonMain/kotlin/message/utils.kt index 8b556af60..846ecc2d9 100644 --- a/mirai-core-api/src/commonMain/kotlin/message/utils.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/utils.kt @@ -20,12 +20,8 @@ import net.mamoe.mirai.event.Listener import net.mamoe.mirai.event.syncFromEvent import net.mamoe.mirai.event.syncFromEventOrNull import net.mamoe.mirai.message.data.MessageChain -import net.mamoe.mirai.utils.PlannedRemoval import kotlin.coroutines.CoroutineContext import kotlin.coroutines.EmptyCoroutineContext -import kotlin.jvm.JvmMultifileClass -import kotlin.jvm.JvmName -import kotlin.jvm.JvmSynthetic /** @@ -111,13 +107,4 @@ public inline fun P.nextMessageOrNullAsync( return this.bot.async(coroutineContext) { nextMessageOrNull(timeoutMillis, priority, filter) } -} - - -@PlannedRemoval("1.2.0") -@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN) -@Suppress("DEPRECATION_ERROR") -@JvmSynthetic -public fun ContactMessage.isContextIdenticalWith(another: ContactMessage): Boolean { - return this.sender == another.sender && this.subject == another.subject && this.bot == another.bot } \ No newline at end of file