From eeb32177f652bd0254ec4fc7a8c58ecb1c632e9f Mon Sep 17 00:00:00 2001 From: Eritque arcus Date: Thu, 22 Feb 2024 02:56:09 -0500 Subject: [PATCH] fix: nudge doc and add to mock (#2790) --- .../src/commonMain/kotlin/message/action/Nudge.kt | 12 ++++++++---- mirai-core-mock/src/internal/MockMiraiImpl.kt | 6 ++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/mirai-core-api/src/commonMain/kotlin/message/action/Nudge.kt b/mirai-core-api/src/commonMain/kotlin/message/action/Nudge.kt index c44aa50b2..b0c815318 100644 --- a/mirai-core-api/src/commonMain/kotlin/message/action/Nudge.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/action/Nudge.kt @@ -40,11 +40,13 @@ public sealed class Nudge { /** * 发送戳一戳消息到 [receiver]. * - * 需要使用支持的[协议][BotConfiguration.protocol] [MiraiProtocol.ANDROID_PHONE] 或 [MiraiProtocol.IPAD]. 自 2.10 起才支持使用 IPAD 协议发送. + * 需要使用支持的[协议][BotConfiguration.protocol] [MiraiProtocol.ANDROID_PHONE], [ANDROID_PAD 协议][MiraiProtocol.ANDROID_PAD] 或 [MiraiProtocol.IPAD]. + * + 自 2.10 起才支持使用 IPAD 协议发送. + * + 自 2.16.0-RC 起才支持使用 PAD 协议发送. * * @param receiver 这条 "戳一戳" 消息的接收对象. (不是 "戳" 动作的对象, 而是接收 "A 戳了 B" 这条消息的对象) * @return 成功发送时为 `true`. 若对方禁用 "戳一戳" 功能, 返回 `false`. - * @throws UnsupportedOperationException 当未使用 [ANDROID_PHONE 协议][MiraiProtocol.ANDROID_PHONE] 或 [IPAD 协议][MiraiProtocol.IPAD] 时抛出 + * @throws UnsupportedOperationException 当未使用 [ANDROID_PHONE 协议][MiraiProtocol.ANDROID_PHONE], [ANDROID_PAD 协议][MiraiProtocol.ANDROID_PAD] 或 [IPAD 协议][MiraiProtocol.IPAD] 时抛出 * * @see NudgeEvent 事件 * @see Contact.sendNudge @@ -59,11 +61,13 @@ public sealed class Nudge { /** * 发送戳一戳消息. * - * 需要使用支持的[协议][BotConfiguration.protocol] [MiraiProtocol.ANDROID_PHONE] 或 [MiraiProtocol.IPAD]. 自 2.10 起才支持使用 IPAD 协议发送. + * 需要使用支持的[协议][BotConfiguration.protocol] [MiraiProtocol.ANDROID_PHONE], [ANDROID_PAD 协议][MiraiProtocol.ANDROID_PAD] 或 [MiraiProtocol.IPAD]. + * + 自 2.10 起才支持使用 IPAD 协议发送. + * + 自 2.16.0-RC 起才支持使用 PAD 协议发送. * * @return 成功发送时为 `true`. 若对方禁用 "戳一戳" 功能或今日 "戳一戳" 次数已达到上限, 返回 `false`. * - * @throws UnsupportedOperationException 当未使用 [ANDROID_PHONE 协议][MiraiProtocol.ANDROID_PHONE] 或 [IPAD 协议][MiraiProtocol.IPAD] 时抛出 + * @throws UnsupportedOperationException 当未使用 [ANDROID_PHONE 协议][MiraiProtocol.ANDROID_PHONE], [ANDROID_PAD 协议][MiraiProtocol.ANDROID_PAD] 或 [IPAD 协议][MiraiProtocol.IPAD] 时抛出 * * @see NudgeEvent 事件 */ diff --git a/mirai-core-mock/src/internal/MockMiraiImpl.kt b/mirai-core-mock/src/internal/MockMiraiImpl.kt index d14380327..e02146539 100644 --- a/mirai-core-mock/src/internal/MockMiraiImpl.kt +++ b/mirai-core-mock/src/internal/MockMiraiImpl.kt @@ -22,6 +22,7 @@ import net.mamoe.mirai.event.broadcast import net.mamoe.mirai.event.events.* import net.mamoe.mirai.internal.MiraiImpl import net.mamoe.mirai.internal.network.components.EventDispatcher +import net.mamoe.mirai.internal.utils.MiraiProtocolInternal import net.mamoe.mirai.message.action.Nudge import net.mamoe.mirai.message.data.* import net.mamoe.mirai.mock.MockActions @@ -295,6 +296,11 @@ internal class MockMiraiImpl : MiraiImpl() { } override suspend fun sendNudge(bot: Bot, nudge: Nudge, receiver: Contact): Boolean { + if (!bot.configuration.protocol.isNudgeSupported) { + throw UnsupportedOperationException("nudge is supported only with protocol ${ + MiraiProtocolInternal.protocols.filter { it.value.supportsNudge }.map { it.key } + }") + } NudgeEvent( from = bot, target = nudge.target,