Skip to content

Commit d210cc4

Browse files
committed
ignore origin permission and Bot event support
#141
1 parent 313102f commit d210cc4

File tree

2 files changed

+30
-12
lines changed
  • docs/dev
  • overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/listener

2 files changed

+30
-12
lines changed

docs/dev/progress.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@
113113
+ BeforeImageUploadEvent
114114
+ BeforeShortVideoUploadEvent
115115
+ BotAvatarChangedEvent
116-
+ BotGroupPermissionChangeEvent
117116
+ BotJoinGroupEvent
118117
+ BotLeaveEvent
119118
+ BotNickChangedEvent

overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/listener/group.kt

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import cn.evolvefield.onebot.sdk.event.notice.group.*
88
import cn.evolvefield.onebot.sdk.event.notice.misc.GroupMsgEmojiLikeNotice
99
import cn.evolvefield.onebot.sdk.event.notice.misc.GroupReactionNotice
1010
import cn.evolvefield.onebot.sdk.event.request.GroupAddRequestEvent
11+
import net.mamoe.mirai.contact.MemberPermission
1112
import net.mamoe.mirai.contact.NormalMember
1213
import net.mamoe.mirai.contact.nameCardOrNick
1314
import 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

Comments
 (0)