mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-14 21:52:56 +08:00
feat✨: 开箱添加更新武器箱图片超级用户命令
This commit is contained in:
parent
3abac67b2e
commit
fb26be821b
@ -334,6 +334,7 @@ PS: **ARM平台** 请使用全量版 同时 **如果你的机器 RAM < 1G 可能
|
||||
### 2023/8/28
|
||||
|
||||
* 重构`红包`功能, 允许一个群聊中有多个用户发起的红包,发送`开`等命令会开启群中所有条件允许的红包,新增`红包结算排行`,在红包退回或抢完时统计,在`塞红包`时at可以发送专属红包
|
||||
* 开箱添加`更新武器箱图片`超级用户命令,用于导入数据表后更新图片
|
||||
|
||||
### 2023/8/20
|
||||
|
||||
|
||||
@ -32,6 +32,7 @@ from .utils import (
|
||||
KNIFE2ID,
|
||||
CaseManager,
|
||||
build_case_image,
|
||||
download_image,
|
||||
get_skin_case,
|
||||
init_skin_trends,
|
||||
reset_count_daily,
|
||||
@ -62,6 +63,7 @@ usage:
|
||||
更新武器箱 ?[武器箱/ALL]
|
||||
更新皮肤 ?[名称/ALL1]
|
||||
更新皮肤 ?[名称/ALL1] -S: (必定更新罕见皮肤所属箱子)
|
||||
更新武器箱图片
|
||||
* 不指定武器箱时则全部更新 *
|
||||
* 过多的爬取会导致账号API被封 *
|
||||
""".strip()
|
||||
@ -75,6 +77,7 @@ __plugin_cmd__ = [
|
||||
"查看武器箱?[武器箱]",
|
||||
"更新武器箱 ?[武器箱] [_superuser]",
|
||||
"更新皮肤 ?[刀具名称] [_superuser]",
|
||||
"更新武器箱图片 [_superuser]",
|
||||
]
|
||||
__plugin_type__ = ("抽卡相关", 1)
|
||||
__plugin_version__ = 0.1
|
||||
@ -133,6 +136,7 @@ open_multiple = cases_matcher_group.on_regex("(.*)连开箱(.*)?")
|
||||
update_case = on_command(
|
||||
"更新武器箱", aliases={"更新皮肤"}, priority=1, permission=SUPERUSER, block=True
|
||||
)
|
||||
update_case_image = on_command("更新武器箱图片", priority=1, permission=SUPERUSER, block=True)
|
||||
show_case = on_command("查看武器箱", priority=5, block=True)
|
||||
my_knifes = on_command("我的金色", priority=1, permission=GROUP, block=True)
|
||||
show_skin = on_command("查看皮肤", priority=5, block=True)
|
||||
@ -286,6 +290,14 @@ async def _(arg: Message = CommandArg()):
|
||||
await show_case.send(image(result))
|
||||
|
||||
|
||||
@update_case_image.handle()
|
||||
async def _(arg: Message = CommandArg()):
|
||||
msg = arg.extract_plain_text().strip()
|
||||
await update_case_image.send("开始更新图片...")
|
||||
await download_image(msg)
|
||||
await update_case_image.send("更新图片完成...", at_sender=True)
|
||||
|
||||
|
||||
# 重置开箱
|
||||
@scheduler.scheduled_job(
|
||||
"cron",
|
||||
|
||||
@ -63,7 +63,9 @@ def add_count(user: OpenCasesUser, skin: BuffSkin, case_price: float):
|
||||
user.spend_money += 17 + case_price
|
||||
|
||||
|
||||
async def get_user_max_count(user_id: str, group_id: int) -> int:
|
||||
async def get_user_max_count(
|
||||
user_id: Union[int, str], group_id: Union[str, int]
|
||||
) -> int:
|
||||
"""获取用户每日最大开箱次数
|
||||
|
||||
Args:
|
||||
@ -84,7 +86,9 @@ async def get_user_max_count(user_id: str, group_id: int) -> int:
|
||||
return int(initial_open_case_count + impression / each_impression_add_count) # type: ignore
|
||||
|
||||
|
||||
async def open_case(user_id: str, group_id: int, case_name: str) -> Union[str, Message]:
|
||||
async def open_case(
|
||||
user_id: Union[int, str], group_id: Union[int, str], case_name: str
|
||||
) -> Union[str, Message]:
|
||||
"""开箱
|
||||
|
||||
Args:
|
||||
@ -95,6 +99,8 @@ async def open_case(user_id: str, group_id: int, case_name: str) -> Union[str, M
|
||||
Returns:
|
||||
Union[str, Message]: 回复消息
|
||||
"""
|
||||
user_id = str(user_id)
|
||||
group_id = str(group_id)
|
||||
if not CaseManager.CURRENT_CASES:
|
||||
return "未收录任何武器箱"
|
||||
if not case_name:
|
||||
@ -162,7 +168,7 @@ async def open_case(user_id: str, group_id: int, case_name: str) -> Union[str, M
|
||||
|
||||
|
||||
async def open_multiple_case(
|
||||
user_id: str, group_id: int, case_name: str, num: int = 10
|
||||
user_id: Union[int, str], group_id: Union[str, int], case_name: str, num: int = 10
|
||||
):
|
||||
"""多连开箱
|
||||
|
||||
@ -175,6 +181,8 @@ async def open_multiple_case(
|
||||
Returns:
|
||||
_type_: _description_
|
||||
"""
|
||||
user_id = str(user_id)
|
||||
group_id = str(group_id)
|
||||
if not CaseManager.CURRENT_CASES:
|
||||
return "未收录任何武器箱"
|
||||
if not case_name:
|
||||
|
||||
@ -603,6 +603,41 @@ async def reset_count_daily():
|
||||
logger.error(f"开箱重置错误", e=e)
|
||||
|
||||
|
||||
async def download_image(case_name: Optional[str] = None):
|
||||
"""下载皮肤图片
|
||||
|
||||
参数:
|
||||
case_name: 箱子名称.
|
||||
"""
|
||||
skin_list = (
|
||||
await BuffSkin.filter(case_name=case_name).all()
|
||||
if case_name
|
||||
else await BuffSkin.all()
|
||||
)
|
||||
for skin in skin_list:
|
||||
name_ = skin.name + "-" + skin.skin_name + "-" + skin.abrasion
|
||||
for c_name_ in skin.case_name.split(","):
|
||||
try:
|
||||
file_path = BASE_PATH / cn2py(c_name_) / f"{cn2py(name_)}.jpg"
|
||||
if not file_path.exists():
|
||||
logger.debug(
|
||||
f"下载皮肤 {c_name_}/{skin.name} 图片: {skin.img_url}...",
|
||||
"开箱图片更新",
|
||||
)
|
||||
await AsyncHttpx.download_file(skin.img_url, file_path)
|
||||
rand_time = random.randint(1, 5)
|
||||
await asyncio.sleep(rand_time)
|
||||
logger.debug(f"图片下载随机等待时间: {rand_time}", "开箱图片更新")
|
||||
else:
|
||||
logger.debug(f"皮肤 {c_name_}/{skin.name} 图片已存在...", "开箱图片更新")
|
||||
except Exception as e:
|
||||
logger.error(
|
||||
f"下载皮肤 {c_name_}/{skin.name} 图片: {skin.img_url}",
|
||||
"开箱图片更新",
|
||||
e=e,
|
||||
)
|
||||
|
||||
|
||||
@driver.on_startup
|
||||
async def _():
|
||||
await CaseManager.reload()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user