summaryrefslogtreecommitdiff
path: root/ATRI/plugins/funny/data_source.py
diff options
context:
space:
mode:
authorKyomotoi <[email protected]>2021-07-31 16:16:47 +0800
committerKyomotoi <[email protected]>2021-07-31 16:16:47 +0800
commit336eb9d9e98b0bee952c27a50820dbdb350bcc03 (patch)
tree718d5349232bce0d06cc901707bdd8f478c43314 /ATRI/plugins/funny/data_source.py
parentc485985d3be687d17168512de44ea7b744fea7cc (diff)
downloadATRI-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.py59
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