-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
118 lines (93 loc) · 2.78 KB
/
main.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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package main
import(
"log"
"strings"
"time"
"github.com/ztrue/shutdown"
"os"
// "github.com/WheatleyHDD/BetterThanGhostlyBot/utils"
"github.com/WheatleyHDD/BetterThanGhostlyBot/globals"
"github.com/yuin/gopher-lua"
longpoll "github.com/SevereCloud/vksdk/v2/longpoll-user"
"github.com/SevereCloud/vksdk/v2/longpoll-user/v3"
"github.com/SevereCloud/vksdk/v2/api"
)
var (
lp *longpoll.LongPoll
)
func main() {
log.Println("Загрузка конфигов...")
LoadConfig()
globals.VK = api.NewVK(globals.AccessToken)
log.Println("Загрузка модулей...")
LoadModules()
log.Println("Модули загружены")
go GoToOnline()
go StartLongPoll()
shutdown.Listen()
}
func StartLongPoll() {
mode := longpoll.ReceiveAttachments + longpoll.ExtendedEvents
lp, err := longpoll.NewLongPoll(globals.VK, mode)
if err != nil {
panic(err)
}
shutdown.Add(func() {
// Безопасное завершение
// Ждет пока соединение закроется и события обработаются
lp.Shutdown()
// Закрыть соединение
// Требует lp.Client.Transport = &http.Transport{DisableKeepAlives: true}
lp.Client.CloseIdleConnections()
log.Println("Отключение модулей...")
CloseModules()
log.Println("Модули отключены")
log.Println("Пока :(")
os.Exit(1)
})
w := wrapper.NewWrapper(lp)
// event with code 4
w.OnNewMessage(OnMessage)
log.Println("Лонгпул запущен")
if err := lp.Run(); err != nil {
StartLongPoll()
}
}
func GoToOnline() {
for {
globals.VK.AccountSetOnline(api.Params{
"voip": 0,
})
time.Sleep(time.Minute * 5)
}
}
func OnMessage(m wrapper.NewMessage) {
mText := strings.ToLower(m.Text)
for _, a := range Appeals {
if strings.HasPrefix(mText, strings.ToLower(a.(string))) {
OnMessageToBot(m, strings.ToLower(a.(string)))
break
}
}
}
func OnMessageToBot(m wrapper.NewMessage, appeal string) {
rawText := strings.Replace(strings.ToLower(m.Text), appeal, "", 1)
args := strings.Split(strings.ToLower(rawText), " ")
//args = utils.RemoveItemString(args, 0)
for _, cmd := range globals.AllCmds {
if args[0] == strings.ToLower(cmd.Cmd) {
argTable := cmd.Module.NewTable()
for _, arg := range args {
argTable.Append(lua.LString(arg))
}
if err := cmd.Module.CallByParam(lua.P{
Fn: cmd.Fn,
NRet: 0,
Protect: true,
}, argTable, lua.LNumber(m.PeerID)); err != nil {
panic(err)
}
break
}
}
}