feat: display anonymous channel/group name instead of 'Telegram'/'Group'
This commit is contained in:
parent
540b50c4d8
commit
3b087369fa
3 changed files with 21 additions and 9 deletions
|
@ -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)
|
||||
await message.reply(f"{from_user} 被 {replied_user if message.reply_to_message else '自己'} {message.text.replace('\\','')}了!",disable_web_page_preview=True)
|
|
@ -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
|
||||
}
|
||||
|
||||
# 更新统计
|
||||
|
|
|
@ -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)
|
Loading…
Add table
Add a link
Reference in a new issue