From 1eb94ec9b12d5fe6361d093f9bd5aec9036c2279 Mon Sep 17 00:00:00 2001 From: CMHopeSunshine <277073121@qq.com> Date: Mon, 14 Mar 2022 14:18:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A8ys=E5=8A=9F=E8=83=BD=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E7=A7=81=E8=81=8A&fix=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/Genshin_Paimon/gacha/__init__.py | 2 +- .../Genshin_Paimon/gacha/gacha_wish.py | 4 +- hoshino/modules/Genshin_Paimon/gacha/util.py | 293 ------------------ .../Genshin_Paimon/player_card/get_img.py | 6 +- .../res/reliquaries/温迪10221.png | Bin 0 -> 4449 bytes .../res/reliquaries/温迪10224.png | Bin 0 -> 3787 bytes .../res/reliquaries/温迪10225.png | Bin 0 -> 5823 bytes .../UI_EquipIcon_Claymore_Blackrock.png | Bin 0 -> 67160 bytes .../Genshin_Paimon/user_data/__init__.py | 53 ++-- hoshino/modules/Genshin_Paimon/util.py | 27 +- hoshino/service.py | 7 +- requirements.txt | 14 +- 12 files changed, 72 insertions(+), 334 deletions(-) delete mode 100644 hoshino/modules/Genshin_Paimon/gacha/util.py create mode 100644 hoshino/modules/Genshin_Paimon/res/reliquaries/温迪10221.png create mode 100644 hoshino/modules/Genshin_Paimon/res/reliquaries/温迪10224.png create mode 100644 hoshino/modules/Genshin_Paimon/res/reliquaries/温迪10225.png create mode 100644 hoshino/modules/Genshin_Paimon/res/weapon/UI_EquipIcon_Claymore_Blackrock.png diff --git a/hoshino/modules/Genshin_Paimon/gacha/__init__.py b/hoshino/modules/Genshin_Paimon/gacha/__init__.py index a6c17da..69ab047 100644 --- a/hoshino/modules/Genshin_Paimon/gacha/__init__.py +++ b/hoshino/modules/Genshin_Paimon/gacha/__init__.py @@ -3,7 +3,7 @@ from hoshino import R,MessageSegment from hoshino.typing import CQEvent, Message from hoshino.util import PriFreqLimiter import hoshino -from .util import Dict +from ..util import Dict from hoshino import aiorequests from .gacha_role import * from .gacha_wish import more_ten diff --git a/hoshino/modules/Genshin_Paimon/gacha/gacha_wish.py b/hoshino/modules/Genshin_Paimon/gacha/gacha_wish.py index d037ee5..b8d12c5 100644 --- a/hoshino/modules/Genshin_Paimon/gacha/gacha_wish.py +++ b/hoshino/modules/Genshin_Paimon/gacha/gacha_wish.py @@ -3,7 +3,7 @@ import re, copy ,json from enum import Enum from pathlib import Path from PIL import Image, PngImagePlugin, ImageDraw, ImageFont -from .util import filter_list, pil2b64,dict_to_object +from ..util import pil2b64 import os from .gacha_role import init_user_info, user_info, save_user_info @@ -249,5 +249,5 @@ async def more_ten(uid, gacha_data, num, sd): for i in range(0, num): item_img = await ten(uid, gacha_data, sd) img.paste(item_img, (0, 575 * i)) - return pil2b64(img) + return pil2b64(img, 75) diff --git a/hoshino/modules/Genshin_Paimon/gacha/util.py b/hoshino/modules/Genshin_Paimon/gacha/util.py deleted file mode 100644 index 48fb5c8..0000000 --- a/hoshino/modules/Genshin_Paimon/gacha/util.py +++ /dev/null @@ -1,293 +0,0 @@ -# -*- coding: UTF-8 -*- -import base64 -import datetime -import functools -import hashlib -import inspect -import json -import os -import re -import time -from io import BytesIO -from pathlib import Path - -import aiofiles -import yaml -from hoshino import CanceledException, aiorequests, priv, trigger -from nonebot import * -from PIL import ImageFont -from sqlitedict import SqliteDict - -bot = get_bot() - -try: - import locale - - # 解决部分系统无法格式化中文时间问题 - locale.setlocale(locale.LC_CTYPE, 'chinese') -except Exception as e: - pass - -class Dict(dict): - __setattr__ = dict.__setitem__ - __getattr__ = dict.__getitem__ - -def md5(context): - return hashlib.md5(context).hexdigest() - -def dict_to_object(dict_obj): - if not isinstance(dict_obj, dict): - return dict_obj - inst = Dict() - for k, v in dict_obj.items(): - inst[k] = dict_to_object(v) - return inst - - -# 获取字符串中的关键字 -def get_msg_keyword(keyword, msg, is_first=False): - msg = msg[0] if isinstance(msg, tuple) else msg - res = re.split(format_reg(keyword, is_first), msg, 1) - res = tuple(res[::-1]) if len(res) == 2 else False - return ''.join(res) if is_first and res else res - - -# 格式化配置中的正则表达式 -def format_reg(keyword, is_first=False): - keyword = keyword if isinstance(keyword, list) else [keyword] - return f"{'|'.join([f'^{i}' for i in keyword] if is_first else keyword)}" - - -def get_path(*paths): - return os.path.join(os.path.dirname(__file__), *paths) - - -db = {} - - -# 初始化数据库 -def init_db(db_dir, db_name='db.sqlite', tablename='unnamed') -> SqliteDict: - db_cache_key = db_name + tablename - if db.get(db_cache_key): - return db[db_cache_key] - db[db_cache_key] = SqliteDict(get_path(db_dir, db_name), - tablename=tablename, - encode=json.dumps, - decode=json.loads, - autocommit=True) - return db[db_cache_key] - - -# 寻找MessageSegment里的某个关键字的位置 -def find_ms_str_index(ms, keyword, is_first=False): - for index, item in enumerate(ms): - if item['type'] == 'text' and re.search(format_reg(keyword, is_first), - item['data']['text']): - return index - return -1 - - -def filter_list(plist, func): - return list(filter(func, plist)) - - -def list_split(items, n): - return [items[i:i + n] for i in range(0, len(items), n)] - - -def is_group_admin(ctx): - return ctx['sender']['role'] in ['owner', 'admin', 'administrator'] - - -def get_next_day(): - return time.mktime((datetime.date.today() + - datetime.timedelta(days=+1)).timetuple()) + 1000 - - -def get_font(size, w='85'): - return ImageFont.truetype(get_path('assets', 'font', f'HYWenHei {w}W.ttf'), - size=size) - - -def pil2b64(data): - bio = BytesIO() - data = data.convert("RGB") - data.save(bio, format='JPEG', quality=75) - base64_str = base64.b64encode(bio.getvalue()).decode() - return 'base64://' + base64_str - - -private_prefix = [] - - -# support private message -@message_preprocessor -async def private_handler(bot, ev, _): - if ev.detail_type != 'private': - return - for t in trigger.chain: - for service in t.find_handler(ev): - sv = service.sv - if sv in private_prefix: - if priv.get_user_priv(ev) >= priv.NORMAL: - try: - await service.func(bot, ev) - except CanceledException: - raise - sv.logger.info( - f'Private Message {ev.message_id} triggered {service.func.__name__}.' - ) - - -def support_private(sv): - def wrap(func): - private_prefix.append(sv) - return func - - return wrap - - -def cache(ttl=datetime.timedelta(hours=1), **kwargs): - def wrap(func): - cache_data = {} - - @functools.wraps(func) - async def wrapped(*args, **kw): - nonlocal cache_data - bound = inspect.signature(func).bind(*args, **kw) - bound.apply_defaults() - ins_key = '|'.join(['%s_%s' % (k, v) for k, v in bound.arguments.items()]) - default_data = {"time": None, "value": None} - data = cache_data.get(ins_key, default_data) - - now = datetime.datetime.now() - if not data['time'] or now - data['time'] > ttl: - try: - data['value'] = await func(*args, **kw) - data['time'] = now - cache_data[ins_key] = data - except Exception as e: - raise e - - return data['value'] - - return wrapped - - return wrap - - -async def github(path): - try: - url = f'https://cdn.jsdelivr.net/gh/{path}' - res = await aiorequests.get(url, timeout=10) - return await res.content - except aiorequests.exceptions.ConnectionError: - raise - - -gh_end_point = 'pcrbot/erinilis-modules/egenshin/' - - -async def gh_json(file_path): - return json.loads(await github(gh_end_point + file_path), object_hook=Dict) - - -async def gh_file(file_path, **kw): - kw['url'] = gh_end_point + file_path - return await require_file(**kw) - - -async def require_file(file=None, - r_mode='rb', - encoding=None, - url=None, - use_cache=True, - w_mode='wb', - timeout=30): - async def read(): - async with aiofiles.open(file, r_mode, encoding=encoding) as fp: - return await fp.read() - - if not any([file, url]): - raise ValueError('file or url not null') - - file = file and Path(file) - - if file and file.exists() and use_cache: - return await read() - - if not url: - raise ValueError('url not null') - - try: - res = await aiorequests.get(url, timeout=timeout) - content = await res.content - except aiorequests.exceptions.ConnectionError: - raise - - if file: - os.makedirs(os.path.dirname(file), exist_ok=True) - async with aiofiles.open(file, w_mode, encoding=encoding) as fp: - await fp.write(content) - return content - return await read() - - -@cache(ttl=datetime.timedelta(minutes=30), arg_key='url') -async def cache_request_json(url): - res = await aiorequests.get(url, timeout=10) - return await res.json(object_hook=Dict) - - -@cache(ttl=datetime.timedelta(hours=24)) -async def get_game_version(): - url = 'https://sdk-static.mihoyo.com/hk4e_cn/mdk/launcher/api/resource?key=eYd89JmJ&launcher_id=18' - res = await aiorequests.get(url, timeout=10) - json_data = await res.json(object_hook=Dict) - if json_data.retcode != 0: - raise Exception(json_data.message) - latest = json_data.data.game.latest - return latest.version - - -running = {} - - -class process: - def __init__(self, key, timeout=0): - self.key = key - self.timeout = timeout - - def get(self): - return running.get(self.key, {}) - - def start(self): - running[self.key] = {'run': True, 'start_time': time.time()} - return self - - def ok(self): - if running.get(self.key): - del running[self.key] - - def is_run(self): - run = self.get() - if not run: - return False - if run.get('start_time') + self.timeout < time.time( - ) and not self.timeout == 0: - self.ok() - return False - return bool(run.get('run')) - - -async def get_all_group(): - for self_id in bot._wsr_api_clients.keys(): - group = await bot.get_group_list(self_id=self_id) - for group_info in group: - yield group_info - - -async def get_group_info(group_id): - async for group in get_all_group(): - if int(group_id) == group['group_id']: - return dict_to_object(group) diff --git a/hoshino/modules/Genshin_Paimon/player_card/get_img.py b/hoshino/modules/Genshin_Paimon/player_card/get_img.py index c4f0174..0820330 100644 --- a/hoshino/modules/Genshin_Paimon/player_card/get_img.py +++ b/hoshino/modules/Genshin_Paimon/player_card/get_img.py @@ -180,7 +180,7 @@ async def draw_player_card(data, chara_data, uid, nickname="旅行者"): bg_img.alpha_composite(chara_card.resize((180, 249)), (840 + (i - 4) * 205, 974)) elif i > 8: break - bg_img = pil2b64(bg_img, 75) + bg_img = pil2b64(bg_img, 80) bg_img = MessageSegment.image(bg_img) return bg_img @@ -262,7 +262,7 @@ async def draw_all_chara_card(data, uid): n += 1 bg_img.paste(bg_bottom,(0,382+col*474-50)) - bg_img = pil2b64(bg_img, 50) + bg_img = pil2b64(bg_img, 55) bg_img = MessageSegment.image(bg_img) return bg_img @@ -426,6 +426,6 @@ async def draw_chara_card(data, skill_data, chara_name, uid): i += 1 bg_draw.text((330, 371), 'Created by 惜月の小派蒙', font=get_font(20), fill='white') - bg_img = pil2b64(bg_img, 65) + bg_img = pil2b64(bg_img, 70) bg_img = MessageSegment.image(bg_img) return bg_img \ No newline at end of file diff --git a/hoshino/modules/Genshin_Paimon/res/reliquaries/温迪10221.png b/hoshino/modules/Genshin_Paimon/res/reliquaries/温迪10221.png new file mode 100644 index 0000000000000000000000000000000000000000..e5f31c0e7c77aab529ff142ab5ebc4827be98a17 GIT binary patch literal 4449 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 E2S{v85&!@I literal 0 HcmV?d00001 diff --git a/hoshino/modules/Genshin_Paimon/res/reliquaries/温迪10224.png b/hoshino/modules/Genshin_Paimon/res/reliquaries/温迪10224.png new file mode 100644 index 0000000000000000000000000000000000000000..8a37548e2066e832357c02928dbc153523bff1b8 GIT binary patch literal 3787 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 literal 0 HcmV?d00001 diff --git a/hoshino/modules/Genshin_Paimon/res/reliquaries/温迪10225.png b/hoshino/modules/Genshin_Paimon/res/reliquaries/温迪10225.png new file mode 100644 index 0000000000000000000000000000000000000000..c77bac18336096ad3cf7391bdedbc5a483b73dae GIT binary patch literal 5823 zcmWky2Rzj8AAjypRtO0R>CD7sXJlk&mzi>8Z?ZQTA$yOA{wQbfJ+rckWSo7DWH+t& zKfmYo`rf_n?)$yx`+Yv2_j;mrv{WvUGm`@VE~%+1>cMyU{|?d%@HPJLkP-k4k!p(a zk9=}>9{cJ%GHf~Dod|TP^q8y>7nzA0mopO45dO9Gatc+hARQ)U)Zv(BaD+)f&&K2a~(~%xBzcL;H zqT}MyZW~o$igb8H5ONnm)5iTI-)C$f5kHV1`0)Ls9JS-j z$Wel|0A3+8)SELn6bjHY!^02ck}W@-{X4mj09o9DK_2Yy-@gx4Qc`kZq>NNZx5BC@ zE62FZHy!L@4a&(c0)bOD6cHi;!G)0fH6lD7o_8FWIE@1EJ>G`0hrdCt$Fnt^u5iu05V4nDh zFODX*kFP+7r_b%QV8^!JNx(WSt@Pn_T-58)APY|KOgs16a*gAX}x zaB`9ifBeXSz;s8k1s$HoT)CA#MEDWm*WS_5($ey>kcUp5rlY&Nd;Ip(wnJkxGc#UL z<=l8phaT41v)PniN%yAmTQ?w2b1l;R)s+2?ot<5?|LNgD>BPi@xz9&S=_|BG=}I)j zH$d0P*Yd|w`M&E}1dgOZoTFH+r>Ey#5)u-_oSYmf-k6$6k@QQS@}&m@Rx!Nr@$S=v2cMlD<#Td#yCkckCVr@-Th)(_j&h4T&o_~BdC&3y3}0G|&sKRO zvbLs1%)r2)WBT*w17j;If;=oPTA!`958qEl3fQH*wiERqJ=*?paG>@9ts#L%qfHGA z{`^k6Wq420Yum`!*Y^kw&?#h9M*NiVcz(dnLKWpH!6J|upu7OOV5^+upPz1oVht

