feat: add xm,cai ranking
This commit is contained in:
		
							parent
							
								
									aca87ce3a0
								
							
						
					
					
						commit
						e4f70dd729
					
				
					 2 changed files with 34 additions and 0 deletions
				
			
		| 
						 | 
					@ -39,6 +39,8 @@ class MessageStatsMiddleware(BaseMiddleware):
 | 
				
			||||||
                    name = event.from_user.full_name
 | 
					                    name = event.from_user.full_name
 | 
				
			||||||
                self.stats[chat_id]['users'][user_id] = {
 | 
					                self.stats[chat_id]['users'][user_id] = {
 | 
				
			||||||
                    'message_count': 0,
 | 
					                    'message_count': 0,
 | 
				
			||||||
 | 
					                    'xm_count': 0,
 | 
				
			||||||
 | 
					                    'wocai_count': 0,
 | 
				
			||||||
                    'username': event.from_user.username if event.from_user else 'Unknown',
 | 
					                    'username': event.from_user.username if event.from_user else 'Unknown',
 | 
				
			||||||
                    'name': name
 | 
					                    'name': name
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
| 
						 | 
					@ -46,6 +48,16 @@ class MessageStatsMiddleware(BaseMiddleware):
 | 
				
			||||||
            # 更新统计
 | 
					            # 更新统计
 | 
				
			||||||
            self.stats[chat_id]['total_messages'] += 1
 | 
					            self.stats[chat_id]['total_messages'] += 1
 | 
				
			||||||
            self.stats[chat_id]['users'][user_id]['message_count'] += 1
 | 
					            self.stats[chat_id]['users'][user_id]['message_count'] += 1
 | 
				
			||||||
 | 
					            # 羡慕、我菜统计
 | 
				
			||||||
 | 
					            if event.text and any(keyword in event.text.lower() for keyword in ['xm','xmsl','羡慕','羡慕死了']):
 | 
				
			||||||
 | 
					                if not self.stats[chat_id]['users'][user_id]['xm_count']:
 | 
				
			||||||
 | 
					                    self.stats[chat_id]['users'][user_id]['xm_count'] = 0
 | 
				
			||||||
 | 
					                self.stats[chat_id]['users'][user_id]['xm_count'] += 1
 | 
				
			||||||
 | 
					            if event.text and '我菜' in event.text:
 | 
				
			||||||
 | 
					                if not self.stats[chat_id]['users'][user_id]['wocai_count']:
 | 
				
			||||||
 | 
					                    self.stats[chat_id]['users'][user_id]['xm_count'] = 0
 | 
				
			||||||
 | 
					                self.stats[chat_id]['users'][user_id]['wocai_count'] += 1
 | 
				
			||||||
 | 
					            # 保存统计数据
 | 
				
			||||||
            self.save_stats()
 | 
					            self.save_stats()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return await handler(event, data)
 | 
					        return await handler(event, data)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,6 +28,16 @@ async def handle_stats_command(message: Message):
 | 
				
			||||||
        key=lambda x: x[1]['message_count'],
 | 
					        key=lambda x: x[1]['message_count'],
 | 
				
			||||||
        reverse=True
 | 
					        reverse=True
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					    sorted_most_xm_users = sorted(
 | 
				
			||||||
 | 
					        stats['users'].items(),
 | 
				
			||||||
 | 
					        key=lambda x: x[1]['xm_count'],
 | 
				
			||||||
 | 
					        reverse=True
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    sorted_most_wocai_users = sorted(
 | 
				
			||||||
 | 
					        stats['users'].items(),
 | 
				
			||||||
 | 
					        key=lambda x: x[1]['wocai_count'],
 | 
				
			||||||
 | 
					        reverse=True
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 构建统计消息
 | 
					    # 构建统计消息
 | 
				
			||||||
    text = f"📊 群组统计\n\n"
 | 
					    text = f"📊 群组统计\n\n"
 | 
				
			||||||
| 
						 | 
					@ -38,5 +48,17 @@ async def handle_stats_command(message: Message):
 | 
				
			||||||
    for i, (user_id, user_data) in enumerate(sorted_users[:10], 1):
 | 
					    for i, (user_id, user_data) in enumerate(sorted_users[:10], 1):
 | 
				
			||||||
        name = user_data['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"
 | 
					        text += f"{i}. {name}: {user_data['message_count']} 条\n"
 | 
				
			||||||
 | 
					    if sorted_most_xm_users:
 | 
				
			||||||
 | 
					        text += "\n💬 羡慕统计:\n"
 | 
				
			||||||
 | 
					    for user_id, user_data in sorted_most_xm_users:
 | 
				
			||||||
 | 
					        if user_data['xm_count'] > 0:
 | 
				
			||||||
 | 
					            name = user_data['name'] or user_data['username'] or str(user_id)
 | 
				
			||||||
 | 
					            text += f"{name}: {user_data['xm_count']} 次羡慕\n"
 | 
				
			||||||
 | 
					    if sorted_most_wocai_users:
 | 
				
			||||||
 | 
					        text += "\n🥬 卖菜统计:\n"
 | 
				
			||||||
 | 
					    for user_id, user_data in sorted_most_wocai_users:
 | 
				
			||||||
 | 
					        if user_data['wocai_count'] > 0:
 | 
				
			||||||
 | 
					            name = user_data['name'] or user_data['username'] or str(user_id)
 | 
				
			||||||
 | 
					            text += f"{name}: {user_data['wocai_count']} 次卖菜\n"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    await message.reply(text)
 | 
					    await message.reply(text)
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue