# 添加商品和对应使用方法

在不修改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

# 注册商品和生效方法

注册商品方法可以通过功能添加商品替代,在代码中一般为启动注册


# 注册商品

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

# 完整代码


######################################
## 示例:在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