zhenxun_bot/plugins/reimu/__init__.py

99 lines
3.5 KiB
Python
Raw Normal View History

2021-05-20 19:23:32 +08:00
from nonebot import on_command
from nonebot.adapters.cqhttp.permission import PRIVATE
from .data_source import from_reimu_get_info
from services.log import logger
2021-08-17 23:17:08 +08:00
from nonebot.adapters.cqhttp import Bot, PrivateMessageEvent
2021-05-20 19:23:32 +08:00
from nonebot.typing import T_State
2021-10-03 14:24:07 +08:00
from utils.utils import is_number, get_message_text, UserBlockLimiter, scheduler
2021-05-20 19:23:32 +08:00
from models.count_user import UserCount
2021-08-17 23:17:08 +08:00
from configs.config import COUNT_PER_DAY_REIMU, NICKNAME
2021-05-20 19:23:32 +08:00
2021-10-03 14:24:07 +08:00
__zx_plugin_name__ = "上车"
__plugin_usage__ = """
usage
* 请各位使用后不要转发 *
* 大部分解压密码是⑨ *
/ 并不推荐小色批使用此功能[主要是不够色目的不够明确] /
指令
上车 ?[page] [目的地]
示例上车 萝莉
示例上车 5 萝莉: 该目的地第5页停车场
ps: 请尽量提供具体的目的地名称
2021-05-20 19:23:32 +08:00
""".strip()
2021-10-03 14:24:07 +08:00
__plugin_des__ = "都坐稳了,老司机焊死了车门![仅限私聊]"
__plugin_cmd__ = ["上车 ?[page] [目的地]"]
__plugin_version__ = 0.1
__plugin_author__ = "HibiKier"
__plugin_settings__ = {
"level": 5,
"default_status": True,
"limit_superuser": False,
"cmd": ["上车"],
}
2021-05-20 19:23:32 +08:00
2021-10-03 14:24:07 +08:00
_ulmt = UserBlockLimiter()
2021-05-20 19:23:32 +08:00
2021-07-30 21:21:51 +08:00
reimu = on_command("上车", permission=PRIVATE, block=True, priority=1)
2021-05-20 19:23:32 +08:00
@reimu.args_parser
2021-07-30 21:21:51 +08:00
async def _(bot: Bot, event: PrivateMessageEvent, state: T_State):
if get_message_text(event.json()) in ["取消", "算了"]:
2021-05-20 19:23:32 +08:00
await reimu.finish("已取消操作..", at_sender=True)
if not get_message_text(event.json()):
2021-07-30 21:21:51 +08:00
await reimu.reject("没时间等了!快说你要去哪里?", at_sender=True)
state["keyword"] = get_message_text(event.json())
state["page"] = 1
2021-05-20 19:23:32 +08:00
@reimu.handle()
2021-07-30 21:21:51 +08:00
async def _(bot: Bot, event: PrivateMessageEvent, state: T_State):
if str(event.get_message()) in ["帮助"]:
2021-05-20 19:23:32 +08:00
await reimu.finish(__plugin_usage__)
2021-07-30 21:21:51 +08:00
if await UserCount.check_count(event.user_id, "reimu", COUNT_PER_DAY_REIMU):
await reimu.finish("今天已经没车了,请明天再来...", at_sender=True)
2021-05-20 19:23:32 +08:00
if _ulmt.check(event.user_id):
2021-07-30 21:21:51 +08:00
await reimu.finish("您还没下车呢,请稍等...", at_sender=True)
2021-09-05 02:21:38 +08:00
_ulmt.set_true(event.user_id)
2021-05-20 19:23:32 +08:00
msg = get_message_text(event.json())
args = msg.split(" ")
2021-07-30 21:21:51 +08:00
if msg in ["!", "", "?", "", ",", "", ".", ""]:
2021-05-20 19:23:32 +08:00
await reimu.finish(__plugin_usage__)
if msg:
if len(args) > 1 and is_number(args[0]):
2021-07-30 21:21:51 +08:00
state["keyword"] = args[1]
state["page"] = args[0]
2021-05-20 19:23:32 +08:00
else:
2021-07-30 21:21:51 +08:00
state["keyword"] = msg
state["page"] = 1
2021-05-20 19:23:32 +08:00
2021-07-30 21:21:51 +08:00
@reimu.got("keyword", "你的目的地是哪?")
async def _(bot: Bot, event: PrivateMessageEvent, state: T_State):
2021-05-20 19:23:32 +08:00
try:
2021-07-30 21:21:51 +08:00
keyword = state["keyword"]
page = state["page"]
await UserCount.add_count(event.user_id, "reimu")
2021-10-03 14:24:07 +08:00
await reimu.send(
f"已经帮你关好车门了,请等待发车(不加{NICKNAME}好友的话是欣赏不到旅途的风景的)", at_sender=True
)
2021-05-20 19:23:32 +08:00
reimu_report = await from_reimu_get_info(keyword, page)
if reimu_report:
await reimu.send(reimu_report)
else:
logger.error("Not found reimuInfo")
await reimu.send("没找着")
2021-09-05 02:21:38 +08:00
_ulmt.set_false(event.user_id)
2021-05-20 19:23:32 +08:00
except:
2021-09-05 02:21:38 +08:00
_ulmt.set_false(event.user_id)
2021-05-20 19:23:32 +08:00
@scheduler.scheduled_job(
2021-07-30 21:21:51 +08:00
"cron",
2021-05-20 19:23:32 +08:00
hour=0,
minute=1,
)
async def _():
await UserCount.reset_count()