优化代码格式,调整导入顺序,统一字符串引号

This commit is contained in:
baiqwerdvd 2025-02-27 00:08:43 +08:00
parent b3f4606545
commit 7db08353fa
No known key found for this signature in database
GPG Key ID: 103223964DCA2FF3
39 changed files with 207 additions and 276 deletions

View File

@ -1,5 +1,3 @@
from gsuid_core.sv import Plugins from gsuid_core.sv import Plugins
Plugins( Plugins(name="StarRailUID", force_prefix=["sr"], allow_empty_prefix=False)
name="StarRailUID", force_prefix=['sr'], allow_empty_prefix=False
)

View File

@ -3,4 +3,4 @@
from .models import MihomoData as MihomoData from .models import MihomoData as MihomoData
from .requests import get_char_card_info as requests from .requests import get_char_card_info as requests
__all__ = ["requests", "MihomoData"] __all__ = ["MihomoData", "requests"]

View File

@ -53,7 +53,9 @@ ROGUE_LOCUST_INFO_URL = (
f"{NEW_URL}/game_record/app/hkrpg/api/rogue_locust" # 角色寰宇蝗灾信息接口 f"{NEW_URL}/game_record/app/hkrpg/api/rogue_locust" # 角色寰宇蝗灾信息接口
) )
STAR_RAIL_GACHA_LOG_URL = f"https://public-operation-hkrpg.mihoyo.com/common/gacha_record/api/getGachaLog" STAR_RAIL_GACHA_LOG_URL = (
f"https://public-operation-hkrpg.mihoyo.com/common/gacha_record/api/getGachaLog"
)
STAR_RAIL_GACHA_LOG_URL_OS = f"{OS_OLD_URL}/common/gacha_record/api/getGachaLog" STAR_RAIL_GACHA_LOG_URL_OS = f"{OS_OLD_URL}/common/gacha_record/api/getGachaLog"
GET_FP_URL = "https://public-data-api.mihoyo.com/device-fp/api/getFp" GET_FP_URL = "https://public-data-api.mihoyo.com/device-fp/api/getFp"

View File

@ -1,14 +1,14 @@
import re import re
from gsuid_core.sv import SV
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.sv import SV
from gsuid_core.utils.database.api import get_uid from gsuid_core.utils.database.api import get_uid
from gsuid_core.utils.database.models import GsBind from gsuid_core.utils.database.models import GsBind
from ..utils.error_reply import UID_HINT
from .draw_abyss_card import draw_abyss_img from .draw_abyss_card import draw_abyss_img
from ..utils.error_reply import UID_HINT
sv_srabyss = SV("sr查询深渊") sv_srabyss = SV("sr查询深渊")

View File

