first commit
This commit is contained in:
87
model/McList.py
Normal file
87
model/McList.py
Normal file
@@ -0,0 +1,87 @@
|
||||
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 "服务器繁忙,请稍后再逝"
|
||||
Reference in New Issue
Block a user