-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathtasks.go
44 lines (39 loc) · 928 Bytes
/
tasks.go
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package bilicoin
import (
"errors"
"time"
)
var TaskMap = map[string]Task{
"drop-coin": TaskDropCoin,
"silver-2-coin": TaskSilver2Coin,
}
func TaskSilver2Coin(user *BiliUser) error {
// 获取用户信息失败
if err := user.GetBiliWallet(); err != nil {
return err
}
// 使用银瓜子兑换硬币一枚
if user.Bi.Silver >= 700 {
return user.Silver2Coin()
}
return errors.New("not enough silver")
}
const maxLoopCount = 5 + 3 // only three failures are allowed...
func TaskDropCoin(user *BiliUser) error {
// 获取日志失败
// 过期、未知错误、服务不可达、解析错误
if err := user.GetBiliCoinLog(); err != nil {
return err
}
for loopCount := 0; loopCount < maxLoopCount; loopCount++ {
if user.DropCoinCount > 4 {
user.InfoUpdate()
return nil
}
user.RandDrop()
ra := Random(60)
time.Sleep(ra)
}
user.InfoUpdate()
return errors.New("max retries reached")
}