diff --git a/configs/config.py b/configs/config.py index 26e831cb..bae52d7f 100644 --- a/configs/config.py +++ b/configs/config.py @@ -12,7 +12,7 @@ USE_CONFIG_FILE = False # API KEY(必要) LOLICON_KEY: str = "" # lolicon(可不填,lolicon已放开api限制) -RSSHUBAPP: str = "https://docs.rsshub.app/" # rsshub +RSSHUBAPP: str = "https://rsshub.app/" # rsshub # 图灵 TL_KEY: List[str] = [] diff --git a/plugins/pixiv/__init__.py b/plugins/pixiv/__init__.py index b946bf42..e6b0f513 100644 --- a/plugins/pixiv/__init__.py +++ b/plugins/pixiv/__init__.py @@ -6,6 +6,8 @@ from .data_source import get_pixiv_urls, download_pixiv_imgs, search_pixiv_urls import time from services.log import logger from nonebot.adapters.cqhttp.exception import NetworkError +from asyncio.exceptions import TimeoutError +from aiohttp.client_exceptions import ClientConnectorError __plugin_name__ = 'P站' @@ -81,26 +83,30 @@ async def _(bot: Bot, event: MessageEvent, state: T_State): text_list, urls, code = await get_pixiv_urls(rank_dict.get('1')) elif len(msg) == 1: if msg[0] not in ['1', '2', '3', '4', '5', '6', '7', '8', '9']: + _ulmt.set_False(event.user_id) await pixiv_rank.finish("要好好输入要看什么类型的排行榜呀!", at_sender=True) text_list, urls, code = await get_pixiv_urls(rank_dict.get(msg[0])) elif len(msg) == 2: text_list, urls, code = await get_pixiv_urls(rank_dict.get(msg[0]), int(msg[1])) elif len(msg) == 3: if not check_date(msg[2]): + _ulmt.set_False(event.user_id) await pixiv_rank.finish('日期格式错误了', at_sender=True) text_list, urls, code = await get_pixiv_urls(rank_dict.get(msg[0]), int(msg[1]), msg[2]) else: _ulmt.set_False(event.user_id) await pixiv_rank.finish('格式错了噢,看看帮助?', at_sender=True) if code != 200: + _ulmt.set_False(event.user_id) await pixiv_keyword.finish(text_list[0]) else: if not text_list or not urls: + _ulmt.set_False(event.user_id) await pixiv_rank.finish('没有找到啊,等等再试试吧~V', at_sender=True) for i in range(len(text_list)): try: await pixiv_rank.send(text_list[i] + await download_pixiv_imgs(urls[i], event.user_id)) - except NetworkError: + except (NetworkError, TimeoutError, ClientConnectorError): await pixiv_keyword.send('这张图网络炸了!', at_sender=True) logger.info( f"(USER {event.user_id}, GROUP {event.group_id if event.message_type != 'private' else 'private'})" @@ -159,7 +165,7 @@ async def _(bot: Bot, event: MessageEvent, state: T_State): for i in range(len(text_list)): try: await pixiv_keyword.send(text_list[i] + await download_pixiv_imgs(urls[i], event.user_id)) - except NetworkError: + except (NetworkError, TimeoutError, ClientConnectorError): await pixiv_keyword.send('这张图网络炸了!', at_sender=True) logger.info( f"(USER {event.user_id}, GROUP {event.group_id if event.message_type != 'private' else 'private'})" diff --git a/plugins/pixiv/data_source.py b/plugins/pixiv/data_source.py index cc3003b6..017e07be 100644 --- a/plugins/pixiv/data_source.py +++ b/plugins/pixiv/data_source.py @@ -7,6 +7,8 @@ from bs4 import BeautifulSoup import feedparser from util.init_result import image from asyncio.exceptions import TimeoutError +from configs.config import RSSHUBAPP +from aiohttp.client_exceptions import ClientConnectorError import platform if platform.system() == 'Windows': import asyncio @@ -14,11 +16,13 @@ if platform.system() == 'Windows': async def get_pixiv_urls(mode: str, num: int = 5, date: str = '') -> 'list, list, int': - url = 'https://rsshub.app/pixiv/ranking/{}' - iurl = url.format(mode) + url = f'{RSSHUBAPP}pixiv/ranking/{mode}' if date: - iurl += f'/{date}' - return await parser_data(iurl, num) + url += f'/{date}' + try: + return await parser_data(url, num) + except ClientConnectorError: + return get_pixiv_urls(mode, num, date) async def download_pixiv_imgs(urls: list, user_id: int) -> str: diff --git a/plugins/send_setu/__init__.py b/plugins/send_setu/__init__.py index 3247c24b..dc814806 100644 --- a/plugins/send_setu/__init__.py +++ b/plugins/send_setu/__init__.py @@ -13,6 +13,11 @@ import re from models.count_user import UserCount from aiohttp.client_exceptions import ClientConnectorError from configs.config import MAX_SETU_R_COUNT +from configs.path_config import TXT_PATH +try: + import ujson as json +except ModuleNotFoundError: + import json __plugin_name__ = '色图' __plugin_usage__ = f'''示例: @@ -59,7 +64,11 @@ async def _(bot: Bot, event: GroupMessageEvent, state: T_State): if _ulmt.check(event.user_id): await setu.finish(f"您有色图正在处理,请稍等") _ulmt.set_True(event.user_id) - setu_img, index = get_setu(img_id) + try: + setu_data = json.load(open(f'{TXT_PATH}/setu_data.json', 'r', encoding='utf8')) + except Exception: + setu_data = {} + setu_img, index = get_setu(img_id, setu_data) if setu_img: try: await setu.send(setu_img) @@ -114,7 +123,11 @@ async def _(bot: Bot, event: PrivateMessageEvent, state: T_State): if _ulmt.check(event.user_id): await setu.finish(f"您有色图正在处理,请稍等") _ulmt.set_True(event.user_id) - setu_img, index = get_setu(img_id) + try: + setu_data = json.load(open(f'{TXT_PATH}/setu_data.json', 'r', encoding='utf8')) + except Exception: + setu_data = {} + setu_img, index = get_setu(img_id, setu_data) if setu_img: await setu.send(setu_img) logger.info( @@ -221,10 +234,14 @@ async def _(bot: Bot, event: MessageEvent, state: T_State): else: return # try: + try: + setu_data = json.load(open(f'{TXT_PATH}/setu_data.json', 'r', encoding='utf8')) + except Exception: + setu_data = {} if not keyword: for _ in range(num): try: - img, index = get_setu('') + img, index = get_setu('', setu_data) if not img: break await setu_reg.send(img) diff --git a/plugins/send_setu/data_source.py b/plugins/send_setu/data_source.py index ea89fe60..bcda09a2 100644 --- a/plugins/send_setu/data_source.py +++ b/plugins/send_setu/data_source.py @@ -115,7 +115,7 @@ async def search_online_setu(url: str): return '\n图片被小怪兽恰掉啦..!QAQ', -1 -def get_setu(index: str): +def get_setu(index: str, setu_data: dict): length = len(os.listdir(IMAGE_PATH + path)) if length == 0: return None, None @@ -125,7 +125,14 @@ def get_setu(index: str): if int(index) > length or int(index) < 0: return f"超过当前上下限!({length - 1})", 999 else: - return f'id:{index}' + image(f'{index}.jpg', 'setu'), index + if setu_data: + index = str(index) + return f'id:{index}\n' \ + f'title:{setu_data[index]["title"]}\n' \ + f'author:{setu_data[index]["author"]}\n' \ + f'PID:{setu_data[index]["pid"]}' + image(f'{index}.jpg', path), index + else: + return f'id:{index}' + image(f'{index}.jpg', path), index return None, None diff --git a/plugins/server_ip.py b/plugins/server_ip.py new file mode 100644 index 00000000..5725771f --- /dev/null +++ b/plugins/server_ip.py @@ -0,0 +1,37 @@ +from nonebot import on_command +from nonebot.adapters.cqhttp import Bot, PrivateMessageEvent, GroupMessageEvent +from nonebot.typing import T_State +from nonebot.rule import to_me + +__plugin_name__ = '服务器' +__plugin_usage__ = '用法: 无' + + +server_ip = on_command("服务器", aliases={'ip'}, rule=to_me(), priority=5, block=True) + + +@server_ip.handle() +async def _(bot: Bot, event: PrivateMessageEvent, state: T_State): + await server_ip.finish("|* 请不要发给其他人! *|\n" + "\t121.40.195.22\n" + "|* 请不要发给其他人! *|\n" + "csgo ~号键控制台输入 connect 121.40.195.22 进入服务器\n" + "然后再公屏输入 !diy 来使用皮肤(英文感叹号,注意)\n" + "【说不定可以凑到内战噢,欢迎~{娱乐为主}】", at_sender=True) + + +@server_ip.handle() +async def _(bot: Bot, event: GroupMessageEvent, state: T_State): + if event.group_id == 698279647: + await server_ip.finish("嗨呀!当前服务器地址是:" + "\ncsgo:\n\tay: 121.40.195.22\n\t" + "wzt: 101.200.199.143\n\t夜之北枭: 101.132.170.254\n我的世界:\n\t47.111.1.220:25565") + elif event.group_id == 1046451860: + await server_ip.finish("嗨呀!当前服务器地址是:\n121.40.195.22\n !diy") + else: + await server_ip.finish("不好意思呀,小真寻不能为你使用此功能,因为服务器IP是真寻的小秘密呀!", at_sender=True) + + + + +