-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbot.go
92 lines (67 loc) · 1.88 KB
/
bot.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
package main
import (
"github.com/ExchangeUnion/xud-simnet-bot/channels"
"github.com/ExchangeUnion/xud-simnet-bot/xudrpc"
"github.com/google/logger"
"sync"
)
func main() {
cfg := loadConfig()
initLogger(cfg.LogFile)
logConfig(cfg)
var wg sync.WaitGroup
wg.Add(2)
info := initXud(cfg)
initDiscord(cfg, info)
logger.Info("Sanitizing currencies")
var faucetCurrencies []channels.Channel
var channelCurrencies []channels.Channel
for i := range cfg.Channels {
entry := cfg.Channels[i]
if entry.TokenAddress == "" && entry.Currency != "ETH" {
channelCurrencies = append(channelCurrencies, *entry)
} else {
faucetCurrencies = append(faucetCurrencies, *entry)
}
}
go func() {
cfg.Database.Init()
cfg.ChannelManager.Init(channelCurrencies, cfg.Xud, cfg.Discord, cfg.Database)
wg.Done()
}()
go func() {
err := cfg.Ethereum.Init()
checkError("Ethereum", err, true)
cfg.Faucet.Start(faucetCurrencies, cfg.Ethereum, cfg.Discord)
wg.Done()
}()
wg.Wait()
logger.Info("Shutting down")
}
func initXud(cfg *config) *xudrpc.GetInfoResponse {
logger.Info("Initializing XUD client")
err := cfg.Xud.Init()
checkError("XUD", err, true)
info, err := cfg.Xud.GetInfo()
checkError("XUD", err, true)
logger.Info("Initialized XUD client: " + stringify(info))
return info
}
func initDiscord(cfg *config, info *xudrpc.GetInfoResponse) {
logger.Info("Initializing Discord client")
err := cfg.Discord.Init()
checkError("Discord", err, true)
err = cfg.Discord.SendMessage("Started xud-simnet-bot with XUD node: **" + info.Alias + "** (`" + info.NodePubKey + "`)")
checkError("Discord", err, true)
logger.Info("Initialized Discord client")
}
func checkError(service string, err error, fatal bool) {
if err != nil {
message := "Could not initialize " + service + ": " + err.Error()
if fatal {
logger.Fatal(message)
} else {
logger.Warning(message)
}
}
}