-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdiscord.go
More file actions
77 lines (61 loc) · 1.69 KB
/
discord.go
File metadata and controls
77 lines (61 loc) · 1.69 KB
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
package main
import (
"github.com/EnsicoinDevs/eccd/consensus"
"github.com/bwmarrin/discordgo"
log "github.com/sirupsen/logrus"
"github.com/spf13/viper"
"strconv"
"strings"
)
var dg *discordgo.Session
var daddress string
func startDiscordBootstraping(server *Server) {
var err error
dg, err = discordgo.New(viper.GetString("token"))
if err != nil {
log.WithError(err).Error("error creating Discord session")
return
}
dg.AddHandler(discordMessageCreate)
err = dg.Open()
if err != nil {
log.WithError(err).Error("error opening Discord connection")
}
daddress = server.listener.Addr().String()
discordHelloWorld(dg)
}
func closeDiscordBootstraping() {
dg.Close()
}
func discordMessageCreate(s *discordgo.Session, m *discordgo.MessageCreate) {
if m.Author.ID == s.State.User.ID {
return
}
channel, err := s.Channel(m.ChannelID)
if err != nil {
log.WithError(err).Error("error fetching the discord channel of a message")
return
}
if channel.Name != "ensicoin" {
return
}
networkMagicNumber := strconv.Itoa(consensus.NETWORK_MAGIC_NUMBER)
if !strings.HasPrefix(m.Content, networkMagicNumber) {
return
}
msg := strings.Split(strings.TrimPrefix(m.Content, networkMagicNumber+" "), " ")
if msg[0] == "hello" && msg[2] == "please_connect" {
_, _ = s.ChannelMessageSend(m.ChannelID, "olala omw")
}
}
func discordHelloWorld(s *discordgo.Session) {
for _, guild := range s.State.Guilds {
for _, channel := range guild.Channels {
if channel.Name == "ensicoin" {
log.Info("found a #ensicoin channel on discord")
_, _ = s.ChannelMessageSend(channel.ID, strconv.Itoa(consensus.NETWORK_MAGIC_NUMBER)+" hello_world_i_m_an_ensicoin_peer "+daddress)
return
}
}
}
}