mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
85 lines
2.7 KiB
Python
85 lines
2.7 KiB
Python
from typing import List, Callable, Optional
|
||
|
||
from nonebot.adapters.onebot.v11 import GroupMessageEvent, MessageEvent
|
||
from nonebot.internal.matcher import Matcher
|
||
from nonebot.internal.params import Depends
|
||
from models.user_shop_gold_log import UserShopGoldLog
|
||
from models.bag_user import BagUser
|
||
from utils.message_builder import at
|
||
from utils.utils import get_message_at, get_message_face, get_message_img, get_message_text
|
||
|
||
|
||
def cost_gold(gold: int):
|
||
"""
|
||
说明:
|
||
插件方法调用使用金币
|
||
参数:
|
||
:param gold: 金币数量
|
||
"""
|
||
async def dependency(matcher: Matcher, event: GroupMessageEvent):
|
||
if (await BagUser.get_gold(event.user_id, event.group_id)) < gold:
|
||
await matcher.finish(at(event.user_id) + f"金币不足..该功能需要{gold}金币..")
|
||
await BagUser.spend_gold(event.user_id, event.group_id, gold)
|
||
await UserShopGoldLog.add_shop_log(event.user_id, event.group_id, 2, matcher.plugin_name, gold, 1)
|
||
|
||
return Depends(dependency)
|
||
|
||
|
||
async def _match(matcher: Matcher, event: MessageEvent, msg: Optional[str], func: Callable):
|
||
_list = func(event.message)
|
||
if not _list and msg:
|
||
await matcher.finish(msg)
|
||
return _list
|
||
|
||
|
||
def ImageList(msg: Optional[str] = None) -> List[str]:
|
||
"""
|
||
说明:
|
||
获取图片列表,含有msg时不能为空,为空时提示并结束事件
|
||
参数:
|
||
:param msg: 提示文本
|
||
"""
|
||
async def dependency(matcher: Matcher, event: MessageEvent):
|
||
return await _match(matcher, event, msg, get_message_img)
|
||
|
||
return Depends(dependency)
|
||
|
||
|
||
def AtList(msg: Optional[str] = None) -> List[str]:
|
||
"""
|
||
说明:
|
||
获取at列表,含有msg时不能为空,为空时提示并结束事件
|
||
参数:
|
||
:param msg: 提示文本
|
||
"""
|
||
async def dependency(matcher: Matcher, event: MessageEvent):
|
||
return await _match(matcher, event, msg, get_message_at)
|
||
|
||
return Depends(dependency)
|
||
|
||
|
||
def FaceList(msg: Optional[str] = None) -> List[str]:
|
||
"""
|
||
说明:
|
||
获取face列表,含有msg时不能为空,为空时提示并结束事件
|
||
参数:
|
||
:param msg: 提示文本
|
||
"""
|
||
async def dependency(matcher: Matcher, event: MessageEvent):
|
||
return await _match(matcher, event, msg, get_message_face)
|
||
|
||
return Depends(dependency)
|
||
|
||
|
||
def PlaintText(msg: Optional[str] = None) -> str:
|
||
"""
|
||
说明:
|
||
获取纯文本且,含有msg时不能为空,为空时提示并结束事件
|
||
参数:
|
||
:param msg: 提示文本
|
||
"""
|
||
async def dependency(matcher: Matcher, event: MessageEvent):
|
||
return await _match(matcher, event, msg, get_message_text)
|
||
|
||
return Depends(dependency)
|