@@ -8,6 +8,7 @@ import cn.evolvefield.onebot.sdk.event.notice.group.*
88import cn.evolvefield.onebot.sdk.event.notice.misc.GroupMsgEmojiLikeNotice
99import cn.evolvefield.onebot.sdk.event.notice.misc.GroupReactionNotice
1010import cn.evolvefield.onebot.sdk.event.request.GroupAddRequestEvent
11+ import net.mamoe.mirai.contact.MemberPermission
1112import net.mamoe.mirai.contact.NormalMember
1213import net.mamoe.mirai.contact.nameCardOrNick
1314import net.mamoe.mirai.event.events.*
@@ -321,19 +322,37 @@ internal fun addGroupListeners() {
321322 || checkId(e.userId, " %onebot 返回了异常的数值 user_id=%value" )) return @listen
322323 // 设置/取消管理员通知
323324 val group = bot.group(e.groupId)
324- val member = group.queryMember( e.userId) ? : return @listen
325- val origin = member.permission
326- when (e.subType) {
327- " set " -> member.impl.role = " admin "
328- " unset " -> member.impl.role = " member "
325+ val isBot = e.userId == bot.id
326+ val member = if (isBot) {
327+ group.botAsMember
328+ } else {
329+ group.queryMember(e.userId) ? : return @listen
329330 }
330- if (origin != member.permission) {
331- bot.eventDispatcher.broadcastAsync(MemberPermissionChangeEvent (
332- member = member,
333- origin = origin,
334- new = member.permission
335- ))
331+ val origin: MemberPermission
332+ val new: MemberPermission
333+ when (e.subType) {
334+ " set" -> {
335+ member.impl.role = " admin"
336+ origin = MemberPermission .MEMBER
337+ new = MemberPermission .ADMINISTRATOR
338+ }
339+ " unset" -> {
340+ member.impl.role = " member"
341+ origin = MemberPermission .ADMINISTRATOR
342+ new = MemberPermission .MEMBER
343+ }
344+ else -> return @listen
336345 }
346+ val event = if (isBot) BotGroupPermissionChangeEvent (
347+ group = group,
348+ origin = origin,
349+ new = new
350+ ) else MemberPermissionChangeEvent (
351+ member = member,
352+ origin = origin,
353+ new = new
354+ )
355+ bot.eventDispatcher.broadcastAsync(event)
337356 }
338357 listen<GroupEssenceNoticeEvent > { e ->
339358 if (checkId(e.groupId, " %onebot 返回了异常的数值 group_id=%value" )
0 commit comments