mirror of
https://github.com/KimigaiiWuyi/GenshinUID.git
synced 2025-05-08 04:55:51 +08:00
🐛 修复一些BUG
This commit is contained in:
parent
e31223c49e
commit
b46a8454cb
@ -20,7 +20,7 @@ async def send_abyss_info(bot: Bot, ev: Event):
|
|||||||
return
|
return
|
||||||
|
|
||||||
await bot.logger.info('开始执行[查询深渊信息]')
|
await bot.logger.info('开始执行[查询深渊信息]')
|
||||||
uid = await get_uid(bot, ev)
|
uid, user_id = await get_uid(bot, ev, True)
|
||||||
if uid is None:
|
if uid is None:
|
||||||
return await bot.send(UID_HINT)
|
return await bot.send(UID_HINT)
|
||||||
await bot.logger.info('[查询深渊信息]uid: {}'.format(uid))
|
await bot.logger.info('[查询深渊信息]uid: {}'.format(uid))
|
||||||
@ -47,5 +47,5 @@ async def send_abyss_info(bot: Bot, ev: Event):
|
|||||||
|
|
||||||
await bot.logger.info('[查询深渊信息]深渊层数: {}'.format(floor))
|
await bot.logger.info('[查询深渊信息]深渊层数: {}'.format(floor))
|
||||||
|
|
||||||
im = await draw_abyss_img(ev.user_id, uid, floor, schedule_type)
|
im = await draw_abyss_img(user_id, uid, floor, schedule_type)
|
||||||
await bot.send(im)
|
await bot.send(im)
|
||||||
|
@ -79,7 +79,7 @@ async def get_explore_data(
|
|||||||
uid: str,
|
uid: str,
|
||||||
) -> Union[bytes, str, Tuple[Dict[str, float], Dict[str, str], str, str, str]]:
|
) -> Union[bytes, str, Tuple[Dict[str, float], Dict[str, str], str, str, str]]:
|
||||||
raw_data = await get_base_data(uid)
|
raw_data = await get_base_data(uid)
|
||||||
if isinstance(raw_data, str) or isinstance(raw_data, bytes):
|
if isinstance(raw_data, (str, bytes, bytearray, memoryview)):
|
||||||
return raw_data
|
return raw_data
|
||||||
|
|
||||||
# 处理数据
|
# 处理数据
|
||||||
@ -126,7 +126,7 @@ async def get_collection_data(
|
|||||||
uid: str,
|
uid: str,
|
||||||
) -> Union[bytes, str, Tuple[Dict[str, float], Dict[str, str], str, str, str]]:
|
) -> Union[bytes, str, Tuple[Dict[str, float], Dict[str, str], str, str, str]]:
|
||||||
raw_data = await get_base_data(uid)
|
raw_data = await get_base_data(uid)
|
||||||
if isinstance(raw_data, str) or isinstance(raw_data, bytes):
|
if isinstance(raw_data, (str, bytes, bytearray, memoryview)):
|
||||||
return raw_data
|
return raw_data
|
||||||
|
|
||||||
raw_data = raw_data['stats']
|
raw_data = raw_data['stats']
|
||||||
@ -173,7 +173,7 @@ async def draw_base_img(
|
|||||||
else:
|
else:
|
||||||
data = await get_explore_data(uid)
|
data = await get_explore_data(uid)
|
||||||
|
|
||||||
if isinstance(data, str) or isinstance(data, bytes):
|
if isinstance(data, (str, bytes, bytearray, memoryview)):
|
||||||
return data
|
return data
|
||||||
|
|
||||||
percent_data, value_data = data[0], data[1]
|
percent_data, value_data = data[0], data[1]
|
||||||
|
25
GenshinUID/genshinuid_collection/draw_new_collection_card.py
Normal file
25
GenshinUID/genshinuid_collection/draw_new_collection_card.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
from PIL import Image
|
||||||
|
from gsuid_core.utils.download_resource.download_image import get_image
|
||||||
|
|
||||||
|
from ..utils.resource.RESOURCE_PATH import ICON_PATH
|
||||||
|
from .draw_collection_card import TEXT_PATH, get_base_data
|
||||||
|
|
||||||
|
|
||||||
|
async def draw_explore(uid: str):
|
||||||
|
raw_data = await get_base_data(uid)
|
||||||
|
if isinstance(raw_data, str) or isinstance(
|
||||||
|
raw_data, (bytes, bytearray, memoryview)
|
||||||
|
):
|
||||||
|
return raw_data
|
||||||
|
|
||||||
|
worlds = raw_data['world_explorations']
|
||||||
|
for world in worlds:
|
||||||
|
area_bg = (
|
||||||
|
Image.open(TEXT_PATH / 'area_bg')
|
||||||
|
.resize((216, 216))
|
||||||
|
.convert('RGBA')
|
||||||
|
)
|
||||||
|
icon = await get_image(world['icon'], ICON_PATH)
|
||||||
|
# percent = world['exploration_percentage']
|
||||||
|
|
||||||
|
area_bg.paste(icon, (27, 27), icon)
|
BIN
GenshinUID/genshinuid_collection/texture2D/area_bg.png
Normal file
BIN
GenshinUID/genshinuid_collection/texture2D/area_bg.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 113 KiB |
@ -65,15 +65,10 @@ async def draw_daily_cost_img(is_force: bool = False) -> Union[str, bytes]:
|
|||||||
icon_id = data[domain][0]
|
icon_id = data[domain][0]
|
||||||
icon = await get_ambr_icon('UI', icon_id, ICON_PATH, 'ItemIcon')
|
icon = await get_ambr_icon('UI', icon_id, ICON_PATH, 'ItemIcon')
|
||||||
|
|
||||||
icon = icon.resize((77, 77))
|
icon = icon.resize((77, 77)).convert('RGBA')
|
||||||
bar = Image.open(TEXT_PATH / 'bar.png')
|
bar = Image.open(TEXT_PATH / 'bar.png')
|
||||||
bar_draw = ImageDraw.Draw(bar)
|
bar_draw = ImageDraw.Draw(bar)
|
||||||
if icon.mode == 'RGBA':
|
bar.paste(icon, (43, 10), icon)
|
||||||
mask = icon.split()[3] # 获取alpha通道作为遮罩
|
|
||||||
bar.paste(icon, (43, 10), mask)
|
|
||||||
else:
|
|
||||||
bar.paste(icon, (43, 10)) # 如果没有alpha通道,不使用遮罩
|
|
||||||
|
|
||||||
domain1, domain2 = domain.split(':')
|
domain1, domain2 = domain.split(':')
|
||||||
|
|
||||||
bar_draw.text((142, 50), domain2, 'black', gs_font_44, 'lm')
|
bar_draw.text((142, 50), domain2, 'black', gs_font_44, 'lm')
|
||||||
|
@ -125,7 +125,7 @@ async def get_first_main(mainName: str) -> str:
|
|||||||
return equipMain
|
return equipMain
|
||||||
|
|
||||||
|
|
||||||
async def get_char_std(raw_data: dict, char_name: str) -> dmgMap:
|
async def get_char_std(raw_data: dict, char_name: str):
|
||||||
weaponName = raw_data['weaponInfo']['weaponName']
|
weaponName = raw_data['weaponInfo']['weaponName']
|
||||||
|
|
||||||
equipMain = ''
|
equipMain = ''
|
||||||
|
@ -170,7 +170,7 @@ class DrawEventList:
|
|||||||
if isinstance(base_img, bytes):
|
if isinstance(base_img, bytes):
|
||||||
return base_img
|
return base_img
|
||||||
else:
|
else:
|
||||||
return bytes(base_img, 'utf8')
|
return bytes(base_img)
|
||||||
|
|
||||||
async def get_and_save_gacha_img(self):
|
async def get_and_save_gacha_img(self):
|
||||||
base_h = 100 + len(self.gacha_event) * 480
|
base_h = 100 + len(self.gacha_event) * 480
|
||||||
@ -247,7 +247,7 @@ class DrawEventList:
|
|||||||
if isinstance(base_img, bytes):
|
if isinstance(base_img, bytes):
|
||||||
return base_img
|
return base_img
|
||||||
else:
|
else:
|
||||||
return bytes(base_img, 'utf8')
|
return bytes(base_img)
|
||||||
|
|
||||||
|
|
||||||
async def get_all_event_img():
|
async def get_all_event_img():
|
||||||
|
@ -107,4 +107,6 @@ async def export_gachalogurl(bot: Bot, ev: Event):
|
|||||||
im = await get_gachaurl(uid)
|
im = await get_gachaurl(uid)
|
||||||
if isinstance(im, bytes):
|
if isinstance(im, bytes):
|
||||||
return await bot.send(im)
|
return await bot.send(im)
|
||||||
|
if isinstance(im, (bytearray, memoryview)):
|
||||||
|
return await bot.send(bytes(im))
|
||||||
await bot.send(MessageSegment.node([MessageSegment.text(im)]))
|
await bot.send(MessageSegment.node([MessageSegment.text(im)]))
|
||||||
|
@ -66,7 +66,7 @@ async def single_get_draw(bot_id: str, uid: str, gid: str, qid: str):
|
|||||||
|
|
||||||
im = await post_my_draw(uid)
|
im = await post_my_draw(uid)
|
||||||
|
|
||||||
if isinstance(im, bytes):
|
if isinstance(im, (bytes, bytearray, memoryview)):
|
||||||
return
|
return
|
||||||
|
|
||||||
if '没有需要获取' in im:
|
if '没有需要获取' in im:
|
||||||
|
@ -6,8 +6,8 @@ from typing import Union
|
|||||||
from PIL import Image, ImageDraw
|
from PIL import Image, ImageDraw
|
||||||
from gsuid_core.logger import logger
|
from gsuid_core.logger import logger
|
||||||
from gsuid_core.utils.api.mys.models import Expedition
|
from gsuid_core.utils.api.mys.models import Expedition
|
||||||
from gsuid_core.utils.error_reply import get_error_img
|
|
||||||
from gsuid_core.utils.database.models import GsBind, GsUser
|
from gsuid_core.utils.database.models import GsBind, GsUser
|
||||||
|
from gsuid_core.utils.error_reply import UID_HINT, get_error_img
|
||||||
|
|
||||||
from ..utils.mys_api import mys_api
|
from ..utils.mys_api import mys_api
|
||||||
from ..utils.api.mys.models import FakeResin
|
from ..utils.api.mys.models import FakeResin
|
||||||
@ -89,7 +89,7 @@ async def get_resin_img(bot_id: str, user_id: str):
|
|||||||
uid_list = await GsBind.get_uid_list_by_game(user_id, bot_id)
|
uid_list = await GsBind.get_uid_list_by_game(user_id, bot_id)
|
||||||
logger.info('[每日信息]UID: {}'.format(uid_list))
|
logger.info('[每日信息]UID: {}'.format(uid_list))
|
||||||
if uid_list is None:
|
if uid_list is None:
|
||||||
return
|
return UID_HINT
|
||||||
# 进行校验UID是否绑定CK
|
# 进行校验UID是否绑定CK
|
||||||
useable_uid_list = []
|
useable_uid_list = []
|
||||||
for uid in uid_list:
|
for uid in uid_list:
|
||||||
|
@ -130,7 +130,7 @@ async def draw_single_constellation(
|
|||||||
path = ICON_PATH / icon_name
|
path = ICON_PATH / icon_name
|
||||||
if not path.exists():
|
if not path.exists():
|
||||||
await download(image, 8, icon_name)
|
await download(image, 8, icon_name)
|
||||||
icon = Image.open(path).resize((38, 38))
|
icon = Image.open(path).resize((38, 38)).convert('RBGA')
|
||||||
img.paste(icon, (57, 37), icon)
|
img.paste(icon, (57, 37), icon)
|
||||||
img_draw.text(
|
img_draw.text(
|
||||||
(134, 40),
|
(134, 40),
|
||||||
|
@ -99,11 +99,8 @@ async def draw_xk_abyss_img():
|
|||||||
# 绘图部分
|
# 绘图部分
|
||||||
char_bg = Image.open(TEXT_PATH / 'char_bg.png')
|
char_bg = Image.open(TEXT_PATH / 'char_bg.png')
|
||||||
charimg = Image.open(CHAR_PATH / f'{char_id}.png').resize((117, 117))
|
charimg = Image.open(CHAR_PATH / f'{char_id}.png').resize((117, 117))
|
||||||
if charimg.mode == 'RGBA':
|
charimg = charimg.convert('RGBA')
|
||||||
mask = charimg.split()[3] # 使用alpha通道作为mask
|
char_bg.paste(charimg, (6, 2), charimg)
|
||||||
char_bg.paste(charimg, (6, 2), mask)
|
|
||||||
else:
|
|
||||||
char_bg.paste(charimg, (6, 2))
|
|
||||||
char_bg_draw = ImageDraw.Draw(char_bg)
|
char_bg_draw = ImageDraw.Draw(char_bg)
|
||||||
if char['rarity'] >= 5:
|
if char['rarity'] >= 5:
|
||||||
text = (193, 123, 0)
|
text = (193, 123, 0)
|
||||||
|
@ -3,6 +3,7 @@ import json
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from openpyxl import load_workbook
|
from openpyxl import load_workbook
|
||||||
|
from openpyxl.worksheet.worksheet import Worksheet
|
||||||
|
|
||||||
sample = {
|
sample = {
|
||||||
'weapon': {'5': [], '4': [], '3': []},
|
'weapon': {'5': [], '4': [], '3': []},
|
||||||
@ -16,7 +17,7 @@ path = Path(__file__).parents[1] / 'genshinuid_adv'
|
|||||||
data_path = Path(__file__).parent / 'help_data'
|
data_path = Path(__file__).parent / 'help_data'
|
||||||
|
|
||||||
wb = load_workbook(str(data_path / 'Genshin All Char.xlsx'))
|
wb = load_workbook(str(data_path / 'Genshin All Char.xlsx'))
|
||||||
ws = wb.active
|
ws: Worksheet = wb.active # type: ignore
|
||||||
for char_i in range(2, 1700, 5): # 角色行
|
for char_i in range(2, 1700, 5): # 角色行
|
||||||
char = ws.cell(char_i, 1).value
|
char = ws.cell(char_i, 1).value
|
||||||
if char is None:
|
if char is None:
|
||||||
|
@ -3,6 +3,7 @@ import json
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from openpyxl import load_workbook
|
from openpyxl import load_workbook
|
||||||
|
from openpyxl.worksheet.worksheet import Worksheet
|
||||||
|
|
||||||
sample = {
|
sample = {
|
||||||
'name': '',
|
'name': '',
|
||||||
@ -21,7 +22,7 @@ HELP_PATH = Path(__file__).parents[1] / 'genshinuid_help'
|
|||||||
|
|
||||||
# 表格地址: https://kdocs.cn/l/ccpc6z0bZx6u
|
# 表格地址: https://kdocs.cn/l/ccpc6z0bZx6u
|
||||||
wb = load_workbook(str(DATA_PATH / 'GenshinUID Help.xlsx'))
|
wb = load_workbook(str(DATA_PATH / 'GenshinUID Help.xlsx'))
|
||||||
ws = wb.active
|
ws: Worksheet = wb.active # type: ignore
|
||||||
|
|
||||||
module_name_str = ''
|
module_name_str = ''
|
||||||
for row in range(2, 999):
|
for row in range(2, 999):
|
||||||
|
@ -21,7 +21,7 @@ result_all = {}
|
|||||||
|
|
||||||
is_first = False
|
is_first = False
|
||||||
for row in range(3, 100):
|
for row in range(3, 100):
|
||||||
task = ws_daily.cell(row, 3).value
|
task: str = ws_daily.cell(row, 3).value # type: ignore
|
||||||
achi = ws_daily.cell(row, 4).value
|
achi = ws_daily.cell(row, 4).value
|
||||||
desc = ws_daily.cell(row, 5).value
|
desc = ws_daily.cell(row, 5).value
|
||||||
guide = ws_daily.cell(row, 6).value
|
guide = ws_daily.cell(row, 6).value
|
||||||
|
@ -4,6 +4,7 @@ from pathlib import Path
|
|||||||
|
|
||||||
import httpx
|
import httpx
|
||||||
import openpyxl
|
import openpyxl
|
||||||
|
from openpyxl.worksheet.worksheet import Worksheet
|
||||||
|
|
||||||
R_PATH = Path(__file__).parent
|
R_PATH = Path(__file__).parent
|
||||||
DATA_PATH = R_PATH / 'blue_data'
|
DATA_PATH = R_PATH / 'blue_data'
|
||||||
@ -122,7 +123,7 @@ async def panle2Json() -> None:
|
|||||||
访问DATA_PATH并转换数据为dmgMap.json。
|
访问DATA_PATH并转换数据为dmgMap.json。
|
||||||
'''
|
'''
|
||||||
wb = openpyxl.load_workbook(str(DATA_PATH / '参考面板.xlsx'), data_only=True)
|
wb = openpyxl.load_workbook(str(DATA_PATH / '参考面板.xlsx'), data_only=True)
|
||||||
sheet = wb.active
|
sheet: Worksheet = wb.active # type: ignore
|
||||||
|
|
||||||
result = {}
|
result = {}
|
||||||
char_result = []
|
char_result = []
|
||||||
|
Loading…
x
Reference in New Issue
Block a user