zhenxun_bot/plugins/weather/__init__.py

47 lines
2.0 KiB
Python
Raw Normal View History

2021-06-15 10:57:08 +08:00
from nonebot import on_regex
2021-08-04 15:19:45 +08:00
from .data_source import get_weather_of_city, update_city, get_city_list
2021-07-30 21:21:51 +08:00
from nonebot.adapters.cqhttp import Bot, MessageEvent, GroupMessageEvent
2021-05-20 19:25:51 +08:00
from jieba import posseg
from services.log import logger
from nonebot.typing import T_State
import re
2021-06-30 19:50:55 +08:00
from utils.utils import get_message_text
2021-05-20 19:25:51 +08:00
2021-07-30 21:21:51 +08:00
__plugin_name__ = "天气查询"
2021-05-20 19:25:51 +08:00
__plugin_usage__ = "普普通通的查天气吧\n示例:北京天气"
weather = on_regex(r".*?(.*)市?的?天气.*?", priority=5, block=True)
@weather.handle()
2021-07-30 21:21:51 +08:00
async def _(bot: Bot, event: MessageEvent, state: T_State):
2021-05-20 19:25:51 +08:00
msg = get_message_text(event.json())
2021-07-30 21:21:51 +08:00
msg = re.search(r".*?(.*)市?的?天气.*?", msg)
2021-05-20 19:25:51 +08:00
msg = msg.group(1)
2021-07-30 21:21:51 +08:00
if msg[-1] == "":
2021-05-20 19:25:51 +08:00
msg = msg[:-1]
2021-07-30 21:21:51 +08:00
if msg[-1] != "":
msg += ""
city = ""
2021-05-20 19:25:51 +08:00
if msg:
2021-08-04 15:19:45 +08:00
city_list = get_city_list()
2021-05-20 19:25:51 +08:00
for word in posseg.lcut(msg):
2021-08-04 15:19:45 +08:00
if word.flag == "ns" or word.word[:-1] in city_list:
2021-05-20 19:25:51 +08:00
city = str(word.word).strip()
break
2021-07-30 21:21:51 +08:00
if word.word == "火星":
await weather.finish(
"没想到你个小呆子还真的想看火星天气!\n火星大气中含有95的二氧化碳,气压低,加之极度的干燥,"
"就阻止了水的形成积聚。这意味着火星几乎没有云,冰层覆盖了火星的两极,它们的融化和冻结受到火星与太"
"阳远近距离的影响,它产生了强大的尘埃云,阻挡了太阳光,使冰层的融化慢下来。\n所以说火星天气太恶劣了,"
"去过一次就不想再去第二次了"
)
2021-05-20 19:25:51 +08:00
if city:
city_weather = await get_weather_of_city(city)
2021-07-30 21:21:51 +08:00
logger.info(
f'(USER {event.user_id}, GROUP {event.group_id if isinstance(event, GroupMessageEvent) else "private"} ) '
f"查询天气:" + city
)
2021-05-20 19:25:51 +08:00
await weather.finish(city_weather)