一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情。
先声明下,有点标题党了。我也没想到我也会有这么一天~~~
起因
掘金上的 bugfix 游戏出来有一段时间了,但是有一个诟病一直不给解决,是什么呢?
bug收集要从两个端进行!
由于两端的bug互相不可见,每天都要到web端和app端操作收集一次bug,而且3天不收集就收集不了?这就整的很恶心,我也想社区反馈了这个问题,不知道什么时候能合并。
为了获得更好的游戏体验,所以我写了一个自动收集bug和自动参加bugfix游戏的脚本。
本着拿来即用的道理。我直接参考了自动签到、抽奖?弱爆了!简简单单教你自动挖矿!这篇文章。在他的基础上添加了我的自动脚本。
代码解析
- 我们需要找到操作
获取bug->收集bug->参加bugfix相关的http请求 - 以下接口都需要
aid、uid、cookie,如果不知道怎么获取,可以参考上面的推荐的文章。
获取没有收集的bug列表
// 没有收集的bug列表
const NOT_COLLECT_URL = `https://api.juejin.cn/user_api/v1/bugfix/not_collect?aid=${aid}&uuid=${uid}`
- post请求
- 通过这个接口,我们可以拿到一个bug列表,包含参数
- bug类型:
bug_type - bug生成时间
bug_time
- bug类型:
- 这两个参数是收集bug时需要用到的
收集bug
// 收集bug
const COLLECT_URL = `https://api.juejin.cn/user_api/v1/bugfix/collect?aid=${aid}&uuid=${uid}`
- post请求
- 这个接口就需要刚刚的参数来调用了,并且调用一次收集一个(模拟手点的过程),所以写了个简单的定时请求
const collectBugGame = async () => {
const notCollectList = await get_not_collect()
// console.log(notCollectList);
// 防止死循环
if (!notCollectList.length) return Promise.resolve()
const collectRes = notCollectList.map((bug) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(collect(bug))
}, 1000);
})
})
console.log('收集完了');
return await Promise.all(collectRes)
}
参加bugfix游戏
- 参加bugfix游戏需要知道以下内容
- 当前场次是否开始
- 当前用户拥有的bug数量
- 当前场次修复的bug数量
- 为什么需要知道当前场次修复的bug数量和当前用户拥有的bug数量呢?因为当前场次要修复10个以上的bug才能够获得奖励,否则是没有奖励的。所以我们需要知道我们手里现在是否有10个以上的bug,有的话再参加游戏。
// 是否是第一次修复bug,并且有10个bug可修复
const isFirstBugfix = bugfixRes.award_status === 1 && bugfixUser.bug_fix_num < 10 && bugfixUser.user_own_bug >= 10
// 是否要继续修复bug
const isContinueBugfix = bugfixRes.award_status === 1 && bugfixUser.bug_fix_num >= 10 && bugfixUser.user_own_bug >= 0
// 游戏开始,并且第一次参加
if (isFirstBugfix) {
handleBugfix({ competition_id, bug_fix_num: 10, not_self: 0 })
// 继续修复bug
} else if (isContinueBugfix) {
handleBugfix({ competition_id, bug_fix_num: bugfixUser.user_own_bug, not_self: 0 })
}
- 定时每天参加一次,反正有修复10个bug就有奖励,多两个少两个都无所谓
- 最后在自动签到逻辑中调用就可以了。
- 这样就完成了自动签到、沾喜气、挖矿、修bug等活动的参加啦。
总结
目前的脚本只能收集web端的bug,为啥不做app端的?因为我没做过App端的请求抓取,看不到接口。
有了云函数的确是方便我们去做一下小功能了,像以前想做个定时脚本还要懂linux命令啥的,现在我们只需要把逻辑写好就行了,云函数就帮我们维护了。
最后附上github地址