diff options
author | Kyomotoi <[email protected]> | 2021-07-31 16:16:47 +0800 |
---|---|---|
committer | Kyomotoi <[email protected]> | 2021-07-31 16:16:47 +0800 |
commit | 336eb9d9e98b0bee952c27a50820dbdb350bcc03 (patch) | |
tree | 718d5349232bce0d06cc901707bdd8f478c43314 /ATRI/plugins/funny/data_source.py | |
parent | c485985d3be687d17168512de44ea7b744fea7cc (diff) | |
download | ATRI-336eb9d9e98b0bee952c27a50820dbdb350bcc03.tar.gz ATRI-336eb9d9e98b0bee952c27a50820dbdb350bcc03.tar.bz2 ATRI-336eb9d9e98b0bee952c27a50820dbdb350bcc03.zip |
🔥🚚✨
- 移除:laugh.txt,需要时再拉取
- 移动控制台文件至plugins/console目录下
- 新增:
- 和管理贴贴w
- 正式的可视化前端单页
Diffstat (limited to 'ATRI/plugins/funny/data_source.py')
-rw-r--r-- | ATRI/plugins/funny/data_source.py | 59 |
1 files changed, 40 insertions, 19 deletions
diff --git a/ATRI/plugins/funny/data_source.py b/ATRI/plugins/funny/data_source.py index f298683..f29b0be 100644 --- a/ATRI/plugins/funny/data_source.py +++ b/ATRI/plugins/funny/data_source.py @@ -1,50 +1,67 @@ import re +import os from pathlib import Path from random import choice, randint from nonebot.adapters.cqhttp.utils import unescape -from nonebot.adapters.cqhttp.message import MessageSegment from ATRI.service import Service +from ATRI.log import logger from ATRI.exceptions import RequestError +from ATRI.utils import request from ATRI.utils import request, Translate from ATRI.rule import is_in_service +FUNNY_DIR = Path(".") / "data" +os.makedirs(FUNNY_DIR, exist_ok=True) + + __doc__ = """ 乐1乐,莫当真 """ class Funny(Service): + def __init__(self): Service.__init__(self, "乐", __doc__, rule=is_in_service("乐")) - + @staticmethod - def idk_laugh(name: str) -> str: + async def idk_laugh(name: str) -> str: laugh_list = list() - - file_path = Path(".") / "ATRI" / "data" / "database" / "funny" / "laugh.txt" - with open(file_path, encoding="utf-8") as r: + + file_name = "laugh.txt" + path = FUNNY_DIR / file_name + if not path.is_file(): + logger.warning("未发现笑话相关数据,正在下载并保存...") + url = "https://cdn.jsdelivr.net/gh/Kyomotoi/CDN@master/project/ATRI/laugh.txt" + res = await request.get(url) + context = await res.text() # type: ignore + with open(path, "w", encoding="utf-8") as w: + w.write(context) + logger.warning("完成") + + with open(path, "r", encoding="utf-8") as r: for line in r: laugh_list.append(line.strip("\n")) - + rd: str = choice(laugh_list) result = rd.replace("%name", name) return result - + @staticmethod def me_re_you(msg: str) -> tuple: if "我" in msg and "[CQ" not in msg: return msg.replace("我", "你"), True else: return msg, False - + @staticmethod def fake_msg(text: str) -> list: arg = text.split(" ") node = list() - + for i in arg: args = i.split("-") qq = args[0] @@ -53,7 +70,7 @@ class Funny(Service): dic = {"type": "node", "data": {"name": name, "uin": qq, "content": repo}} node.append(dic) return node - + @staticmethod async def eat_what(name: str, msg: str) -> str: EAT_URL = "https://wtf.hiigara.net/api/run/" @@ -62,7 +79,7 @@ class Funny(Service): pattern_1 = r"(今|明|后|大后)天" arg = re.findall(pattern_0, msg)[0] day = re.match(pattern_1, msg).group(0) # type: ignore - + if arg == "中午": a = f"LdS4K6/{randint(0, 1145141919810)}" url = EAT_URL + a @@ -71,11 +88,11 @@ class Funny(Service): data = await data.json() except RequestError: raise RequestError("Request failed!") - + text = Translate(data["text"]).to_simple().replace("今天", day) get_a = re.search(r"非常(.*?)的", text).group(0) # type: ignore result = text.replace(get_a, "") - + elif arg == "晚上": a = f"KaTMS/{randint(0, 1145141919810)}" url = EAT_URL + a @@ -84,13 +101,17 @@ class Funny(Service): data = await data.json() except RequestError: raise RequestError("Request failed!") - + result = Translate(data["text"]).to_simple().replace("今天", day) - + else: rd = randint(1, 10) if rd == 5: - result = ["吃我吧 ❤", "(脸红)请...请享用咱吧......", "都可以哦~不能挑食呢~"] + result = [ + "吃我吧 ❤", + "(脸红)请...请享用咱吧......", + "都可以哦~不能挑食呢~" + ] return choice(result) else: a = f"JJr1hJ/{randint(0, 1145141919810)}" @@ -100,9 +121,9 @@ class Funny(Service): data = await data.json() except RequestError: raise RequestError("Request failed!") - + text = Translate(data["text"]).to_simple().replace("今天", day) get_a = re.match(r"(.*?)的智商", text).group(0) # type: ignore result = text.replace(get_a, f"{name}的智商") - + return result |