-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathr6robot.go
65 lines (60 loc) · 1.54 KB
/
r6robot.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package r6robot
import (
"os"
"time"
login "github.com/AEmpire/r6robot/login"
message "github.com/AEmpire/r6robot/message"
plugins "github.com/AEmpire/r6robot/plugins"
)
//R6robot 启动
func R6robot() {
c := make(chan message.MessageRcvd)
quit := make(chan string)
//添加容错机制,返回错误信息十次重新登录
errCount := 0
msgNum := time.Now().Unix() % 1E4 * 1E4
for {
get, err := login.Login()
if err != nil {
fd, _ := os.OpenFile("/home/shili/error.log", os.O_RDWR|os.O_APPEND, 0644)
defer fd.Close()
log := time.Now().String() + err.Error()
fd.WriteString(log)
return
}
go message.Poll(get, c, quit)
send_messages:
for {
msgNum++
var msgSent string
if errCount > 10 {
quit <- "quit"
fd, _ := os.OpenFile("/home/shili/error.log", os.O_RDWR|os.O_APPEND, 0644)
defer fd.Close()
log := time.Now().String() + " ErrMsg " + "\n"
fd.WriteString(log)
break send_messages
}
select {
case msgGet := <-c:
statusCode := msgGet.Retcode
if statusCode == 0 && msgGet.Errmsg != "error" {
msgType := msgGet.Result[0].PollType
msgContent := msgGet.Result[0].Value.Content
groupCode := msgGet.Result[0].Value.GroupCode
if len(msgContent) > 1 && msgType == "group_message" {
if msgContent[1] == "@拆迁机器人" {
msgSent, err = plugins.GetR6Stats(msgContent[4].(string))
if err != nil {
break
}
message.Send(groupCode, msgNum, msgSent, get)
}
}
}
case <-quit:
break send_messages
}
}
}
}