mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-15 04:50:11 +08:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
d678d14a57
@ -68,38 +68,43 @@ internal class MemberImpl(
|
|||||||
override val coroutineContext: CoroutineContext,
|
override val coroutineContext: CoroutineContext,
|
||||||
override val permission: MemberPermission
|
override val permission: MemberPermission
|
||||||
) : ContactImpl(), Member, QQ by qq {
|
) : ContactImpl(), Member, QQ by qq {
|
||||||
override val bot: QQAndroidBot get() = qq.bot
|
|
||||||
override val group: GroupImpl by group.unsafeWeakRef()
|
override val group: GroupImpl by group.unsafeWeakRef()
|
||||||
val qq: QQImpl by qq.unsafeWeakRef()
|
val qq: QQImpl by qq.unsafeWeakRef()
|
||||||
|
|
||||||
|
override val bot: QQAndroidBot by bot.unsafeWeakRef()
|
||||||
|
|
||||||
|
|
||||||
override suspend fun mute(durationSeconds: Int): Boolean {
|
override suspend fun mute(durationSeconds: Int): Boolean {
|
||||||
if (bot.uin == this@MemberImpl.qq.id)//不能自己禁言自己
|
if (bot.uin == this.qq.id) {
|
||||||
{
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
//判断有无禁言权限
|
//判断有无禁言权限
|
||||||
val myPermission = group.get(bot.uin).permission
|
val myPermission = group.botPermission
|
||||||
if (myPermission == MemberPermission.ADMINISTRATOR || myPermission == MemberPermission.OWNER) {
|
val targetPermission = this.permission
|
||||||
return if (myPermission == MemberPermission.OWNER || (myPermission == MemberPermission.ADMINISTRATOR && permission == MemberPermission.MEMBER)) {
|
if (myPermission != MemberPermission.OWNER) {
|
||||||
|
if (targetPermission == MemberPermission.OWNER || targetPermission == MemberPermission.ADMINISTRATOR) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
} else if (myPermission == MemberPermission.MEMBER) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
try {
|
||||||
bot.network.run {
|
bot.network.run {
|
||||||
val response = TroopManagement.Mute(
|
val response = TroopManagement.Mute(
|
||||||
client = bot.client,
|
client = bot.client,
|
||||||
memberUin = id,
|
|
||||||
groupCode = group.id,
|
groupCode = group.id,
|
||||||
|
memberUin = this@MemberImpl.id,
|
||||||
timeInSecond = durationSeconds
|
timeInSecond = durationSeconds
|
||||||
).sendAndExpect<TroopManagement.Mute.Response>()
|
).sendAndExpect<TroopManagement.Mute.Response>()
|
||||||
}
|
}
|
||||||
true
|
return true
|
||||||
} else {
|
} catch (e: Exception) {
|
||||||
false
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun unmute() {
|
override suspend fun unmute(): Boolean {
|
||||||
TODO("not implemented")
|
return mute(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -115,6 +120,7 @@ internal class GroupImpl(
|
|||||||
override var members: ContactList<Member>
|
override var members: ContactList<Member>
|
||||||
) : ContactImpl(), Group {
|
) : ContactImpl(), Group {
|
||||||
override lateinit var owner: Member
|
override lateinit var owner: Member
|
||||||
|
override var botPermission: MemberPermission = MemberPermission.MEMBER
|
||||||
|
|
||||||
override suspend fun quit(): Boolean {
|
override suspend fun quit(): Boolean {
|
||||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
@ -178,6 +178,9 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
|
|||||||
coroutineContext = group.coroutineContext,
|
coroutineContext = group.coroutineContext,
|
||||||
permission = MemberPermission.OWNER
|
permission = MemberPermission.OWNER
|
||||||
)
|
)
|
||||||
|
if (it.dwGroupOwnerUin == bot.uin) {
|
||||||
|
group.botPermission == MemberPermission.OWNER
|
||||||
|
}
|
||||||
toGet[group] = contactList
|
toGet[group] = contactList
|
||||||
bot.groups.delegate.addLast(group)
|
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")
|
bot.logger.info("加入群组: ${fillUntil9(bot.groups.size)}\t\t\t 加载时间: ${currentTimeMillis - friendLoadFinish}ms")
|
||||||
groupInfo.forEach {
|
groupInfo.forEach {
|
||||||
if (it.value == -1) {
|
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 {
|
} 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初始化完毕====================")
|
bot.logger.info("====================Mirai Bot List初始化完毕====================")
|
||||||
@ -247,7 +250,11 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
|
|||||||
coroutineContext = group.coroutineContext,
|
coroutineContext = group.coroutineContext,
|
||||||
permission = when {
|
permission = when {
|
||||||
it.memberUin == owner -> MemberPermission.OWNER
|
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
|
else -> MemberPermission.MEMBER
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -18,7 +18,7 @@ internal object TroopManagement {
|
|||||||
|
|
||||||
internal object Mute : OutgoingPacketFactory<Mute.Response>("OidbSvc.0x570_8") {
|
internal object Mute : OutgoingPacketFactory<Mute.Response>("OidbSvc.0x570_8") {
|
||||||
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response {
|
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response {
|
||||||
// this.debugPrintThis()
|
//屁用没有
|
||||||
return Response
|
return Response
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,16 +47,9 @@ internal object TroopManagement {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object Response : Packet
|
object Response : Packet
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Unmute(
|
|
||||||
client: QQAndroidClient,
|
|
||||||
groupCode: Long,
|
|
||||||
memberUin: Long
|
|
||||||
): OutgoingPacket = Mute.invoke(client, groupCode, memberUin, 0)
|
|
||||||
|
|
||||||
|
|
||||||
internal object MuteAll : OutgoingPacketFactory<LoginPacket.LoginPacketResponse>("OidbSvc.0x89a_0") {
|
internal object MuteAll : OutgoingPacketFactory<LoginPacket.LoginPacketResponse>("OidbSvc.0x89a_0") {
|
||||||
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): LoginPacket.LoginPacketResponse {
|
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): LoginPacket.LoginPacketResponse {
|
||||||
|
@ -19,6 +19,9 @@ interface Group : Contact, CoroutineScope {
|
|||||||
*/
|
*/
|
||||||
val owner: Member
|
val owner: Member
|
||||||
|
|
||||||
|
|
||||||
|
val botPermission: MemberPermission
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 群名称 (同步事件更新)
|
* 群名称 (同步事件更新)
|
||||||
*/
|
*/
|
||||||
|
@ -36,7 +36,7 @@ interface Member : QQ, Contact {
|
|||||||
/**
|
/**
|
||||||
* 解除禁言
|
* 解除禁言
|
||||||
*/
|
*/
|
||||||
suspend fun unmute()
|
suspend fun unmute(): Boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExperimentalTime
|
@ExperimentalTime
|
||||||
|
Loading…
Reference in New Issue
Block a user