zhenxun_bot/zhenxun/plugins/pix_gallery/pix_show_info.py
2024-08-10 02:25:04 +08:00

86 lines
3.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from nonebot.adapters import Bot
from nonebot.plugin import PluginMetadata
from nonebot_plugin_alconna import Alconna, Args, Arparma, Match, on_alconna
from nonebot_plugin_session import EventSession
from zhenxun.configs.utils import PluginExtraData
from zhenxun.services.log import logger
from zhenxun.utils.message import MessageUtils
from ._data_source import gen_keyword_pic, get_keyword_num
from ._model.pixiv_keyword_user import PixivKeywordUser
__plugin_meta__ = PluginMetadata(
name="查看pix图库",
description="让我看看管理员私藏了多少货",
usage="""
指令:
我的pix关键词
显示pix关键词
查看pix图库 ?[tag]: 查看指定tag图片数量为空时查看整个图库
""".strip(),
extra=PluginExtraData(
author="HibiKier",
version="0.1",
).dict(),
)
_my_matcher = on_alconna(Alconna("我的pix关键词"), priority=5, block=True)
_show_matcher = on_alconna(Alconna("显示pix关键词"), priority=5, block=True)
_pix_matcher = on_alconna(
Alconna("查看pix图库", Args["keyword?", str]), priority=5, block=True
)
@_my_matcher.handle()
async def _(arparma: Arparma, session: EventSession):
data = await PixivKeywordUser.filter(user_id=session.id1).values_list(
"keyword", flat=True
)
if not data:
await MessageUtils.build_message("您目前没有提供任何Pixiv搜图关键字...").finish(
reply_to=True
)
await MessageUtils.build_message(f"您目前提供的如下关键字:\n\t" + "".join(data)).send() # type: ignore
logger.info("查看我的pix关键词", arparma.header_result, session=session)
@_show_matcher.handle()
async def _(bot: Bot, arparma: Arparma, session: EventSession):
_pass_keyword, not_pass_keyword = await PixivKeywordUser.get_current_keyword()
if _pass_keyword or not_pass_keyword:
image = await gen_keyword_pic(
_pass_keyword, not_pass_keyword, session.id1 in bot.config.superusers
)
await MessageUtils.build_message(image).send() # type: ignore
else:
if session.id1 in bot.config.superusers:
await MessageUtils.build_message(
f"目前没有已收录或待收录的搜索关键词..."
).send()
else:
await MessageUtils.build_message(f"目前没有已收录的搜索关键词...").send()
@_pix_matcher.handle()
async def _(bot: Bot, arparma: Arparma, session: EventSession, keyword: Match[str]):
_keyword = ""
if keyword.available:
_keyword = keyword.result
count, r18_count, count_, setu_count, r18_count_ = await get_keyword_num(_keyword)
await MessageUtils.build_message(
f"PIX图库{_keyword}\n"
f"总数:{count + r18_count}\n"
f"美图:{count}\n"
f"R18{r18_count}\n"
f"---------------\n"
f"Omega图库{_keyword}\n"
f"总数:{count_ + setu_count + r18_count_}\n"
f"美图:{count_}\n"
f"色图:{setu_count}\n"
f"R18{r18_count_}"
).send()
logger.info("查看pix图库", arparma.header_result, session=session)