diff --git a/gsuid_core/client.py b/gsuid_core/client.py index 9d84b6a..bda7d9f 100644 --- a/gsuid_core/client.py +++ b/gsuid_core/client.py @@ -40,39 +40,18 @@ class GsClient: async def send_msg(self): while True: intent = await self._input() - for content in [ - Message(type='text', data=intent), - Message(type='text', data='开始一场60秒的游戏'), - Message(type='text', data=intent), - Message(type='text', data='233'), - Message(type='text', data='233'), - Message(type='text', data='233'), - Message(type='text', data='233'), - Message(type='text', data='233'), - Message(type='text', data=intent), - Message(type='text', data=intent), - Message(type='text', data=intent), - Message(type='text', data=intent), - Message(type='text', data=intent), - Message(type='text', data=intent), - Message(type='text', data=intent), - ]: - user_type = random.choice(['direct', 'group']) - group_id = random.choice(['555', '666', '777']) - user_id = random.choice(['1', '2', '3', '4', '5']) - if content.data == '开始一场60秒的游戏': - user_type = 'group' - group_id = '555' - msg = MessageReceive( - bot_id='console', - user_type=user_type, # type: ignore - user_pm=1, - group_id=group_id, - user_id=user_id, - content=[content], - ) - msg_send = msgjson.encode(msg) - await self.ws.send(msg_send) + content = Message(type='text', data=intent) + group_id = random.choice(['555', '666', '777']) + msg = MessageReceive( + bot_id='console', + user_type='group', + user_pm=0, + group_id=group_id, + user_id='511', + content=[content], + ) + msg_send = msgjson.encode(msg) + await self.ws.send(msg_send) async def start(self): recv_task = asyncio.create_task(self.recv_msg()) diff --git a/gsuid_core/utils/download_resource/download_file.py b/gsuid_core/utils/download_resource/download_file.py index 22d47da..89febd2 100644 --- a/gsuid_core/utils/download_resource/download_file.py +++ b/gsuid_core/utils/download_resource/download_file.py @@ -1,6 +1,9 @@ +import json +import datetime from pathlib import Path -from typing import Optional +from typing import Dict, Optional +import httpx import aiofiles from aiohttp.client import ClientSession from aiohttp.client_exceptions import ClientConnectorError @@ -26,3 +29,32 @@ async def download( logger.info(f'{tag} {name} 下载完成!') except ClientConnectorError: logger.warning(f"{tag} {name} 下载失败!") + + +async def get_data_from_url( + url: str, path: Path, expire_sec: Optional[float] = None +) -> Dict: + time_difference = 10 + if path.exists() and expire_sec is not None: + modified_time = path.stat().st_mtime + modified_datetime = datetime.datetime.fromtimestamp(modified_time) + current_datetime = datetime.datetime.now() + + time_difference = ( + current_datetime - modified_datetime + ).total_seconds() + + if ( + expire_sec is not None and time_difference >= expire_sec + ) or not path.exists(): + async with httpx.AsyncClient() as client: + response = await client.get(url) + data = response.json() + async with aiofiles.open(path, 'w', encoding='UTF-8') as file: + await file.write( + json.dumps(data, indent=4, ensure_ascii=False) + ) + else: + async with aiofiles.open(path, 'r', encoding='UTF-8') as file: + data = json.loads(await file.read()) + return data