From 4bb0faa49e705f1412594b2b0f752d4893c843af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wuyi=E6=97=A0=E7=96=91?= <444835641@qq.com> Date: Sun, 6 Mar 2022 00:04:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9Axxx=E7=94=A8?= =?UTF-8?q?=E4=BB=80=E4=B9=88|=E8=83=BD=E7=94=A8=E5=95=A5|=E6=80=8E?= =?UTF-8?q?=E4=B9=88=E5=85=BB&xxx=E8=83=BD=E7=BB=99=E8=B0=81|=E7=BB=99?= =?UTF-8?q?=E8=B0=81=E7=94=A8|=E8=A6=81=E7=BB=99=E8=B0=81|=E8=B0=81?= =?UTF-8?q?=E8=83=BD=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Genshin All Char.xlsx | Bin 0 -> 25810 bytes __init__.py | 23 ++++++++++- get_mihoyo_bbs_data.py | 91 +++++++++++++++++++++++++++++++++++++++-- requirements.txt | 3 +- 4 files changed, 112 insertions(+), 5 deletions(-) create mode 100644 Genshin All Char.xlsx diff --git a/Genshin All Char.xlsx b/Genshin All Char.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8f67b55ca5ff0446556d086e73609622b09e2f15 GIT binary patch literal 25810 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

3IwC*Qi-YxO_bp(?VZaKIa~p|K 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 Zb3>&h2X|!wP(V>Y=^;Wv8R>y>{{dl-Kt2Ef literal 0 HcmV?d00001 diff --git a/__init__.py b/__init__.py index 7b01b304..24fe9a54 100644 --- a/__init__.py +++ b/__init__.py @@ -18,6 +18,23 @@ FILE_PATH = os.path.join(os.path.dirname(__file__), 'mys') INDEX_PATH = os.path.join(FILE_PATH, 'index') Texture_PATH = os.path.join(FILE_PATH, 'texture2d') +@sv.on_regex('[\u4e00-\u9fa5]+(用什么|能用啥|怎么养)') +async def send_char_adv(bot: HoshinoBot, ev: CQEvent): + try: + name = str(ev.message).strip().replace(" ","")[:-3] + im = await char_adv(name) + await bot.send(im) + except Exception as e: + logger.exception("获取建议失败。") + +@sv.on_regex('[\u4e00-\u9fa5]+(能给谁|给谁用|要给谁|谁能用)') +async def send_weapon_adv(bot: HoshinoBot, ev: CQEvent): + try: + name = str(ev.message).strip().replace(" ","")[:-3] + im = await weapon_adv(name) + await bot.send(im) + except Exception as e: + logger.exception("获取建议失败。") @sv.on_prefix('语音') async def send_audio(bot: HoshinoBot, ev: CQEvent): @@ -26,8 +43,12 @@ async def send_audio(bot: HoshinoBot, ev: CQEvent): message = message.replace(' ', "") name = ''.join(re.findall('[\u4e00-\u9fa5]', message)) im = await audio_wiki(name, message) - await bot.send(ev, im) + if name == "列表": + await bot.send(ev, f"[CQ:image,file={im}]") + else: + await bot.send(ev, f"[CQ:recode,file={im}]") except ActionFailed as e: + logger.exception("获取语音失败") await bot.send(ev, "机器人发送消息失败:{}".format(e)) except Exception as e: logger.exception("获取语音失败") diff --git a/get_mihoyo_bbs_data.py b/get_mihoyo_bbs_data.py index 38814437..fcb49bc6 100644 --- a/get_mihoyo_bbs_data.py +++ b/get_mihoyo_bbs_data.py @@ -5,6 +5,7 @@ import random import re import sqlite3 from base64 import b64encode +from openpyxl import load_workbook from io import BytesIO import requests @@ -150,6 +151,90 @@ audio_json = '''{ "1020000":["1020000_01"] }''' +char_adv_im = '''【{}】 +【五星武器】:{} +【四星武器】:{} +【三星武器】:{} +【圣遗物】: +{}''' + +async def weapon_adv(name): + char_adv_path = os.path.join(FILE_PATH,"Genshin All Char.xlsx") + wb = load_workbook(char_adv_path) + ws = wb.active + + weapon_name = "" + char_list = [] + for c in range(2,5): + for r in range(2,300): + if ws.cell(r,c).value: + #if all(i in ws.cell(r,c).value for i in name): + if name in ws.cell(r,c).value: + weapon_name = ws.cell(r,c).value + char_list.append(ws.cell(2+((r-2)//5)*5,1).value) + + if char_list != []: + im = ','.join(char_list) + im = im + "可能会用到【{}】".format(weapon_name) + else: + im = "没有角色能使用【{}】".format(weapon_name) + return im + +async def char_adv(name): + char_adv_path = os.path.join(FILE_PATH,"Genshin All Char.xlsx") + wb = load_workbook(char_adv_path) + ws = wb.active + char_list = ws["A"] + index = None + for i in char_list: + if i.value: + if all(g in i.value for g in name): + #if name in i.value: + index = i.row + char_name = i.value + if index: + weapon_5star = "" + for i in range(index,index+5): + if ws.cell(i,2).value: + weapon_5star += ws.cell(i,2).value + ">" + if weapon_5star != "": + weapon_5star = weapon_5star[:-1] + else: + weapon_5star = "无推荐" + + weapon_4star = "" + for i in range(index,index+5): + if ws.cell(i,3).value: + weapon_4star += ws.cell(i,3).value + ">" + if weapon_4star != "": + weapon_4star = weapon_4star[:-1] + else: + weapon_4star = "无推荐" + + weapon_3star = "" + for i in range(index,index+5): + if ws.cell(i,4).value: + weapon_3star += ws.cell(i,4).value + ">" + if weapon_3star != "": + weapon_3star = weapon_3star[:-1] + else: + weapon_3star = "无推荐" + + artifacts = "" + for i in range(index,index+5): + if ws.cell(i,5).value: + if ws.cell(i,6).value: + artifacts += ws.cell(i,5).value + "*2" + ws.cell(i,6).value + "*2" + "\n" + else: + artifacts += ws.cell(i,5).value + "*4" + "\n" + + if artifacts != "": + artifacts = artifacts[:-1] + else: + artifacts = "无推荐" + + im = char_adv_im.format(char_name,weapon_5star,weapon_4star,weapon_3star,artifacts) + return im async def deal_ck(mes, qid): aid = re.search(r"account_id=(\d*)", mes) @@ -218,8 +303,8 @@ async def audio_wiki(name, message): tmp_json[_audioid].remove(audioid1) if name == "列表": - im = f'[CQ:image,file=file://{os.path.join(INDEX_PATH, "语音.png")}]' - return im + imgmes = 'base64://' + b64encode(open(os.path.join(INDEX_PATH, "语音.png"), "rb").read()).decode() + return imgmes elif name == "": return "角色名不正确。" else: @@ -230,7 +315,7 @@ async def audio_wiki(name, message): return "语音获取失败" if audio: audios = 'base64://' + b64encode(audio.getvalue()).decode() - return f"[CQ:record,file={audios}]" + return audios async def artifacts_wiki(name): diff --git a/requirements.txt b/requirements.txt index f729b207..6329bb9f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,4 +5,5 @@ Pillow>=8.3.1 wordcloud>=1.8.1 numpy~=1.22.2 beautifulsoup4>=4.10.0 -lxml>=4.7.1 \ No newline at end of file +lxml>=4.7.1 +openpyxl>=3.0.9 \ No newline at end of file