diff --git a/GenshinUID/genshinuid_abyss/__init__.py b/GenshinUID/genshinuid_abyss/__init__.py index 94956d3b..767d553a 100644 --- a/GenshinUID/genshinuid_abyss/__init__.py +++ b/GenshinUID/genshinuid_abyss/__init__.py @@ -20,7 +20,7 @@ async def send_abyss_info(bot: Bot, ev: Event): return await bot.logger.info('开始执行[查询深渊信息]') - uid = await get_uid(bot, ev) + uid, user_id = await get_uid(bot, ev, True) if uid is None: return await bot.send(UID_HINT) 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)) - 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) diff --git a/GenshinUID/genshinuid_collection/draw_collection_card.py b/GenshinUID/genshinuid_collection/draw_collection_card.py index 651906ae..4fc99c83 100644 --- a/GenshinUID/genshinuid_collection/draw_collection_card.py +++ b/GenshinUID/genshinuid_collection/draw_collection_card.py @@ -79,7 +79,7 @@ async def get_explore_data( uid: str, ) -> Union[bytes, str, Tuple[Dict[str, float], Dict[str, str], str, str, str]]: 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 # 处理数据 @@ -126,7 +126,7 @@ async def get_collection_data( uid: str, ) -> Union[bytes, str, Tuple[Dict[str, float], Dict[str, str], str, str, str]]: 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 raw_data = raw_data['stats'] @@ -173,7 +173,7 @@ async def draw_base_img( else: data = await get_explore_data(uid) - if isinstance(data, str) or isinstance(data, bytes): + if isinstance(data, (str, bytes, bytearray, memoryview)): return data percent_data, value_data = data[0], data[1] diff --git a/GenshinUID/genshinuid_collection/draw_new_collection_card.py b/GenshinUID/genshinuid_collection/draw_new_collection_card.py new file mode 100644 index 00000000..53f1574b --- /dev/null +++ b/GenshinUID/genshinuid_collection/draw_new_collection_card.py @@ -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) diff --git a/GenshinUID/genshinuid_collection/texture2D/area_bg.png b/GenshinUID/genshinuid_collection/texture2D/area_bg.png new file mode 100644 index 00000000..85fc38b5 Binary files /dev/null and b/GenshinUID/genshinuid_collection/texture2D/area_bg.png differ diff --git a/GenshinUID/genshinuid_dailycost/draw_daily_cost.py b/GenshinUID/genshinuid_dailycost/draw_daily_cost.py index 3e1c0d05..5aec2bb4 100644 --- a/GenshinUID/genshinuid_dailycost/draw_daily_cost.py +++ b/GenshinUID/genshinuid_dailycost/draw_daily_cost.py @@ -65,15 +65,10 @@ async def draw_daily_cost_img(is_force: bool = False) -> Union[str, bytes]: icon_id = data[domain][0] 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_draw = ImageDraw.Draw(bar) - if icon.mode == 'RGBA': - mask = icon.split()[3] # 获取alpha通道作为遮罩 - bar.paste(icon, (43, 10), mask) - else: - bar.paste(icon, (43, 10)) # 如果没有alpha通道,不使用遮罩 - + bar.paste(icon, (43, 10), icon) domain1, domain2 = domain.split(':') bar_draw.text((142, 50), domain2, 'black', gs_font_44, 'lm') diff --git a/GenshinUID/genshinuid_enka/etc/etc.py b/GenshinUID/genshinuid_enka/etc/etc.py index 1bfde269..83363380 100644 --- a/GenshinUID/genshinuid_enka/etc/etc.py +++ b/GenshinUID/genshinuid_enka/etc/etc.py @@ -125,7 +125,7 @@ async def get_first_main(mainName: str) -> str: 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'] equipMain = '' diff --git a/GenshinUID/genshinuid_eventlist/draw_event_img.py b/GenshinUID/genshinuid_eventlist/draw_event_img.py index 06f0f8fd..5a02319f 100644 --- a/GenshinUID/genshinuid_eventlist/draw_event_img.py +++ b/GenshinUID/genshinuid_eventlist/draw_event_img.py @@ -170,7 +170,7 @@ class DrawEventList: if isinstance(base_img, bytes): return base_img else: - return bytes(base_img, 'utf8') + return bytes(base_img) async def get_and_save_gacha_img(self): base_h = 100 + len(self.gacha_event) * 480 @@ -247,7 +247,7 @@ class DrawEventList: if isinstance(base_img, bytes): return base_img else: - return bytes(base_img, 'utf8') + return bytes(base_img) async def get_all_event_img(): diff --git a/GenshinUID/genshinuid_gachalog/__init__.py b/GenshinUID/genshinuid_gachalog/__init__.py index aae2e98b..f493f58f 100644 --- a/GenshinUID/genshinuid_gachalog/__init__.py +++ b/GenshinUID/genshinuid_gachalog/__init__.py @@ -107,4 +107,6 @@ async def export_gachalogurl(bot: Bot, ev: Event): im = await get_gachaurl(uid) if isinstance(im, bytes): return await bot.send(im) + if isinstance(im, (bytearray, memoryview)): + return await bot.send(bytes(im)) await bot.send(MessageSegment.node([MessageSegment.text(im)])) diff --git a/GenshinUID/genshinuid_postdraw/daily_check_draw.py b/GenshinUID/genshinuid_postdraw/daily_check_draw.py index 5ca3e907..13c333a0 100644 --- a/GenshinUID/genshinuid_postdraw/daily_check_draw.py +++ b/GenshinUID/genshinuid_postdraw/daily_check_draw.py @@ -66,7 +66,7 @@ async def single_get_draw(bot_id: str, uid: str, gid: str, qid: str): im = await post_my_draw(uid) - if isinstance(im, bytes): + if isinstance(im, (bytes, bytearray, memoryview)): return if '没有需要获取' in im: diff --git a/GenshinUID/genshinuid_resin/draw_resin_card.py b/GenshinUID/genshinuid_resin/draw_resin_card.py index 480ff4cf..84f0bbbe 100644 --- a/GenshinUID/genshinuid_resin/draw_resin_card.py +++ b/GenshinUID/genshinuid_resin/draw_resin_card.py @@ -6,8 +6,8 @@ from typing import Union from PIL import Image, ImageDraw from gsuid_core.logger import logger 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.error_reply import UID_HINT, get_error_img from ..utils.mys_api import mys_api 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) logger.info('[每日信息]UID: {}'.format(uid_list)) if uid_list is None: - return + return UID_HINT # 进行校验UID是否绑定CK useable_uid_list = [] for uid in uid_list: diff --git a/GenshinUID/genshinuid_wikitext/get_constellation_pic.py b/GenshinUID/genshinuid_wikitext/get_constellation_pic.py index c5fdb68d..95070c9b 100644 --- a/GenshinUID/genshinuid_wikitext/get_constellation_pic.py +++ b/GenshinUID/genshinuid_wikitext/get_constellation_pic.py @@ -130,7 +130,7 @@ async def draw_single_constellation( path = ICON_PATH / icon_name if not path.exists(): 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_draw.text( (134, 40), diff --git a/GenshinUID/genshinuid_xkdata/draw_abyss_total.py b/GenshinUID/genshinuid_xkdata/draw_abyss_total.py index d0bd2ff4..c990c9d8 100644 --- a/GenshinUID/genshinuid_xkdata/draw_abyss_total.py +++ b/GenshinUID/genshinuid_xkdata/draw_abyss_total.py @@ -99,11 +99,8 @@ async def draw_xk_abyss_img(): # 绘图部分 char_bg = Image.open(TEXT_PATH / 'char_bg.png') charimg = Image.open(CHAR_PATH / f'{char_id}.png').resize((117, 117)) - if charimg.mode == 'RGBA': - mask = charimg.split()[3] # 使用alpha通道作为mask - char_bg.paste(charimg, (6, 2), mask) - else: - char_bg.paste(charimg, (6, 2)) + charimg = charimg.convert('RGBA') + char_bg.paste(charimg, (6, 2), charimg) char_bg_draw = ImageDraw.Draw(char_bg) if char['rarity'] >= 5: text = (193, 123, 0) diff --git a/GenshinUID/tools/gen_char_li.py b/GenshinUID/tools/gen_char_li.py index 5c1c75b1..bc63f01d 100644 --- a/GenshinUID/tools/gen_char_li.py +++ b/GenshinUID/tools/gen_char_li.py @@ -3,6 +3,7 @@ import json from pathlib import Path from openpyxl import load_workbook +from openpyxl.worksheet.worksheet import Worksheet sample = { 'weapon': {'5': [], '4': [], '3': []}, @@ -16,7 +17,7 @@ path = Path(__file__).parents[1] / 'genshinuid_adv' data_path = Path(__file__).parent / 'help_data' 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): # 角色行 char = ws.cell(char_i, 1).value if char is None: diff --git a/GenshinUID/tools/gen_help.py b/GenshinUID/tools/gen_help.py index 1705aed9..b86df054 100644 --- a/GenshinUID/tools/gen_help.py +++ b/GenshinUID/tools/gen_help.py @@ -3,6 +3,7 @@ import json from pathlib import Path from openpyxl import load_workbook +from openpyxl.worksheet.worksheet import Worksheet sample = { 'name': '', @@ -21,7 +22,7 @@ HELP_PATH = Path(__file__).parents[1] / 'genshinuid_help' # 表格地址: https://kdocs.cn/l/ccpc6z0bZx6u wb = load_workbook(str(DATA_PATH / 'GenshinUID Help.xlsx')) -ws = wb.active +ws: Worksheet = wb.active # type: ignore module_name_str = '' for row in range(2, 999): diff --git a/GenshinUID/tools/get_achievement_json.py b/GenshinUID/tools/get_achievement_json.py index 581570b6..0f8217e6 100644 --- a/GenshinUID/tools/get_achievement_json.py +++ b/GenshinUID/tools/get_achievement_json.py @@ -21,7 +21,7 @@ result_all = {} is_first = False 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 desc = ws_daily.cell(row, 5).value guide = ws_daily.cell(row, 6).value diff --git a/GenshinUID/tools/panle_to_json.py b/GenshinUID/tools/panle_to_json.py index 02bdc566..2049e1bd 100644 --- a/GenshinUID/tools/panle_to_json.py +++ b/GenshinUID/tools/panle_to_json.py @@ -4,6 +4,7 @@ from pathlib import Path import httpx import openpyxl +from openpyxl.worksheet.worksheet import Worksheet R_PATH = Path(__file__).parent DATA_PATH = R_PATH / 'blue_data' @@ -122,7 +123,7 @@ async def panle2Json() -> None: 访问DATA_PATH并转换数据为dmgMap.json。 ''' wb = openpyxl.load_workbook(str(DATA_PATH / '参考面板.xlsx'), data_only=True) - sheet = wb.active + sheet: Worksheet = wb.active # type: ignore result = {} char_result = []