From cdb0a89fa8ef9a37f7161dff7eadb7b1d9eedee2 Mon Sep 17 00:00:00 2001 From: "jiahua.liu" Date: Tue, 4 Feb 2020 11:53:14 +0800 Subject: [PATCH] bot permissions --- .../kotlin/net/mamoe/mirai/qqandroid/ContactImpl.kt | 7 ++++--- .../qqandroid/network/QQAndroidBotNetworkHandler.kt | 13 ++++++++++--- .../network/protocol/packet/chat/TroopManagement.kt | 9 +-------- .../kotlin/net.mamoe.mirai/contact/Group.kt | 3 +++ .../kotlin/net.mamoe.mirai/contact/Member.kt | 2 +- 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/ContactImpl.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/ContactImpl.kt index 1bf3c4577..85575796f 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/ContactImpl.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/ContactImpl.kt @@ -79,7 +79,7 @@ internal class MemberImpl( return false } //判断有无禁言权限 - val myPermission = group[bot.uin].permission + val myPermission = group.botPermission val targetPermission = this.permission if (myPermission != MemberPermission.OWNER) { if (targetPermission == MemberPermission.OWNER || targetPermission == MemberPermission.ADMINISTRATOR) { @@ -103,8 +103,8 @@ internal class MemberImpl( } } - override suspend fun unmute() { - TODO("not implemented") + override suspend fun unmute(): Boolean { + return mute(0) } } @@ -120,6 +120,7 @@ internal class GroupImpl( override var members: ContactList ) : ContactImpl(), Group { override lateinit var owner: Member + override var botPermission: MemberPermission = MemberPermission.MEMBER override suspend fun quit(): Boolean { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt index 0d28289ae..b7538efad 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt @@ -178,6 +178,9 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler coroutineContext = group.coroutineContext, permission = MemberPermission.OWNER ) + if (it.dwGroupOwnerUin == bot.uin) { + group.botPermission == MemberPermission.OWNER + } toGet[group] = contactList bot.groups.delegate.addLast(group) } @@ -217,9 +220,9 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler bot.logger.info("加入群组: ${fillUntil9(bot.groups.size)}\t\t\t 加载时间: ${currentTimeMillis - friendLoadFinish}ms") groupInfo.forEach { if (it.value == -1) { - bot.logger.error("群组号码: ${fillUntil9(it.key)}\t\t\t 成员数量加载失败") + bot.logger.error("群组号码: ${fillUntil9(it.key)}\t 成员数量加载失败\t BOT权限: " + bot.groups[it.key].botPermission.toString()) } else { - bot.logger.info("群组号码: ${fillUntil9(it.key)}\t\t\t 成员数量: ${it.value}") + bot.logger.info("群组号码: ${fillUntil9(it.key)}\t 成员数量: ${it.value}\t") } } bot.logger.info("====================Mirai Bot List初始化完毕====================") @@ -247,7 +250,11 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler coroutineContext = group.coroutineContext, permission = when { it.memberUin == owner -> MemberPermission.OWNER - it.dwFlag == 1L -> MemberPermission.ADMINISTRATOR + it.dwFlag == 1L -> MemberPermission.ADMINISTRATOR.apply { + if (it.memberUin == bot.uin) { + group.botPermission = MemberPermission.ADMINISTRATOR + } + } else -> MemberPermission.MEMBER } ) diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/TroopManagement.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/TroopManagement.kt index 923b1deb2..58b3dc827 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/TroopManagement.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/TroopManagement.kt @@ -18,7 +18,7 @@ internal object TroopManagement { internal object Mute : OutgoingPacketFactory("OidbSvc.0x570_8") { override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response { - // this.debugPrintThis() + //屁用没有 return Response } @@ -47,16 +47,9 @@ internal object TroopManagement { ) } } - object Response : Packet } - fun Unmute( - client: QQAndroidClient, - groupCode: Long, - memberUin: Long - ): OutgoingPacket = Mute.invoke(client, groupCode, memberUin, 0) - internal object MuteAll : OutgoingPacketFactory("OidbSvc.0x89a_0") { override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): LoginPacket.LoginPacketResponse { diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt index 1e524b609..5d636f6cd 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt @@ -19,6 +19,9 @@ interface Group : Contact, CoroutineScope { */ val owner: Member + + val botPermission: MemberPermission + /** * 群名称 (同步事件更新) */ diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt index b7f8b823f..43e6bdeb1 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt @@ -36,7 +36,7 @@ interface Member : QQ, Contact { /** * 解除禁言 */ - suspend fun unmute() + suspend fun unmute(): Boolean } @ExperimentalTime