This commit is contained in:
cdle 2021-08-19 16:14:05 +08:00
parent 63a444d483
commit 66845a69ec
6 changed files with 113 additions and 118 deletions

View File

@ -116,30 +116,14 @@ func (c *LoginController) GetQrcode() {
cookies = strings.Join(rsp.Header.Values("Set-Cookie"), " ")
okl_token := FetchJdCookieValue("okl_token", cookies)
data, _ = qrcode.Encode(url, qrcode.Medium, 256)
tgid := c.GetQueryInt("tgid")
qqid := c.GetQueryInt("qqid")
qqgid := c.GetQueryInt("qqgid")
qqguid := c.GetQueryInt("qqguid")
id := 0
bot := ""
if tgid != 0 {
bot = "tg"
id = tgid
}
if qqid != 0 {
bot = "qq"
id = qqid
}
if qqgid != 0 {
bot = "qqg"
id = qqgid
}
JdCookieRunners.Store(st.Token, []interface{}{cookie, okl_token, bot, id, qqguid})
bot := c.GetString("tp")
uid := c.GetQueryInt("uid")
gid := c.GetQueryInt("gid")
JdCookieRunners.Store(st.Token, []interface{}{cookie, okl_token, bot, uid, gid})
if bot != "" {
c.Ctx.ResponseWriter.Write(data)
return
}
c.SetSession("jd_token", st.Token)
c.SetSession("jd_cookie", cookie)
c.SetSession("jd_okl_token", okl_token)
@ -157,33 +141,47 @@ func init() {
cookie := vv[0].(string)
okl_token := vv[1].(string)
bot := vv[2].(string)
id := vv[3].(int)
guid := vv[4].(int)
uid := vv[3].(int)
gid := vv[4].(int)
// fmt.Println(jd_token, cookie, okl_token)
result, ck := CheckLogin(jd_token, cookie, okl_token)
// fmt.Println(result)
switch result {
case "成功":
if bot == "qq" {
go models.SendQQ(int64(id), "扫码成功")
ck.Update(models.QQ, id)
} else if bot == "tg" {
ck.Update(models.Telegram, id)
go models.SendTgMsg(int(id), "扫码成功")
} else if bot == "qqg" {
ck.Update(models.QQ, guid)
go models.SendQQGroup(int64(id), int64(guid), "扫码成功")
switch bot {
case "qq", "qqg":
ck.Update(models.QQ, uid)
if gid != 0 {
go models.SendQQGroup(int64(uid), int64(gid), "扫码成功")
} else {
go models.SendQQ(int64(uid), "扫码成功")
}
case "tg", "tgg":
ck.Update(models.Telegram, uid)
if gid != 0 {
go models.SendTggMsg(int(uid), int(gid), "扫码成功")
} else {
go models.SendTgMsg(int(uid), "扫码成功")
}
}
case "授权登录未确认":
case "":
default: //失效
if bot == "qq" {
go models.SendQQ(int64(id), "扫码失败")
} else if bot == "tg" {
go models.SendTgMsg(int(id), "扫码失败")
} else if bot == "qqg" {
go models.SendQQGroup(int64(id), int64(guid), "扫码失败")
switch bot {
case "qq", "qqg":
ck.Update(models.QQ, uid)
if gid != 0 {
go models.SendQQGroup(int64(uid), int64(gid), "扫码失败")
} else {
go models.SendQQ(int64(uid), "扫码失败")
}
case "tg", "tgg":
ck.Update(models.Telegram, uid)
if gid != 0 {
go models.SendTggMsg(int(uid), int(gid), "扫码失败")
} else {
go models.SendTgMsg(int(uid), "扫码失败")
}
}
}
}

5
go.mod
View File

@ -14,9 +14,11 @@ require (
github.com/buger/jsonparser v1.1.1
github.com/go-playground/locales v0.13.0
github.com/go-playground/universal-translator v0.17.0
github.com/go-playground/validator/v10 v10.4.1 // indirect
github.com/guonaihong/gout v0.2.1
github.com/leodido/go-urn v1.2.1 // indirect
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible
github.com/mattn/go-isatty v0.0.13 // indirect
github.com/pkg/errors v0.9.1
github.com/robfig/cron/v3 v3.0.1
github.com/sirupsen/logrus v1.8.1
@ -26,10 +28,11 @@ require (
github.com/tuotoo/qrcode v0.0.0-20190222102259-ac9c44189bf2
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e
golang.org/x/net v0.0.0-20210614182718-04defd469f4e // indirect
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b
gopkg.in/go-playground/assert.v1 v1.2.1 // indirect
gopkg.in/go-playground/validator.v9 v9.31.0
gopkg.in/tucnak/telebot.v2 v2.3.5
gopkg.in/tucnak/telebot.v2 v2.4.0
gopkg.in/yaml.v2 v2.2.8
gorm.io/driver/mysql v1.1.2
gorm.io/driver/postgres v1.1.0

13
go.sum
View File

@ -115,8 +115,9 @@ github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8c
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no=
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY=
github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
github.com/go-redis/redis v6.14.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
github.com/go-redis/redis/v7 v7.4.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg=
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
@ -321,8 +322,9 @@ github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd
github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA=
github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-sqlite3 v1.14.5/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI=
github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U=
@ -605,8 +607,9 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE=
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@ -699,8 +702,8 @@ gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3M
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/tucnak/telebot.v2 v2.3.5 h1:TdMJTlG8kvepsvZdy/gPeYEBdwKdwFFjH1AQTua9BOU=
gopkg.in/tucnak/telebot.v2 v2.3.5/go.mod h1:BgaIIx50PSRS9pG59JH+geT82cfvoJU/IaI5TJdN3v8=
gopkg.in/tucnak/telebot.v2 v2.4.0 h1:nOeqOWnOAD3dzbKW+NRumd8zjj5vrWwSa0WRTxvgfag=
gopkg.in/tucnak/telebot.v2 v2.4.0/go.mod h1:BgaIIx50PSRS9pG59JH+geT82cfvoJU/IaI5TJdN3v8=
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

View File

@ -27,8 +27,7 @@ var ListenQQPrivateMessage = func(uid int64, msg string) {
var ListenQQGroupMessage = func(gid int64, uid int64, msg string) {
if gid == Config.QQGroupID {
if Config.QbotPublicMode {
SendQQGroup(gid, uid, handleMessage(msg, "qqg", int(gid), int(uid)))
SendQQGroup(gid, uid, handleMessage(msg, "qqg", int(uid), int(gid)))
} else {
SendQQ(uid, handleMessage(msg, "qq", int(uid)))
}
@ -57,37 +56,20 @@ var sendMessagee = func(msg string, msgs ...interface{}) {
return
}
tp := msgs[1].(string)
id := msgs[2].(int)
uid := msgs[2].(int)
gid := 0
if len(msgs) == 4 {
gid = msgs[3].(int)
}
switch tp {
case "tg":
SendTgMsg(id, msg)
SendTgMsg(uid, msg)
case "tgg":
SendTggMsg(uid, gid, msg)
case "qq":
SendQQ(int64(id), msg)
SendQQ(int64(uid), msg)
case "qqg":
SendQQGroup(int64(id), int64(msgs[3].(int)), msg)
}
}
var sendAdminMessagee = func(msg string, msgs ...interface{}) {
if len(msgs) == 0 {
return
}
tp := msgs[1].(string)
id := msgs[2].(int)
switch tp {
case "tg":
if Config.TelegramUserID == id {
SendTgMsg(id, msg)
}
case "qq":
if int(Config.QQID) == id {
SendQQ(int64(id), msg)
}
case "qqg":
uid := msgs[3].(int)
if int(Config.QQID) == uid {
SendQQGroup(int64(id), int64(uid), msg)
}
SendQQGroup(int64(uid), int64(gid), msg)
}
}
@ -96,18 +78,13 @@ var isAdmin = func(msgs ...interface{}) bool {
return false
}
tp := msgs[1].(string)
id := msgs[2].(int)
uid := msgs[2].(int)
switch tp {
case "tg":
if Config.TelegramUserID == id {
case "tg", "tgg":
if int(Config.TelegramUserID) == uid {
return true
}
case "qq":
if int(Config.QQID) == id {
return true
}
case "qqg":
uid := msgs[3].(int)
case "qq", "qqg":
if int(Config.QQID) == uid {
return true
}
@ -118,7 +95,11 @@ var isAdmin = func(msgs ...interface{}) bool {
var handleMessage = func(msgs ...interface{}) interface{} {
msg := msgs[0].(string)
tp := msgs[1].(string)
id := msgs[2].(int)
uid := msgs[2].(int)
gid := 0
if len(msgs) == 4 {
gid = msgs[3].(int)
}
switch msg {
case "status", "状态":
if !isAdmin(msgs...) {
@ -126,14 +107,9 @@ var handleMessage = func(msgs ...interface{}) interface{} {
}
return Count()
case "sign", "打卡":
return "打卡成功"
return "打卡成功,许愿币+1"
case "qrcode", "扫码", "二维码", "scan":
url := ""
if tp == "qqg" {
url = fmt.Sprintf("http://127.0.0.1:%d/api/login/qrcode.png?%vid=%v&qqguid=%v", web.BConfig.Listen.HTTPPort, tp, id, msgs[3].(int))
} else {
url = fmt.Sprintf("http://127.0.0.1:%d/api/login/qrcode.png?%vid=%v", web.BConfig.Listen.HTTPPort, tp, id)
}
url := fmt.Sprintf("http://127.0.0.1:%d/api/login/qrcode.png?tp=%s&uid=%d&gid=%d", web.BConfig.Listen.HTTPPort, tp, uid, gid)
rsp, err := httplib.Get(url).Response()
if err != nil {
return nil
@ -151,19 +127,19 @@ var handleMessage = func(msgs ...interface{}) interface{} {
if !isAdmin(msgs...) {
return "你没有权限操作"
}
sendAdminMessagee("小滴滴重启程序", msgs...)
sendMessagee("小滴滴重启程序", msgs...)
Daemon()
return nil
case "查询", "query":
cks := GetJdCookies()
tmp := []JdCookie{}
for _, ck := range cks {
if tp == "qq" {
if ck.QQ == id {
if tp == "qq" || tp == "qqg" {
if ck.QQ == uid {
tmp = append(tmp, ck)
}
} else if tp == "qqg" {
if ck.QQ == msgs[3].(int) {
} else if tp == "tg" || tp == "tgg" {
if ck.Telegram == uid {
tmp = append(tmp, ck)
}
}
@ -177,7 +153,7 @@ var handleMessage = func(msgs ...interface{}) interface{} {
return nil
default:
{ //tyt
ss := regexp.MustCompile(`packetId=(\S+!!)`).FindStringSubmatch(msg)
ss := regexp.MustCompile(`packetId=(\S+)&currentActId`).FindStringSubmatch(msg)
if len(ss) > 0 {
runTask(&Task{Path: "jd_tyt.js", Envs: []Env{
{Name: "tytpacketId", Value: ss[1]},
@ -196,13 +172,10 @@ var handleMessage = func(msgs ...interface{}) interface{} {
}
if CookieOK(&ck) {
xyb++
if tp == "qq" {
ck.QQ = id
} else if tp == "tg" {
ck.Telegram = id
} else if tp == "qqg" {
ck.QQ = msgs[3].(int)
if tp == "qq" || tp == "qqg" {
ck.QQ = uid
} else if tp == "tg" || tp == "tgg" {
ck.Telegram = uid
}
if nck, err := GetJdCookie(ck.PtPin); err == nil {
nck.InPool(ck.PtKey)
@ -274,19 +247,16 @@ var handleMessage = func(msgs ...interface{}) interface{} {
return nil
case "许愿":
if tp == "qqg" {
id = msgs[3].(int)
}
b := 0
for _, ck := range GetJdCookies() {
if id == ck.QQ || id == ck.Telegram {
if uid == ck.QQ || uid == ck.Telegram {
b++
}
}
if b <= 0 {
return "许愿币不足"
} else {
(&JdCookie{}).Push(fmt.Sprintf("%d许愿%s许愿币余额%d。", id, v, b))
(&JdCookie{}).Push(fmt.Sprintf("%d许愿%s许愿币余额%d。", uid, v, b))
return "收到许愿"
}
case "扣除许愿币":

View File

@ -1,6 +1,7 @@
package models
import (
"fmt"
"net/http"
"time"
@ -25,12 +26,25 @@ func initTgBot() {
return
}
b.Handle(tb.OnText, func(m *tb.Message) {
rt := handleMessage(m.Text, "tg", m.Sender.ID)
switch rt.(type) {
case string:
b.Send(m.Sender, rt.(string))
case *http.Response:
b.SendAlbum(m.Sender, tb.Album{&tb.Photo{File: tb.FromReader(rt.(*http.Response).Body)}})
fmt.Println(m.Text, m.FromGroup())
if !m.FromGroup() {
rt := handleMessage(m.Text, "tg", m.Sender.ID)
fmt.Println(rt)
switch rt.(type) {
case string:
b.Send(m.Sender, rt.(string))
case *http.Response:
b.SendAlbum(m.Sender, tb.Album{&tb.Photo{File: tb.FromReader(rt.(*http.Response).Body)}})
}
} else {
rt := handleMessage(m.Text, "tgg", m.Sender.ID, int(m.Chat.ID))
// fmt.Println(rt)
switch rt.(type) {
case string:
b.Send(m.Chat, rt.(string), &tb.SendOptions{ReplyTo: m})
case *http.Response:
b.SendAlbum(m.Chat, tb.Album{&tb.Photo{File: tb.FromReader(rt.(*http.Response).Body)}}, &tb.SendOptions{ReplyTo: m})
}
}
})
logs.Info("监听tgbot")
@ -38,9 +52,16 @@ func initTgBot() {
}()
}
func SendTgMsg(id int, msg string) {
if b == nil || id == 0 {
func SendTgMsg(uid int, msg string) {
if b == nil || uid == 0 {
return
}
b.Send(&tb.User{ID: id}, msg)
b.Send(&tb.User{ID: uid}, msg)
}
func SendTggMsg(uid int, gid int, msg string) {
if b == nil || uid == 0 {
return
}
b.Send(&tb.Chat{ID: int64(gid)}, msg)
}

View File

@ -80,7 +80,7 @@ func Update(msgs ...interface{}) error {
if err != nil {
return errors.New("小滴滴编译失败:" + err.Error())
} else {
sendAdminMessagee("小滴滴编译成功", msgs...)
sendMessagee("小滴滴编译成功", msgs...)
}
return nil
}