商店配置
概览
添加商店的商品信息与使用函数
方法介绍
使用方法注册函数
from nonebot_plugin_alconna import UniMessage, UniMsg
from nonebot_plugin_uninfo import Uninfo
@shop_register(
name="测试道具A",
price=99,
des="随便侧而出",
load_status=False,
icon="sword.png",
**{"prob": 100} # 自定义参数传递
)
async def _(
user_id: str, # 用户id
group_id: str | None, # 群组id
bot: Bot, # Bot实例
event: Event, # event实例
num: int, # 道具使用个数
send_success_msg: bool, # 是否发送使用成功消息
max_num_limit: int, # 最大使用个数限制
session: Uninfo, # Uninfo实例
message: UniMsg # UniMsg实例
prob: int # 自定义参数
):
print(user_id, group_id, "使用测试道具")
return "谢谢你使用道具" # 在这里返回信息将会发送给用户,不返回时将发送使用道具默认回复
使用方法中的参数可以根据自身需求来
例如当仅需要用户id和群组id时,可以使用以下
from nonebot_plugin_alconna import UniMessage, UniMsg
from nonebot_plugin_uninfo import Uninfo
@shop_register(
name="测试道具A",
price=99,
des="随便侧而出",
load_status=True, # 为False时不加载该函数
icon="sword.png",
**{"prob": 100} # 自定义参数传递
)
async def _(user_id: str, group_id: str | None):
print(user_id, group_id, "使用测试道具")
道具使用前函数
函数参数规则与注册函数相同
道具名称作为键值,相同道具可以拥有多个使用前函数
可以抛出NotMeetUseConditionsException
异常,阻断使用,并返回信息
from zhenxun.utils.decorator.shop import NotMeetUseConditionsException
from nonebot_plugin_alconna import UniMessage, UniMsg
from nonebot_plugin_uninfo import Uninfo
@shop_register.before_handle(name="测试道具A")
async def _(user_id: str, group_id: str):
print(user_id, group_id, "第一个使用前函数(before handle)")
@shop_register.before_handle(name="测试道具A", load_status=False) # load_status为False,不加载该函数
async def _(user_id: str, group_id: str):
print(user_id, group_id, "第二个使用前函数(before handle)")
raise NotMeetUseConditionsException("太笨了!") # 抛出异常,阻断使用,并返回信息
道具使用后函数
与使用前函数相同,但无法抛出NotMeetUseConditionsException
@shop_register.after_handle(name="测试道具A")
async def _(user_id: str, group_id: str):
print(user_id, group_id, "第一个使用后函数(after handle)")
@shop_register.after_handle(name="测试道具A")
async def _(user_id: str, group_id: str):
print(user_id, group_id, "第二个使用后函数(after handle)")
多个道具使用同 一个注册函数(以签到为栗子)
可以使用元祖参数来传递多个道具名称和配置
使用方法注册函数
from nonebot_plugin_alconna import UniMessage, UniMsg
from nonebot_plugin_uninfo import Uninfo
@shop_register(
name=("好感度双倍加持卡Ⅰ", "好感度双倍加持卡Ⅱ", "好感度双倍加持卡Ⅲ"),
price=(30, 150, 250),
des=(
"