mirror of
https://github.com/TriM-Organization/LiteyukiBot-TriM.git
synced 2024-12-01 09:44:44 +08:00
feat: 重启时间显示
This commit is contained in:
parent
db0542279b
commit
38f658edf9
@ -15,7 +15,7 @@ weather-key # 和风天气的天气key
|
|||||||
```
|
```
|
||||||
命令
|
命令
|
||||||
```shell
|
```shell
|
||||||
weather <keywords...> # 查询目标地天气,例如:"天气 北京 海淀", "weather Tokyo Shinjuku"
|
weather <keywords...> # 查询目标地实时天气,例如:"天气 北京 海淀", "weather Tokyo Shinjuku"
|
||||||
bind-city <keywords...> # 绑定查询城市,个人全局生效
|
bind-city <keywords...> # 绑定查询城市,个人全局生效
|
||||||
别名:weather 天气
|
别名:weather 天气
|
||||||
```
|
```
|
@ -1,21 +1,22 @@
|
|||||||
|
import asyncio
|
||||||
import base64
|
import base64
|
||||||
|
import time
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
import nonebot
|
import nonebot
|
||||||
import pip
|
import pip
|
||||||
from git import Repo
|
from git import Repo
|
||||||
from nonebot import Bot, require, get_driver
|
from nonebot import Bot, get_driver, require
|
||||||
from nonebot.exception import MockApiException
|
from nonebot.exception import MockApiException
|
||||||
from nonebot.internal.matcher import Matcher
|
from nonebot.internal.matcher import Matcher
|
||||||
from nonebot.permission import SUPERUSER
|
from nonebot.permission import SUPERUSER
|
||||||
|
|
||||||
from liteyuki.utils.config import config, load_from_yaml
|
from liteyuki.utils.config import load_from_yaml
|
||||||
from liteyuki.utils.data_manager import StoredConfig, common_db
|
from liteyuki.utils.data_manager import StoredConfig, TempConfig, common_db
|
||||||
from liteyuki.utils.language import get_user_lang
|
from liteyuki.utils.language import get_user_lang
|
||||||
from liteyuki.utils.ly_typing import T_Bot, T_MessageEvent
|
from liteyuki.utils.ly_typing import T_Bot, T_MessageEvent
|
||||||
from liteyuki.utils.message import Markdown as md
|
from liteyuki.utils.message import Markdown as md
|
||||||
from liteyuki.utils.reloader import Reloader
|
from liteyuki.utils.reloader import Reloader
|
||||||
from liteyuki.utils.resource import get_loaded_resource_packs, load_resources
|
|
||||||
|
|
||||||
require("nonebot_plugin_alconna"), require("nonebot_plugin_htmlrender")
|
require("nonebot_plugin_alconna"), require("nonebot_plugin_htmlrender")
|
||||||
from nonebot_plugin_alconna import on_alconna, Alconna, Args, Subcommand, Arparma
|
from nonebot_plugin_alconna import on_alconna, Alconna, Args, Subcommand, Arparma
|
||||||
@ -84,9 +85,17 @@ async def _(bot: T_Bot, event: T_MessageEvent):
|
|||||||
),
|
),
|
||||||
permission=SUPERUSER
|
permission=SUPERUSER
|
||||||
).handle()
|
).handle()
|
||||||
async def _(matcher: Matcher):
|
async def _(matcher: Matcher, bot: T_Bot, event: T_MessageEvent):
|
||||||
await matcher.send("Liteyuki reloading")
|
await matcher.send("Liteyuki reloading")
|
||||||
Reloader.reload(3)
|
temp_data = common_db.first(TempConfig(), default=TempConfig())
|
||||||
|
temp_data.data["reload"] = True
|
||||||
|
temp_data.data["reload_time"] = time.time()
|
||||||
|
temp_data.data["reload_bot_id"] = bot.self_id
|
||||||
|
temp_data.data["reload_session_type"] = event.message_type
|
||||||
|
temp_data.data["reload_session_id"] = event.group_id if event.message_type == "group" else event.user_id
|
||||||
|
temp_data.data["delta_time"] = 0
|
||||||
|
common_db.upsert(temp_data)
|
||||||
|
Reloader.reload(0)
|
||||||
|
|
||||||
|
|
||||||
@on_alconna(
|
@on_alconna(
|
||||||
@ -197,9 +206,34 @@ async def test_for_md_image(bot: T_Bot, api: str, data: dict):
|
|||||||
|
|
||||||
@driver.on_startup
|
@driver.on_startup
|
||||||
async def on_startup():
|
async def on_startup():
|
||||||
pass
|
temp_data = common_db.first(TempConfig(), default=TempConfig())
|
||||||
|
if temp_data.data.get("reload", False):
|
||||||
|
delta_time = time.time() - temp_data.data.get("reload_time", 0)
|
||||||
|
temp_data.data["delta_time"] = delta_time
|
||||||
|
common_db.upsert(temp_data) # 更新数据
|
||||||
|
|
||||||
|
|
||||||
@driver.on_shutdown
|
@driver.on_shutdown
|
||||||
async def on_shutdown():
|
async def on_shutdown():
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@driver.on_bot_connect
|
||||||
|
async def _(bot: T_Bot):
|
||||||
|
temp_data = common_db.first(TempConfig(), default=TempConfig())
|
||||||
|
if temp_data.data.get("reload", False):
|
||||||
|
temp_data.data["reload"] = False
|
||||||
|
reload_bot_id = temp_data.data.get("reload_bot_id", 0)
|
||||||
|
if reload_bot_id != bot.self_id:
|
||||||
|
return
|
||||||
|
reload_session_type = temp_data.data.get("reload_session_type", "private")
|
||||||
|
reload_session_id = temp_data.data.get("reload_session_id", 0)
|
||||||
|
delta_time = temp_data.data.get("delta_time", 0)
|
||||||
|
common_db.upsert(temp_data) # 更新数据
|
||||||
|
await bot.call_api(
|
||||||
|
"send_msg",
|
||||||
|
message_type=reload_session_type,
|
||||||
|
user_id=reload_session_id,
|
||||||
|
group_id=reload_session_id,
|
||||||
|
message="Liteyuki reloaded in %.2f s" % delta_time
|
||||||
|
)
|
||||||
|
@ -5,36 +5,48 @@ from liteyuki.utils.data import LiteModel
|
|||||||
class Location(LiteModel):
|
class Location(LiteModel):
|
||||||
name: str = ""
|
name: str = ""
|
||||||
id: str = ""
|
id: str = ""
|
||||||
|
lat: str = ""
|
||||||
|
lon: str = ""
|
||||||
|
adm2: str = ""
|
||||||
|
adm1: str = ""
|
||||||
country: str = ""
|
country: str = ""
|
||||||
|
tz: str = ""
|
||||||
|
utcOffset: str = ""
|
||||||
|
isDst: str = ""
|
||||||
|
type: str = ""
|
||||||
|
rank: str = ""
|
||||||
|
fxLink: str = ""
|
||||||
|
sources: str = ""
|
||||||
|
license: str = ""
|
||||||
|
|
||||||
|
|
||||||
|
class CityLookupResponse(LiteModel):
|
||||||
|
code: str = ""
|
||||||
|
location: Location = Location()
|
||||||
|
|
||||||
|
|
||||||
class WeatherNow(LiteModel):
|
class WeatherNow(LiteModel):
|
||||||
time: str = ""
|
obsTime: str = ""
|
||||||
city: str = ""
|
temp: str = ""
|
||||||
|
feelsLike: str = ""
|
||||||
|
icon: str = ""
|
||||||
|
text: str = ""
|
||||||
|
wind360: str = ""
|
||||||
|
windDir: str = ""
|
||||||
|
windScale: str = ""
|
||||||
|
windSpeed: str = ""
|
||||||
|
humidity: str = ""
|
||||||
|
precip: str = ""
|
||||||
|
pressure: str = ""
|
||||||
|
vis: str = ""
|
||||||
|
cloud: str = ""
|
||||||
|
dew: str = ""
|
||||||
|
sources: str = ""
|
||||||
|
license: str = ""
|
||||||
|
|
||||||
|
|
||||||
weather = on_command("weather", aliases={"天气", "查天气", "天气预报", "查天气预报"})
|
class WeatherNowResponse(LiteModel):
|
||||||
weather_now = on_command("weather_now", aliases={"实时天气", "查实时天气", "实时天气预报", "查实时天气预报"})
|
code: str = ""
|
||||||
weather_forecast = on_command("weather_forecast", aliases={"天气预报", "查天气预报", "未来天气", "查未来天气"})
|
updateTime: str = ""
|
||||||
weather_warning = on_command("weather_warning", aliases={"天气预警", "查天气预警", "天气警告", "查天气警告"})
|
fxLink: str = ""
|
||||||
weather_life = on_command("weather_life", aliases={"生活指数", "查生活指数", "生活指数预报", "查生活指数预报"})
|
now: WeatherNow = WeatherNow()
|
||||||
weather_air = on_command("weather_air", aliases={"空气质量", "查空气质量", "空气质量预报", "查空气质量预报"})
|
|
||||||
weather_rain = on_command("weather_rain", aliases={"降雨预报", "查降雨预报", "降雨量", "查降雨量"})
|
|
||||||
weather_snow = on_command("weather_snow", aliases={"降雪预报", "查降雪预报", "降雪量", "查降雪量"})
|
|
||||||
|
|
||||||
|
|
||||||
@weather.handle()
|
|
||||||
async def handle_weather(bot, event):
|
|
||||||
args = str(event.get_message()).strip()
|
|
||||||
if not args:
|
|
||||||
await weather.finish("请输入要查询的城市")
|
|
||||||
else:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@weather_now.handle()
|
|
||||||
async def handle_weather_now(bot, event):
|
|
||||||
pass
|
|
||||||
|
|
||||||
@weather_forecast.handle()
|
|
||||||
async def handle_weather_forecast(bot, event):
|
|
||||||
pass
|
|
||||||
|
15
liteyuki/plugins/liteyuki_weather/qweather.py
Normal file
15
liteyuki/plugins/liteyuki_weather/qweather.py
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
from nonebot import require
|
||||||
|
|
||||||
|
require("nonebot_plugin_alconna")
|
||||||
|
from nonebot_plugin_alconna import on_alconna, Alconna, Subcommand, Args, MultiVar, Arparma
|
||||||
|
|
||||||
|
|
||||||
|
@on_alconna(
|
||||||
|
aliases={"天气"},
|
||||||
|
command=Alconna(
|
||||||
|
"weather",
|
||||||
|
Args["keywords", MultiVar(str)],
|
||||||
|
),
|
||||||
|
).handle()
|
||||||
|
async def _(result: Arparma):
|
||||||
|
"""await alconna.send("weather", city)"""
|
@ -1,10 +1,5 @@
|
|||||||
// 存放格言
|
// 存放格言
|
||||||
const mottos = [
|
const mottos = [
|
||||||
{
|
|
||||||
"text": "人生自古谁无死,留取丹心照汗青。",
|
|
||||||
"author": "文天祥",
|
|
||||||
"source": "《正气歌》"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"text": "同是天涯沦落人,相逢何必曾相识。",
|
"text": "同是天涯沦落人,相逢何必曾相识。",
|
||||||
"author": "白居易",
|
"author": "白居易",
|
||||||
@ -15,16 +10,6 @@ const mottos = [
|
|||||||
"author": "王勃",
|
"author": "王勃",
|
||||||
"source": "《送杜少府之任蜀州》"
|
"source": "《送杜少府之任蜀州》"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"text": "人生到处知何似,应似飞鸿踏雪泥。",
|
|
||||||
"author": "苏轼",
|
|
||||||
"source": "《水调歌头》"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "大鹏一日同风起,扶摇直上九万里。",
|
|
||||||
"author": "李白",
|
|
||||||
"source": "《将进酒》"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"text": "银烛秋光冷画屏,轻罗小扇扑流萤。",
|
"text": "银烛秋光冷画屏,轻罗小扇扑流萤。",
|
||||||
"author": "陆游",
|
"author": "陆游",
|
||||||
@ -32,8 +17,8 @@ const mottos = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"text": "明月几时有,把酒问青天。",
|
"text": "明月几时有,把酒问青天。",
|
||||||
"author": "辛弃疾",
|
"author": "苏轼",
|
||||||
"source": "《水龙吟》"
|
"source": "《水调歌头》"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"text": "逸一时,误一世,逸久逸久罢已龄",
|
"text": "逸一时,误一世,逸久逸久罢已龄",
|
||||||
@ -60,4 +45,9 @@ const mottos = [
|
|||||||
"author": "SnowyKami",
|
"author": "SnowyKami",
|
||||||
"source": "轻雪文档"
|
"source": "轻雪文档"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"text": "你知道吗,轻雪的主题是基于Vue.js开发的",
|
||||||
|
"author": "SnowyKami",
|
||||||
|
"source": "轻雪文档"
|
||||||
|
}
|
||||||
]
|
]
|
@ -48,9 +48,14 @@ class StoredConfig(LiteModel):
|
|||||||
config: dict = {}
|
config: dict = {}
|
||||||
|
|
||||||
|
|
||||||
|
class TempConfig(LiteModel):
|
||||||
|
"""储存临时键值对的表"""
|
||||||
|
TABLE_NAME = "temp_data"
|
||||||
|
data: dict = {}
|
||||||
|
|
||||||
|
|
||||||
def auto_migrate():
|
def auto_migrate():
|
||||||
user_db.auto_migrate(User())
|
user_db.auto_migrate(User())
|
||||||
group_db.auto_migrate(Group())
|
group_db.auto_migrate(Group())
|
||||||
plugin_db.auto_migrate(InstalledPlugin(), GlobalPlugin())
|
plugin_db.auto_migrate(InstalledPlugin(), GlobalPlugin())
|
||||||
common_db.auto_migrate(GlobalPlugin(), StoredConfig())
|
common_db.auto_migrate(GlobalPlugin(), StoredConfig(), TempConfig())
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user