更新开箱会记录箱子数据以及开箱时箱子价格加入花费

This commit is contained in:
HibiKier 2023-03-05 21:00:05 +08:00
parent 8c92756493
commit 33e42be32d
5 changed files with 30 additions and 16 deletions

View File

@ -1,7 +1,7 @@
import asyncio import asyncio
import os import os
import time import time
from datetime import datetime, timedelta, timezone from datetime import datetime
from pathlib import Path from pathlib import Path
from typing import List from typing import List

View File

@ -226,7 +226,8 @@ async def _(event: MessageEvent, arg: Message = CommandArg()):
else: else:
case_list.append(f"{i+1}.{case_name}") case_list.append(f"{i+1}.{case_name}")
await update_data.finish("未指定武器箱, 当前已包含武器箱\n" + "\n".join(case_list)) await update_data.finish("未指定武器箱, 当前已包含武器箱\n" + "\n".join(case_list))
await update_data.send(await update_case_data(msg)) await update_data.send(f"开始更新武器箱: {msg}, 请稍等")
await update_data.send(await update_case_data(msg), at_sender=True)
# 重置开箱 # 重置开箱

View File

@ -33,7 +33,7 @@ class OpenCasesUser(Model):
"""金色""" """金色"""
knife_st_count: int = fields.IntField(default=0) knife_st_count: int = fields.IntField(default=0)
"""金色暗金""" """金色暗金"""
spend_money: int = fields.IntField(default=0) spend_money: float = fields.IntField(default=0)
"""花费金币""" """花费金币"""
make_money: float = fields.FloatField(default=0) make_money: float = fields.FloatField(default=0)
"""赚取金币""" """赚取金币"""
@ -52,5 +52,6 @@ class OpenCasesUser(Model):
@classmethod @classmethod
async def _run_script(cls): async def _run_script(cls):
return [ return [
"alter table open_cases_users alter COLUMN make_money type float;" # 将make_money字段改为float "alter table open_cases_users alter COLUMN make_money type float;", # 将make_money字段改为float
"alter table open_cases_users alter COLUMN spend_money type float;", # 将spend_money字段改为float
] ]

View File

