diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c90bc04 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM golang:1.14-alpine as dev + +WORKDIR /go/src/dice +COPY ./go.mod . +#COPY ./go.sum . + +RUN go mod download + +COPY . . +RUN go install github.com/dustinpianalto/dice + +CMD [ "go", "run", "main.go"] + +from alpine + +WORKDIR /bin + +COPY --from=dev /go/bin/dice ./dice + +CMD [ "dice" ] diff --git a/exts/dice_commands.go b/exts/dice_commands.go new file mode 100644 index 0000000..e69de29 diff --git a/exts/init.go b/exts/init.go new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/exts/init.go @@ -0,0 +1 @@ + diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..d72e53f --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/dustinpianalto/dice + +go 1.15 diff --git a/main.go b/main.go new file mode 100644 index 0000000..5bcd1e0 --- /dev/null +++ b/main.go @@ -0,0 +1,97 @@ +package main + +import ( + "log" + "os" + "os/signal" + "syscall" + + "github.com/bwmarrin/discordgo" + "github.com/dustinpianalto/disgoman" +) + +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 { + log.Println("There was an error when creating the Discord Session, ", err) + return + } + dg.State.MaxMessageCount = 100 + + //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) + + err = dg.Open() + if err != nil { + log.Println("There was an error opening the connection, ", err) + return + } + + // Start the Error handler in a goroutine + go ErrorHandler(handler.ErrorChannel) + + log.Println("The Bot is now running.") + sc := make(chan os.Signal, 1) + signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill) + <-sc + + log.Println("Shutting Down...") + err = dg.Close() + if err != nil { + log.Println(err) + } +} + +func getPrefixes(guildID string) []string { + return []string{"/", "\\"} +} + +func ErrorHandler(ErrorChan chan disgoman.CommandError) { + for ce := range ErrorChan { + msg := ce.Message + if msg == "" { + msg = ce.Error.Error() + } + _, _ = ce.Context.Send(msg) + log.Println(ce.Error) + } +}