summaryrefslogtreecommitdiff
path: root/ATRI/plugins/plugin_rich
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/plugins/plugin_rich')
-rw-r--r--ATRI/plugins/plugin_rich/__init__.py182
1 files changed, 93 insertions, 89 deletions
diff --git a/ATRI/plugins/plugin_rich/__init__.py b/ATRI/plugins/plugin_rich/__init__.py
index 99026a8..51b86e8 100644
--- a/ATRI/plugins/plugin_rich/__init__.py
+++ b/ATRI/plugins/plugin_rich/__init__.py
@@ -18,11 +18,10 @@ from nonebot.log import logger
from nonebot.plugin import on_message
from nonebot.adapters.cqhttp import Bot, Event
-from utils.utils_banList import banList
+from utils.utils_times import countX
+from utils.utils_rule import check_banlist
from utils.utils_request import request_get
-
-from .body import dec, enc
-
+from .body import dec
BILI_REPORT_FORMAT = """[{aid}] Info:
Title: {title}
@@ -33,64 +32,64 @@ Link:
{aid_link}
{bid_link}"""
-bilibiliRich = on_message()
+bilibiliRich = on_message(rule=check_banlist())
+b_list = []
+
[email protected]() # type: ignore
[email protected]() # type: ignore
async def _(bot: Bot, event: Event, state: dict) -> None:
- user = str(event.user_id)
- group = str(event.group_id)
+ global b_list
+ user = event.user_id
+ msg = str(event.message)
+
+ # 防刷屏机制:回复次数达到五次自动忽略下一次
+ if countX(b_list, user) == 5:
+ return
+
+ if "qqdocurl" not in msg:
+ try:
+ bv = re.findall(r"(BV\w+)", msg)
+ except:
+ return
+ else:
+ bvURL = re.findall(r"(........b23...\S+\=)", msg)
- if banList(user, group):
- msg = str(event.message)
+ try:
+ r = requests.get(bvURL[0], stream=True, allow_redirects=True)
+ except:
+ logger.waring("Get BV ERROR. (Request ERROR)")
+ return
- if "qqdocurl" not in msg:
- try:
- bv = re.findall(r"(BV\w+)", msg)
- except:
- return
- else:
- bvURL = re.findall(r"(........b23...\S+\=)", msg)
+ bv = re.findall(r"(BV\w+)", r.url)
- try:
- r = requests.get(bvURL[0], stream=True, allow_redirects = True)
- except:
- logger.waring("Get BV ERROR. (Request ERROR)")
- return
+ if bv:
+ aid = str(dec(bv[0]))
+ ad = 'av' + aid
+ URL = f'https://api.imjad.cn/bilibili/v2/?aid={aid}'
- bv = re.findall(r"(BV\w+)", r.url)
-
- if bv:
- aid = str(dec(bv[0]))
- ad = 'av' + aid
- URL = f'https://api.imjad.cn/bilibili/v2/?aid={aid}'
-
- try:
- res = request_get(URL)
- except:
- logger.waring("Request ERROR")
- return
-
- data = json.loads(res)
- msg = BILI_REPORT_FORMAT.format(
- title = data["data"]["title"],
-
- view = data["data"]["stat"]["view"],
- coin = data["data"]["stat"]["coin"],
- share = data["data"]["stat"]["share"],
- like = data["data"]["stat"]["like"],
-
- bid = data["data"]["bvid"],
- bid_link = data["data"]["short_link"],
-
- aid = ad,
- aid_link = f'https://b23.tv/{ad}'
- )
-
- await bilibiliRich.finish(msg)
-
- else:
+ try:
+ res = request_get(URL)
+ except:
+ logger.waring("Request ERROR")
return
+ data = json.loads(res)
+ msg = BILI_REPORT_FORMAT.format(title=data["data"]["title"],
+ view=data["data"]["stat"]["view"],
+ coin=data["data"]["stat"]["coin"],
+ share=data["data"]["stat"]["share"],
+ like=data["data"]["stat"]["like"],
+ bid=data["data"]["bvid"],
+ bid_link=data["data"]["short_link"],
+ aid=ad,
+ aid_link=f'https://b23.tv/{ad}')
+
+ b_list.append(user)
+ await bilibiliRich.finish(msg)
+
+ else:
+ return
+
CLOUDMUSIC_REPORT_FORMAT = """Status: {status}
Song id: {id}
@@ -98,40 +97,45 @@ Br: {br}
Download: {url}
MD5: {md5}"""
-cloudmusicRich = on_message()
+cloudmusicRich = on_message(rule=check_banlist())
+c_list = []
+
[email protected]() # type: ignore
[email protected]() # type: ignore
async def _(bot: Bot, event: Event, state: dict) -> None:
- user = str(event.user_id)
- group = str(event.group_id)
-
- if banList(user, group):
- msg = str(event.message)
-
- if "music.163.com" in msg:
- music_id = re.findall(r"song\S+\/|id=\S+\&", msg)
-
- if music_id:
- music_id = str(music_id[0])
- music_id = re.findall(r"-?[1-9]\d*", music_id)
- URL = f'https://api.imjad.cn/cloudmusic/?type=song&id={music_id[0]}&br=320000'
-
- try:
- res = request_get(URL)
- except:
- logger.waring("Request ERROR")
- return
-
- data = json.loads(res)
- msg = CLOUDMUSIC_REPORT_FORMAT.format(
- status = data["code"],
- id = data["data"][0]["id"],
- br = data["data"][0]["br"],
- url = data["data"][0]["url"],
- md5 = data["data"][0]["md5"],
- )
-
- await cloudmusicRich.finish(msg)
-
- else:
- return
+ global c_list
+ user = event.user_id
+ msg = str(event.message)
+
+ # 防刷屏机制:回复次数达到五次自动忽略下一次
+ if countX(b_list, user) == 5:
+ return
+
+ if "music.163.com" in msg:
+ music_id = re.findall(r"song\S+\/|id=\S+\&", msg)
+
+ if music_id:
+ music_id = str(music_id[0])
+ music_id = re.findall(r"-?[1-9]\d*", music_id)
+ URL = f'https://api.imjad.cn/cloudmusic/?type=song&id={music_id[0]}&br=320000'
+
+ try:
+ res = request_get(URL)
+ except:
+ logger.waring("Request ERROR")
+ return
+
+ data = json.loads(res)
+ msg = CLOUDMUSIC_REPORT_FORMAT.format(
+ status=data["code"],
+ id=data["data"][0]["id"],
+ br=data["data"][0]["br"],
+ url=data["data"][0]["url"],
+ md5=data["data"][0]["md5"],
+ )
+
+ c_list.append(user)
+ await cloudmusicRich.finish(msg)
+
+ else:
+ return