mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-09 19:50:27 +08:00
Add event broadcast
This commit is contained in:
parent
dfa3af5643
commit
5bd96876d9
@ -162,7 +162,7 @@ internal class MemberImpl(
|
||||
var _specialTitle: String,
|
||||
group: GroupImpl,
|
||||
override val coroutineContext: CoroutineContext,
|
||||
override val permission: MemberPermission
|
||||
override var permission: MemberPermission
|
||||
) : ContactImpl(), Member, QQ by qq {
|
||||
override val group: GroupImpl by group.unsafeWeakRef()
|
||||
val qq: QQImpl by qq.unsafeWeakRef()
|
||||
@ -182,7 +182,7 @@ internal class MemberImpl(
|
||||
newValue
|
||||
).sendWithoutExpect()
|
||||
}
|
||||
MemberCardChangeEvent.ByBot(oldValue, newValue, this@MemberImpl).broadcast()
|
||||
MemberCardChangeEvent(oldValue, newValue, this@MemberImpl, null).broadcast()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -190,7 +190,7 @@ internal class MemberImpl(
|
||||
override var specialTitle: String
|
||||
get() = _specialTitle
|
||||
set(newValue) {
|
||||
group.checkBotPermissionOperator()
|
||||
group.checkBotPermission(MemberPermission.OWNER)
|
||||
if (_specialTitle != newValue) {
|
||||
val oldValue = _specialTitle
|
||||
_specialTitle = newValue
|
||||
@ -223,7 +223,7 @@ internal class MemberImpl(
|
||||
).sendAndExpect<TroopManagement.Mute.Response>()
|
||||
}
|
||||
|
||||
MemberMuteEvent.ByBot(this@MemberImpl, durationSeconds).broadcast()
|
||||
MemberMuteEvent(this@MemberImpl, durationSeconds, null).broadcast()
|
||||
return true
|
||||
}
|
||||
|
||||
@ -241,7 +241,7 @@ internal class MemberImpl(
|
||||
).sendAndExpect<TroopManagement.Mute.Response>()
|
||||
}
|
||||
|
||||
MemberUnmuteEvent.ByBot(this@MemberImpl).broadcast()
|
||||
MemberUnmuteEvent(this@MemberImpl, null).broadcast()
|
||||
return true
|
||||
}
|
||||
|
||||
@ -256,7 +256,7 @@ internal class MemberImpl(
|
||||
member = this@MemberImpl,
|
||||
message = message
|
||||
).sendAndExpect<TroopManagement.Kick.Response>().success.also {
|
||||
MemberLeaveEvent.Kick.ByBot(this@MemberImpl).broadcast()
|
||||
MemberLeaveEvent.Kick(this@MemberImpl, null).broadcast()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -304,7 +304,7 @@ internal class GroupImpl(
|
||||
newName = newValue
|
||||
).sendWithoutExpect()
|
||||
}
|
||||
GroupNameChangeEvent.ByBot(oldValue, newValue, this@GroupImpl).broadcast()
|
||||
GroupNameChangeEvent(oldValue, newValue, this@GroupImpl, null).broadcast()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -324,7 +324,7 @@ internal class GroupImpl(
|
||||
newMemo = newValue
|
||||
).sendWithoutExpect()
|
||||
}
|
||||
GroupEntranceAnnouncementChangeEvent.ByBot(oldValue, newValue, this@GroupImpl).broadcast()
|
||||
GroupEntranceAnnouncementChangeEvent(oldValue, newValue, this@GroupImpl, null).broadcast()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -345,7 +345,7 @@ internal class GroupImpl(
|
||||
switch = newValue
|
||||
).sendWithoutExpect()
|
||||
}
|
||||
GroupAllowMemberInviteEvent.ByBot(oldValue, newValue, this@GroupImpl).broadcast()
|
||||
GroupAllowMemberInviteEvent(oldValue, newValue, this@GroupImpl, null).broadcast()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -377,7 +377,7 @@ internal class GroupImpl(
|
||||
switch = newValue
|
||||
).sendWithoutExpect()
|
||||
}
|
||||
GroupAllowConfessTalkEvent.ByBot(oldValue, newValue, this@GroupImpl).broadcast()
|
||||
GroupAllowConfessTalkEvent(oldValue, newValue, this@GroupImpl, null).broadcast()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -398,7 +398,7 @@ internal class GroupImpl(
|
||||
switch = newValue
|
||||
).sendWithoutExpect()
|
||||
}
|
||||
GroupMuteAllEvent.ByBot(oldValue, newValue, this@GroupImpl).broadcast()
|
||||
GroupMuteAllEvent(oldValue, newValue, this@GroupImpl, null).broadcast()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ import net.mamoe.mirai.contact.MemberPermission
|
||||
import net.mamoe.mirai.data.MultiPacket
|
||||
import net.mamoe.mirai.data.Packet
|
||||
import net.mamoe.mirai.event.*
|
||||
import net.mamoe.mirai.event.events.BotForceOfflineEvent
|
||||
import net.mamoe.mirai.event.events.BotOfflineEvent
|
||||
import net.mamoe.mirai.network.BotNetworkHandler
|
||||
import net.mamoe.mirai.qqandroid.GroupImpl
|
||||
import net.mamoe.mirai.qqandroid.MemberImpl
|
||||
@ -119,7 +119,7 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
|
||||
|
||||
@UseExperimental(MiraiExperimentalAPI::class, ExperimentalTime::class)
|
||||
override suspend fun init(): Unit = coroutineScope {
|
||||
this@QQAndroidBotNetworkHandler.subscribeAlways<BotForceOfflineEvent> {
|
||||
this@QQAndroidBotNetworkHandler.subscribeAlways<BotOfflineEvent> {
|
||||
if (this@QQAndroidBotNetworkHandler.bot == this.bot) {
|
||||
this.bot.logger.error("被挤下线")
|
||||
close()
|
||||
|
@ -18,7 +18,9 @@ import net.mamoe.mirai.contact.MemberPermission
|
||||
import net.mamoe.mirai.data.NoPacket
|
||||
import net.mamoe.mirai.data.Packet
|
||||
import net.mamoe.mirai.event.broadcast
|
||||
import net.mamoe.mirai.event.events.*
|
||||
import net.mamoe.mirai.message.GroupMessage
|
||||
import net.mamoe.mirai.qqandroid.MemberImpl
|
||||
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
||||
import net.mamoe.mirai.qqandroid.io.serialization.decodeUniPacket
|
||||
import net.mamoe.mirai.qqandroid.io.serialization.loadAs
|
||||
@ -103,26 +105,33 @@ internal class OnlinePush {
|
||||
this.discardExact(5)
|
||||
val var4 = readByte().toInt()
|
||||
var var5 = 0L
|
||||
val var7 = readUInt().toLong()
|
||||
val target = readUInt().toLong()
|
||||
if (var4 != 0 && var4 != 1) {
|
||||
var5 = readUInt().toLong()
|
||||
}
|
||||
if (var5 == 0L && this.remaining == 1L) {//管理员变更
|
||||
val groupUin = content.fromUin
|
||||
val target = var7
|
||||
if (this.readByte().toInt() == 1) {
|
||||
println("群uin" + groupUin + "新增管理员" + target)
|
||||
|
||||
val member = bot.getGroupByUin(groupUin)[target] as MemberImpl
|
||||
val old = member.permission
|
||||
return if (this.readByte().toInt() == 1) {
|
||||
member.permission = MemberPermission.ADMINISTRATOR
|
||||
MemberPermissionChangeEvent(member, old, MemberPermission.ADMINISTRATOR)
|
||||
} else {
|
||||
println("群uin" + groupUin + "减少管理员" + target)
|
||||
member.permission = MemberPermission.MEMBER
|
||||
MemberPermissionChangeEvent(member, old, MemberPermission.ADMINISTRATOR)
|
||||
}
|
||||
}
|
||||
}
|
||||
34 -> {
|
||||
var groupUinOrCode = readUInt().toLong()
|
||||
readUInt().toLong() // uin or code ?
|
||||
if (readByte().toInt() == 1) {
|
||||
val target = readUInt().toLong()
|
||||
val groupUin = content.fromUin
|
||||
println("群uin" + groupUin + "t掉了" + target)
|
||||
|
||||
val member = bot.getGroupByUin(groupUin)[target] as MemberImpl
|
||||
|
||||
return MemberLeaveEvent.Kick(member, TODO("踢出时获取管理员"))
|
||||
}
|
||||
|
||||
}
|
||||
@ -144,79 +153,86 @@ internal class OnlinePush {
|
||||
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot, sequenceId: Int): Packet {
|
||||
val reqPushMsg = decodeUniPacket(OnlinePushPack.SvcReqPushMsg.serializer(), "req")
|
||||
reqPushMsg.vMsgInfos.forEach { msgInfo: MsgInfo ->
|
||||
var debug = ""
|
||||
msgInfo.vMsg!!.read {
|
||||
if (msgInfo.shMsgType.toInt() == 732) {
|
||||
val groupCode = this.readUInt().toLong()
|
||||
debug = "群 $groupCode "
|
||||
when (val internalType = this.readShort().toInt()) {
|
||||
3073 -> {
|
||||
val operatorUin = this.readUInt().toLong()
|
||||
debug += " 管理员 $operatorUin"
|
||||
val operationTime = this.readUInt().toLong()
|
||||
debug += " 禁言 "
|
||||
this.discardExact(2)
|
||||
val target = this.readUInt().toLong()
|
||||
val time = this.readUInt().toLong()
|
||||
if (target == 0L) {
|
||||
debug += "全群"
|
||||
} else {
|
||||
debug += target
|
||||
}
|
||||
when {
|
||||
msgInfo.shMsgType.toInt() == 732 -> {
|
||||
val group = bot.getGroup(this.readUInt().toLong())
|
||||
|
||||
if (time == 0L) {
|
||||
debug += " 解除 "
|
||||
} else {
|
||||
debug += " " + time + "s"
|
||||
}
|
||||
}
|
||||
3585 -> {
|
||||
val operatorUin = this.readUInt().toLong()
|
||||
debug += " 管理员 $operatorUin"
|
||||
debug += " 匿名聊天 "
|
||||
if (this.readInt() == 0) {
|
||||
debug += " 开启 "
|
||||
} else {
|
||||
debug += " 关闭 "
|
||||
}
|
||||
}
|
||||
4096 -> {
|
||||
val dataBytes = this.readBytes(26)
|
||||
val message = this.readString(this.readByte().toInt())
|
||||
if (dataBytes[0].toInt() != 59) {
|
||||
println("更改群名为$message")
|
||||
} else {
|
||||
println(message + ":" + dataBytes.toUHexString())
|
||||
debug += message
|
||||
when (message) {
|
||||
"管理员已关闭群聊坦白说" -> {
|
||||
when (val internalType = this.readShort().toInt()) {
|
||||
3073 -> { // mute
|
||||
val operator = group[this.readUInt().toLong()]
|
||||
this.readUInt().toLong() // time
|
||||
this.discardExact(2)
|
||||
val target = this.readUInt().toLong()
|
||||
val time = this.readInt()
|
||||
|
||||
return if (target == 0L) {
|
||||
if (time == 0) {
|
||||
GroupMuteAllEvent(origin = true, new = false, operator = operator, group = group)
|
||||
} else {
|
||||
GroupMuteAllEvent(origin = false, new = true, operator = operator, group = group)
|
||||
}
|
||||
"管理员已开启群聊坦白说" -> {
|
||||
|
||||
}
|
||||
else -> {
|
||||
println("Unknown server messages $message")
|
||||
} else {
|
||||
val member = group[target]
|
||||
if (time == 0) {
|
||||
MemberUnmuteEvent(operator = operator, member = member)
|
||||
} else {
|
||||
MemberMuteEvent(operator = operator, member = member, durationSeconds = time)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
4352 -> {
|
||||
println(msgInfo.contentToString())
|
||||
println(msgInfo.vMsg.toUHexString())
|
||||
}
|
||||
else -> {
|
||||
println("unknown group internal type $internalType , data: " + this.readBytes().toUHexString() + " ")
|
||||
3585 -> { // 匿名
|
||||
val operator = group[this.readUInt().toLong()]
|
||||
return GroupAllowAnonymousChatEvent(
|
||||
origin = group.anonymousChat,
|
||||
new = this.readInt() == 0,
|
||||
operator = operator,
|
||||
group = group
|
||||
)
|
||||
}
|
||||
4096 -> {
|
||||
val dataBytes = this.readBytes(26)
|
||||
val message = this.readString(this.readByte().toInt())
|
||||
|
||||
TODO("读取操作人")
|
||||
|
||||
/*
|
||||
return if (dataBytes[0].toInt() != 59) {
|
||||
GroupNameChangeEvent(origin = group.name, new = )
|
||||
} else {
|
||||
println(message + ":" + dataBytes.toUHexString())
|
||||
when (message) {
|
||||
"管理员已关闭群聊坦白说" -> {
|
||||
GroupAllowConfessTalkEvent(group.confessTalk, false, ope)
|
||||
}
|
||||
"管理员已开启群聊坦白说" -> {
|
||||
|
||||
}
|
||||
else -> {
|
||||
println("Unknown server messages $message")
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
4352 -> {
|
||||
println(msgInfo.contentToString())
|
||||
println(msgInfo.vMsg.toUHexString())
|
||||
}
|
||||
else -> {
|
||||
println("unknown group internal type $internalType , data: " + this.readBytes().toUHexString() + " ")
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (msgInfo.shMsgType.toInt() == 528) {
|
||||
val content = msgInfo.vMsg.loadAs(OnlinePushPack.MsgType0x210.serializer())
|
||||
println(content.contentToString())
|
||||
} else {
|
||||
println("unknown shtype ${msgInfo.shMsgType.toInt()}")
|
||||
msgInfo.shMsgType.toInt() == 528 -> {
|
||||
val content = msgInfo.vMsg.loadAs(OnlinePushPack.MsgType0x210.serializer())
|
||||
println(content.contentToString())
|
||||
}
|
||||
else -> {
|
||||
println("unknown shtype ${msgInfo.shMsgType.toInt()}")
|
||||
}
|
||||
}
|
||||
}
|
||||
println(debug)
|
||||
}
|
||||
|
||||
return NoPacket
|
||||
|
@ -12,10 +12,7 @@
|
||||
package net.mamoe.mirai.contact
|
||||
|
||||
import net.mamoe.mirai.Bot
|
||||
import net.mamoe.mirai.event.events.MemberCardChangeEvent
|
||||
import net.mamoe.mirai.event.events.MemberLeaveEvent
|
||||
import net.mamoe.mirai.event.events.MemberMuteEvent
|
||||
import net.mamoe.mirai.event.events.MemberSpecialTitleChangeEvent
|
||||
import net.mamoe.mirai.event.events.*
|
||||
import net.mamoe.mirai.utils.WeakRefProperty
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.ExperimentalTime
|
||||
@ -64,13 +61,15 @@ interface Member : QQ, Contact {
|
||||
* @see Int.minutesToSeconds
|
||||
* @see Int.hoursToSeconds
|
||||
* @see Int.daysToSeconds
|
||||
*
|
||||
* @see MemberMuteEvent 成员被禁言事件
|
||||
*/
|
||||
suspend fun mute(durationSeconds: Int): Boolean
|
||||
|
||||
/**
|
||||
* 解除禁言. 机器人无权限时返回 `false`.
|
||||
*
|
||||
* @see MemberMuteEvent 成员被禁言事件.
|
||||
* @see MemberUnmuteEvent 成员被取消禁言事件.
|
||||
*/
|
||||
suspend fun unmute(): Boolean
|
||||
|
||||
|
@ -135,135 +135,81 @@ interface GroupSettingChangeEvent<T> : GroupEvent, BotPassiveEvent {
|
||||
/**
|
||||
* 群名改变. 此事件广播前修改就已经完成.
|
||||
*/
|
||||
sealed class GroupNameChangeEvent : GroupSettingChangeEvent<String>, BotPassiveEvent {
|
||||
|
||||
data class GroupNameChangeEvent(
|
||||
override val origin: String,
|
||||
override val new: String,
|
||||
override val group: Group,
|
||||
/**
|
||||
* 由管理员操作
|
||||
* 操作人. 为 null 时则是机器人操作
|
||||
*/
|
||||
data class ByOperator(
|
||||
override val origin: String,
|
||||
override val new: String,
|
||||
val operator: Member
|
||||
) : GroupNameChangeEvent() {
|
||||
override val group: Group
|
||||
get() = operator.group
|
||||
}
|
||||
|
||||
/**
|
||||
* 由机器人操作
|
||||
*/
|
||||
data class ByBot(
|
||||
override val origin: String,
|
||||
override val new: String,
|
||||
override val group: Group
|
||||
) : GroupNameChangeEvent()
|
||||
}
|
||||
|
||||
val operator: Member?
|
||||
) : GroupSettingChangeEvent<String>, Packet
|
||||
|
||||
/**
|
||||
* 入群公告改变. 此事件广播前修改就已经完成.
|
||||
*/
|
||||
sealed class GroupEntranceAnnouncementChangeEvent : GroupSettingChangeEvent<String>, BotPassiveEvent {
|
||||
|
||||
data class GroupEntranceAnnouncementChangeEvent(
|
||||
override val origin: String,
|
||||
override val new: String,
|
||||
override val group: Group,
|
||||
/**
|
||||
* 由管理员操作
|
||||
* 操作人. 为 null 时则是机器人操作
|
||||
*/
|
||||
data class ByOperator(
|
||||
override val origin: String,
|
||||
override val new: String,
|
||||
val operator: Member
|
||||
) : GroupEntranceAnnouncementChangeEvent() {
|
||||
override val group: Group
|
||||
get() = operator.group
|
||||
}
|
||||
val operator: Member?
|
||||
) : GroupSettingChangeEvent<String>, Packet
|
||||
|
||||
/**
|
||||
* 由机器人操作
|
||||
*/
|
||||
data class ByBot(
|
||||
override val origin: String,
|
||||
override val new: String,
|
||||
override val group: Group
|
||||
) : GroupEntranceAnnouncementChangeEvent()
|
||||
}
|
||||
|
||||
/**
|
||||
* 群 "全员禁言" 功能状态改变. 此事件广播前修改就已经完成.
|
||||
*/
|
||||
sealed class GroupMuteAllEvent : GroupSettingChangeEvent<Boolean>, BotPassiveEvent {
|
||||
data class GroupMuteAllEvent(
|
||||
override val origin: Boolean,
|
||||
override val new: Boolean,
|
||||
override val group: Group,
|
||||
/**
|
||||
* 由管理员操作
|
||||
* 操作人. 为 null 时则是机器人操作
|
||||
*/
|
||||
data class ByOperator(
|
||||
override val origin: Boolean,
|
||||
override val new: Boolean,
|
||||
val operator: Member
|
||||
) : GroupMuteAllEvent() {
|
||||
override val group: Group
|
||||
get() = operator.group
|
||||
}
|
||||
val operator: Member?
|
||||
) : GroupSettingChangeEvent<Boolean>, Packet
|
||||
|
||||
/**
|
||||
* 群 "匿名聊天" 功能状态改变. 此事件广播前修改就已经完成.
|
||||
*/
|
||||
data class GroupAllowAnonymousChatEvent(
|
||||
override val origin: Boolean,
|
||||
override val new: Boolean,
|
||||
override val group: Group,
|
||||
/**
|
||||
* 由机器人操作
|
||||
* 操作人. 为 null 时则是机器人操作
|
||||
*/
|
||||
data class ByBot(
|
||||
override val origin: Boolean,
|
||||
override val new: Boolean,
|
||||
override val group: Group
|
||||
) : GroupMuteAllEvent()
|
||||
}
|
||||
val operator: Member?
|
||||
) : GroupSettingChangeEvent<Boolean>, Packet
|
||||
|
||||
/**
|
||||
* 群 "坦白说" 功能状态改变. 此事件广播前修改就已经完成.
|
||||
*/
|
||||
sealed class GroupAllowConfessTalkEvent : GroupSettingChangeEvent<Boolean>, BotPassiveEvent {
|
||||
data class GroupAllowConfessTalkEvent(
|
||||
override val origin: Boolean,
|
||||
override val new: Boolean,
|
||||
override val group: Group,
|
||||
/**
|
||||
* 由管理员操作
|
||||
* 操作人. 为 null 时则是机器人操作
|
||||
*/
|
||||
data class ByOperator(
|
||||
override val origin: Boolean,
|
||||
override val new: Boolean,
|
||||
val operator: Member
|
||||
) : GroupAllowConfessTalkEvent() {
|
||||
override val group: Group
|
||||
get() = operator.group
|
||||
}
|
||||
|
||||
/**
|
||||
* 由机器人操作
|
||||
*/
|
||||
data class ByBot(
|
||||
override val origin: Boolean,
|
||||
override val new: Boolean,
|
||||
override val group: Group
|
||||
) : GroupAllowConfessTalkEvent()
|
||||
}
|
||||
val operator: Member?
|
||||
) : GroupSettingChangeEvent<Boolean>, Packet
|
||||
|
||||
/**
|
||||
* 群 "允许群员邀请好友加群" 功能状态改变. 此事件广播前修改就已经完成.
|
||||
*/
|
||||
sealed class GroupAllowMemberInviteEvent : GroupSettingChangeEvent<Boolean>, BotPassiveEvent {
|
||||
data class GroupAllowMemberInviteEvent(
|
||||
override val origin: Boolean,
|
||||
override val new: Boolean,
|
||||
override val group: Group,
|
||||
/**
|
||||
* 由管理员操作
|
||||
* 操作人. 为 null 时则是机器人操作
|
||||
*/
|
||||
data class ByOperator(
|
||||
override val origin: Boolean,
|
||||
override val new: Boolean,
|
||||
val operator: Member
|
||||
) : GroupAllowMemberInviteEvent() {
|
||||
override val group: Group
|
||||
get() = operator.group
|
||||
}
|
||||
|
||||
/**
|
||||
* 由机器人操作
|
||||
*/
|
||||
data class ByBot(
|
||||
override val origin: Boolean,
|
||||
override val new: Boolean,
|
||||
override val group: Group
|
||||
) : GroupAllowMemberInviteEvent()
|
||||
}
|
||||
val operator: Member?
|
||||
) : GroupSettingChangeEvent<Boolean>, Packet
|
||||
|
||||
// endregion
|
||||
|
||||
@ -284,22 +230,13 @@ sealed class MemberLeaveEvent : GroupMemberEvent {
|
||||
/**
|
||||
* 成员被踢出群. 成员不可能是机器人自己.
|
||||
*/
|
||||
sealed class Kick : MemberLeaveEvent() {
|
||||
data class Kick(
|
||||
override val member: Member,
|
||||
/**
|
||||
* 被管理员踢出
|
||||
* 操作人. 为 null 则是机器人操作
|
||||
*/
|
||||
data class ByOperator(
|
||||
override val member: Member,
|
||||
val operator: Member
|
||||
) : Kick(), BotPassiveEvent
|
||||
|
||||
/**
|
||||
* 被机器人踢出
|
||||
*/
|
||||
data class ByBot(
|
||||
override val member: Member
|
||||
) : Kick(), BotActiveEvent
|
||||
}
|
||||
val operator: Member?
|
||||
) : MemberLeaveEvent(), Packet
|
||||
|
||||
/**
|
||||
* 成员主动离开
|
||||
@ -314,47 +251,24 @@ sealed class MemberLeaveEvent : GroupMemberEvent {
|
||||
/**
|
||||
* 群名片改动. 此事件广播前修改就已经完成.
|
||||
*/
|
||||
sealed class MemberCardChangeEvent : GroupMemberEvent {
|
||||
data class MemberCardChangeEvent(
|
||||
/**
|
||||
* 修改前
|
||||
*/
|
||||
abstract val origin: String
|
||||
val origin: String,
|
||||
|
||||
/**
|
||||
* 修改后
|
||||
*/
|
||||
abstract val new: String
|
||||
val new: String,
|
||||
|
||||
abstract override val member: Member
|
||||
override val member: Member,
|
||||
|
||||
/**
|
||||
* 由管理员修改
|
||||
* 操作人. 为 null 时则是机器人操作. 可能与 [member] 引用相同, 此时为群员自己修改.
|
||||
*/
|
||||
data class ByOperator(
|
||||
override val origin: String,
|
||||
override val new: String,
|
||||
override val member: Member,
|
||||
val operator: Member
|
||||
) : MemberCardChangeEvent(), BotPassiveEvent
|
||||
|
||||
/**
|
||||
* 由 [Bot] 修改. 由 [Member.nameCard]
|
||||
*/
|
||||
data class ByBot(
|
||||
override val origin: String,
|
||||
override val new: String,
|
||||
override val member: Member
|
||||
) : MemberCardChangeEvent(), BotActiveEvent
|
||||
|
||||
/**
|
||||
* 该成员自己修改
|
||||
*/
|
||||
data class BySelf(
|
||||
override val origin: String,
|
||||
override val new: String,
|
||||
override val member: Member
|
||||
) : MemberCardChangeEvent(), BotPassiveEvent
|
||||
}
|
||||
val operator: Member?
|
||||
) : GroupMemberEvent
|
||||
|
||||
/**
|
||||
* 群头衔改动. 一定为群主操作
|
||||
@ -385,7 +299,7 @@ data class MemberPermissionChangeEvent(
|
||||
override val member: Member,
|
||||
val origin: MemberPermission,
|
||||
val new: MemberPermission
|
||||
) : GroupMemberEvent, BotPassiveEvent
|
||||
) : GroupMemberEvent, BotPassiveEvent, Packet
|
||||
|
||||
// endregion
|
||||
|
||||
@ -395,50 +309,25 @@ data class MemberPermissionChangeEvent(
|
||||
/**
|
||||
* 群成员被禁言事件. 操作人和被禁言的成员都不可能是机器人本人
|
||||
*/
|
||||
sealed class MemberMuteEvent : GroupMemberEvent {
|
||||
abstract override val member: Member
|
||||
|
||||
abstract val durationSeconds: Int
|
||||
|
||||
data class MemberMuteEvent(
|
||||
override val member: Member,
|
||||
val durationSeconds: Int,
|
||||
/**
|
||||
* 管理员禁言成员
|
||||
* 操作人. 为 null 则为机器人操作
|
||||
*/
|
||||
data class ByOperator(
|
||||
override val member: Member,
|
||||
override val durationSeconds: Int,
|
||||
val operator: Member
|
||||
) : MemberMuteEvent(), BotPassiveEvent
|
||||
|
||||
/**
|
||||
* 机器人禁言成员. 通过 [Member.mute] 触发
|
||||
*/
|
||||
data class ByBot(
|
||||
override val member: Member,
|
||||
override var durationSeconds: Int
|
||||
) : MemberMuteEvent(), BotActiveEvent
|
||||
}
|
||||
val operator: Member?
|
||||
) : GroupMemberEvent, Packet
|
||||
|
||||
/**
|
||||
* 群成员被取消禁言事件. 操作人和被禁言的成员都不可能是机器人本人
|
||||
*/
|
||||
sealed class MemberUnmuteEvent : GroupMemberEvent, BotPassiveEvent {
|
||||
abstract override val member: Member
|
||||
|
||||
data class MemberUnmuteEvent(
|
||||
override val member: Member,
|
||||
/**
|
||||
* 管理员禁言成员
|
||||
* 操作人. 为 null 则为机器人操作
|
||||
*/
|
||||
data class ByOperator(
|
||||
override val member: Member,
|
||||
val operator: Member
|
||||
) : MemberUnmuteEvent(), BotPassiveEvent
|
||||
|
||||
/**
|
||||
* 机器人禁言成员. 通过 [Member.unmute] 触发
|
||||
*/
|
||||
data class ByBot(
|
||||
override val member: Member
|
||||
) : MemberUnmuteEvent(), BotActiveEvent
|
||||
}
|
||||
val operator: Member?
|
||||
) : GroupMemberEvent, Packet
|
||||
|
||||
// endregion
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user