80 lines
1.5 KiB
Go
80 lines
1.5 KiB
Go
package clicker
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"encoding/json"
|
|
"fmt"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/wzrayyy/tappin/internal/entity/user"
|
|
)
|
|
|
|
func (c *Clicker) ClaimDailyKeys() error {
|
|
m, err := json.Marshal(&claimDailyCipherRequest{
|
|
Cipher: base64.StdEncoding.EncodeToString([]byte(strings.Repeat("0", 10) + fmt.Sprintf("|%d", c.telegramUserID))),
|
|
})
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = c.requestAndDecode("start-keys-minigame", nil, nil)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return c.requestAndDecode("claim-daily-keys-minigame", m, nil)
|
|
}
|
|
|
|
func (c *Clicker) ClaimDailyCipher() error {
|
|
cipher, err := c.clickerConfig.DailyCipher.Decode()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
m, err := json.Marshal(claimDailyCipherRequest{
|
|
Cipher: cipher,
|
|
})
|
|
|
|
return c.requestAndDecode("claim-daily-cipher", m, nil)
|
|
}
|
|
|
|
func (c *Clicker) Tap(taps int) error {
|
|
c.locks.User.RLock()
|
|
m, err := json.Marshal(tapRequest{
|
|
Count: taps,
|
|
AvailableTaps: c.user.AvailableTaps - taps,
|
|
Timestamp: time.Now().UnixMilli(),
|
|
})
|
|
c.locks.User.RUnlock()
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var u user.Response
|
|
|
|
err = c.requestAndDecode("tap", m, &u)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
c.locks.User.Lock()
|
|
c.user = &u
|
|
c.locks.User.Unlock()
|
|
|
|
return nil
|
|
}
|
|
|
|
func (c *Clicker) BuyBoost(boost_id string) error {
|
|
r, err := json.Marshal(buyBoostRequest{
|
|
BoostID: boost_id,
|
|
Timestamp: time.Now().UnixMilli(),
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return c.requestAndDecode("buy-boost", r, nil)
|
|
}
|