This commit is contained in:
skeletable 2022-09-26 22:32:17 +02:00
parent 87e02c43a8
commit e9af59d541
3 changed files with 92 additions and 5 deletions

6
go.mod
View File

@ -2,10 +2,12 @@ module inaba9000
go 1.17
require github.com/bwmarrin/discordgo v0.23.2
require (
github.com/bwmarrin/discordgo v0.23.2
github.com/mattn/go-sqlite3 v1.14.15
)
require (
github.com/Clinet/discordgo-embed v0.0.0-20220113222025-bafe0c917646 // indirect
github.com/gorilla/websocket v1.4.0 // indirect
golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16 // indirect
)

4
go.sum
View File

@ -1,8 +1,8 @@
github.com/Clinet/discordgo-embed v0.0.0-20220113222025-bafe0c917646 h1:KkKIDMzyOhNnW5ew6KpRvEflciWqo09NmgVGqTZEj3M=
github.com/Clinet/discordgo-embed v0.0.0-20220113222025-bafe0c917646/go.mod h1:0ydUl+01209LCyzJk68BeRtCN1IMrNJgX4IBmwmC1f8=
github.com/bwmarrin/discordgo v0.23.2 h1:BzrtTktixGHIu9Tt7dEE6diysEF9HWnXeHuoJEt2fH4=
github.com/bwmarrin/discordgo v0.23.2/go.mod h1:c1WtWUGN6nREDmzIpyTp/iD3VYt4Fpx+bVyfBG7JE+M=
github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI=
github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16 h1:y6ce7gCWtnH+m3dCjzQ1PCuwl28DDIc3VNnvY29DlIA=
golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=

87
main.go
View File

@ -3,6 +3,7 @@ package main
import (
"bufio"
"bytes"
"database/sql"
"errors"
"fmt"
"io"
@ -17,6 +18,7 @@ import (
"time"
"github.com/bwmarrin/discordgo"
_ "github.com/mattn/go-sqlite3"
)
// Variables used for command line parameters
@ -401,6 +403,63 @@ func getFiles() {
}
}
func initdb() {
file, err := os.Create("guilds.db")
if err != nil {
fmt.Println(err.Error())
return
}
file.Close()
db, err := sql.Open("sqlite3", "guilds.db")
if err != nil {
fmt.Println(err.Error())
return
}
users_table := `CREATE TABLE users (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"userID" TEXT,
"candy" INT);`
query, err := db.Prepare(users_table)
if err != nil {
fmt.Println(err.Error())
return
}
query.Exec()
}
func addUser(userID string, candy int) {
db, err := sql.Open("sqlite3", "guilds.db")
if err != nil {
fmt.Println(err.Error())
return
}
records := `INSERT INTO users(userID, candy) VALUES (?, ?)`
query, err := db.Prepare(records)
if err != nil {
fmt.Println(err.Error())
return
}
_, err = query.Exec(userID, candy)
if err != nil {
fmt.Println(err.Error())
return
}
}
func delUser(userID string) {
db, err := sql.Open("sqlite3", "guilds.db")
if err != nil {
fmt.Println(err.Error())
return
}
query, err := db.Prepare(`DELETE FROM users WHERE userID = ?`)
if err != nil {
fmt.Println(err.Error())
return
}
query.Exec()
}
func main() {
commitID, err := exec.Command("git", "log", "-1", "--format=%h").Output()
if err != nil {
@ -419,6 +478,17 @@ func main() {
fmt.Println("Checking files.")
getFiles()
_, err = os.Stat("guilds.db")
if errors.Is(err, os.ErrNotExist) {
fmt.Println("Guilds database not found!")
fmt.Println("Initialising database...")
initdb()
fmt.Println("Testing database:")
addUser("0000000", 100)
delUser("0000000")
fmt.Println("Test complete.")
}
// create a new discord session using the provided bot token.
dg, err := discordgo.New("Bot " + os.Args[1])
if err != nil {
@ -495,7 +565,7 @@ func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) {
if m.Content == "🍬 ***Some candy has appeared! React to this message to claim it.*** 🍬" {
s.MessageReactionAdd(m.ChannelID, m.Reference().MessageID, "🍬")
}
for i := 0; i < 240; i++ {
for i := 0; i < 480; i++ {
time.Sleep(500 * time.Millisecond)
reactions, err := s.MessageReactions(m.ChannelID, m.Reference().MessageID, "🍬", 2, "", "")
if err != nil {
@ -1086,4 +1156,19 @@ func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) {
if m.Content == "insert candy" && m.Author.ID == "228911057316347905" {
candy(s, m.ChannelID)
}
if strings.HasPrefix(m.Content, "pp!db") && m.Author.ID == "228911057316347905" {
db, err := sql.Open("sqlite3", "guilds.db")
if err != nil {
fmt.Println(err.Error())
return
}
query, err := db.Prepare(parseArgs(m.Content))
if err != nil {
s.ChannelMessageSend(m.ChannelID, err.Error())
return
}
query.Exec()
s.ChannelMessageSend(m.ChannelID, "OK")
}
}