Repo Reorg
This commit is contained in:
parent
af506f828d
commit
d9e1efbaf0
@ -7,9 +7,9 @@ COPY ./go.sum .
|
|||||||
RUN go mod download
|
RUN go mod download
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN go install github.com/dustinpianalto/goff
|
RUN go install github.com/dustinpianalto/goff/...
|
||||||
|
|
||||||
CMD [ "go", "run", "goff.go"]
|
CMD [ "go", "run", "cmd/goff/main.go"]
|
||||||
|
|
||||||
from alpine
|
from alpine
|
||||||
|
|
||||||
|
|||||||
BIN
cmd/goff/main
Executable file
BIN
cmd/goff/main
Executable file
Binary file not shown.
147
cmd/goff/main.go
Normal file
147
cmd/goff/main.go
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"github.com/dustinpianalto/disgoman"
|
||||||
|
"github.com/dustinpianalto/goff"
|
||||||
|
"github.com/dustinpianalto/goff/internal/events"
|
||||||
|
"github.com/dustinpianalto/goff/internal/exts"
|
||||||
|
"github.com/dustinpianalto/goff/internal/postgres"
|
||||||
|
"github.com/dustinpianalto/goff/pkg/email"
|
||||||
|
|
||||||
|
//"github.com/MikeModder/anpan"
|
||||||
|
"os"
|
||||||
|
"os/signal"
|
||||||
|
"syscall"
|
||||||
|
|
||||||
|
"github.com/bwmarrin/discordgo"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
Token string
|
||||||
|
)
|
||||||
|
|
||||||
|
//func init() {
|
||||||
|
// flag.StringVar(&Token, "t", "", "Bot Token")
|
||||||
|
// flag.Parse()
|
||||||
|
//}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
Token = os.Getenv("DISCORDGO_TOKEN")
|
||||||
|
dg, err := discordgo.New("Bot " + Token)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("There was an error when creating the Discord Session, ", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
dg.State.MaxMessageCount = 100
|
||||||
|
dg.StateEnabled = true
|
||||||
|
|
||||||
|
dg.Identify = discordgo.Identify{
|
||||||
|
Intents: discordgo.MakeIntent(discordgo.IntentsAll),
|
||||||
|
}
|
||||||
|
|
||||||
|
postgres.ConnectDatabase(os.Getenv("DATABASE_URL"))
|
||||||
|
postgres.InitializeDatabase()
|
||||||
|
//utils.LoadTestData()
|
||||||
|
|
||||||
|
us := &postgres.UserService{DB: postgres.DB}
|
||||||
|
gs := &postgres.GuildService{DB: postgres.DB}
|
||||||
|
|
||||||
|
//prefixes := []string{
|
||||||
|
// "Go.",
|
||||||
|
//}
|
||||||
|
owners := []string{
|
||||||
|
"351794468870946827",
|
||||||
|
}
|
||||||
|
|
||||||
|
manager := disgoman.CommandManager{
|
||||||
|
Prefixes: getPrefixes,
|
||||||
|
Owners: owners,
|
||||||
|
StatusManager: disgoman.GetDefaultStatusManager(),
|
||||||
|
ErrorChannel: make(chan disgoman.CommandError, 10),
|
||||||
|
Commands: make(map[string]*disgoman.Command),
|
||||||
|
IgnoreBots: true,
|
||||||
|
CheckPermissions: false,
|
||||||
|
}
|
||||||
|
|
||||||
|
goffManager := goff.CommandManager{
|
||||||
|
UserService: us,
|
||||||
|
GuildService: gs,
|
||||||
|
CommandManager: manager,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add Command Handlers
|
||||||
|
exts.AddCommandHandlers(&goffManager)
|
||||||
|
|
||||||
|
//if _, ok := handler.Commands["help"]; !ok {
|
||||||
|
// handler.AddDefaultHelpCommand()
|
||||||
|
//}
|
||||||
|
|
||||||
|
dg.AddHandler(goffManager.OnMessage)
|
||||||
|
dg.AddHandler(goffManager.StatusManager.OnReady)
|
||||||
|
dg.AddHandler(events.OnMessageUpdate)
|
||||||
|
dg.AddHandler(events.OnMessageDelete)
|
||||||
|
dg.AddHandler(events.OnGuildMemberAddLogging)
|
||||||
|
dg.AddHandler(events.OnGuildMemberRemoveLogging)
|
||||||
|
|
||||||
|
err = dg.Open()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("There was an error opening the connection, ", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start the Error handler in a goroutine
|
||||||
|
go ErrorHandler(goffManager.ErrorChannel)
|
||||||
|
|
||||||
|
// Start the Logging handler in a goroutine
|
||||||
|
go events.LoggingHandler(events.LoggingChannel)
|
||||||
|
|
||||||
|
// Start the task handler in a goroutine
|
||||||
|
go events.ProcessTasks(dg, 1)
|
||||||
|
|
||||||
|
go email.RecieveEmail(dg)
|
||||||
|
|
||||||
|
fmt.Println("The Bot is now running.")
|
||||||
|
sc := make(chan os.Signal, 1)
|
||||||
|
signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill)
|
||||||
|
<-sc
|
||||||
|
|
||||||
|
fmt.Println("Shutting Down...")
|
||||||
|
err = dg.Close()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getPrefixes(guildID string) []string {
|
||||||
|
queryString := "Select prefix from prefixes p, x_guilds_prefixes xgp where xgp.guild_id = $1 and xgp.prefix_id = p.id"
|
||||||
|
rows, err := postgres.DB.Query(queryString, guildID)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return []string{"Go.", "go."}
|
||||||
|
}
|
||||||
|
var prefixes []string
|
||||||
|
for rows.Next() {
|
||||||
|
var prefix string
|
||||||
|
err = rows.Scan(&prefix)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return []string{"Go.", "go."}
|
||||||
|
}
|
||||||
|
prefixes = append(prefixes, prefix)
|
||||||
|
}
|
||||||
|
return prefixes
|
||||||
|
}
|
||||||
|
|
||||||
|
func ErrorHandler(ErrorChan chan disgoman.CommandError) {
|
||||||
|
for ce := range ErrorChan {
|
||||||
|
msg := ce.Message
|
||||||
|
if msg == "" {
|
||||||
|
msg = ce.Error.Error()
|
||||||
|
}
|
||||||
|
_, _ = ce.Context.Send(msg)
|
||||||
|
fmt.Println(ce.Error)
|
||||||
|
}
|
||||||
|
}
|
||||||
2
go.mod
2
go.mod
@ -4,7 +4,7 @@ go 1.14
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/bwmarrin/discordgo v0.22.0
|
github.com/bwmarrin/discordgo v0.22.0
|
||||||
github.com/dustinpianalto/disgoman v0.0.12
|
github.com/dustinpianalto/disgoman v0.0.15
|
||||||
github.com/dustinpianalto/rpnparse v1.0.1
|
github.com/dustinpianalto/rpnparse v1.0.1
|
||||||
github.com/emersion/go-imap v1.0.5
|
github.com/emersion/go-imap v1.0.5
|
||||||
github.com/emersion/go-message v0.12.0
|
github.com/emersion/go-message v0.12.0
|
||||||
|
|||||||
4
go.sum
4
go.sum
@ -13,6 +13,10 @@ github.com/dustinpianalto/disgoman v0.0.10 h1:UzmvMpOi4peF59tXGaNfVU+ePHs1hILa6g
|
|||||||
github.com/dustinpianalto/disgoman v0.0.10/go.mod h1:v3FM6n+4dH9XlvO+IDx6MN3DUnGq6YVDBvy1A1k202g=
|
github.com/dustinpianalto/disgoman v0.0.10/go.mod h1:v3FM6n+4dH9XlvO+IDx6MN3DUnGq6YVDBvy1A1k202g=
|
||||||
github.com/dustinpianalto/disgoman v0.0.12 h1:dLptU2ZTUZJaLBOKeE6qjuL8gqdAr6ehHSOtfHmUpL8=
|
github.com/dustinpianalto/disgoman v0.0.12 h1:dLptU2ZTUZJaLBOKeE6qjuL8gqdAr6ehHSOtfHmUpL8=
|
||||||
github.com/dustinpianalto/disgoman v0.0.12/go.mod h1:v3FM6n+4dH9XlvO+IDx6MN3DUnGq6YVDBvy1A1k202g=
|
github.com/dustinpianalto/disgoman v0.0.12/go.mod h1:v3FM6n+4dH9XlvO+IDx6MN3DUnGq6YVDBvy1A1k202g=
|
||||||
|
github.com/dustinpianalto/disgoman v0.0.14 h1:hsk56JATBE5eH5GPCDGeiTdYxok4m+edSYiYz5Uj8uo=
|
||||||
|
github.com/dustinpianalto/disgoman v0.0.14/go.mod h1:v3FM6n+4dH9XlvO+IDx6MN3DUnGq6YVDBvy1A1k202g=
|
||||||
|
github.com/dustinpianalto/disgoman v0.0.15 h1:kdIw6jhC82WBut7+4BarqxBw06dozU+Hu47LQzkkoGM=
|
||||||
|
github.com/dustinpianalto/disgoman v0.0.15/go.mod h1:v3FM6n+4dH9XlvO+IDx6MN3DUnGq6YVDBvy1A1k202g=
|
||||||
github.com/dustinpianalto/rpnparse v1.0.1 h1:ZvH1/RIe5hh3RGSAXOgtngEDHNPTF+DMh88XFWpQjzY=
|
github.com/dustinpianalto/rpnparse v1.0.1 h1:ZvH1/RIe5hh3RGSAXOgtngEDHNPTF+DMh88XFWpQjzY=
|
||||||
github.com/dustinpianalto/rpnparse v1.0.1/go.mod h1:SzFbQb+Eed5gYCtDu/SYEXXwdPtWkDg9oaL1xQtN1BY=
|
github.com/dustinpianalto/rpnparse v1.0.1/go.mod h1:SzFbQb+Eed5gYCtDu/SYEXXwdPtWkDg9oaL1xQtN1BY=
|
||||||
github.com/emersion/go-imap v1.0.5 h1:8xg/d2wo2BBP3AEP5AOaM/6i8887RGyVW2st/IVHWUw=
|
github.com/emersion/go-imap v1.0.5 h1:8xg/d2wo2BBP3AEP5AOaM/6i8887RGyVW2st/IVHWUw=
|
||||||
|
|||||||
144
goff.go
144
goff.go
@ -1,141 +1,9 @@
|
|||||||
package main
|
package goff
|
||||||
|
|
||||||
import (
|
import "github.com/dustinpianalto/disgoman"
|
||||||
"fmt"
|
|
||||||
"log"
|
|
||||||
|
|
||||||
"github.com/dustinpianalto/disgoman"
|
type CommandManager struct {
|
||||||
"github.com/dustinpianalto/goff/events"
|
UserService UserService
|
||||||
"github.com/dustinpianalto/goff/exts"
|
GuildService GuildService
|
||||||
"github.com/dustinpianalto/goff/utils"
|
disgoman.CommandManager
|
||||||
|
|
||||||
//"github.com/MikeModder/anpan"
|
|
||||||
"os"
|
|
||||||
"os/signal"
|
|
||||||
"syscall"
|
|
||||||
|
|
||||||
"github.com/bwmarrin/discordgo"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
Token string
|
|
||||||
)
|
|
||||||
|
|
||||||
//func init() {
|
|
||||||
// flag.StringVar(&Token, "t", "", "Bot Token")
|
|
||||||
// flag.Parse()
|
|
||||||
//}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
Token = os.Getenv("DISCORDGO_TOKEN")
|
|
||||||
dg, err := discordgo.New("Bot " + Token)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("There was an error when creating the Discord Session, ", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
dg.State.MaxMessageCount = 100
|
|
||||||
dg.StateEnabled = true
|
|
||||||
|
|
||||||
dg.Identify = discordgo.Identify{
|
|
||||||
Intents: discordgo.MakeIntent(discordgo.IntentsAll),
|
|
||||||
}
|
|
||||||
|
|
||||||
utils.ConnectDatabase(os.Getenv("DATABASE_URL"))
|
|
||||||
utils.InitializeDatabase()
|
|
||||||
//utils.LoadTestData()
|
|
||||||
|
|
||||||
//prefixes := []string{
|
|
||||||
// "Go.",
|
|
||||||
//}
|
|
||||||
owners := []string{
|
|
||||||
"351794468870946827",
|
|
||||||
}
|
|
||||||
|
|
||||||
// Arguments are:
|
|
||||||
// prefixes - []string
|
|
||||||
// owner ids - []string
|
|
||||||
// ignore bots - bool
|
|
||||||
// check perms - bool
|
|
||||||
handler := disgoman.CommandManager{
|
|
||||||
Prefixes: getPrefixes,
|
|
||||||
Owners: owners,
|
|
||||||
StatusManager: disgoman.GetDefaultStatusManager(),
|
|
||||||
ErrorChannel: make(chan disgoman.CommandError, 10),
|
|
||||||
Commands: make(map[string]*disgoman.Command),
|
|
||||||
IgnoreBots: true,
|
|
||||||
CheckPermissions: false,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add Command Handlers
|
|
||||||
exts.AddCommandHandlers(&handler)
|
|
||||||
|
|
||||||
//if _, ok := handler.Commands["help"]; !ok {
|
|
||||||
// handler.AddDefaultHelpCommand()
|
|
||||||
//}
|
|
||||||
|
|
||||||
dg.AddHandler(handler.OnMessage)
|
|
||||||
dg.AddHandler(handler.StatusManager.OnReady)
|
|
||||||
dg.AddHandler(events.OnMessageUpdate)
|
|
||||||
dg.AddHandler(events.OnMessageDelete)
|
|
||||||
dg.AddHandler(events.OnGuildMemberAddLogging)
|
|
||||||
dg.AddHandler(events.OnGuildMemberRemoveLogging)
|
|
||||||
|
|
||||||
err = dg.Open()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("There was an error opening the connection, ", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Start the Error handler in a goroutine
|
|
||||||
go ErrorHandler(handler.ErrorChannel)
|
|
||||||
|
|
||||||
// Start the Logging handler in a goroutine
|
|
||||||
go utils.LoggingHandler(utils.LoggingChannel)
|
|
||||||
|
|
||||||
// Start the task handler in a goroutine
|
|
||||||
go utils.ProcessTasks(dg, 1)
|
|
||||||
|
|
||||||
go utils.RecieveEmail(dg)
|
|
||||||
|
|
||||||
fmt.Println("The Bot is now running.")
|
|
||||||
sc := make(chan os.Signal, 1)
|
|
||||||
signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill)
|
|
||||||
<-sc
|
|
||||||
|
|
||||||
fmt.Println("Shutting Down...")
|
|
||||||
err = dg.Close()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func getPrefixes(guildID string) []string {
|
|
||||||
queryString := "Select prefix from prefixes p, x_guilds_prefixes xgp where xgp.guild_id = $1 and xgp.prefix_id = p.id"
|
|
||||||
rows, err := utils.Database.Query(queryString, guildID)
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
return []string{"Go.", "go."}
|
|
||||||
}
|
|
||||||
var prefixes []string
|
|
||||||
for rows.Next() {
|
|
||||||
var prefix string
|
|
||||||
err = rows.Scan(&prefix)
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
return []string{"Go.", "go."}
|
|
||||||
}
|
|
||||||
prefixes = append(prefixes, prefix)
|
|
||||||
}
|
|
||||||
return prefixes
|
|
||||||
}
|
|
||||||
|
|
||||||
func ErrorHandler(ErrorChan chan disgoman.CommandError) {
|
|
||||||
for ce := range ErrorChan {
|
|
||||||
msg := ce.Message
|
|
||||||
if msg == "" {
|
|
||||||
msg = ce.Error.Error()
|
|
||||||
}
|
|
||||||
_, _ = ce.Context.Send(msg)
|
|
||||||
fmt.Println(ce.Error)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
4
guild.go
4
guild.go
@ -1,4 +1,4 @@
|
|||||||
package main
|
package goff
|
||||||
|
|
||||||
import "database/sql"
|
import "database/sql"
|
||||||
|
|
||||||
@ -10,11 +10,11 @@ type Guild struct {
|
|||||||
WelcomeChannel string
|
WelcomeChannel string
|
||||||
PuzzleChannel string
|
PuzzleChannel string
|
||||||
PuzzleRole sql.NullString
|
PuzzleRole sql.NullString
|
||||||
|
Prefixes []string
|
||||||
}
|
}
|
||||||
|
|
||||||
type GuildService interface {
|
type GuildService interface {
|
||||||
Guild(id string) (*Guild, error)
|
Guild(id string) (*Guild, error)
|
||||||
Guilds() ([]*Guild, error)
|
|
||||||
CreateGuild(g *Guild) error
|
CreateGuild(g *Guild) error
|
||||||
DeleteGuild(g *Guild) error
|
DeleteGuild(g *Guild) error
|
||||||
GuildUsers(g *Guild) ([]*User, error)
|
GuildUsers(g *Guild) ([]*User, error)
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package utils
|
package discord_utils
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package utils
|
package discord_utils
|
||||||
|
|
||||||
import "time"
|
import "time"
|
||||||
|
|
||||||
@ -1,8 +1,10 @@
|
|||||||
package utils
|
package events
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/bwmarrin/discordgo"
|
"github.com/bwmarrin/discordgo"
|
||||||
|
"github.com/dustinpianalto/goff/internal/postgres"
|
||||||
)
|
)
|
||||||
|
|
||||||
var LoggingChannel = make(chan *LogEvent, 10)
|
var LoggingChannel = make(chan *LogEvent, 10)
|
||||||
@ -19,7 +21,7 @@ type LogEvent struct {
|
|||||||
func LoggingHandler(lc chan *LogEvent) {
|
func LoggingHandler(lc chan *LogEvent) {
|
||||||
for event := range lc {
|
for event := range lc {
|
||||||
var channelID string
|
var channelID string
|
||||||
row := Database.QueryRow("SELECT logging_channel FROM guilds where id=$1", event.GuildID)
|
row := postgres.DB.QueryRow("SELECT logging_channel FROM guilds where id=$1", event.GuildID)
|
||||||
err := row.Scan(&channelID)
|
err := row.Scan(&channelID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
@ -7,7 +7,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/bwmarrin/discordgo"
|
"github.com/bwmarrin/discordgo"
|
||||||
"github.com/dustinpianalto/goff/utils"
|
"github.com/dustinpianalto/goff/internal/discord_utils"
|
||||||
|
"github.com/dustinpianalto/goff/internal/postgres"
|
||||||
)
|
)
|
||||||
|
|
||||||
func OnGuildMemberAddLogging(s *discordgo.Session, member *discordgo.GuildMemberAdd) {
|
func OnGuildMemberAddLogging(s *discordgo.Session, member *discordgo.GuildMemberAdd) {
|
||||||
@ -17,7 +18,7 @@ func OnGuildMemberAddLogging(s *discordgo.Session, member *discordgo.GuildMember
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
var channelID string
|
var channelID string
|
||||||
row := utils.Database.QueryRow("SELECT logging_channel FROM guilds where id=$1", member.GuildID)
|
row := postgres.DB.QueryRow("SELECT logging_channel FROM guilds where id=$1", member.GuildID)
|
||||||
err := row.Scan(&channelID)
|
err := row.Scan(&channelID)
|
||||||
if err != nil || channelID == "" {
|
if err != nil || channelID == "" {
|
||||||
return
|
return
|
||||||
@ -40,11 +41,11 @@ func OnGuildMemberAddLogging(s *discordgo.Session, member *discordgo.GuildMember
|
|||||||
}
|
}
|
||||||
|
|
||||||
int64ID, _ := strconv.ParseInt(member.User.ID, 10, 64)
|
int64ID, _ := strconv.ParseInt(member.User.ID, 10, 64)
|
||||||
snow := utils.ParseSnowflake(int64ID)
|
snow := discord_utils.ParseSnowflake(int64ID)
|
||||||
|
|
||||||
field := &discordgo.MessageEmbedField{
|
field := &discordgo.MessageEmbedField{
|
||||||
Name: "User was created:",
|
Name: "User was created:",
|
||||||
Value: utils.ParseDateString(snow.CreationTime),
|
Value: discord_utils.ParseDateString(snow.CreationTime),
|
||||||
Inline: false,
|
Inline: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,7 +74,7 @@ func OnGuildMemberRemoveLogging(s *discordgo.Session, member *discordgo.GuildMem
|
|||||||
}()
|
}()
|
||||||
timeNow := time.Now()
|
timeNow := time.Now()
|
||||||
var channelID string
|
var channelID string
|
||||||
row := utils.Database.QueryRow("SELECT logging_channel FROM guilds where id=$1", member.GuildID)
|
row := postgres.DB.QueryRow("SELECT logging_channel FROM guilds where id=$1", member.GuildID)
|
||||||
err := row.Scan(&channelID)
|
err := row.Scan(&channelID)
|
||||||
if err != nil || channelID == "" {
|
if err != nil || channelID == "" {
|
||||||
return
|
return
|
||||||
@ -103,7 +104,7 @@ func OnGuildMemberRemoveLogging(s *discordgo.Session, member *discordgo.GuildMem
|
|||||||
for _, log := range al.AuditLogEntries {
|
for _, log := range al.AuditLogEntries {
|
||||||
if log.TargetID == member.User.ID {
|
if log.TargetID == member.User.ID {
|
||||||
int64ID, _ := strconv.ParseInt(log.ID, 10, 64)
|
int64ID, _ := strconv.ParseInt(log.ID, 10, 64)
|
||||||
logSnow := utils.ParseSnowflake(int64ID)
|
logSnow := discord_utils.ParseSnowflake(int64ID)
|
||||||
if timeNow.Sub(logSnow.CreationTime).Seconds() <= 10 {
|
if timeNow.Sub(logSnow.CreationTime).Seconds() <= 10 {
|
||||||
user, err := s.User(log.UserID)
|
user, err := s.User(log.UserID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
@ -142,7 +143,7 @@ func AddMemberToDatabase(s *discordgo.Session, m *discordgo.GuildMemberAdd) {
|
|||||||
}()
|
}()
|
||||||
queryString := `INSERT INTO users (id, banned, logging, is_active, is_staff, is_admin)
|
queryString := `INSERT INTO users (id, banned, logging, is_active, is_staff, is_admin)
|
||||||
VALUES ($1, false, false, true, false, false)`
|
VALUES ($1, false, false, true, false, false)`
|
||||||
_, err := utils.Database.Exec(queryString, m.User.ID)
|
_, err := postgres.DB.Exec(queryString, m.User.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(fmt.Errorf("error inserting %s into database: %w", m.User.ID, err))
|
log.Println(fmt.Errorf("error inserting %s into database: %w", m.User.ID, err))
|
||||||
return
|
return
|
||||||
@ -157,7 +158,7 @@ func MarkMemberInactive(s *discordgo.Session, m *discordgo.GuildMemberRemove) {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
queryString := `UPDATE users SET is_active = false WHERE id = $1`
|
queryString := `UPDATE users SET is_active = false WHERE id = $1`
|
||||||
_, err := utils.Database.Exec(queryString, m.User.ID)
|
_, err := postgres.DB.Exec(queryString, m.User.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(fmt.Errorf("error marking %s as inactive: %w", m.User.ID, err))
|
log.Println(fmt.Errorf("error marking %s as inactive: %w", m.User.ID, err))
|
||||||
return
|
return
|
||||||
@ -5,7 +5,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/bwmarrin/discordgo"
|
"github.com/bwmarrin/discordgo"
|
||||||
"github.com/dustinpianalto/goff/utils"
|
"github.com/dustinpianalto/goff/internal/postgres"
|
||||||
)
|
)
|
||||||
|
|
||||||
func OnMessageUpdate(session *discordgo.Session, m *discordgo.MessageUpdate) {
|
func OnMessageUpdate(session *discordgo.Session, m *discordgo.MessageUpdate) {
|
||||||
@ -19,7 +19,7 @@ func OnMessageUpdate(session *discordgo.Session, m *discordgo.MessageUpdate) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
var channelID string
|
var channelID string
|
||||||
row := utils.Database.QueryRow("SELECT logging_channel FROM guilds where id=$1", msg.GuildID)
|
row := postgres.DB.QueryRow("SELECT logging_channel FROM guilds where id=$1", msg.GuildID)
|
||||||
err := row.Scan(&channelID)
|
err := row.Scan(&channelID)
|
||||||
if err != nil || channelID == "" {
|
if err != nil || channelID == "" {
|
||||||
return
|
return
|
||||||
@ -56,7 +56,7 @@ func OnMessageDelete(session *discordgo.Session, m *discordgo.MessageDelete) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
var channelID string
|
var channelID string
|
||||||
row := utils.Database.QueryRow("SELECT logging_channel FROM guilds where id=$1", msg.GuildID)
|
row := postgres.DB.QueryRow("SELECT logging_channel FROM guilds where id=$1", msg.GuildID)
|
||||||
err := row.Scan(&channelID)
|
err := row.Scan(&channelID)
|
||||||
if err != nil || channelID == "" {
|
if err != nil || channelID == "" {
|
||||||
return
|
return
|
||||||
@ -1,10 +1,12 @@
|
|||||||
package utils
|
package events
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/bwmarrin/discordgo"
|
|
||||||
"log"
|
"log"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/bwmarrin/discordgo"
|
||||||
|
"github.com/dustinpianalto/goff/internal/postgres"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Task struct {
|
type Task struct {
|
||||||
@ -20,7 +22,7 @@ type Task struct {
|
|||||||
|
|
||||||
func processTask(task *Task, s *discordgo.Session) {
|
func processTask(task *Task, s *discordgo.Session) {
|
||||||
query := "SELECT completed, processing from tasks where id = $1"
|
query := "SELECT completed, processing from tasks where id = $1"
|
||||||
res, err := Database.Query(query, task.ID)
|
res, err := postgres.DB.Query(query, task.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return
|
return
|
||||||
@ -38,8 +40,8 @@ func processTask(task *Task, s *discordgo.Session) {
|
|||||||
}
|
}
|
||||||
closeQuery := "Update tasks set completed = true where id = $1"
|
closeQuery := "Update tasks set completed = true where id = $1"
|
||||||
processQuery := "UPDATE tasks SET processing = true WHERE id = $1"
|
processQuery := "UPDATE tasks SET processing = true WHERE id = $1"
|
||||||
defer Database.Exec(closeQuery, task.ID)
|
defer postgres.DB.Exec(closeQuery, task.ID)
|
||||||
_, err = Database.Exec(processQuery, task.ID)
|
_, err = postgres.DB.Exec(processQuery, task.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return
|
return
|
||||||
@ -85,7 +87,7 @@ func processTask(task *Task, s *discordgo.Session) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
processQuery = "UPDATE tasks SET processing = false WHERE id = $1"
|
processQuery = "UPDATE tasks SET processing = false WHERE id = $1"
|
||||||
_, err = Database.Exec(processQuery, task.ID)
|
_, err = postgres.DB.Exec(processQuery, task.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
@ -95,7 +97,7 @@ func processTask(task *Task, s *discordgo.Session) {
|
|||||||
func getTasksToRun() []Task {
|
func getTasksToRun() []Task {
|
||||||
query := "SELECT id, type, content, guild_id, channel_id, user_id, creation_time, trigger_time " +
|
query := "SELECT id, type, content, guild_id, channel_id, user_id, creation_time, trigger_time " +
|
||||||
"from tasks where completed is false and processing is false and trigger_time < $1"
|
"from tasks where completed is false and processing is false and trigger_time < $1"
|
||||||
res, err := Database.Query(query, time.Now())
|
res, err := postgres.DB.Query(query, time.Now())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
@ -3,8 +3,9 @@ package exts
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/dustinpianalto/disgoman"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/dustinpianalto/disgoman"
|
||||||
)
|
)
|
||||||
|
|
||||||
func pCommand(ctx disgoman.Context, args []string) {
|
func pCommand(ctx disgoman.Context, args []string) {
|
||||||
@ -57,7 +58,7 @@ func pCommand(ctx disgoman.Context, args []string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: fmt.Sprintf("Invalid Character: %v", input[i]),
|
Message: fmt.Sprintf("Invalid Character: %v", input[i]),
|
||||||
Error: errors.New("invalid character"),
|
Error: errors.New("invalid character"),
|
||||||
@ -73,7 +74,7 @@ func pCommand(ctx disgoman.Context, args []string) {
|
|||||||
}
|
}
|
||||||
_, err := ctx.Send(string(out))
|
_, err := ctx.Send(string(out))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Couldn't send results",
|
Message: "Couldn't send results",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -6,7 +6,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/dustinpianalto/disgoman"
|
"github.com/dustinpianalto/disgoman"
|
||||||
"github.com/dustinpianalto/goff/utils"
|
"github.com/dustinpianalto/goff/internal/postgres"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Guild management commands
|
// Guild management commands
|
||||||
@ -23,9 +23,9 @@ func loggingChannel(ctx disgoman.Context, args []string) {
|
|||||||
}
|
}
|
||||||
fmt.Println(idString)
|
fmt.Println(idString)
|
||||||
if idString == "" {
|
if idString == "" {
|
||||||
_, err := utils.Database.Exec("UPDATE guilds SET logging_channel='' WHERE id=$1;", ctx.Guild.ID)
|
_, err := postgres.DB.Exec("UPDATE guilds SET logging_channel='' WHERE id=$1;", ctx.Guild.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error Updating Database",
|
Message: "Error Updating Database",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -37,7 +37,7 @@ func loggingChannel(ctx disgoman.Context, args []string) {
|
|||||||
}
|
}
|
||||||
channel, err := ctx.Session.State.Channel(idString)
|
channel, err := ctx.Session.State.Channel(idString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Can't find that channel.",
|
Message: "Can't find that channel.",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -45,16 +45,16 @@ func loggingChannel(ctx disgoman.Context, args []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if channel.GuildID != ctx.Guild.ID {
|
if channel.GuildID != ctx.Guild.ID {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "The channel passed is not in this guild.",
|
Message: "The channel passed is not in this guild.",
|
||||||
Error: err,
|
Error: err,
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_, err = utils.Database.Exec("UPDATE guilds SET logging_channel=$1 WHERE id=$2;", idString, ctx.Guild.ID)
|
_, err = postgres.DB.Exec("UPDATE guilds SET logging_channel=$1 WHERE id=$2;", idString, ctx.Guild.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error Updating Database",
|
Message: "Error Updating Database",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -66,11 +66,11 @@ func loggingChannel(ctx disgoman.Context, args []string) {
|
|||||||
|
|
||||||
func getLoggingChannel(ctx disgoman.Context, _ []string) {
|
func getLoggingChannel(ctx disgoman.Context, _ []string) {
|
||||||
var channelID string
|
var channelID string
|
||||||
row := utils.Database.QueryRow("SELECT logging_channel FROM guilds where id=$1", ctx.Guild.ID)
|
row := postgres.DB.QueryRow("SELECT logging_channel FROM guilds where id=$1", ctx.Guild.ID)
|
||||||
err := row.Scan(&channelID)
|
err := row.Scan(&channelID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error getting data from the database.",
|
Message: "Error getting data from the database.",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -84,7 +84,7 @@ func getLoggingChannel(ctx disgoman.Context, _ []string) {
|
|||||||
channel, err := ctx.Session.State.GuildChannel(ctx.Guild.ID, channelID)
|
channel, err := ctx.Session.State.GuildChannel(ctx.Guild.ID, channelID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "I got the channel ID but it does not appear to be a valid channel in this guild.",
|
Message: "I got the channel ID but it does not appear to be a valid channel in this guild.",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -107,9 +107,9 @@ func welcomeChannel(ctx disgoman.Context, args []string) {
|
|||||||
}
|
}
|
||||||
fmt.Println(idString)
|
fmt.Println(idString)
|
||||||
if idString == "" {
|
if idString == "" {
|
||||||
_, err := utils.Database.Exec("UPDATE guilds SET welcome_channel='' WHERE id=$1;", ctx.Guild.ID)
|
_, err := postgres.DB.Exec("UPDATE guilds SET welcome_channel='' WHERE id=$1;", ctx.Guild.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error Updating Database",
|
Message: "Error Updating Database",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -121,7 +121,7 @@ func welcomeChannel(ctx disgoman.Context, args []string) {
|
|||||||
}
|
}
|
||||||
channel, err := ctx.Session.State.Channel(idString)
|
channel, err := ctx.Session.State.Channel(idString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Can't find that channel.",
|
Message: "Can't find that channel.",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -129,16 +129,16 @@ func welcomeChannel(ctx disgoman.Context, args []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if channel.GuildID != ctx.Guild.ID {
|
if channel.GuildID != ctx.Guild.ID {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "The channel passed is not in this guild.",
|
Message: "The channel passed is not in this guild.",
|
||||||
Error: err,
|
Error: err,
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_, err = utils.Database.Exec("UPDATE guilds SET welcome_channel=$1 WHERE id=$2;", idString, ctx.Guild.ID)
|
_, err = postgres.DB.Exec("UPDATE guilds SET welcome_channel=$1 WHERE id=$2;", idString, ctx.Guild.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error Updating Database",
|
Message: "Error Updating Database",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -151,11 +151,11 @@ func welcomeChannel(ctx disgoman.Context, args []string) {
|
|||||||
|
|
||||||
func getWelcomeChannel(ctx disgoman.Context, _ []string) {
|
func getWelcomeChannel(ctx disgoman.Context, _ []string) {
|
||||||
var channelID string
|
var channelID string
|
||||||
row := utils.Database.QueryRow("SELECT welcome_channel FROM guilds where id=$1", ctx.Guild.ID)
|
row := postgres.DB.QueryRow("SELECT welcome_channel FROM guilds where id=$1", ctx.Guild.ID)
|
||||||
err := row.Scan(&channelID)
|
err := row.Scan(&channelID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error getting data from the database.",
|
Message: "Error getting data from the database.",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -169,7 +169,7 @@ func getWelcomeChannel(ctx disgoman.Context, _ []string) {
|
|||||||
channel, err := ctx.Session.State.GuildChannel(ctx.Guild.ID, channelID)
|
channel, err := ctx.Session.State.GuildChannel(ctx.Guild.ID, channelID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "I got the channel ID but it does not appear to be a valid channel in this guild.",
|
Message: "I got the channel ID but it does not appear to be a valid channel in this guild.",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -181,10 +181,10 @@ func getWelcomeChannel(ctx disgoman.Context, _ []string) {
|
|||||||
|
|
||||||
func addGuildCommand(ctx disgoman.Context, args []string) {
|
func addGuildCommand(ctx disgoman.Context, args []string) {
|
||||||
var guildID string
|
var guildID string
|
||||||
row := utils.Database.QueryRow("SELECT id FROM guilds where id=$1", ctx.Guild.ID)
|
row := postgres.DB.QueryRow("SELECT id FROM guilds where id=$1", ctx.Guild.ID)
|
||||||
err := row.Scan(&guildID)
|
err := row.Scan(&guildID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "This guild is already in my database",
|
Message: "This guild is already in my database",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -192,10 +192,10 @@ func addGuildCommand(ctx disgoman.Context, args []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = utils.Database.Query("INSERT INTO guilds (id) VALUES ($1)", ctx.Guild.ID)
|
_, err = postgres.DB.Query("INSERT INTO guilds (id) VALUES ($1)", ctx.Guild.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "There was a problem inserting this guild into the database",
|
Message: "There was a problem inserting this guild into the database",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -218,9 +218,9 @@ func puzzleChannel(ctx disgoman.Context, args []string) {
|
|||||||
}
|
}
|
||||||
fmt.Println(idString)
|
fmt.Println(idString)
|
||||||
if idString == "" {
|
if idString == "" {
|
||||||
_, err := utils.Database.Exec("UPDATE guilds SET puzzle_channel='' WHERE id=$1;", ctx.Guild.ID)
|
_, err := postgres.DB.Exec("UPDATE guilds SET puzzle_channel='' WHERE id=$1;", ctx.Guild.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error Updating Database",
|
Message: "Error Updating Database",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -232,7 +232,7 @@ func puzzleChannel(ctx disgoman.Context, args []string) {
|
|||||||
}
|
}
|
||||||
channel, err := ctx.Session.State.Channel(idString)
|
channel, err := ctx.Session.State.Channel(idString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Can't find that channel.",
|
Message: "Can't find that channel.",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -240,16 +240,16 @@ func puzzleChannel(ctx disgoman.Context, args []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if channel.GuildID != ctx.Guild.ID {
|
if channel.GuildID != ctx.Guild.ID {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "The channel passed is not in this guild.",
|
Message: "The channel passed is not in this guild.",
|
||||||
Error: err,
|
Error: err,
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_, err = utils.Database.Exec("UPDATE guilds SET puzzle_channel=$1 WHERE id=$2;", idString, ctx.Guild.ID)
|
_, err = postgres.DB.Exec("UPDATE guilds SET puzzle_channel=$1 WHERE id=$2;", idString, ctx.Guild.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error Updating Database",
|
Message: "Error Updating Database",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -261,11 +261,11 @@ func puzzleChannel(ctx disgoman.Context, args []string) {
|
|||||||
|
|
||||||
func getPuzzleChannel(ctx disgoman.Context, _ []string) {
|
func getPuzzleChannel(ctx disgoman.Context, _ []string) {
|
||||||
var channelID string
|
var channelID string
|
||||||
row := utils.Database.QueryRow("SELECT puzzle_channel FROM guilds where id=$1", ctx.Guild.ID)
|
row := postgres.DB.QueryRow("SELECT puzzle_channel FROM guilds where id=$1", ctx.Guild.ID)
|
||||||
err := row.Scan(&channelID)
|
err := row.Scan(&channelID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error getting data from the database.",
|
Message: "Error getting data from the database.",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -279,7 +279,7 @@ func getPuzzleChannel(ctx disgoman.Context, _ []string) {
|
|||||||
channel, err := ctx.Session.State.GuildChannel(ctx.Guild.ID, channelID)
|
channel, err := ctx.Session.State.GuildChannel(ctx.Guild.ID, channelID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "I got the channel ID but it does not appear to be a valid channel in this guild.",
|
Message: "I got the channel ID but it does not appear to be a valid channel in this guild.",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -302,9 +302,9 @@ func puzzleRole(ctx disgoman.Context, args []string) {
|
|||||||
}
|
}
|
||||||
fmt.Println(idString)
|
fmt.Println(idString)
|
||||||
if idString == "" {
|
if idString == "" {
|
||||||
_, err := utils.Database.Exec("UPDATE guilds SET puzzle_role=NULL WHERE id=$1;", ctx.Guild.ID)
|
_, err := postgres.DB.Exec("UPDATE guilds SET puzzle_role=NULL WHERE id=$1;", ctx.Guild.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error Updating Database",
|
Message: "Error Updating Database",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -316,25 +316,25 @@ func puzzleRole(ctx disgoman.Context, args []string) {
|
|||||||
}
|
}
|
||||||
role, err := ctx.Session.State.Role(ctx.Guild.ID, idString)
|
role, err := ctx.Session.State.Role(ctx.Guild.ID, idString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Can't find that Role.",
|
Message: "Can't find that Role.",
|
||||||
Error: err,
|
Error: err,
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_, err = utils.Database.Exec("INSERT INTO roles (id, guild_id) VALUES ($1, $2) ON CONFLICT DO NOTHING", role.ID, ctx.Guild.ID)
|
_, err = postgres.DB.Exec("INSERT INTO roles (id, guild_id) VALUES ($1, $2) ON CONFLICT DO NOTHING", role.ID, ctx.Guild.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error Updating Database",
|
Message: "Error Updating Database",
|
||||||
Error: err,
|
Error: err,
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_, err = utils.Database.Exec("UPDATE guilds SET puzzle_role=$1 WHERE id=$2;", role.ID, ctx.Guild.ID)
|
_, err = postgres.DB.Exec("UPDATE guilds SET puzzle_role=$1 WHERE id=$2;", role.ID, ctx.Guild.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error Updating Database",
|
Message: "Error Updating Database",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -346,11 +346,11 @@ func puzzleRole(ctx disgoman.Context, args []string) {
|
|||||||
|
|
||||||
func getPuzzleRole(ctx disgoman.Context, _ []string) {
|
func getPuzzleRole(ctx disgoman.Context, _ []string) {
|
||||||
var roleID sql.NullString
|
var roleID sql.NullString
|
||||||
row := utils.Database.QueryRow("SELECT puzzle_role FROM guilds where id=$1", ctx.Guild.ID)
|
row := postgres.DB.QueryRow("SELECT puzzle_role FROM guilds where id=$1", ctx.Guild.ID)
|
||||||
err := row.Scan(&roleID)
|
err := row.Scan(&roleID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error getting data from the database.",
|
Message: "Error getting data from the database.",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -364,7 +364,7 @@ func getPuzzleRole(ctx disgoman.Context, _ []string) {
|
|||||||
role, err := ctx.Session.State.Role(ctx.Guild.ID, roleID.String)
|
role, err := ctx.Session.State.Role(ctx.Guild.ID, roleID.String)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "I got the role ID but it does not appear to be a valid role in this guild.",
|
Message: "I got the role ID but it does not appear to be a valid role in this guild.",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -2,9 +2,10 @@ package exts
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/dustinpianalto/disgoman"
|
"github.com/dustinpianalto/disgoman"
|
||||||
|
"github.com/dustinpianalto/goff"
|
||||||
)
|
)
|
||||||
|
|
||||||
func AddCommandHandlers(h *disgoman.CommandManager) {
|
func AddCommandHandlers(h *goff.CommandManager) {
|
||||||
// Arguments:
|
// Arguments:
|
||||||
// name - command name - string
|
// name - command name - string
|
||||||
// desc - command description - string
|
// desc - command description - string
|
||||||
@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
"github.com/bwmarrin/discordgo"
|
"github.com/bwmarrin/discordgo"
|
||||||
"github.com/dustinpianalto/disgoman"
|
"github.com/dustinpianalto/disgoman"
|
||||||
"github.com/dustinpianalto/goff/utils"
|
"github.com/dustinpianalto/goff/internal/postgres"
|
||||||
)
|
)
|
||||||
|
|
||||||
func makeRoleSelfAssignable(ctx disgoman.Context, args []string) {
|
func makeRoleSelfAssignable(ctx disgoman.Context, args []string) {
|
||||||
@ -31,16 +31,16 @@ func makeRoleSelfAssignable(ctx disgoman.Context, args []string) {
|
|||||||
var role *discordgo.Role
|
var role *discordgo.Role
|
||||||
var err error
|
var err error
|
||||||
if role, err = ctx.Session.State.Role(ctx.Guild.ID, roleID); err != nil {
|
if role, err = ctx.Session.State.Role(ctx.Guild.ID, roleID); err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Can't find that Role.",
|
Message: "Can't find that Role.",
|
||||||
Error: err,
|
Error: err,
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_, err = utils.Database.Exec("INSERT INTO roles (id, guild_id, self_assignable) VALUES ($1, $2, true) ON CONFLICT (id) DO UPDATE SET self_assignable=true", role.ID, ctx.Guild.ID)
|
_, err = postgres.DB.Exec("INSERT INTO roles (id, guild_id, self_assignable) VALUES ($1, $2, true) ON CONFLICT (id) DO UPDATE SET self_assignable=true", role.ID, ctx.Guild.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error Updating Database",
|
Message: "Error Updating Database",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -71,16 +71,16 @@ func removeSelfAssignableRole(ctx disgoman.Context, args []string) {
|
|||||||
var err error
|
var err error
|
||||||
var role *discordgo.Role
|
var role *discordgo.Role
|
||||||
if role, err = ctx.Session.State.Role(ctx.Guild.ID, roleID); err != nil {
|
if role, err = ctx.Session.State.Role(ctx.Guild.ID, roleID); err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Can't find that Role.",
|
Message: "Can't find that Role.",
|
||||||
Error: err,
|
Error: err,
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_, err = utils.Database.Exec("INSERT INTO roles (id, guild_id, self_assignable) VALUES ($1, $2, false) ON CONFLICT (id) DO UPDATE SET self_assignable=false", role.ID, ctx.Guild.ID)
|
_, err = postgres.DB.Exec("INSERT INTO roles (id, guild_id, self_assignable) VALUES ($1, $2, false) ON CONFLICT (id) DO UPDATE SET self_assignable=false", role.ID, ctx.Guild.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error Updating Database",
|
Message: "Error Updating Database",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -111,7 +111,7 @@ func selfAssignRole(ctx disgoman.Context, args []string) {
|
|||||||
var role *discordgo.Role
|
var role *discordgo.Role
|
||||||
var err error
|
var err error
|
||||||
if role, err = ctx.Session.State.Role(ctx.Guild.ID, roleID); err != nil {
|
if role, err = ctx.Session.State.Role(ctx.Guild.ID, roleID); err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Can't find that Role.",
|
Message: "Can't find that Role.",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -123,9 +123,9 @@ func selfAssignRole(ctx disgoman.Context, args []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
var selfAssignable bool
|
var selfAssignable bool
|
||||||
err = utils.Database.QueryRow("SELECT self_assignable FROM roles where id=$1", role.ID).Scan(&selfAssignable)
|
err = postgres.DB.QueryRow("SELECT self_assignable FROM roles where id=$1", role.ID).Scan(&selfAssignable)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error Updating Database",
|
Message: "Error Updating Database",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -138,7 +138,7 @@ func selfAssignRole(ctx disgoman.Context, args []string) {
|
|||||||
}
|
}
|
||||||
err = ctx.Session.GuildMemberRoleAdd(ctx.Guild.ID, ctx.User.ID, role.ID)
|
err = ctx.Session.GuildMemberRoleAdd(ctx.Guild.ID, ctx.User.ID, role.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "There was a problem adding that role to you.",
|
Message: "There was a problem adding that role to you.",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -169,7 +169,7 @@ func unAssignRole(ctx disgoman.Context, args []string) {
|
|||||||
var role *discordgo.Role
|
var role *discordgo.Role
|
||||||
var err error
|
var err error
|
||||||
if role, err = ctx.Session.State.Role(ctx.Guild.ID, roleID); err != nil {
|
if role, err = ctx.Session.State.Role(ctx.Guild.ID, roleID); err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Can't find that Role.",
|
Message: "Can't find that Role.",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -181,9 +181,9 @@ func unAssignRole(ctx disgoman.Context, args []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
var selfAssignable bool
|
var selfAssignable bool
|
||||||
err = utils.Database.QueryRow("SELECT self_assignable FROM roles where id=$1", role.ID).Scan(&selfAssignable)
|
err = postgres.DB.QueryRow("SELECT self_assignable FROM roles where id=$1", role.ID).Scan(&selfAssignable)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error Updating Database",
|
Message: "Error Updating Database",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -196,7 +196,7 @@ func unAssignRole(ctx disgoman.Context, args []string) {
|
|||||||
}
|
}
|
||||||
err = ctx.Session.GuildMemberRoleRemove(ctx.Guild.ID, ctx.User.ID, role.ID)
|
err = ctx.Session.GuildMemberRoleRemove(ctx.Guild.ID, ctx.User.ID, role.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "There was a problem removing that role from you.",
|
Message: "There was a problem removing that role from you.",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -7,7 +7,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/dustinpianalto/disgoman"
|
"github.com/dustinpianalto/disgoman"
|
||||||
"github.com/dustinpianalto/goff/utils"
|
"github.com/dustinpianalto/goff/internal/postgres"
|
||||||
)
|
)
|
||||||
|
|
||||||
func addTagCommand(ctx disgoman.Context, input []string) {
|
func addTagCommand(ctx disgoman.Context, input []string) {
|
||||||
@ -15,12 +15,12 @@ func addTagCommand(ctx disgoman.Context, input []string) {
|
|||||||
queryString := `SELECT tags.id, tags.tag, tags.content from tags
|
queryString := `SELECT tags.id, tags.tag, tags.content from tags
|
||||||
WHERE tags.guild_id = $1
|
WHERE tags.guild_id = $1
|
||||||
AND tags.tag = $2;`
|
AND tags.tag = $2;`
|
||||||
row := utils.Database.QueryRow(queryString, ctx.Guild.ID, input[0])
|
row := postgres.DB.QueryRow(queryString, ctx.Guild.ID, input[0])
|
||||||
var dest string
|
var dest string
|
||||||
if err := row.Scan(&dest); err != nil {
|
if err := row.Scan(&dest); err != nil {
|
||||||
tag := input[0]
|
tag := input[0]
|
||||||
if tag == "" {
|
if tag == "" {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "That is not a valid tag name",
|
Message: "That is not a valid tag name",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -28,7 +28,7 @@ func addTagCommand(ctx disgoman.Context, input []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if len(input) <= 1 {
|
if len(input) <= 1 {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "I got a name but no value",
|
Message: "I got a name but no value",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -37,7 +37,7 @@ func addTagCommand(ctx disgoman.Context, input []string) {
|
|||||||
}
|
}
|
||||||
value := strings.Join(input[1:], " ")
|
value := strings.Join(input[1:], " ")
|
||||||
if value == "" {
|
if value == "" {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "You have to include a content for the tag",
|
Message: "You have to include a content for the tag",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -45,9 +45,9 @@ func addTagCommand(ctx disgoman.Context, input []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
queryString = `INSERT INTO tags (tag, content, creator, guild_id) VALUES ($1, $2, $3, $4);`
|
queryString = `INSERT INTO tags (tag, content, creator, guild_id) VALUES ($1, $2, $3, $4);`
|
||||||
_, err := utils.Database.Exec(queryString, tag, value, ctx.Message.Author.ID, ctx.Guild.ID)
|
_, err := postgres.DB.Exec(queryString, tag, value, ctx.Message.Author.ID, ctx.Guild.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "",
|
Message: "",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -57,7 +57,7 @@ func addTagCommand(ctx disgoman.Context, input []string) {
|
|||||||
ctx.Send(fmt.Sprintf("Tag %v added successfully.", tag))
|
ctx.Send(fmt.Sprintf("Tag %v added successfully.", tag))
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "That tag already exists",
|
Message: "That tag already exists",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -66,7 +66,7 @@ func addTagCommand(ctx disgoman.Context, input []string) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ctx.Send("You need to tell me what tag you want to add...")
|
ctx.Send("You need to tell me what tag you want to add...")
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "You need to tell me what tag you want to add...",
|
Message: "You need to tell me what tag you want to add...",
|
||||||
Error: errors.New("nothing to do"),
|
Error: errors.New("nothing to do"),
|
||||||
@ -80,9 +80,9 @@ func tagCommand(ctx disgoman.Context, args []string) {
|
|||||||
tagString := strings.Join(args, " ")
|
tagString := strings.Join(args, " ")
|
||||||
queryString := `SELECT tags.id, tags.tag, tags.content from tags
|
queryString := `SELECT tags.id, tags.tag, tags.content from tags
|
||||||
WHERE tags.guild_id = $1;`
|
WHERE tags.guild_id = $1;`
|
||||||
rows, err := utils.Database.Query(queryString, ctx.Guild.ID)
|
rows, err := postgres.DB.Query(queryString, ctx.Guild.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "",
|
Message: "",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -96,14 +96,14 @@ func tagCommand(ctx disgoman.Context, args []string) {
|
|||||||
content string
|
content string
|
||||||
)
|
)
|
||||||
if err := rows.Scan(&id, &tag, &content); err != nil {
|
if err := rows.Scan(&id, &tag, &content); err != nil {
|
||||||
log.Fatal(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
if tagString == tag {
|
if tagString == tag {
|
||||||
ctx.Send(content)
|
ctx.Send(content)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: fmt.Sprintf("Tag %v not found", args[0]),
|
Message: fmt.Sprintf("Tag %v not found", args[0]),
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -112,7 +112,7 @@ func tagCommand(ctx disgoman.Context, args []string) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ctx.Send("I need a tag to fetch...")
|
ctx.Send("I need a tag to fetch...")
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "I need a tag to fetch...",
|
Message: "I need a tag to fetch...",
|
||||||
Error: errors.New("nothing to do"),
|
Error: errors.New("nothing to do"),
|
||||||
@ -7,7 +7,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/dustinpianalto/disgoman"
|
"github.com/dustinpianalto/disgoman"
|
||||||
"github.com/dustinpianalto/goff/utils"
|
"github.com/dustinpianalto/goff/internal/postgres"
|
||||||
"github.com/olebedev/when"
|
"github.com/olebedev/when"
|
||||||
"github.com/olebedev/when/rules/common"
|
"github.com/olebedev/when/rules/common"
|
||||||
"github.com/olebedev/when/rules/en"
|
"github.com/olebedev/when/rules/en"
|
||||||
@ -21,7 +21,7 @@ func addReminderCommand(ctx disgoman.Context, args []string) {
|
|||||||
text := strings.Join(args, " ")
|
text := strings.Join(args, " ")
|
||||||
r, err := w.Parse(text, time.Now())
|
r, err := w.Parse(text, time.Now())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error parsing time",
|
Message: "Error parsing time",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -29,7 +29,7 @@ func addReminderCommand(ctx disgoman.Context, args []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if r == nil {
|
if r == nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "You need to include a valid time",
|
Message: "You need to include a valid time",
|
||||||
Error: errors.New("no time found"),
|
Error: errors.New("no time found"),
|
||||||
@ -39,9 +39,9 @@ func addReminderCommand(ctx disgoman.Context, args []string) {
|
|||||||
content := strings.Replace(text, r.Text+" ", "", 1)
|
content := strings.Replace(text, r.Text+" ", "", 1)
|
||||||
query := "INSERT INTO tasks (type, content, guild_id, channel_id, user_id, trigger_time) " +
|
query := "INSERT INTO tasks (type, content, guild_id, channel_id, user_id, trigger_time) " +
|
||||||
"VALUES ('Reminder', $1, $2, $3, $4, $5)"
|
"VALUES ('Reminder', $1, $2, $3, $4, $5)"
|
||||||
_, err = utils.Database.Exec(query, content, ctx.Guild.ID, ctx.Channel.ID, ctx.User.ID, r.Time)
|
_, err = postgres.DB.Exec(query, content, ctx.Guild.ID, ctx.Channel.ID, ctx.User.ID, r.Time)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error adding task to database",
|
Message: "Error adding task to database",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -8,7 +8,7 @@ import (
|
|||||||
|
|
||||||
"github.com/bwmarrin/discordgo"
|
"github.com/bwmarrin/discordgo"
|
||||||
"github.com/dustinpianalto/disgoman"
|
"github.com/dustinpianalto/disgoman"
|
||||||
"github.com/dustinpianalto/goff/utils"
|
"github.com/dustinpianalto/goff/internal/events"
|
||||||
)
|
)
|
||||||
|
|
||||||
func kickUserCommand(ctx disgoman.Context, args []string) {
|
func kickUserCommand(ctx disgoman.Context, args []string) {
|
||||||
@ -26,7 +26,7 @@ func kickUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
err = errors.New("that is not a valid id")
|
err = errors.New("that is not a valid id")
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Couldn't get that member",
|
Message: "Couldn't get that member",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -35,7 +35,7 @@ func kickUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if higher, _ := disgoman.HasHigherRole(ctx.Session, ctx.Guild.ID, ctx.Message.Author.ID, member.User.ID); !higher {
|
if higher, _ := disgoman.HasHigherRole(ctx.Session, ctx.Guild.ID, ctx.Message.Author.ID, member.User.ID); !higher {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "You must have a higher role than the person you are trying to kick",
|
Message: "You must have a higher role than the person you are trying to kick",
|
||||||
Error: errors.New("need higher role"),
|
Error: errors.New("need higher role"),
|
||||||
@ -44,7 +44,7 @@ func kickUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if higher, _ := disgoman.HasHigherRole(ctx.Session, ctx.Guild.ID, ctx.Session.State.User.ID, member.User.ID); !higher {
|
if higher, _ := disgoman.HasHigherRole(ctx.Session, ctx.Guild.ID, ctx.Session.State.User.ID, member.User.ID); !higher {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "I don't have a high enough role to kick that person",
|
Message: "I don't have a high enough role to kick that person",
|
||||||
Error: errors.New("need higher role"),
|
Error: errors.New("need higher role"),
|
||||||
@ -62,7 +62,7 @@ func kickUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
err = ctx.Session.GuildMemberDeleteWithReason(ctx.Guild.ID, member.User.ID, auditReason)
|
err = ctx.Session.GuildMemberDeleteWithReason(ctx.Guild.ID, member.User.ID, auditReason)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: fmt.Sprintf("Something went wrong kicking %v", member.User.Username),
|
Message: fmt.Sprintf("Something went wrong kicking %v", member.User.Username),
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -70,7 +70,7 @@ func kickUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
event := &utils.LogEvent{
|
event := &events.LogEvent{
|
||||||
Embed: discordgo.MessageEmbed{
|
Embed: discordgo.MessageEmbed{
|
||||||
Title: "User Kicked",
|
Title: "User Kicked",
|
||||||
Description: fmt.Sprintf(
|
Description: fmt.Sprintf(
|
||||||
@ -85,7 +85,7 @@ func kickUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
GuildID: ctx.Guild.ID,
|
GuildID: ctx.Guild.ID,
|
||||||
Session: ctx.Session,
|
Session: ctx.Session,
|
||||||
}
|
}
|
||||||
utils.LoggingChannel <- event
|
events.LoggingChannel <- event
|
||||||
_, _ = ctx.Send(fmt.Sprintf("User %v#%v has been kicked.", member.User.Username, member.User.Discriminator))
|
_, _ = ctx.Send(fmt.Sprintf("User %v#%v has been kicked.", member.User.Username, member.User.Discriminator))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,7 +104,7 @@ func banUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
err = errors.New("that is not a valid id")
|
err = errors.New("that is not a valid id")
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Couldn't get that user",
|
Message: "Couldn't get that user",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -114,7 +114,7 @@ func banUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
|
|
||||||
if higher, err := disgoman.HasHigherRole(ctx.Session, ctx.Guild.ID, ctx.Message.Author.ID, user.ID); err != nil {
|
if higher, err := disgoman.HasHigherRole(ctx.Session, ctx.Guild.ID, ctx.Message.Author.ID, user.ID); err != nil {
|
||||||
if err.Error() == "can't find caller member" {
|
if err.Error() == "can't find caller member" {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Who are you?",
|
Message: "Who are you?",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -122,7 +122,7 @@ func banUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else if !higher {
|
} else if !higher {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "You must have a higher role than the person you are trying to ban",
|
Message: "You must have a higher role than the person you are trying to ban",
|
||||||
Error: errors.New("need higher role"),
|
Error: errors.New("need higher role"),
|
||||||
@ -132,7 +132,7 @@ func banUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
|
|
||||||
if higher, err := disgoman.HasHigherRole(ctx.Session, ctx.Guild.ID, ctx.Session.State.User.ID, user.ID); err != nil {
|
if higher, err := disgoman.HasHigherRole(ctx.Session, ctx.Guild.ID, ctx.Session.State.User.ID, user.ID); err != nil {
|
||||||
if err.Error() == "can't find caller member" {
|
if err.Error() == "can't find caller member" {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Who am I?",
|
Message: "Who am I?",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -140,7 +140,7 @@ func banUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else if !higher {
|
} else if !higher {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "I don't have a high enough role to ban that person",
|
Message: "I don't have a high enough role to ban that person",
|
||||||
Error: errors.New("need higher role"),
|
Error: errors.New("need higher role"),
|
||||||
@ -162,7 +162,7 @@ func banUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
err = ctx.Session.GuildBanCreateWithReason(ctx.Guild.ID, user.ID, auditReason, days)
|
err = ctx.Session.GuildBanCreateWithReason(ctx.Guild.ID, user.ID, auditReason, days)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: fmt.Sprintf("Something went wrong banning %v", user.Username),
|
Message: fmt.Sprintf("Something went wrong banning %v", user.Username),
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -170,7 +170,7 @@ func banUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
event := &utils.LogEvent{
|
event := &events.LogEvent{
|
||||||
Embed: discordgo.MessageEmbed{
|
Embed: discordgo.MessageEmbed{
|
||||||
Title: "User Banned",
|
Title: "User Banned",
|
||||||
Description: fmt.Sprintf(
|
Description: fmt.Sprintf(
|
||||||
@ -185,7 +185,7 @@ func banUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
GuildID: ctx.Guild.ID,
|
GuildID: ctx.Guild.ID,
|
||||||
Session: ctx.Session,
|
Session: ctx.Session,
|
||||||
}
|
}
|
||||||
utils.LoggingChannel <- event
|
events.LoggingChannel <- event
|
||||||
_, _ = ctx.Send(fmt.Sprintf("User %v#%v has been banned.", user.Username, user.Discriminator))
|
_, _ = ctx.Send(fmt.Sprintf("User %v#%v has been banned.", user.Username, user.Discriminator))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -204,7 +204,7 @@ func unbanUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
err = errors.New("that is not a valid id")
|
err = errors.New("that is not a valid id")
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Couldn't get that user",
|
Message: "Couldn't get that user",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -214,7 +214,7 @@ func unbanUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
|
|
||||||
bans, err := ctx.Session.GuildBans(ctx.Guild.ID)
|
bans, err := ctx.Session.GuildBans(ctx.Guild.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Error processing current bans",
|
Message: "Error processing current bans",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -225,14 +225,14 @@ func unbanUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
if ban.User.ID == user.ID {
|
if ban.User.ID == user.ID {
|
||||||
err = ctx.Session.GuildBanDelete(ctx.Guild.ID, user.ID)
|
err = ctx.Session.GuildBanDelete(ctx.Guild.ID, user.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: fmt.Sprintf("Something went wrong unbanning %v", user.Username),
|
Message: fmt.Sprintf("Something went wrong unbanning %v", user.Username),
|
||||||
Error: err,
|
Error: err,
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
event := &utils.LogEvent{
|
event := &events.LogEvent{
|
||||||
Embed: discordgo.MessageEmbed{
|
Embed: discordgo.MessageEmbed{
|
||||||
Title: "User Banned",
|
Title: "User Banned",
|
||||||
Description: fmt.Sprintf(
|
Description: fmt.Sprintf(
|
||||||
@ -247,7 +247,7 @@ func unbanUserCommand(ctx disgoman.Context, args []string) {
|
|||||||
GuildID: ctx.Guild.ID,
|
GuildID: ctx.Guild.ID,
|
||||||
Session: ctx.Session,
|
Session: ctx.Session,
|
||||||
}
|
}
|
||||||
utils.LoggingChannel <- event
|
events.LoggingChannel <- event
|
||||||
_, _ = ctx.Send(fmt.Sprintf("User %v#%v has been unbanned.", user.Username, user.Discriminator))
|
_, _ = ctx.Send(fmt.Sprintf("User %v#%v has been unbanned.", user.Username, user.Discriminator))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -9,7 +9,7 @@ import (
|
|||||||
|
|
||||||
"github.com/bwmarrin/discordgo"
|
"github.com/bwmarrin/discordgo"
|
||||||
"github.com/dustinpianalto/disgoman"
|
"github.com/dustinpianalto/disgoman"
|
||||||
"github.com/dustinpianalto/goff/utils"
|
"github.com/dustinpianalto/goff/internal/discord_utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func pingCommand(ctx disgoman.Context, _ []string) {
|
func pingCommand(ctx disgoman.Context, _ []string) {
|
||||||
@ -18,7 +18,7 @@ func pingCommand(ctx disgoman.Context, _ []string) {
|
|||||||
took := time.Now().Sub(timeBefore)
|
took := time.Now().Sub(timeBefore)
|
||||||
_, err := ctx.Session.ChannelMessageEdit(ctx.Message.ChannelID, msg.ID, fmt.Sprintf("Pong!\nPing Took **%s**", took.String()))
|
_, err := ctx.Session.ChannelMessageEdit(ctx.Message.ChannelID, msg.ID, fmt.Sprintf("Pong!\nPing Took **%s**", took.String()))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Ping Failed",
|
Message: "Ping Failed",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -39,7 +39,7 @@ func inviteCommand(ctx disgoman.Context, args []string) {
|
|||||||
url := fmt.Sprintf("<https://discordapp.com/oauth2/authorize?client_id=%v&scope=bot>", id)
|
url := fmt.Sprintf("<https://discordapp.com/oauth2/authorize?client_id=%v&scope=bot>", id)
|
||||||
_, err := ctx.Send(url)
|
_, err := ctx.Send(url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Couldn't send the invite link.",
|
Message: "Couldn't send the invite link.",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -56,7 +56,7 @@ func gitCommand(ctx disgoman.Context, _ []string) {
|
|||||||
}
|
}
|
||||||
_, err := ctx.Session.ChannelMessageSendEmbed(ctx.Channel.ID, embed)
|
_, err := ctx.Session.ChannelMessageSendEmbed(ctx.Channel.ID, embed)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Git failed",
|
Message: "Git failed",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -70,7 +70,7 @@ func sayCommand(ctx disgoman.Context, args []string) {
|
|||||||
resp = strings.ReplaceAll(resp, "@here", "@\ufff0here")
|
resp = strings.ReplaceAll(resp, "@here", "@\ufff0here")
|
||||||
_, err := ctx.Session.ChannelMessageSend(ctx.Message.ChannelID, resp)
|
_, err := ctx.Session.ChannelMessageSend(ctx.Message.ChannelID, resp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Say Failed",
|
Message: "Say Failed",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -90,7 +90,7 @@ func userCommand(ctx disgoman.Context, args []string) {
|
|||||||
member, err = ctx.Session.GuildMember(ctx.Guild.ID, args[0])
|
member, err = ctx.Session.GuildMember(ctx.Guild.ID, args[0])
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Couldn't get that member",
|
Message: "Couldn't get that member",
|
||||||
Error: err,
|
Error: err,
|
||||||
@ -135,15 +135,15 @@ func userCommand(ctx disgoman.Context, args []string) {
|
|||||||
guildJoinTime, _ := member.JoinedAt.Parse()
|
guildJoinTime, _ := member.JoinedAt.Parse()
|
||||||
guildJoinedField := &discordgo.MessageEmbedField{
|
guildJoinedField := &discordgo.MessageEmbedField{
|
||||||
Name: "Joined Guild:",
|
Name: "Joined Guild:",
|
||||||
Value: utils.ParseDateString(guildJoinTime),
|
Value: discord_utils.ParseDateString(guildJoinTime),
|
||||||
Inline: false,
|
Inline: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
int64ID, _ := strconv.ParseInt(member.User.ID, 10, 64)
|
int64ID, _ := strconv.ParseInt(member.User.ID, 10, 64)
|
||||||
s := utils.ParseSnowflake(int64ID)
|
s := discord_utils.ParseSnowflake(int64ID)
|
||||||
discordJoinedField := &discordgo.MessageEmbedField{
|
discordJoinedField := &discordgo.MessageEmbedField{
|
||||||
Name: "Joined Discord:",
|
Name: "Joined Discord:",
|
||||||
Value: utils.ParseDateString(s.CreationTime),
|
Value: discord_utils.ParseDateString(s.CreationTime),
|
||||||
Inline: false,
|
Inline: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,7 +160,7 @@ func userCommand(ctx disgoman.Context, args []string) {
|
|||||||
}
|
}
|
||||||
_, err := ctx.Session.ChannelMessageSendEmbed(ctx.Channel.ID, embed)
|
_, err := ctx.Session.ChannelMessageSendEmbed(ctx.Channel.ID, embed)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ErrorChannel <- disgoman.CommandError{
|
ctx.CommandManager.ErrorChannel <- disgoman.CommandError{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
Message: "Couldn't send the user embed",
|
Message: "Couldn't send the user embed",
|
||||||
Error: err,
|
Error: err,
|
||||||
65
internal/postgres/guild.go
Normal file
65
internal/postgres/guild.go
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
package postgres
|
||||||
|
|
||||||
|
import (
|
||||||
|
"database/sql"
|
||||||
|
|
||||||
|
"github.com/dustinpianalto/goff"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GuildService struct {
|
||||||
|
DB *sql.DB
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *GuildService) Guild(id string) (*goff.Guild, error) {
|
||||||
|
var g goff.Guild
|
||||||
|
queryString := `SELECT id, welcome_message, goodbye_message,
|
||||||
|
logging_channel, welcome_channel, puzzle_channel, puzzle_role
|
||||||
|
FROM guilds
|
||||||
|
WHERE id = $1`
|
||||||
|
row := s.DB.QueryRow(queryString, id)
|
||||||
|
err := row.Scan(
|
||||||
|
&g.ID,
|
||||||
|
&g.WelcomeMessage,
|
||||||
|
&g.GoodbyeMessage,
|
||||||
|
&g.LoggingChannel,
|
||||||
|
&g.WelcomeChannel,
|
||||||
|
&g.PuzzleChannel,
|
||||||
|
&g.PuzzleRole,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var prefixes []string
|
||||||
|
queryString = `SELECT p.prefix
|
||||||
|
FROM prefixes p, x_guilds_prefixes xgp
|
||||||
|
WHERE p.id = xgp.prefix_id AND xgp.guild_id = $1`
|
||||||
|
rows, err := s.DB.Query(queryString, id)
|
||||||
|
if err == nil {
|
||||||
|
for rows.Next() {
|
||||||
|
var prefix string
|
||||||
|
err = rows.Scan(&prefix)
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
prefixes = append(prefixes, prefix)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g.Prefixes = prefixes
|
||||||
|
return &g, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *GuildService) CreateGuild(g *goff.Guild) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *GuildService) DeleteGuild(g *goff.Guild) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *GuildService) GuildUsers(g *goff.Guild) ([]*goff.User, error) {
|
||||||
|
return []*goff.User{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *GuildService) UpdateGuild(g *goff.Guild) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@ -28,12 +28,16 @@ var postfixes = []postfix{
|
|||||||
Name: "3_Update_Guild_Add_Puzzle_Role",
|
Name: "3_Update_Guild_Add_Puzzle_Role",
|
||||||
Invoke: updateGuildsAddPuzzleRole,
|
Invoke: updateGuildsAddPuzzleRole,
|
||||||
},
|
},
|
||||||
|
postfix{
|
||||||
|
Name: "4_Add_Multi_Column_Unique_XUsersGuilds",
|
||||||
|
Invoke: addMultiColumnUniqueXUsersGuilds,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunPostfixes() {
|
func RunPostfixes() {
|
||||||
for _, postfix := range postfixes {
|
for _, postfix := range postfixes {
|
||||||
queryString := "SELECT * from postfixes where name = $1"
|
queryString := "SELECT * from postfixes where name = $1"
|
||||||
rows, err := Database.Query(queryString, postfix.Name)
|
rows, err := DB.Query(queryString, postfix.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
continue
|
continue
|
||||||
@ -45,7 +49,7 @@ func RunPostfixes() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
_, err = Database.Exec("INSERT INTO postfixes (name) VALUES ($1)", postfix.Name)
|
_, err = DB.Exec("INSERT INTO postfixes (name) VALUES ($1)", postfix.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
continue
|
continue
|
||||||
@ -63,7 +67,7 @@ func updateGuildForPuzzle(revert bool) error {
|
|||||||
queryString = `ALTER TABLE guilds
|
queryString = `ALTER TABLE guilds
|
||||||
DROP COLUMN puzzleChat`
|
DROP COLUMN puzzleChat`
|
||||||
}
|
}
|
||||||
_, err := Database.Exec(queryString)
|
_, err := DB.Exec(queryString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return err
|
return err
|
||||||
@ -80,7 +84,7 @@ func updateXGuildPrefixesToAddID(revert bool) error {
|
|||||||
queryString = `ALTER TABLE x_guilds_prefixes
|
queryString = `ALTER TABLE x_guilds_prefixes
|
||||||
DROP COLUMN id`
|
DROP COLUMN id`
|
||||||
}
|
}
|
||||||
_, err := Database.Exec(queryString)
|
_, err := DB.Exec(queryString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return err
|
return err
|
||||||
@ -97,7 +101,7 @@ func updateTagsContentLength(revert bool) error {
|
|||||||
queryString = `ALTER TABLE tags
|
queryString = `ALTER TABLE tags
|
||||||
ALTER COLUMN content TYPE varchar(1000)`
|
ALTER COLUMN content TYPE varchar(1000)`
|
||||||
}
|
}
|
||||||
_, err := Database.Exec(queryString)
|
_, err := DB.Exec(queryString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return err
|
return err
|
||||||
@ -118,7 +122,7 @@ func addTableRoles(revert bool) error {
|
|||||||
} else {
|
} else {
|
||||||
queryString = `DROP TABLE roles`
|
queryString = `DROP TABLE roles`
|
||||||
}
|
}
|
||||||
_, err := Database.Exec(queryString)
|
_, err := DB.Exec(queryString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return err
|
return err
|
||||||
@ -135,7 +139,23 @@ func updateGuildsAddPuzzleRole(revert bool) error {
|
|||||||
queryString = `ALTER TABLE guilds
|
queryString = `ALTER TABLE guilds
|
||||||
DROP COLUMN puzzle_role`
|
DROP COLUMN puzzle_role`
|
||||||
}
|
}
|
||||||
_, err := Database.Exec(queryString)
|
_, err := DB.Exec(queryString)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func addMultiColumnUniqueXUsersGuilds(revert bool) error {
|
||||||
|
var queryString string
|
||||||
|
if !revert {
|
||||||
|
queryString = `ALTER TABLE x_users_guilds
|
||||||
|
ADD CONSTRAINT u_user_guild UNIQUE(user_id, guild_id)`
|
||||||
|
} else {
|
||||||
|
queryString = `ALTER TABLE DROP CONSTRAINT u_user_guild IF EXISTS`
|
||||||
|
}
|
||||||
|
_, err := DB.Exec(queryString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return err
|
return err
|
||||||
84
internal/postgres/user.go
Normal file
84
internal/postgres/user.go
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
package postgres
|
||||||
|
|
||||||
|
import (
|
||||||
|
"database/sql"
|
||||||
|
|
||||||
|
"github.com/dustinpianalto/goff"
|
||||||
|
)
|
||||||
|
|
||||||
|
type UserService struct {
|
||||||
|
DB *sql.DB
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *UserService) User(id string) (*goff.User, error) {
|
||||||
|
var u goff.User
|
||||||
|
queryString := `SELECT id, banned, logging, steam_id, is_active, is_staff, is_admin
|
||||||
|
FROM users WHERE id=$1`
|
||||||
|
row := s.DB.QueryRow(queryString, id)
|
||||||
|
if err := row.Scan(&u.ID, &u.Banned, &u.Logging, &u.SteamID, &u.IsActive, &u.IsStaff, &u.IsAdmin); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var guilds []string
|
||||||
|
queryString = `SELECT guild_id from x_users_guilds WHERE user_id=$1`
|
||||||
|
rows, err := s.DB.Query(queryString, id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
for rows.Next() {
|
||||||
|
var guildID string
|
||||||
|
err = rows.Scan(&guildID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
guilds = append(guilds, guildID)
|
||||||
|
}
|
||||||
|
u.Guilds = guilds
|
||||||
|
return &u, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *UserService) CreateUser(u *goff.User) error {
|
||||||
|
queryString := `INSERT INTO users (id, banned, logging, steam_id, is_active, is_staff, is_admin)
|
||||||
|
VALUES ($1, $2, $3, $4, $5, $6, $7)`
|
||||||
|
_, err := s.DB.Exec(queryString, u.ID, u.Banned, u.Logging, u.SteamID, u.IsActive, u.IsStaff, u.IsAdmin)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *UserService) DeleteUser(u *goff.User) error {
|
||||||
|
queryString := `DELETE FROM x_users_guilds WHERE user_id = $1; DELETE FROM users WHERE id = $1`
|
||||||
|
_, err := s.DB.Exec(queryString, u.ID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *UserService) MarkUserInactive(u *goff.User) error {
|
||||||
|
queryString := `UPDATE users SET is_active = false WHERE id = $1`
|
||||||
|
_, err := s.DB.Exec(queryString, u.ID)
|
||||||
|
if err == nil {
|
||||||
|
u.IsActive = false
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *UserService) AddUserToGuild(u *goff.User, g *goff.Guild) error {
|
||||||
|
queryString := `INSERT INTO x_users_guilds (user_id, guild_id) VALUES ($1, $2)`
|
||||||
|
_, err := s.DB.Exec(queryString, u.ID, g.ID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *UserService) RemoveUserFromGuild(u *goff.User, g *goff.Guild) error {
|
||||||
|
queryString := `DELETE FROM x_users_guilds WHERE user_id = $1 AND guild_id = $2`
|
||||||
|
_, err := s.DB.Exec(queryString, u.ID, g.ID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *UserService) UpdateUser(u *goff.User) error {
|
||||||
|
queryString := `UPDATE users SET
|
||||||
|
banned = $1
|
||||||
|
logging = $2
|
||||||
|
steam_id = $3
|
||||||
|
is_active = $4
|
||||||
|
is_staff = $5
|
||||||
|
is_admin = $6
|
||||||
|
WHERE id = $7`
|
||||||
|
_, err := s.DB.Exec(queryString, u.Banned, u.Logging, u.SteamID, u.IsActive, u.IsStaff, u.IsAdmin)
|
||||||
|
return err
|
||||||
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package utils
|
package email
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
@ -9,6 +9,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/bwmarrin/discordgo"
|
"github.com/bwmarrin/discordgo"
|
||||||
|
"github.com/dustinpianalto/goff/pkg/puzzles"
|
||||||
imap "github.com/emersion/go-imap"
|
imap "github.com/emersion/go-imap"
|
||||||
"github.com/emersion/go-imap/client"
|
"github.com/emersion/go-imap/client"
|
||||||
"github.com/emersion/go-message/mail"
|
"github.com/emersion/go-message/mail"
|
||||||
@ -117,7 +118,7 @@ func processEmail(r io.Reader, dg *discordgo.Session, wg *sync.WaitGroup) {
|
|||||||
if addressIn(from, puzzleAddress) &&
|
if addressIn(from, puzzleAddress) &&
|
||||||
strings.Contains(subject, "Daily Coding Problem:") {
|
strings.Contains(subject, "Daily Coding Problem:") {
|
||||||
log.Println("Processing Puzzle")
|
log.Println("Processing Puzzle")
|
||||||
ProcessPuzzleEmail(mr, dg)
|
puzzles.ProcessPuzzleEmail(mr, dg)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package utils
|
package puzzles
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
@ -8,6 +8,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/bwmarrin/discordgo"
|
"github.com/bwmarrin/discordgo"
|
||||||
|
"github.com/dustinpianalto/goff"
|
||||||
|
"github.com/dustinpianalto/goff/internal/postgres"
|
||||||
"github.com/emersion/go-message/mail"
|
"github.com/emersion/go-message/mail"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -48,14 +50,14 @@ func ProcessPuzzleEmail(mr *mail.Reader, dg *discordgo.Session) {
|
|||||||
Text: "Daily Coding Problem",
|
Text: "Daily Coding Problem",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
var guilds []Guild
|
var guilds []goff.Guild
|
||||||
queryString := `SELECT id, puzzle_channel, puzzle_role from guilds`
|
queryString := `SELECT id, puzzle_channel, puzzle_role from guilds`
|
||||||
rows, err := Database.Query(queryString)
|
rows, err := postgres.DB.Query(queryString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
var guild Guild
|
var guild goff.Guild
|
||||||
err := rows.Scan(&guild.ID, &guild.PuzzleChannel, &guild.PuzzleRole)
|
err := rows.Scan(&guild.ID, &guild.PuzzleChannel, &guild.PuzzleRole)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
@ -65,7 +67,7 @@ func ProcessPuzzleEmail(mr *mail.Reader, dg *discordgo.Session) {
|
|||||||
}
|
}
|
||||||
var puzzleID int64
|
var puzzleID int64
|
||||||
queryString = "INSERT INTO puzzles (text, time) VALUES ($1, $2) RETURNING id"
|
queryString = "INSERT INTO puzzles (text, time) VALUES ($1, $2) RETURNING id"
|
||||||
err = Database.QueryRow(queryString, puzzle, date).Scan(&puzzleID)
|
err = postgres.DB.QueryRow(queryString, puzzle, date).Scan(&puzzleID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return
|
return
|
||||||
@ -91,7 +93,7 @@ func ProcessPuzzleEmail(mr *mail.Reader, dg *discordgo.Session) {
|
|||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
queryString = "INSERT INTO x_guilds_puzzles (guild_id, puzzle_id, message_id) VALUES ($1, $2, $3)"
|
queryString = "INSERT INTO x_guilds_puzzles (guild_id, puzzle_id, message_id) VALUES ($1, $2, $3)"
|
||||||
_, err = Database.Exec(queryString, g.ID, puzzleID, m.ID)
|
_, err = postgres.DB.Exec(queryString, g.ID, puzzleID, m.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
continue
|
continue
|
||||||
@ -1,37 +0,0 @@
|
|||||||
package postgres
|
|
||||||
|
|
||||||
import (
|
|
||||||
"database/sql"
|
|
||||||
|
|
||||||
"github.com/dustinpianalto/goff"
|
|
||||||
)
|
|
||||||
|
|
||||||
type UserService struct {
|
|
||||||
DB *sql.DB
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *UserService) User(id string) (*goff.User, error) {
|
|
||||||
var u goff.User
|
|
||||||
queryString := `SELECT id, banned, logging, steam_id, is_active, is_staff, is_admin
|
|
||||||
FROM users WHERE id=$1`
|
|
||||||
row := s.DB.QueryRow(queryString, id)
|
|
||||||
if err := row.Scan(&u.ID, &u.Banned, &u.Logging, &u.SteamID, &u.IsActive, &u.IsStaff, &u.IsAdmin); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
var guilds []string
|
|
||||||
queryString = `SELECT guild_id from x_users_guilds WHERE user_id=$1`
|
|
||||||
rows, err := s.DB.Query(queryString, id)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
for rows.Next() {
|
|
||||||
var guildID string
|
|
||||||
err = rows.Scan(&guildID)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
guilds = append(guilds, guildID)
|
|
||||||
}
|
|
||||||
u.Guilds = guilds
|
|
||||||
return &u, nil
|
|
||||||
}
|
|
||||||
2
user.go
2
user.go
@ -1,4 +1,4 @@
|
|||||||
package main
|
package goff
|
||||||
|
|
||||||
type User struct {
|
type User struct {
|
||||||
ID string
|
ID string
|
||||||
|
|||||||
@ -1,24 +0,0 @@
|
|||||||
package utils
|
|
||||||
|
|
||||||
import "database/sql"
|
|
||||||
|
|
||||||
type Guild struct {
|
|
||||||
ID string
|
|
||||||
WelcomeMessage string
|
|
||||||
GoodbyeMessage string
|
|
||||||
LoggingChannel string
|
|
||||||
WelcomeChannel string
|
|
||||||
PuzzleChannel string
|
|
||||||
PuzzleRole sql.NullString
|
|
||||||
}
|
|
||||||
|
|
||||||
type User struct {
|
|
||||||
ID string
|
|
||||||
Banned bool
|
|
||||||
Logging bool
|
|
||||||
SteamID string
|
|
||||||
IsActive bool
|
|
||||||
IsStaff bool
|
|
||||||
IsAdmin bool
|
|
||||||
Guilds []string
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user