@ -32,7 +32,7 @@ COLOR2NAME = {"BLUE": "军规", "PURPLE": "受限", "PINK": "保密", "RED": "
COLOR2CN = {"BLUE": "", "PURPLE": "", "PINK": "", "RED": "", "KNIFE": ""} COLOR2CN = {"BLUE": "", "PURPLE": "", "PINK": "", "RED": "", "KNIFE": ""}
def add_count(user: OpenCasesUser, skin: BuffSkin): def add_count(user: OpenCasesUser, skin: BuffSkin, case_price: float):
if skin.color == "BLUE": if skin.color == "BLUE":
if skin.is_stattrak: if skin.is_stattrak:
user.blue_st_count += 1 user.blue_st_count += 1
@ -61,7 +61,7 @@ def add_count(user: OpenCasesUser, skin: BuffSkin):
user.today_open_total += 1 user.today_open_total += 1
user.total_count += 1 user.total_count += 1
user.make_money += skin.sell_min_price user.make_money += skin.sell_min_price
user.spend_money += 17 user.spend_money += 17 + case_price
async def get_user_max_count(user_qq: int, group_id: int) -> int: async def get_user_max_count(user_qq: int, group_id: int) -> int:
@ -116,7 +116,10 @@ async def open_case(user_qq: int, group_id: int, case_name: str) -> Union[str, M
return "未抽取到任何皮肤..." return "未抽取到任何皮肤..."
skin, rand = skin_list[0] skin, rand = skin_list[0]
rand = str(rand)[:11] rand = str(rand)[:11]
add_count(user, skin) case_price = 0
if case_skin := await BuffSkin.get_or_none(case_name=case_name, color="CASE"):
case_price = case_skin.sell_min_price
add_count(user, skin, case_price)
ridicule_result = random.choice(RESULT_MESSAGE[skin.color]) ridicule_result = random.choice(RESULT_MESSAGE[skin.color])
price_result = skin.sell_min_price price_result = skin.sell_min_price
name = skin.name + "-" + skin.skin_name + "-" + skin.abrasion name = skin.name + "-" + skin.skin_name + "-" + skin.abrasion
@ -149,7 +152,7 @@ async def open_case(user_qq: int, group_id: int, case_name: str) -> Union[str, M
+ "\n" + "\n"
+ f"皮肤:[{COLOR2NAME[skin.color]}]{skin.name}{'StatTrak™' if skin.is_stattrak else ''} | {skin.skin_name} ({skin.abrasion})\n" + f"皮肤:[{COLOR2NAME[skin.color]}]{skin.name}{'StatTrak™' if skin.is_stattrak else ''} | {skin.skin_name} ({skin.abrasion})\n"
f"磨损:{rand}\n" f"磨损:{rand}\n"
f"价格:{price_result}\n" f"价格:{price_result}\n箱子单价:{case_price}\n花费:{17 + case_price}\n"
f":{ridicule_result}" f":{ridicule_result}"
) )
@ -202,10 +205,13 @@ async def open_multiple_case(
total_price = 0 total_price = 0
log_list = [] log_list = []
now = datetime.now() now = datetime.now()
case_price = 0
if case_skin := await BuffSkin.get_or_none(case_name=case_name, color="CASE"):
case_price = case_skin.sell_min_price
for skin, rand in skin_list: for skin, rand in skin_list:
total_price += skin.sell_min_price total_price += skin.sell_min_price
rand = str(rand)[:11] rand = str(rand)[:11]
add_count(user, skin) add_count(user, skin, case_price)
color_name = COLOR2CN[skin.color] color_name = COLOR2CN[skin.color]
if skin.is_stattrak: if skin.is_stattrak:
color_name += "(暗金)" color_name += "(暗金)"
@ -266,7 +272,7 @@ async def open_multiple_case(
+ image(markImg.pic2bs4()) + image(markImg.pic2bs4())
+ "\n" + "\n"
+ result[:-1] + result[:-1]
+ f"\n总获取金额:{total_price:.2f}\n总花费:{17 * num}" + f"\n箱子单价:{case_price}\n总获取金额:{total_price:.2f}\n总花费:{(17 + case_price) * num}"
) )

View File

@ -186,20 +186,26 @@ async def search_skin_page(
info = goods_info["info"] info = goods_info["info"]
tags = info["tags"] tags = info["tags"]
obj["weapon_type"] = tags["type"]["localized_name"] # 枪械类型 obj["weapon_type"] = tags["type"]["localized_name"] # 枪械类型
if obj["weapon_type"] in ["音乐盒", "印花", "武器箱"]: if obj["weapon_type"] in ["音乐盒", "印花"]:
continue continue
if obj["weapon_type"] in ["匕首", "手套"]: if obj["weapon_type"] in ["匕首", "手套"]:
obj["color"] = "KNIFE" obj["color"] = "KNIFE"
obj["name"] = data["short_name"].split("")[0].strip() # 名称 obj["name"] = data["short_name"].split("")[0].strip() # 名称
if obj["weapon_type"] in ["武器箱"]:
obj["color"] = "CASE"
obj["name"] = data["short_name"]
else: else:
obj["color"] = NAME2COLOR[tags["rarity"]["localized_name"]] obj["color"] = NAME2COLOR[tags["rarity"]["localized_name"]]
obj["name"] = tags["weapon"]["localized_name"] # 名称 obj["name"] = tags["weapon"]["localized_name"] # 名称
obj["skin_name"] = data["short_name"].split("|")[-1].strip() # 皮肤名称 if obj["weapon_type"] not in ["武器箱"]:
obj["img_url"] = goods_info["original_icon_url"] # 图片url
obj["steam_price"] = goods_info["steam_price_cny"] # steam价格
obj["abrasion"] = tags["exterior"]["localized_name"] # 磨损 obj["abrasion"] = tags["exterior"]["localized_name"] # 磨损
obj["color"] = NAME2COLOR[tags["rarity"]["localized_name"]] # 品质颜色 obj["color"] = NAME2COLOR[tags["rarity"]["localized_name"]] # 品质颜色
obj["is_stattrak"] = "StatTrak" in tags["quality"]["localized_name"] # type: ignore # 是否暗金 obj["is_stattrak"] = "StatTrak" in tags["quality"]["localized_name"] # type: ignore # 是否暗金
else:
obj["abrasion"] = "CASE"
obj["skin_name"] = data["short_name"].split("|")[-1].strip() # 皮肤名称
obj["img_url"] = goods_info["original_icon_url"] # 图片url
obj["steam_price"] = goods_info["steam_price_cny"] # steam价格
obj["sell_min_price"] = data["sell_min_price"] # 售卖最低价格 obj["sell_min_price"] = data["sell_min_price"] # 售卖最低价格
obj["sell_num"] = data["sell_num"] # 售卖数量 obj["sell_num"] = data["sell_num"] # 售卖数量
obj["sell_reference_price"] = data["sell_reference_price"] # 参考价格 obj["sell_reference_price"] = data["sell_reference_price"] # 参考价格
@ -210,8 +216,8 @@ async def search_skin_page(
) )
return update_data, json_data["data"]["total_page"] return update_data, json_data["data"]["total_page"]
else: else:
logger.warning(f'访问BUFF失败: {json_data["msg"]}') logger.warning(f'访问BUFF失败: {json_data["error"]}')
return f'访问失败: {json_data["msg"]}', -1 return f'访问失败: {json_data["error"]}', -1
async def reset_count_daily(): async def reset_count_daily():