hibikier
# 添加商品和对应使用方法
在不修改shop插件代码的情况,添加商品和对应生效方法
# 导入方法
# 导入添加商品的 export 和 注册方法的 export
from nonebot.plugin import require
# use 提供了一个方法
# use.registered_use(goods_name: str, **kwargs) : 注册插件使用方法
# shop提供了三个方法
#
# 注册商品
# shop.registered_goods(
# name: str, # 商品名称
# price: int, # 商品价格
# des: str, # 商品简介
# discount: Optional[float] = 1, # 商品折扣
# limit_time: Optional[int] = 0, # 商品限时
# **kwargs,
# )
# 删除商品
# shop.delete_goods(name: str, id_: int)
# 更新商品
# shop.update_goods(**kwargs)
use = require("use")
shop = require("shop_handle")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 注册商品和生效方法
注册商品方法可以通过功能
添加商品替代,在代码中一般为启动注册
# 注册商品
await shop.registered_goods(
"好感度双倍加持卡Ⅰ", 30, "下次签到双倍好感度概率 + 10%(谁才是真命天子?)(同类商品将覆盖)"
)
# 定义生效方法
# 注册商品对应的使用方法,技术力不够,目前参数仅仅支持**kwargs
async def sign_card(**kwargs):
goods_name = kwargs.get('goods_name') # 所有方法中都会含有goods_name
user_id = kwargs.get('user_id') # 所有方法中都会含有user_id
group_id = kwargs.get('group_id') # 所有方法中都会含有group_id
... # 处理逻辑
# 进行方法注册
use.registered_use("好感度双倍加持卡Ⅰ", sign_card)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 完整代码
######################################
## 示例:在Bot启动时导入商品和对应方法 ##
#####################################
from nonebot import Driver
from nonebot.plugin import require
driver: Driver = nonebot.get_driver()
use = require("use")
shop = require("shop_handle")
@driver.on_startup
async def _():
# 生效方法
async def sign_card(**kwargs):
goods_name = kwargs.get('goods_name')
user_id = kwargs['user_id']
group_id = kwargs['group_id']
print(f"USER {user_id} GROUP {group_id} 这个道具:{goods_name}使用成功了")
# 在数据库中注册商品数据
await shop.registered_goods(
"好感度双倍加持卡Ⅰ", 30, "下次签到双倍好感度概率 + 10%(谁才是真命天子?)(同类商品将覆盖)"
)
# 注册商品生效方法
use.registered_use("好感度双倍加持卡Ⅰ", sign_card)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30