1kIOo?KKs+y8As2+@O5vo9oOVeP){)x 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 uJvw?ymZ?y%48W_!xKsJbrSk!iLzgEpYL6EN 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 priv.NORMAL: - try: - await service.func(bot, ev) - except CanceledException: - raise - sv.logger.info( - f'Private Message {ev.message_id} triggered {service.func.__name__}.' - ) +# @message_preprocessor +# async def private_handler(bot, ev, _): +# if ev.detail_type != 'private': +# return +# for t in trigger.chain: +# for service in t.find_handler(ev): +# sv = service.sv +# if sv in private_prefix: +# if priv.get_user_priv(ev) >= priv.NORMAL: +# try: +# await service.func(bot, ev) +# except CanceledException: +# raise +# sv.logger.info( +# f'Private Message {ev.message_id} triggered {service.func.__name__}.' +# ) -def support_private(sv): - def wrap(func): - private_prefix.append(sv) - return func - return wrap +# def support_private(sv): +# def wrap(func): +# private_prefix.append(sv) +# return func +# return wrap -@support_private(sv) +# @support_private(sv) @sv.on_prefix(('原神绑定','ysb')) async def bind(bot,ev): msg = ev.message.extract_plain_text().strip().split('#') @@ -53,3 +53,10 @@ async def bind(bot,ev): cookie = msg[1] res = await bind_cookie(qq,uid,cookie) await bot.send(ev,res,at_sender=True) + +# @support_private(sv) +@sv.on_prefix('添加公共cookie') +async def bing_public(bot,ev): + cookie = ev.message.extract_plain_text().strip() + res = await bind_public_cookie(cookie) + await bot.send(ev,res,at_sender=True) \ No newline at end of file diff --git a/hoshino/modules/Genshin_Paimon/util.py b/hoshino/modules/Genshin_Paimon/util.py index f951914..f44f9d6 100644 --- a/hoshino/modules/Genshin_Paimon/util.py +++ b/hoshino/modules/Genshin_Paimon/util.py @@ -13,6 +13,7 @@ import datetime import functools import inspect +# user_cookies.json数据文件模版,如没有.json文件就会按这个模版生成文件 user_cookies_example = { "通用": [ { @@ -50,7 +51,7 @@ def save_data(): except: traceback.print_exc() -# 缓存装饰器 +# 缓存装饰器 ttl为过期时间 参数use_cache决定是否使用缓存,默认为True def cache(ttl=datetime.timedelta(hours=1), **kwargs): def wrap(func): cache_data = {} @@ -81,7 +82,11 @@ def cache(ttl=datetime.timedelta(hours=1), **kwargs): return wrap -# 图片转b64 +class Dict(dict): + __setattr__ = dict.__setitem__ + __getattr__ = dict.__getitem__ + +# 图片转b64,q为质量(压缩比例) def pil2b64(data, q=85): bio = BytesIO() data = data.convert("RGB") @@ -95,7 +100,7 @@ def md5(text: str) -> str: md5.update(text.encode()) return md5.hexdigest() -# 米游社headers的ds_token +# 米游社headers的ds_token,对应版本2.11.1 def get_ds(q="", b=None) -> str: if b: br = json.dumps(b) @@ -122,7 +127,7 @@ def get_headers(cookie, q='',b=None): #print(headers) return headers -# 检查cookie是否有效 +# 检查cookie是否有效,通过查看个人主页是否返回ok来判断 async def check_cookie(cookie): url = 'https://bbs-api.mihoyo.com/user/wapi/getUserFullInfo?gids=2' headers ={ @@ -140,7 +145,7 @@ async def check_cookie(cookie): else: return True -# 通过qq号获取cookie +# 通过qq号获取最后查询的uid def get_uid_by_qq(qq): if qq not in user_cookies['私人']: return None @@ -184,6 +189,15 @@ async def bind_cookie(qq, uid, cookie): save_data() return '绑定成功啦!' +# 绑定cookie到公共cookie池 +async def bind_public_cookie(cookie): + if not await check_cookie(cookie): + return '这cookie没有用哦,检查一下是不是复制错了或者过期了(试试重新登录米游社再获取)' + else: + user_cookies['通用'].append({"cookie": cookie, "no": len(user_cookies['通用']) + 1}) + save_data() + return '添加公共cookie成功' + # 获取公共池可用的cookie async def get_public_cookie(): for cookie in user_cookies['通用']: @@ -195,7 +209,7 @@ async def get_public_cookie(): logger.error('--CMgenshin:原神查询公共cookie池已全部失效--') return None -# 获取可用的cookie +# 获取可用的cookie,优先获取私人cookie,没有则获取公共池cookie async def get_cookie(qq, uid, only_private = False, only_match_uid = False): if qq not in user_cookies['私人']: if only_private: @@ -221,4 +235,5 @@ async def get_cookie(qq, uid, only_private = False, only_match_uid = False): else: return await get_public_cookie() +# 初始化读取cookie数据 load_data() \ No newline at end of file diff --git a/hoshino/service.py b/hoshino/service.py index 82455db..aaddad5 100644 --- a/hoshino/service.py +++ b/hoshino/service.py @@ -159,8 +159,11 @@ class Service: def _check_all(self, ev: CQEvent): - gid = ev.group_id - return self.check_enabled(gid) and not priv.check_block_group(gid) and priv.check_priv(ev, self.use_priv) + if ev.detail_type == 'private': + return True + else: + gid = ev.group_id + return self.check_enabled(gid) and not priv.check_block_group(gid) and priv.check_priv(ev, self.use_priv) async def get_enable_groups(self) -> dict: """获取所有启用本服务的群 diff --git a/requirements.txt b/requirements.txt index 85a72f9..d654b6e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,15 +1,21 @@ nonebot[scheduler]~=1.8.0 aiocqhttp~=1.4.0 lxml>=4.4.1 -pytz>=2019.3 +pytz>=2021.3 requests>=2.22.0 -sogou_tr_free>=0.0.6 zhconv>=1.4.0 -Pillow>=6.2.1 +Pillow>=8.4.0 matplotlib>=3.2.0 numpy>=1.18.0 beautifulsoup4>=4.9.0 pygtrie>=2.0 tinydb>=4.0 aiohttp>=3.6 -peony-twitter[all]~=1.1.7 +openpyxl>=3.0.9 +psutil>=5.4.3 +PyYAML>=5.4.1 +functools>=0.5 +uuid>=1.30 +filetype +imageio +loguru \ No newline at end of file