mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-09-29 08:39:59 +08:00
FIX BUG
This commit is contained in:
@@ -14,7 +14,7 @@ BASE_PATH = IMAGE_PATH / "csgo_cases"
|
||||
ICON_PATH = IMAGE_PATH / "_icon"
|
||||
|
||||
|
||||
async def generate_skin(skin: BuffSkin) -> Optional[BuildImage]:
|
||||
async def generate_skin(skin: BuffSkin, update_count: int) -> Optional[BuildImage]:
|
||||
"""构造皮肤图片
|
||||
|
||||
Args:
|
||||
@@ -53,13 +53,19 @@ async def generate_skin(skin: BuffSkin) -> Optional[BuildImage]:
|
||||
(340, 116), str(skin.sell_min_price), (0, 255, 98), font_size=30
|
||||
)
|
||||
|
||||
price_icon = BuildImage(30, 30, background=ICON_PATH / "num_white.png")
|
||||
await case_bk.apaste(price_icon, (455, 70), True)
|
||||
update_count_icon = BuildImage(
|
||||
40, 40, background=ICON_PATH / "reload_white.png"
|
||||
)
|
||||
await case_bk.apaste(update_count_icon, (575, 10), True)
|
||||
await case_bk.atext((625, 12), str(update_count), (255, 255, 255), font_size=45)
|
||||
|
||||
num_icon = BuildImage(30, 30, background=ICON_PATH / "num_white.png")
|
||||
await case_bk.apaste(num_icon, (455, 70), True)
|
||||
await case_bk.atext((490, 75), "在售:", (255, 255, 255))
|
||||
await case_bk.atext((535, 72), str(skin.sell_num), (144, 0, 255), font_size=30)
|
||||
|
||||
price_icon = BuildImage(30, 30, background=ICON_PATH / "want_buy_white.png")
|
||||
await case_bk.apaste(price_icon, (455, 114), True)
|
||||
want_buy_icon = BuildImage(30, 30, background=ICON_PATH / "want_buy_white.png")
|
||||
await case_bk.apaste(want_buy_icon, (455, 114), True)
|
||||
await case_bk.atext((490, 120), "求购:", (255, 255, 255))
|
||||
await case_bk.atext((535, 116), str(skin.buy_num), (144, 0, 255), font_size=30)
|
||||
|
||||
@@ -81,14 +87,19 @@ async def generate_skin(skin: BuffSkin) -> Optional[BuildImage]:
|
||||
235, 250, color=(25, 25, 25, 100), font_size=25, font="CJGaoDeGuo.otf"
|
||||
)
|
||||
skin_image = BuildImage(205, 153, background=file_path)
|
||||
skin_bk.paste(skin_image, (10, 30), alpha=True)
|
||||
# skin_bk.paste(circular_red, (-20, 10), True)
|
||||
skin_bk.line((10, 180, 220, 180))
|
||||
skin_bk.text((10, 10), skin.name, (255, 255, 255))
|
||||
skin_bk.text((10, 185), f"{skin.skin_name}", (255, 255, 255), "by_width")
|
||||
skin_bk.text((10, 218), "品质:", (255, 255, 255))
|
||||
skin_bk.text((55, 218), COLOR2NAME[skin.color][:2], COLOR2COLOR[skin.color])
|
||||
skin_bk.text((100, 218), "类型:", (255, 255, 255))
|
||||
skin_bk.text((145, 218), skin.weapon_type, (255, 255, 255))
|
||||
update_count_icon = BuildImage(
|
||||
35, 35, background=ICON_PATH / "reload_white.png"
|
||||
)
|
||||
await skin_bk.apaste(skin_image, (10, 30), alpha=True)
|
||||
await skin_bk.aline((10, 180, 220, 180))
|
||||
await skin_bk.atext((10, 10), skin.name, (255, 255, 255))
|
||||
await skin_bk.apaste(update_count_icon, (140, 10), True)
|
||||
await skin_bk.atext((175, 15), str(update_count), (255, 255, 255))
|
||||
await skin_bk.atext((10, 185), f"{skin.skin_name}", (255, 255, 255), "by_width")
|
||||
await skin_bk.atext((10, 218), "品质:", (255, 255, 255))
|
||||
await skin_bk.atext(
|
||||
(55, 218), COLOR2NAME[skin.color][:2], COLOR2COLOR[skin.color]
|
||||
)
|
||||
await skin_bk.atext((100, 218), "类型:", (255, 255, 255))
|
||||
await skin_bk.atext((145, 218), skin.weapon_type, (255, 255, 255))
|
||||
return skin_bk
|
||||
return None
|
||||
|
||||
@@ -49,6 +49,7 @@ class BuffSkin(Model):
|
||||
class Meta:
|
||||
table = "buff_skin"
|
||||
table_description = "Buff皮肤数据表"
|
||||
unique_together = ("case_name", "name", "skin_name", "abrasion")
|
||||
|
||||
@classmethod
|
||||
async def random_skin(
|
||||
|
||||
@@ -6,6 +6,7 @@ from datetime import datetime
|
||||
from typing import List, Tuple, Union
|
||||
|
||||
import nonebot
|
||||
from tortoise.functions import Count
|
||||
|
||||
from configs.config import Config
|
||||
from configs.path_config import IMAGE_PATH
|
||||
@@ -273,7 +274,14 @@ async def build_case_image(case_name: str) -> Union[BuildImage, str]:
|
||||
background = random.choice(os.listdir(CASE_BACKGROUND))
|
||||
background_img = BuildImage(0, 0, background=CASE_BACKGROUND / background)
|
||||
if case_name:
|
||||
log_list = (
|
||||
await BuffSkinLog.filter(case_name=case_name)
|
||||
.annotate(count=Count("id"))
|
||||
.group_by("skin_name")
|
||||
.values_list("skin_name", "count")
|
||||
)
|
||||
skin_list_ = await BuffSkin.filter(case_name=case_name).all()
|
||||
skin2count = {item[0]: item[1] for item in log_list}
|
||||
case = None
|
||||
skin_list: List[BuffSkin] = []
|
||||
exists_name = []
|
||||
@@ -287,7 +295,7 @@ async def build_case_image(case_name: str) -> Union[BuildImage, str]:
|
||||
exists_name.append(name)
|
||||
generate_img = {}
|
||||
for skin in skin_list:
|
||||
skin_img = await generate_skin(skin)
|
||||
skin_img = await generate_skin(skin, skin2count[skin.skin_name])
|
||||
if skin_img:
|
||||
if not generate_img.get(skin.color):
|
||||
generate_img[skin.color] = []
|
||||
@@ -305,7 +313,7 @@ async def build_case_image(case_name: str) -> Union[BuildImage, str]:
|
||||
)
|
||||
await A.afilter("GaussianBlur", 2)
|
||||
if case:
|
||||
case_img = await generate_skin(case)
|
||||
case_img = await generate_skin(case, skin2count[f"{case_name}武器箱"])
|
||||
if case_img:
|
||||
A.paste(case_img, (25, 25), True)
|
||||
w = 25
|
||||
@@ -321,10 +329,17 @@ async def build_case_image(case_name: str) -> Union[BuildImage, str]:
|
||||
await A.acrop((0, 0, A.w, h + img_h + 100))
|
||||
return A
|
||||
else:
|
||||
log_list = (
|
||||
await BuffSkinLog.filter(color="CASE")
|
||||
.annotate(count=Count("id"))
|
||||
.group_by("case_name")
|
||||
.values_list("case_name", "count")
|
||||
)
|
||||
name2count = {item[0]: item[1] for item in log_list}
|
||||
skin_list = await BuffSkin.filter(color="CASE").all()
|
||||
image_list: List[BuildImage] = []
|
||||
for skin in skin_list:
|
||||
if img := await generate_skin(skin):
|
||||
if img := await generate_skin(skin, name2count[skin.case_name]):
|
||||
image_list.append(img)
|
||||
if not image_list:
|
||||
return "未收录武器箱"
|
||||
|
||||
Reference in New Issue
Block a user