This repository has been archived by the owner on Dec 20, 2021. It is now read-only.
/
plugin.go
68 lines (60 loc) · 1.72 KB
/
plugin.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
package log
import (
"log"
"github.com/bwmarrin/discordgo"
"github.com/acuteaura/shodan"
)
// Module holds data for this module and implements the shodan.Module interface
type Module struct {
shodan shodan.Shodan
}
var mod = Module{}
func init() {
shodan.Loader.LoadModule(&mod)
}
// GetIdentifier returns the identifier for this module
func (m *Module) GetIdentifier() string {
return "log"
}
// Attach attaches this module to a Shodan session
func (m *Module) Attach(session shodan.Shodan) error {
m.shodan = session
if session.GetDatabase() == nil {
return shodan.Error("mod_log: database is nil; please make sure you're connected to PG or disable the module")
}
session.GetDiscord().AddHandler(onMessageCreate)
return nil
}
func onMessageCreate(s *discordgo.Session, message *discordgo.MessageCreate) {
err := DBUpsertUser(mod.shodan.GetDatabase(), message.Author)
if err != nil {
log.Printf("logger: err user: %s\n", err.Error())
return
}
channel, err := s.State.Channel(message.ChannelID)
if err != nil {
log.Printf("logger: err channel: %s\n", err.Error())
return
}
guild, err := s.State.Guild(channel.GuildID)
if err != nil {
log.Printf("logger: err guild: %s\n", err.Error())
return
}
err = DBUpsertGuild(mod.shodan.GetDatabase(), guild)
if err != nil {
log.Printf("logger: err guild: %s\n", err.Error())
return
}
err = DBUpsertChannel(mod.shodan.GetDatabase(), channel)
if err != nil {
log.Printf("logger: err channel: %s\n", err.Error())
return
}
err = DBUpsertMessage(mod.shodan.GetDatabase(), message.Message)
if err != nil {
log.Printf("logger: err message: %s\n", err.Error())
return
}
log.Printf("logged: %s - %s - %s\n", message.ChannelID, message.Author.ID, message.Content)
}