import requests import json import logging import toml class McList: def __init__(self,server,page): self.server = server self.page = page def main(self): with open('./config.toml', 'r', encoding='utf-8') as f: config = toml.load(f) # 获取所需字段 velocity_ip = config.get("velocity_ip") velocity_port = config.get("velocity_port") velocity_token = config.get("velocity_token") # API URL url = f"http://{velocity_ip}:{velocity_port}/vc/query" # 请求头 headers = { "Content-Type": "application/json", "Authorization": velocity_token # 替换为你的 API 密钥 } # 请求体 payload = { "server": self.server, "page": self.page } # 发送 POST 请求 try: response = requests.post(url, headers=headers, data=json.dumps(payload)) # 检查响应状态码 if response.status_code == 200: logging.info("请求成功!返回结果:") response_data = response.json() logging.info(json.dumps(response_data, indent=4, ensure_ascii=False)) # 格式化输出 JSON # 提取 player_number 值 player_number = response_data.get("player_number", "player_number 字段不存在") totalpage = response_data.get("totalPage", "totalPage 字段不存在") players = response_data.get("players", "players 字段不存在") try: page = int(self.page) formatted_page = page + 1 except Exception as e: logging.error(f"请求过程中出现异常: {e}") return "服务繁忙,请稍后再逝" try: formatted_totalpage = int(totalpage) if formatted_totalpage == 0: formatted_totalpage = 1 elif formatted_totalpage == -1: return f"服务器:{self.server} 不存在" else: formatted_totalpage = totalpage success = True except Exception as e: logging.info(f"请求过程中出现异常: {e}") return "服务器繁忙,请稍后再逝" if players is None : logging.info("玩家列表为空") formatted_players = "" else: try: formatted_players = "\n".join(f"{i+1}、{player}" for i, player in enumerate(players)) except Exception as e: logging.info(f"请求过程中出现异常: {e}") return "服务器繁忙,请稍后再逝" answer = f"当前服务器共有{player_number}个玩家,\n{formatted_players} \n [{formatted_page}页/{formatted_totalpage}页]" return answer else: logging.info(f"请求失败!状态码: {response.status_code}") logging.info(f"错误信息: {response.text}") logging.info(response.json) return "服务器繁忙,请稍后再逝" except Exception as e: logging.info(f"请求过程中出现异常: {e}") return "服务器繁忙,请稍后再逝"