@ -2,17 +2,14 @@ from pathlib import Path
from typing import Union from typing import Union
from PIL import Image, ImageDraw from PIL import Image, ImageDraw
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.utils.error_reply import get_error from gsuid_core.utils.error_reply import get_error
from gsuid_core.utils.image.convert import convert_img from gsuid_core.utils.image.convert import convert_img
from gsuid_core.utils.image.image_tools import draw_pic_with_ring from gsuid_core.utils.image.image_tools import draw_pic_with_ring
from ..utils.mys_api import mys_api
from ..utils.error_reply import prefix
from ..sruid_utils.api.mys.models import AbyssAvatar from ..sruid_utils.api.mys.models import AbyssAvatar
from ..utils.resource.get_pic_from import get_roleinfo_icon from ..utils.error_reply import prefix
from ..utils.image.image_tools import elements, _get_event_avatar
from ..utils.fonts.starrail_fonts import ( from ..utils.fonts.starrail_fonts import (
sr_font_22, sr_font_22,
sr_font_28, sr_font_28,
@ -20,6 +17,9 @@ from ..utils.fonts.starrail_fonts import (
sr_font_34, sr_font_34,
sr_font_42, sr_font_42,
) )
from ..utils.image.image_tools import _get_event_avatar, elements
from ..utils.mys_api import mys_api
from ..utils.resource.get_pic_from import get_roleinfo_icon
TEXT_PATH = Path(__file__).parent / "texture2D" TEXT_PATH = Path(__file__).parent / "texture2D"
white_color = (255, 255, 255) white_color = (255, 255, 255)
@ -121,9 +121,7 @@ async def draw_abyss_img(
return f"你还没有挑战本期深渊!\n可以使用[{prefix}上期深渊]命令查询上期~" return f"你还没有挑战本期深渊!\n可以使用[{prefix}上期深渊]命令查询上期~"
# 过滤掉 is_fast (快速通关) 为 True 的项 # 过滤掉 is_fast (快速通关) 为 True 的项
floor_detail = [ floor_detail = [
detail detail for detail in raw_abyss_data.all_floor_detail if not detail.is_fast
for detail in raw_abyss_data.all_floor_detail
if not detail.is_fast
] ]
floor_num = len(floor_detail) floor_num = len(floor_detail)

View File

@ -1,14 +1,14 @@
import re import re
from gsuid_core.sv import SV
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.sv import SV
from gsuid_core.utils.database.api import get_uid from gsuid_core.utils.database.api import get_uid
from gsuid_core.utils.database.models import GsBind from gsuid_core.utils.database.models import GsBind
from ..utils.error_reply import UID_HINT
from .draw_abyss_card import draw_abyss_img from .draw_abyss_card import draw_abyss_img
from ..utils.error_reply import UID_HINT
sv_abyss_boss = SV("sr查询末日幻影") sv_abyss_boss = SV("sr查询末日幻影")

View File

@ -2,17 +2,14 @@ from pathlib import Path
from typing import Union from typing import Union
from PIL import Image, ImageDraw from PIL import Image, ImageDraw
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.utils.error_reply import get_error from gsuid_core.utils.error_reply import get_error
from gsuid_core.utils.image.convert import convert_img from gsuid_core.utils.image.convert import convert_img
from gsuid_core.utils.image.image_tools import draw_pic_with_ring from gsuid_core.utils.image.image_tools import draw_pic_with_ring
from ..utils.mys_api import mys_api
from ..utils.error_reply import prefix
from ..sruid_utils.api.mys.models import AbyssAvatar from ..sruid_utils.api.mys.models import AbyssAvatar
from ..utils.resource.get_pic_from import get_roleinfo_icon from ..utils.error_reply import prefix
from ..utils.image.image_tools import elements, _get_event_avatar
from ..utils.fonts.starrail_fonts import ( from ..utils.fonts.starrail_fonts import (
sr_font_22, sr_font_22,
sr_font_28, sr_font_28,
@ -20,6 +17,9 @@ from ..utils.fonts.starrail_fonts import (
sr_font_34, sr_font_34,
sr_font_42, sr_font_42,
) )
from ..utils.image.image_tools import _get_event_avatar, elements
from ..utils.mys_api import mys_api
from ..utils.resource.get_pic_from import get_roleinfo_icon
TEXT_PATH = Path(__file__).parent / "texture2D" TEXT_PATH = Path(__file__).parent / "texture2D"
white_color = (255, 255, 255) white_color = (255, 255, 255)
@ -125,9 +125,7 @@ async def draw_abyss_img(
return f"你还没有挑战本期末日幻影!\n可以使用[{prefix}上期末日幻影]命令查询上期~" return f"你还没有挑战本期末日幻影!\n可以使用[{prefix}上期末日幻影]命令查询上期~"
# 过滤掉 is_fast (快速通关) 为 True 的项 # 过滤掉 is_fast (快速通关) 为 True 的项
floor_detail = [ floor_detail = [
detail detail for detail in raw_abyss_data.all_floor_detail if not detail.is_fast
for detail in raw_abyss_data.all_floor_detail
if not detail.is_fast
] ]
floor_num = len(floor_detail) floor_num = len(floor_detail)

View File

@ -1,14 +1,14 @@
import re import re
from gsuid_core.sv import SV
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.sv import SV
from gsuid_core.utils.database.api import get_uid from gsuid_core.utils.database.api import get_uid
from gsuid_core.utils.database.models import GsBind from gsuid_core.utils.database.models import GsBind
from ..utils.error_reply import UID_HINT
from .draw_abyss_card import draw_abyss_img from .draw_abyss_card import draw_abyss_img
from ..utils.error_reply import UID_HINT
sv_abyss_story = SV("sr查询虚构叙事") sv_abyss_story = SV("sr查询虚构叙事")

View File

@ -2,17 +2,14 @@ from pathlib import Path
from typing import Union from typing import Union
from PIL import Image, ImageDraw from PIL import Image, ImageDraw
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.utils.error_reply import get_error from gsuid_core.utils.error_reply import get_error
from gsuid_core.utils.image.convert import convert_img from gsuid_core.utils.image.convert import convert_img
from gsuid_core.utils.image.image_tools import draw_pic_with_ring from gsuid_core.utils.image.image_tools import draw_pic_with_ring
from ..utils.mys_api import mys_api
from ..utils.error_reply import prefix
from ..sruid_utils.api.mys.models import AbyssAvatar from ..sruid_utils.api.mys.models import AbyssAvatar
from ..utils.resource.get_pic_from import get_roleinfo_icon from ..utils.error_reply import prefix
from ..utils.image.image_tools import elements, _get_event_avatar
from ..utils.fonts.starrail_fonts import ( from ..utils.fonts.starrail_fonts import (
sr_font_22, sr_font_22,
sr_font_28, sr_font_28,
@ -20,6 +17,9 @@ from ..utils.fonts.starrail_fonts import (
sr_font_34, sr_font_34,
sr_font_42, sr_font_42,
) )
from ..utils.image.image_tools import _get_event_avatar, elements
from ..utils.mys_api import mys_api
from ..utils.resource.get_pic_from import get_roleinfo_icon
TEXT_PATH = Path(__file__).parent / "texture2D" TEXT_PATH = Path(__file__).parent / "texture2D"
white_color = (255, 255, 255) white_color = (255, 255, 255)
@ -140,9 +140,7 @@ async def draw_abyss_img(
return f"你还没有挑战本期虚构叙事!\n可以使用[{prefix}上期虚构叙事]命令查询上期~" return f"你还没有挑战本期虚构叙事!\n可以使用[{prefix}上期虚构叙事]命令查询上期~"
# 过滤掉 is_fast (快速通关) 为 True 的项 # 过滤掉 is_fast (快速通关) 为 True 的项
floor_detail = [ floor_detail = [
detail detail for detail in raw_abyss_data.all_floor_detail if not detail.is_fast
for detail in raw_abyss_data.all_floor_detail
if not detail.is_fast
] ]
floor_num = len(floor_detail) floor_num = len(floor_detail)

View File

@ -2,12 +2,12 @@ from typing import TYPE_CHECKING
from gsuid_core.sv import SV from gsuid_core.sv import SV
from gsuid_core.utils.database.api import get_uid from gsuid_core.utils.database.api import get_uid
from gsuid_core.utils.error_reply import get_error
from gsuid_core.utils.database.models import GsBind from gsuid_core.utils.database.models import GsBind
from gsuid_core.utils.error_reply import get_error
from ..utils.mys_api import mys_api
from ..utils.error_reply import UID_HINT from ..utils.error_reply import UID_HINT
from ..utils.name_covert import name_to_avatar_id, alias_to_char_name from ..utils.mys_api import mys_api
from ..utils.name_covert import alias_to_char_name, name_to_avatar_id
if TYPE_CHECKING: if TYPE_CHECKING:
from gsuid_core.bot import Bot from gsuid_core.bot import Bot

View File

@ -1,21 +1,21 @@
import re
from pathlib import Path from pathlib import Path
import re
from typing import Tuple, cast from typing import Tuple, cast
from PIL import Image from PIL import Image
from gsuid_core.sv import SV
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.message_models import Button from gsuid_core.message_models import Button
from gsuid_core.models import Event
from gsuid_core.sv import SV
from gsuid_core.utils.database.api import get_uid from gsuid_core.utils.database.api import get_uid
from gsuid_core.utils.database.models import GsBind from gsuid_core.utils.database.models import GsBind
from gsuid_core.utils.image.convert import convert_img from gsuid_core.utils.image.convert import convert_img
from starrail_damage_cal.map.SR_MAP_PATH import avatarId2Name from starrail_damage_cal.map.SR_MAP_PATH import avatarId2Name
from .get_char_img import draw_char_info_img
from .to_card import api_to_card from .to_card import api_to_card
from ..utils.error_reply import UID_HINT from ..utils.error_reply import UID_HINT
from .get_char_img import draw_char_info_img
from ..utils.resource.RESOURCE_PATH import TEMP_PATH from ..utils.resource.RESOURCE_PATH import TEMP_PATH
sv_char_info_config = SV("sr面板设置", pm=2) sv_char_info_config = SV("sr面板设置", pm=2)

View File

@ -482,8 +482,7 @@ async def draw_char_img(
relic_piece_new_img, relic_piece_new_img,
) )
rarity_img = Image.open( rarity_img = Image.open(
TEXT_PATH / f"LightCore_Rarity" TEXT_PATH / f"LightCore_Rarity{RelicId2Rarity[str(relic.relicId)]}.png"
f"{RelicId2Rarity[str(relic.relicId)]}.png"
).resize((200, 48)) ).resize((200, 48))
relic_img.paste(rarity_img, (-10, 80), rarity_img) relic_img.paste(rarity_img, (-10, 80), rarity_img)
relic_img_draw = ImageDraw.Draw(relic_img) relic_img_draw = ImageDraw.Draw(relic_img)
@ -672,7 +671,7 @@ async def draw_char_img(
char_info.paste(damage_img, (0, 2028 + damage_num * 48), damage_img) char_info.paste(damage_img, (0, 2028 + damage_num * 48), damage_img)
char_img_draw.text( char_img_draw.text(
(55, 2048 + damage_num * 48), (55, 2048 + damage_num * 48),
f'{damage_info["name"]}', f"{damage_info['name']}",
white_color, white_color,
sr_font_26, sr_font_26,
"lm", "lm",

View File

@ -33,10 +33,8 @@ async def api_to_card(uid: str) -> Union[Tuple[bytes, List[str]], bytes]:
uid, uid,
save_path=PLAYER_PATH, save_path=PLAYER_PATH,
) )
if ( if (not isinstance(char_id_list, str) and char_id_list == []) or isinstance(
not isinstance(char_id_list, str) char_id_list, str
and char_id_list == []
or isinstance(char_id_list, str)
): ):
return await convert_img(pic_500) return await convert_img(pic_500)
@ -63,7 +61,7 @@ async def draw_enka_card(uid: str, char_list: List, showfrom: int = 0):
return await convert_img(Image.new("RGBA", (0, 1), (255, 255, 255))) return await convert_img(Image.new("RGBA", (0, 1), (255, 255, 255)))
else: else:
line1 = f"UID {uid} 刷新成功" line1 = f"UID {uid} 刷新成功"
line2 = f'可以使用 {prefix}查询{char_data_list[0]["avatarName"]} 查询详情角色面板' line2 = f"可以使用 {prefix}查询{char_data_list[0]['avatarName']} 查询详情角色面板"
char_num = len(char_data_list) char_num = len(char_data_list)
if char_num <= 4: if char_num <= 4:
based_w, based_h = 1380, 926 based_w, based_h = 1380, 926

View File

@ -1,18 +1,18 @@
import re import re
from gsuid_core.sv import SV
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.sv import SV
from gsuid_core.utils.database.models import GsBind from gsuid_core.utils.database.models import GsBind
from .set_config import set_config_func, set_push_value
from ..utils.error_reply import UID_HINT from ..utils.error_reply import UID_HINT
from .set_config import set_push_value, set_config_func
sv_self_config = SV("星铁配置") sv_self_config = SV("星铁配置")
@sv_self_config.on_prefix(("设置")) @sv_self_config.on_prefix("设置")
async def send_config_ev(bot: Bot, ev: Event): async def send_config_ev(bot: Bot, ev: Event):
logger.info("开始执行[设置阈值信息]") logger.info("开始执行[设置阈值信息]")
uid = await GsBind.get_uid_by_game(ev.user_id, ev.bot_id, "sr") uid = await GsBind.get_uid_by_game(ev.user_id, ev.bot_id, "sr")
@ -26,9 +26,9 @@ async def send_config_ev(bot: Bot, ev: Event):
if value is None: if value is None:
return await bot.send("请输入正确的阈值数字...") return await bot.send("请输入正确的阈值数字...")
logger.info("[设置阈值信息]func: {}, value: {}".format(func, value)) logger.info(f"[设置阈值信息]func: {func}, value: {value}")
im = await set_push_value(ev.bot_id, func, uid, int(value)) im = await set_push_value(ev.bot_id, func, uid, int(value))
await bot.send(im) return await bot.send(im)
# 开启 自动签到 和 推送树脂提醒 功能 # 开启 自动签到 和 推送树脂提醒 功能
@ -66,4 +66,4 @@ async def open_switch_func(bot: Bot, ev: Event):
query=query, query=query,
is_admin=is_admin, is_admin=is_admin,
) )
await bot.send(im) return await bot.send(im)

View File

@ -2,9 +2,9 @@ from typing import Dict
from gsuid_core.utils.plugins_config.models import ( from gsuid_core.utils.plugins_config.models import (
GSC, GSC,
GsStrConfig,
GsBoolConfig, GsBoolConfig,
GsListStrConfig, GsListStrConfig,
GsStrConfig,
) )
CONIFG_DEFAULT: Dict[str, GSC] = { CONIFG_DEFAULT: Dict[str, GSC] = {

View File

@ -1,14 +1,13 @@
from typing import Optional from typing import Optional
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.utils.database.models import GsUser from gsuid_core.models import Event
from gsuid_core.sv import get_plugin_available_prefix
from gsuid_core.utils.database.config_switch import set_database_value from gsuid_core.utils.database.config_switch import set_database_value
from gsuid_core.utils.database.models import GsUser
from .config_default import CONIFG_DEFAULT
from .sr_config import srconfig from .sr_config import srconfig
from ..utils.database.model import SrPush from ..utils.database.model import SrPush
from .config_default import CONIFG_DEFAULT
PUSH_MAP = { PUSH_MAP = {
"体力": "stamina", "体力": "stamina",
@ -21,7 +20,7 @@ async def set_push_value(bot_id: str, func: str, uid: str, value: int):
status = PUSH_MAP[func] status = PUSH_MAP[func]
else: else:
return "该配置项不存在!" return "该配置项不存在!"
logger.info("[设置推送阈值]func: {}, value: {}".format(status, value)) logger.info(f"[设置推送阈值]func: {status}, value: {value}")
if ( if (
await SrPush.update_data_by_uid( await SrPush.update_data_by_uid(
uid, uid,
@ -59,12 +58,10 @@ async def set_config_func(
bot_id, bot_id,
"sr", "sr",
**{ **{
f'{PUSH_MAP[config_name.replace("推送", "")]}_push': option, f"{PUSH_MAP[config_name.replace('推送', '')]}_push": option,
}, },
) )
await GsUser.update_data_by_uid( await GsUser.update_data_by_uid(uid, bot_id, "sr", sr_push_switch=option)
uid, bot_id, 'sr', sr_push_switch=option
)
else: else:
if await GsUser.data_exist(sr_uid=uid): if await GsUser.data_exist(sr_uid=uid):
text = await set_database_value( text = await set_database_value(
@ -77,12 +74,11 @@ async def set_config_func(
option, option,
) )
else: else:
return '请先绑定Cookies' return "请先绑定Cookies"
if not text: if not text:
return "该配置项不存在!" return "该配置项不存在!"
else: return text
return text
if option == "on": if option == "on":
succeed_msg = "开启至私聊消息!" succeed_msg = "开启至私聊消息!"

View File

@ -1,13 +1,13 @@
from gsuid_core.sv import SV
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.sv import SV
from gsuid_core.utils.database.api import get_uid from gsuid_core.utils.database.api import get_uid
from gsuid_core.utils.database.models import GsBind from gsuid_core.utils.database.models import GsBind
from ..utils.error_reply import UID_HINT
from .get_gachalogs import save_gachalogs
from .draw_gachalogs import draw_gachalogs_img from .draw_gachalogs import draw_gachalogs_img
from .get_gachalogs import save_gachalogs
from ..utils.error_reply import UID_HINT
sv_gacha_log = SV("sr抽卡记录") sv_gacha_log = SV("sr抽卡记录")
sv_get_gachalog_by_link = SV("sr导入抽卡链接", area="DIRECT") sv_get_gachalog_by_link = SV("sr导入抽卡链接", area="DIRECT")

View File

@ -1,23 +1,16 @@
import json
import asyncio import asyncio
from pathlib import Path
from datetime import datetime from datetime import datetime
import json
from pathlib import Path
from typing import List, Tuple, Union from typing import List, Tuple, Union
from PIL import Image, ImageDraw from PIL import Image, ImageDraw
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.utils.image.convert import convert_img from gsuid_core.utils.image.convert import convert_img
from gsuid_core.utils.image.image_tools import get_color_bg, draw_pic_with_ring from gsuid_core.utils.image.image_tools import draw_pic_with_ring, get_color_bg
from ..utils.error_reply import prefix from ..utils.error_reply import prefix
from ..utils.image.image_tools import _get_event_avatar
from ..utils.name_covert import name_to_avatar_id, name_to_weapon_id
from ..utils.resource.RESOURCE_PATH import (
PLAYER_PATH,
WEAPON_PATH,
CHAR_ICON_PATH,
)
from ..utils.fonts.starrail_fonts import ( from ..utils.fonts.starrail_fonts import (
sr_font_20, sr_font_20,
sr_font_24, sr_font_24,
@ -25,6 +18,13 @@ from ..utils.fonts.starrail_fonts import (
sr_font_38, sr_font_38,
sr_font_40, sr_font_40,
) )
from ..utils.image.image_tools import _get_event_avatar
from ..utils.name_covert import name_to_avatar_id, name_to_weapon_id
from ..utils.resource.RESOURCE_PATH import (
CHAR_ICON_PATH,
PLAYER_PATH,
WEAPON_PATH,
)
TEXT_PATH = Path(__file__).parent / "texture2d" TEXT_PATH = Path(__file__).parent / "texture2d"
EMO_PATH = Path(__file__).parent / "texture2d" / "emo" EMO_PATH = Path(__file__).parent / "texture2d" / "emo"
@ -100,13 +100,7 @@ async def _draw_card(
text_color = green_color text_color = green_color
else: else:
text_color = brown_color text_color = brown_color
card_img_draw.text( card_img_draw.text(text_point, f"{gacha_num}", text_color, sr_font_24, "mm")
text_point,
f"{gacha_num}",
text_color,
sr_font_24,
"mm"
)
if is_up: if is_up:
logger.info(f"up: {name}") logger.info(f"up: {name}")
# card_img.paste(up_tag, (47, -2), up_tag) # card_img.paste(up_tag, (47, -2), up_tag)
@ -186,7 +180,7 @@ async def draw_gachalogs_img(uid: str, ev: Event) -> Union[bytes, str]:
_fm = "%Y-%m-%d %H:%M:%S" _fm = "%Y-%m-%d %H:%M:%S"
t1 = datetime.strptime(data["time"], _fm) t1 = datetime.strptime(data["time"], _fm)
t2 = datetime.strptime(total_data[i]["time_range"], _fm) t2 = datetime.strptime(total_data[i]["time_range"], _fm)
total_data[i]["all_time"] = (t1-t2).total_seconds() total_data[i]["all_time"] = (t1 - t2).total_seconds()
total_data[i]["time_range"] += "~" + data["time"] total_data[i]["time_range"] += "~" + data["time"]
# 计算时间间隔 # 计算时间间隔
@ -201,9 +195,7 @@ async def draw_gachalogs_img(uid: str, ev: Event) -> Union[bytes, str]:
total_data[i]["long_gacha_data"]["num"] += 1 total_data[i]["long_gacha_data"]["num"] += 1
total_data[i]["long_gacha_data"]["time"] += dis total_data[i]["long_gacha_data"]["time"] += dis
else: else:
temp_time = datetime.strptime( temp_time = datetime.strptime(data["time"], "%Y-%m-%d %H:%M:%S")
data["time"], "%Y-%m-%d %H:%M:%S"
)
# 如果这是个五星 # 如果这是个五星
if data["rank_type"] == "5": if data["rank_type"] == "5":
@ -392,12 +384,7 @@ async def draw_gachalogs_img(uid: str, ev: Event) -> Union[bytes, str]:
"mm", "mm",
) )
y_extend += ( y_extend += (
( (1 + ((total_data[type_list[index - 1]]["total"] - 1) // 5)) * single_y
1
+ (
(total_data[type_list[index - 1]]["total"] - 1) // 5
)
) * single_y
if index != 0 if index != 0
else 0 else 0
) )

View File

@ -1,16 +1,16 @@
import json
import asyncio import asyncio
from pathlib import Path
from urllib import parse
from datetime import datetime from datetime import datetime
import json
from pathlib import Path
from typing import Dict, List, Optional from typing import Dict, List, Optional
from urllib import parse
import msgspec
import aiofiles import aiofiles
import msgspec
from ..sruid_utils.api.mys.models import SingleGachaLog
from ..utils.mys_api import mys_api from ..utils.mys_api import mys_api
from ..utils.resource.RESOURCE_PATH import PLAYER_PATH from ..utils.resource.RESOURCE_PATH import PLAYER_PATH
from ..sruid_utils.api.mys.models import SingleGachaLog
gacha_type_meta_data = { gacha_type_meta_data = {
"群星跃迁": ["1"], "群星跃迁": ["1"],
@ -37,8 +37,8 @@ async def get_new_gachalog_by_link(
if "authkey" not in url_parse: if "authkey" not in url_parse:
return {} return {}
authkey = url_parse["authkey"][0] authkey = url_parse["authkey"][0]
authkey = parse.quote(authkey, safe='') authkey = parse.quote(authkey, safe="")
if 'gacha_id' in url_parse: if "gacha_id" in url_parse:
gacha_id = url_parse["gacha_id"][0] gacha_id = url_parse["gacha_id"][0]
else: else:
gacha_id = None gacha_id = None
@ -102,8 +102,7 @@ async def save_gachalogs(
if gachalogs_path.exists(): if gachalogs_path.exists():
async with aiofiles.open( async with aiofiles.open(
gachalogs_path, gachalogs_path,
mode='r', encoding="UTF-8",
encoding='UTF-8',
) as f: ) as f:
gachalogs_history = json.loads(await f.read()) gachalogs_history = json.loads(await f.read())
gachalogs_history = gachalogs_history["data"] gachalogs_history = gachalogs_history["data"]

View File

@ -1,9 +1,9 @@
from PIL import Image from PIL import Image
from gsuid_core.sv import SV
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.models import Event
from gsuid_core.logger import logger
from gsuid_core.help.utils import register_help from gsuid_core.help.utils import register_help
from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.sv import SV
from .get_help import ICON, get_help from .get_help import ICON, get_help
from ..utils.error_reply import prefix from ..utils.error_reply import prefix
@ -17,4 +17,5 @@ async def send_help_img(bot: Bot, ev: Event):
im = await get_help() im = await get_help()
await bot.send(im) await bot.send(im)
register_help('StarRailUID', f'{prefix}帮助', Image.open(ICON))
register_help("StarRailUID", f"{prefix}帮助", Image.open(ICON))

View File

@ -1,40 +1,40 @@
from typing import Dict
from pathlib import Path from pathlib import Path
from typing import Dict
import aiofiles
from PIL import Image from PIL import Image
from msgspec import json as msgjson import aiofiles
from gsuid_core.help.draw_new_plugin_help import get_new_help
from gsuid_core.help.model import PluginHelp from gsuid_core.help.model import PluginHelp
from gsuid_core.sv import get_plugin_available_prefix from gsuid_core.sv import get_plugin_available_prefix
from gsuid_core.help.draw_new_plugin_help import get_new_help from msgspec import json as msgjson
from ..version import StarRailUID_version
from ..utils.image.image_tools import get_footer from ..utils.image.image_tools import get_footer
from ..version import StarRailUID_version
ICON = Path(__file__).parent.parent.parent / 'ICON.png' ICON = Path(__file__).parent.parent.parent / "ICON.png"
HELP_DATA = Path(__file__).parent / 'help.json' HELP_DATA = Path(__file__).parent / "help.json"
ICON_PATH = Path(__file__).parent / 'icon_path' ICON_PATH = Path(__file__).parent / "icon_path"
TEXT_PATH = Path(__file__).parent / 'texture2d' TEXT_PATH = Path(__file__).parent / "texture2d"
async def get_help_data() -> Dict[str, PluginHelp]: async def get_help_data() -> Dict[str, PluginHelp]:
async with aiofiles.open(HELP_DATA, 'rb') as file: async with aiofiles.open(HELP_DATA, "rb") as file:
return msgjson.decode(await file.read(), type=Dict[str, PluginHelp]) return msgjson.decode(await file.read(), type=Dict[str, PluginHelp])
async def get_help(): async def get_help():
return await get_new_help( return await get_new_help(
plugin_name='StarRailUID', plugin_name="StarRailUID",
plugin_info={f'v{StarRailUID_version}': ''}, plugin_info={f"v{StarRailUID_version}": ""},
plugin_icon=Image.open(ICON), plugin_icon=Image.open(ICON),
plugin_help=await get_help_data(), plugin_help=await get_help_data(),
plugin_prefix=get_plugin_available_prefix('StarRailUID'), plugin_prefix=get_plugin_available_prefix("StarRailUID"),
help_mode='dark', help_mode="dark",
banner_bg=Image.open(TEXT_PATH / 'banner_bg.jpg'), banner_bg=Image.open(TEXT_PATH / "banner_bg.jpg"),
banner_sub_text='「愿此行, 终抵群星!」', banner_sub_text="「愿此行, 终抵群星!」",
help_bg=Image.open(TEXT_PATH / 'bg.jpg'), help_bg=Image.open(TEXT_PATH / "bg.jpg"),
cag_bg=Image.open(TEXT_PATH / 'cag_bg.png'), cag_bg=Image.open(TEXT_PATH / "cag_bg.png"),
item_bg=Image.open(TEXT_PATH / 'item.png'), item_bg=Image.open(TEXT_PATH / "item.png"),
icon_path=ICON_PATH, icon_path=ICON_PATH,
footer=get_footer(), footer=get_footer(),
enable_cache=True, enable_cache=True,

View File

@ -1,13 +1,13 @@
from gsuid_core.sv import SV
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.sv import SV
from gsuid_core.utils.database.api import get_uid from gsuid_core.utils.database.api import get_uid
from gsuid_core.utils.database.models import GsBind from gsuid_core.utils.database.models import GsBind
from .draw_note_card import draw_note_img
from .note_text import award from .note_text import award
from ..utils.error_reply import UID_HINT from ..utils.error_reply import UID_HINT
from .draw_note_card import draw_note_img
sv_get_monthly_data = SV("sr查询月历") sv_get_monthly_data = SV("sr查询月历")
@ -18,8 +18,7 @@ async def send_monthly_data(bot: Bot, ev: Event):
sr_uid = await GsBind.get_uid_by_game(ev.user_id, ev.bot_id, "sr") sr_uid = await GsBind.get_uid_by_game(ev.user_id, ev.bot_id, "sr")
if sr_uid is None: if sr_uid is None:
return await bot.send(UID_HINT) return await bot.send(UID_HINT)
await bot.send(await award(sr_uid)) return await bot.send(await award(sr_uid))
return None
@sv_get_monthly_data.on_fullmatch( @sv_get_monthly_data.on_fullmatch(
@ -35,5 +34,4 @@ async def send_monthly_pic(bot: Bot, ev: Event):
if sr_uid is None: if sr_uid is None:
return await bot.send(UID_HINT) return await bot.send(UID_HINT)
im = await draw_note_img(str(sr_uid)) im = await draw_note_img(str(sr_uid))
await bot.send(im) return await bot.send(im)
return None

View File

@ -1,7 +1,7 @@
from gsuid_core.sv import SV
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.sv import SV
from ..utils.resource.download_all_file import check_use from ..utils.resource.download_all_file import check_use

View File

@ -1,14 +1,14 @@
import re import re
from gsuid_core.sv import SV
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.sv import SV
from gsuid_core.utils.database.api import get_uid from gsuid_core.utils.database.api import get_uid
from gsuid_core.utils.database.models import GsBind from gsuid_core.utils.database.models import GsBind
from ..utils.error_reply import UID_HINT
from .draw_rogue_card import draw_rogue_img, draw_rogue_locust_img from .draw_rogue_card import draw_rogue_img, draw_rogue_locust_img
from ..utils.error_reply import UID_HINT
sv_srabyss = SV("sr查询模拟宇宙") sv_srabyss = SV("sr查询模拟宇宙")
sv_srabyss_locust = SV("sr查询寰宇蝗灾") sv_srabyss_locust = SV("sr查询寰宇蝗灾")

View File

@ -1,30 +1,30 @@
import math import math
from pathlib import Path from pathlib import Path
from typing import List, Union, Optional from typing import List, Optional, Union
from PIL import Image, ImageDraw from PIL import Image, ImageDraw
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.utils.error_reply import get_error from gsuid_core.utils.error_reply import get_error
from gsuid_core.utils.image.convert import convert_img from gsuid_core.utils.image.convert import convert_img
from gsuid_core.utils.image.image_tools import draw_pic_with_ring from gsuid_core.utils.image.image_tools import draw_pic_with_ring
from ..utils.mys_api import mys_api from ..sruid_utils.api.mys.models import (
LocustBlocks,
RogueAvatar,
RogueBuffitems,
RogueMiracles,
)
from ..utils.error_reply import prefix from ..utils.error_reply import prefix
from ..utils.resource.get_pic_from import get_roleinfo_icon
from ..utils.image.image_tools import elements, _get_event_avatar
from ..utils.fonts.starrail_fonts import ( from ..utils.fonts.starrail_fonts import (
sr_font_22, sr_font_22,
sr_font_28, sr_font_28,
sr_font_34, sr_font_34,
sr_font_42, sr_font_42,
) )
from ..sruid_utils.api.mys.models import ( from ..utils.image.image_tools import _get_event_avatar, elements
RogueAvatar, from ..utils.mys_api import mys_api
LocustBlocks, from ..utils.resource.get_pic_from import get_roleinfo_icon
RogueMiracles,
RogueBuffitems,
)
TEXT_PATH = Path(__file__).parent / "texture2D" TEXT_PATH = Path(__file__).parent / "texture2D"
white_color = (255, 255, 255) white_color = (255, 255, 255)
@ -479,11 +479,7 @@ async def draw_rogue_img(
sr_font_34, sr_font_34,
"lm", "lm",
) )
floor_pic.paste( floor_pic.paste(content_center, (0, 370 + buff_height + 80), content_center)
content_center,
(0, 370 + buff_height + 80),
content_center
)
await _draw_rogue_miracles( await _draw_rogue_miracles(
detail.miracles, detail.miracles,
floor_pic, floor_pic,

View File

@ -1,14 +1,14 @@
import re import re
from gsuid_core.sv import SV
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.sv import SV
from gsuid_core.utils.database.api import get_uid from gsuid_core.utils.database.api import get_uid
from gsuid_core.utils.database.models import GsBind from gsuid_core.utils.database.models import GsBind
from .draw_roleinfo_card import get_detail_img, get_role_img
from ..utils.error_reply import UID_HINT from ..utils.error_reply import UID_HINT
from .draw_roleinfo_card import get_role_img, get_detail_img
sv_get_info = SV("sr查询信息") sv_get_info = SV("sr查询信息")

View File

@ -1,18 +1,22 @@
import asyncio import asyncio
from pathlib import Path from pathlib import Path
from typing import Dict, List, Union, TypeVar, Optional, Generator from typing import Dict, Generator, List, Optional, TypeVar, Union
from PIL import Image, ImageDraw from PIL import Image, ImageDraw
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.utils.error_reply import get_error from gsuid_core.utils.error_reply import get_error
from gsuid_core.utils.image.convert import convert_img from gsuid_core.utils.image.convert import convert_img
from gsuid_core.utils.image.image_tools import draw_pic_with_ring from gsuid_core.utils.image.image_tools import draw_pic_with_ring
from ..utils.mys_api import mys_api from ..sruid_utils.api.mys.models import (
AvatarDetail,
AvatarListItem,
AvatarListItemDetail,
RoleBasicInfo,
Stats,
)
from ..utils.fonts.first_world import fw_font_24 from ..utils.fonts.first_world import fw_font_24
from ..utils.resource.get_pic_from import get_roleinfo_icon
from ..utils.image.image_tools import elements, _get_event_avatar
from ..utils.fonts.starrail_fonts import ( from ..utils.fonts.starrail_fonts import (
sr_font_22, sr_font_22,
sr_font_24, sr_font_24,
@ -20,13 +24,9 @@ from ..utils.fonts.starrail_fonts import (
sr_font_30, sr_font_30,
sr_font_36, sr_font_36,
) )
from ..sruid_utils.api.mys.models import ( from ..utils.image.image_tools import _get_event_avatar, elements
Stats, from ..utils.mys_api import mys_api
AvatarDetail, from ..utils.resource.get_pic_from import get_roleinfo_icon
RoleBasicInfo,
AvatarListItem,
AvatarListItemDetail,
)
TEXT_PATH = Path(__file__).parent / "texture2D" TEXT_PATH = Path(__file__).parent / "texture2D"
@ -65,7 +65,7 @@ T = TypeVar("T")
def wrap_list(lst: List[T], n: int) -> Generator[List[T], None, None]: def wrap_list(lst: List[T], n: int) -> Generator[List[T], None, None]:
for i in range(0, len(lst), n): for i in range(0, len(lst), n):
yield lst[i : i + n] # noqa: E203 yield lst[i : i + n]
async def _draw_card_1( async def _draw_card_1(
@ -88,13 +88,7 @@ async def _draw_card_1(
bg1_draw = ImageDraw.Draw(img_bg1) bg1_draw = ImageDraw.Draw(img_bg1)
# 写Nickname # 写Nickname
bg1_draw.text( bg1_draw.text((400, 85), nickname, font=sr_font_36, fill=white_color, anchor="mm")
(400, 85),
nickname,
font=sr_font_36,
fill=white_color,
anchor="mm"
)
# 写UID # 写UID
bg1_draw.text( bg1_draw.text(
(400, 165), (400, 165),
@ -208,10 +202,7 @@ async def _draw_card_2(
) -> Image.Image: ) -> Image.Image:
# 角色部分 每五个一组 # 角色部分 每五个一组
lines = await asyncio.gather( lines = await asyncio.gather(
*[ *[_draw_line(five_avatars, equips) for five_avatars in wrap_list(avatars, 5)]
_draw_line(five_avatars, equips)
for five_avatars in wrap_list(avatars, 5)
]
) )
img_card_2 = Image.new("RGBA", (800, len(lines) * 200)) img_card_2 = Image.new("RGBA", (800, len(lines) * 200))
@ -420,8 +411,8 @@ async def get_detail_card(ev: Event, sr_uid: str) -> Union[bytes, str]:
) )
# 写底层文字 # 写底层文字
text1 = 'SR skill statistics by StarrailUID' text1 = "SR skill statistics by StarrailUID"
text2 = 'Code by jiluoQAQ & Power by GsCore' text2 = "Code by jiluoQAQ & Power by GsCore"
char_img_draw.text( char_img_draw.text(
(525, img_height - 45), (525, img_height - 45),
f"--{text1} & {text2}--", f"--{text1} & {text2}--",

View File

@ -1,14 +1,14 @@
from gsuid_core.sv import SV
from gsuid_core.bot import Bot
from gsuid_core.models import Event
from gsuid_core.aps import scheduler from gsuid_core.aps import scheduler
from gsuid_core.bot import Bot
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.utils.database.models import GsBind from gsuid_core.models import Event
from gsuid_core.utils.sign.sign import sign_in, daily_sign from gsuid_core.sv import SV
from gsuid_core.utils.boardcast.send_msg import send_board_cast_msg from gsuid_core.utils.boardcast.send_msg import send_board_cast_msg
from gsuid_core.utils.database.models import GsBind
from gsuid_core.utils.sign.sign import daily_sign, sign_in
from ..utils.error_reply import UID_HINT
from ..starrailuid_config.sr_config import srconfig from ..starrailuid_config.sr_config import srconfig
from ..utils.error_reply import UID_HINT
SIGN_TIME = srconfig.get_config("SignTime").data SIGN_TIME = srconfig.get_config("SignTime").data
IS_REPORT = srconfig.get_config("PrivateSignReport").data IS_REPORT = srconfig.get_config("PrivateSignReport").data

View File

@ -1,20 +1,20 @@
import asyncio import asyncio
from gsuid_core.sv import SV from gsuid_core.aps import scheduler
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.gss import gss from gsuid_core.gss import gss
from gsuid_core.models import Event
from gsuid_core.aps import scheduler
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.segment import MessageSegment from gsuid_core.segment import MessageSegment
from gsuid_core.sv import SV
from gsuid_core.utils.database.api import get_uid from gsuid_core.utils.database.api import get_uid
from gsuid_core.utils.database.models import GsBind from gsuid_core.utils.database.models import GsBind
from .notice import get_notice_list
from ..utils.error_reply import UID_HINT
from .stamina_text import get_stamina_text
from .draw_stamina_card import get_stamina_img from .draw_stamina_card import get_stamina_img
from .notice import get_notice_list
from .stamina_text import get_stamina_text
from ..starrailuid_config.sr_config import srconfig from ..starrailuid_config.sr_config import srconfig
from ..utils.error_reply import UID_HINT
sv_get_stamina = SV("sr查询体力") sv_get_stamina = SV("sr查询体力")
sv_get_stamina_admin = SV("sr强制推送", pm=1) sv_get_stamina_admin = SV("sr强制推送", pm=1)
@ -43,7 +43,7 @@ async def force_notice_job(bot: Bot, ev: Event):
async def sr_notice_job(): async def sr_notice_job():
StaminaCheck = srconfig.get_config("StaminaCheck").data StaminaCheck = srconfig.get_config("StaminaCheck").data
if not StaminaCheck: if not StaminaCheck:
logger.trace('[sr推送检查] 暂停...') logger.trace("[sr推送检查] 暂停...")
return return
result = await get_notice_list() result = await get_notice_list()

View File

@ -45,7 +45,7 @@ red_color = (235, 61, 75)
def seconds2hours(seconds: int) -> str: def seconds2hours(seconds: int) -> str:
m, s = divmod(int(seconds), 60) m, s = divmod(int(seconds), 60)
h, m = divmod(m, 60) h, m = divmod(m, 60)
return "%02d:%02d:%02d" % (h, m, s) return f"{h:02d}:{m:02d}:{s:02d}"
async def download_image(url: str) -> Image.Image: async def download_image(url: str) -> Image.Image:
@ -164,9 +164,9 @@ def get_error(img: Image.Image, uid: str, daily_data: int):
async def seconds2hours_zhcn(seconds: int) -> str: async def seconds2hours_zhcn(seconds: int) -> str:
m, s = divmod(int(seconds), 60) m, _ = divmod(int(seconds), 60)
h, m = divmod(m, 60) h, m = divmod(m, 60)
return "%02d小时%02d" % (h, m) return f"{h:02d}小时{m:02d}"
async def draw_stamina_img(sr_uid: str) -> Image.Image: async def draw_stamina_img(sr_uid: str) -> Image.Image:

View File

@ -7,7 +7,7 @@ from gsuid_core.utils.database.models import GsUser
from ..sruid_utils.api.mys.models import DailyNoteData from ..sruid_utils.api.mys.models import DailyNoteData
from ..starrailuid_config.sr_config import srconfig from ..starrailuid_config.sr_config import srconfig
from ..utils.database.model import SrPush from ..utils.database.model import SrPush
from..utils.error_reply import prefix from ..utils.error_reply import prefix
from ..utils.mys_api import mys_api from ..utils.mys_api import mys_api
MR_NOTICE = f"\n可发送[{prefix}mr]或者[{prefix}每日]来查看更多信息!\n" MR_NOTICE = f"\n可发送[{prefix}mr]或者[{prefix}每日]来查看更多信息!\n"
@ -21,7 +21,7 @@ NOTICE = {
async def get_notice_list() -> Dict[str, Dict[str, Dict]]: async def get_notice_list() -> Dict[str, Dict[str, Dict]]:
msg_dict: Dict[str, Dict[str, Dict]] = {} msg_dict: Dict[str, Dict[str, Dict]] = {}
for _ in gss.active_bot: for _ in gss.active_bot:
user_list = await GsUser.get_push_user_list('sr') user_list = await GsUser.get_push_user_list("sr")
for user in user_list: for user in user_list:
if user.sr_uid is not None: if user.sr_uid is not None:
raw_data = await mys_api.get_sr_daily_data(user.sr_uid) raw_data = await mys_api.get_sr_daily_data(user.sr_uid)

View File

@ -2,8 +2,8 @@ from typing import List
from gsuid_core.logger import logger from gsuid_core.logger import logger
from ..utils.mys_api import mys_api
from ..utils.error_reply import get_error from ..utils.error_reply import get_error
from ..utils.mys_api import mys_api
daily_im = """*数据刷新可能存在一定延迟,请以当前游戏实际数据为准 daily_im = """*数据刷新可能存在一定延迟,请以当前游戏实际数据为准
============== ==============
@ -16,7 +16,7 @@ daily_im = """*数据刷新可能存在一定延迟,请以当前游戏实际数
def seconds2hours(seconds: int) -> str: def seconds2hours(seconds: int) -> str:
m, s = divmod(int(seconds), 60) m, s = divmod(int(seconds), 60)
h, m = divmod(m, 60) h, m = divmod(m, 60)
return "%02d:%02d:%02d" % (h, m, s) return f"{h:02d}:{m:02d}:{s:02d}"
async def get_stamina_text(uid: str) -> str: async def get_stamina_text(uid: str) -> str:

View File

@ -1,11 +1,11 @@
from gsuid_core.sv import SV
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.sv import SV
from gsuid_core.utils.database.models import GsBind from gsuid_core.utils.database.models import GsBind
from ..utils.message import send_diff_msg
from .draw_user_card import get_user_card from .draw_user_card import get_user_card
from ..utils.message import send_diff_msg
sv_user_config = SV("sr用户管理", pm=2) sv_user_config = SV("sr用户管理", pm=2)
sv_user_info = SV("sr用户信息") sv_user_info = SV("sr用户信息")

View File

@ -1,25 +1,25 @@
import re import re
from gsuid_core.sv import SV
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.models import Event
from gsuid_core.logger import logger from gsuid_core.logger import logger
from gsuid_core.models import Event
from gsuid_core.sv import SV
from gsuid_core.utils.image.convert import convert_img from gsuid_core.utils.image.convert import convert_img
from ..utils.name_covert import ( from ..utils.name_covert import (
alias_to_char_id, alias_to_char_id,
name_to_avatar_id,
name_to_weapon_id,
alias_to_char_name, alias_to_char_name,
name_to_avatar_id,
name_to_relic_set_id, name_to_relic_set_id,
name_to_weapon_id,
) )
from ..utils.resource.RESOURCE_PATH import ( from ..utils.resource.RESOURCE_PATH import (
WIKI_ROLE_PATH,
WIKI_RELIC_PATH,
GUIDE_CHARACTER_PATH, GUIDE_CHARACTER_PATH,
WIKI_LIGHT_CONE_PATH,
GUIDE_LIGHT_CONE_PATH, GUIDE_LIGHT_CONE_PATH,
WIKI_LIGHT_CONE_PATH,
WIKI_MATERIAL_FOR_ROLE, WIKI_MATERIAL_FOR_ROLE,
WIKI_RELIC_PATH,
WIKI_ROLE_PATH,
) )
sv_sr_wiki = SV("星铁WIKI") sv_sr_wiki = SV("星铁WIKI")

View File

@ -8,7 +8,7 @@ from sqlmodel import Field
class SrPush(Push, table=True): class SrPush(Push, table=True):
__table_args__ = {'extend_existing': True} __table_args__ = {"extend_existing": True}
bot_id: str = Field(title="平台") bot_id: str = Field(title="平台")
sr_uid: str = Field(default=None, title="星铁UID") sr_uid: str = Field(default=None, title="星铁UID")

View File

@ -7,14 +7,16 @@ prefix = get_plugin_available_prefix("StarRailUID")
UID_HINT = f"你还没有绑定过uid哦!\n请使用[{prefix}绑定uid123456]命令绑定!" UID_HINT = f"你还没有绑定过uid哦!\n请使用[{prefix}绑定uid123456]命令绑定!"
_CHAR_HINT = f"再使用【{prefix}强制刷新】命令来缓存数据进行查询! !" _CHAR_HINT = f"再使用【{prefix}强制刷新】命令来缓存数据进行查询! !"
CHAR_HINT = "您的支援/星海同行角色没有{}的数据哦!\n请先把{}放入支援/星海同行中" + _CHAR_HINT CHAR_HINT = (
"您的支援/星海同行角色没有{}的数据哦!\n请先把{}放入支援/星海同行中" + _CHAR_HINT
)
SR_ERROR_CODE = deepcopy(ERROR_CODE) SR_ERROR_CODE = deepcopy(ERROR_CODE)
def get_error(retcode: int) -> str: def get_error(retcode: int) -> str:
msg_list = [f'❌错误代码为: {retcode}'] msg_list = [f"❌错误代码为: {retcode}"]
if retcode in SR_ERROR_CODE: if retcode in SR_ERROR_CODE:
msg_list.append(f'📝错误信息: {SR_ERROR_CODE[retcode]}') msg_list.append(f"📝错误信息: {SR_ERROR_CODE[retcode]}")
return '\n'.join(msg_list) return "\n".join(msg_list)

View File

@ -5,7 +5,7 @@ from PIL import Image
from gsuid_core.models import Event from gsuid_core.models import Event
from gsuid_core.utils.image.image_tools import CustomizeImage, get_event_avatar from gsuid_core.utils.image.image_tools import CustomizeImage, get_event_avatar
from ..resource.RESOURCE_PATH import CU_BG_PATH, CHAR_ICON_PATH from ..resource.RESOURCE_PATH import CHAR_ICON_PATH, CU_BG_PATH
BG_PATH = Path(__file__).parent / "bg" BG_PATH = Path(__file__).parent / "bg"
NM_BG_PATH = BG_PATH / "nm_bg" NM_BG_PATH = BG_PATH / "nm_bg"
@ -13,27 +13,19 @@ TEXT_PATH = Path(__file__).parent / "texture2d"
NATURE_ICON_PATH = Path(__file__).parent / "icon_nature" NATURE_ICON_PATH = Path(__file__).parent / "icon_nature"
elements = { elements = {
"ice": Image.open( "ice": Image.open(NATURE_ICON_PATH / "IconNatureColorIce.png").convert("RGBA"),
NATURE_ICON_PATH / "IconNatureColorIce.png" "fire": Image.open(NATURE_ICON_PATH / "IconNatureColorFire.png").convert("RGBA"),
).convert("RGBA"), "imaginary": Image.open(NATURE_ICON_PATH / "IconNatureColorImaginary.png").convert(
"fire": Image.open( "RGBA"
NATURE_ICON_PATH / "IconNatureColorFire.png" ),
).convert("RGBA"), "quantum": Image.open(NATURE_ICON_PATH / "IconNatureColorQuantum.png").convert(
"imaginary": Image.open( "RGBA"
NATURE_ICON_PATH / "IconNatureColorImaginary.png" ),
).convert("RGBA"), "lightning": Image.open(NATURE_ICON_PATH / "IconNatureColorThunder.png").convert(
"quantum": Image.open( "RGBA"
NATURE_ICON_PATH / "IconNatureColorQuantum.png" ),
).convert("RGBA"), "wind": Image.open(NATURE_ICON_PATH / "IconNatureColorWind.png").convert("RGBA"),
"lightning": Image.open( "physical": Image.open(NATURE_ICON_PATH / "IconNaturePhysical.png").convert("RGBA"),
NATURE_ICON_PATH / "IconNatureColorThunder.png"
).convert("RGBA"),
"wind": Image.open(
NATURE_ICON_PATH / "IconNatureColorWind.png"
).convert("RGBA"),
"physical": Image.open(
NATURE_ICON_PATH / "IconNaturePhysical.png"
).convert("RGBA"),
} }
if list(CU_BG_PATH.iterdir()) != []: if list(CU_BG_PATH.iterdir()) != []:
@ -55,7 +47,7 @@ async def get_simple_bg(
def get_footer(): def get_footer():
return Image.open(TEXT_PATH / 'footer.png') return Image.open(TEXT_PATH / "footer.png")
async def _get_event_avatar(event: Event) -> Image.Image: async def _get_event_avatar(event: Event) -> Image.Image:

View File

@ -181,7 +181,7 @@ class MysApi(_MysApi):
url = self.MAPI["STAR_RAIL_GACHA_LOG_URL"] url = self.MAPI["STAR_RAIL_GACHA_LOG_URL"]
game_biz = "hkrpg_cn" game_biz = "hkrpg_cn"
data = await self._mys_request( data = await self._mys_request(
url=url + f'?authkey={authkey}', url=url + f"?authkey={authkey}",
method="GET", method="GET",
header=header, header=header,
params={ params={

View File

@ -2,9 +2,8 @@ from typing import Optional
from starrail_damage_cal.excel.model import CharAlias from starrail_damage_cal.excel.model import CharAlias
from starrail_damage_cal.map.SR_MAP_PATH import ( from starrail_damage_cal.map.SR_MAP_PATH import (
SetId2Name,
EquipmentID2Name, EquipmentID2Name,
EquipmentID2EnName, SetId2Name,
avatarId2Name, avatarId2Name,
avatarId2Rarity, avatarId2Rarity,
) )
@ -17,10 +16,6 @@ async def name_to_relic_set_id(name: str):
return None return None
async def avatar_id_to_name(avatar_id: str) -> str:
return avatarId2Name[avatar_id]
async def name_to_avatar_id(name: str) -> str: async def name_to_avatar_id(name: str) -> str:
avatar_id = "" avatar_id = ""
for i in avatarId2Name: for i in avatarId2Name:
@ -56,10 +51,6 @@ async def alias_to_weapon_name(weapon_name: str) -> str:
return weapon_name return weapon_name
async def weapon_id_to_name(weapon_id: str) -> str:
return EquipmentID2Name[weapon_id]
async def name_to_weapon_id(name: str) -> str: async def name_to_weapon_id(name: str) -> str:
weapon_id = "" weapon_id = ""
for i in EquipmentID2Name: for i in EquipmentID2Name:
@ -67,16 +58,3 @@ async def name_to_weapon_id(name: str) -> str:
weapon_id = i weapon_id = i
break break
return weapon_id return weapon_id
async def weapon_id_to_en_name(weapon_id: str) -> str:
return EquipmentID2EnName[weapon_id]
async def en_name_to_weapon_id(name: str) -> str:
weapon_id = ""
for i in EquipmentID2EnName:
if EquipmentID2EnName[i] == name:
weapon_id = i
break
return weapon_id