优化群名片

pull/67/head
foxplaying 2025-10-31 00:00:00 +08:00
parent 747aff67b3
commit afb0421400
1 changed files with 44 additions and 34 deletions

View File

@ -153,11 +153,12 @@ class NoticeHandler:
group_id = raw_message.get("group_id")
user_id = raw_message.get("user_id")
self_id = raw_message.get("self_id")
member_info = await get_member_info(self.server_connection, group_id, user_id) if user_id != 0 else None
user_cardname = member_info.get("card") if member_info else None
if user_id and user_id != 0:
member_info = await get_member_info(self.server_connection, group_id, user_id)
nickname = member_info.get("nickname") if member_info and member_info.get("nickname") else "QQ用户"
user_nickname = member_info.get("nickname") if member_info and member_info.get("nickname") else "QQ用户"
else:
nickname = "系统"
user_nickname = "系统"
if user_id == 0:
try:
member_list = await get_group_member_list(self.server_connection, group_id)
@ -197,18 +198,19 @@ class NoticeHandler:
user_info = UserInfo(
platform=global_config.maibot_server.platform_name,
user_id=user_id,
user_nickname=nickname,
user_cardname=None,
user_nickname=user_nickname,
user_cardname=user_cardname,
)
system_notice = True
case "group_increase":
sub_type = raw_message.get("sub_type")
group_id = raw_message.get("group_id")
user_id = raw_message.get("user_id")
operator_id = raw_message.get("operator_id")
self_id = raw_message.get("self_id")
member_info = await get_member_info(self.server_connection, group_id, user_id)
nickname = member_info.get("nickname") if member_info and member_info.get("nickname") else "QQ用户"
operator_id = raw_message.get("operator_id")
member_info = await get_member_info(self.server_connection, group_id, user_id) if user_id != 0 else None
user_cardname = member_info.get("card") if member_info else None
user_nickname = member_info.get("nickname") if member_info and member_info.get("nickname") else "QQ用户"
operator_name = "系统"
if operator_id and operator_id != 0:
operator_info = await get_member_info(self.server_connection, group_id, operator_id)
@ -240,18 +242,16 @@ class NoticeHandler:
user_info = UserInfo(
platform=global_config.maibot_server.platform_name,
user_id=user_id,
user_nickname=nickname,
user_cardname=None,
user_nickname=user_nickname,
user_cardname=user_cardname,
)
system_notice = True
case "group_decrease":
sub_type = raw_message.get("sub_type")
group_id = raw_message.get("group_id")
user_id = raw_message.get("user_id")
operator_id = raw_message.get("operator_id")
self_id = raw_message.get("self_id")
member_info = await get_stranger_info(self.server_connection, user_id)
nickname = member_info.get("nickname") if member_info and member_info.get("nickname") else "QQ用户"
operator_id = raw_message.get("operator_id")
operator_name = "系统"
if operator_id and operator_id != 0:
operator_info = await get_member_info(self.server_connection, group_id, operator_id)
@ -260,7 +260,7 @@ class NoticeHandler:
else:
operator_name = str(operator_id)
if sub_type == "disband":
nickname = operator_name
user_id = operator_id
text = "群已被解散"
logger.info(f"{group_id} 已被 {operator_id} 解散")
elif user_id == self_id:
@ -283,12 +283,15 @@ class NoticeHandler:
else:
text = f"离开群(方式: {sub_type}"
logger.info(f"{group_id} 用户 {user_id} {text}")
member_info = await get_stranger_info(self.server_connection, user_id) if user_id != 0 else None
user_cardname = member_info.get("card") if member_info else None
user_nickname = member_info.get("nickname") if member_info and member_info.get("nickname") else "QQ用户"
handled_message = Seg(type="text", data=text)
user_info = UserInfo(
platform=global_config.maibot_server.platform_name,
user_id=user_id,
user_nickname=nickname,
user_cardname=None,
user_nickname=user_nickname,
user_cardname=user_cardname,
)
system_notice = True
case "essence":
@ -299,19 +302,26 @@ class NoticeHandler:
operator_id = raw_message.get("operator_id")
sender_id = raw_message.get("sender_id", 0)
user_id = raw_message.get("user_id", 0)
member_info = await get_stranger_info(self.server_connection, user_id) if user_id != 0 else None
user_cardname = member_info.get("card") if member_info else None
operator_name = "系统"
if operator_id and operator_id != 0:
operator_info = await get_member_info(self.server_connection, group_id, operator_id)
if operator_info:
operator_name = (
operator_info.get("nickname")
or operator_info.get("card")
or str(operator_id)
)
operator_name = operator_info.get("nickname") or operator_info.get("card") or str(operator_id)
sender_name = "QQ用户"
if sender_id != 0:
sender_info = await get_member_info(self.server_connection, group_id, sender_id)
if sender_info:
sender_name = sender_info.get("nickname") or sender_info.get("card") or str(sender_id)
if sub_type == "add":
if sender_id == 0:
text = f"将 一条消息ID: {message_id})设为精华"
logger.info(f"{group_id} 消息ID: {message_id})被 {operator_id} 设为精华")
if message_id:
ID = f"ID: {message_id}"
else:
ID = " "
text = f"将 一条消息{ID}设为精华"
logger.info(f"{group_id} 一条消息{ID}{operator_id} 设为精华")
else:
if user_id == self_id:
text = f"{sender_name}(你)的消息设为精华"
@ -321,24 +331,23 @@ class NoticeHandler:
logger.info(f"{group_id} 用户 {sender_id} 的消息被 {operator_id} 设为精华")
else:
text = f"精华消息事件:{sub_type}"
logger.info(f"{group_id} 消息ID: {message_id})被 {operator_id} 设为精华")
handled_message = Seg(type="text", data=text)
user_info = UserInfo(
platform=global_config.maibot_server.platform_name,
user_id=operator_id,
user_nickname=operator_name,
user_cardname=None,
user_cardname=user_cardname,
)
system_notice = True
case "group_card":
group_id = raw_message.get("group_id")
user_id = raw_message.get("user_id")
self_id = raw_message.get("self_id")
member_info = await get_member_info(self.server_connection, group_id, user_id)
nickname = member_info.get("nickname") if member_info and member_info.get("nickname") else str(user_id)
old_card = raw_message.get("card_old") or nickname
member_info = await get_member_info(self.server_connection, group_id, user_id) if user_id != 0 else None
user_nickname = member_info.get("nickname") if member_info and member_info.get("nickname") else str(user_id)
old_card = raw_message.get("card_old") or user_nickname
new_card = raw_message.get("card_new") or "(默认)"
if new_card == "(默认)" or new_card == nickname:
if new_card == "(默认)" or new_card == user_nickname:
return
if user_id == self_id:
text = f"(你)群卡片被修改为:{old_card}{new_card}"
@ -350,7 +359,7 @@ class NoticeHandler:
user_info = UserInfo(
platform=global_config.maibot_server.platform_name,
user_id=user_id,
user_nickname=nickname,
user_nickname=user_nickname,
user_cardname=new_card,
)
system_notice = True
@ -358,8 +367,9 @@ class NoticeHandler:
group_id = raw_message.get("group_id")
user_id = raw_message.get("user_id")
likes = raw_message.get("likes", [])
member_info = await get_member_info(self.server_connection, group_id, user_id)
nickname = member_info.get("nickname") if member_info and member_info.get("nickname") else str(user_id)
member_info = await get_member_info(self.server_connection, group_id, user_id) if user_id != 0 else None
user_cardname = member_info.get("card") if member_info else None
user_nickname = member_info.get("nickname") if member_info and member_info.get("nickname") else str(user_id)
emoji_list = []
for like in likes:
emoji_id = str(like.get("emoji_id"))
@ -377,8 +387,8 @@ class NoticeHandler:
user_info = UserInfo(
platform=global_config.maibot_server.platform_name,
user_id=user_id,
user_nickname=nickname,
user_cardname=None,
user_nickname=user_nickname,
user_cardname=user_cardname,
)
system_notice = True
case _: