🆕 新增指令插件,新增雷神加速器操作指令
This commit is contained in:
169
utils/leigod.go
Normal file
169
utils/leigod.go
Normal file
@@ -0,0 +1,169 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/go-resty/resty/v2"
|
||||
"go-wechat/model"
|
||||
"log"
|
||||
)
|
||||
|
||||
// LeiGod
|
||||
// @description: 雷神加速器相关接口
|
||||
type LeiGod interface {
|
||||
Login() error // 登录
|
||||
Info() (model.LeiGodUserInfoResp, error) // 获取用户信息
|
||||
Pause() error // 暂停加速
|
||||
}
|
||||
|
||||
type leiGod struct {
|
||||
account, password string // 账号、密码
|
||||
token string
|
||||
}
|
||||
|
||||
// LeiGodUtil
|
||||
// @description: 创建一个雷神加速器工具类
|
||||
// @param userId
|
||||
// @return leiGodI
|
||||
func LeiGodUtil(account, password string) LeiGod {
|
||||
// 把密码md5一下
|
||||
hash := md5.New()
|
||||
hash.Write([]byte(password))
|
||||
password = fmt.Sprintf("%x", hash.Sum(nil))
|
||||
|
||||
return &leiGod{account: account, password: password}
|
||||
}
|
||||
|
||||
// Login
|
||||
// @description: 登录
|
||||
// @receiver l
|
||||
// @return string
|
||||
func (l *leiGod) Login() (err error) {
|
||||
// 组装参数
|
||||
param := map[string]any{
|
||||
"account_token": nil,
|
||||
"country_code": 86,
|
||||
"lang": "zh_CN",
|
||||
"os_type": 4,
|
||||
"mobile_num": l.account,
|
||||
"username": l.account,
|
||||
"password": l.password,
|
||||
"region_code": 1,
|
||||
"src_channel": "guanwang",
|
||||
"sem_ad_img_url": map[string]any{
|
||||
"btn_yrl": "",
|
||||
"url": "",
|
||||
},
|
||||
}
|
||||
pbs, _ := json.Marshal(param)
|
||||
|
||||
var loginResp model.Response[any]
|
||||
var resp *resty.Response
|
||||
|
||||
res := resty.New()
|
||||
resp, err = res.R().
|
||||
SetHeader("Content-Type", "application/json;chartset=utf-8").
|
||||
SetBody(string(pbs)).
|
||||
SetResult(&loginResp).
|
||||
Post("https://webapi.leigod.com/api/auth/login")
|
||||
if err != nil {
|
||||
log.Panicf("雷神加速器登录失败: %s", err.Error())
|
||||
}
|
||||
log.Printf("雷神加速器登录结果: %s", unicodeToText(resp.String()))
|
||||
|
||||
// 返回状态码不是0表示有错
|
||||
if loginResp.Code != 0 {
|
||||
return errors.New(loginResp.Msg)
|
||||
}
|
||||
|
||||
// 将Data字段转为结构体
|
||||
var bs []byte
|
||||
if bs, err = json.Marshal(loginResp.Data); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
var loginInfo model.LeiGodLoginResp
|
||||
if err = json.Unmarshal(bs, &loginInfo); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if loginInfo.LoginInfo.AccountToken != "" {
|
||||
l.token = loginInfo.LoginInfo.AccountToken
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Info
|
||||
// @description: 获取用户信息
|
||||
// @receiver l
|
||||
// @return string
|
||||
func (l *leiGod) Info() (ui model.LeiGodUserInfoResp, err error) {
|
||||
// 组装参数
|
||||
param := map[string]any{
|
||||
"account_token": l.token,
|
||||
"lang": "zh_CN",
|
||||
"os_type": 4,
|
||||
}
|
||||
pbs, _ := json.Marshal(param)
|
||||
|
||||
var userInfoResp model.Response[model.LeiGodUserInfoResp]
|
||||
var resp *resty.Response
|
||||
|
||||
res := resty.New()
|
||||
resp, err = res.R().
|
||||
SetHeader("Content-Type", "application/json;chartset=utf-8").
|
||||
SetBody(string(pbs)).
|
||||
SetResult(&userInfoResp).
|
||||
Post("https://webapi.leigod.com/api/user/info")
|
||||
if err != nil {
|
||||
log.Panicf("雷神加速器用户信息获取失败: %s", err.Error())
|
||||
}
|
||||
log.Printf("雷神加速器用户信息获取结果: %s", unicodeToText(resp.String()))
|
||||
|
||||
// 返回状态码不是0表示有错
|
||||
if userInfoResp.Code != 0 {
|
||||
err = errors.New(userInfoResp.Msg)
|
||||
return
|
||||
}
|
||||
|
||||
return userInfoResp.Data, err
|
||||
}
|
||||
|
||||
// Pause
|
||||
// @description: 暂停加速
|
||||
// @receiver l
|
||||
// @return string
|
||||
func (l *leiGod) Pause() (err error) {
|
||||
// 组装参数
|
||||
param := map[string]any{
|
||||
"account_token": l.token,
|
||||
"lang": "zh_CN",
|
||||
"os_type": 4,
|
||||
}
|
||||
pbs, _ := json.Marshal(param)
|
||||
|
||||
var pauseResp model.Response[any]
|
||||
var resp *resty.Response
|
||||
|
||||
res := resty.New()
|
||||
resp, err = res.R().
|
||||
SetHeader("Content-Type", "application/json;chartset=utf-8").
|
||||
SetBody(string(pbs)).
|
||||
SetResult(&pauseResp).
|
||||
Post("https://webapi.leigod.com/api/user/pause")
|
||||
if err != nil {
|
||||
log.Panicf("雷神加速器暂停失败: %s", err.Error())
|
||||
}
|
||||
log.Printf("雷神加速器暂停结果: %s", unicodeToText(resp.String()))
|
||||
|
||||
// 返回状态码不是0表示有错
|
||||
if pauseResp.Code != 0 {
|
||||
err = errors.New(pauseResp.Msg)
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
15
utils/string.go
Normal file
15
utils/string.go
Normal file
@@ -0,0 +1,15 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// unicodeToText
|
||||
// @description: unicode转文本
|
||||
// @param str
|
||||
// @return dst
|
||||
func unicodeToText(str string) (dst string) {
|
||||
dst, _ = strconv.Unquote(strings.Replace(strconv.Quote(str), `\\u`, `\u`, -1))
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user