有没有Python大佬,API返回数据问题
我的主程序 ro.py 会将收到的消息进行拆解,将”/ 战绩 “后的值作为 “Player_id” 传递给 zj.py,也会将 zj.py 收到的返回进行判断来发送对应的消息我的需求是,当 zj.py 返回的值为 1 时发送 “API 接口已上限,请稍等 1-2 分钟后查询”,当返回值为 2 时发送 “未找到该玩家信息,请核对玩家 ID 后重试”
但现在遇到个问题,为什么我即使是输入错误的 ID,但是返回的值还是 1?一直显示“API 接口已上限,请稍等 1-2 分钟后查询”
ro.py
class MyClient(botpy.Client):
async def on_group_at_message_create(self, message: GroupMessage):
content = message.content.strip()
if content.startswith("/战绩 "):
player_id = content.split(" ")
print("Detected /战绩 message with player_id:", player_id)
# await message._api.post_group_message(
# group_openid=message.group_openid,
# msg_type=0,
# msg_id=message.id,
# content="正在帮你查询中,请稍等~")
result = subprocess.run(, capture_output=True, text=True, encoding='utf-8')
if result.returncode == 2:
messageResult = await message._api.post_group_message(
group_openid=message.group_openid,
msg_type=0,
msg_id=message.id,
content="API接口已上限,请稍等1-2分钟后查询")
_log.info(messageResult)
elif result.returncode == 1:
messageResult = await message._api.post_group_message(
group_openid=message.group_openid,
msg_type=0,
msg_id=message.id,
content="未找到该玩家信息,请核对玩家ID后重试")
_log.info(messageResult)
else:
file_url = f"http://bot.6638.cf:443/{player_id}_stats.png"
uploadMedia = await self.api.post_group_file(
group_openid=message.group_openid,
file_type=1,
url=file_url
)
await self.api.post_group_message(
group_openid=message.group_openid,
msg_type=7,# 7表示富媒体类型
msg_id=message.id,
media=uploadMedia,
content=' ',
)
time.sleep(10)
file_path = os.path.join(os.getcwd(), f"{player_id}_stats.png")
if os.path.exists(file_path):
os.remove(file_path)
zj.py
def get_player_data(player_id):
url = f"https://api.pubg.com/shards/steam/players?filter={player_id}"
response = requests.get(url, headers=headers)
if not response.text.strip():
return 1
elif "No Players Found Matching Criteria" in response.text:
return 2
data = response.json()
ban_type = data['data']['attributes']['banType'] if 'data' in data and data['data'] else None
return data, ban_type 可能是请求频繁了 你可以尝试打印出响应的文本,看看在输入错误的 ID 时,API 返回了什么。
现在目测是输入错误id时api返回的内容有问题
根据返回的内容再写result.returncode部分的判断 response = requests.get(url, headers=headers)
if not response.text.strip():
这段可能要改,错误id时也满足第二句的条件,要把response.text输出来看看,正确和错误值应该是不一样的 接口上限应当判断HTTP状态码为429才对 你自己写反了吧?
if result.returncode == 2:
messageResult = await message._api.post_group_message(
group_openid=message.group_openid,
msg_type=0,
msg_id=message.id,
content="API接口已上限,请稍等1-2分钟后查询")
_log.info(messageResult)
elif result.returncode == 1:
messageResult = await message._api.post_group_message(
group_openid=message.group_openid,
msg_type=0,
msg_id=message.id,
content="未找到该玩家信息,请核对玩家ID后重试")
_log.info(messageResult)
页:
[1]