✨ 部分功能适配QQ BOT (#1701)

This commit is contained in:
HibiKier
2024-10-18 18:57:55 +08:00
committed by GitHub
parent 7567bfb732
commit 3d3a2a5f7f
29 changed files with 528 additions and 310 deletions
+14 -11
View File
@@ -7,13 +7,13 @@ from datetime import datetime
import pytz
import nonebot
from nonebot.drivers import Driver
from nonebot_plugin_uninfo import Uninfo
from nonebot_plugin_htmlrender import template_to_pic
from zhenxun.models.sign_log import SignLog
from zhenxun.models.sign_user import SignUser
from zhenxun.utils.utils import get_user_avatar
from zhenxun.utils.http_utils import AsyncHttpx
from zhenxun.utils.image_utils import BuildImage
from zhenxun.utils.platform import PlatformUtils
from zhenxun.configs.config import Config, BotConfig
from zhenxun.configs.path_config import IMAGE_PATH, TEMPLATE_PATH
@@ -63,6 +63,7 @@ async def init_image():
async def get_card(
user: SignUser,
session: Uninfo,
nickname: str,
add_impression: float,
gold: int | None,
@@ -74,6 +75,7 @@ async def get_card(
参数:
user: SignUser
session: Uninfo
nickname: 用户昵称
impression: 新增的好感度
gold: 金币
@@ -99,17 +101,18 @@ async def get_card(
is_card_view = True
return (
await _generate_html_card(
user, nickname, add_impression, gold, gift, is_double, is_card_view
user, session, nickname, add_impression, gold, gift, is_double, is_card_view
)
if base_config.get("IMAGE_STYLE") == "zhenxun"
else await _generate_card(
user, nickname, add_impression, gold, gift, is_double, is_card_view
user, session, nickname, add_impression, gold, gift, is_double, is_card_view
)
)
async def _generate_card(
user: SignUser,
session: Uninfo,
nickname: str,
add_impression: float,
gold: int | None,
@@ -121,6 +124,7 @@ async def _generate_card(
参数:
user: SignUser
session: Uninfo
nickname: 用户昵称
add_impression: 新增的好感度
gold: 金币
@@ -137,7 +141,9 @@ async def _generate_card(
140,
background=SIGN_BORDER_PATH / "ava_border_01.png",
)
if user.platform == "qq" and (byt := await get_user_avatar(user.user_id)):
if session.user.avatar and (
byt := await AsyncHttpx.get_content(session.user.avatar)
):
ava = BuildImage(107, 107, background=BytesIO(byt))
else:
ava = BuildImage(107, 107, (0, 0, 0))
@@ -273,10 +279,6 @@ async def _generate_card(
await bk.paste(nickname_img, (30, 15))
await bk.paste(uid_img, (30, 85))
await bk.paste(A, (0, 150))
# await bk.text((30, 167), "Accumulative check-in for")
# _x = bk.getsize("Accumulative check-in for")[0] + sign_day_img.width + 45
# await bk.paste(sign_day_img, (398, 158))
# await bk.text((_x, 167), "days")
await bk.paste(tip_image, (10, 167))
await bk.paste(date_img, (220, 370))
await bk.paste(lik_text1_img, (220, 240))
@@ -377,6 +379,7 @@ def clear_sign_data_pic():
async def _generate_html_card(
user: SignUser,
session: Uninfo,
nickname: str,
add_impression: float,
gold: int | None,
@@ -388,6 +391,7 @@ async def _generate_html_card(
参数:
user: SignUser
session: Uninfo
nickname: 用户昵称
add_impression: 新增的好感度
gold: 金币
@@ -420,9 +424,8 @@ async def _generate_html_card(
next_impression - previous_impression
)
now = datetime.now()
ava_url = PlatformUtils.get_user_avatar_url(user.user_id, "qq")
data = {
"ava_url": ava_url,
"ava_url": session.user.avatar,
"name": nickname,
"uid": uid,
"sign_count": f"{user.sign_count}",