diff --git a/core/actions.py b/core/actions.py index 245959e..518ad80 100644 --- a/core/actions.py +++ b/core/actions.py @@ -7,17 +7,22 @@ async def handle_actions(message: Message) -> None: if not config.is_feature_enabled('actions', message.chat.id): return rawtext = message.text + from_user = message.from_user.mention_html(message.sender_chat.title) if message.sender_chat else message.from_user.mention_html() + replied_user = message.from_user.mention_html(message.reply_to_message.sender_chat.title) if message.reply_to_message and message.reply_to_message.sender_chat else message.reply_to_message.from_user.mention_html() # 防止识别成命令而被误触发 - if rawtext.replace('/','',1).isalpha() or '@' in rawtext: + if rawtext.replace('/','',1).isascii() or '@' in rawtext: + print(rawtext.replace('/','',1).isascii()) return elif " " in message.text: - if rawtext.split(" ")[0].replace('/','',1).isalpha(): + if rawtext.split(" ")[0].replace('/','',1).isascii(): return - await message.reply(f"{message.from_user.mention_html()} {rawtext.split(" ")[0].replace('/','')}了 {message.reply_to_message.from_user.mention_html() if message.reply_to_message else '自己' } {''.join(rawtext.split(" ")[1:])}!",disable_web_page_preview=True) + await message.reply(f"{from_user} {rawtext.split(" ")[0].replace('/','')}了 {replied_user if message.reply_to_message else '自己' } {''.join(rawtext.split(" ")[1:])}!",disable_web_page_preview=True) else: - await message.reply(f"{message.from_user.mention_html()} {message.text.replace('/','')}了 {message.reply_to_message.from_user.mention_html() if message.reply_to_message else '自己'}!",disable_web_page_preview=True) + await message.reply(f"{from_user} {message.text.replace('/','')}了 {replied_user if message.reply_to_message else '自己'}!",disable_web_page_preview=True) async def handle_reverse_actions(message: Message) -> None: + from_user = message.from_user.mention_html(message.sender_chat.title) if message.sender_chat else message.from_user.mention_html() + replied_user = message.from_user.mention_html(message.reply_to_message.sender_chat.title) if message.reply_to_message and message.reply_to_message.sender_chat else message.reply_to_message.from_user.mention_html() if not config.is_feature_enabled('actions', message.chat.id): return - await message.reply(f"{message.from_user.mention_html()} 被 {message.reply_to_message.from_user.mention_html()} {message.text.replace('\\','')}了!",disable_web_page_preview=True) \ No newline at end of file + await message.reply(f"{from_user} 被 {replied_user if message.reply_to_message else '自己'} {message.text.replace('\\','')}了!",disable_web_page_preview=True) \ No newline at end of file diff --git a/core/middleware/stats.py b/core/middleware/stats.py index 77f08ec..c01c3c4 100644 --- a/core/middleware/stats.py +++ b/core/middleware/stats.py @@ -28,10 +28,19 @@ class MessageStatsMiddleware(BaseMiddleware): } if user_id not in self.stats[chat_id]['users']: + name = 'Unknown' + if event.sender_chat: + if event.sender_chat.type in ['group','supergroup']: + # 如果是频道/群组匿名管理员消息,使用频道名称 + name = f"{event.sender_chat.title} [admin]" + # 如果是频道/群组匿名管理员消息,使用频道名称 + name = f"{event.sender_chat.title} [channel]" + elif event.from_user: + name = event.from_user.full_name self.stats[chat_id]['users'][user_id] = { 'message_count': 0, 'username': event.from_user.username if event.from_user else 'Unknown', - 'first_name': event.from_user.first_name if event.from_user else 'Unknown' + 'name': name } # 更新统计 diff --git a/core/stats.py b/core/stats.py index ffca6f7..bafffa1 100644 --- a/core/stats.py +++ b/core/stats.py @@ -18,8 +18,6 @@ async def handle_stats_command(message: Message): except (FileNotFoundError, json.JSONDecodeError): stats = {}.get(chat_id) - print(stats) - if not stats: await message.reply("暂无统计数据") return @@ -38,7 +36,7 @@ async def handle_stats_command(message: Message): text += "🏆 发言排行榜:\n" for i, (user_id, user_data) in enumerate(sorted_users[:10], 1): - name = user_data['first_name'] or user_data['username'] or str(user_id) + name = user_data['name'] or user_data['username'] or str(user_id) text += f"{i}. {name}: {user_data['message_count']} 条\n" await message.reply(text) \ No newline at end of file