weather适配satori(bind city未找到)

This commit is contained in:
Expliyh 2024-05-16 20:22:07 +08:00
parent 251bfaf410
commit 002df66878
No known key found for this signature in database
GPG Key ID: F30DE0CFF6157916

View File

@ -1,4 +1,5 @@
from nonebot import require, on_endswith from nonebot import require, on_endswith
from nonebot.adapters import satori
from nonebot.adapters.onebot.v11 import MessageSegment from nonebot.adapters.onebot.v11 import MessageSegment
from nonebot.internal.matcher import Matcher from nonebot.internal.matcher import Matcher
@ -10,6 +11,7 @@ from liteyuki.utils.base.data_manager import User, user_db
from liteyuki.utils.base.language import Language, get_user_lang from liteyuki.utils.base.language import Language, get_user_lang
from liteyuki.utils.base.resource import get_path from liteyuki.utils.base.resource import get_path
from liteyuki.utils.message.html_tool import template2image from liteyuki.utils.message.html_tool import template2image
from ...utils import satori_utils
require("nonebot_plugin_alconna") require("nonebot_plugin_alconna")
from nonebot_plugin_alconna import on_alconna, Alconna, Args, MultiVar, Arparma from nonebot_plugin_alconna import on_alconna, Alconna, Args, MultiVar, Arparma
@ -26,7 +28,10 @@ async def _(result: Arparma, event: T_MessageEvent, matcher: Matcher):
"""await alconna.send("weather", city)""" """await alconna.send("weather", city)"""
kws = result.main_args.get("keywords") kws = result.main_args.get("keywords")
image = await get_weather_now_card(matcher, event, kws) image = await get_weather_now_card(matcher, event, kws)
await matcher.finish(MessageSegment.image(image)) if isinstance(event, satori.event.Event):
await matcher.finish(satori.MessageSegment.image(raw=image, mime="image/png"))
else:
await matcher.finish(MessageSegment.image(image))
@on_endswith(("天气", "weather")).handle() @on_endswith(("天气", "weather")).handle()
@ -38,11 +43,11 @@ async def _(event: T_MessageEvent, matcher: Matcher):
async def get_weather_now_card(matcher: Matcher, event: T_MessageEvent, keyword: list[str], tip: bool = True): async def get_weather_now_card(matcher: Matcher, event: T_MessageEvent, keyword: list[str], tip: bool = True):
ulang = get_user_lang(event.user_id) ulang = get_user_lang(satori_utils.get_user_id(event))
qw_lang = get_qw_lang(ulang.lang_code) qw_lang = get_qw_lang(ulang.lang_code)
key = get_config("weather_key") key = get_config("weather_key")
is_dev = get_memory_data("weather.is_dev", True) is_dev = get_memory_data("weather.is_dev", True)
user: User = user_db.where_one(User(), "user_id = ?", event.user_id, default=User()) user: User = user_db.where_one(User(), "user_id = ?", satori_utils.get_user_id(event), default=User())
# params # params
unit = user.profile.get("unit", "m") unit = user.profile.get("unit", "m")
stored_location = user.profile.get("location", None) stored_location = user.profile.get("location", None)
@ -76,18 +81,18 @@ async def get_weather_now_card(matcher: Matcher, event: T_MessageEvent, keyword:
image = await template2image( image = await template2image(
template=get_path("templates/weather_now.html", abs_path=True), template=get_path("templates/weather_now.html", abs_path=True),
templates={ templates={
"data": { "data": {
"params" : { "params": {
"unit": unit, "unit": unit,
"lang": ulang.lang_code, "lang": ulang.lang_code,
}, },
"weatherNow" : weather_now, "weatherNow": weather_now,
"weatherDaily" : weather_daily, "weatherDaily": weather_daily,
"weatherHourly": weather_hourly, "weatherHourly": weather_hourly,
"aqi" : aqi, "aqi": aqi,
"location" : location_data.dump(), "location": location_data.dump(),
"localization" : get_local_data(ulang.lang_code) "localization": get_local_data(ulang.lang_code)
} }
}, },
debug=True, debug=True,
wait=1 wait=1