mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-03 15:10:14 +08:00
[Review] NudgeEvent: Simplify and stabilize NudgeEvent, remove all XXXNudgeEvent, add single NudgeEvent
This commit is contained in:
parent
8f998320ca
commit
4e2108d841
@ -136,149 +136,24 @@ public data class BotNickChangedEvent(
|
|||||||
) : BotEvent, Packet, AbstractEvent()
|
) : BotEvent, Packet, AbstractEvent()
|
||||||
|
|
||||||
|
|
||||||
@MiraiExperimentalApi
|
|
||||||
public sealed class BotNudgedEvent : AbstractEvent(), BotEvent, Packet {
|
|
||||||
/**
|
|
||||||
* 戳一戳的发起人,为 [Bot] 的某一好友, 或某一群员, 或 [Bot.asFriend]
|
|
||||||
*/
|
|
||||||
public abstract val from: UserOrBot
|
|
||||||
|
|
||||||
/** 戳一戳的动作名称 */
|
|
||||||
public abstract val action: String
|
|
||||||
|
|
||||||
/** 戳一戳中设置的自定义后缀 */
|
|
||||||
public abstract val suffix: String
|
|
||||||
|
|
||||||
@MiraiExperimentalApi
|
|
||||||
/** [Bot] 在群聊中被戳 */
|
|
||||||
public sealed class InGroup : BotNudgedEvent(), GroupMemberEvent {
|
|
||||||
abstract override val from: Member
|
|
||||||
override val bot: Bot get() = from.bot
|
|
||||||
|
|
||||||
/** [Bot] 在 [Group] 中被 [Member] 戳了 */
|
|
||||||
public data class ByMember internal constructor(
|
|
||||||
override val action: String,
|
|
||||||
override val suffix: String,
|
|
||||||
override val member: Member
|
|
||||||
) : InGroup() {
|
|
||||||
override val from: Member
|
|
||||||
get() = member
|
|
||||||
|
|
||||||
override fun toString(): String {
|
|
||||||
return "BotNudgedEvent.InGroup.ByMember(member=$member, action=$action, suffix=$suffix)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** [Bot] 在 [Group] 中自己戳了自己 */
|
|
||||||
public data class ByBot internal constructor(
|
|
||||||
override val action: String,
|
|
||||||
override val suffix: String,
|
|
||||||
override val group: Group
|
|
||||||
) : InGroup() {
|
|
||||||
override val member: Member get() = group.botAsMember
|
|
||||||
override val from: Member get() = member
|
|
||||||
|
|
||||||
override fun toString(): String {
|
|
||||||
return "BotNudgedEvent.InGroup.ByBot(group=$group, action=$action, suffix=$suffix)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@MiraiExperimentalApi
|
|
||||||
/** [Bot] 在私聊中被戳 */
|
|
||||||
public sealed class InPrivateSession : BotNudgedEvent() {
|
|
||||||
abstract override val from: User
|
|
||||||
override val bot: Bot get() = from.bot
|
|
||||||
|
|
||||||
/** 在私聊中 [Friend] 戳了 [Bot] */
|
|
||||||
public data class ByFriend internal constructor(
|
|
||||||
override val friend: Friend,
|
|
||||||
override val action: String,
|
|
||||||
override val suffix: String
|
|
||||||
) : InPrivateSession(), FriendEvent {
|
|
||||||
override val from: Friend get() = friend
|
|
||||||
override val bot: Bot get() = from.bot
|
|
||||||
|
|
||||||
override fun toString(): String {
|
|
||||||
return "BotNudgedEvent.InPrivateSession.ByFriend(friend=$friend, action=$action, suffix=$suffix)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 在私聊中 [Stranger] 戳了 [Bot] */
|
|
||||||
public data class ByStranger internal constructor(
|
|
||||||
override val stranger: Stranger,
|
|
||||||
override val action: String,
|
|
||||||
override val suffix: String
|
|
||||||
) : InPrivateSession(), StrangerEvent {
|
|
||||||
override val from: Stranger get() = stranger
|
|
||||||
override val bot: Bot get() = stranger.bot
|
|
||||||
|
|
||||||
override fun toString(): String {
|
|
||||||
return "BotNudgedEvent.InPrivateSession.ByFriend(friend=$stranger, action=$action, suffix=$suffix)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** [Bot] 在私聊中自己戳了自己 */
|
|
||||||
public data class ByBot internal constructor(
|
|
||||||
/** [Bot] 的对话对象 */
|
|
||||||
/** 可能是 [Stranger] 或 [Friend] */
|
|
||||||
val user: User,
|
|
||||||
override val action: String,
|
|
||||||
override val suffix: String
|
|
||||||
) : InPrivateSession(), BotEvent {
|
|
||||||
override val from: User
|
|
||||||
get() = if (user is Stranger) {
|
|
||||||
bot.asStranger
|
|
||||||
} else {
|
|
||||||
bot.asFriend
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun toString(): String {
|
|
||||||
return "BotNudgedEvent.InPrivateSession.ByBot(friend=$user, action=$action, suffix=$suffix)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
/**
|
/**
|
||||||
* [Bot] 被 [戳][Nudge] 的事件.
|
* 戳一戳事件
|
||||||
*/
|
*/
|
||||||
@MiraiExperimentalAPI
|
public data class NudgeEvent @MiraiInternalApi constructor(
|
||||||
public data class BotNudgedEvent internal constructor(
|
|
||||||
/**
|
/**
|
||||||
* 戳一戳的发起人,为 [Bot] 的某一好友, 或某一群员, 或 [Bot.selfQQ]
|
* 戳一戳发起人
|
||||||
*/
|
*/
|
||||||
public val from: User,
|
public val from: UserOrBot,
|
||||||
/**
|
/**
|
||||||
* 戳一戳的动作名称
|
* 戳一戳目标, 可能与 [from] 相同.
|
||||||
*/
|
*/
|
||||||
|
public val target: UserOrBot,
|
||||||
|
/**
|
||||||
|
* 消息语境, 同 [MessageEvent.subject]. 可能为 [Group], [Stranger], [Friend], [Member].
|
||||||
|
*/
|
||||||
|
public val subject: Contact,
|
||||||
public val action: String,
|
public val action: String,
|
||||||
/**
|
|
||||||
* 戳一戳中设置的自定义后缀
|
|
||||||
*/
|
|
||||||
public val suffix: String,
|
public val suffix: String,
|
||||||
) : BotEvent, Packet, AbstractEvent() {
|
) : AbstractEvent(), BotEvent, Packet {
|
||||||
/**
|
override val bot: Bot get() = from.bot
|
||||||
* 戳一戳的目标
|
}
|
||||||
*/
|
|
||||||
public override val bot: Bot get() = from.bot
|
|
||||||
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 戳一戳发起的会话环境, 可能是 [Friend] 或者 [Group]
|
|
||||||
*
|
|
||||||
* @see MessageEvent.subject
|
|
||||||
*/
|
|
||||||
@MiraiExperimentalApi
|
|
||||||
public val BotNudgedEvent.subject: ContactOrBot
|
|
||||||
get() = when (val inlineFrom = from) {
|
|
||||||
is Member -> inlineFrom.group
|
|
||||||
else -> inlineFrom
|
|
||||||
}
|
|
||||||
|
|
||||||
// region 图片
|
|
||||||
|
|
||||||
// endregion
|
|
@ -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 许可证的约束, 可以在以下链接找到该许可证.
|
* 此源代码的使用受 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.
|
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||||
@ -21,8 +21,6 @@ import net.mamoe.mirai.contact.Group
|
|||||||
import net.mamoe.mirai.contact.User
|
import net.mamoe.mirai.contact.User
|
||||||
import net.mamoe.mirai.event.AbstractEvent
|
import net.mamoe.mirai.event.AbstractEvent
|
||||||
import net.mamoe.mirai.internal.network.Packet
|
import net.mamoe.mirai.internal.network.Packet
|
||||||
import net.mamoe.mirai.message.action.Nudge
|
|
||||||
import net.mamoe.mirai.utils.MiraiExperimentalApi
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean
|
import java.util.concurrent.atomic.AtomicBoolean
|
||||||
|
|
||||||
|
|
||||||
@ -119,57 +117,4 @@ public data class FriendInputStatusChangedEvent internal constructor(
|
|||||||
public override val friend: Friend,
|
public override val friend: Friend,
|
||||||
public val inputting: Boolean
|
public val inputting: Boolean
|
||||||
|
|
||||||
) : FriendEvent, Packet, AbstractEvent()
|
) : FriendEvent, Packet, AbstractEvent()
|
||||||
|
|
||||||
/**
|
|
||||||
* 在 [Friend] 与 [Bot] 的对话中, [Friend] 被 [戳][Nudge] 事件
|
|
||||||
*
|
|
||||||
* 注: 此事件仅可能在私聊中发生
|
|
||||||
*/
|
|
||||||
@MiraiExperimentalApi
|
|
||||||
public sealed class FriendNudgedEvent : AbstractEvent(), FriendEvent, Packet {
|
|
||||||
/**
|
|
||||||
* 戳一戳的发起人, 为 [Bot] 的某一好友, 或是 [Bot.asFriend]
|
|
||||||
*/
|
|
||||||
public abstract val from: Friend
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 戳一戳的动作名称
|
|
||||||
*/
|
|
||||||
public abstract val action: String
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 戳一戳中设置的自定义后缀
|
|
||||||
*/
|
|
||||||
public abstract val suffix: String
|
|
||||||
|
|
||||||
/** 在 [Bot] 与 [Friend] 的对话中 [Friend] 戳了自己事件 */
|
|
||||||
@MiraiExperimentalApi
|
|
||||||
public data class NudgedByHimself internal constructor(
|
|
||||||
override val friend: Friend,
|
|
||||||
override val action: String,
|
|
||||||
override val suffix: String
|
|
||||||
) : FriendNudgedEvent() {
|
|
||||||
override fun toString(): String {
|
|
||||||
return "FriendNudgedEvent.NudgedByHimself(friend=$friend, action=$action, suffix=$suffix)"
|
|
||||||
}
|
|
||||||
|
|
||||||
override val from: Friend
|
|
||||||
get() = friend
|
|
||||||
}
|
|
||||||
|
|
||||||
/** [Bot] 戳了 [Friend] */
|
|
||||||
@MiraiExperimentalApi
|
|
||||||
public data class NudgedByBot internal constructor(
|
|
||||||
override val friend: Friend,
|
|
||||||
override val action: String,
|
|
||||||
override val suffix: String
|
|
||||||
) : FriendNudgedEvent() {
|
|
||||||
override fun toString(): String {
|
|
||||||
return "FriendNudgedEvent.NudgedByBot(friend=$friend, action=$action, suffix=$suffix)"
|
|
||||||
}
|
|
||||||
|
|
||||||
override val from: Friend
|
|
||||||
get() = bot.asFriend
|
|
||||||
}
|
|
||||||
}
|
|
@ -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 许可证的约束, 可以在以下链接找到该许可证.
|
* 此源代码的使用受 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.
|
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||||
@ -21,7 +21,6 @@ import net.mamoe.mirai.data.GroupHonorType
|
|||||||
import net.mamoe.mirai.event.AbstractEvent
|
import net.mamoe.mirai.event.AbstractEvent
|
||||||
import net.mamoe.mirai.event.BroadcastControllable
|
import net.mamoe.mirai.event.BroadcastControllable
|
||||||
import net.mamoe.mirai.internal.network.Packet
|
import net.mamoe.mirai.internal.network.Packet
|
||||||
import net.mamoe.mirai.message.action.Nudge
|
|
||||||
import net.mamoe.mirai.utils.MiraiExperimentalApi
|
import net.mamoe.mirai.utils.MiraiExperimentalApi
|
||||||
import net.mamoe.mirai.utils.MiraiInternalApi
|
import net.mamoe.mirai.utils.MiraiInternalApi
|
||||||
import java.util.concurrent.atomic.AtomicBoolean
|
import java.util.concurrent.atomic.AtomicBoolean
|
||||||
@ -493,34 +492,6 @@ public data class MemberUnmuteEvent @MiraiInternalApi constructor(
|
|||||||
|
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
// region 戳一戳
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* [Member] 被 [戳][Nudge] 的事件.
|
|
||||||
*/
|
|
||||||
@MiraiExperimentalApi
|
|
||||||
public data class MemberNudgedEvent @MiraiInternalApi constructor(
|
|
||||||
/**
|
|
||||||
* 戳一戳的发起人, 不可能是 bot
|
|
||||||
*/
|
|
||||||
public val from: Member,
|
|
||||||
/**
|
|
||||||
* 戳一戳的目标 (被戳的群员), 不可能是 bot
|
|
||||||
*/
|
|
||||||
public override val member: Member,
|
|
||||||
/**
|
|
||||||
* 戳一戳的动作名称
|
|
||||||
*/
|
|
||||||
public val action: String,
|
|
||||||
/**
|
|
||||||
* 戳一戳中设置的自定义后缀
|
|
||||||
*/
|
|
||||||
public val suffix: String,
|
|
||||||
) : GroupMemberEvent, BotPassiveEvent, Packet, AbstractEvent()
|
|
||||||
|
|
||||||
// endregion
|
|
||||||
|
|
||||||
// region 群荣誉
|
// region 群荣誉
|
||||||
/**
|
/**
|
||||||
* [Member] 荣誉改变时的事件, 目前只支持龙王
|
* [Member] 荣誉改变时的事件, 目前只支持龙王
|
||||||
|
@ -1,3 +1,12 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
||||||
|
*/
|
||||||
|
|
||||||
package net.mamoe.mirai.event.events
|
package net.mamoe.mirai.event.events
|
||||||
|
|
||||||
import net.mamoe.mirai.Bot
|
import net.mamoe.mirai.Bot
|
||||||
@ -5,8 +14,6 @@ import net.mamoe.mirai.contact.Friend
|
|||||||
import net.mamoe.mirai.contact.Stranger
|
import net.mamoe.mirai.contact.Stranger
|
||||||
import net.mamoe.mirai.event.AbstractEvent
|
import net.mamoe.mirai.event.AbstractEvent
|
||||||
import net.mamoe.mirai.internal.network.Packet
|
import net.mamoe.mirai.internal.network.Packet
|
||||||
import net.mamoe.mirai.message.action.Nudge
|
|
||||||
import net.mamoe.mirai.utils.MiraiExperimentalApi
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增陌生人的事件
|
* 新增陌生人的事件
|
||||||
@ -58,57 +65,4 @@ public abstract class StrangerRelationChangeEvent(
|
|||||||
public val friend: Friend
|
public val friend: Friend
|
||||||
) : StrangerRelationChangeEvent(stranger)
|
) : StrangerRelationChangeEvent(stranger)
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 在 [Stranger] 与 [Bot] 的对话中, [Stranger] 被 [戳][Nudge] 事件
|
|
||||||
*
|
|
||||||
* 注: 此事件仅可能在私聊中发生
|
|
||||||
*/
|
|
||||||
@MiraiExperimentalApi
|
|
||||||
public sealed class StrangerNudgedEvent : AbstractEvent(), StrangerEvent, Packet {
|
|
||||||
/**
|
|
||||||
* 戳一戳的发起人, 为 [Bot] 的某一好友, 或是 [Bot.asFriend]
|
|
||||||
*/
|
|
||||||
public abstract val from: Stranger
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 戳一戳的动作名称
|
|
||||||
*/
|
|
||||||
public abstract val action: String
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 戳一戳中设置的自定义后缀
|
|
||||||
*/
|
|
||||||
public abstract val suffix: String
|
|
||||||
|
|
||||||
/** 在 [Bot] 与 [Stranger] 的对话中 [Stranger] 戳了自己事件 */
|
|
||||||
@MiraiExperimentalApi
|
|
||||||
public data class NudgedByHimself internal constructor(
|
|
||||||
override val stranger: Stranger,
|
|
||||||
override val action: String,
|
|
||||||
override val suffix: String
|
|
||||||
) : StrangerNudgedEvent() {
|
|
||||||
override fun toString(): String {
|
|
||||||
return "StrangerNudgedEvent.NudgedByHimself(stranger=$stranger, action=$action, suffix=$suffix)"
|
|
||||||
}
|
|
||||||
|
|
||||||
override val from: Stranger
|
|
||||||
get() = stranger
|
|
||||||
}
|
|
||||||
|
|
||||||
/** [Bot] 戳了 [Stranger] */
|
|
||||||
@MiraiExperimentalApi
|
|
||||||
public data class NudgedByBot internal constructor(
|
|
||||||
override val stranger: Stranger,
|
|
||||||
override val action: String,
|
|
||||||
override val suffix: String
|
|
||||||
) : StrangerNudgedEvent() {
|
|
||||||
override fun toString(): String {
|
|
||||||
return "StrangerNudgedEvent.NudgedByBot(stranger=$stranger, action=$action, suffix=$suffix)"
|
|
||||||
}
|
|
||||||
|
|
||||||
override val from: Stranger
|
|
||||||
get() = bot.asStranger
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -12,8 +12,7 @@ import net.mamoe.kjbb.JvmBlockingBridge
|
|||||||
import net.mamoe.mirai.Bot
|
import net.mamoe.mirai.Bot
|
||||||
import net.mamoe.mirai.Mirai
|
import net.mamoe.mirai.Mirai
|
||||||
import net.mamoe.mirai.contact.*
|
import net.mamoe.mirai.contact.*
|
||||||
import net.mamoe.mirai.event.events.BotNudgedEvent
|
import net.mamoe.mirai.event.events.NudgeEvent
|
||||||
import net.mamoe.mirai.event.events.MemberNudgedEvent
|
|
||||||
import net.mamoe.mirai.utils.BotConfiguration
|
import net.mamoe.mirai.utils.BotConfiguration
|
||||||
import net.mamoe.mirai.utils.BotConfiguration.MiraiProtocol
|
import net.mamoe.mirai.utils.BotConfiguration.MiraiProtocol
|
||||||
|
|
||||||
@ -42,8 +41,7 @@ public sealed class Nudge {
|
|||||||
* @return 成功发送时为 `true`. 若对方禁用 "戳一戳" 功能, 返回 `false`.
|
* @return 成功发送时为 `true`. 若对方禁用 "戳一戳" 功能, 返回 `false`.
|
||||||
* @throws UnsupportedOperationException 当未使用 [安卓协议][MiraiProtocol.ANDROID_PHONE] 时抛出
|
* @throws UnsupportedOperationException 当未使用 [安卓协议][MiraiProtocol.ANDROID_PHONE] 时抛出
|
||||||
*
|
*
|
||||||
* @see MemberNudgedEvent 成员被戳事件
|
* @see NudgeEvent 事件
|
||||||
* @see BotNudgedEvent [Bot] 被戳事件
|
|
||||||
* @see Contact.sendNudge
|
* @see Contact.sendNudge
|
||||||
*/
|
*/
|
||||||
@JvmBlockingBridge
|
@JvmBlockingBridge
|
||||||
@ -62,8 +60,7 @@ public sealed class Nudge {
|
|||||||
*
|
*
|
||||||
* @throws UnsupportedOperationException 当未使用 [安卓协议][MiraiProtocol.ANDROID_PHONE] 时抛出
|
* @throws UnsupportedOperationException 当未使用 [安卓协议][MiraiProtocol.ANDROID_PHONE] 时抛出
|
||||||
*
|
*
|
||||||
* @see MemberNudgedEvent 成员被戳事件
|
* @see NudgeEvent 事件
|
||||||
* @see BotNudgedEvent [Bot] 被戳事件
|
|
||||||
*/
|
*/
|
||||||
@JvmSynthetic
|
@JvmSynthetic
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
|
@ -268,15 +268,15 @@ private object Transformers732 : Map<Int, Lambda732> by mapOf(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (target.id == bot.id) {
|
return@lambda732 sequenceOf(
|
||||||
return@lambda732 sequenceOf(
|
NudgeEvent(
|
||||||
if (from.id == bot.id)
|
from = if (from.id == bot.id) bot else from,
|
||||||
BotNudgedEvent.InGroup.ByBot(action, suffix, group)
|
target = if (target.id == bot.id) bot else target,
|
||||||
else
|
action = action,
|
||||||
BotNudgedEvent.InGroup.ByMember(action, suffix, from)
|
suffix = suffix,
|
||||||
|
subject = group
|
||||||
)
|
)
|
||||||
}
|
)
|
||||||
return@lambda732 sequenceOf(MemberNudgedEvent(from, target, action, suffix))
|
|
||||||
}
|
}
|
||||||
//龙王
|
//龙王
|
||||||
10093L, 1053L, 1054L -> {
|
10093L, 1053L, 1054L -> {
|
||||||
@ -567,8 +567,8 @@ internal object Transformers528 : Map<Long, Lambda528> by mapOf(
|
|||||||
var action = ""
|
var action = ""
|
||||||
var target: User? = null
|
var target: User? = null
|
||||||
var suffix = ""
|
var suffix = ""
|
||||||
body.msgTemplParam.asSequence().map {
|
body.msgTemplParam.asSequence().map { param ->
|
||||||
it.name.decodeToString() to it.value.decodeToString()
|
param.name.decodeToString() to param.value.decodeToString()
|
||||||
}.forEach { (key, value) ->
|
}.forEach { (key, value) ->
|
||||||
when (key) {
|
when (key) {
|
||||||
"action_str" -> action = value
|
"action_str" -> action = value
|
||||||
@ -579,44 +579,26 @@ internal object Transformers528 : Map<Long, Lambda528> by mapOf(
|
|||||||
"suffix_str" -> suffix = value
|
"suffix_str" -> suffix = value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val subject: User = bot.getFriend(msgInfo.lFromUin) ?: bot.getStranger(msgInfo.lFromUin)
|
|
||||||
?: return@lambda528 emptySequence()
|
val subject: User = bot.getFriend(msgInfo.lFromUin)
|
||||||
//机器人自己戳自己
|
?: bot.getStranger(msgInfo.lFromUin)
|
||||||
if ((target == null && from == null) || (target?.id == from?.id && from?.id == bot.id)) {
|
?: return@lambda528 emptySequence()
|
||||||
sequenceOf(BotNudgedEvent.InPrivateSession.ByBot(subject, action, suffix))
|
|
||||||
} else sequenceOf(
|
sequenceOf(
|
||||||
when (subject) {
|
when {
|
||||||
is Friend -> when {
|
target == null && from == null || target?.id == from?.id && from?.id == bot.id -> {
|
||||||
//机器人自身为目标
|
//机器人自己戳自己
|
||||||
target == null || target!!.id == bot.id -> BotNudgedEvent.InPrivateSession.ByFriend(
|
NudgeEvent(from = bot, target = bot, subject = subject, action, suffix)
|
||||||
subject,
|
|
||||||
action,
|
|
||||||
suffix
|
|
||||||
)
|
|
||||||
//机器人自身为发起者
|
|
||||||
from == null || from!!.id == bot.id -> FriendNudgedEvent.NudgedByBot(
|
|
||||||
subject,
|
|
||||||
action,
|
|
||||||
suffix
|
|
||||||
)
|
|
||||||
else -> FriendNudgedEvent.NudgedByHimself(subject, action, suffix)
|
|
||||||
}
|
}
|
||||||
is Stranger -> when {
|
target == null || target!!.id == bot.id -> {
|
||||||
//机器人自身为目标
|
//机器人自身为目标
|
||||||
target == null || target!!.id == bot.id -> BotNudgedEvent.InPrivateSession.ByStranger(
|
NudgeEvent(from = subject, target = bot, subject = subject, action, suffix)
|
||||||
subject,
|
|
||||||
action,
|
|
||||||
suffix
|
|
||||||
)
|
|
||||||
//机器人自身为发起者
|
|
||||||
from == null || from!!.id == bot.id -> StrangerNudgedEvent.NudgedByBot(
|
|
||||||
subject,
|
|
||||||
action,
|
|
||||||
suffix
|
|
||||||
)
|
|
||||||
else -> StrangerNudgedEvent.NudgedByHimself(subject, action, suffix)
|
|
||||||
}
|
}
|
||||||
else -> error("Internal Error: Unable to find nudge type")
|
from == null || from!!.id == bot.id -> {
|
||||||
|
//机器人自身为发起者
|
||||||
|
NudgeEvent(from = bot, target = subject, subject = subject, action, suffix)
|
||||||
|
}
|
||||||
|
else -> NudgeEvent(from = subject, target = subject, subject = subject, action, suffix)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user