@@ -103,7 +103,7 @@ async def _handle_single_server(
103103async def _filter_servers (
104104 servers : list ,
105105 tj_mode : str ,
106- map_type : str = "普通药役" ,
106+ map_type : Optional [ list [ str ]] = None ,
107107) -> list :
108108 """筛选符合条件的服务器
109109 Args:
@@ -113,28 +113,46 @@ async def _filter_servers(
113113 Returns:
114114 符合条件的服务器列表
115115 """
116+ if map_type is None :
117+ map_type = ["普通药役" , "硬核药役" ]
116118 filtered = []
117119 for i in servers :
118120 ser_list = await L4API .a2s_info ([(i ["host" ], i ["port" ])], is_player = True )
121+
119122 if not ser_list :
120123 continue
121124
122125 srv = ser_list [0 ][0 ]
123126 players = ser_list [0 ][1 ]
127+ logger .info (srv )
128+ logger .info (players )
129+ if srv .map_name == "无" :
130+ continue
124131
125- if tj_mode == "tj" and map_type in srv .map_name :
126- score = sum (p .score for p in players [:4 ])
127- t = srv .map_name .split ("[" )[- 1 ].split ("特" )[0 ]
128- if t .isdigit () and int (t ) * 50 < score :
132+ if tj_mode == "tj" and any (
133+ map_type_value in srv .server_name for map_type_value in map_type
134+ ):
135+ scores = [p .score for p in players [:4 ]]
136+ total_score = sum (scores )
137+ part_with_number = srv .server_name .split ("[" )[1 ].split ("]" )[0 ]
138+ t = part_with_number .split ("特" )[0 ]
139+ logger .info (t )
140+ logger .info (total_score )
141+ if t .isdigit () and int (t ) * 10 < total_score :
129142 logger .info (
130- f"符合TJ条件的服务器: { i ['host' ]} :{ i ['port' ]} , 地图: { srv .map_name } , 分数: { score } " ,
143+ f"符合TJ条件的服务器: { i ['host' ]} :{ i ['port' ]} , 地图: { srv .map_name } , 分数: { total_score } " ,
131144 )
132145 filtered .append (i )
133- elif tj_mode == "zl" and map_type in srv .map_name and len (players ) <= 4 :
146+ elif tj_mode == "zl" and map_type in srv .server_name and len (players ) <= 4 :
134147 logger .info (
135148 f"符合ZL条件的服务器: { i ['host' ]} :{ i ['port' ]} , 地图: { srv .map_name } , 玩家数: { len (players )} " ,
136149 )
137150 filtered .append (i )
151+ elif tj_mode == "kl" and len (players ) == 0 :
152+ logger .info (
153+ f"符合KL条件的服务器: { i ['host' ]} :{ i ['port' ]} , 地图: { srv .map_name } , 玩家数: { len (players )} " ,
154+ )
155+ filtered .append (i )
138156 return filtered
139157
140158
0 commit comments