【Python】将 kook 机器人和爱发电对接,实现 vip 自动化销售
demo 开源地址 https://github.com/musnows/Kook-Afd-Webhook-Bot
1. 简介
本文档主要讲解如何将 kook 机器人与爱发电的 webhook 功能进行对接
商品以 vip 作为示例,提供一个基础的 python-demo
主要流程如下
- 机器人提供 vip 商城命令,用户执行,机器人发送一张包含不同价位 vip 价格和购买 url 的卡片给用户(临时消息,只有这个用户能看到)
- 用户购买商品时,爱发电发送 webhook 给机器人
- 机器人获取 webhook 信息中的
custom_order_id
,解析出用户 id 和购买天数,自动给对应用户上 vip
相关文档
- 机器人所用框架:github.com/TWT233/khl.py
- 爱发电 webhook 接口文档:https://afdian.net/p/9c65d9cc617011ed81c352540025c377
开始前,你需要先拥有自己的 kook-bot,并注册
如果你想使用 CDK(即兑换码)的方式来分发 vip,可以看看我的 Valorant-Shop-CN/Kook-Valorant-Bot 项目
2.python-demo
2.1 webhook-api
要想和爱发电的 api 对接,首先 bot 自己需要维护一个 webhook 的 api-url。这也要求你的机器人是部署在可公网访问的环境中,否则爱发电的 webhook 无法送达。
- 爱发电开发者页面 https://afdian.net/dashboard/dev
- 该 url 必须为 https 协议,所以你还需要绑定域名并配置 ssl
同时,为了保证 webhook 中始终有 custom_order_id
字段,您需要告知您的用户,只能通过机器人生成的 url 来购买 vip。否则自动化流程将失效
- 机器人收到爱发电 webhook
- 解析 webhook 中的键值,获取到
custom_order_id
- 解析
custom_order_id
,获取到 kook 用户 id 和 vip 天数 - 给用户添加上 vip 天数
1 | custom_order_id=kook用户id:vip天数 |
处理代码详见 api.py 和 apiHandler.py
2.2 机器人
机器人命令如下
命令 | 说明 |
---|---|
/shop | 获取购买 vip 的卡片 |
/vip | 看看自己 vip 剩余时长 |
/vip-l | 获取 vip 用户列表(会刷掉过期的 vip 用户) |
/vip-test | 该命令只有 vip 用户才能执行,用于测试 vip 是否生效 |
/alive | 看看机器人活着不 |
/kill | 机器人下线,并保存文件 |
代码详见 main.py
2.2.1 vip 物品 url 获取
先创建你的 vip 店铺。爱发电的商品有隐藏
功能,隐藏后的商品将不会显示在主页上,这样也能实现用户只能通过 bot 提供的链接来访问购买的操作
这里我拿周 vip 和月 vip 作为示例
点击商品,进入详情页,点击发电
进入付款页面后,复制最上方的 url
1 | https://afdian.net/order/create?product_type=1&plan_id=9aea871c304911ed8ec452540025c377&sku=%5B%7B%22sku_id%22%3A%229aed6edc304911edbeb552540025c377%22,%22count%22%3A1%7D%5D |
我们要做的就是在这个 url 尾部添加上 custom_order_id
1 | &custom_order_id=kook用户id:vip天数 |
添加完毕后的链接如下
1 | https://afdian.net/order/create?product_type=1&plan_id=9aea871c304911ed8ec452540025c377&sku=%5B%7B%22sku_id%22%3A%229aed6edc304911edbeb552540025c377%22,%22count%22%3A1%7D%5D&custom_order_id=kook用户id:vip天数 |
复制到浏览器,仍可正常访问,代表配置无误
2.2.2 vip 物品 url 配置
找到 main.py
中的如下代码,将里面的 vip_item_link
替换成你自己的 url。如果需要添加更多商品,将两个 ----------
中间的部分多复制几份即可
1 |
|
2.2.3 启动机器人并配置 webhook
先安装依赖项(Python 版本 3.10)
1 | pip3.10 install -r requierments.txt |
- 配置文件示例
config/config.exp.json
- 在内部填写正确的机器人 token 字段后,重命名为
config.json
- 并将
config/log.exp
中的两个文件复制到log/
路径下
然后启动机器人
1 | python3.10 start.py |
看到如下输出即为启动成功
我们需要将 api 的地址填写到爱发电的 webhook url 中
记得开放对应端口防火墙,并正确绑定域名和开启 https
填写 url 后点击保存,爱发电会发送一条测试 webhook 给你的机器人。如果在预先定义的 debug_ch 中看到了如下卡片,则代表 webhook 配置成功
1 | [23-04-19 19:46:07] INFO:api.py:aifadian_webhook:31 | request | /afd |
kill 掉机器人后,在 log 文件中也能看到这次测试 webhook 的请求体
2.3 命令截图
2.3.1 基础测试
先测试一下机器人上线没有
刚开始时,没有 vip 用户
使用商城命令,获取购买按钮
点击按钮,会跳转到爱发电的付款页面,能看到 url 最后成功附着上了用户 id 和时间
1 | &custom_order_id=1961572535%3A7 |
url 中的 %3A
就是:
2.3.2 购入 vip 测试
如下,我购买了一个周 vip,机器人成功获取到了 webhook 体中的自定义订单 id
此时再次执行 vip 命令,能看到已经正确添加上了 7 天的 vip
日志文件也成功记录
测试完毕!
The end
有任何问题,都可以加入我的帮助服务器与我联系
本文档已被官方认可,并放置在了 kook开发者频道
的常见问题中🎉
- 最新
- 最热
- 最早
- 作者
点击重新获取 | 打开控制台