mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-02 04:30:25 +08:00
Fix isByBot
This commit is contained in:
parent
469181e249
commit
58e4c156e8
@ -200,8 +200,9 @@ interface GroupSettingChangeEvent<T> : GroupEvent, BotPassiveEvent, BroadcastCon
|
|||||||
data class GroupNameChangeEvent(
|
data class GroupNameChangeEvent(
|
||||||
override val origin: String,
|
override val origin: String,
|
||||||
override val new: String,
|
override val new: String,
|
||||||
override val group: Group
|
override val group: Group,
|
||||||
) : GroupSettingChangeEvent<String>, Packet // 无法获取操作人
|
val isByBot: Boolean // 无法获取操作人
|
||||||
|
) : GroupSettingChangeEvent<String>, Packet
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 入群公告改变. 此事件广播前修改就已经完成.
|
* 入群公告改变. 此事件广播前修改就已经完成.
|
||||||
@ -251,8 +252,9 @@ data class GroupAllowAnonymousChatEvent(
|
|||||||
data class GroupAllowConfessTalkEvent(
|
data class GroupAllowConfessTalkEvent(
|
||||||
override val origin: Boolean,
|
override val origin: Boolean,
|
||||||
override val new: Boolean,
|
override val new: Boolean,
|
||||||
override val group: Group
|
override val group: Group,
|
||||||
) : GroupSettingChangeEvent<Boolean>, Packet // 无法获取操作人
|
val isByBot: Boolean // 无法获取操作人
|
||||||
|
) : GroupSettingChangeEvent<Boolean>, Packet
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 群 "允许群员邀请好友加群" 功能状态改变. 此事件广播前修改就已经完成.
|
* 群 "允许群员邀请好友加群" 功能状态改变. 此事件广播前修改就已经完成.
|
||||||
|
@ -13,7 +13,7 @@ package net.mamoe.mirai.utils
|
|||||||
|
|
||||||
import net.mamoe.mirai.utils.io.toUHexString
|
import net.mamoe.mirai.utils.io.toUHexString
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
import kotlin.reflect.KProperty0
|
import kotlin.reflect.KProperty1
|
||||||
|
|
||||||
private val indent: String = " ".repeat(4)
|
private val indent: String = " ".repeat(4)
|
||||||
|
|
||||||
@ -125,22 +125,25 @@ fun Any?._miraiContentToString(prefix: String = ""): String = when (this) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal expect fun KProperty1<*, *>.getValueAgainstPermission(receiver: Any): Any?
|
||||||
|
|
||||||
@MiraiDebugAPI
|
@MiraiDebugAPI
|
||||||
private fun Any.contentToStringReflectively(prefix: String, filter: ((name: String, value: Any?) -> Boolean)? = null): String {
|
private fun Any.contentToStringReflectively(prefix: String, filter: ((name: String, value: Any?) -> Boolean)? = null): String {
|
||||||
val newPrefix = "$prefix "
|
val newPrefix = "$prefix "
|
||||||
return (this::class.simpleName ?: "<UnnamedClass>") + "#" + this::class.hashCode() + " {\n" +
|
return (this::class.simpleName ?: "<UnnamedClass>") + "#" + this::class.hashCode() + " {\n" +
|
||||||
this.allMembersFromSuperClassesMatching { it.simpleName?.startsWith("net.mamoe.mirai") == true }
|
this.allMembersFromSuperClassesMatching { it.qualifiedName?.startsWith("net.mamoe.mirai") == true }
|
||||||
.distinctBy { it.name }
|
.distinctBy { it.name }
|
||||||
.filterNot { it.name.contains("$") || it.name == "Companion" || it.isConst || it.name == "serialVersionUID" }
|
.filterNot { it.name.contains("$") || it.name == "Companion" || it.isConst || it.name == "serialVersionUID" }
|
||||||
.mapNotNull {
|
.mapNotNull {
|
||||||
val value = it.get()
|
val value = it.getValueAgainstPermission(this)
|
||||||
if (filter != null) {
|
if (filter != null) {
|
||||||
kotlin.runCatching {
|
|
||||||
if (!filter(it.name, value))
|
if (!filter(it.name, value))
|
||||||
return@mapNotNull it.name to value
|
return@mapNotNull it.name to value
|
||||||
|
else {
|
||||||
|
return@mapNotNull null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
null
|
it.name to value
|
||||||
}
|
}
|
||||||
.joinToStringPrefixed(
|
.joinToStringPrefixed(
|
||||||
prefix = newPrefix
|
prefix = newPrefix
|
||||||
@ -152,16 +155,18 @@ private fun Any.contentToStringReflectively(prefix: String, filter: ((name: Stri
|
|||||||
} + "\n$prefix}"
|
} + "\n$prefix}"
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun Any.thisClassAndSuperclassSequence(): Sequence<KClass<out Any>> {
|
private fun KClass<out Any>.thisClassAndSuperclassSequence(): Sequence<KClass<out Any>> {
|
||||||
return sequenceOf(this::class) +
|
return sequenceOf(this) +
|
||||||
this::class.supertypes.asSequence()
|
this.supertypes.asSequence()
|
||||||
.mapNotNull { type -> type.classifier?.takeIf { it is KClass<*> } as? KClass<out Any> }
|
.mapNotNull { type -> type.classifier?.takeIf { it is KClass<*> }?.takeIf { it != Any::class } as? KClass<out Any> }.flatMap { it.thisClassAndSuperclassSequence() }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun Any.allMembersFromSuperClassesMatching(classFilter: (KClass<out Any>) -> Boolean): Sequence<KProperty0<*>> {
|
@Suppress("UNCHECKED_CAST")
|
||||||
return this.thisClassAndSuperclassSequence()
|
private fun Any.allMembersFromSuperClassesMatching(classFilter: (KClass<out Any>) -> Boolean): Sequence<KProperty1<Any, *>> {
|
||||||
|
return this::class.thisClassAndSuperclassSequence()
|
||||||
.filter { classFilter(it) }
|
.filter { classFilter(it) }
|
||||||
.map { it.members }
|
.map { it.members }
|
||||||
.flatMap { it.asSequence() }
|
.flatMap { it.asSequence() }
|
||||||
.mapNotNull { it as? KProperty0<*> }
|
.filterIsInstance<KProperty1<*, *>>()
|
||||||
|
.mapNotNull { it as KProperty1<Any, *> }
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user