mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-02 02:00:01 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b3b09ed666 | ||
|
|
8029c00a02 | ||
|
|
a2c0921013 | ||
|
|
31cdabc229 |
@@ -242,18 +242,28 @@ __Docker 最新版本由 [Sakuracio](https://github.com/Sakuracio) 提供__
|
|||||||
|
|
||||||
## 更新
|
## 更新
|
||||||
|
|
||||||
|
### 2022/5/9
|
||||||
|
|
||||||
|
* 替换了疫情API
|
||||||
|
* 修复了私聊.ban/.unban出错
|
||||||
|
|
||||||
|
### 2022/5/5
|
||||||
|
|
||||||
|
* 修改bilibili_sub插件在windows平台下报错 [@pull/153](https://github.com/HibiKier/zhenxun_bot/pull/153)
|
||||||
|
|
||||||
### 2022/5/3 \[v0.1.5.2]
|
### 2022/5/3 \[v0.1.5.2]
|
||||||
|
|
||||||
* 商品使用函数可以添加特定参数,例如:user_id, group_id, ShopParam等以及自己提供的参数
|
* 商品使用函数可以添加特定参数,例如:user_id, group_id, ShopParam等以及自己提供的参数
|
||||||
* 添加商品注册装饰器shop_register
|
* 添加商品注册装饰器shop_register
|
||||||
* 修复商品函数kwargs无法获取参数值
|
* 修复商品函数kwargs无法获取参数值
|
||||||
|
|
||||||
|
|
||||||
### 2022/5/1
|
### 2022/5/1
|
||||||
|
|
||||||
* 删除了`group_last_chat`插件(该功能可由`chat_history`替代
|
* 删除了`group_last_chat`插件(该功能可由`chat_history`替代
|
||||||
* 新增敏感词检测(全新反击系统,是时候重拳出击了
|
* 新增敏感词检测(全新反击系统,是时候重拳出击了
|
||||||
|
|
||||||
### 2022/4/26 \[v0.5.1.0]
|
### 2022/4/26
|
||||||
|
|
||||||
* 修复了群白名单无法正确添加
|
* 修复了群白名单无法正确添加
|
||||||
* 优化了管理员帮助图片,背景图层将位于最下层
|
* 优化了管理员帮助图片,背景图层将位于最下层
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
__version__: v0.1.5.1
|
__version__: v0.1.5.3
|
||||||
@@ -125,11 +125,13 @@ async def _(
|
|||||||
msg = arg.extract_plain_text().strip()
|
msg = arg.extract_plain_text().strip()
|
||||||
if msg:
|
if msg:
|
||||||
if str(event.user_id) in bot.config.superusers:
|
if str(event.user_id) in bot.config.superusers:
|
||||||
if is_number(arg.extract_plain_text().strip().split()[0]):
|
msg_splt = msg.split()
|
||||||
qq = int(msg[0])
|
if is_number(msg_splt[0]):
|
||||||
msg = msg[1:]
|
|
||||||
|
qq = int(msg_splt[0])
|
||||||
|
msg = msg_splt[1:]
|
||||||
if cmd in [".ban", "/ban"]:
|
if cmd in [".ban", "/ban"]:
|
||||||
time = parse_ban_time(msg)
|
time = parse_ban_time(" ".join(msg))
|
||||||
if isinstance(time, str):
|
if isinstance(time, str):
|
||||||
await ban.finish(time)
|
await ban.finish(time)
|
||||||
result = await a_ban(qq, time, str(qq), event, 9)
|
result = await a_ban(qq, time, str(qq), event, 9)
|
||||||
|
|||||||
@@ -25,7 +25,9 @@ def parse_ban_time(msg: str) -> Union[int, str]:
|
|||||||
return int(msg[0]) * 60 * 60 + int(msg[1]) * 60
|
return int(msg[0]) * 60 * 60 + int(msg[1]) * 60
|
||||||
|
|
||||||
|
|
||||||
async def a_ban(qq: int, time: int, user_name: str, event: MessageEvent, ban_level: int = None) -> str:
|
async def a_ban(
|
||||||
|
qq: int, time: int, user_name: str, event: MessageEvent, ban_level: int = None
|
||||||
|
) -> str:
|
||||||
"""
|
"""
|
||||||
ban
|
ban
|
||||||
:param qq: qq
|
:param qq: qq
|
||||||
@@ -38,7 +40,8 @@ async def a_ban(qq: int, time: int, user_name: str, event: MessageEvent, ban_lev
|
|||||||
ban_level = await LevelUser.get_user_level(event.user_id, event.group_id)
|
ban_level = await LevelUser.get_user_level(event.user_id, event.group_id)
|
||||||
if await BanUser.ban(qq, ban_level, time):
|
if await BanUser.ban(qq, ban_level, time):
|
||||||
logger.info(
|
logger.info(
|
||||||
f"USER {event.user_id} GROUP {event.group_id} 将 USER {qq} 封禁 时长 {time / 60} 分钟"
|
f"USER {event.user_id} GROUP"
|
||||||
|
f" {event.group_id if isinstance(event, GroupMessageEvent) else ''} 将 USER {qq} 封禁 时长 {time / 60} 分钟"
|
||||||
)
|
)
|
||||||
result = f"已经将 {user_name} 加入{NICKNAME}的黑名单了!"
|
result = f"已经将 {user_name} 加入{NICKNAME}的黑名单了!"
|
||||||
if time != -1:
|
if time != -1:
|
||||||
@@ -57,13 +60,3 @@ async def a_ban(qq: int, time: int, user_name: str, event: MessageEvent, ban_lev
|
|||||||
time += " 分钟"
|
time += " 分钟"
|
||||||
result = f"{user_name} 已在黑名单!预计 {time}后解封"
|
result = f"{user_name} 已在黑名单!预计 {time}后解封"
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ class GoodsUseFuncManager:
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return self._data[goods_name]["func"](
|
return self._data[goods_name]["func"](
|
||||||
**kwargs,
|
*parse_args(args)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
if asyncio.iscoroutinefunction(self._data[goods_name]["func"]):
|
if asyncio.iscoroutinefunction(self._data[goods_name]["func"]):
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ usage:
|
|||||||
__plugin_des__ = "非常便利的B站订阅通知"
|
__plugin_des__ = "非常便利的B站订阅通知"
|
||||||
__plugin_cmd__ = ["添加订阅 [主播/UP/番剧] [id/链接/番名]", "删除订阅 [id]", "查看订阅"]
|
__plugin_cmd__ = ["添加订阅 [主播/UP/番剧] [id/链接/番名]", "删除订阅 [id]", "查看订阅"]
|
||||||
__plugin_version__ = 0.1
|
__plugin_version__ = 0.1
|
||||||
__plugin_author__ = "HibiKier"
|
__plugin_author__ = "HibiKier & NumberSir"
|
||||||
__plugin_settings__ = {
|
__plugin_settings__ = {
|
||||||
"level": 5,
|
"level": 5,
|
||||||
"default_status": True,
|
"default_status": True,
|
||||||
|
|||||||
@@ -1,12 +1,18 @@
|
|||||||
from bilibili_api.exceptions.ResponseCodeException import ResponseCodeException
|
# from bilibili_api.exceptions.ResponseCodeException import ResponseCodeException
|
||||||
|
from bilireq.exceptions import ResponseCodeError
|
||||||
from utils.manager import resources_manager
|
from utils.manager import resources_manager
|
||||||
from asyncio.exceptions import TimeoutError
|
from asyncio.exceptions import TimeoutError
|
||||||
from .model import BilibiliSub
|
from .model import BilibiliSub
|
||||||
from bilibili_api.live import LiveRoom
|
# from bilibili_api.live import LiveRoom
|
||||||
from bilibili_api import bangumi
|
from bilireq.live import get_room_info_by_id
|
||||||
|
# from bilibili_api import bangumi
|
||||||
|
from .utils import get_meta
|
||||||
from utils.message_builder import image
|
from utils.message_builder import image
|
||||||
from bilibili_api.user import User
|
# from bilibili_api import user
|
||||||
from bilibili_api import user
|
# from bilibili_api.user import User
|
||||||
|
from bilireq.user import get_user_info
|
||||||
|
from bilireq import dynamic
|
||||||
|
from .utils import get_videos
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from configs.path_config import IMAGE_PATH
|
from configs.path_config import IMAGE_PATH
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
@@ -36,9 +42,9 @@ async def add_live_sub(live_id: int, sub_user: str) -> str:
|
|||||||
try:
|
try:
|
||||||
async with db.transaction():
|
async with db.transaction():
|
||||||
try:
|
try:
|
||||||
live = LiveRoom(live_id)
|
"""bilibili_api.live库的LiveRoom类中get_room_info改为bilireq.live库的get_room_info_by_id方法"""
|
||||||
live_info = (await live.get_room_info())["room_info"]
|
live_info = await get_room_info_by_id(live_id)
|
||||||
except ResponseCodeException:
|
except ResponseCodeError:
|
||||||
return f"未找到房间号Id:{live_id} 的信息,请检查Id是否正确"
|
return f"未找到房间号Id:{live_id} 的信息,请检查Id是否正确"
|
||||||
uid = live_info["uid"]
|
uid = live_info["uid"]
|
||||||
room_id = live_info["room_id"]
|
room_id = live_info["room_id"]
|
||||||
@@ -78,16 +84,18 @@ async def add_up_sub(uid: int, sub_user: str) -> str:
|
|||||||
try:
|
try:
|
||||||
async with db.transaction():
|
async with db.transaction():
|
||||||
try:
|
try:
|
||||||
u = user.User(uid)
|
"""bilibili_api.user库中User类的get_user_info改为bilireq.user库的get_user_info方法"""
|
||||||
user_info = await u.get_user_info()
|
user_info = await get_user_info(uid)
|
||||||
except ResponseCodeException:
|
except ResponseCodeError:
|
||||||
return f"未找到UpId:{uid} 的信息,请检查Id是否正确"
|
return f"未找到UpId:{uid} 的信息,请检查Id是否正确"
|
||||||
uname = user_info["name"]
|
uname = user_info["name"]
|
||||||
dynamic_info = await u.get_dynamics(0)
|
"""bilibili_api.user库中User类的get_dynamics改为bilireq.dynamic库的get_user_dynamics方法"""
|
||||||
|
dynamic_info = await dynamic.get_user_dynamics(uid)
|
||||||
dynamic_upload_time = 0
|
dynamic_upload_time = 0
|
||||||
if dynamic_info.get("cards"):
|
if dynamic_info.get("cards"):
|
||||||
dynamic_upload_time = dynamic_info["cards"][0]["desc"]["timestamp"]
|
dynamic_upload_time = dynamic_info["cards"][0]["desc"]["timestamp"]
|
||||||
video_info = await u.get_videos()
|
"""bilibili_api.user库中User类的get_videos改为bilireq.user库的get_videos方法"""
|
||||||
|
video_info = await get_videos(uid)
|
||||||
latest_video_created = 0
|
latest_video_created = 0
|
||||||
if video_info["list"].get("vlist"):
|
if video_info["list"].get("vlist"):
|
||||||
latest_video_created = video_info["list"]["vlist"][0]["created"]
|
latest_video_created = video_info["list"]["vlist"][0]["created"]
|
||||||
@@ -117,8 +125,9 @@ async def add_season_sub(media_id: int, sub_user: str) -> str:
|
|||||||
try:
|
try:
|
||||||
async with db.transaction():
|
async with db.transaction():
|
||||||
try:
|
try:
|
||||||
season_info = await bangumi.get_meta(media_id)
|
"""bilibili_api.bangumi库中get_meta改为bilireq.bangumi库的get_meta方法"""
|
||||||
except ResponseCodeException:
|
season_info = await get_meta(media_id)
|
||||||
|
except ResponseCodeError:
|
||||||
return f"未找到media_id:{media_id} 的信息,请检查Id是否正确"
|
return f"未找到media_id:{media_id} 的信息,请检查Id是否正确"
|
||||||
season_id = season_info["media"]["season_id"]
|
season_id = season_info["media"]["season_id"]
|
||||||
season_current_episode = season_info["media"]["new_ep"]["index"]
|
season_current_episode = season_info["media"]["new_ep"]["index"]
|
||||||
@@ -200,7 +209,7 @@ async def get_sub_status(id_: int, sub_type: str) -> Optional[str]:
|
|||||||
return await _get_up_status(id_)
|
return await _get_up_status(id_)
|
||||||
elif sub_type == "season":
|
elif sub_type == "season":
|
||||||
return await _get_season_status(id_)
|
return await _get_season_status(id_)
|
||||||
except ResponseCodeException:
|
except ResponseCodeError:
|
||||||
return f"Id:{id_} 获取信息失败...请检查订阅Id是否存在或稍后再试..."
|
return f"Id:{id_} 获取信息失败...请检查订阅Id是否存在或稍后再试..."
|
||||||
# except Exception as e:
|
# except Exception as e:
|
||||||
# logger.error(f"获取订阅状态发生预料之外的错误 id_:{id_} {type(e)}:{e}")
|
# logger.error(f"获取订阅状态发生预料之外的错误 id_:{id_} {type(e)}:{e}")
|
||||||
@@ -212,12 +221,12 @@ async def _get_live_status(id_: int) -> Optional[str]:
|
|||||||
获取直播订阅状态
|
获取直播订阅状态
|
||||||
:param id_: 直播间 id
|
:param id_: 直播间 id
|
||||||
"""
|
"""
|
||||||
live = LiveRoom(id_)
|
"""bilibili_api.live库的LiveRoom类中get_room_info改为bilireq.live库的get_room_info_by_id方法"""
|
||||||
live_info = (await live.get_room_info())["room_info"]
|
live_info = await get_room_info_by_id(id_)
|
||||||
title = live_info["title"]
|
title = live_info["title"]
|
||||||
room_id = live_info["room_id"]
|
room_id = live_info["room_id"]
|
||||||
live_status = live_info["live_status"]
|
live_status = live_info["live_status"]
|
||||||
cover = live_info["cover"]
|
cover = live_info["user_cover"]
|
||||||
sub = await BilibiliSub.get_sub(id_)
|
sub = await BilibiliSub.get_sub(id_)
|
||||||
if sub.live_status != live_status:
|
if sub.live_status != live_status:
|
||||||
await BilibiliSub.update_sub_info(id_, live_status=live_status)
|
await BilibiliSub.update_sub_info(id_, live_status=live_status)
|
||||||
@@ -238,15 +247,16 @@ async def _get_up_status(id_: int) -> Optional[str]:
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
_user = await BilibiliSub.get_sub(id_)
|
_user = await BilibiliSub.get_sub(id_)
|
||||||
u = user.User(_user.uid)
|
"""bilibili_api.user库中User类的get_user_info改为bilireq.user库的get_user_info方法"""
|
||||||
user_info = await u.get_user_info()
|
user_info = await get_user_info(id_)
|
||||||
uname = user_info["name"]
|
uname = user_info["name"]
|
||||||
video_info = await u.get_videos()
|
"""bilibili_api.user库中User类的get_videos改为bilireq.user库的get_videos方法"""
|
||||||
|
video_info = await get_videos(id_)
|
||||||
latest_video_created = 0
|
latest_video_created = 0
|
||||||
video = None
|
video = None
|
||||||
if _user.uname != uname:
|
if _user.uname != uname:
|
||||||
await BilibiliSub.update_sub_info(id_, uname=uname)
|
await BilibiliSub.update_sub_info(id_, uname=uname)
|
||||||
dynamic_img, dynamic_upload_time = await get_user_dynamic(u, _user)
|
dynamic_img, dynamic_upload_time = await get_user_dynamic(id_, _user)
|
||||||
if video_info["list"].get("vlist"):
|
if video_info["list"].get("vlist"):
|
||||||
video = video_info["list"]["vlist"][0]
|
video = video_info["list"]["vlist"][0]
|
||||||
latest_video_created = video["created"]
|
latest_video_created = video["created"]
|
||||||
@@ -280,7 +290,8 @@ async def _get_season_status(id_) -> Optional[str]:
|
|||||||
获取 番剧 更新状态
|
获取 番剧 更新状态
|
||||||
:param id_: 番剧 id
|
:param id_: 番剧 id
|
||||||
"""
|
"""
|
||||||
season_info = await bangumi.get_meta(id_)
|
"""bilibili_api.bangumi库中get_meta改为bilireq.bangumi库的get_meta方法"""
|
||||||
|
season_info = await get_meta(id_)
|
||||||
title = season_info["media"]["title"]
|
title = season_info["media"]["title"]
|
||||||
_idx = (await BilibiliSub.get_sub(id_)).season_current_episode
|
_idx = (await BilibiliSub.get_sub(id_)).season_current_episode
|
||||||
new_ep = season_info["media"]["new_ep"]["index"]
|
new_ep = season_info["media"]["new_ep"]["index"]
|
||||||
@@ -297,15 +308,16 @@ async def _get_season_status(id_) -> Optional[str]:
|
|||||||
|
|
||||||
|
|
||||||
async def get_user_dynamic(
|
async def get_user_dynamic(
|
||||||
u: User, local_user: BilibiliSub
|
uid: int, local_user: BilibiliSub
|
||||||
) -> "Optional[MessageSegment], int":
|
) -> "Optional[MessageSegment], int":
|
||||||
"""
|
"""
|
||||||
获取用户动态
|
获取用户动态
|
||||||
:param u: 用户类
|
:param uid: 用户uid
|
||||||
:param local_user: 数据库存储的用户数据
|
:param local_user: 数据库存储的用户数据
|
||||||
:return: 最新动态截图与时间
|
:return: 最新动态截图与时间
|
||||||
"""
|
"""
|
||||||
dynamic_info = await u.get_dynamics(0)
|
"""bilibili_api.user库中User类的get_dynamics改为bilireq.dynamic库的get_user_dynamics方法"""
|
||||||
|
dynamic_info = await dynamic.get_user_dynamics(uid)
|
||||||
browser = await get_browser()
|
browser = await get_browser()
|
||||||
if dynamic_info.get("cards") and browser:
|
if dynamic_info.get("cards") and browser:
|
||||||
dynamic_upload_time = dynamic_info["cards"][0]["desc"]["timestamp"]
|
dynamic_upload_time = dynamic_info["cards"][0]["desc"]["timestamp"]
|
||||||
@@ -397,4 +409,4 @@ class SubManager:
|
|||||||
if sub:
|
if sub:
|
||||||
return sub
|
return sub
|
||||||
await self.reload_sub_data()
|
await self.reload_sub_data()
|
||||||
return await self.random_sub_data()
|
return await self.random_sub_data()
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
from utils.image_utils import BuildImage
|
from utils.image_utils import BuildImage
|
||||||
from configs.path_config import IMAGE_PATH
|
from configs.path_config import IMAGE_PATH
|
||||||
from utils.http_utils import AsyncHttpx
|
from utils.http_utils import AsyncHttpx
|
||||||
from bilibili_api import user
|
# from bilibili_api import user
|
||||||
|
from bilireq.user import get_user_info
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
|
|
||||||
@@ -28,8 +29,8 @@ async def create_live_des_image(uid: int, title: str, cover: str, tags: str, des
|
|||||||
:param des: 直播简介
|
:param des: 直播简介
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
u = user.User(uid)
|
|
||||||
user_info = await u.get_user_info()
|
user_info = await get_user_info(uid)
|
||||||
name = user_info["name"]
|
name = user_info["name"]
|
||||||
sex = user_info["sex"]
|
sex = user_info["sex"]
|
||||||
face = user_info["face"]
|
face = user_info["face"]
|
||||||
@@ -68,3 +69,47 @@ def _create_live_des_image(
|
|||||||
border_img = BuildImage(1772, 2657, background=border)
|
border_img = BuildImage(1772, 2657, background=border)
|
||||||
bk = BuildImage(1772, 2657, font_size=30)
|
bk = BuildImage(1772, 2657, font_size=30)
|
||||||
bk.paste(cover, (0, 100), center_type="by_width")
|
bk.paste(cover, (0, 100), center_type="by_width")
|
||||||
|
|
||||||
|
|
||||||
|
async def get_meta(media_id: int, auth=None, reqtype="both", **kwargs):
|
||||||
|
"""
|
||||||
|
根据番剧 ID 获取番剧元数据信息,
|
||||||
|
作为bilibili_api和bilireq的替代品。
|
||||||
|
如果bilireq.bangumi更新了,可以转为调用bilireq.bangumi的get_meta方法,两者完全一致。
|
||||||
|
"""
|
||||||
|
from bilireq.utils import get
|
||||||
|
|
||||||
|
BASE_URL = "https://api.bilibili.com"
|
||||||
|
url = f"{BASE_URL}/pgc/review/user"
|
||||||
|
params = {"media_id": media_id}
|
||||||
|
raw_json = await get(url, raw=True, params=params, auth=auth, reqtype=reqtype, **kwargs)
|
||||||
|
return raw_json['result']
|
||||||
|
|
||||||
|
|
||||||
|
async def get_videos(
|
||||||
|
uid: int, tid: int = 0, pn: int = 1, keyword: str = "", order: str = "pubdate",
|
||||||
|
*, auth=None, reqtype="both", **kwargs
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
获取用户投该视频信息
|
||||||
|
作为bilibili_api和bilireq的替代品。
|
||||||
|
如果bilireq.user更新了,可以转为调用bilireq.user的get_videos方法,两者完全一致。
|
||||||
|
|
||||||
|
:param uid: 用户 UID
|
||||||
|
:param tid: 分区 ID
|
||||||
|
:param pn: 页码
|
||||||
|
:param keyword: 搜索关键词
|
||||||
|
:param order: 排序方式,可以为 “pubdate(上传日期从新到旧), stow(收藏从多到少), click(播放量从多到少)”
|
||||||
|
"""
|
||||||
|
from bilireq.utils import get
|
||||||
|
BASE_URL = "https://api.bilibili.com"
|
||||||
|
url = f"{BASE_URL}/x/space/arc/search"
|
||||||
|
params = {
|
||||||
|
"mid": uid,
|
||||||
|
"ps": 30,
|
||||||
|
"tid": tid,
|
||||||
|
"pn": pn,
|
||||||
|
"keyword": keyword,
|
||||||
|
"order": order
|
||||||
|
}
|
||||||
|
return await get(url, params=params, auth=auth, reqtype=reqtype, **kwargs)
|
||||||
@@ -49,7 +49,7 @@ __plugin_cmd__ = [
|
|||||||
"查看词条 ?[问题/下标]",
|
"查看词条 ?[问题/下标]",
|
||||||
]
|
]
|
||||||
__plugin_version__ = 0.2
|
__plugin_version__ = 0.2
|
||||||
__plugin_author__ = "HibiKier"
|
__plugin_author__ = "HibiKier & yajiwa"
|
||||||
__plugin_settings__ = {
|
__plugin_settings__ = {
|
||||||
"admin_level": Config.get_config("word_bank", "WORD_BANK_LEVEL [LEVEL]"),
|
"admin_level": Config.get_config("word_bank", "WORD_BANK_LEVEL [LEVEL]"),
|
||||||
"cmd": ["词库问答", "添加词条", "删除词条", "修改词条", "查看词条"],
|
"cmd": ["词库问答", "添加词条", "删除词条", "修改词条", "查看词条"],
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ china_city = TEXT_PATH / "china_city.json"
|
|||||||
data = {}
|
data = {}
|
||||||
|
|
||||||
|
|
||||||
url = "https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5"
|
url = "https://api.inews.qq.com/newsqa/v1/query/inner/publish/modules/list?modules=diseaseh5Shelf"
|
||||||
|
|
||||||
|
|
||||||
async def get_yiqing_data(area: str) -> Union[str, MessageSegment]:
|
async def get_yiqing_data(area: str) -> Union[str, MessageSegment]:
|
||||||
@@ -37,7 +37,7 @@ async def get_yiqing_data(area: str) -> Union[str, MessageSegment]:
|
|||||||
if area in data[p]:
|
if area in data[p]:
|
||||||
province = p
|
province = p
|
||||||
city = area
|
city = area
|
||||||
epidemic_data = json.loads((await AsyncHttpx.get(url)).json()["data"])
|
epidemic_data = (await AsyncHttpx.get(url)).json()["data"]["diseaseh5Shelf"]
|
||||||
last_update_time = epidemic_data["lastUpdateTime"]
|
last_update_time = epidemic_data["lastUpdateTime"]
|
||||||
if area == "中国":
|
if area == "中国":
|
||||||
data_ = epidemic_data["areaTree"][0]
|
data_ = epidemic_data["areaTree"][0]
|
||||||
@@ -59,12 +59,12 @@ async def get_yiqing_data(area: str) -> Union[str, MessageSegment]:
|
|||||||
add_confirm = data_["today"]["confirm"] # 新增确诊
|
add_confirm = data_["today"]["confirm"] # 新增确诊
|
||||||
grade = ""
|
grade = ""
|
||||||
_grade_color = ""
|
_grade_color = ""
|
||||||
if data_["total"].get("grade"):
|
# if data_["total"].get("grade"):
|
||||||
grade = data_["total"]["grade"]
|
# grade = data_["total"]["grade"]
|
||||||
if "中风险" in grade:
|
# if "中风险" in grade:
|
||||||
_grade_color = "#fa9424"
|
# _grade_color = "#fa9424"
|
||||||
else:
|
# else:
|
||||||
_grade_color = "red"
|
# _grade_color = "red"
|
||||||
|
|
||||||
dead_rate = f"{dead / confirm * 100:.2f}" # 死亡率
|
dead_rate = f"{dead / confirm * 100:.2f}" # 死亡率
|
||||||
heal_rate = f"{heal / confirm * 100:.2f}" # 治愈率
|
heal_rate = f"{heal / confirm * 100:.2f}" # 治愈率
|
||||||
|
|||||||
Reference in New Issue
Block a user